В качестве соответствующих примеров можно предложить проект по созданию однокристальной системы из многопотоковых процессоров для построения из этих кристаллов мощных суперкомпьютеров на основе опыта, полученного при создании МВС-1000М [18], микропроцессоры «Квант» [19], изготовленные на фабрике AMD в Дрездене, а также ряд других отечественных проектов, реализация которых осуществлялась на зарубежных производствах.
Архитектуры многопотоковых процессоров
Каждый набор регистров Tera MTA обслуживает один вычислительный процесс, называемый потоком (thread). Всего в процессоре имеется n наборов регистров, а поэтому запрос, выданный в основную память процессом, может обслуживаться в течение n-1 тактов, вплоть до момента, когда процессор снова переключится на тот же набор регистров. Тем самым по отношению к одному потоку исполнение его команд замедляется в n раз. Значение n выбирается исходя из того, чтобы время доступа в память было меньше, чем длительность n-1 такта процессора. Задача формирования n потоков целиком возлагается на компилятор.
При всем различии подходов к созданию многопотоковых (multithread) микропроцессоров, общим в них является введение множества процессорных элементов, содержащих устройство выборки команд, которое организует окно исполнения для одного потока. В рамках потока может выполняться предсказание переходов, переименование регистров, динамическая подготовка команд к исполнению. Тем самым, общее количество команд, находящихся в обработке, значительно превышает размер одного окна исполнения суперскалярного процессора, с одной стороны, и тактовая частота не лимитируется размером окна исполнения, — с другой стороны. Выявление потоков может выполняться компилятором при анализе исходного кода на языке высокого уровня или исполняемого кода программы. Однако компиляторы не всегда могут разрешить проблемы зависимостей при использовании регистров и ячеек памяти между потоками, что требует разрешения этих зависимостей уже в ходе исполнения потоков. Для этого в микропроцессор вводится специальная аппаратура условного исполнения потоков, предусматривающая возврат с отбрасыванием наработанных результатов в случае обнаружения нарушения зависимостей между потоками. Нарушением зависимости, например, может служить запись по вычисляемому адресу в одном потоке в ту же ячейку памяти, из которой выполняется чтение, которое должно следовать за этой записью, в другом потоке. В этом случае, если адреса записи и чтения не совпадают, нарушение отсутствует. При совпадении адресов фиксируется нарушение, которое должно вернуть исполнение потока к команде чтения правильного значения.
Интерфейс между аппаратурой многопотокового процессора, поддерживающей протекание каждого отдельного потока и аппаратурой, общей для исполнения всех потоков, может быть установлен как сразу после устройств выборки команд потока, так и на уровне доступа к разделяемой памяти. В первом случае все потоки используют один набор функциональных устройств. Тесная связь по ресурсам позволяет эффективно исполнять последовательные программы с сильной зависимостью между потоками. В этом случае имеет место реализация SMT-процессора (simultaneous multithreading). Во втором случае для исполнения каждого потока, фактически, выделяется функционально законченный процессор. В целом, эта структура ориентирована на исполнение независимых и слабо связанных потоков, порождаемых либо одной программой, либо их совокупностью. В этом случае скорее надо говорить не о процессоре, а о CMP-системе (chip multiprocessing).
Возможно также промежуточное расположение интерфейса, при котором часть функциональных устройств, например, с плавающей точкой разделяется всеми потоками, а остальные устройства дублируются в каждом потоке. Количество и типы устройств, разделяемых всеми потоками, равно как и устройств дублированных во всех потоках, определяется исходя из представления о возможности их эффективной загрузки.
Многопотоковый процессор может исполнять потоки, принадлежащие одной или нескольким программам. Если процессор исполняет одну программу, то говорят о его производительности, если несколько — о пропускной способности.
Intel использовала 2-потоковую архитектуру в процессорах Pentium 4 и Xeon, однако еще предстоят значительные исследования по многопотоковым архитектурам. Компания Tera объявила о разработке проекта многопотокового микропроцессора Torrent, реализующего процессор МТА (www. ). Компания Level One, образованная Intel, выпустила сетевой микропроцессор IXP1200 (www. level1.com), содержащий 6 четырехпотоковых процессоров. IBM анонсировала проект компьютера Blue Gene (D. Clark. Blue Gene and the race toward petaflops capacity. IEEE Concurrency, January-March 2000) с производительностью 1015 FLOPS, кристалл микропроцессора которого включает 32 восьмипотоковых процессора. В кристалл встроена память DRAM, реализованная как 32 блока. Каждый блок соответствует одному из 32 процессоров и имеет шину доступа 256 разрядов. Так как DRAM имеет высокую пропускную способность и малую задержку, то при восьмипотоковой структуре процессора становится возможным отказаться от кэш-памяти, вместо которой между процессором и памятью используется небольшая буферная память. IBM, Sony, Toshiba ведут совместный проект по разработке многопотокового процессора Cell («ячейка»), само название которого красноречиво свидетельствует о его предназначении.
Кластер Green Destiny
В Лос-Аламоской лаборатории в рамках реализации проекта малообъемных суперкомпьютеров построен кластер Green Destiny (M. Warren, E. Weigle, W. Feng. High-Density Computing: A 240-Processor Beowulf in One Cubic Meter, Proc. of SC-2002). Авторы проекта поставили целью создать 240-процессорный кластер в объеме 1 кубический метр. В качестве базового выбран конструктив RLX System 324 — 3U-блоки (высота — 5,25 дюйма, ширина — дюйма 17,25, глубина — 25,2 дюймов), вмещающие 24 серверов-лезвий. В блоке имеется два допускающих горячую замену источника питания мощностью 450 Вт и интерфейсы для доступа к вычислительным модулям.
Вычислительный модуль включает микропроцессор Transmeta TM5600/667 МГц, 128 Mбайт памяти DDR SDRAM, 512 Mбайт SDRAM, 20-гигабайтный диск и интерфейс Fast Ethernet. Имеется еще один порт Ethernet, позволяющий удвоить пропускную способность за счет агрегирования двух портов. Каждый из 24 вычислительных модулей одного блока подключен к коммутатору Fast Ethernet. Все 10 таких коммутаторов подключены, в свою очередь, к коммутатору Gigabit Ethernet, образуя одноуровневое дерево.
Кластер скомпонован в стандартную стойку размером 84x24x36 дюймов, использует систему питания APC Smart-UPS, управляемую ОС Linux. В ненагруженном состоянии кластер рассеивает 7 Вт. Под нагрузкой TM5600 выделяет приблизительно 15 Вт тепла, а кластер в целом с учетом всего оборудования — 5200 Вт, что в пересчете на один вычислительный модуль составляет 22 Вт.
Программируемый микропроцессор
Схемы для выполнения арифметических операций над 64-разрядными операндами с плавающей точкой, сформированные в однородной вычислительной среде с однобитными ячейками, используют значительно больший объем оборудования и уступают по быстродействию устройствам обработки операндов с плавающей точкой микропроцессоров с традиционной архитектурой. Проект программируемого (raw) микропроцессора преследует цель устранить этот недостаток, сохранив преимущества программируемости структуры вычислительных систем. Программируемый микропроцессор строится на кристалле как ячейка однородной решетки nxn (M. Taylor, J. Kim, J. Miller at al. The Raw Microprocessor: A Computational Fabric for Software Circuits and General-Purpose Programs. IEEE Micro, 2002, Vol. 22, No. 2). Авторы проекта используют термин tile. Ячейка содержит процессор и программируемый коммутатор, предназначенный для передачи и приема данных между соседними ячейками.
Процессор выполнен по 8-стадийной конвейерной схеме с промежуточной фиксацией результатов между стадиями конвейера в очереди с дисциплиной обслуживания FIFO. В процессоре реализовано много обходных путей (bypass), позволяющих использовать промежуточные результаты сразу после их получения на каждой стадии конвейера, в том числе, для передачи в другие ячейки. Предусматриваются также кэш-память данных (32 Кбайт) и кэш-память команд (96 Кбайт).
Для того чтобы ускорить межячеечные передачи данных, применен следующий подход. Регистры r24-r27 отображены на входные очереди межячеечных каналов с дисциплиной обслуживания FIFO. Обращение к регистру rj, j {24, ..., 27}, по чтению, в том числе при выборе этого регистра как операнда, влечет выборку элемента данных из соответствующей входной очереди. Если элемент в очереди отсутствует, то завершение выполнения обращения к регистру rj, j {24, ..., 27}, задерживается вплоть до поступления данных во входную очередь. При обращении к регистру rj, j {24, ..., 27}, по записи, реальная запись производится в выходную очередь межячеечных каналов. Если очередь заполнена, то завершение выполнения записи задерживается, вплоть до освобождения элемента очереди.
Решения по организации межячеечных связей и связей между обрабатывающими устройствами в конвейере идентичны и базируются на промежуточных FIFO-очередях, передающих данные по готовности приемника. Важным следствием такой организации является то, что протекание вычислений определяется событиями, в качестве которых выступают размещение данных в очередях. На ход вычислений не оказывают влияния прерывания, происходящие в процессорах, промахи в кэш-памяти и иные асинхронно наступающие события, непосредственно не связанные с вычислительным процессом.
Программируемый коммутатор ячейки содержит 2 интерфейсных процессора. Статический интерфейсный процессор управляет передачами слов данных по устанавливаемым при компиляции программы маршрутам. Для пересылки слова между двумя ячейками статические интерфейсные процессоры на маршруте между этими ячейками обязательно должны исполнить соответствующие команды, задающие путь передачи слова. Компилятор выполняет потактное совмещение преобразований в процессоре и статическом интерфейсном процессоре. Динамический интерфейсный процессор управляет передачей пакетов слов. Первое слово пакета содержит идентификатор ячейки-адресата, поле пользователя и количество слов в пакете (не более 31). Пакет передается по методу коммутации канала на время передачи. Динамический интерфейсный процессор служит для передач данных, выполнение которых нельзя предсказать во время компиляции, например, промахи в кэш-памяти, прерывания, передачи данных, выполнение которых зависит от значений предикатов.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |



