КаталогИндекс раздела

             Микропроцессоры: необычное поколение

Linda Gerpet
IEEE Spectrum

Microprocess: the Offbeat Generation
Опубликовано в IEEE Spectrum, July 2000, pp. 44-49

Развитие микропроцессорных архитектур вынужденно сдерживается программным обеспечением, уже написанным для существующих платформ, в частности, многими миллионами строк кода, написанными для РС и рабочих станций. Если все будет идти так, как идет, новые поколения микропроцессоров будут только меньше и быстрее. Но быстрое распространение электронной промышленности оказывает освобождающее влияние на развитие микропроцессоров. Открывая новые применения на различных уровнях процессорной производительности, оно развязывает руки архитекторам микропроцессоров в разработке новых проектов.

Мы рассматриваем три важных проекта. Первый - разработка микропроцессора, используемого для построения самого мощного суперкомпьютера, о котором можно помыслить. Другой предназначен для коммуникаций нового поколения. Третий предназначен для встроенных применений. Несмотря на то, что они разработаны для существенно разных применений, все три делают ставку на простую и рациональную архитектуру для достижения своих целей.

Важным обстоятельством является многопоточность, введенная в два из этих устройств. Эта техника, исследовавшаяся в течение некоторого времени, увеличивает параллелизм путем группирования команд в потоки (threads), которые могут выполняться параллельно. Но ни одна из нескольких предпринятых ранее попыток применить ее в коммерческих целях не увенчалась успехом.

На пути к петафлопам

На вершине суперкомпьютерного мира - проект, названный Blue Gen, разрабатываемый в Исследовательском Центре им. Tomas J.Watson, в Yorktown Heigth, N.Y. В системе используется более миллиона микропроцессоров, каждый из них должен работать на частоте 1 Ггц.

Blue Gen пока находится на ранней стадии разработки. Определены архитектура системы и ее микропроцессоров и разработаны прототипы механических компонентов. Но первые микропроцессорные чипы не появятся до следующего года. Если система будет установлена и запущена, она сможет выполнять более 1015 операций с плавающей точкой в секунду (1 петафлоп). Такая мощность беспрецедентна. Blue Gen будет в 250 раз быстрее самого мощного современного суперкомпьютера и в 1000 раз быстрее, чем Deep Blue, компьютер, который в 1997 году победил чемпиона мира по шахматам Г.Каспарова.

Для чего строится такая машина? Прежде всего, для работы с биологическими системами, чтобы моделировать сворачивание длинных белковых цепочек в плотные образования. Функции белков в биологических системах определяются именно их свойствами в сложеном состоянии.

Согласно Dennis Newns, сотруднику исследовательской группы IBM и эксперту по биовычислениям проекта Blue Gen, определение того, как складываются белки, является крайне сложной задачей. Даже самый простой белок из около 300 аминокислот состоит из более чем 30 000 атомов, каждый из которых оказывает влияние на другие атомы. "Даже с петафлопным компьютером, просчет всех 300 аминокислот займет около года" - сказал он.

Monty Dennau, член исследовательской группы и архитектор Blue Gen смотрит еще дальше в будущее. Он верит, что вопрос нескольких лет - моделирование всех метаболических процессов в клетке. В этом случае "вы будете иметь не только одино белок, а полную химию клетки. С этой точки вы начнете понимание жизни", - говорит он.

Моделирование биопроцессов очень важно, но Dennau считает, что есть и другие применения, для которых Blue Gen является подходящим инструментом. Возьмем добычу данных (data mining), которая в большей степени находится в русле стратегического бизнеса IBM. В этой технологии для нахождения элементов и шаблонов, удовлетворяющих заданным критериям, должны быть просмотрены громадные объемы данных. "Это потрясающий объем вычислений", - говорит он. "И он должен быть проведен для каждого элемента данных".

Для проектирования Blue Gen разработчики выработали подход, который они назвали Smash, который состоит в простоте (simple), множественности (many) и самовосстановлении (self htaling). Эти термины описывают как всю систему, так и отдельный чип в ней. На каждом уровне система строится из множества простых одинаковых элементов.

Системный уровень состоит из 32 000 идентичных чипов, электрически соединенных в куб с размером стороны - 32 (рис 1). Физически 64 чипа размещены на плате, 8 плат монтируются в стойку, всего будет 64 стойки. Каждая интегральная микропроцессорная схема состоит из массива либо 5x6, либо 6x6 отдельных одинаковых микропроцессоров (точное их число пока не определено). Размер чипа - около 21 мм.

Высокий уровень повторяемости для стоек, плат, чипов и процессоров означает, что Blue Gen сможет работать даже если некоторые из его элементов выйдут из строя. При аварии системы диагностика установит, какие элементы работоспособны, составит карту годных элементов и распределит приложение на этот ресурс - это часть проекта, связанная с самовосстановлением.

Связь является ключевым условием успешности проекта, поэтому разработчики собираются построить шины с высокой пропускной способностью как внутри чипа, так и между чипами. Каждый чип имеет 7 выходных каналов и много входных, каждый из которых обеспечивает 2 Гбайт/сек. Шесть каналов обеспечивают конфигурирование машины в 3-мерный куб. Седьмой используется для связи с файловой системой или для высокоскоростного ввода-вывода данных.

Микропроцессоры внутри чипа соединяются 128-битной шиной, которая работает не частоте 500 Мгц или 1 Ггц. Каждая строка и каждый столбец массива микропроцессоров соединены в двунаправленное кольцо. Кольцо работает как метро, в котором каждый чип выглядит как станция. Если данные должны перейти от процессора в одной строке/столбце к процессору в другой строке/столбце, они ждут свободного "поезда" и садятся в него. Когда они доезжают до пересечения с кольцом, которое связано с целевым чипом, они уходят с первого кольца, переходят на второе и покидают его, когда достигнут цели. Dennau верит, что кольца обеспечат наилучшую производительность для той логики, которую они должны обслуживать. Он надеется получить пропускную способность для чипов 100 Гбайт/сек.

Обеспечение производительности Blue Gen

Проект процессора базируется на многопоточной архитектуре, при которой команды организуются в независимые потоки, называемые нитями. Многопоточность повышает производительность переводом параллелизма на более высокий уровень, чем уровень команд, используемый в современных PC-процессорах.

Потоковое устройство (thread unit) занимает площадь около 0.3 кв.мм. На этом крошечном пространстве находится полный компьютер с фиксированной точкой, стандартный сопроцессор плавающей точки плюс 2-портовый файл регистров (один порт чтения и один порт записи), организованный либо в 32 64-битных слова, либо в 64 32-битных. Каждый процессор имеет также сопроцессор плавающей точки двойной точности, который разделяется всеми потоками.

Потоковые устройства так малы потому, что в них почти ничего нет, согласно архитектору Blue Gen Dennau. Архитекторы успешно урезали количество команд до 57 - куда меньше, чем 300 или около того, что типично для архитектуры RISC.

"Наша цель", - сказал Dennau, - "противоположна целям других машин, которые стараются выполнить больше команд за цикл на каждом потоковом устройстве." Подход, принятый в Blue Gen устраняет чрезмерные требования к аппаратуре тем, что не требeт поднимать производительность каждого потока, а в результате получается лучшая производительность на кв. миллиметр.

При работе исполнительное устройство выбирает команду из локального (на чипе) кеша команд, состязаясь с другими потоками, которые также могут пытаться выбирать команды. 64 К-байтный кеш команд ассоциативный, с 8 путями, это означает, что команда из основной памяти может располагаться в любом из 8 мест кеша, в противоположность только одному месту в кеше с прямым отображением. Придание кешу большей гибкости в хранении команд обеспечивает высокий коэффициент успешности поиска - вероятность того, что исполнительное устройство найдет требуемую команду в кеше. И поскольку кеш разделяется между потоками, команда должна храниться только в одном экземпляре, а не в восьми, что уменьшает размер кода.

Каждый поток по большей части выполняется независимо от семи других, но все они выполняют похожие операции, используя одни и те же команды хотя (надеемся!) в разных циклах. "Так, в каждом одном цикле", - поясняет Dennau, - "один поток выполняет доступ к памяти, другой выполняет операцию с фиксированной точкой, еще один - операцию с плавающей точкой, а еще один - операцию ветвления. Общая идея состоит в том, чтобы смешать всю работу так, чтобы один из потоков всегда хотел использовать какое-то критическое исполнительное устройство."

Каждый процессор имеет также динамическую RAM для данных, которые разделяются между 8 потоковыми устройствами, так же, как и между другими процессорами на том же чипе. DRAM разделена на локальную и глобальную части. Локальная часть содержит данные, специфичные для данного процессора, - например, стек переменных. К глобальной части имеет доступ любой процессор на чипе. Распределение данных между 30 или 36 DRAM делает доступ к памяти более единообразным и минимизирует вероятность появления критических ситуаций.

Управление питанием является большой проблемой для Blue Gen. Его архитекторы не делают даже предположений о цифрах потребляемой мощности. Но Dennau отмечает, что Blue Gen будет в 250 раз быстрее, чем ASCI Blue Pacific, суперкомпьютер с 5856 процессорами, построенный IBM для Департамента Энергетики США, самый быстрый на сегодняшний день. "И он потребляет пару мегаватт", - говорит он. - "Так что мы сделаем феноменальный скачок в эффективности потребления энегрии".

Энергопитение - не единственная проблема. Другая проблема возникает, если все потоковые устройства во всех процессорах работают, а в следующем - простаивают. "Тут возникает проблема, так как десятки ватт должны быть переключены в пределах наносекунд", - сказал Dennau. Исследователь поэтому проверяют новую концепцию, названную временным талоном (clock token), по которой процессорам дается разрешение выполнять операции в течение определенного числа временных циклов. Этот подход управляет и рассредоточивает отключения питания так, что частые перепады тока в короткие интервалы времени возникнуть не могут.

Магический подход Sun.

Новая архитектура процессора от Sun Microsystems Inc., Mountain View, Calif., ставит перед собой другую задачу. Ее аргументом есть то, что данные, с которыми имеет дело процессор на сетевом сервере, сегодня иного рода, чем данные, с которыми имели дело CISC и RISC архитектуры в 70-80 годы. Звуковые и видеосигналы, все шире используемые при связи через Internet, требуют процессоров, которые смогут обрабатывать новые типы данных быстрее и эффективнее. Такие данные не только могут поступать на процессор со скоростью гигабайт в секунду, но процессор также должен быть способен обрабатывать их с той же скоростью, с какой они передаются.

"Исторически серверы выполняли работу с базами данных", - сказал Marc Tremblay, главный архитектор Sun MAJC. "Например, когда вы кладете $100 на банковский счет, вы посылаете транзакцию, в которой говорится 'положить $100 на мой банковский счет'" Не так давно сервер должен был выбрать определенную запись, добавить к ней $100 и записать ее обратно на диск. Но сейчас эта же транзакция может приходить на сервер в зашифрованном и сжатом виде и даже может голосовой командой. Значит, сервер должен расшифровать и распаковать, выполнить фильтрацию и обработку речи перед выполнением.

"Получается другая загрузка", - объясняет Tremblay. - "В прошлом процессор выполнял примерно одну операцию с памятью на каждые две вычислительных операции. Сегодня это соотношение - 1:10."

Microprocessor Architecture for Java Computing или MAJC (произносится как magic), как названа новая архитектура, исходит из того, что входящие данные организованы в поток. Они приходят в процессор в высоком темпе, обрабатываются и вновь уходят. Целью MAJC является обработка этих данных в реальном времени и прозрачно для пользователя. "Этот подход требует очень быстрого интерфейса ввода-вывода для обработки высокого темпа поступления данных. В первой реализации, MAJC-5200 интерфейсная шина работает на 10 Гбайт/сек. (Шины Sun на большинстве процессоров обеспечивают 1 Гбайт/сек.) До сих пор сетевой процессор, как правило, проверял заголовок пришедшего пакета данных и направлял его в определенное место.

"Теперь", - сказал Tremblay, - "мы можем смотреть на полную нагрузку - на данные, которые идут за заголовком - и обрабатывать их 'в полете'".

И эта обработка может выполняться где угодно в сети. Например, сотовый телефон может послать сигнал на базовую станцию, и станция может зашифровать его, сжать его, выполнить некоторую эхо-компенсацию и затем послать его на на центральный сервер, который может выполнить многоязыковый анализ речи.

С архитектурной точки зрения, Sun в своем хозяйстве MAJC делает ставку на то, что что инфраструктура и серверная обработка в широкополосных коммуникациях будет использовать платформу Java. Так, хотя архитекторы MAJC поддерживают языки С и С++, они стремятся сделать MAJC самым быстрым Java-процессором в мире.

Одним из результатов решения сосредоточиться на Java является проектирование MAJC как многопоточной архитектуры. По Tremblay, язык Java облегчает программистам использование потоков. "Потенциально производительность может увеличиваться пропорционально числу процессоров в матрице", - сказал шеф-архитектор Sun. Архитектура MAJC позволяет разместить в матрице много процессоров. MAJC-5200 имеет два процессора.

Для получения лучшей производительности, кроме многопоточных микропроцессоров, разработчики MAJC применяют относительно новую технологию, которую они называют пространственно-временными вычислениями, иначе известную как предположительная многопоточность. Использование этой технологии в MAJC-5200 позволяет увеличить производительность последовательных приложений в 1.6 раза. В обычных многопроцессорных системах без многопоточности производительность таких программ, согласно Tremblay, увеличивается только на 5%.

Более того, с пространственно-временными вычислениями программист не должен беспокоиться о распараллеливании своих программ, потому что эта работа будет сделана для него виртуальной машиной Java. Последняя является уровнем программного обеспечения, который резидентен в компьютере и обеспечивает выполнение Java-программ.

Вот как работают пространственно-временные вычисления. Виртуальная машина проверяет программу и предполагает, что два метода (функции доступа к объекту Java) могут выполняться одновременно на двух процессорах. Она посылает метод A на первый процессор, а метод B - на второй для предположительного вычисления. Поскольку B - предположительный метод, он выполняется в отдельном адресном пространстве, называемом предположительной памятью. Если все идет хорошо и никакие зависимости в данных не нарушены, то предположительная память сливается с основной памятью и программа обрабатывает следующую пару методов. Если произошло нарушение, то второй метод отменяется и предположительная память отбрасывается.

MAJC - не только многопоточный микропроцессор, но он также использует очень длинные командные слова (VLIW). Архитектуры VLIW упрощают схемы, требуемые для достижения параллелизма уровня команд, так как компилятор, а не оборудование группирует команды так, чтобы они могли выполняться независимо. В MAJC каждый процессор имеет 4 функциональных устройства - от FU0 до FU3 (рис.2). Каждое функциональное устройство может рассматриваться как RISC-процессор, приспособленный для обработки цифровых сигналов. Группы компилятора состоят из четырех 32-битных команд, которые распределяются по четырем функциональным устройствам.

Первые 2 бита в каждом 128-битном командном пакете показывают процессору, сколько команд в пакете. Эта техника позволяет более эффективно использовать память, так как командные пакеты не должны дополняться пустыми командами (NOP), если группа компилятора меньше 4 команд. Но эти 2 бита входят в 4-битный командный код, первой команды в пакете, которая направляется на FU0. В результате FU0 может выполнять лишь четвертую часть того набора операций, который выполняется на трех остальных идентичных функциональных устройствах.

Другим недостатком MAJC является его единообразный регистровый файл. Отдельные целочисленные регистры и регистры для фиксированной и плавающей точки - общее свойство всех архитектур. Отчасти это сложилось исторически, с тех времен, когда процессоры фиксированной и плавающей точки были разными чипами. В MAJC, однако, любые типы данных могут быть записаны в любой регистр. Также и все функциональные устройства могут обрабатывать любые типы данных. "Так компилятору значительно легче генерировать код", - сказал Tremblay, - "если он может двигаться вперед и назад между разными типами данных вместо того, чтобы пересылать данные между разными регистрами."

MAJC-5200 была построена на заводе IBM в Burlingtone, Vt. по 0.22-микронной технологии. Позже в этом году она перейдет на 0.18-микронную технологию, а в следующем году будет добавлена технология "кремний на пластине", что даст еще большую производительность. Tremblay предсказывает, что система обеспечит 1-10 гигафлоп или 10-20 гигаопераций в секунду. Инженеры Sun сейчас тестируют первый чип.

Классический RISC

Много порядков величины отделяют Blue Gen с миллионом процессоров и 1 петафлопом от MAJC-5200 с двумя процессорами и несколькими гигафлопами. И много порядков величины отделяют MAJC от производительности любого встроенного однопроцессорного устройства. Но даже на самом низком уровне производительности остается достаточно места для новшеств.

Пример тому - новый процессор, названный Nios, разработанный инженерами Altera Corp., San Jose, Calif. Эта компания выпускает программируемые логические устройства (PLD) и ее инженеры разработали первый встраиваемый процессор, оптимизированный именно для PLD (рис.3). Он доступен как часть последнего PLD Altera, Apex. Nios выпускается в двух базовых версиях: меньшей - с 16-битной шиной данных и большей - с 32-битной шиной данных. Команды имеют длину 16 бит.

Пользователи могут сделать минимальные изменения для Nios, поскольку процессор не есть жесткое устройство само по себе. Он встраивается в программируемые порты и другие прикладные схемы, которые пользователь проектирует на чипе.

Согласно Tim Allen, руководителю аппаратных разработок Altera, ответственному за разработку этого процессора, есть несколько причин, по которым Nios может быть сделан "мягким ядром". Начать с того, что пользователь может выбирать ширину шины данных и определенные показатели производительности, так что практичность Nios будет увеличиваться большим количеством версий Apix PLD, которые компания будет выпускать. Вторая причина - дать пользователям быстрый доступ к последним промышленным технологиям, вместо того, чтобы заставлять их ждать, пока их прикладная задача будет встроена в более продвинутый процессор.

Безусловно, встроенное ядро будет давать лучшую производительность. Но около 50 команд в секунду достаточно для применения в бытовых устройствах, для которых Nios предназначен, - говорит Allen.

16-битное ядро Nios содержит 1000 логических элементов, каждый из которых состоит из 4-входовой просмотровой таблицы и триггера, и, в зависимости от размера чипа PLD занимает примерно от 2 до 25% всех логических элементов в чипе. Остается еще достаточно места для прикладной логики.

Что до архитектуры Nios, то это, согласно Allen, классическая архитектура RISC. "Главная идея состоит в том, что она должна быть знакома людям, которые использовали RISC-процессоры." - объясняет он. - "Нам нет нужды удивлять людей новой архитектурой и заставлять их изучать ее."

При оптимизации разработки инженеры используют свойства, заложенные в архитектуру Aprex, которые состоят прежде всего в логических элементах плюс встроенная память, которая может конфигурироваться как RAM, ROM или CAM (память, адресуемая содержимым).

Первое что сделали разработчики, это оптимизация Nios по всем входам. "16-битное ядро содержит всего 1000 логических элементов," -говорит Allen. - "Так что, инженеры могли отдельно рассмотреть каждый логический вход и спросить себя 'как лучше его сделать?' Потребовалось всего чуть больше недели на то, чтобы перебрать все CPU и оптимизировать его для архитектуры PLD Altera."

Насколько возможно, разработчики используют преимущества встроенной памяти Apex, чтобы сохранить как можно больше элементов свободными для той прикладной логики, которую захочет построить пользователь. Это сделано и для регистрового файла и для декодера команд, и в результате за этими двумя схемами не закрепляются жестко никакие логические элементы.

Основанием для нового проекта, конечно, было желание продавать побольше PLD, сделав их более полезными для потребителя. С этой точки зрения выглядит разумным поместить процессор прямо в PLD вместе с остальными программируемыми схемами вместо того, чтобы, чтобы заставлять потребителя монтировать чип PLD на одной плате с процессором. Результат Altera называет "система на программируемом чипе".

Но одно из наибольших новшеств Nios - не в техническом аспекте, а в рыночных перспективах - его цена. От практически бесплатный. За $995 покупатели Altera приобретают средство разработки Excalibur Nios, которое содержит ядро Nios вместе с компилятором, отладчиком и всем, что нужно для совмещения процессора с прикладной логикой в PLD, Лицензия Nios, которая идет в комплекте с инструментарием, свободна до тех пор, пока пользователь размещает процессор в одном из чипов Altera.


Информация о Blue Gen может быть найдена в IBM Reseach Web Site по адресу: www.reseach.ibm.com.

Обсуждение архитектуры MAJC может быть найдено в статье Brian Case "Sun Makes MAJC With Mirrors", Microprocessor Report, 25 October 1999, hh.18-21.
Дополнительная документация доступна на сайте Sun Microsystem по адресу: www/sun/microelectronics/MAJC.

Для детального ознакомления с микропроцессором Nios посетите сайт Altera Corp. по адресу: www.altera.com.


КаталогИндекс раздела