Книга
Книга
Виктор Корнеев Андрей Киселев
СПВРЕтЕННЫЕ
МИКРОПРОЦЕССОРЫ
З-о издание
Санкт-Петербург«БХВ-Петербург»2003
УДК 681.3
ББК 32.973-04
К67
Корнеев В. Вм Киселев А. В.
К67 Современные микропроцессоры. — 3-с изд., перераб. и доп. — СПб.: БХ В-Петербург, 2003. — 448 с.: ил.
ISBN 5-94157-385-5
В книге описаны основные типы микропроцессоров, используемых при построении персональных компьютеров, рабочих станций, вычислительных и телекоммуникационных систем, суперЭВМ и средств автоматизации технологических процессов. Разобраны архитектурно-структурные приемы достижения высокой производительности. Проанализированы основные идеи построения супсрскалярных микропроцессоров, микропроцессоров с /шинным командным словом, а также перспективных мультитрсдовых микропроцессоров и однокристальных вычислительных систем. Приведены описания универсальных микропроцессоров ведущих зарубежных компаний. Представлено новое нал рамен не средств обработки сигналов — медийные микропроцессоры, а также нейросетевые алгоритмы и нейропроцессоры для их интерпретации. Рассмотрены основы транспьютерной технологии и существующие семейства транспьютеров.
Для студентов, аспирантов и преподавателей профильных специальностей
УДК 681.3
ББК 32.973-04
Группа подготовки издания:
Главный редактор Зав. редакцией РедакторКомпьютерная верстка КорректорДизайн обложки Зав. производствомГлавный редактор Зав. редакцией РедакторКомпьютерная верстка КорректорДизайн обложки Зав. производствомЕкатерина Кондукова Григорий Добин Полина Столбова Натальи Смирновой Наталия Периткова Игоря Цырульникова Николай ТверскихЕкатерина Кондукова Григорий Добин Полина Столбова Натальи Смирновой Наталия Периткова Игоря Цырульникова Николай Тверских
Главный редактор Зав. редакцией Редактор
Компьютерная верстка Корректор
Дизайн обложки Зав. производством
Главный редактор Зав. редакцией Редактор
Компьютерная верстка Корректор
Дизайн обложки Зав. производством
Екатерина Кондукова Григорий Добин Полина Столбова Натальи Смирновой Наталия Периткова Игоря Цырульникова Николай Тверских
Екатерина Кондукова Григорий Добин Полина Столбова Натальи Смирновой Наталия Периткова Игоря Цырульникова Николай Тверских
Лицензия ИД Ne 02429 от 24.07.00. Подписано в печать 29.08.03.Формат 70xl00’/i6. Печать офсетная. Уел. печ. л. 36,12.
Тираж 3000 экэ. Заказ Na 1086.“БХВ-Петербург",198005, Санкт-Петербург, Измайловский пр.. 29.
Гигиеническое заключение на продукцию, товар Na 77.99.02.953.Д.001537.03.02от 13.03.2002 г. выдано Департаментом ГСЭН Минздрава России.
Отпечатана е готовых диапозитивовв Академической типографии "Наука" РАН199034. Санкт-Петербург, 9 линия, 12.
ISBN 5-94157-385-5ISBN 5-94157-385-5© Корнеев В. В., Киселев А. В., 2003
ISBN 5-94157-385-5
ISBN 5-94157-385-5
О Оформление, издательство "ЬХВ-ПетсрбурГ, 2003
© ОМД Групп. 2003
Содержание
Введение1
Глава 1. Архитектура современных микропроцессоров5
Процессор как цифровое устройство обработки информации5
Цифровая обработка информации5
Аппаратная реализация вычислений13
Программная реализация вычислений16
Структура и функциональная организация процессора19
Архитектура процессора25
Прерывание......„ 26
Организация многоуровневой памяти компьютера29
Кэш-память30
Страничная организация памяти34
Расслоение памяти37
Микропроцессоры38
Перспективы микроэлектронного производства40
Сверхбольшие интегральные схемы40
Микропроцессоры и микроконтроллеры45
Микросхемы памяти46
Программируемые логические интегральные схемы53
Направление развития микроэлектронных компонентов вычислительных систем59
Архитектурные особенности современных микропроцессоров60
Классификация архитектур микропроцессоров60
Архитектура процессоров с параллелизмом уровня команд63
Организация многоуровневой памяти в микропроцессорах83
Ускорение переключения контекста процессора89
Расширение функциональных возможностей микропроцессоров90
Стандартизация архитектур микропроцессоров92
Мультитредовые микропроцессоры95
Основы мультитредовой архитектуры95
Выявление тредов99
Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы100
Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы111
Специфика мультитредовых моделей распараллеливания112
Развитие архитектур микропроцессоров114
Влияние элементной базы на реализуемость архитектур114
Однокристальные векторно-конвейерные процессоры115
Причины перехода к построению однокристальных мультипроцессорных систем117
Подходы к построению однокристальных мультипроцессорных систем118
Способы оценки производительности процессоров119
Пиковая производительность компьютеров119
Реальная производительность121
Способы измерения реальной производительности123
Тесты для оценки пропускной способности памяти и производительности процессора124
Тест Unpack125
Пакеты тестовых программ SPEC CPU127
Вопросы для самоконтроля к главе 1135
Глава 2. Универсальные микропроцессоры137
Структура рынка универсальных микропроцессоров137
Микропроцессоры с архитектурой х86139
Микропроцессор Pentium (Р5)139
Микропроцессор Pentium MMX 145
Микропроцессор Pentium Pro (Р6)150
Микропроцессор Pentium II153
Микропроцессор Pentium III157
Микропроцессор Pentium 4169
Микропроцессор Pentium М174
Микропроцессоры с архитектурой IA-64175
Микропроцессоры пятого поколения компании NexGen183
МикропроцессорыкомпанииAMD184
МикропроцессорыкомпанииCyrix197
МикропроцессорыкомпанииTransmeta210
Микропроцессоры с архитектуройAlpha214
Микропроцессоры Alpha 2106х214
Микропроцессор Alpha 21164215
Микропроцессор Alpha 21264 218
Микропроцессор Alpha 21364 221
Микропроцессоры с архитектурой SPARC223
Архитектура SPARC223
Процессор SPARC224
Реализация архитектуры SPARC227
Архитектура UltraSPARC (V9)229
Микропроцессоры с архитектурой MAJC235
Микропроцессоры с архитектурой РА237
Микропроцессоры с архитектурой Power и PowerPC241
Микропроцессор PowerPC 620242
Технология AltiVec245
МикропроцессорPowerPC 750/740 (G3)248
МикропроцессорPowerPC G4249
МикропроцессорG5 компанииIBM249
МикропроцессорPower 3250
МикропроцессорPower 4....252
Микропроцессоры компании MIPS (Silicon Graphics)255
Микропроцессоры отечественного производства260
Микропроцессоры с архитектурой SPARC260
Микропроцессоры с архитектурой MIPS261
Состояние и перспективы развития универсальных микропроцессоров266
Основные тенденции развития универсальных микропроцессоров266
Программная совместимость266
Повышение тактовой частоты268
Увеличение пропускной способностиподсистемы памяти269
Повышение степени внутреннегопараллелизма269
Вопросы для самоконтроля к главе 2270
Глава 3. Сигнальные, коммуникационные и медийные микропроцессоры273
Обшие сведения о цифровой обработке сигналов273
Микропроцессоры обработки сигналов278
Сигнальные микропроцессоры компании Texas Instruments280
МикропроцессорысемействаTMS32OC1X281
МикропроцессорысемействаTMS320C2x283
МикропроцессорысемействаTMS320C5x285
МикропроцессорысемействаTMS320C2xx287
МикропроцессорысемействаTMS320C54X288
МикропроцессорысемействаTMS320C3x291
МикропроцессорысемействаTMS320C4x293
МикропроцессорысемействаTMS320C8x299
МикропроцессорысемействаTMS320C6x305
Сигнальные микропроцессоры компании AnalogDevices308
МикропроцессорысемействаADSP21xx309
МикропроцессорысемействаADSP 21ххх315
Микропроцессоры с архитектурой SHARC семейства ADSP-2106x317
Микропроцессоры с архитектурой SHARC семейства ADSP-2116х324
Микропроцессор TigerSHARC — ADSP-TS001326
Микропроцессор ADSP-21535 Blackfin330
Сигнальные микропроцессоры компании Motorola334
Микропроцессоры 24-разрядные с фиксированной точкой334
Микропроцессоры семейства DSP560xx334
Микропроцессоры семейства DSP563xx341
Микропроцессоры 16-разрядные с фиксированной точкой343
Микропроцессоры семейства DSP561XX343
Микропроцессоры семействаDSP566xx345
Микропроцессоры семействаDSP568xx347
Микропроцессоры с плавающей точкой семейства DSP9600X350
Коммуникационные процессоры352
Микропроцессор МРС8260352
Сетевые микропроцессоры компании Intel356
Микропроцессоры Intel с архитектурой РСА361
Медийные микропроцессоры365
Микропроцессор Mediaprocessor компании MicroUnity366
Микропроцессор TriMedia компании Philips366
Микропроцессор Mpact Media Engine компании Chromatic Research368
Микропроцессор NV1 компании Nvidia370
Микропроцессор MediaGX компании Cyrix371
Вопросы для самоконтроля к главе 3375
Глава 4. Транспьютеры — элементная база мультипроцессорных систем379
Основные особенности транспьютеров379
Архитектура и структура транспьютеров фирмы Inmos381
Архитектура семейств Т-2, Т-4, Т-8381
Центральный процессор383
Система команд транспьютера385
Выполнение команд385
Использование сопроцессора386
Распределение памяти транспьютера386
Диспетчеризация процессов387
Ввод/вывод388
Передача данных по линку388
Ожидание сигнала от блока событий390
Ожидание сигнала от таймера390
Инициализация системы после включения питания391
Управление системой392
Обработка ошибок392
Транспьютер Т-9000 393
Архитектурные и структурные особенности393
Виртуальные линки393
Группировщик команд394
Транспьютероподобные микропроцессоры серии "Квант" 395
Основы архитектуры395
Устройство управления397
Адресное устройство397
Арифметическое устройство,,,. 397
Системное устройство398
Конвейер процессора398
Система команд398
Производительность микропроцессора399
Вопросы для самоконтроля к главе 4399
Глава 5. Нейропроцессоры401
Общие сведения о нейросетевых вычислениях401
Проблемная ориентация нейросетевых вычислений401
Основы организации нейросетевых вычислений403
Основные понятия теории нейронных сетей405
Организация функционирования нейросети408
Алгоритмы обучения многоуровневых персептронных сетей410
Аппаратные средства, интерпретирующие алгоритмы, заданные нейронной сетью411
Подходы к аппаратной реализации нейросетей411
Нейрочипы413
Цифровые нейрочипы413
Цифровые кристаллы для систолических систем и систем с одним потоком команд414
Нейрочипы с радиусными базисными функциями415
Аналоговые нейрочипы416
Гибридные нейрочипы416
Сигнальные микропроцессоры и микропроцессоры с расширенным набором команд для мультимедийных приложений416
Нейропроцессор NeuroMatrix NM6403417
Основные характеристики архитектуры417
Система команд нейропроцессора NM6403418
Производительность нейропроцессора NM6403.420
Вопросы для самоконтроля к главе 5421
Список литературы
Предметный указатель434
Введение
Создание фирмой Intel первого микропроцессора в 1971 году положило начало эпохе всеобщей компьютеризации. "Благодаря микропроцессорам компьютеры стали массовым, общедоступным продуктом", — заявил Тед Хофф (Ted Hoff), один из изобретателей первого микропроцессора. Его имя вместе с именами его коллег Федерико Феджина (Federico Faggin) и Стена Мейзора (Stan Mazor) внесено в список лауреатов Национального зала славы изобретателей США, а само изобретение признано одним из величайших достижений XX века.
За чуть более чем четвертьвековую историю микропроцессоры прошли поистине гигантский путь. Первый чип Intel 4004 работал на частоте 750 КГц, содержал 2300 транзисторов и стоил около $200. Производительность его оценивалась в 60 тыс. операций в секунду. В предыдущем издании книги, вышедшем в 2000 г., отмечалось, что рекордные показатели принадлежат микропроцессорам Alpha 21264 фирмы DEC и составляют: 700 МГц, 15,2 млн транзисторов, 2 млрд операций в секунду и около $300 соответственно стоимость. На сегодняшний день тактовая частота процессоров превысила 2 ГГц, количество транзисторов более 50 млн, пиковая производительность более 7 млрд операций в секунду.
Сравнение приведенных значений подтверждает оценку успехов микропроцессорной индустрии, данную основателем и председателем совета директоров фирмы Intel Гордоном Муром (Gordon Moore): "Если бы автомобилестроение эволюционировало со скоростью полупроводниковой промышленности, то сегодня «Роллс-Ройс» стоил бы 3 доллара, мог бы проехать полмиллиона миль на одном галлоне бензина, и было бы дешевле его выбросить, чем платить за парковку".
Такое интенсивное развитие технологий в обществе, где основным предметом труда становится информация, является следствием растущего спроса на новые орудия труда — компьютеры. На сегодняшний день компьютеризация является одним из главных направлений научно-технического прогресса и концентрированным его выражением. Количество и качество производимых в стране компьютеров, степень насыщенности вычислительной техникой самых разных отраслей становятся одним из основных критериев экономического и военного потенциала.
В формируемом ежегодно в США группой экспертов перечне "критических технологий", охватывающем практически все направления производства, исследований и разработок, оказывающих влияние на военный и экономи-
ческий статус страны, микроэлектронные технологии традиционно занимают первое место.
В микропроцессорах — наиболее сложных микроэлектронных устройствах — воплощены самые передовые достижения научной и инженерной мысли. В условиях, свойственных данной отрасли производства, жесткой конкуренции и огромных капиталовложений выпуск каждой новой модели микропроцессора, так или иначе, связан с очередным научным, конструкторским, технологическим прорывом, хотя, в силу большой внутренней сложности, внутри одного семейства разработчики, по возможности, стараются использовать унифицированные наработанные решения и сохранять программную совместимость моделей.
Изучение такой интенсивно развивающейся и наукоемкой предметной области, как микроэлектроника и микропроцессорная техника, в частности, — задача весьма интересная и сложная, требующая постоянного совершенствования и пополнения получаемых знаний и знакомства со смежными научно-техническими областями. Для эффективного решения прикладных задач любой современный специалист, профессионально связанный с вычислительной техникой, должен иметь адекватное представление о состоянии и перспективах развития элементной базы.
Понимая всю сложность задачи отражения состояния динамично изменяющейся предметной области, неизбежно приводящей к известному парадоксу "Ахиллеса и черепахи", авторы, тем не менее, попытались максимально полно изложить основные идеи, концепции и направления, определяющие развитие современных микроэлектронных технологий. Однако основная цель книги заключается в том, чтобы заинтересовать читателя данной проблематикой и стимулировать его к дальнейшему самообразованию.
Книга состоит из пяти глав. Глава / является концептуальной, а остальные — иллюстративно-справочными.
В главе 1 дано представление об основных направлениях развития архитектуры, структуры и организации функционирования микропроцессоров. Рассмотрены состояние и перспективы развития элементной базы современных средств вычислительной техники: микросхем памяти, программируемых логических интегральных схем, универсальных и сигнальных микропроцессоров. Проанализированы архитектурные и структурные способы повышения быстродействия электронных схем, применяемые на практике подходы к оценке производительности микропроцессоров. Изложены основные идеи построения суперскалярных микропроцессоров, микропроцессоров с длинным командным словом, а также перспективных мультитредовых микропроцессоров. Представлены подходы к оценке производительности микропроцессоров.
Глава 1
Архитектура современных микропроцессоров
Процессор как цифровое устройство обработки информации
Цифровая обработка информации
В книге, посвященной рассмотрению микропроцессоров, логично ожидать ответа на вопрос, что такое процессор, какие вообще бывают процессоры и какое место среди них занимают микропроцессоры. Первая часть ответа состоит в том, что процессор является цифровым устройством обработки информации. Цифровые или дискретные устройства обработки информации предназначены для преобразования элементов данных, принимающих конечный дискретный набор значений. Каждый элемент данных характеризуется, по крайней мере, двумя атрибутами: именем, выделяющим этот элемент среди всех элементов, и значением. Например, элемент данных, представляющий бит информации, может принимать только одно из двух значений, а именно: 0 или 1.
Элементы данных хранятся в элементах памяти. Для хранения данных, принимающих 2” различных значений, может быть использован упорядоченный набор из п элементов памяти, п е {1,2, ...}, каждый из которых способен хранить 1 бит информации. Так, в случае п = 3 набор различных значений состоит из следующих восьми: ООО, 001, 010, 011, 100, 101, ПО, 111. Например, при хранении значения 011 первый элемент памяти хранит значение 0, второй — 1 и, наконец, третий элемент также хранит значение 1.
Всякое цифровое устройство строится из логических элементов, называемых вентилями, и элементов памяти. Вентили реализуют логические функции, в числе которых прежде всего следует упомянуть функции двух переменных И, ИЛИ, исключающее ИЛИ и функцию одной переменной НЕ. Условные графические изображения вентилей и функции, реализуемые ими, приведены на рис. 1.1.
В главе 2 рассмотрены семейства микропроцессоров с CISC- и RISC- архитектурой и дана обобщенная характеристика современных универсальных микропроцессоров. Представлены микропроцессоры ведущих зарубежных производителей и ряд микропроцессоров отечественной разработки.
В главе 3 представлены основные семейства сигнальных микропроцессоров фирм Motorola, Analog Devices, Texas Instruments, а также новые средства обработки сигналов — медийные и коммуникационные микропроцессоры. Рассмотрены особенности алгоритмов цифровой обработки сигналов (ЦОС) и средства аппаратной поддержки исполнения алгоритмов ЦОС в сигнальных и медийных микропроцессорах. Проведен сравнительный анализ эффективности архитектур сигнальных микропроцессоров для типовых задач обработки сигналов.
Глава 4 содержит описание зарубежных и отечественных микропроцессоров транспьютерного типа, ориентированных на использование в массовопараллельных вычислительных системах. Подробно рассмотрены их архитектурные и структурные особенности.
Глава 5 посвящена организации нейросетевых вычислений и реализации нейропроцессоров.
Качественному усвоению материала, по мнению авторов, будет способствовать обращение читателей к вопросам для самоконтроля, помещенным в конце каждой главы.
Материал настоящего, третьего, издания книги был существенно переработан и дополнен авторами с учетом их представлений об излагаемой предметной области, замечаний и пожеланий, поступивших после выпуска двух предыдущих изданий. Вместе с тем, авторы решили не исключать материал предыдущих изданий об уже снятых с производства микропроцессорах, посчитав, что его присутствие вносит для читателей дополнительный познавательный аспект.
Книга предназначена для студентов и аспирантов, изучающих информатику и компьютерные науки, а также всех интересующихся современной вычислительной техникой.
Вентиль И
Вентиль ИЛИ
Входы
Выход
0 0
0
0 1
0
1 0
0
1 1
1
Входы
Выход
0 0
0
0 1
1
1 0
1
1 1
1
Вентиль НЕ
Вентиль исключающее ИЛИ
Входы
Выход
0
1
1
0
Входы
Выход
0 0
Q
0 1
1
1 0
1
1 1
0
Рис. 1.1. Графические изображения вентилейи таблицы истинности реализуемых ими логических функций
Входы и выходы вентилей принимают логические значения 0 и 1, представляемые, например, уровнями напряжения при электронной реализации вентилей или уровнями давления при пневматической реализации. Какой уровень напряжения считать 0, а какой I при электронной реализации вентилей — служит предметом договоренности.
Из вентилей конструируются блоки цифровых устройств, например, триггеры, представляющие собой один из типов элементов памяти, предназначенных для запоминания 1 бита информации. Одна из возможных схем триггера приведена на рис. 1.2, а.
Триггер характеризуется тем, что если на входы Вход I и Вход 0 были пода ны значения 1 и 0 соответственно, то на выходе Выход 1 триггера установится значение 1, которое будет задавать единичное состояние триггера. Это состояние будет сохраняться вплоть до переключения триггера в нулевое состояние путем подачи на его входы Вход 1 и Вход 0 значений 0 и 1 соот-
ветственно. В нулевом состоянии выход Выход 1 триггера имеет значение 0. Свойство триггера сохранять свое состояние обеспечивается имеющимися в нем обратными связями. Графическое изображение триггера см. на рис. 1.2, б
Выход 0 Выход 1Выход 0 Выход 1Вход 0 Вход 1Вход 0 Вход 1
Выход 0 Выход 1
Выход 0 Выход 1
Вход 0 Вход 1
Вход 0 Вход 1
аб
Рис. 1.2. Триггер:а — схема; б — графическое изображение
Для того чтобы изменения состояния триггеров происходили после того, как устанавливаются значения сигналов на их входах, прибегают к введению тактовых сигналов. Тактовый сигнал представляет собой периодическую последовательность импульсов. Для просторы изложения примем, что импульсу соответствует логическое значение I, а промежуткам между импульсами соответствует 0. Причем длительность сохранения значения тактового сигнала составляет величину т/2, где т — длительность такта. Величина 1/т называется тактовой частотой.
На рис. 1.3 показан триггер, изменение состояния которого происходит только при значении тактового сигнала 1.
Интуитивно понятно, что чем выше тактовая частота, тем более быстродействующим будет цифровое устройство. Однако физические характеристики элементной базы, используемой для построения’вентилей, определяют предельную тактовую частоту, на которой устройство остается работоспособным. При превышении этой тактовой частоты импульсы недопустимо искажаются, и устойчивое различение уровней 0 и 1 становится невозможным.
сигнал
Рис. 1.3. Тактируемый триггер
Следующим за триггером важным логическим блоком служит регистр, представляющий собой в простейшем случае упорядоченную совокупность триггеров. Регистры используются для хранения элементов данных: так, регистр, состоящий из 1-го триггера (вырожденный случай), хранит 1 бит, регистр из 8 триггеров — байт (1 байт состоит из 8 битов), регистр из 16 триггеров — слово, соответственно регистр из 32 триггеров используется для хранения двойного слова. Эти понятия бит, байт, слово, двойное слово стали общепринятыми в компьютерной отрасли.
Для хранения данных кроме триггеров применяются элементы памяти, построенные на иных физических принципах: сохранения заряда конденсатора, сохранения ориентации магнитного домена и других физических явлениях. Элементы памяти группируются в ячейки, каждая из которых
предназначена для хранения одного элемента данных, например, байта, слова, двойного слова. Упорядоченная совокупность ячеек образует блок памяти. Какой тип элементов данных (бит, байт, слово и т. д.) хранится в памяти, выбирается при построении памяти. Важно то, что каждая ячейка имеет одно-однозначно сопоставленный ей адрес, который используется при операциях с памятью для доступа к этой ячейке. Значение, запоминаемое в ячейке с адресом А, обозначается обычно [А]. Определены две операции с памятью:
О запись элемента данных в ячейку памяти с заданными в операции источником записываемых данных и адресом ячейки памяти, в которую дан
. ные должны быть записаны;
□ чтение элемента данных из ячейки памяти с заданными в операции адресом ячейки памяти и регистром, в который помешаются считанные данные.
Важной характеристикой памяти служит ее объем, определяемый как максимальное количество элементов данных, которое возможно хранить в ней.
Собственно для понимания того, как устроен процессор, необходимо еще рассмотреть, как организуется передача данных между регистрами. На рис. 1.4 изображен регистровый файл, состоящий из л + 1 регистра (каждый регистр представлен одним триггером), и мультиплексор. Мультиплексор представляет собой блок, позволяющий передать значение, хранимое в триггере одного (произвольно выбранного регистра), в соответствующий триггер другого регистра или соответствующие триггеры нескольких регистров этого файла.
Для того чтобы выполнить эту передачу данных, между регистрами необходимо подать значение 1 на вход вентиля И, подсоединенного другим входом к единичному выходу триггера регистра, состояние которого передается. На соответствующие входы вентилей, подключенных к выходам триггеров других регистров, должны быть при этом поданы значения 0. Вентиль ИЛИ, к которому подсоединены все выходы упомянутых выше вентилей И, своим выходом связан со входами вентилей И, подсоединенных к соответствующим входам триггеров всех регистров файла. Если на другой вход вентиля И, подсоединенного к входу триггера, будет подана 1, то этот триггер установится в то же состояние, что и триггер, состояние которого передается.
Таким образом, передача данных между регистрами выполняется при подаче управляющих сигналов на управляющие входы мультиплексора для выделения регистра, содержимое которого передается, и подаче соответствующих управляющих сигналов, обеспечивающих установку триггеров регистра, в который данные передаются. Требуемую передачу данных из регистра Rt в регистр Rj можно записать как Rj <— Rj, i * j, i e {0, 1, ..., л}, у e (0, 1, ..., л}, назвав это командой пересылки данных между регистрами.
Рис. 1.4. Схема мультиплексора, предназначенного для передачи данных между регистрами
Следует отметить, что вместо вентиля ИЛИ в мультиплексоре может использоваться так называемое "проводное ИЛИ". При этом выходы всех вентилей И, подсоединенных к выходам триггеров, подсоединяются к шине (проводнику). Соответственно к этой же шине подсоединяются входы вентилей, через которые выполняется установка триггеров регистрового файла. На рис. 1.5 показана схема для реализации межрегистровых передач с использованием шины.
Приведенные примеры построения триггера, мультиплексора и организации передачи данных между регистрами демонстрируют способ построения блоков цифровых устройств обработки данных.
Используя некоторое исходное множество блоков, например, реализующих вешили И, НЕ, ИЛИ, исключающее ИЛИ, можно строить более сложные блоки, из которых, в свою очередь, еще более сложные. Подобным образом может быть построено произвольное устройство цифровой обработки данных |1|. Например, на рис. 1.6, а приведена схема суммирования с учетом переноса из i - 1 разряда двух i-x разрядов двоичных чисел, хранящихся в соответствующих регистрах, с получением /-го разряда суммы и переноса в / + 1 разряд. Схема суммирования двух двоичных чисел приведена на рис. 1.6, б.
а
Рис, 1.6, Схема формирования:а — поразрядной суммы с выработкой переноса
5 ♦ 23 = 28
б
Рис. 1.6. Схема формирования:б — значений двух 5-разрядных pei негров
Аппаратная реализация вычислений
Прежде чем переходить к описанию процессоров как таковых, рассмотрим построение цифрового устройства обработки данных, организацию вычислений в этом устройстве, чтобы впоследствии понять, для чего нужны процессоры, а также то, что цифровую обработку данных можно делать, не используя процессоры.
Для предметного представления проблемы рассмотрим реализацию конкретного вычислительного процесса. Пусть требуется реализовать фильтр
4
у, = ^ ххни, который формирует по заданной входной бесконечной 7=1
последовательности х-з, х-з, х-|, хо, хь ... последовательность у0, ух, ... На рис. 1.7 представлена одна из возможных реализаций цифрового устройства, выполняющего требуемое вычисление [2].
Рис. 1.7. Схемная реализация алгоритма фильтра
При построении устройства использованы регистры, схемы передачи данных между регистрами, схемы передачи данных между регистрами и функциональными устройствами (ФУ), ФУ: сумматоры и умножители. Детали построения ФУ из вентилей можно найти в 11J. Для понимания того, как устроены процессоры, важно представлять, что ФУ использует в качестве операндов значения из регистров и помещает результат операции в регистр.
Устройство, приведенное на рис. 1.7, функционирует следующим образом. В очередном такте на вход регистра R\ поступает и запоминается в нем значение Xj. В следующем такте результат умножения Xj на wj запоминается в регистре Ry a Xj передается из регистра R\ в регистр Ry В этом же такте в регистр R\ заносится х/+ |. Далее легко убедиться, что через б тактов после поступления значения xf для запоминания в регистре Л( на выходе устройства появится значение у(.
В представленном устройстве умножитель и сумматор получают данные из регистров, заранее соединенных с ними в соответствии с реализуемым алгоритмом. Для реализации другого алгоритма будет необходим другой набор ФУ, регистров и мультиплексоров между ними.
Так как в устройстве, приведенном на рис. 1.7, все передачи данных между регистрами и функциональными устройствами выполняются по тактовым сигналам, то при повышении тактовой частоты уменьшается время получения результатов.
Такая организация вычислений называется аппаратной, или схемной в отличие от программной реализации вычислений. При схемной реализации вычислений все управляющие сигналы мультиплексоров (шин) фиксированы, т. е. на соответствующие управляющие входы поданы либо заданные совокупности постоянных значений (0 или I), либо выходы определенных блоков схемы. '
Возникает вопрос, приведенная схемная реализации вычислений является единственно возможной? Ответ на этот вопрос: конечно нет. Можно создать схемную реализацию требуемого алгоритма, например, с одним функциональным устройством умножения и одним устройством сложения. Множество возможных аппаратных реализаций одного и того же алгоритма порождает проблему выбора среди них. При выборе схемной реализации алгоритма необходимо иметь критерий выбора подходящей реализации. В качестве такого критерия может выступать, например, минимизация времени реализации вычислений или объема оборудования. В этом смысле, применительно к схемной реализации алгоритма, можно говорить о ней, как об эффективной, если она обеспечивает экстремальное значение используемого критерия.
4
Схемная реализация алгоритма у, = ^ Wj х хн<л, приведенная на рис. 1.7, демонстрирует два способа, применяемые для минимизации времени вычислений: параллельность и конвейерность обработки.
Параллельность заключается в одновременном выполнении преобразований в нескольких функциональных устройствах.
Конвейерность служит частным случаем параллельности, при котором выполнение преобразований, необходимых для получения каждого результата из однородной совокупности результатов, в нашем примере у,, i = 0, 1, ... ..., N, разбивается на последовательность одинаковых по длительности алгоритмических шагов. Для выполнения каждого шага алгоритма используются отдельные устройства, совокупность преобразований в которых составляет весь алгоритм требуемого преобразования. Результат каждого устройства, входящего в конвейер, фиксируется в регистре, и следующее устройство использует этот предварительно сохраненный результат, что позволяет совместить во времени выполнение шага для вычисления yt с выполнением предыдущего шага для вычисления yt*\. В рассмотренном примере устройства конвейера, выполняющие шаги алгоритма, реализуют операции умножения на коэффициенты w|t wj, W3, W4 и операции суммирования. Каждый шаг
выполняется параллельно с другими шагами, и при полной загрузке конвейера одновременно вычисляются 4 значения выходной последовательности у^ / = О, 1, .... N. Достоинством конвейерной реализации служит то, что после того, как все устройства конвейера загружены работой, очередной результат преобразования выдается на выходе через промежуток времени, равный длительности одного шага. И это при том, что время получения этого результата равно суммарной длительности всех шагов конвейера.
Программная реализация вычислений
Схемная реализация вычислений требует создания уникальной схемы объединения регистров и функциональных устройств, соответствующей заданному алгоритму. Поэтому переход от реализации одного алгоритма к реализации другого фактически требует построения новой вычислительной установки. При практических вычислениях это очень трудоемкий процесс.
Для обеспечения возможности выполнения разных алгоритмов при одной и той же схеме объединения регистров и функциональных устройств применяют программную реализацию вычислений.
При программной реализации вычислений изначально устанавливается набор регистров, функциональных устройств и мультиплексоров, через которые возможны передачи данных между ними. Задается также набор команд (преобразований), служащий для записи алгоритма требуемого вычисления. Каждая команда, будучи исполняемой, вырабатывает совокупность управляющих сигналов, подаваемых на некоторые мультиплексоры, что ведет к межрегистровым передачам данных с возможным преобразованием данных в функциональных устройствах. Собственно воздействие команды определяется тем, на какие мультиплексоры поступают управляющие сигналы и какие значения имеют эти сигналы. 1
Таким образом, при программной реализации вычислений за счет возможности исполнения различных последовательностей команд (разных команд, исполняемых в разном порядке) возможно при одной и той же схеме соединения регистров, мультиплексоров и функциональных устройств реализовать различные алгоритмы. Конечно, следует отметить, что исходная схема объединения регистров и функциональных устройств, а также набор используемых команд могут больше подходить для выполнения одних алгоритмов и препятствовать эффективной реализации других. Однако это служит платой за то, что при реализации различных алгоритмов используется одно и то же устройство.
Важно понимать, что команды в представленном цифровом устройстве обработки подаются на это устройство извне, из другого устройства, которое специально должно быть создано для исполнения каждого алгоритма. Таким образом, в целом устройство состоит из двух частей: неизменяемой при реа-
лизации любых алгоритмов, в которой собственно хранятся и обрабатываются данные, и изменяемой части, обеспечивающей последовательность выдачи команд, необходимую для реализации вычисления. Не следует думать, что подобная конструкция цифрового устройства обработки данных является чисто гипотетической. Именно так было организовано английское цифровое устройство Colossus, использовавшееся для расшифровки немецкой перс-' писки в годы Второй мировой войны. В создании этого устройства участвовал А. Тьюринг, который разработал "машину Тьюринга", имеющую ленту с ячейками для хранения данных и обрабатывающую элемент, внешний по отношению к ленте, но обеспечивающий подачу команд, модифицирующих ячейки ленты.
Попробуем представить гипотетическое цифровое устройство обработки, пригодное, в том числе, для реализации рассмотренного фильтра, состоящее из регистрового файла, блока памяти и функционального устройства, способного выполнять некоторый набор операций, включая сложение и умножение. Пусть это устройство включает мультиплексор, обеспечивающий передачи данных между регистрами, между регистрами и функциональным устройством с сохранением результата в одном из регистров, а также передачи данных между памятью и регистром.
4
Набор команд, достаточный для выполнения вычислений у, = ^wy хх,_Л1, состоит из следующих команд (после двойного слеша следует комментарий): □ R\ <— R^ И содержимое регистра R^ пересылается в регистр R\;
□ R\ «- R^ op R3 // над содержимым регистров Ri и R3 выполняется операция ор и результат записывается в регистр Rf,
□ /?!<- |Лз| // содержимое ячейки памяти, адрес которой хранится в регистре /?2, пересылается в регистр R^
□ [/?|] <- R} Ц содержимое регистра /?2 переписывается в ячейку памяти, адрес которой содержится в регистре Rt.
Для программной реализации вычислений должны быть явно определены размещение обрабатываемых данных и результатов вычислений, а также начальные значения используемых регистров и ячеек памяти, если из них читаются данные.
Для выполнения требуемого нам вычисления будем полагать, что значения X/, / = О, 1, .... N хранятся в ячейках памяти с адресами А|ШЧ ^ А||ач (л) + |, — ..., АНач (х) + л, а вычисленные значения у, записываются в ячейки памяти Апач (у), А|ЮЧ (у) + । , -, А1ШЧ (у) + „. Кроме того, для того, чтобы получить значение уо, требуются значения х0, х_ь х-2, х-з. Если эти значения не заданы (например, изначально определены как 0), то надо понимать, что первым
правильно вычисленным значением в последовательности yj, i = 0, 1, ..., N, будет уз.
Для программной реализации вычислений, предложенной в [2], требуется разместить в памяти последовательность хь / = О, 1, ..., N и задать следующие начальные значения регистров Ах, Ау, Wx, И^, W3, И^, £3, £2, Ех: 4х := Анач (х) — И
Яу " Анач (у) - 1;
^ := и>0;
И^ := ^ь
И^з := w;;
№4 := W3;
£3 :=х-3;
£2 :=х-2;
Ех:=х_х..
Собственно вычисления состоят в (п + 1)-кратном выполнении последовательности команд, составляющем тело цикла вычислений. Таким образом, должно быть сформировано управляющее воздействие для пересылки из регистра £3 в регистр £4, затем — для пересылки из регистра £2 в регистр £3 и т. д. После команды [Ау] <- Сх должна снова выполняться команда £4 <- £3. Тело цикла имеет вид:
£4<- £3 // засылка содержимого элемента х, - 3 или значения О
£3 <- £2 // засылка содержимого элемента х / - 2 или значения О
£2 <- Ех // засылка содержимого элемента х, - । или значения О
Ах *— А х+1
Ех <- [Ах) // засылка содержимого элемента х f
<- ^ х Ех
C^W^E^
<— С| 4* С2
С2 <- ^3 х £3
С| <— С| + С2
С2 <— И4 х £4
«- С] + с2
А у <— А у *Ь 1
[Ау] <— С|
Используется 12 регистров Е\, Е^, Ез, Е^, И^, ^ W3, И^, С|, Сз, Ах, Ау, над содержимым которых производятся операции. Следует отметить, что для именования регистров при написании программ может использоваться мнемоника, облегчающая понимание смысла программы.
1.1.4. Структура и функциональная организация процессора
Программная реализация вычислений требует подачи определенной последовательности команд для выполнения необходимого вычисления. Конечно, построить устройство, выдающее требуемую реализуемым алгоритмом последовательность команд, проще, чем собрать вычислитель из отдельных электронных компонентов целиком, включая регистры, память, функциональные устройства, но и это достаточно трудоемкий процесс.
Собственно, понятие "процессор" появилось как результат творческого озарения [3] группы инженеров, работавших под техническим руководством Дж. Мочли и Дж. Эккерта над созданием ENIAC (Electronic Numerical Integrator and Computer — электронного цифрового интегратора и вычислителя), при проектировании совместно с математиком Дж. фон Нейманом компьютера EDVAC. Пришедшая им в головы идея состояла в том, что команды, исполнение совокупности которых необходимо для реализации вычисления, можно так же как данные хранить в памяти, а для их выполнения создать схемную реализацию алгоритма, обеспечивающего требуемый порядок исполнения команд. Этот схемно реализованный алгоритм и был впоследствии назван процессором.
Суть этого алгоритма сводится к циклическому исполнению следующих шагов, показанных на рис. 1.8.
Рассмотрим более легально содержание шагов, составляющих алгоритм функционирования процессора.
На первом шаге, называемом "выборка из памяти очередной команды", из ячейки памяти, адрес которой содержится в специально введенном регистре PC, который именуется счетчиком команд (Program Counter), извлекается команда, помещаемая в регистр команд.
Так как содержимое регистра счетчика команд определяет, какая команда будет исполняться следующей, то рассмотрим, как формируется значение этого регистра.
Исходно предполагается, что команды программы размещаются в ячейках памяти с последовательными адресами Ан, Ан+|, Ан+2. —, где Аи — начальный адрес области памяти, в которой размещаются команды. Эта последовательность размещения команд интуитивно понимается как порядок написания команд программистом при формулировании им алгоритма решаемой
задачи с помощью предоставленного набора команд процессора. Поэтому, как правило, для'определения адреса следующей выполняемой команды необходимо просто увеличить на единицу значение PC, что и определило его название как счетчика команд.
Рис. 1.8. Алгоритм функционирования процессора
Для изменения порядка выполнения команд, когда следующей должна выполняться не команда, адрес которой равен увеличенному на I адресу выполняемой команды, а команда из ячейки памяти с адресом Апер, специально вводятся команды переходов. Команды переходов изменяют содержимое регистра счетчика команд.
Таким образом, адрес следующей команды определяется либо приращением на I значения счетчика команд, либо этот адрес формируется выполняемой командой перехода.
На шаге, называемом "декодирование команды", команда, помещенная в регистр команд, подвергается разбору на предмет выявления функционального преобразования, задаваемого этой командой, а также регистров и ячеек памяти, используемых в качестве источников операндов и места сохранения результата. Собственно на шаге декодирования команды выполняется подготовка к подаче управляющих сигналов на мультиплексоры для передачи данных между регистрами, функциональными устройствами и ячейками памяти.
Шаги "исполнение команды" и "запись результата" производят действия, понятные из их названия.
В качестве примера рассмотрим некоторый модельный процессор DLX |4].
Набор команд процессора DLX состоит из команд трех типов:
чтения/записи;
преобразований в арифметико-логическом устройстве (АЛУ);
переходов.
Форматы этих типов команд представлены на рис. 1.9 а, б, в соответственно.
65516
Код операции
rsl
rd
Непосредственный операнд
О31
а
655511
Код операции
rs1
rs2
rd
Функция
О31
б
626
Код операции
Смещение
О31
а
Рис. 1.9. Форматы команд процессора DLX:а — чтения/записи; б — АЛУ преобразований; в — перехода
Команды чтения/записи в зависимости от значения, содержащегося в 6-битном поле "код операции", выполняют следующие действия:
пересылают данные из регистра источника rsl в регистр результата rd;
пересылают 16-битную константу, содержащуюся в поле "непосредственный операнд", в регистр rd;
пересылают данные из регистра в память и из памяти в регистр.
Команды АЛУ преобразований, используя хранящиеся в регистрах rsl и rs2 операнды, выполняют над ними или над одним из них операцию, задаваемую полями "код операции" и "функция", и помещают результат в регистр rd.
Команды перехода могут быть безусловными или условными, т. е. выполняющими переход только при значении "истина" некоторого предиката, задаваемого кодом операции. В случае если переход выполняется, то к текущему значению счетчика команд добавляется 26-битное содержимое поля "смещение" команды перехода. Новое содержимое счетчика команд определяет адрес команды, следующей за командой перехода. Константа в поле команды "смещение" может увеличивать или уменьшать значение счетчика команд в зависимости от того, представляет она собой положительное или отрицательное число.
Исходя из количества битов в полях команд, используемых для задания регистров rsl и rs2 источников операндов и регистра результата rd, можно понять, что система команд предусматривает использование 32 регистров, /?о, R\ , Ri\ Два из этих регистров — специализированы, остальные универсальны и могут использоваться для записи и чтения данных. Регистр Ro имеет постоянное значение 0. В регистр /?3| записывается старое значение счетчика команд, если выполняется команда перехода, при которой в счетчик команд заносится новое значение (PC + смещение).
Специализация регистра /?31 позволяет ввести механизм работы с подпрограммами. В любом месте программы можно выполнить команду перехода на некоторый фрагмент команд, составляющих подпрограмму. Эта подпрограмма реализует требуемое пользователю часто встречающееся преобразование, например, вычисление тригонометрической функции sin(x). Каждая подпрограмма завершается командой перехода, в которой поле "смешение" сформировано с использованием значения из R^, что позволяет автоматически вернуться из подпрограммы по завершении к выполнению команды, следующей за командой перехода, вызвавшей переход к подпрограмме.
Структура процессора DLX представлена на рис. 1.10.
Все регистры процессора являются 32-битными. Показанные на структурной схеме пути передачи данных внутри процессора также являются 32битными. На структурной схеме представлены только магистрали передачи данных, сигнальные линии управления не показаны. Рассмотрим функционирование блоков процессора, схемно реализующих алгоритм процессора, приведенный на рис. 1.8.
Мультиплексор блока выборки команд служит для выдачи в память либо адреса команды из счетчика команд PC, либо адреса данных, сформированного в АЛУ при выполнении команды пересылки, задающей обмен между регистром и ячейкой памяти.
Память получает адрес по линии "выдача адреса" и возвращает команду или данные, если к памяти идет обращение по чтению, или использует этот адрес и данные с магистрали "выдача данных в память" для записи данных в ячейку памяти с этим адресом.
Рис. 1.10. Структура процессора DLX
В случае если из памяти поступает команда, то демультиплексор блока выборки команд направляет ее в блок декодирования. При поступлении из памяти данных в ходе выполнения команды пересылки эти данные записываются через АЛУ в соответствующий регистр, заданный в этой команде.
Счетчик команд PC блока выборки команд может получать приращение +1 в специальном блоке, функционирующем параллельно с АЛУ, либо в PC записывается сформированный в АЛУ адрес перехода в случае выполнения команды перехода.
В блоке декодирования определяются указанные в команде регистры из регистрового файла. Содержимое регистров операндов rsl и rs2 фиксируется в регистрах А и В соответственно. Если используется непосредственно заданный операнд, то он также фиксируется в регистре В.
После выполнения операции в АЛУ результат также может запоминаться в одном из регистров регистрового файла.
Кроме данных из регистрового файла, в регистры А и В при выполнении команд перехода может записываться значение счетчика команд PC + 1.
После определения структуры и функциональной организации процессора рассмотрим, как будет задаваться для него программа вычислений (листинг 1.1), и в чем собственно будет состоять ее отличие от программы, приведенной в разд. 1.1.3.
М: Ах < Атч(х) ~ 1;
Ау < Ацач (у) — 1;
W] <— Wo;
W2 <— W];
W3 <— W2;
W4 <— W3;
Е3 (— х-з;
Е2 <— Х-2;
Ei <- х 1;
i <— 0;// вводится регистр 1, в котором будет храниться количество произведенных повторений тела цикла;
Ml: Е4 е- Ез // засылка содержимого элемента х.-_< ;
Е3 <— Е2 // засылка содержимого элемента х,-?
Е2 <— Ei // засылка содержимого элемента xi-i
Ах <- Ах + 1
Е] <— [Ах] / / засылка содержимого элемента Xj
Ci <- Wi * Ei
c2 t- w2 * e2
Ci<—С]4-с%
С2<-W3*Ез
С]<-Сг+С?
С2<-W4*Е<
С]<~Cl+С2
Ау4—Ay+1
[Ау] <- Ci
i <- i + 1;
jump (i < n) Ml// переход при значении i, меньшем или равном п, на команду с адресом Ml, а при значении i, большем п, переход на следующую команду;
stop// команда завершения вычислений
Собственно отличий немного, но они носят принципиальный характер. Введен регистр i, в котором хранится количество произведенных повторений тела цикла. После каждого выполнения тела цикла значение в регистре i увеличивается на 1. Следующей командой условного перехода проверяется выполнение условия / < п. Если условие выполнено, то происходит переход на команду с адресом Ml. При не выполнении условия в случае i > и все необходимые повторения вычислений тела цикла выполнены. Следующей командой будет команда stop, завершающая вычисления.
Вычисления инициируются загрузкой в счетчик команд PC адреса М первой команды программы.
Архитектура, процессора
Под архитектурой процессора понимается его представление с точки зрения программиста. В первом приближении можно сказать, что архитектура процессора это набор его команд [1]. В свою очередь, структура задает набор компонентов процессора и соединений между компонентами. Наконец, организация функционирования определяет то, как компоненты взаимодействуют друг с другом при выполнении вычислений.
Команды бывают разных типов: "регистр <- регистр, регистр", "регистр <регистр, память", "регистр <— память, память", "память «- память, память", "память <— регистр, память", "регистр <- память", "память <— регистр" и др. Тип команды определяется тем, откуда берутся операнды и куда помещается результат. Так, в команде типа "регистр <- регистр, регистр" источниками операндов служат регистры, и регистр же используется для сохранения результата.
Команды делятся на два класса: скалярные и векторные. Команда называется скалярной, если ее входные операнды и результат являются числами (скалярами).
Команда называется векторной, если входные операнды и, возможно, результат являются вектором (массивом) чисел, а для преобразования данных массива (вектора) используется одна векторная команда. Примерам векторной команды служит команда, при выполнении которой умножаются два очередных элемента двух массивов, далее произведение суммируется с содержимым некоторого заданного регистра, после чего модифицируются адреса памяти для доступа к двум очередным элементам массивов. Указанная последовательность действий повторяется заданное число раз по счетчику, определенному в теле команды.
Само появление векторных команд обусловлено стремлением ускорить обработку массивов данных за счет исключения затрат времени на выборку и дешифрацию команд обработки, одинаковых для всех компонентов входных массивов.
Однако использование векторных команд требует подготовки программистом векторизованного кода программ, что, вообще говоря, эквивалентно разработке параллельных программ.
Резонно возникает вопрос, а существует ли оптимальная архитектура процессора и будет ли таковая когда-нибудь создана? Исторически архитектуры процессоров возникали в результате осмысленного выбора, исходя из предполагаемого набора задач, которые должны были исполняться на этих процессорах, и преемственности разработанных программ. И, хотя будет рассмотрена проблема стандартизации архитектур, по-видимому, до появления единой архитектуры процессора еще достаточно далеко. Имеющиеся в распоряжении разработчиков процессоров аппаратные ресурсы позволяют собрать в одном процессоре все известные архитектурные приемы повышения производительности, сообразуясь только с их взаимной совместимостью.
Прерывание
В разд. 1.1.4 были рассмотрены два компонента компьютера: процессор и память. Третьим компонентом служат устройства ввода/вывода, называемые также внешними устройствами, через которые в компьютер поступает информация: программы и данные. Разнообразие внешних устройств достаточно широко, и обсуждение их особенностей не входит в задачу настоящей книги. Однако взаимодействие устройств с процессором и памятью носит общий для них всех характер, обусловленный необходимостью синхронизации действий процессора и внешних устройств по отношению к памяти.
Следует отметить, что термин "компьютер" устойчиво заменил более длинный "вычислительная машина". Использование составных терминов со ело-
вами "машина" и "система", не добавляя смысла, вносит излишнюю сложность в языковые конструкции.
Вообще говоря, возможен программный ввод/вывод, при котором организация ввода/вывода не требует расширения ранее уже введенных концептуальных понятий. Для программного ввода и вывода выделяются соответственно по два регистра, один из которых служит для хранения элемента данных, а другой для хранения бита готовности. При этом процессор и внешнее устройство исполняют следующий протокол.
Если внешнее устройство готово к передаче данных в память, в дальнейшем будем использовать термин "хочет передавать данные", то оно анализирует состояние бита готовности регистра ввода процессора. Будем полагать, что если бит готовности равен I, то процессор еще не считал предыдущий элемент данных, внесенный внешним устройством, и устройство должно ждать, пока процессор считает этот элемент данных и установит значение 0 бига готовности регистра ввода. При обнаружении внешним устройством значения 0 бита готовности регистра ввода устройство может записывать в регистр ввода очередной элемент данных.
Аналогично, при выводе данных из процессора внешнее устройство анализирует значение бита готовности регистра вывода. Если этот бит равен 1, то внешнее устройство может забирать элемент данных из регистра вывода, после чего оно должно установить бит готовности регистра вывода равным 0. Соответственно процессор должен проверять значение бита готовности регистра вывода и заносить данные в регистр вывода только при значении бита готовности, равном 0. При значении бита готовности, равном 1, процессор должен ждать освобождения внешним устройством регистра вывода. Программный ввод/вывод предполагает, что процессор исполняет программу, в которой с предусмотренной периодичностью выполняются условные команды перехода, анализирующие значения битов готовности регистров ввода и вывода. Этот анализ, например, может осуществляться командой условного перехода, которая при значении бита готовности регистра вывода, равном I, выполняет переход на саму себя. Эта команда будет выполняться в таком "зацикленном" режиме до тех пор, пока внешнее устройство не за= берет данные из регистра вывода и не установит бит готовности равным 0. Обнаружив это при очередном исполнении, команда перехода передаст управление следующей за ней команде, которая служит первой командой участка программы, продолжающего вывод элементов данных.
Конечно, можно представить себе гармоничное взаимодействие процессора и внешнего устройства, когда участки программы, выполняющие проверку битов готовности и ввод/вывод данных, так размещены по телу программы, что внешнее устройство успевает к очередной проверке записать или считать очередной элемент данных. Но такой учет соотношения быстродействия процессора и внешних устройств требует больших затрат и повторного
программирования при изменении характеристик внешних устройств и процессоров. Однако более важным обстоятельством, препятствующим возможности такой гармоничной организации, служи! непредсказуемость времени выполнения участков программы, содержащих команды условных переходов, передающих управление в зависимости от обрабатываемых данных, и непредсказуемость времени срабатывания внешних устройств.
Таким образом, организация программного ввода/вывода сопряжена с потерями времени, обусловленными выполнением команд условного перехода, служащими только для синхронизации процессора и устройств ввода/ вывода.
Для того чтобы избежать выполнения этих лишних команд условного перехода, была введена концепция прерывания. Суть ее состоит в том, что процессор на шаге алгоритма "выборка из памяти очередной команды" прежде, чем выбирать очередную команду, анализирует значения битов готовности регистров ввода/вывода. Если при этом обнаруживается, что необходимо произвести ввод или вывод очередного элемента данных, то наступает прерывание: текущее значение счетчика программ переписывается в некоторый регистр, а затем в счетчик команд заносится адрес первой команды программы обработки прерывания, выполняющей ввод или вывод элемента данных. Последняя выполняемая команда программы обработки прерывания пересылает сохраненное значение в счетчик команд, возвращая тем самым процессор к исполнению прерванной программы.
Программа обработки прерываний и прерываемая программа используют одно и то же множество регистров процессора, и поэтому при прерывании должны также, наряду со счетчиком команд, сохраняться значения регистров. Это может быть выполнено либо как составная часть алгоритма процессора при соответствующих затратах оборудования, либо как часть программы обработки прерывания. В последнем случае эта программа должна при инициации своей работы сохранить в памяти значения регистров, а по завершении работы вернуть регистрам сохраненные значения.
Для временного хранения значений счетчика команд и других регистров используются ячейки памяти. Ясно, что программы не должны использовать эту область памяти для хранения в ней своих данных, иначе они будут утрачены при обработке прерываний. Обычно эта область памяти организуется как стек, для чего снабжается специальным регистром SP (Stack Pointer — указатель стека), служащим указателем на первую свободную ячейку памяти этой области. При записи в стек значение регистра SP увеличивается на число, равное количеству записанных ячеек, при чтении, соответственно, указатель стека уменьшается на количество прочитанных ячеек.
Исполнение процессором команд одной программы называется протеканием вычислительного процесса. Сохраняемые значения счетчика команд и
других регистров образуют контекст процесса. Размещение контекстов процессов в стеке позволяет организовать многоуровневое прерывание, при котором в программах обработки прерываний также допускаются прерывания.
Организация многоуровневой памяти компьютера
Процессор в том виде, как он представлен, вполне работоспособен логически, и даже представляет собой идеальный процессор, с которым хотел бы иметь дело каждый программист. Однако в действительности процессоры имеют более сложную архитектуру, что обусловлено особенностями используемой для их построения элементной базы. Увеличение производительности процессоров достигается за счет повышения тактовой частоты логических элементов и элементов памяти, а также количества этих элементов, позволяющих вводить параллелизм и конвейерность обработки данных в процессоре. Для каждого уровня развития элементной базы существуют ограничения по верхнему пределу тактовой частоты и количеству элементов, обусловленные физическими особенностями распространения электрических импульсов, надежностью элементов и стоимостью процессора.
К числу ограничений относится также всегда существовавший разрыв между быстродействием логических элементов и элементов памяти. Этот разрыв имеет тенденцию к увеличению при возрастании степени интеграции (количества элементов в единице объема) и быстродействия элементной базы. Поэтому в основе архитектуры всех типов процессоров должны лежать идеи, позволяющие при принятых допущениях об организации вычислений преодолеть отрицательное влияние на производительность медленной по сравнению с процессором памяти.
Память может быть реализована на основе использования разных физических принципов хранения информации: логических схем (триггеров), конденсаторов и токовых ключей, магнитных доменов, соответственно в виде регистров, микросхем статической памяти, микросхем динамической памяти, ферритовой, дисковой памяти и других типов блоков памяти. Каждый тип памяти имеет характерные для него быстродействие и объем, обусловленный физическими и стоимостными ограничениями. Кроме того, для любого типа памяти при увеличении объема памяти возрастает время доступа к ней, а также более быстродействующий тип памяти имеет большую стоимость хранения единицы информации.
Идеальная память должна обеспечивать процессор командами и данными так, чтобы не вызывать простоев процессора в ожидании запрошенных из памяти данных. При этом память должна иметь большую емкость. В современных условиях уменьшение времени доступа достигается введением многоуровневой иерархии памяти.
Время доступа зависит от объема и типа используемой памяти. В этих условиях, построив двухуровневую память, в которой помимо большой основной памяти имеется небольшая более быстрая буферная память, можно пересылать данные для обработки в буферную память, там их обрабатывать, используя память с меньшим временем доступа по сравнению с основной памятью, а после обработки — отправлять обратно в основную. Если удается организовать вычисления так, что за время обработки одной порции данных можно доставить из основной памяти в буферную другую порцию данных, то обработка выполняется с использованием только быстрой памяти. Ясно, что гак организовать вычисления удастся далеко нс всегда. Поэтому возможны простои процессора в ожидании необходимых данных из основной памяти. Однако для ряда задач совмещение обработки данных в буферной памяти и пересылки данных между буферной и основной памятью дает эффект сокращения времени доступа в память. Иными словами, память для процессора представляется как память большого объема, равного объему основной памяти, имеющая быстродействие такое, как у быстродействующей памяти малого объема.
Этот эффект уменьшения времени доступа в память достигается при специальном способе программирования, обеспечивающем локализуемость обрабатываемых данных, когда процессор многократно использует одни и те же данные для выработки результата.
Соответственно, реализуя основную память двухуровневой памяти как иерархическую двухуровневую, можно построить трехуровневую иерархическую память, и, продолжая это построение дальше, — память с произвольным числом уровней иерархии.
В процессорах применяются три механизма работы с памятью, основанные на использовании локализуемое™ обрабатываемых данных: кэш-память, страничная или сегментная память и расслоение памяти. *1
3 ’
Кэш-память
В связи с тем, что локально обрабатываемые данные могут возникать в динамике вычислений и не быть сконцентрированными в одной области при статическом размещении в основной памяти, буферную память организуют как ассоциативную, в которой данные содержатся в совокупности с их адресом в основной памяти. Ассоциативная память позволяет выбирать среди хранящихся в ней элементов данных те, которые имеют совпадающие с шаблоном выборки, называемых ключом, значения разрядов [1|. Например, если ключ имеет значение 1 в третьем разряде и значение 0 в пятом, то при выборке будут найдены все ячейки ассоциативной памяти, в которых третий разряд равен 1, а пятый равен 0.
Обращение к такой памяти с использованием поля адреса как ключа позволяет выбрать данные независимо от места их расположения в ассоциативной памяти. Хранение адресов вместе с данными позволяет однозначно идентифицировать данные их адресами при передаче между уровнями памяти и легко находить данные на любом уровне памяти. Такая буферная память получила название кэш-памяти. Кэш-память позволяет гибко согласовывать структуры данных, требуемые в динамике вычислений, со статическими структурами данных основной памяти.
Кэш-память имеет совокупность строк (cache-lines), каждая из которых состоит из фиксированного количества адресуемых единиц памяти (байтов, слов), хранящихся в основной памяти как ячейки с последовательными адресами. Типичный размер кэш-строки: 16, 64, 128, 256 байтов.
Так как в кэш-памяти находятся копии ячеек основной памяти, работа с кэш-памятыо при доступе к памяти по чтению и записи различается. Чтение данных из кэш-памяти не вызывает никаких проблем. Данные, если они есть в кэш-памяти, передаются процессору. В этом случае говорят о попадании (hit) процессора в кэш-память. Если копии данных с требуемым адресом нет в кэш-памяти, то говорят о промахе (miss) процессора и выполняют доставку копии требуемых данных в кэш-память.
Однако в случае доступа по записи должна быть обеспечена когерентность (согласованность) кэш-памяти и основной памяти: соответствие между данными в оперативной памяти и кэш-памяти, обеспечиваемое внесением изменений в те области оперативной памяти, данные которых в кэш-памяти подверглись модификации. Когерентность данных обеспечивается параллельно с основными вычислениями. Существует несколько способов ее реа» лизации и, соответственно, несколько режимов работы кэш-памяти.
'у Один, самый простой в реализации, но не самый эффективный по быстро' действию, способ предполагает внесение изменений в основную память сра
зу после изменения данных в кэш-памяти. При этом процессор простаивает в ожидании завершения записи в основную память. В основной памяти поддерживается правильная копия данных кэш-памяти, и при замене строк не требуется никаких дополнительных действий. Кэш-память, работающая в таком режиме, называется памятью со сквозной записью (write-through).
^Другой способ предполагает отображение изменений в основной памяти 'только в момент замены кэш-строки в кэш-памяти. Если данные по адресу памяти, в который необходимо произвести запись, находятся в кэш-памяти, то идет запись только в кэш-память. При отсутствии данных в кэш-памяти производится запись сразу в основную память. Такой режим работы кэшпамяти получил название "обратная запись" (write-back).
Существуют также промежуточные варианты (buffed write though), при которых запросы на изменение в основной памяти буферизуются и не задерживают процессор на время операции записи в память. Эта запись вы-
полняется по мере возможности доступа контроллера кэш-памяти к основной памяти.
Наиболее часто используются три способа организации кэш-памяти, отличающиеся объемом аппаратуры, требуемой для их реализации. Это так называемые: кэш-память с прямым отображением (direct-mapped cache), множественно ассоциативная кэш-память (set-associative cache) и ассоциативная кэш-память (fully associative cache).
При использовании кэш-памяти с прямым отображением адрес каждой ячейки основной памяти представляется как набор трех полей, составляющих группы старших, средних и младших разрядов адреса, соответственно поля "тег", поля "номер кэш-строки", поля "смешение". Например, при 16- разрядном адресе старшие 5 разрядов могут представлять тег, следующие 7 разрядов — номер кэш-строки и последние 4 разряда — смешение в кэш- строке. В этом случае кэш-строка содержит значения последовательности 16-ти ячеек основной памяти в порядке возрастания их адресов.
Кэш-память с прямым отображением представляет собой набор кэш-строк, каждая из которых содержит компонент тег и элементы памяти кэш-строки, адрес которых идентифицируется смешением относительно начала кэш- строки. В случае приведенного примера общее количество кэш-строк в кэшпамяти равно 27 или 128.
При этом устанавливается однозначное соответствие между адресом элемента основной памяти и возможным расположением этого элемента в кэшпамяти, а именно: элемент памяти всегда располагается в кэш-строке, задаваемой полем "номер строки" адреса, и находится на позиции строки, задаваемой полем "смещение" адреса.
При обращении процессора к памяти возможны только две ситуации: содержимое ячейки памяти с заданным в запросе адресом либо находится в кэш-памяти, либо нс находится. В первом случае говорят о попадании (hit) в кэш-память, во втором — о промахе (miss) в кэш-память.
Проверка того, что имеет место: попадание или промах в кэш-память определяется анализом значения тега кэш-строки, номер которой равен значению поля "номер строки" адреса. Если тег строки кэш-памяти равен полю "тег" адреса, то элемент данных содержится в кэш-памяти. В этом случае адресуемая ячейка памяти имеет копию значения в кэш=строкс в позиции, определяемой полем "смешение" адреса.
В случае если тег соответствующей строки кэш-памяти не совпадает с полем тега адреса, необходима подкачка в кэш-память строки с заданным в адресе тегом. В случае кэш-памяти с обратной записью требуемая кэш-строка просто подкачивается из основной памяти. При использовании кэш-памяти с буферизированной и обратной записями прежде, чем подкачивать кэш- строку, требуется передать в основную память все модифицированные пре-
дыдущими записями кэш-строки. Только после этого требуемая кэш-строка может быть переслана в кэш-память. Иначе результаты предыдущих команд записи будут потеряны.
Так как для определения наличия нужной строки данных в кэш-памяти требуется только одно сравнение тегов заданной строки и адреса, а само замещение строк выполняется по фиксированному местоположению кэш-строки в кэш-памяти, то объем оборудования, необходимый для реализации этого типа кэш-памяти, достаточно мал.
Недостатки этой организации очевидны. Если программа использует поочередно ячейки памяти, адреса которых имеют одно и то же значение поля "номер строки", но разные значения поля "тег", то это вызывает при каждом обращении замену кэш-строки с обращением к данным основной памяти.
Ассоциативная кэш-память использует двухкомпонентное представление адреса: группа старших разрядов трактуется как тег, а группа младших разрядов — как смещение в кэш-строке.
Нахождение строки в кэш-памяти определяется совпадением тега-строки со значением тега адреса. Количество строк в кэш-памяти может быть произвольным (естественное ограничение — количество возможных значений тегов). Поэтому при определении нахождения требуемой строки в кэшпамяти необходимо сравнение тега адреса с тегами всех кэш-строк кэшпамяти. Если выполнять это последовательно, строка за строкой, то время выполнения сравнений будет непозволительно большим. Поэтому сравнение выполняется параллельно во всех строках с использованием принципов построения ассоциативной памяти, что и дало название этому способу организации кэш-памяти.
При отсутствии необходимой строки в кэш-памяти одна из его строк должна быть заменена на требуемую. Используются разнообразные алгоритмы определения заменяемой строки, например циклический, замена наиболее редко используемой строки, замена строки, к которой дольше всего не было обращений, и др.
Достоинства ассоциативной кэш-памяти очевидны. Недостаток — сложность организации ассоциативного поиска, предполагающая использование достаточно большого объема оборудования, что ограничивает объем кэшпамяти.
Множественно-ассоциативная кэш-память комбинирует оба описанных подхода: кэш-память состоит из набора ассоциативных блоков кэш-памяти. Средний компонент адреса задает, в отличие от прямо адресуемой кэшпамяти, не номер строки, а номер одного из ассоциативных блоков. При поиске данных ассоциативное сравнение тегов выполняется только для набора блоков (возможна организация кэш-памяти, когда таких наборов несколько), номер которого совпадает со средним компонентом адреса. По
количеству н ассоциативных блоков кэш-память называется и-входовой. Обычно я выбирается равным 4 и более, в разумных пределах.
Современная типовая иерархия памяти для однопроцессорных архитектур выглядит следующим образом:
регистры 64—256 слов со временем доступа I такт процессора;
кэш первого уровня — 32 Кбайт с временем доступа 1—2 такта;
кэш второго уровня — 256 Кбайт с временем доступа 3—5 тактов;
основная память — до 4 Гбайт с временем доступа 12—55 тактов.
Страничная организация памяти
Еще одним, после использования кэш-памяти, способом достижения эффекта сокращения времени доступа в основную память за счет локализации обрабатываемых данных служат страничная или сегментная организация памяти [5], предоставляющая программе виртуальную память много большего объема, чем объем используемой физической памяти. Отличие между страничной и сегментной организацией заключается в том, что страницы имеют фиксированный размер, а сегмент может быть произвольного размера, что требует при работе с сегментами учета их длины.
Если бы программа использовала физическую память с объемом, равным объему виртуальной памяти, время доступа было бы много больше, чем к реально используемой физической памяти (не говоря о самой возможности реализации и цене такой большой физической памяти).
Память делится на страницы, размер которых обычно 2"' байт, обычно 6<т< 12. При этом основная часть страниц или сегментов хранится во внешней, чаще всего, дисковой памяти, а в физической основной памяти размещаются страницы, содержащие обрабатываемые в текущий момент данные. Именно локализация данных позволяет получить сокращение времени вычислений, несмотря на потери времени, вызванные пересылкой страниц между основной памятью и внешней дисковой памятью.
Команды процессора используют виртуальные адреса, состоящие из двух полей: поля "page №" номера виртуальной страницы и поля "offset" адреса ячейки памяти в странице.
Каждому процессу, протекающему на процессоре, сопоставляется таблица PT (page table) отображения страниц. Эта таблица имеет количество строк, равное, максимальному числу страниц памяти, допустимому для использования программой.
Наряду с такими ранее введенными в контекст процесса регистрами, как счетчик команд PC, указатель стека SP, специально для организации страничной виртуальной памяти вводится регистр — указатель на таблицу стра-
ниц процесса РТР (page table pointer). Контекст процесса и таблица отображения страниц создаются средствами операционной системы процессора при запуске программы на исполнение.
Каждая строка таблицы отображения страниц соответствует одной виртуальной странице и может быть выбрана с использованием поля "page №" виртуального адреса.
Строка таблицы состоит из следующих полей, показанных на рис. 1.11:
V — бит отображения;
С — бит модификации страницы;
RWX — права доступа к странице;
М — бит размещения страницы;
Р — биг разрешения кэширования страницы;
РА — физический адрес страницы.
Физический адрес
Рис. 1.11. Организация отображения виртуальных адресов в физические адреса
Бит отображения V определяет, задано или нет отображение виртуальной страницы с номером "page №" виртуального адреса. Например, если отображение задано V = 0. Если V = I, то информация строки с номером "page №"
виртуального адреса произвольна и не задает отображения. При обращении к памяти с таким виртуальным адресом активизируется механизм задания отображения виртуальной памяти на физическую.
Бит модификации страницы С используется для повышения эффективности работы со страницами. Так, при загрузке страницы с диска в основную память этому биту, например, присваивается значение 0. Если содержимое страницы изменяется хотя бы одной командой записи, то бит С становится равным I. При выгрузке страницы из основной памяти на диск проверяется значение этого бита. Если он равен 0, то пересылка страницы не нужна.
Права доступа к странице определяют, какие действия могут быть выполнены по отношению к этой странице, например:
R = I — содержимое страницы доступно для использования командами чтения, R = 0 — содержимое страницы не может быть прочитано;
W = 1 — содержимое страницы доступно для использования командами записи, W = 0 — запись в ячейки страницы запрещена;
X = 1 — в страницу разрешены и запись, и чтение.
Доступ к виртуальной памяти признается корректным, если поле RWX контекста процессора совпадает с полем RWX страницы.
Бит М размещения страницы указывает, расположена страница в основной памяти или на диске. Например, при М = I страница расположена в основной памяти и поле РА (physical address) в этом случае задает старшую часть физического адреса основной памяти. В случае М = 0 страница находится на диске, и поле РА задает место на диске, где находится страница. При обращении к этой странице, она будет считана в основную память. После чего соответствующий адрес ее размещения будет внесен в поле РА и установлено значение бита М, равное 1.
Наконец, бит Р разрешения кэширования страницы служит для повышения эффективности работы с иерархической памятью. Например, пользователь, зная свою программу, может запретить копирование кэш-строки в кэшпамять, т. к. ему требуется прочитать и записать только одну ячейку памяти во всей кэш-строке. В этом случае пересылка кэш-строки будет заведомо лишним действием.
Для того чтобы завершить рассмотрение страничной организации памяти, отметим, что рассмотренный механизм при логической работоспособности достаточно не эффективен, т. к. требует двух обращений в память для доступа с использованием виртуального адреса. Первый доступ необходим для работы с таблицей, второй — собственно для доступа к данным.
Для того чтобы ускорить трансляцию виртуальных адресов в физические, вводится специальный ассоциативный буфер истории трансляции TLB (translation look-aside buffer). Этот буфер содержит N строк, каждая из кото-
рых состоит из виртуального номера страницы и номера соответствующей физической страницы. В буфере размещаются отображения для N виртуальных страниц, номера которых использовались для последних по времени обращений к памяти. Тем самым для локализованных обращений к памяти создаются условия для быстрой трансляции виртуальных адресов в физические, без затрат на время выборки из таблицы страниц. Понятно, что N не Может быть достаточно большим в силу того, что буфер должен быть быстрым, и объем оборудования на его построение, как правило, ограничен.
Поэтому если обнаруживается, что в буфере истории трансляции TLB нет требуемого виртуального адреса или для него нс задано отображение в физический адрес, то запускается описанный механизм определения отображения виртуального адреса в физический. Полученный физический адрес вместе с соответствующим ему виртуальным адресом затем заносится в буфер TLB. При этом если буфер был полон, то в нем определяс1ся исключаемое отображение одного из виртуальных адресов в соответствующий ему физический. Выбор этого виртуального адреса может производиться по разным алгоритмам. Например, это может быть адрес, к которому реже всех обращались, либо случайно выбранный адрес и т. д.
Следует отметить, что в процессорах широко используется рассмотренный метод ускорения реализации различных отображений путем введения ассоциативного буфера для хранения таблиц отображения, требующего для своего выполнения существенных затрат времени.
В идеале, локализацию данных программ, написанных на языках программирования, выполняет компилятор, учитывающий особенности аппаратных механизмов пересылки данных между уровнями памяти и отображения страниц. Однако не все пользователи удовлетворяются эффективностью, обеспечиваемой компилятором, поэтому вводятся команды процессора и операционной системы, обеспечивающие управление пересылкой данных между уровнями памяти и размещением страниц в основной памяти.
Расслоение памяти
Расслоение памяти также использует одну из форм локальности обрабатываемых данных, а именно: последовательность обращений к памяти с фиксированным порядком используемых адресов, например, следующий адрес вычисляется как сумма предыдущего и некоторого фиксированного смещения d, чаще всего равного I. При фиксированном порядке обращений память может быть построена как многоблочная, в которой блок к, к = 0, ..., л-1, где п — число блоков памяти, называемое степенью расслоения, используется для хранения данных, требуемых при обращениях к + / х n, i = О, 1, ... Так как любые п последовательных обращений к памяти адресуются в
разные блоки, то они могут выполняться параллельно. Следовательно, создается эффект сокращения времени доступа в память большого объема.
В этом случае возможно п параллельных обращений в память по адресам, принадлежащим различным блокам. Поэтому выборка команд программы, за исключением команд, выбираемых как результат ветвления, может быть ускорена применением расслоения памяти. Аналогично может быть ускорена обработка массивов данных, последовательные элементы которых помещаются в разные блоки памяти.
Многоуровневая иерархия и расслоение памяти могут использоваться совместно.
Микропроцессоры
Собственно читатель уже осознал, что, начав с простого процессора как схемной реализации алгоритма, управляющего порядком исполнения команд, которые, в свою очередь, управляют передачами данных между регистрами, памятью и функциональными устройствами, он, читатель, достаточно быстро столкнулся с ростом сложности процессоров. Эта сложность обусловлена архитектурно-структурными решениями, которые придуманы и осуществлены создателями компьютеров для повышения производительности процессоров. Уникальность этих решений состоит в том, что они позволяют преодолеть разрыв в быстродействии между памятью и логическими элементами, использовать ограниченный объем оборудования, рационально распределив это оборудование между блоками процессора для максимизации производительности.
До 90-х годов прошлого века для построения процессоров использовалась дискретная элементная база (электронные лампы, транзисторы, резисторы и конденсаторы, соединяемые проводниками для образования требуемой схемы) или схемы малой и средней интеграции (элементы, содержащие объем оборудования, эквивалентный требуемому для создания нескольких триггеров). Трудоемкость изготовления процессора, состоящего из десятков тысяч дискретных элементов, надежность этого образования, потребление электрической энергии и отвод тепла ставили достаточно жесткий предел совершенствованию процессоров.
Векторно-конвейерные процессоры, начало производства которых связано с построением CRAY-1 [6], венчали развитие процессоров, строящихся из дискретных компонентов. Основная идея архитектуры этих процессоров состоит в том, что, если нельзя ускорить выполнение всех команд, выбирается группа команд, которые допускают ускорение. Если удается возложить на команды этой группы существенную долю вычислений, то достигается эффект общего ускорения вычислений. В векторно-конвейерных процессорах
в качестве таковых были использованы векторные регистры и векторные команды. Векторные регистры представляют собой быстродействующий буфер, наполняемый перед запуском векторной команды или последовательности сцепленных векторных команд. Содержимое векторных регистров служит операндами векторных команд. Архитектура векторно-конвейерных процессоров представляется оптимальной по критерию "производитель- ность/объем оборудования" для дискретной элементной базы.
В 70-х годах прошлого века наряду с полнофункциональными процессорами, строящимися на схемах малой и средней интеграции, как следствие развития больших интегральных схем появились микропроцессоры с малым количеством регистров ограниченной длины (4, 8) разрядов.
Сначала эти микропроцессоры были "микро" и по объему памяти, и по производительности, но повышение степени интеграции элементной базы к середине 90-х годов сделало возможным постепенно реализовать на одном кристалле микропроцессор, воплощающий все способы повышения производительности процессоров, развитые в рамках традиционных однопроцессорных подходов. Однокристальные микропроцессоры существенно превзошли по соотношению производительность/стоимость специально разрабатываемые уникальные многокристальные процессоры. Особенности проектирования и изготовления СБИС, в том числе и микропроцессоров, делают экономически оправданным только их массовое производство (млн штук), что практически исключило возможность создания специализированных кристаллов (сотен или тыс. штук) для конкретных проектов многокристальных процессоров. Кроме того, сложилась ситуация, когда специально спроектированный многокристальный процессор на момент начала проектирования имеющий экстремальные оценки производительности, после своего изготовления, потребовавшего ряда лет, существенно уступал коммерчески доступным в это время серийным универсальным микропроцессорам.
Массово выпускаемые высокопроизводительные микропроцессоры послужили базой создания персональных компьютеров, рабочих станций и параллельных суперкомпьютеров, произведших революцию в информатизации общества. Эта ситуация произвела такое сильное впечатление на современников, что даже появился термин "микропроцессоры-убийцы" [7], который как раз отражал тот факт, что микропроцессоры стали использоваться для производства всех типов компьютеров и вычислительных систем.
Поэтому в настоящее время термины "микропроцессор" и "процессор" обозначают одну и ту же сущность, и с большой степенью правильности можно считать, что никаких других процессоров, кроме микропроцессоров, не существует. Собственно в этом заключается вторая часть ответа на вопрос, поставленный в начале главы.
1.2. Перспективы микроэлектронного производства
Сверхбольшие интегральные схемы
Современная элементная база — сверхбольшие интегральные схемы (СБИС) — характеризуется большим числом транзисторов на кристалле и относительно малым числом выводов у корпуса. Поэтому БИС адекватны построению логически законченных устройств,
В настояшес время в основном используются СБИС, создаваемые по КМОП-технологии. В рамках этой технологии электронные схемы создаются из компонентов, представляющих собой прямоугольные или многоугольные области полупроводников с различными типами проводимости, проводников (металла и поликремния), а также диэлектрика, изолирующего области друг от друга. В качестве диэлектрика используется окисная пленка диоксида кремния (SiO?). На рис. 1.12 показаны принципиальная электрическая схема, поперечное сечение и топология инвертора [8|, реализующего вентиль НЕ.
а
Рис. 1.12. Логическая схема вентиля НЕ и ее реализация в интегральной схеме: а — схема инвертора
Диффузионная область истока/стока р-канального МОП-транзистораВыходр-карманДиффузионная область истока/стока п-канального МОП-транзистораДиффузионная область истока/стока р-канального МОП-транзистораВыходр-карманДиффузионная область истока/стока п-канального МОП-транзистораввРис. 1.12. Логическая схема вентиля НЕ и ее реализация в интегральной схеме: б — срез фрагмента кремниевой пластины; в — топология инвертораРис. 1.12. Логическая схема вентиля НЕ и ее реализация в интегральной схеме: б — срез фрагмента кремниевой пластины; в — топология инвертора
Диффузионная область истока/стока р-канального МОП-транзистора
Выход
р-карман
Диффузионная область истока/стока п-канального МОП-транзистора
Диффузионная область истока/стока р-канального МОП-транзистора
Выход
р-карман
Диффузионная область истока/стока п-канального МОП-транзистора
в
в
Рис. 1.12. Логическая схема вентиля НЕ и ее реализация в интегральной схеме: б — срез фрагмента кремниевой пластины; в — топология инвертора
Рис. 1.12. Логическая схема вентиля НЕ и ее реализация в интегральной схеме: б — срез фрагмента кремниевой пластины; в — топология инвертора
Схема инвертора, приведенная на рис. 1.12, о» состоит из двух МОП-транзисторов с каналами р- и «-типов, стоки которых соединены с выходом. Собственно в использовании двух типов МОП (Металл, Окисел, Полупроводник) транзисторов и заключается комплементарность КМОП-техноло-
гии. Если на вход схемы будет подан уровень "земля", нижний транзистор окажется закрытым, а верхний — открытым, что обусловит появление на выходе схемы уровня "питание". Соответственно, если на входе схемы будет уровень "питание", то на выходе окажется уровень "земля", т. к. верхний транзистор будет закрыт, а нижний — открыт. Таким образом, уровень на выходе всегда инвертированный по отношению к входному в соответствии с логикой работы вентиля НЕ.
На рис. 12, б показан схематично срез фрагмента кремниевой пластины, на которой сформированы области полупроводника с р- и л-типами проводимости и затворы транзисторов, выполненные из поликремния. Соответствующая топология инвертора приведена на рис. 1.12, в.
Таким образом, транзисторы формируются как многослойная структура из областей истока и стока, отделенных диэлектриком от области затвора. Для соединения схем, реализующих вентили, между собой при формировании блоков цифрового устройства и устройства в целом используются металлические проводники, разводимые в специально предназначенных для этого слоях, разделенных диэлектриком.
В общих чертах формирование микросхемы выглядит так. Из расплава чистого кремния вытягивается монокристалл кремния цилиндрической формы. Этот цилиндр режется на пластины толщиной около 0,6 мм и диаметром 200 мм (сейчас происходит переход к пластинам диаметром 300 мм). Поверхность этой достаточно тонкой пластины полируется, а затем покрывается защитной пленкой диоксида кремния SiO2 в кислородной среде при высоких температуре и давлении.
Для образования областей полупроводников с р- и //-проводимостями применяется следующая технология. Пластина покрывается слоем фоторезиста — материала, исходно стойкого к воздействию реагента, используемого для травления, но теряющего это свойство после обработки светом определенной длины волны. При проектировании микросхемы изготавливаются фотошаблоны, каждый из которых соответствует, фактически, слою микросхемы и имеет отверстия в форме областей, обрабатываемых на этом слое. На каждом этапе изготовления микросхемы используется определенный шаблон. Шаблон накладывается на пластину, покрытую фоторезистом, после чего на нее направляется световой поток. Те области пластины, где фоторезист был закрыт шаблоном, остаются неизменными, а области, подвергшиеся воздействию света, растворяются при воздействии реагента, используемого при травлении. В современном технологическом процессе используется сухое травление, при котором пластина обрабатывается ионизированным газом, образующим при химической реакции с диоксидом кремния летучие соединения. Поэтому после сухого травления пластины пленка диоксида кремния остается там, где был незасвеченный фоторезист, и удаляется в областях, подвергшихся засветке.
Далее с пластины удаляется оставшийся фоторезист, и пластина готова к следующей технологической операции по внесению в кремниевую подложку путем диффузии донорной или акцепторной примеси. В результате диффузии атомы примеси равномерно внедряются в кристаллическую решетку кремния, образуя область полупроводника с требуемым типом проводимости.
Соответственно, если требуется внутри области с одним типом проводимости создать область с другим типом проводимости, то повторяется описанный процесс: покрытие окисной пленкой и пленкой фоторезиста, засветка под соответствующим шаблоном, образование окон для доступа к областям, в которые должна быть проведена диффузия заданной примеси.
После формирования полупроводниковых структур транзисторов необходимо связать их проводниками для образования схемы. В связи с тем, что в микросхеме может быть создан только планарный слой проводников без пересечения разных соединений, то для формирования сложной схемы соединений используется несколько слоев проводников с межслойными переходами, соединяющими между собой участки одного соединения, реализованные в разных слоях. Для того чтобы иметь быстродействующую схему и снизить энергопотребление, в современных микропроцессорах требуется более шести слоев металлизации. Важность увеличения количества слоев для формирования сложной схемы соединений на кристалле демонстрирует следующий пример. В процессоре Pentium 4 с ядром Northwood используется 55 млн транзисторов, размешенных на площади 145 мм2 при шести слоях металлических проводников, а в процессоре Athlon ХР при девяти слоях металлизации 54,3 млн транзисторов занимают площадь только 101 мм2.
Для формирования слоя проводников применяется, по крайней мере, одна из двух технологий. При первой технологии каждый слой проводников формируется следующим образом. Пластина покрывается тонким слоем окисла, затем там, где должен быть электрический контакт, слой окисла удаляется травлением, после чего на пластину наносится слой металла, например алюминия. Далее этот слой металла покрывается фоторезистом, который засвечивается под шаблоном, не допускающим засветки того, что в последствии будет соединением. Металл, покрытый засвеченным фоторезистом, удаляется травлением, что приводит к формированию требуемого слоя соединений. При этой технологии возникает следующая проблема, препятствующая увеличению количества слоев металлических соединений. После формирования очередного слоя металлических проводников поверхность пластины перестает быть плоской, и на ней выделяются возвышенности, соответствующие рельефу сформированных соединений. При нанесении слоя окисла соответствующей толщины возможно путем последующего шлифования добиться более или менее плоской поверхности, но этот процесс достаточно трудоемок. Если же поверхность пластины недостаточно
искажается, что ведет к изменению параметров формируемых соединений, вплоть до их разрыва.
Другой технологический процесс формирования соединений, разработанный применительно к получению медных проводников, состоит в том, что посредством засвечивания фоторезиста в слое окисла образуются канавки там, где должны быть проложены медные проводники. Далее на поверхность пластины методом электронного осаждения наносится слой меди. Затем путем шлифования пластины вплоть до достижения слоя окисла добиваются того, что медь остается только в заранее сформированных канавках. При этом технологическом процессе поверхность пластины вследствие шлифования остается плоской после формирования каждого слоя проводников, что позволяет иметь большее количество слоев металлических соединений, чем при ранее представленной технологии.
Конечно, технологический процесс производства микросхем существенно сложнее, но суть его состоит именно в послойном массовом формировании на каждом слое некоторых областей из материалов, являющихся проводниками, полупроводниками и диэлектриками.
Когда видишь это рукотворное чудо: микросхему, нелишне вспомнить, что электричество зародилось как побочный продукт производства металлов для изготовления колюще-режущих изделий и "кастрюль". Именно "слоеный пирог" из двух разных металлов произвел электрический ток. Поэтому то, что микросхемы произвели информационную революцию, в каком-то смысле — виток спирали развития технологии.
При уменьшении геометрических размеров элементов транзисторов улучшаются все параметры схем: возрастает быстродействие, уменьшается удельное в пересчете на один транзистор потребление энергии, возрастает надежность. Технологический предел линейных размеров транзисторов на кристалле, обусловленный физическими ограничениями, составляет около 0,02 мкм. Современная 0,09 мкм технология, используемая при производстве микропроцессоров, в 2005 году сменится на технологию 0,065 мкм, в 2007 году будет использоваться 0,045 мкм, а в 2009 году будет достигнут уровень технологии 0,032 мкм [9].
При этом количество транзисторов на кристалле будет порядка 109—1010.
По прогнозам компаний-производителей, представленным в докладе "Перспективы развития полупроводниковых технологий, 2001 год" (Technology Roadmap for Semiconductors, 2001 Edition), дальнейшее развитие технологии производства микропроцессоров будет идти в направлении увеличения плотности транзисторов на кристалле, использования новых типов трехмерных транзисторов с тремя затворами, роста числа слоев металлизации и повышения тактовой частоты наряду с уменьшением напряжения питания и удельной (на один транзистор) потребляемой электрической и выделяемой тепловой энергии.
На пути дальнейшей миниатюризации кроме физических ограничений имеются и экономические. Для каждого следующего поколения микросхем стоимость технологии удваивается. Возрастают сроки изготовления микропроцессоров. Так, процессор Pentium производился за шесть месяцев, а следующий за ним Pentium Pro — за девять. Во многом уже сейчас уровень технологии, используемой в массовом производстве, определяется экономическими соображениями. Увеличение числа слоев металлизации экспоненциально повышает процент брака при производстве, увеличение площади кристалла микропроцессора также приводит к снижению выхода годных кристаллов.
Различные выполняемые функции и сферы применения обусловили специализацию СБИС. Достаточно условно их можно разделить на следующие классы:
СБИС с аппаратной реализацией алгоритмов обработки данных: микропроцессоры универсальные и сигнальные, а также микроконтроллеры, включая интерфейсные схемы для образования мультипроцессорных систем;
микросхемы памяти: статические и динамические;
программируемые логические интегральные схемы (ПЛИС).
Микропроцессоры и микроконтроллеры
Универсальные микропроцессоры предназначаются для применения во всех типах вычислительных установок: персональных ЭВМ, рабочих станциях, а в последнее время и в массово-параллельных суперЭВМ. Кроме того, универсальные микропроцессоры используются в телекоммуникационном оборудовании, системах автоматического управления и встроенной промышленной автоматике. Основной характеристикой этих микропроцессоров является наличие развитых устройств для эффективной реализации операций с плавающей точкой над 32- и 64-разрядными и более длинными операндами. В последнее время в состав этих микропроцессоров включаются функциональные блоки для обработки мультимедийной информации.
Цифровые сигнальные процессоры предназначены для обработки в реальном времени цифровых потоков, образованных путем оцифровывания аналоговых сигналов. Это обусловливает их сравнительно малую разрядность и преимущественно целочисленную обработку. Однако современные сигнальные процессоры способны проводить вычисления с плавающей точкой над 32—40-разрядными операндами. Кроме того, появился класс медийных процессоров, представляющих собой законченные системы для обработки аудио- и видеоинформации.
Наибольшей специализацией и разнообразием функций обладают микроконтроллеры, используемые во встроенных системах управления, в том чис-
ле в бытовых приборах. Общее число типов кристаллов с различными системами команд превышает 500, и все они, в силу существования изделий с их использованием, занимают свою устойчивую долю рынка.
Прежде, чем приступить к детальному обсуждению различных типов микропроцессоров, кратко коснемся вопросов организации микросхем памяти и ПЛИС, знание которых необходимо для лучшего понимания специфики микропроцессоров и построения компьютеров на их основе.
Микросхемы памяти
Основные виды памяти
Увеличение быстродействия микропроцессоров повышает требования к пропускным способностям остальных подсистем компьютера и, прежде всего, к быстродействию подсистемы памяти. Разработчики используют более быстродействующую и, соответственно, более дорогую память в наиболее "ответственных" узлах системы. Широко применяется многоуровневая иерархическая архитектура памяти, где на верхнем уровне иерархии расположена более быстродействующая кэш-память, в которую в процессе вычислений помещаются интенсивно используемые фрагменты программного кода и обрабатываемых данных. В реальных системах используется от одного до четырех уровней кэш-памяти. Причем кэш-память первого уровня, как правило, располагается на кристалле микропроцессора и работает с его же тактовой частотой, а кэш-память второго и следующих уровней обычно располагается вне кристалла микропроцессора и строится на базе быстродействующих микросхем памяти. Прослеживается тенденция размещения на кристалле процессора двух уровней кэш-памяти.
В настоящее время наиболее распространенными являются энергозависимые, теряющие хранимую информацию при снятии питания статические и динамические микросхемы памяти. Статические микросхемы памяти запоминают биты данных в триггерах, что требует 4—6 транзисторов для хранения бита. Динамическая память использует для запоминания бита информации состояния конденсатора "заряжен — не заряжен". Так как при этом необходим только электронный ключ для управления разрядом и зарядом конденсатора, объем оборудования для хранения бита в четыре раза меньше, чем в статической памяти. Однако динамическая память, в отличие от статической, требует регенерации, предотвращающей потерю информации из-за разряда конденсатора током утечки. Регенерация заключается в считывании состояния заряда конденсатора и восстановлении этого состояния посредством последующей записи. Регенерация требует дополнительного времени в цикле обращения к памяти, что снижает ее пропускную способность.
Динамическая память
В качестве основной на нижнем уровне иерархии памяти на сегодняшний день во многих случаях используется относительно медленная динамическая память DRAM (Dynamic Random Access Memoiy). Микросхемы памяти организованы как матрицы, ячейки памяти которых адресуются номером строки и номером столбца. Для доступа к ячейке на адресные входы микросхемы должен быть подан адрес ячейки, а затем последовательно друг за другом стробирующие импульсы RAS (Row Address Strobe) и CAS (Column Address Strobe) соответственно стробирующие адрес строки и столбца.
Наряду с памятью с произвольным доступом RAM (Random Access Memory), в прошлом широко была распространена более быстрая память со страничной организацией FPM (Fast Page Mode) DRAM. Этот тип памяти обеспечивает ускорение часто используемого в программах доступа к последовательности элементов данных благодаря расположению этих элементов в одной строке матрицы ячеек памяти.
Цикл обращения для чтения памяти DRAM начинается с активизации строки в матрице путем выдачи адреса строки и строба RAS. Затем по выдаче адреса столбца и строба CAS выполняется активизация адресуемой ячейки памяти, содержащей нужные данные. После проверки правильности каждого элемента данные, передаются в процессор. Затем столбец деактивизируется и осуществляется подготовка к следующему циклу. Это приводит к ожиданию процессором завершения цикла памяти, поскольку во время деактивизации столбца ничего не происходит. Выходной буфер данных блокируется или до начала следующего цикла, инициируемого выдачей адреса очередного столбца строки и строба CAS, или до запроса новой строки данных.
В случае быстрого страничного режима очередной столбец активизируется путем подачи CAS в предположении, что следующий элемент запрашиваемых данных находится в соседней ячейке памяти. Такая активизация следующего столбца приводит к лучшим результатам только при последовательном чтении ячеек памяти в конкретной строке.
Групповые операции обмена с памятью принято описывать формулой, содержащей количество тактов, требуемое для чтения блока данных из четырех элементов данных. Для DRAM эта формула имеет вид 5-5-5-5, для FPM DRAM — 5-3-3-3. Это означает, что для чтения каждого элемента данных в случае DRAM требуется 5 тактов шйны данных. Для FPM DRAM чтение первого элемента осуществляется также за 5 тактов, а каждый следующий элемент читается за 3 такта, поскольку считается, что следующий элемент находится в той же строке и нет необходимости передавать ее адрес.
В системах с большей тактовой частотой для надежного взаимодействия процессора с памятью используется память EDO DRAM.
Работа EDO во многом напоминает работу FPM DRAM — активизируется строка памяти, а затем активизируется ее столбец. Но после нахождения элемента данных вместо деактивизации столбца и блокирования выходного буфера (что происходит в FPM FRAM) память типа EDO сохраняет выдаваемые данные в дополнительных выходных регистрах до обращения к следующему столбцу или начала следующего цикла чтения, тем самым увеличивая интервал времени хранения выходных данных, в связи с чем память и получила название Extended Data Output — память с расширенной выдачей данных. Сохраняя выходной буфер включенным, память EDO устраняет состояние ожидания, и пакетные передачи производятся быстрее, Для страничного режима данный тип памяти обеспечивает время доступа около 30 нс. Для памяти EDO групповые операции описываются количеством циклов 5-2-2-2.
Для типа памяти BEDO (Buret EDO) пакетной памяти EDO операции обмена осуществляются пакетами данных. Доступ к данным конвейеризирован. Цикл страничного доступа разделен на два этапа. При чтении из памяти на первом этапе данные из матрицы памяти помешаются в выходной регистр, а на втором этапе на шине данных формируются логические уровни, соответствующие содержимому этого регистра. Количество циклов ожидания благодаря конвейеризации еще более снижается — до 5-l-1-i.
Основным недостатком EDO и BEDO является то, что эти типы микросхем памяти предназначены для работы на частотах до 66 МГц, тогда как частота работы системной шины на сегодняшний день значительно выше (75 МГц, 83 МГц, 100 МГц и более).
Рассмотренные типы динамической памяти являются асинхронными, потому что моменты появления данных из памяти на системной шине компьютера не синхронизированы с фронтами тактовых импульсов. Данные, поступившие на шину сразу после фронта тактового импульса, будут восприняты только при следующем тактовом импульсе. Более быстродействующей памятью является синхронная динамическая память SDRAM (Synchronous DRAM), изготовляемая по БиКМОП (Bi-CMOS) технологии и имеющая время доступа 7—10 нс.
Основной особенностью SDRAM является синхронизация всех ее операций с тактовыми сигналами процессора. Это упрощает реализацию интерфейсов управления и уменьшает время обращения к столбцу матрицы. SDRAM содержит внутренний пакетный счетчик, который может использоваться для инкрементного увеличения адреса столбца в режиме пакетного обращения. Это позволяет инициировать новое обращение к памяти SDRAM до завершения предыдущего.
Внутри микросхемы память расслоена: реализуются как два блока с направлением последовательных адресов в разные блоки. Групповой обмен для такой памяти описывается формулой 5-1-1-1, так же, как и для BEDO, од-
нако в отличие от последней, SDRAM-модули памяти РС100 и PC 133 могут работать на частотах 100 МГц и 133 МГц соответственно.
Память SDRAM имеет 8-байтную шину данных, поэтому пропускная способность памяти PC 100 составляет 800 Мбайт/с, а для PC 133 она равна 1,06 Гбайт/с.
Дальнейшим развитием SDRAM явилась SDRAM-П, разработанная технологическим лидером в производстве микросхем памяти — компанией Samsung. Другое название этого типа памяти — DDR SDRAM (Double Data Rate SDRAM) — память с удвоенной скоростью передачи данных. Операции чтения и записи для такой памяти выполняются дважды за один такт — по переднему и заднему фронтам тактового импульса. Пропускная способность SDRAM-П составляет 1,6 Гбайт/с при тактовой частоте шины 100 МГц. Для обозначения этой памяти используется также аббревиатура DDR200, отражающая тог факт, что эффективная частота работы памяти составляет 200 МГц. Аналогично, для тактовых частот 133 МГц, 166 МГц и 200 МГц применяются соответственно памяти DDR266, DDR333 и DDR400. Для того чтобы показать пропускную способность в Мбайт/с приведенных ранее модулей памяти, их обозначают также PC 1600 (DDR200), РС2100 (DDR266), РС2700 (DDR333) и РС3200 (DDR400). Например, фирма Micron производит по технологическому процессу 0,11 мкм микросхему памяти DDR400 емкостью 512 Мбит, что позволяет создать на се основе стандартный модуль памяти DIMM емкостью 512 Мбайт.
В дальнейшем планируется создание памяти DDR-П, которая должна производить в пакетном режиме 4 доступа за такт. В соответствии с этим данную память называют также QDR (Quadra Data Rate).
Перспективными на сегодняшний день считаются типы динамической памяти, основанные на концепции канала данных: RDRAM (Rambus DRAM) и SLDRAM (SyncLink DRAM).
Технология Rambus, разработанная одноименной компанией, основана на высокоскоростном интерфейсе, который обеспечивает возможность передачи данных со скоростью до 600 Мбайт/с через Rambus Channel — шину данных разрядностью 1 байт. Эффективная пропускная способность достигает величины 480 Мбайт/с, что в 10 раз превышает аналогичный показатель для устройств EDO DRAM. Время доступа к ряду ячеек памяти составляет менее 2 нс в расчете на байт, а время задержки (время доступа к первому байту массива данных) — 23 нс.
Еще более быстродействующей является новый вариант RDRAM — Direct RDRAM. Этот тип памяти обеспечивает скорость передачи данных 1,6 Гбайт/с на один канал и до 6,4 Гбайт/с при четырех каналах.
Подсистема памяти на основе RDRAM включает следующие компоненты: контроллер, канал, модуль памяти DIMM с микросхемами памяти RDRAM,
терминатор. Контроллер реализован на специализированной микросхеме Rambus ASIC Cell (RAC), которая генерирует управляющие сигналы для подсистемы памяти, работающей с тактовой частотой до 400 МГц. К одному контроллеру RAC может подключаться до 4 независимо функционирующих каналов. Канал обеспечивает электрическую связь между контроллером и содержит блок управления подключенными к каналу микросхемами памяти (до 32 микросхем RDRAM) и 30 высокоскоростных линий, передающих данные на обоих фронтах синхронизирующих сигналов. Для подавления отраженного сигнала на конце канала устанавливается терминатор. Линии канала разделены на 16- или 18-разрядную шину данных, 5-разрядную шину адреса строки и 3-разрядную шину адреса столбца. Использование раздельных шин для передачи адреса строки и столбца увеличивает быстродействие подсистемы памяти.
Данные и сигналы управления передаются по каналу 8-битными пакетами в соответствии с протоколом Direct Rambus. В случае обмена большими массивами данных память Rambus является оптимальным вариантом в смысле отношения производитсльность/стоимость. Себестоимость производства этого типа памяти на 40% ниже, чем у микросхем SDRAM. Данный факт объясняет широкое применение RDRAM в игровых приставках (Nintendo) и графических рабочих станциях (Silicon Graphics).
Технология изготовления памяти RDRAM находится во владении компаний Rambus и Intel и подлежит лицензированию другими производителями. С целью создания открытого стандарта памяти, не уступающей по техническим характеристикам RDRAM, IBM, Apple, Motorola, Micron Technology образовали консорциум, получивший название SyncLink Consortium.
Разработанная память SLDRAM похожа на RDRAM. Подсистема памяти SLDRAM содержит контроллер, канал передачи команд, адресов и данных, микросхемы или модули памяти (SL-модули) и терминатор. Команды, адреса и управляющие сигналы передаются по однонаправленной 10-разрядной шине — CommandLink, данные считываются и записываются по двунаправленной 18-разрядной шине данных — DataLink. Данные и команды передаются по шинам пакетами по 4 или 8 бит.
К контроллеру, управляющему подсистемой памяти, может быть подключено до 8 запоминающих устройств: микросхем памяти SLDRAM или SL- модулей, содержащих несколько микросхем. Каждой микросхеме памяти в момент включения питания присваивается уникальный номер, что позволяет учитывать ее быстродействие и местоположение в подсистеме памяти для определения временных задержек при передаче сигналов. В управляющие регистры микросхемы записывается значение времени задержки ее реакции на прием и выдачу сигналов, благодаря чему удается добиться одновременного отклика всех микросхем. Учет быстродействия микросхем в подсистеме
памяти позволяет использовать их различные модификации, отличающиеся по быстродействию и объему.
В зависимости от быстродействия запоминающих устройств канал может работать на различных частотах. На сегодняшний день выпускается память SLDRAM, работающая по обоим фронтам синхросигнала частоты 200 МГц. В ближайшее время планируется выпуск памяти SLDRAM для частоты 400 МГц и выше.
Использовать быструю и дорогостоящую динамическую память в качестве основной памяти компьютера не всегда экономически целесообразно. Чаще используют более медленную основную память совместно с быстрой, но небольшой по объему статической кэш-памятью.
Статическая память
Статическая память — SRAM (Static Random Access Memory) — имеет время выборки данных 15—20 нс и используется, как правило, для построения кэш-памяти.
В простейших организациях кэш-памяти применяется асинхронный режим работы, при котором процессор посылает адрес в кэш-память, кэш производит поиск адреса и передает требуемые данные. В начале каждого обращения, как правило, используется дополнительный цикл для просмотра тегов. Для асинхронной статической памяти групповая операция чтения данных описывается формулой 3-2-2-2, для операции записи формула имеет вид 4-3-3-3.
Синхронный кэш буферизует поступающие адреса. В течение первого такта SRAM запоминает запрашиваемый адрес в регистре. Во время второго такта извлекает и пересылает данные. Поскольку адрес данных хранится в регистре, синхронная статическая память SRAM может получать следующий адрес, пока процессор принимает данные предыдущего запроса. Последовательные элементы данных синхронная SRAM может объединять в "пакеты", не принимая и не дешифрируя дополнительные адреса от процессора. Время доступа для такой памяти уменьшается на 15—20% по сравнению с асинхронной и составляет около 10 нс.
Для снижения времени выполнения групповых операций чтения-записи используется конвейерный режим обмена пакетами данных. Память, поддерживающая такой режим, получила название конвейеризированной пакетной (Pipelined Burst SRAM). Конвейеризация заключается в добавлении выходного буфера, в который помешаются прочитанные из ячеек памяти данные. Последовательные обращения по чтению из памяти осуществляются быстрее, без задержек на обращение к матрице памяти для получения следующего элемента данных. В случае Pipelined Burst SRAM формулы для операций чтения и записи имеют вид 3-1-1-1.
В некоторых случаях проблему повышения быстродействия основной памяти разработчики пытаются решить, встраивая кэш-память в микросхемы динамической памяти. Такой вариант памяти компании Mitsubishi Electronics получил название CDRAM (Cashed DRAM). Для данной памяти каждая 4- или 16-битная микросхема памяти содержит 16 Кбайт быстрой кэш-памяти. Обмен между динамической и статической памятью осуществляется 128- разрядными словами. Выпускаемый компанией Ramtron тип памяти — EDRAM (Enhanced DRAM) содержит 8 Кбайт кэш-памяти для каждых 4 Мбит динамической памяти. Обмен осуществляется 2048-разрядными словами. Благодаря высокому быстродействию CDRAM и EDRAM обычно используются в системах без кэш-памяти второго уровня.
Микросхемы видеопамяти
В видеоподсистемах компьютеров наряду с обычными микросхемами динамической памяти (FPM DRAM, EDO DRAM, SDRAM) используются специализированные типы памяти, ориентированные на поддержку операций с битовыми потоками. На сегодняшний день можно отметить следующие типы специализированной памяти: SCRAM, MDRAM, VRAM, WRAM, 3D-RAM.
Память SGRAM (Synchronous Graphics RAM) — синхронная динамическая память по принципу работы схожа с SDRAM. В то же время SGRAM поддерживает ряд дополнительных функций, обусловленных особенностью применения данного типа ОЗУ. С целью оптимизации операций пересылки больших битовых блоков, характерных для работы видеоадаптера, в SGRAM введены специальные режимы блочной записи — Block Write, Write^per-Bit. Первый режим позволяет записать значение, находящееся в регистре Color register памяти, одновременно в 8 ячеек памяти. Второй режим предназначен для заполнения ячеек данными с возможностью маскирования отдельных ячеек. По сравнению с DRAM данный тип памяти позволяет в 5 раз ускорить выполнение видеоопераций.
Память MDRAM (Multibank DRAM) разработана компанией MoSys и используется, в основном, в графических платах компании Tseng Labs. Особенностью данного типа памяти является ее блочная организация. Память состоит из большого количества независимо функционирующих 32- разрядных банков размером 32 Кбайт, подключенных к быстрой многоразрядной внутренней шине микросхемы Благодаря блочной организации допускается изготовление микросхемы практически любого объема. Так, если стандартные типы видеопамяти имеют объем I, 2, 4, 8, ... Мбайт, то в случае MDRAM объем видеопамяти может быть 2,5 Мбайта, 3,5 Мбайт и т. д. Данная особенность позволяет снижать стоимость видеокарт при обеспечении требуемой цветопередачи и разрешающей способности. Например, для реализации видеорежима 1024 x 768 TrueColor требуется 2,25 Мбайт памяти, тогда как при использовании обычной видеопамяти приходится устанавливать 4 Мбайта.
Память VRAM (Video RAM) разработана для обеспечения пропускной способности 170 Мбайт/с, что необходимо для поддержки видеорежима 1024 х х768 х 16 М при частоте смены кадров 75 КГц. С этой целью память VRAM снабжена дополнительным портом. Данные из VRAM по внутренней шине передаются блоками по 4 Кбайт в специальную внутреннюю память с последовательным доступом SAM (Serial Access Memory), преобразующую данные в последовательный поток бит, который далее передается на ЦАП для формирования видеосигнала. Между моментами считывания информации из ядра памяти в SAM память VRAM может без задержки обслуживать запросы процессора.
Память WRAM (Window RAM), разработанная компанией Samsung, является более дешевой альтернативой VRAM. Память WRAM так же, как и VRAM, содержит два порта, позволяющие одновременно вести обмен данными с процессором и ЦАП. Упрощение внутренней архитектуры WRAM позволило снизить се стоимость по сравнению с VRAM на 20%, обеспечив при этом 50%-ное ускорение обменных операций. Память аппаратно поддерживает функцию прокручивания экрана, заполнения области экрана двухцветным узором, маскирования отдельных областей памяти. WRAM может работать на частоте 50 МГц с пропускной способностью 960 Мбайт/с.
Память 3D-RAM разработана компанией Mitsubishi Electronics для применения в видеокартах совместно с акселератором трехмерной графики. В состав данной микросхемы входит массив динамической памяти CDRAM и блок АЛУ. позволяющий выполнять некоторые операции преобразования изображения.
Программируемые логические интегральные схемы
Всегда существовала и существует сейчас потребность быстрого макетирования вновь создаваемых устройств с целью проверки их работоспособности и устранения в случае обнаружения ошибок, допущенных при проектировании. Кроме того, в силу разных технико-экономических причин возникает потребность в схемной реализации вычислений. Эта потребность может быть продиктована, например, требованием получения производительности, недостижимой при программной реализации вычислений из-за необходимости предварять собственно вычисления выборкой команды и отсутствия в процессоре совокупности регистров, функциональных устройств и путей передачи данных между ними, которые бы соответствовали эффективной схемной реализации заданного алгоритма. Другим примером может служить модификация схемной реализации алгоритма в зависимости от типа обрабатываемых данных, чтобы сократить объем вентилей по сравнению со схемной реализацией, в которой для каждого типа обрабатываемых данных создается отдельная схемная реализация алгоритма их обработки.
Для решения перечисленных задач были разработаны программируемые логические интегральные схемы (ПЛИС). ПЛИС — это матричные большие интегральные схемы, позволяющие программно скомпоновать в одном корпусе электронную схему, эквивалентную схеме, включающей от нескольких десятков до нескольких сотен интегральных схем (ИС) стандартной логики [10]. По сравнению с другими микроэлектронными технологиями, в том числе базовыми матричными кристаллами (БМК) и специализированными ИС (ASIC), технология ПЛИС обеспечивает рекордно короткий проектнотехнологический цикл (от нескольких часов до нескольких дней), минимальные затраты на проектирование, максимальную гибкость при необходимости модификации аппаратуры.
Логические блоки, блоки ввода/вывода и коммутационные поля конфигурируются при загрузке в ПЛИС битовой последовательности, полученной в результате разработки схемы.
В зависимости от семейства ПЛИС, логические блоки, блоки ввода/вывода и коммутационные блоки имеют разную степень сложности и обладают разными функциональными возможностями.
В настоящее время на мировом рынке можно отметить несколько основных компаний — производителей ПЛИС — XILINX, ALTERA, LATTICE, AT&T, INTEL, выпускающих микросхемы с архитектурой EPLD — многократно программируемые и FPGA (Field Programmable Gate Array) — многократно реконфигурируемые.
В качестве памяти для хранения конфигурации в ПЛИС EPLD используется полупостоянное запоминающее устройство (ППЗУ) с ультрафиолетовым стиранием, а у ПЛИС FPGA — статическое запоминающее устройство.
Микросхема FPGA представляет собой матрицу логических ячеек, соединенных между собой логическими ключами. Содержащаяся в микросхемах FPGA статическая память, будучи заполненной определенной битовой последовательностью, воздействует на логические ячейки и соединяющие их ключи, позволяя получить требуемые электрические схемы (регистры, счетчики, логические схемы и т. д., соединенные друг с другом в требуемом порядке). Каждая микросхема FPGA имеет также вход для записи битовой последовательности, заполняющей статическую память, а также элементы "вход/выход" для связи с другими микросхемами.
При создании систем на основе ПЛИС все этапы проектирования выполняются разработчиком на одном рабочем месте с использованием систем автоматизированного проектирования (САПР). Каждая компания — производитель ПЛИС разрабатывает и выпускает свою САПР, обеспечивающую реализацию всех этапов проектирования для каждого типа программируемой логики.
Так же, как и при создании программ для универсального процессора, для программирования ПЛИС необходимы инструментальные средства (языки программирования, трансляторы, оптимизаторы и т. д.), конечным результатом работы которых является битовая последовательность, заполняющая статическую память микросхемы FPGA. Системы автоматизированного проектирования позволяют разработчику, пользуясь стандартными элементами библиотек, создавать на рабочих станциях логические схемы, реализующие заданные алгоритмы, проводить моделирование с анализом функциональных и временных характеристик, осуществлять оптимизацию разработанных схем по оборудованию и времени выполнения задачи и транслировать разработанные схемы в битовые последовательности, определяющие логику работы процессора. Например, компания XILINX поставляет полное математическое обеспечение для разработки и применения устройств на базе FPGA и EPLD. Для разработки используются схемотехнические редакторы и системы моделирования, входящие в состав наиболее популярных САПР: VIEWLOGIC и MENTOR GRAPHICS, функционирующих на персональных компьютерах и рабочих станциях SUN и HP соответственно. Эти системы используют для программирования ПЛИС языки VHDL, Verilog, служащие языками разработки аппаратных средств. Имеются также попытки использования языков программирования для потоковых вычислений и традиционных языков программирования, например, С.
Существует крайняя точка зрения, что со временем ПЛИС вытеснят серийные микропроцессоры, т. к. пользователь сможет реализовать требуемую ему систему программными средствами, учитывая всю специфику своего приложения. Однако более вероятно другое направление развития СБИС, состоящее в интеграции ПЛИС и микропроцессоров. В ПЛИС встраиваются готовые блоки, разработанные фирмой-производителем, или IP-блоки, являющиеся блоками интеллектуальной собственности (Intellectual Property) других фирм. IP-блоки могут быть программными (soft), в которых не фиксирована топология, и аппаратными (hard), в которых топология фиксирована, что позволяет достигать высокой эффективности схемной реализации и большей степени защиты прав на интеллектуальную собственность.
Таким образом, на основе одной или нескольких микросхем FPGA можно создать реконфигурируемый процессор, обладающий преимуществам и спецпроцессора на "жесткой" логике, но способного путем изменения содержимого статической памяти решать любые задачи, подобно универсальному процессору. —* — Отличительной особенностью ПЛИС архитектуры FPGA семейств XILINX ХС2000, ХС3000, ХС3100, ХС4000 является наличие поля конфигурируемых логических блоков (КЛБ) и блоков ввода/вывода, связанных между собой посредством коммутационных блоков.
Конфигурируемый логический блок — один из базовых элементов архитектуры ПЛИС FPGA — может выполнять любую логическую функцию, реали-
зуемую таблицей преобразования (LUT) в соответствии с заданной битовой последовательностью (рис. 1.13). Изменять выполняемую функцию можно неограниченное количество раз путем загрузки другой битовой последовательности.
Конфигурируемые логические блоки всевозможных ПЛИС FPGA различаются количеством таблиц преобразования, числом входов этих таблиц (от 2 до 4), позволяющих реализовать функции от соответствующего числа переменных, а также количеством регистров в блоке. ’
Блок ввода/вывода (рис. 1.14.) так же, как и логический блок, может быть настроен на выполнение любого электрического соединения реализованной внутри ПЛИС схемы с внешним миром через соответствующий контакт микросхемы.
В настоящее время компания XILINX производит микросхемы следующих типов:
серии ХС7200 и ХС7300 — типа EPLD. Содержат от 18 до 144 многовходовых макроячеек, представляющих собой программируемое 1-разрядное АЛУ со встроенным триггером-защелкой. Ячейки объединяются матричным коммутатором. ИС могут быть использованы для нестандартных АЛУ, дешифраторов, счетчиков и т. п.;
серии ХС2000, ХСЗООО — типа FPGA. Содержат от 2000 до 9000 эквивалентных вентилей. Включают до 320 КЛБ;
серии ХС3000А, ХС3100А, ХС4000, ХС5000 — типа FPGA. Включают от 2000 до 25 000 вентилей. Содержат до 1024 КЛБ, выполняющих логическую функцию от 5, 9 или 20 переменных со временем выполнения до 2 нс. Имеется возможность реализации до 2560 триггеров и встроенного ЗУ до 32 Кбит (серия ХС4000);
серии ХС4000Е — типа FPGA. Разработана на основе серии ХС4000 по улучшенной 0,5 мкм технологии с тремя слоями металлизации. Обеспечивает в 1,5 раза более высокую частоту переключения триггеров, на 60% более высокую эффективность выполнения арифметических операций. Имеет более низкую относительную стоимость. Новая функция конфигурации встроенного ОЗУ позволяет реализовать синхронный/асинхрон- ный, одно/двухпортовый режимы обмена;
серии ХС6200 — типа FPGA. Создана специально для построения сопроцессоров. Имеет встроенный 8/16/32-разрядный программируемый (FastMAP) интерфейс, предназначенный для организации непосредственного обмена с шиной основного процессора. Повышенная скорость конфигурации (в 1000 раз по сравнению с предыдущими сериями) допускает частичную реконфигурацию FPGA в процессе выполнения текущей задачи. Встроенное ОЗУ (36—256 Кбайт) доступно через FPGA- логику, через FastMAP-интерфейс либо обоими способами;
Выходной сигнал
Программируемый мультиплексор
ЗЗак 1086
Рис. 1.13. Логический блок ПЛИС
серии ХС8100 — однократно программируемые FPGA. Выполнена на основе MicroVia antifuse КМОП-технологии с тремя слоями металлизации. Технология обеспечивает более высокую плотность упаковки логических элементов и малое потребление;
серии ХС9500 — типа CPLD. Многократно перепрограммируемые (до 10 000 раз) непосредственно на рабочем устройстве микросхемы. Содержат от 800 до 6400 рабочих ячеек или от 36 до 288 макроячеек, аналогичных серии ХС7300. Рабочая частота — до 150 МГц;
серии XC4000XLA и XC4000XV — типа FPGA. Выполнены соответственно по КМОП-технологии 0,35 и 0,25 мкм с пятью слоями металлизации. Максимальное количество вентилей 500 тыс.;
серии Virtex-E и Virtex-EM — типа FPGA. Выполнены по КМОП- технологии 0,18 мкм с шестью слоями металлизации. Количество КЛБ превышает 40 тыс. Блок ввода/вывода совместим с шиной PCI (32/64 бита, 33/66 МГц);
серии Virtex II — типа FPGA. Выполнены по КМОП-технологии 0,15/0,12 мкм с восьмью слоями металлизации. Количество вентилей до 10 млн. В состав КЛБ входят 8 таблиц для задания функций, 18- разрядный быстрый умножитель. Предусмотрена возможность использования заказных блоков и IP-блоков.
Все серии компании XILINX имеют высочайшую степень зашиты от копирования.
1.2.5. Направление развития микроэлектронных компонентов вычислительных.систем
Для создания высокоэффективных вычислительных систем важно интегрировать на кристалле как можно больше функций по обработке и хранению данных, а также интерфейс с пользователем и другими вычислительными системами.
Стремление к ингшрации совокупности функций обусловлено рядом факторов. Во-первых, при однокристальной реализации пропускная способность интерфейсов между подсистемами обработки и хранения данных не ограничивается количеством выводов корпуса кристалла и может достигать требуемого значения. Во-вторых, упрощается системная плата, на которую монтируется кристалл, уменьшается объем монтажных работ, повышаются показатели надежности и производительности вычислительной системы и уменьшается ее стоимость. В-третьих, снижаются требования к количеству выводов корпуса кристалла, т. к. минимизируется интерфейс с другими компонентами вычислительной системы, например с устройствами отображения информации. И, наконец, в-четвертых, реализуются возможности
миллионов транзисторов, которые могут быть размещены на кристалле. Эти транзисторы можно использовать как для построения специализированной системы, состоящей из совокупности проблемно-ориентированных блоков, так и для создания параллельных систем из совокупности одинаковых процессоров.
Наряду с созданием однокристальных систем, существует проблема организации быстрых интерфейсов между микросхемами в многокристальных системах, например между микросхемами процессора и памяти. В Pentium Pro эта проблема решается путем размещения в одном корпусе двух кристаллов: собственно микропроцессора и кэш-памяти второго уровня. Другое возможное решение этой проблемы заключается в создании многокристальных микросборок, в которых бескорпусные СБИС монтируются на кремниевой подложке с нанесенными, возможно, несколькими слоями межкристальных соединений.
1.3. Архитектурные особенности современных микропроцессоров
Классификация архитектур микропроцессоров
При попытке изложить комплекс идей и технических решений, составляющих фундамент архитектуры современных микропроцессоров, неизбежно возникает проблема, связанная со стремительным и отнюдь не прямолинейным развитием этой области знаний и технологий. На каждом этапе развития доминирует, в силу возможностей элементной базы и предпочтений сравнительно небольшого числа фирм производителей микропроцессоров, определенная взаимосвязанная совокупность архитектурных идей. В дальнейшем эти идеи могут быть скомбинированы с другими, и представлять собой уже иную архитектуру. Поэтому при представлении архитектур неизбежен некоторый исторический порядок изложения идей по мере их возникновения и использования при построении микропроцессоров.
Поначалу процессоры имели системы команд, сформированные их разработчиками на основе анализа задач той проблемной ориентации, для решения которых создавался компьютер. Критерием оптимизации предлагаемой системы команд была минимизация длины программ для решения требуемых задач. При этом вводились команды, которые использовали в качестве операндов регистры и ячейки памяти, сложные схемы формирования адресов с использованием индексных регистров для выполнения в одной команде как обработки операндов, так и модификации адресов для выполнения следующей команды. Анализ кода программ, генерируемого компиляторами
языков высокого уровня, показал, что практически используется только ограниченный набор простых команд форматов "регистр <- регистр, регистр", "память <— регистр" и "регистр <- память”. Компиляторы не в состоянии эффективно использовать сложные команды. Это наблюдение способствовало формированию концепции процессоров с сокращенным набором команд, так называемых RISC-процессоров |4|.
Другим обстоятельством, фактически приведшим к появлению RISC- процессоров, было развитие архитектуры конвейерных процессоров типа Cray |6]. В этих процессорах используются отдельные наборы команд для работы с памятью и отдельные наборы команд для преобразования информации в регистрах процессора. Каждая такая команда единообразно разбивается на небольшое количество этапов с одинаковым временем исполнения (выборка команды, дешифрация команды, исполнение, запись результата), что позволяет построить эффективный конвейер процессора, способный каждый такт выдавать результат исполнения очередной команды.
Однако конвейерность исполнения команд породила проблемы, связанные с зависимостями по данным и управлению между последовательно запускаемыми в конвейер командами. Например, если очередная команда использует результат предыдущей, то се исполнение невозможно в течение нескольких тактов, необходимых для получения этого результата. Похожие проблемы возникают при исполнении команд перехода по условию, когда данные, по которым производится переход, к моменту дешифрации команды условного перехода еще не готовы.
Эти проблемы решаются либо компилятором, устанавливающим очередность запуска команд в конвейере и вставляющим команды "нет операции" при невозможности запуска очередной команды, либо специальной аппаратурой процессора, отслеживающей зависимости между командами и устраняющей конфликты.
Процессоры могут быть разбиты на два класса: RISC-процессоры компьютеров с сокращенным набором команд (Reduced Instruction Set Computer) и CISC-процессоры co сложным набором команд (Complex Instruction Set Computer).
Процессоры первого класса имеют команды обработки типа "регистр <- регистр, регистр" и команды сохранения (store) и за!рузки (load) типа "память <регистр" и "регистр <— память" соответственно. Функциональные преобразования могут выполняться только над содержимым регистров, а результат помещается также в регистр.
Как правило, в CISC-процессорах команды имеют много разных форматов и требуют для своего представления различного числа ячеек памяти. Эго обусловливает определение типа команды в ходе ее дешифрации при исполнении, что усложняет устройство управления процессора и препятствует
повышению тактовой частоты до уровня, достижимого в RISC-процессорах на той же элементной базе.■
Очевидно, что RISC-процессоры эффективны в тех областях применения, в которых можно продуктивно использовать структурные способы уменьшения времени доступа к оперативной памяти. Если программа генерирует произвольные последовательности адресов обращения к памяти и каждая единица данных используется только для выполнения одной команды, то фактически производительность процессора определяется временем обращения к основной памяти. В этом случае использование сокращенного набора команд только ухудшает эффективность, т. к. требует пересылки операндов между памятью и регистром вместо выполнения команд типа "память <- память, память". Программист должен учитывать необходимость локального размещения обрабатываемых данных, чтобы при пересылках между уровнями памяти по возможности все данные пересылаемых блоков данных принимали участие в обработке. Если программа будет написана так, что данные будут размещены хаотично и из каждого пересылаемого блока данных будет использоваться только небольшая их часть, то скорость обработки замедлится в несколько раз, до скорости работы основной памяти. В качестве примера приведем в табл. 1.1 результаты замеров производительности микропроцессора Alpha 21066 233 МГц при реализации преобразования Адамара при п — 8—20.
Таблица 1.1. Производительность микропроцессора Alpha 21066 при выполнении преобразования Адамара
п
Производительность в условных алгоритмических операциях, млн оп/с
8
150
10
133
11
73
>12
20
Приведенный пример показывает, что, пока данные размещаются во внутрикристальной кэш-памяти, производительность высока. Как только объем данных превышает размер кэш-памяти и обращения в память идут в "равномерно" распределенные по объему адреса, производительность падает более чем в 7 раз.
Развитие микропроцессоров происходит при постоянном стремлении сохранения преемственности программного обеспечения (ПО) и повышения производительности за счет совершенствования архитектуры и увеличения тактовой частоты. Сохранение преемственности ПО и повышение произво-
дительности, вообще говоря, противоречат друг другу. Так, например, процессоры с системой команд х8б, относящиеся к классу CISC-процессоров вплоть до Pentium Pro, имели более низкие тактовые частоты по сравнению с микропроцессорами ведущих компаний — производителей RISC-процессоров, изготавливаемых по одним и тем же технологическим нормам. Для этих процессоров существовали приложения, на которых производительность х8б микропроцессоров была значительно ниже, чем у RISC- процессоров, реализованных на той же элементной базе. Однако возмож- 1 ность использования совместимого ПО для различных поколений х86 процессоров обеспечивала им устойчивое доминирующее положение на рынке.
, Затем на основе "пионерских" разработок компаний NexGen и AMD, позднее подхваченных компанией Intel, была реализована успешная попытка | решения проблемы повышения производительности в рамках архитектуры । х86. Эти компании, сохраняя преемственность по системе команд с C1SC- микропроцессорами семейства х86, создали новые устройства с использованием элементов RISC-архитектуры. Первыми примерами такого подхода могут служить микропроцессоры Nx586 (NexGen), К5, Кб (AMD), использующие концепцию RISC-ядра. В микропроцессор встраивается аппаратный транслятор, превращающий команды х86 в команды внутреннего RISC- процессора. При этом одна команда х86 может порождать до четырех команд RISC-процессора. Исполнение команд происходит, как в развитом
! суперскалярном процессоре. Компания Intel впервые использовала этот подход в своем микропроцессоре Pentium Pro, что весьма укрепило ее позиции на фоне достижений RISC-архитектур.
Архитектура процессоров с параллелизмом уровня команд
Подходы к использованию ресурса транзисторов в микропроцессорах
Повышение производительности микропроцессоров достигается за счет увеличения тактовой частоты, совершенствования параллельной и конвейерной обработки данных, а также уменьшения времени доступа к памяти. В настоящее время возможно проектирование микропроцессоров с несколькими сотнями миллионов транзисторов на кристалле. Уверенно просматривается перспектива увеличения количества транзисторов до миллиарда |9]. Возросший объем транзисторов может быть использован для построения функциональных устройств микропроцессора или для увеличения объема внутри । кристальной кэш-памяти или для того и другого. Возможно также создание новых классов кристаллов — однокристальных параллельных систем.
Прирост объема кэш-памяти дает эффект лишь до определенного объема, пока удается локализовать блоки исполняемого кода и блоки данных. Если,
например, имеется большой объем данных, превышающий возможный размер кэш-памяти, и адреса обрабатываемых данных вырабатываются в ходе вычислений, то кэш память будет только постоянно обновлять запрошенные строки, что приведет к потере производительности.
Память представляет собой ресурс, не. производящий непосредственно вы- числений^ поэтому привлекательным выглядит использованиеЦесурса транзисторов кристалла для построения совокупности функциональных устройств. Основное препятствие на пути повышения производительности за счет увеличения количества функциональных устройств — это загрузка устройств полезной работой. * ~
Суперскалярные процессоры и процессоры с длинным командным словом
Современные микропроцессоры содержат десять и более обрабатывающих устройств, каждое из которых представляет собой конвейер. В случае эффективной загрузки параллельно функционирующих устройств возможно получение в одном такте нескольких результатов операций, представленных скалярами: целочисленными операндами или операндами с плавающей точкой.
Эффективная загрузка параллельно функционирующих конвейеров обеспечивается либо аппаратурой процессора, либо компилятором, на вход которого поступают программы на традиционном последовательном языке программирования. либо совместно аппаратурой и компилятором.
В компиляторах используется изощренная техника извлечения параллелизма из последовательных программ. Аппаратура микропроцессоров ориентирована на выделение более простых форм параллелизма, в том числе естественного.
Есть два крайних подхода, при возможных промежуточных, к отображению присущего микропроцессору внутреннего параллелизма обработки данных на архитектурном уровне в системе команд. Первый подход более консервативен и состоит в том, что никакого указания на параллельную обработку внутри процессора система команд не содержит. Такие процессоры относятся к классу суперскалярных. Такое название, с одной стороны, отличает эти процессоры от векторных процессоров, а с другой стороны, подчеркивает присущий этим процессорам внутренний параллелизм, обеспечивающий получение в одном такте нескольких скалярных результатов.
Второй подход, напротив, полностью открывает пользователю все возможности параллельной обработки. В специально отведенных полях команды каждому из параллельно работающих обрабатывающих устройств предписывается действие, которое устройство должно совершить. Такие процессоры называются процессорами с длинным командным словом (VLIW). Предполага-
ется, что существуют компиляторы с языков высокого уровня, которые готовят программы для загрузки их в микропроцессоры.
Суперскалярные и VHW-процессоры принадлежат классу архитектур, которые используют параллелизм уровня**команд (ILP). '
Зависимости между командами, препятствующие их параллельному исполнению
В соответствии с моделью последовательного программирования программы пишутся в предположении, что команды будут выполнены в том же порядке, в каком они представлены в программе. Однако с целью достижения большей эффективности современные процессоры пытаются выполнять несколько команд одновременно и, в некоторых случаях, в порядке, отличном от их исходной последовательности в программе. Это переупорядочение может быть выполнено в трансляторе и (или) в аппаратных средствах во время выполнения.
ILP-процессоры и компиляторы обычно преобразуют полностью упорядо- ченное множество команд исходной программы в частично упорядоченное' множество, структурированное зависимостями по данным и управлению. Зависимости по управлению (которые проявляются как переходы по условию) представляют главное препятствие высокопараллельному выполнению потому, что эти зависимости должны быть установлены прежде, чем будут выполнены все последующие команды.
I Текст последовательной программы, представленной на языке высокого уровня, компилируется в машинный код, отражающий статическую струк- ' туру программы, т. е. упорядоченное множество команд (инструкций) в памяти компьютера. Процесс выполнения программы с конкретными наборами входных данных может быть представлен динамической структурой программы, т. е. множеством последовательностей команд в порядке их исполнения.
• Повысить степень параллелизма программы можно, изменяя соответствующим образом ее статическую или динамическую структуру. Поскольку стати» ческая структура программы однозначно соответствует ее исходному тексту (в предположении неизменности компилятора), то изменение статической структуры сводится к изменению исходного кода, что, в общем случае, не всегда возможно. Динамическая же структура программы может быть изменена при неизменной статической структуре. И главной целью такого измене-
I ния должно быть повышение степени параллельного исполнения команд.
। Допустимые границы преобразования динамической структуры программы задают существующие на множестве инструкций отношения: зависимость по управлению и зависимость по данным. При описании архитектур суперскалярных процессоров используется модель окна исполнения. При испол-
нении программы микропроцессор как бы продвигает по статической структуре программы окно исполнения, тем самым ограничивая совокупность команд, которые рассматриваются на предмет наличия между ними зависимостей по данным и управлению. Команды в окне могут исполняться параллельно, если между ними нет зависимости.
Для устранения зависимостей, вызванных командами переходов, используется метод предсказания, позволяющий извлекать и условно исполнять команды предсказанного перехода. Если позднее обнаруживается, что предсказание было сделано верно, результаты условно исполненных команд принимаются. Если предсказание было ошибочным, состояние процессора восстанавливается на момент принятия решения о выполнении перехода.
Команды, помещенные в окно исполнения, могут быть зависимы по данным. Эти зависимости обусловлены использованием одних и тех же ресурсов памяти (регистров, ячеек памяти) в разных командах. Поэтому для правильного исполнения программы необходимо использование этих ресурсов в предписываемом программой порядке.
Все виды зависимостей по данным могут быть классифицированы по типу ассоциаций: RAR — "чтение после чтения", WAR — "запись после чтения" и WAW — "запись после записи", RAW — "чтение после записи".
Пример различных зависимостей команд по данным показан на рис. 1.15.
Рис. 1.15. Зависимости команд по данным
Некоторые из зависимостей по данным могут быть устранены. RAR, по сути дела, соответствует отсутствию зависимостей, поскольку в данном случае порядок выполнения команд не имеет значения. Действительной зависимостью является только "чтение после записи" (RAW), т. к. необходимо прочитать предварительно записанные новые данные, а не старые.
Лишние зависимости по данным появляются в результате "записи после чтения" (WAR) и "записи после записи" (WAW). Зависимость WAR состоит в том, что команда должна записать новое значение в ячейку памяти или регистр, из которых должно быть произведено чтение. Лишние зависимости
появляются по нескольким причинам: неоптимизированный программный код, ограничение количества регистров, стремление к экономии памяти, наличие программных циклов. Важно отметить, что запись может быть произведена в любой свободный ресурс, а не только тот, который указан в программе.
После удаления лишних зависимостей по управлению и данным команды могут исполняться параллельно. Формирование расписания параллельного выполнения команд возлагается на аппаратные средства микропроцессора. Это расписание учитывает существующие зависимости между командами и имеющиеся функциональные модули процессора.
В современных микропроцессорах широко используется принцип конвейерного выполнения отдельных элементарных операций. Конвейеризация внутренних процессов позволяет получать результат в каждом процессорном такте.
Структурный параллелизм микропроцессоров с разнесенной архитектурой
Стремление использовать присущий большинству программ естественный параллелизм вычисления целочисленных адресных выражений и собственно обработки данных в формате с плавающей точкой привело к появлению разнесенных архитектур (decoupled architecture) [11].
В первом приближении микропроцессор с разнесенной архитектурой, как показано на рис. 1.16, состоит из двух связанных подпроцессоров, каждый из которых управляется собственным потоком команд.
Адресный A-процессорИсполнительный Е-процессор
Рис. 1.16. Микропроцессор с разнесенной архитектурой
Условно эти подпроцсссоры называются адресным A-процессором и исполнительным Е-процессором. А- и Е-процессоры имеют собственные наборы регистров АО, AI, ... и ХО, XI, ... соответственно и наборы команд. А- процессор выполняет все адресные вычисления и формирует обращения к памяти по чтению и записи, он является обыкновенным целочисленным процессором, поэтому способен осуществлять произвольные целочисленные преобразования, не связанные с вычислением адресов. Е-процессор реализует вычисления с плавающей точкой.
Данные, извлекаемые из памяти, используются либо в A-процессоре, будучи помещенными в FIFO-очередь АА, либо помещаются в FIFO-очередь, называемую АЕ-очередыо, для отсылки в Е-процессор. Когда Е-процессору требуются данные из памяти, он берет их из очереди АЕ. Если очередь пуста, Е-процессор задерживается до поступления данных, что решает вопросы синхронизации работы А- и Е-процессоров. Если Е-процессор выработал данные, которые должны быть отправлены в память, то он помещает их в FIFO-очередь ЕА.
При записи данных в память после вычисления адреса A-процессор сразу отправляет адрес в FIFO-очередь AW адресов записи в память, не дожидаясь, пока данные поступят в очередь ЕА. A-процессор группирует пары, выбирая первые элементы очередей ЕА и AW и отправляя эти пары в память. Естественно, если одна из очередей или обе пусты, то отсылка в память п р и оста н авл и ваетс я.
При чтении данных A-процессор отправляет адреса в память с указанием очередей АА или АЕ, в которые должны быть считаны данные из памяти. Разнесенная архитектура позволяет достигать при скалярной обработке производительности, характерной для векторных процессоров, за счет предвы- борки данных из памяти и автоматической развертки нескольких последовательных витков цикла в A-процессоре. Проблемы расщепления программы на программы для А- и Е-процессоров решаются на уровне компилятора или специальным блоком-расщепителем.
Предварительная выборка команд и предсказание переходов
Основная идея, определяющая развитие суперскалярных микропроцессоров [12|, состоит в построении микропроцессоров с как можно большим количеством функциональных устройств при сохранении традиционных последовательных программ. Это означает, что компиляторы и аппаратура микропроцессора сами, без вмешательства программиста, обеспечивают загрузку параллельно работающих функциональных устройств микропроцессора.
Типовая архитектура суперскалярного микропроцессора представлена на рис. 1.17.
Рис. 1.17. Архитектура руперскалярного микропроцессора
В число основных блоков суперскалярного микропроцессора входят: блок выборки команд и предсказания переходов, блок декодирования команд, анализа зависимостей между командами, переименования и диспетчеризации, блоки регистров и обрабатывающих устройств с плавающей и фиксированной точками, блок управления памятью, а также блок упорядочения выполненных команд.
Поскольку при суперскалярной обработке необходимо извлекать из памяти несколько команд за один такт для загрузки параллельно работающих функциональных модулей, повышенные требования предъявляются к пропускной способности интерфейса микропроцессор—память. В современных микропроцессорах применяются многоуровневые раздельные типы кэш-па- мяти данных и команд.
Серьезную проблему для эффективной загрузки функциональных устройств представляют команды ветвления. Если требуется осуществить смену значения счетчика команд, то необходим, по крайней мере, один такт для распознавания команды ветвления, модификации счетчика команд и выборки
команды по заданному значению счетчика команд. Эти задержки вызывают пустые такты в конвейерах процессора.
Для предотвращения появления пустых тактов возможно использование "отложенных переходов", когда одна или несколько команд после команды ветвления выполняются безусловно.
Более сложные решения используют:
предсказание переходов;
выполнение с изменением порядка следования команд;
условное (предикативное) исполнение.
При предсказании переходов, не дожидаясь определения команды, на которую должен быть сделан переход, начинается выборка и исполнение команд по предсказанному направлению перехода или условное исполнение команд. В случае ошибки предсказания необходимо уничтожить вес результаты работы неверно выбранных команд. Количество потерянных при этом тактов процессора зависит от глубины конвейеров функциональных устройств и их числа. В современных микропроцессорах число теряемых в результате неверного предсказания тактов может быть несколько сотен. Кроме того, объем аппаратных средств, используемых для устранения последствий неправильных предсказаний, достаточно велик и может негативно влиять на повышение тактовой частоты микропроцессора. •
Изменение порядка следования команд имеет целью загрузить работой простаивающие функциональные устройства при выхватывании из потока тех команд, для которых имеются готовые операнды и свободные устройства для их исполнения. Однако при этом должны исследоваться зависимости между командами по регистровым и другим используемым ресурсам. Определение отсутствия зависимости должно делаться быстро, т. к. иначе теряется смысл изменения порядка выполнения команд.
Для оптимизации исполняемого программного кода может быть применена кэш-память трасс [13]. Эта память отображает команды, выбираемые из кэш-памяти команд микропроцессора, в физически непрерывную область памяти команд. Поток команд, заполняющих кэш-память трасс, подвергается оптимизации с целью повышения эффективности исполнения уже выполненной трассы команд при повторных ее выборках. Трасса оптимизируется на фоне исполнения ее команд процессором.
Для уменьшения потерь процессорных тактов, связанных с промахами при обращении к кэш-памяти в случае выполнения команд ветвления, в состав системы кэширования вводятся средства предсказания переходов, основное назначение которых — повысить вероятность наличия в кэш-памяти требуемой команды.
Исполнение условных переходов состоит из следующих этапов:
распознавание команды условного перехода;
О проверка выполнения условия перехода;
вычисление адреса перехода;
передача управления в случае перехода.
На каждом этапе используются специальные приемы повышения производительности.
Этап 1. Для быстрого декодирования используются либо дополнительные биты в поле команды, либо преддекодирование команд при выборе из кэшпамяти команд.
Этап 2. Часто, когда команда уже выбрана из кэш-памяти, условие перехода еще не вычислено. Чтобы не задерживать поток команд, в данном случае используется предсказание перехода по одной из нескольких возможных схем. Некоторые предсказатели используют статическую информацию из двоичного кода программы или специально выработанную компилятором. Например, определенные коды операций чаще вырабатывают ветвление, чем другие коды, или ветвление более вероятно (при организации циклов), или компилятор может устанавливать флаг, указывающий направления перехода. Может также использоваться статистическая информация, полученная при трассировке программы.
Другие предсказатели используют динамически формируемую информацию в процессе исполнения программы. Обычно это информация, касающаяся истории выполнения данного ветвления, сохраняемая в таблице ветвлений или в таблице предсказаний ветвлений. Таблица предсказания ветвлений организуется по ассоциативному принципу, подобно кэш-памяти, ее элементы доступны по адресу команды, ветвление которой предсказывается. В некоторых реализациях элемент таблицы предсказания ветвления является счетчиком, значение которого увеличивается при правильном предсказании и уменьшается при неправильном. При этом значение счетчика определяет преобладающее направление ветвлений.
В момент определения действительного значения условия ветвления вносится изменение в историю ветвления. Если предсказание было неверным, то должна инициироваться выборка правильных команд. Результаты команд, которые были условно выполнены, должны быть аннулированы.
Этап 3. Для определения адреса ветвления обычно требуется выполнить целочисленное сложение, прибавляющее к текущему значению счетчика команд смешение, заданное в поле команды ветвления. И хотя это не требует дополнительных тактов для обращения к регистрам, ускорение вычисления адреса может быть достигнуто благодаря использованию буфера, содержащего ранее использованные адреса переходов.
Условное выполнение команд в VLIW-процессорах
Альтернатива суперскалярной обработке — длинное командное слово (VLIW-Very Long Instruction Word). Использование этого метода предполагает задание в командном слове совокупности параллельно выполняемых команд. Подготовкой таких программ занимается компилятор.
В рамках архитектуры IA-64 [15], разрабатываемой Intel и HP, организация длинных команд базируется на связках (bundle) команд, формируемых из трех команд и специального поля шаблона (template).
Возможные варианты связки из трех команд:
il || i2 || i3 — все команды il, i2, i3 исполняются параллельно;
il & i2 || i3 — сначала команда il, затем исполняются параллельно i2 и i3;
il || 12 & 13 — параллельно исполняются il и i2, после них команда i3;
il & i2 & i3 — последовательно исполняются команды il, i2, i3.
Поле шаблона используется для управления исполнением команд связки и организации суперсвязок, формируемых из нескольких соседних связок. Шаблон указывает, какие команды связки или соседних связок могут исполняться параллельно на разных функциональных устройствах. Например, на рис. 1.18 представлена суперсвязка из восьми целочисленных команд.
Связка команд #1Связка команд #2Связка команд #3
TInt 1Int 2Int 3TInt 1Int 2Int 3TInt 4Int 5Int 6TInt 4Int 5Int 6тInt 7Int 8Int 9тInt 7Int 8Int 9
T
Int 1
Int 2
Int 3
T
Int 1
Int 2
Int 3
T
Int 4
Int 5
Int 6
T
Int 4
Int 5
Int 6
т
Int 7
Int 8
Int 9
т
Int 7
Int 8
Int 9
Суперсвязка из восьми команд целочисленной обработки, которыемогут параллельно исполняться на разных целочисленных АЛУ
./
Рис. 1.18. Суперсвязка команд
Шаблон связки создается при компиляции программы, и в него помешается вся информация по управлению параллельным выполнением команд. При этом в зависимости от числа требуемых функциональных устройств все восемь команд могут исполниться либо за один такт параллельно, либо за два такта по четыре команды за такт, либо как-то иначе.
Формат команды IA-64 включает: код команды, три 7-разрядных поля операндов, I приемник и 2 источника (операндами могут быть только регистры), особые поля для арифметических операций с плавающей и фиксированной точками, а также специальное 6-разрядное предикатное поле.
Эффективность загрузки функциональных устройств в процессорах с длинным или очень длинным командным словом (LIW/VLIW — long/very long
instruction word) достигается за счет механизма условного (предикативного) исполнения команд и предвыборки команд.
Механизм условного исполнения команд базируется на введении в команды специального предикатного поля. Условное выполнение команд исключает необходимость использования команд условных переходов. Вместо команды перехода и двух альтернативных ветвей, одна из которых выполняется в зависимости от значения предиката команды перехода, отдельной специальной командой вычисляется тот же предикат, что и в команде перехода, и его значение сохраняется в специальном предикатном регистре. Команды одной альтернативной ветви используют значение U вычисленного предиката, а команды другой альтернативной ветви используют предикат со значением "не U". Команды обеих ветвей запускаются на исполнение, но результативное исполнение будет только у команд со значением предиката "истина". Подобные действия по замене команд перехода на команды условного выполнения носят название "преобразование if (14) и выполняются компилятором. В листинге 1.2. слева приведен фрагмент программы с использованием команд перехода, а справа соответствующий ему преобразованный фрагмент программы с применением условных команд и команд вычисления предикатов.
ЙЙЮ Е£йЙ££^..&ЖЙ&......^Z^i^fi
if (а «—10)с = с+1else if (b > 20)d = d+1else e = e+1if (а «—10)с = с+1else if (b > 20)d = d+1else e = e+1pred_lt pl(-U), p2(U), a, 10
if (а «—10)
с = с+1
else if (b > 20)
d = d+1
else e = e+1
if (а «—10)
с = с+1
else if (b > 20)
d = d+1
else e = e+1
add с, с, 1 (p2)
pred_gt p3(-U), p4(U), b, 20 (pl)
add d, d, 1 (p4)
add e, e, 1 (p3)
Соответствующая граф-схема фрагмента программы представлена на рис. 1.19. Использование условных команд упрощает зафузку функциональных устройств микропроцессора, перенося проблемы формирования условных команд на стадию компиляции программ. Однако эффективная поддержка условного выполнения команд требует обеспечения следующих механизмов:
введения специального поля команды для указания предикатного операнда;
введения предикатного регистрового файла;
исключения результатов команд со значением предикатного операнда "ложь";
выделения множества условных команд.
Рис. 1.19. Граф-схема фрагмент программы, приведенного в листинге 1.2
Одним из приемов борьбы с удлинением командного слова служит ограничение типов команд, допускающих условное исполнение только теми командами, форматы которых имеют поля для размещения предиката. Например, допускается условное исполнение только команд пересылки MOV. Для этого вводится специальный формат CMOV условной пересылки.
В разной степени условные команды используются в таких микропроцессорах, как Alpha, Advanced RISC Machines ARM, Philips TriMedia, MIPS R xOOO, Sun SPARC, TMS 320 Сбхх и в архитектуре x86. Intel ввела команду CMOV в свои микропроцессоры Pentium Pro и Pentium II в 1995 году. Эти команды появились в микропроцессорах Sun SPARC, DEC Alpha, R xOOO в 1991, 1992, 1995 годах соответственно |15].
Современные процессоры используют условные команды с различными ограничениями. Так, одни ограничиваются только условными пересылками. Другой подход реализован в микропроцессоре ARM: все команды условные и могут использовать 16 предикатов, однако не допускается вложенных предикатов условных команд.
В качестве предикатных регистров могут использоваться как специально выделенные для этого регистры, так и регистры общего назначения. В по- _ следнем случае, вообще говоря, может возникнуть проблема недостатка регистров. Кроме того, значения предикатных регистров должны считываться наряду с другими операндами программы, что ведет к увеличению числа портов регистрового файла. Поэтому введение отдельного предикатного файла вполне оправдано.
Конечно, предпочтительным использованием условных команд служит распараллеливание коротких альтернативных ветвей.1
При выполнении циклов, организованных с применением команды перехода с заранее известной передачей управления на начальную команду, с заданным большим числом повторений (например, порядка тысячи) команд тела цикла могут без потери эффективности использоваться традиционные команды перехода. Кроме того, команды перехода необходимы для выполнения редко используемых блоков программного кода, связанных, например, с обработкой исключительных ситуаций. ,
Введение условных команд требует оборудования для задания предикатов и работы с ними. Но в условиях относительного избытка обрабатывающих устройств, которые все равно нет возможности загрузить непосредственно вычислениями, использование этих устройств для вычисления предикатов служит общему повышению производительности микропроцессора.
Использование условных команд вводит в микропроцессоры элементы ассоциативной обработки данных, что, вообще говоря, при развитии логики работы с предикатами может существенно повлиять на стиль разработки и исполнения программ.
В рамках архитектуры NArch, разработанной в Московском центре "СПАРК- технологий" [16—18], предлагается [ 18| использовать условные команды и аппаратную поддержку их исполнения. Предусматриваются специальный файл предикатных регистров и специальное функциональное устройство, позволяющее в одним такте вычислять до трех предикатов. В совокупности с предикатами, вычисляемыми в арифметических устройствах процессора, общее число вычисляемых за один такт предикатов может достигать шести.
int а, Ь; float с, d;if (a==b)if (c<=d)int а, Ь; float с, d;if (a==b)if (c<=d)Предикаты бывают первичные и вторичные, вычисляемые с использованием первичных предикатов. Примеры первичных предикатов 118] приведены в листинге 1.3.
int а, Ь; float с, d;
if (a==b)
if (c<=d)
int а, Ь; float с, d;
if (a==b)
if (c<=d)
0: cmp_eq %rl, %r2, %pl
n: fcmp_le %r3, ^r4, %p2
Переменные a, b, c, d размещены изначально в регистрах %ri, %r2, %r3, %г4 соответственно. Значения предикатов записываются в регистры %pi и Ър2 предикатного файла.
Возможности вычисления сложных предикатов с получением за такт трех значений предикатов демонстрируются в листинге 1.4.
inf a, h, с, d;inf a, h, с, d;if (a==b && c<d | | a !=b && c<=d)if (a==b && c<d | | a !=b && c<=d)0: cmp_eq %rl, %r2, %pl cmpl %r3, %r4, %p2 cmp_le %r3, %r4, %p3
inf a, h, с, d;
inf a, h, с, d;
if (a==b && c<d | | a !=b && c<=d)
if (a==b && c<d | | a !=b && c<=d)
1:land%pl,%p2,%p4
land!%pl,%p2,%p5
land!%p4,!%p5,%p6
В листинге 1.4. символ ! обозначает логическое "не", а операция логическое "или" реализуется как операция логического "и" (land) над инвертированными операндами в специальном функциональном устройстве. Таким образом, сложный предикат вычисляется за два такта.
Характер компилируемого в архитектуре NArch кода демонстрируется в листинге 1.5.
int а, Ь, с, d, х;
if (a—b && c==d) х++1;
0: cmp_eq %rl, %r2, %pl0: cmp_eq %rl, %r2, %plcmp_eq %r3, %г4, %р2cmp_eq %r3, %г4, %р2land %pl, %р2, %рЗ
0: cmp_eq %rl, %r2, %pl
0: cmp_eq %rl, %r2, %pl
cmp_eq %r3, %г4, %р2
cmp_eq %r3, %г4, %р2
пор
add %r5, 1, %г5 ? %рЗ
Символ ? предшествует предикату условно выполняемой команды.
В [18] утверждается, что за счет полной аппаратной поддержки условных команд при реализации архитектуры NArch на шести тестах из SPEC-92, характеризуемых множеством коротких линейных участков кода и команд перехода с короткими альтернативными ветвями, удается достичь повышения производительности в среднем на 23%.
Декодирование команд, переименование ресурсов и диспетчеризация
Независимо от того, выбраны команды на исполнение в суперскалярном микропроцессоре или микропроцессоре с длинным командным словом, далее происходит их декодирование и подготовка ресурсов для их исполнения. На
этой фазе определяются существенные зависимости (RAW) по данным между командами и преодолеваются несущественные (WAW, WAR), производится распределение команд по буферам команд функциональных устройств.
При декодировании команды создается одна или несколько упорядоченных троек, каждая из которых включает:
исполняемую операцию;
указатели на операнды;
указатель на место помещения результата.
Для преодоления лишних WAR- и WAW-зависимостей, возникающих в результате ограниченности логических ресурсов (ячеек памяти, регистров), используется механизм динамического отображения определяемых текстом программы логических ресурсов на физические ресурсы микропроцессора. При данном подходе с одним логическим ресурсом может быть связано несколько значений в различных физических ресурсах, каждое из которых соответствует значению логической величины в один из моментов времени последовательного выполнения программы.
Когда команда создает новое значение для логического регистра, физический ресурс, в который помещается это значение, получает имя. Последующие команды, использующие это значение, снабжаются именем физического ресурса. Данная процедура называется "переименованием регистров". Используются два основных способа переименования.
В первом физический файл регистров больше логического. При необходимости переименования из списка свободных физических регистров берется один, и ему сопоставляется соответствующее логическое имя. Если список свободных регистров пуст, диспетчеризация команд приостанавливается до момента появления свободных физических регистров.
Рассмотрим пример реализации данного способа переименования. Пусть требуется выполнить команду sub гз, гз, 5 (из значения регистра гз вычесть константу 5 и поместить результат в регистр гз). Логические имена регистров начинаются со строчной буквы, а физические — с прописной. Пусть также в момент исполнения команды в таблице регистру гз соответствует R1. Первым регистром в списке свободных пусть является R2. Поэтому в поле результата команды sub гз, гз, 5 регистр гз заменяется на R2. Исполнимая команда приобретает вил sub R2, ri, 5. Любая следующая за sub команда, использующая ее результат, должна использовать в качестве операнда R2.
Остается вопрос о возвращении физических регистров в список свободных после того, как из них считаны данные в последний раз. Один из способов связывает счетчик с каждым физическим регистром. Счетчик увеличивается при каждом переименовании операнда в командах, использующих этот физический регистр. Соответственно, при использовании операнда значение
счетчика уменьшается на I. При достижении счетчиком нуля физический ресурс должен быть переведен в список свободных.
Второй способ переименования использует одинаковое число логических и физических регистров и поддерживает их однозначное соответствие. В дополнение имеется буфер с одним вхождением для каждой инициированной на исполнение команды. Этот буфер называется "переупорядочивающим", т. к. он используется также для установления порядка команд при прерываниях. Данный буфер можно рассматривать как FIFO-очередь, выполненную в виде кольцевого буфера с указателями "начало" и "конец".
Команды помещаются в конец буфера. По завершении команды ее результат заносится в заранее предписанный ей элемент очереди, независимо от места в очереди, занимаемого этим элементом. К моменту достижения командой начала буфера, если она была исполнена, ее результат помешается в регистровый файл, а сама команда удаляется. Команда, находящаяся в буфере и не исполненная в виду отсутствия значения операнда, остается в нем вплоть до получения этого значения. Одновременно может выбираться из очереди или помещаться в нее несколько команд, однако всегда соблюдается дисциплина FIFO.
Значение логического регистра может быть размещено либо в физическом регистре, либо в переупорядочивающем буфере. В момент декодирования команды значению ее результата сопоставляется соответствующая результату позиция упорядоченной тройки команды в элементе переупорядочивающего буфера, в котором размещается рассматриваемая декодированная команда, и делается отметка в таблице соответствия значений, которая указывает, что значение результата может быть найдено в соответствующем элементе буфера. Поля источников и результата команды используются для доступа к полям таблицы. Таблица показывает, что соответствующий регистр содержит требуемую величину, либо она может быть найдена в переупорядочивающем буфере. Когда переупорядочивающий буфер полон, диспетчеризация команд приостанавливается.
Рассмотрим выполнение переименования на примере команды sub гЗ, гЗ, 5. Пусть значение гЗ находится или будет находиться в переупорядочивающем буфере в элементе 6. Регистр гЗ как источник заменяется на соответствующее поле результата элемента 6 буфера. Команда sub помешается в конец переупорядочивающего буфера, например в элемент 7. Этот номер затем записывается в таблицу для использования командами — потребителями результата. Следует заметить, что переупорядочивающий буфер фактически вводит потоковую модель вычислений по готовности операндов. Независимо от способа переименования, в супсрскалярном процессоре устраняются лишние зависимости по данным.
Проблемы конфликтов при доступе к разделяемому ресурсу — ячейкам памяти, по сути, те же, что и при доступе к регистрам.
Для вычисления адреса памяти, как правило, требуется, по крайней мере, одно сложение. После вычисления адреса может понадобиться его преобразование в физический адрес, осуществляемое буфером истории трансляции адресов (TLB).
Исполнение команд
После формирования для каждой команды упорядоченных троек, состоящих из кода операции, физических операндов-источников и физического операнда-результата, а также размещения их в буферах, наступает фаза динамической проверки готовности значений операндов для исполнения команды.
В идеале команда готова к исполнению, как только готовы ее входные операнды. Однако есть ряд ограничений, связанных с доступностью физических ресурсов, таких как исполнительные устройства, коммутаторы и порты регистровых файлов (или переупорядочивающего буфера). Для организации окна исполнения используются различные методы: одной очереди, многих очередей или метод резервирующей станции.
Если имеется одна очередь, то переименование регистров не требуется, т. к. доступность значений операндов может отмечаться битом резервирования, сопоставленным каждому регистру. Регистр резервируется, когда модифицирующая его команда назначается на исполнение. И регистр освобождается, когда закапчивается исполнение команды. Если для команды ресурсы нс были зарезервированы, то она приостанавливает свое исполнение.
В методе многих очередей каждая очередь организуется для команд одного типа. Например, очередь команд с плавающей точкой или очередь команд работы с памятью.
Третий метод предполагает использование резервирующей станции, состоящей из совокупности элементов, каждый из которых содержит позиции для размещения кода операции, наименования первого операнда, самого первого операнда, признака доступности первого операнда, наименования второго операнда, самого второго операнда, признака доступности второго операнда и наименования регистра результата. Когда команда завершает исполнение и вырабатывает результат, то наименование результата сравнивается с наименованиями операндов в резервирующей станции.
Если в резервирующей станции обнаруживается команда, ждущая этого результата, то данные записываются в соответствующую позицию и устанавливается признак их доступности. Когда у команды доступны все операнды, инициируется ее исполнение. Резервирующая станция следит за доступностью операндов. Когда команда при диспетчеризации попадает в резервирующую станцию, все готовые операнды из регистрового файла переписываются в поля этой команды. Когда все операнды готовы, команда исполняется. Иногда резервирующая станция содержит не сами операнды, а указатели на них в регистровом файле или в переупорядочивающем буфере.
Резервирующая станция представляет собой как бы процессор, управляемый потоком данных.
Завершение выполнения команды
Завершающей фазой исполнения команды является фаза изменения состояния процессора в соответствии с выполненной командой. Назначение этой фазы — сохранение последовательной модели исполнения программы при реальном параллельном выполнении отдельных команд и условном выполнении команд ветвления.
Устройства♦
переименования регистров
Рис. 1.20. Структура суперскалярного микропроцессора
Для изменения состояния процессора применяются два основных способа, причем оба основаны на использовании двух состояний: состояния, измененного в результате операции, и состояния, требуемого для восстановления.
При первом способе сохраняется состояние процессора в наборе контрольных точек или в буфере истории вычислений, которые в случае необходимости используются для восстановления состояния.
Второй способ предполагает рассмотрение логического (архитектурного) и физического состояния процессора. Физическое состояние изменяется немедленно по завершении очередной команды. Архитектурное состояние изменяется тогда, когда ясен результат условно выполненных команд. Для реализации этого способа используется переупорядочивающий буфер: результаты из буфера отправляются в файл архитектурных регистров и в память.
В переупорядочивающем буфере для каждой команды содержится соответствующее ей значение счетчика команд и значения других регистров, которые необходимы для корректного обслуживания прерываний.
На рис. 1.20 показаны основные компоненты суперскалярного микропроцессора: функциональные модули: выполнения операций с плавающей (FPU) и фиксированной (ALU) точкой, устройство загрузки/сохранения. файлы регистров, раздельная кэш-память команд и данных, а также вспомогательные модули, обеспечивающие динамическое планирование вычислительного процесса, устройство связи с кэш-памятью второго уровня, блок переупорядочивания команд и блок предварительной дешифрации.
Направления развития архитектуры процессоров с параллелизмом уровня команд
Как уже отмечалось, в суперскалярных процессорах предпринимается попытка в рамках модели последовательных программ реализовать параллельное исполнение команд этих программ. После извлечения последовательного потока команд между командами устанавливаются только действительно необходимые зависимости по данным. При этом сохраняется достаточно информации о порядке следования команд в исходной программе, чтобы сохранить их порядок при наступлении прерывания.
Типичный суперскалярный процессор выбирает команды и исследует их по мере выполнения. Исследование проводится с целью выявления и обработки команд перехода, идентификации типа команды для ее дальнейшего направления на соответствующий исполнительный блок или в буфер памяти. Выполняются также некоторые действия для смягчения зависимостей по данным, например, переименование регистров. VLIW-процессор возлагает на компилятор статическую реализацию тех функций, которые в суперскалярном процессоре выполняются динамически.
По крайней мере, два обстоятельства ограничивают эффективность использования суперскалярных архитектур. Во-первых, есть ограничения на степень параллелизма на уровне команд, даже если применяется самая совершенная техника суперскалярных вычислений. Во-вторых, сложность суперскалярного процессора возрастает, как количество параллельно исполняемых команд, и даже быстрее.
Природа этих ограничений состоит в том, что в программах существуют условные переходы, при условном выполнении которых, в случае их вложенности, резко возрастают требования к ресурсам, что ограничивает количество исполняемых команд. Кроме того, размер окна исполнения (число активных команд, которые могут исполняться параллельно) ограничивает присущий программе параллелизм, т. к. не рассматривается параллельное исполнение команд, находящихся на расстоянии, превышающем размер окна.
Вероятнее всего, что пределом распараллеливания при суперскалярной обработке является запуск одновременно на исполнение в каждом такте 7— 8 команд.
Альтернатива суперскалярнойобработке — длинное командное слово (VLIW). Достоинства VLIW заключаются в следующем. Во-первых, компилятор может более эффективно, исследовать зависимости между командами и выбирать параллельно исполняемые команды, чем это делает аппаратура суперскалярного процессора, ограниченная размеро^Гбкна'йспблнения.
Во-вторых, VLIW-процессор имеет более простое устройство управления и потенциально может иметь более высокую тактовую частоту.
Однако у VLIW-процессоров есть серьезный фактор, снижающий их производительность. Это команды ветвления, зависящие от данных, значения которых становятся известны только в динамике вычислений. Окно исполнения VLIW-процессора не может быть очень большим ввиду отсутствия у компилятору информации о зависимостях, формируемых динамически, в процессе выполнения. Этот недостаток препятствует возможностйпереупо- рядочивания операций в VLIW-процессоре. Например, статически не может быть гарантировано правильное выполнение операции загрузки в вызываемой функции параллельно с операцией запоминания в вызывающей функции (особенно, если вызываемая функция определена динамически). Кроме того, VLIW-реализация требует большого размера памяти имен, многовходовых регистровых файлов, большого числа перекрестных связей. Возможен такжё~останов, когда во время выполнения возникла ситуация, отличающаяся от состояния в момент генерации плана выполнения (например, во время выполнения произошло неудачное обращение в кэш).
Суперскалярные микропроцессоры и процессоры с длинным командным словом являются современными продуктами микроэлектроники, и их производительность постоянно растет, но при использовании этих процессоров необходимо тщательно исследовать архитектурные приемы получения высо-
кой производительности и проверять адекватность этих приемов проблем- ' ной области, для решения задач которойсоздается вычислительная система?
Дальнейшее повышение производительности микропроцессоров связывается в настоящее время со статическим и динамическим анализом кода с целью выявления параллелизма уровня программных сегментов, с использованием информации, Предоставляемой компилятором языка высокого уровня. Исследования в данном направлении привели к разработке мультитредовой архитектуры процессоров, которые являются дальнейшим развитием суперскалярной архитектуры.
В настоящее время работы в данном направлении находятся на стадии теоретического исследования и имитационного моделирования. Однако уже появился первый мультитредовый микропроцессор фирмы Intel. Процессоры, в полной мере использующие все преимущества, предоставляемые мультитредовой архитектурой, разрабатываются фирмами IBM и SUN. Поэтому основные моменты, связанные с данной архитектурой, будут рассмотрены достаточно подробно в разд. 1.4.
Другим возможным подходом служит переход к ?мультипроцёссорному ис- ~полненйю~на однокристальных вычислительных системах?) В этом случае речь идет о распараллеливающих компиляторах с языков высокого уровня.
Организация многоуровневой памяти в микропроцессорах
Протоколы когерентности памяти микропроцессоров .
Одно из предназначений микропроцессоров состоит в их использовании как элементов вычислительных систем. В зависимости от того, для построения параллельных систем с какой архитектурой предназначается микропроцессор, в нем реализуется тот или иной протокол когерентности многоуровневой памяти. В следующих разделах рассмотрим два протокола: один для систем с архитектурой SMP, использующих для объединения процессоров и памяти системную шину, другой для систем с распределенной по процессорам памятью.
Протокол когерентности MESI
В микропроцессорах, предусматривающих возможность их использования в мультипроцессорных системах с архитектурой SMP, применяется протокол MESI (Modified Exclusive Shared Invalid) организации кэш-памяти с обратной записью, который предотвращает лишние передачи данных между кэшпамятью и основной памятью. Так, если данные в кэш-памяти не изменялись, то незачем их пересылать. Кроме того, возможны еще усовершенство-
вания, которые применены в микропроцессоре Intel 80860ХР, связанные с уменьшением количества сквозных записей 119).
Для представления алгоритма поддержки когерентности кэш-памяти MESI зададим некоторые начальные условия и введем определения. Итак, каждый микропроцессор имеет собственную локальную кэш-память, имеется также обшая разделяемая основная память, все микропроцессоры подсоединены к основной памяти посредством системной шины. К шине подключены также внешние устройства.
Важно понимать, что все действия с использованием транзакций шины, производимые микропроцессором и внешними устройствами, с копиями строк, как в каждой кэш-памяти, так и в основной памяти, доступны для отслеживания всем микропроцессорам. Это является следствием того, что в каждый момент на шине передает только один, а воспринимают все, подключенные к шине абоненты. Поэтому, если для объединения микропроцессоров используется не шина, а другой тип коммутационной среды, то для работоспособности протокола MESI необходимо обеспечение вышеуказанного порядка выполнения транзакций, чтобы они были доступны для отслеживания всем микропроцессорам.
Каждая строка кэш-памяти микропроцессора может находиться в одном из следующих состояний:
М — строка модифицирована (доступна по чтению и записи только в этом микропроцессоре, потому что модифицирована командой записи по сравнению со строкой основной памяти);
Е — строка монопольно копированная (доступна по чтению и записи в этом микропроцессоре и в основной памяти);
S — строка множественно копированная или разделяемая (доступна по чтению и записи в этом микропроцессоре, в основной памяти и в кэшпамяти других микропроцессоров, в которых содержится ее копия);
I — строка, невозможная к использованию (строка не доступна ни по чтению, ни по записи).
Состояние строки используется, во-первых, для определения микропроцессором возможности локального, без выхода на шину, доступа к данным этой кэш-строки в кэш-памяти, а, во-вторых, для управления механизмом когерентности.
Для управления режимом работы механизма поддержки когерентности используется бит WT, состояние 1 которого задает режим сквозной (write- through) записи, а состояние 0 — режим обратной (write-back) записи в кэшпамять.
При исполнении команд чтения и записи состояние строки кэш-памяти, к которой выполняется доступ, определяется в табл. 1.2.
Таблица 1.2. Переходы между состояниями в протоколе MESI при выполнении команд чтения и записи
ИсходноеСостояние
состояние строкипосле чтения
Состояние после записи
1Если WT = 1 тогда Е, иначе S.
Сквозная запись в основную
Обновление строки путем ее чтения из основной памяти
памЯ1ь; I
SS
Сквозная запись в основную память; если WT = 1 тогда Е, иначе S
ЕЕ
М
ММ
М
Промах чтения в кэш-памяти заставляет вызвать строку из основной памяти и сопоставить ей состояние Е или S. Кэш-память заполняется только при промахах чтения. При промахе записи транзакция записи помещается в буфер и посылается в основную память при предоставлении шины.
При несостоятельной строке в состоянии I команда чтения данного из этой строки вызывает чтение строки из основной памяти, размещение ее в кэш памяти и изменение состояния этой строки в кэш-памяти на Е или S. Состояние Е будет, если установлен режим сквозной записи, при котором запись производится и в строку кэш-памяти, и в строку основной памяти. Состояние S устанавливается при режиме обратной записи, что позволяет модифицировать данные строки кэш-памяти без немедленной модификации строки основной памяти, что, в свою очередь, увеличивает производительность. До тех пор, пока к данным строки не будет доступа других микропроцессоров или внешних устройств, не будет обратной записи, и микропроцессор не будет использовать шину.
При состоянии 1 строки команда записи в эту строку изменяет только содержимое строки основной памяти (сквозная запись), но не изменяет со= держимое кэш-памяти и сохраняет состояние строки I.
В состоянии S строки чтение данных из этой строки не меняет ее состояние. Если установлен режим сквозной записи, то после завершения записи состояние строки меняется на Е, при режиме обратной записи выполняется сквозная запись, но состояние строки остается прежним — S.
Если состояние строки Е, то при команде чтения это состояние сохраняется, а выполнение команды "запись" переводит строку в состояние М.
Наконец, если состояние строки М, то как команды чтения, так и команды записи не меняют состояния строки.
Для поддержки когерентности строк кэш-памяти при операциях ввода/ вывода и обращениях в основную память других процессоров на шине генерируются специальные циклы опроса состояния типов кэш-памяти. Эти циклы опрашивают типы кэш-памяти на предмет хранения в них строки, которой принадлежит адрес, используемый в операции, инициировавшей циклы опроса состояния. Возможен режим принудительного перевода строки в состояние I, который задается сигналом INV. При этом состояние строк определяется в табл. 1.3.
Таблица 1.3. Переходы между состояниями в протоколе MESI при операциях ввода/вывода
Исходное состояние
INV = O
INV = 1
I
S
I
S
Е
S
М
S; обратная запись строки
I; обратная запись строки
Протокол DASH
Для мультипроцессорных систем, в которых память физически распределена ' между процессорными модулями, и транзакции работы с памятью каждого микропроцессора непосредственно не доступны для наблюдения другим микропроцессорам, идентичность данных в типах кэш-памяти (когерентность кэшей) различных процессорных модулей поддерживается с помощью межмодульных пересылок. Существует несколько основных подходов.
Прямолинейный подход к поддержанию когерентности кэш-памяти в мультипроцессорной системе, основная память которой распределена по вычислительным модулям (ВМ), заключается в том, что при каждом промахе в кэш-память в любом процессоре инициируется запрос требуемой строки из того блока памяти, в котором эта строка размещена. В дальнейшем этот блок памяти будет по отношению к этой строке называться резидентным. Запрос передается через коммутатор в модуль с резидентным для строки блоком памяти, из которого затем необходимая строка через коммутатор пересылается в модуль, в котором произошел промах. Таким образом, в частности, обеспечивается начальное заполнение кэш-памяти. При этом в каждом модуле для каждой резидентной строки ведется список модулей, в кэш-памяти которых эта строка размешается, либо организуется распределенный по ВМ список этих строк. Строка, размешенная в кэш-памяти более чем одного модуля, в дальнейшем будет называться разделяемой.
Собственно когерентность кэшей обеспечивается следующим. При обращении к кэш-памяти в ходе операции записи данных, после самой записи, процессор приостанавливается до тех пор, пока не выполнится последовательность действий: измененная строка кэш-памяти пересыдается в резидентную память модуля, затем, если строка была разделяемой, она пересылается из резидентной памяти во все модули, указанные в списке разделяющих эту строку. После получения подтверждений, что все копии изменены, резидентный модуль пересылает в процессор, приостановленный после записи, разрешение продолжать вычисления.
Изложенный алгоритм обеспечения когерентности хотя и является логически работоспособным, однако практически редко применяется из-за больших простоев процессоров при операциях записи в кэш-строки. На практике применяют более сложные алгоритмы, обеспечивающие меньшие простои процессоров, например, DASH |20].•
Каждый модуль памяти имеет для каждой строки, резидентной в модуле, список модулей, в кэш-памяти которых размешены копии этой кэш-строки. С каждой строкой в резидентном для нее модуле связаны три ее возможных глобальных состояния:
"некэшированная", если копия строки не находится в кэш-памяти какого-либо другого модуля, кроме, возможно, резидентного для этой строки;
"удаленно-разделенная", если копии строки размещены в кэшах других модулей;
"удаленно-измененная", если строка изменена операцией записи в каком-либо модуле.
Кроме этого, каждая кэш-строка находится в одном из трех локальных состояний:
"невозможная к использованию";
"разделяемая", если есть неизмененная копия, которая, возможно, размещается также в других кэшах;
"измененная", если копия изменена операцией записи.
Каждый процессор может читать из своей кэш-памяти, если состояние читаемой кэш-строки "разделяемая" или "измененная". Если кэш-строка отсут- - ствует в кэш-памяти или находится в состоянии "невозможная к использо- ' ванию", то посылается запрос "промах чтения", который направляется в модуль, резидентный для требуемой кэш-строки.
1 Если глобальное состояние кэш-строки в резидентном модуле "некэшированная" или "удаленно-разделенная", то копия кэш-строки посылается в запросивший модуль, и в список модулей, содержащих копии рассматриваемой кэш-строки, вносится модуль, запросивший копию.
Если состояние кэш-строки "удаленно-измененная", то запрос "промах чтения" перенаправляется в модуль, содержащий измененную кэш-строку. Этот модуль пересылает требуемую кэш-стрбку в запросивший модуль и в модуль, резидентный для этой кэш-строки, и устанавливает в резидентном модуле для этой кэш-строки состояние "удаленно-разделенная".
Если процессор выполняет операцию записи и состояние кэш-строки, в которую производится запись "измененная", то запись выполняется, и вычисления продолжаются. Если состояние кэш-строки "невозможная к использованию" или "разделяемая", то модуль посылает в резидентный для кэш- строки модуль запрос на захват в исключительное использование этой кэш- строки и приостанавливает выполнение записи до получения подтверждений, что все остальные модули, разделяющие с ним рассматриваемую кэш- строку, перевели ее копии в состояние "невозможная к использованию".
Если глобальное состояние кэш-строки в резидентном модуле "некэширо- ванная", то кэш-строка отсылается запросившему модулю, и этот модуль продолжает приостановленные вычисления.
Если глобальное состояние кэш-строки "удаленно-разделенная", то резидентный модуль рассылает по списку всем модулям, имеющим копию кэш- строки, запрос на переход этих строк в состояние "невозможная к использованию". По получении этого запроса каждый из модулей изменяет состояние своей копии кэш-строки на "невозможная к использованию" и посылает подтверждение исполнения в модуль, инициировавший операцию записи. При этом в приостановленном модуле кэш-строка после исполнения записи переходит в состояние "удаленно-измененная".
Предпринимаются попытки повысить эффективность реализации алгоритма когерентности, в частности, за счет учета специфики параллельных программ, в которых используются асинхронно одни и те же данные на каждом временном интервале исключительно одним процессором с последующим переходом обработки к другому процессору. Такого рода ситуации случаются, например, при определении условий окончания итераций. В этом случае возможна более эффективная схема передачи кэш-строки из кэш-памяти одного процессора в кэш-память другого процессора.
Подход к выбору протоколов когерентности
Рассуждения о том, какой способ организации кэш-памяти более предпочтителен, должны учитывать особенности генерации программ компилятором, а также использование программистом при подготовке программы сведений о работе компилятора и контроллера кэш-памяти. То есть более простой способ организации кэш памяти, поддерживаемый компилятором, при исполнении программ, написанных в соответствии с некоторыми правилами, обусловленными особенностями компиляции и организации кэшпамяти, может дать лучший результат, чем сложный способ организации кэш-памяти.
Организация кэш-памяти микропроцессоров
Так как области памяти программ и данных различны и к ним происходит одновременный доступ, то для повышения параллелизма при работе с памятью делают отдельные типы кэш-памяти команд и данных.
Ускорение переключения контекста процессора
Подходы к сокращению времени переключения контекста процессора
Современные операционные системы и системы программирования широко используют переключение контекста процессора (содержимого регистров и отдельных управляющих триггеров) при отработке входа в прерывание и выхода из него, входа и выхода из подпрограммы и в случае организации мультипрограммной работы. Время переключения контекста должно быть по возможности минимальным, т. к. затраты на переключение — это плата за Организацию совместного протекания совокупности взаимодействующих вычислительных процессов.
Уменьшение времени переключения контекста процессора может быть достигнуто за счет, во-первых, сокращения количества регистров, содержимое которых сохраняется в памяти, во-вторых, аппаратной поддержки сохранения регистров и, в-третьих, введения специальных соглашений, регламентирующих использование регистров в программах, что позволяет перейти от полного сохранения контекста к частичному.
Уменьшение количества сохраняемых регистров
Уменьшение количества сохраняемых регистров ведет к снижению производительности и, вообще говоря, находится в противоречии со стремлением увеличения производительности за счет использования быстрой регистровой памяти и параллельного функционирования устройств процессора, каждое из которых содержит собственные регистры. Однако этот прием применяется в ряде архитектур, например в транспьютерах компании INMOS Ltd |21| и Java-процессорах |22]. Это архитектуры, основанные на операциях со стеком. К числу сохраняемых регистров относятся указатели на текущую позицию стека, на используемую область памяти и т. д. Число таких указателей ограничено, например в транспьютере их 8, что позволило переключать контекст за 2 мкс при тактовой частоте 10 МГц.
Аппаратная поддержка сохранения регистров
Аппаратная поддержка может реализовываться по-разному. С одной стороны, это может быть ускоренный аппаратный перенос содержимого рсгист-
4 Зак. 1086
ров в память. С другой — возможно предоставление каждой вновь активизируемой программе своего множества регистров.
Например, в архитектуре SPARC микропроцессоров компании SUN используется 8 групп (окон) по 32 регистра с общими для двух соседних окон восемью регистрами. Перекрытие регистровых окон выполнено так, что регистры с номерами 24—31 предыдущего окна служат одновременно регистрами с номерами 0—7 последующего окна. Это, по мнению разработчиков, увеличивает эффективность передачи параметров подпрограммам.
Использование регистров обработки быстрых прерываний
Ряд функций, связанных с обработкой прерываний, выполняются специализированными программами, которые могут использовать ограниченное число регистров. Поэтому в ряде процессоров вводятся специальные регистры, используемые при обработке так называемых быстрых прерываний. Это, например, прерывание по приему очередного символа сообщения, переносящее символ в память. Действия по началу приема, требующие запуска механизма распределения памяти, и завершению приема всего сообщения требуют, как правило, обычного прерывания, сохраняющего все регистры процессора. Но т, к, чаще происходит прием очередного символа, то быстрые прерывания дают существенное увеличение производительности.
Расширение функциональных возможностей микропроцессоров
Направления расширения функциональных возможностей
Наряду с увеличением количества арифметико-логических устройств, в । микропроцессоры вводятся дополнительные функциональные возможности:
интегрируются функции по управлению памятью и периферийными устройствами, для исполнения которых в традиционных микропроцессорах : используются так называемые "чипсеты";
вводятся блоки обработки мультимедийных данных, ранее использовав- , шиеся, например, в сигнальных микропроцессорах;
интегрируются интерфейсы сетевых и телекоммуникационных систем, такие как Ethernet, ATM, FDDI, что позволяет соединять эти микропроцессоры друг с другом и телекоммуникационными и вычислительными , сетями без дополнительных адаптеров.
Следует отметить, что идея создания однокристального компьютера всегда была популярной. В настоящее время проблема реализации на одном кри-
сталле встраиваемого блока памяти EDRAM (Embedded DRAM) достаточно большого объема и микропроцессорного ядра близка к своему решению. Фирма IBM объявила о создании компактной ячейки динамической памяти, размер которой (0,62 мкм2) всего в 1,5 раза превышает размер ячейки в 64- мегабитной микросхеме DRAM |25]. Блок EDRAM объемом 16 Мбит занимает площадь 20,8 мм2. При этом пропускная способность EDRAM достигает 50 Гбайт/с.
Фактически наступает время построения микросхем, в которых микропроцессор служит одним из составных элементов (ядер), однокристальных систем SOC (System On Chip). Фирма Motorola, например, предлагает два семейства кристаллов, в которых в качестве ядра используется PowerPC бОЗе. Это семейства па основе технологий AltiVec и PowerQUICC.
Интеграция управления памятью и периферией
Важность этой проблемы очевидна. Например, для того, чтобы построить компьютер с использованием микропроцессора Pentium, необходим набор микросхем (чипсет) Intel 440ХХ, для Pentium III требуется Intel® 440ВХ AGPset.
Фирма SG1 создала набор микросхем Cobalt и Lithium для компьютеров SG 320 и SG 540 на базе микропроцессоров Pentium II. Первая микросхема имеет около 10 млн транзисторов и выполняет роль интегрированного контроллера памяти и графического процессора. Микросхема Lithium реализует процессор ввода/вывода, который управляет интерфейсами S-video, IEEE । 1394, PCI, Ethernet.
Как правило, наборы микросхем разрабатываются самими фирмами, изготовляющими микропроцессоры. Внесение функций наборов микросхем внутрь микропроцессора позволяет существенно упростить системные платы компьютеров. Конечно, применение одного микропроцессора с разными наборами микросхем позволяет строить компьютеры разных классов и ценовых диапазонов, но это актуально только в условиях, когда необходимо экономить аппаратные ресурсы.
Первым представителем этого направления служит микропроцессор UltraSparc И i.
Мультимедийные расширения
Многие производители расширяют функциональные возможности выпускаемых ими микропроцессоров за счет введения специализированных блоков для мультимедийных приложений. Следует отметить, что подобный блок графического процессора имелся в микропроцессоре второго поколения Intel 80860 фирмы Intel, что на некоторых приложениях давало существенный прирост производительности.
Блоки для обработки мультимедийных данных имеют микропроцессоры фирмы Intel (MMX-расширение системы команд Pentium и 70 новых SIMD- команд Pentium 111), фирмы AMD (3D NOW), фирмы SUN (VIS SPARC), фирмы Compaq/DEC (Alpha MVI), фирмы HP (PA RISC MAX2), фирмы SGI/MIPS (MDMX), фирмы Motorola (PowerPC AltiVec) |23],
Возможны различные варианты встраивания команд мультимедийной обработки в систему команд микропроцессора: на уровне функционального блока, использующего общий с другими блоками файл регистров (ММХ Pentium) или на уровне отдельного процессора со своим регистровым файлом, используя разнеееннную (decoupled) архитектуру. Последний вариант применен в Pentium III и PowerPC AltiVec.
Команды мультимедийной обработки задают параллельную обработку в режиме SIMD-процессора нескольких единиц данных, представленных, как правило, мадоразрядными (8, 16, 32) числами в формате с фиксированной точкой. Однако это не исчерпывает всех текущих потребностей, и в Pentium III введена параллельная обработка в режиме SIMD-процессора четырех 32- разрядных операндов в формате с плавающей точкой.
Коммуникационные расширения
Интеграция коммуникационных интерфейсов в кристалл микропроцессора бы- | ла впервые сделана в транспьютерах. В современных микропроцессорах такие 1 интерфейсы также вводятся для построения параллельных систем. Яркими I представителями служат Alpha 21364 и Power 4. Фирмы IBM, Toshiba и Sony ведут совместную разработку микропроцессора Cell, который должен представлять 1 собой "суперкомпьютер на кристалле" со связными интерфейсами.
Повсеместный переход от шин с временным разделением, таких как РС1, VME, к каналам "точка-точка" PCI-Express, Rapid IO, HyperTransport, Infini- * Band окончательно закрепит в архитектуре микропроцессоров интерфейсы для образования распределенных вычислительных систем.
Кроме специальных интерфейсов, предназначенных для построения парал- дельных систем, в кристаллы вводятся телекоммуникационные интерфейсы.
В процессорах Motorola МРС8260 поддерживается множество телекоммуникационных протоколов, включающих, например, 10/100 Мбит/с Ethernet/ 155 Мбит/с ATM. 256 каналов 64 Кбит/с HDLC._
Стандартизация архитектур микропроцессоров
Проблемы стандартизации
На протяжении всей истории развития вычислительной техники предпри*; нимались попытки (прежде всего со стороны разработчиков программных
средств) стандартизировать архитектуру процессоров, что существенно расширило бы область применения создаваемого программного обеспечения. Осознав безуспешность попыток добиться совместимости на уровне системы машинных команд, разработчики пытались стандартизировать язык ассемблера, языки высокого уровня, языки интерфейса прикладных программ с операционными системами.
Стимулом к этому была и остается постоянно растущая сложность как самих процессоров, так и создаваемых с их использованием программных систем.
Создание сложных новых систем требует помимо всего прочего наличия двух обязательных этапов: адекватного описания системы и исчерпывающего тестирования на соответствие этому описанию. Тестирование должно быть доказательным. Не прибегая к примерам из области создания больших прикладных систем, укажем на широко известные ошибки в микропроцессорах известных компаний и на наличие недекларированных возможностей микропроцессоров и операционных систем.
Отсутствие стандартизации не позволяет создавать новые системы путем конструирования из существующих, прошедших апробацию в разнообразных условиях применения большим количеством независимых пользователей.
Попытка комплексного решения проблемы стандартизации — формулирование концепции "открытых систем" |24|. Открытые системы представляют совокупность интерфейсов, протоколов и форматов данных, базирующихся на общедоступных, общепринятых стандартах, обеспечивающих переносимость (мобильность) программного обеспечения, взаимодействие между системами, масштабируемость.
Переносимость — свойство, выражающееся в возможности исполнения программы в исходных кодах на различных аппаратных платформах в среде различных операционных систем.
Взаимодействие систем — свойство, выражающееся в способности систем обмениваться информацией с автоматическим восприятием форматов и семантики данных.
Масштабируемость — свойство, выражающееся в возможности исполнения программы на различных ресурсах (объем памяти, число и производительность процессоров) с пропорциональным изменению ресурсов значением показателей эффективности. Важно понимать, что ресурсы могут не только возрастать, но и уменьшаться. Например, программа может выполняться на произвольно выделенном для ее исполнения участке памяти.
В рамках концепции "открытых систем" архитектура процессора должна поддаваться достаточно простому формальному описанию со спецификацией типов данных, регистров и выполняемых преобразований без "побочных эффектов".
Известны, по крайней мере, две попытки реализации этого подхода.
Архитектурно независимая спецификация программ
В настоящее время в рамках Международной организации по стандартизации 1SO/1EC в Комитете по микропроцессорным системам ведется подготовка проекта стандарта ANDF (Architecture Neutral Distribution Format) на архитектурно независимый формат спецификации программ. По мнению разработчика компании X/Open Company Ltd., этот формат спецификаций позволит решить проблему переносимости программ. Компиляция исходного кода предполагается двухэтапной. На первом этапе исходный код транслируется в обобщенные декларации интерфейсов прикладных программ (API) в совокупности с обобщенными описаниями типов данных. Фактически полученная оттранслированная программа представляет собой выражение абстрактной алгебры, определенной Architecture Neutral Distribution Format. В результате текст программы может быть подвергнут формальной проверке и преобразованию. На втором этапе генерируется программа для конкретной архитектуры.
Java-технология
Эта технология была предложена компанией SUN. В основе данной технологии лежит понятие виртуальной Java-машины, спецификации которой включают следующие типы данных:
О byte — байт;
short — двухбайтное целое;
integer — четырехбайтное целое;
long — восьмибайтное вещественное;
float — четырехбайтное вещественное;
double — восьмибайтное вещественное;
char — двухбайтный символ;
object — четырехбайтная ссылка на объект;
returnAddress — четырехбайтный адрес возврата.
В виртуальной Java-машине предусмотрены следующие регистры:
рс — счетчик команд;
О vars — регистр для доступа к локальным переменным;
optop — указатель на стек операндов;
Frame — указатель на окружение времени выполнения.
Большинство команд Java-машины имеют длину один байт, что согласуется со стековой архитектурой процессора, использующей небольшое число регистров и указателей на данные.
Использование байт-кода в Java-машине позволяет уменьшить длину программ. Средняя длина команды составляет 1,8 байта. В последнее время ко всем ранее существовавшим доводам в пользу стандартизации архитектур добавилась практическая потребность работы в сетях типа Internet, что выдвигает требование короткого программного кода. Открытые системы, создаваемые в Internet, позволят накапливать программные продукты и конструировать системы из уже существующих.
Заметим, что архитектура виртуальной Java-машины достаточно похожа на архитектуру транспьютеров компании IMMOS. Отличие фактически состоит в добавлении элементов объектно-ориентированной технологии. Одним из препятствий на пути развития Java-технологии является низкая производительность исполнения Java-кода. Однако есть все предпосылки для преодоления этого препятствия. Например, современные процессоры с архитектурой компании Intel х86 содержат специальный блок, транслирующий сложные команды в совокупность простых команд RISC-процессора. Далее RISC-процессор исполняет эти команды, используя все преимущества RISC- подхода для достижения высокой производительности. Вполне мыслимое дело — разработать подобный транслятор для Java-кода, когда байт-код будет транслироваться в команды реального процессора.
Другой подход к повышению производительности ранее применен в транспьютере Т-9000 [25]. В нем предпринята попытка при сохранении байтовой системы команд транспьютеров семейств Т-2хх, Т-4хх, Т-8хх повысить скорость исполнения за счет одновременной обработки большого числа команд при исполнении их на параллельно функционирующих обрабатывающих устройствах.
Мультитредовые микропроцессоры
Основы мультитредовой архитектуры
Суперскалярные микропроцессоры и микропроцессоры с длинным командным словом имеюч^один счетчик команд и, в силу этого, могут быть названы [однотрёдовыми] В этих микропроцессорах^команды, исследуемые на предмет возможности их параллельного совместного исполнения, привязаны к счетчику команд процессора либо окном исполнения как в суперскалярных микропроцессорах, либо длинной командой как в микропроцессорах с длинным командным словом. Для того чтобы более агрессивно выбирать для параллельного исполнения команды одной или нескольких программ, в микропроцессор вводится-'несколько счетчиков командой, возможно, другого оборудования. Микропроцессоры с несколькими счетчиками команд получили название мулыпитредовых [26—28].
Мультитредовая архитектура решает проблему борьбы с простоями функциональных устройств процессора, возникающими из-за невозможности выполнения следующей команды, путем переключения на другой регистровый файл, тем самым процессор получает другой контекст для продолжения вычислений, переходя к выполнению другого треда (процесса).
Переключение процессора на другой регистровый файл выполняется либо по наступлению некоторого события, влекущего за собой простой процессора (промах в кэш-память, обращение к оперативной памяти, наступление прерывания), либо принудительно, например, в каждом такте, как в Тега МТА |27|.
В Тега МТА проблема разрыва между скоростью обработки в процессоре и временем доступа в основную память решается посредством принудительного переключения в каждом такте процессора на работу с очередным множеством регистров. Структура мультитредового процессора представлена на рис. 1.21. Каждый набор регистров обслуживает один вычислительный процесс, называемый тредом.
Рис. 1.21. Мультитредовая архитектура
Всего в процессоре имеется п наборов регистров. Поэтому запрос, выданный в основную память процессом, может обслуживаться в течение п -1 тактов, вплоть до момента, когда процессор снова переключится на тот же набор регистров. Тем самым по отношению к одному треду исполнение его команд замедляется в п раз. Значение п выбирается исходя из того, чтобы время доступа в память было меньше, чем время длительности п - 1 такта
процессора. Задача формирования п тредов целиком возлагается на компилятор.
При всем различии подходов к созданию мультитредовых микропроцессоров общим в них является введение множества процессорных элементов, содержащих устройство выборки команд, которое организует окно исполнения для одного треда. В рамках одного треда может выполняться предсказание переходов, переименование регистров, динамическая подготовка команд к исполнению. Тем самым, общее количество команд, находящихся в обработке, значительно превышает размер окна исполнения суперскалярного процессора, с одной стороны, и тактовая частота не лимитируется размером окна исполнения, с другой стороны.
Выявление тредов может выполняться компилятором при анализе исходного кода на языке высокого уровня или исполняемого кода программы. Однако компиляторы не всегда могут разрешить проблемы зависимостей при использовании регистров и ячеек памяти между тредами, что требует разрешения этих зависимостей уже в ходе исполнения тредов.
Для этого в микропроцессор вводится специальная аппаратура условного исполнения тредов, предусматривающая возврат с отбрасыванием наработанных результатов в случае обнаружения нарушения зависимостей между тредами. Нарушением зависимости, например, может служить запись по вычисляемому адресу в одном треде в ту же ячейку памяти, из которой выполняется чтение, которое должно следовать за этой записью, в другом треде. В этом случае, если адреса записи и чтения не совпадают, нарушение отсутствует. При совпадении адресов — фиксируется нарушение, которое Должно вернуть исполнение треда к команде чтения правильного значения. Интерфейс между аппаратурой мультитредового процессора, поддерживающей протекание каждого отдельного треда, и аппаратурой, общей для исполнения всех тредов, может быть установлен как после устройств выборки команд треда и принадлежащих треду функциональных устройств, так и на уровне доступа к разделяемой памяти. В первом случае каждый тред использует собственные функциональные устройства, например, целочисленное АЛУ и ряд общих для всех тредов функциональных устройств, например, для выполнения операций с плавающей точкой. Тесная связь по ресурсам позволяет эффективно исполнять последовательные программы с сильной зависимостью между тредами. В этом случае имеет место реализация мультискалярного мультитредового процессора (SMT — simultaneous multithreading).
Во втором случае для исполнения каждого треда фактически выделяется функционально законченный процессор. В целом, эта структура ориентирована на исполнение независимых и слабо связанных тредов, порождаемых либо одной программой, либо их совокупностью. В этом случае скорее надо говорить не о процессоре, а об однокристальной системе (CMP — chip multiprocessing).
Мультитредовый процессор может исполнять треды, принадлежащие одной или нескольким программам. Если процессор исполняет одну программу, то говорят о его производительности, если несколько программ — о пропускной способности.
По оценкам • [29|, при обработке транзакций мультитредовый процессор Alpha 21464 будет в 10 раз производительнее, чем современный Alpha 21264. При этом ускорение в 2 раза ожидается за счет именно мультитредовой архитектуры. Еще в 2 раза ускорение прогнозируется за счет увеличения использования параллелизма уровня команд. Остальные 2,5 раза должны быть достигнуты за счет усовершенствования технологии и повышения тактовой частоты.
Мультитредовые микропроцессоры и однокристальные системы вбирают накопленные в ходе эволюции приемы повышения производительности микропроцессоров и используют симбиоз компиляторов и аппаратуры, соответственно для статического и динамического выявления параллелизма из исходных последовательных программ. Ориентация на исполнение совокупности тредов с определенной степенью межтредовых зависимостей обусловливает конкретные решения по совместному использованию тредами функциональных устройств. Суть мультитредовой архитектуры — использование совокупности регистровых файлов в процессоре. То есть транзисторы используются не для образования кэш-памяти, а для формирования совокупностей регистровых файлов, включающих счетчик команд, регистры состояния и рабочие регистры.
Хотя фирма Intel уже ввела двухтредовую архитектуру в своих процессорах Xeon и Pentium 4, предстоят еще значительные исследования по мультитре- довым архитектурам. Компания Тега [27] объявила о разработке проекта мультитредового микропроцессора Torrent, реализующего процессор МТА. Фирма Level One, образованная Intel, выпустила мультитредовый сетевой микропроцессор IXP1200, содержащий в своем составе 6 четырехтредовых процессоров [28]. IBM анонсировала проект компьютера Blue Gene [26] с , производительностью 1015 flops (Floating Point Operations per Second — операций с плавающей точкой двойной точности в секунду). Кристалл микропроцессора Blue Gene включает 32 восьмитредовых процессора. В кристалл, встроена DRAM, реализованная как 32 блока. Каждый блок соответствует одному из 32 процессоров и имеет 256-разрядную шину доступа. Так как DRAM имеет высокую пропускную способность и малую задержку, то при,, восьмитредовой структуре процессора становится возможным отказаться от кэш-памяти, вместо которой между процессором и памятью используется! небольшая буферная память. Компании IBM, Sony, Toshiba ведут совместный проект по разработке мультитредового процессора Cell (биологическая; клетка, ячейка), само название которого достаточно красноречиво свидетельствует о его предназначении (вторая попытка ввести название нового^ класса микропроцессоров после неудачи с термином "транспьютер”?). В |54|
утверждается, что этот процессор должен появиться в конце 2004 года. Его производительность должна превышать более чем в 100 раз производительность Pentium 4 с тактовой частотой 2,5 ГГц.
Выявление тредов
Треды могут выявляться как на основе потоков управления (control driven), так и на основе потоков данных (data driven) программ (30]. Треды бывают условно или безусловно исполняемыми.
В безусловно исполняемых тредах доступ к разделяемым переменным в регистрах и памяти обязан быть синхронизирован. Треды должны порождаться оператором fork только тогда, когда они действительно необходимы, т. к. аппаратура процессора не отслеживает нарушений порядка доступа. Состояние разделяемых переменных должно быть таким же, как при последовательном исполнении программы. Безусловно исполняемые треды имеют явно заданные операторы синхронизации и взаимодействия между собой. Отличие безусловно исполняемых тредов на мультитредовом процессоре от протекания тредов в процессорах параллельной системы состоит в том, что во втором случае процессы взаимодействуют между собой посредством пересылки данных и синхронизации без всяких ограничений, т. к. они представляют собой параллельную программу. В первом же случае передачи данных возможны только от ранее порожденных тредов к тредам, порожденным позднее, т. к. в этом случае выполняется последовательная программа.
В условно исполняемых тредах требуемый порядок доступа к разделяемым переменным поддерживается аппаратными средствами, обнаруживающими нарушение порядка доступа. Доступ к переменным выполняется в предположении, что он допустим, а если оказалось, что произошло нарушение порядка, то неверные результаты отбрасываются. Для этого могут быть использованы буферы, которые хранят значения, не изменяя архитектурного состояния треда до подтверждения правильности доступа.
При выявлении тредов на основе потоков управления анализируются управляющие структуры последовательной программы, такие как циклы, итерации обращения к функциям и подпрограммам. Предпринимается попытка выявления сегментов кода с минимальными взаимозависимостями.
На концептуальном уровне треды, выявляемые на основе потоков данных программы, состоят из одной команды. Тред порождается, когда у команды появляется один операнд. Возможным расширением концепции этих тредов служит выполнение не одной команды по готовности всех операндов, а последовательности команд, возглавляемой этой командой. Передачи данных между тредами указываются явно.
Автоматическое преобразование программ на императивных языках в программы потоков данных находится в стадии исследования. Программы потоков данных пишутся на функциональных языках или специальных языках потоков данных.
Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы
Мультитредовая модель выполнения программы
Мультитредовые процессоры с условно исполняемыми тредами [31] используют агрессивную парадигму выполнения кода с целью извлечения условно исполняемых тредов из последовательной программы. В соответствии с данной парадигмой программа разбивается на совокупность единиц обработки, называемых далее сегментами, с помощью программных и аппаратных средств. Сегмент — часть программы, выполнению которой соответствует тред. Сегмент представляет собой непрерывную область последовательности команд (например, часть базисного блока, базисный блок, множество базисных блоков, одиночную итерацию цикла, полный цикл, обращение к функции и т. д.). Возможны различные методы формирования сегментов и организации их исполнения. Далее будет представлен один из возможных вариантов [31|, предметно иллюстрирующий суть мультитредового микропроцессора с условно исполняемыми тредами.
Для выполнения на мультитредовом процессоре сегменты программы статически разграничиваются аннотациями. Зависимости между операторами программы по управлению представляются как граф управляющих зависимостей (ГУЗ), в котором вершинами являются сегменты, а дугами задается порядок их выполнения. Динамика выполнения программы может рассматриваться как обход ГУЗ программы. На каждом шаге обхода мультитредо- вый процессор назначает один сегмент на один из процессорных элементов (ПЭ), предназначенный для выполнения треда, без учета фактического содержания сегмента, и продолжает обход ГУЗ от рассматриваемой вершины до следующей.
Сегмент назначается для выполнения некоторому процессорному элементу, передачей ему начального значения программного счетчика. Множество инициированных таким образом сегментов выполняется параллельно на процессорных элементах, результатом чего является выполнение множества команд за один процессорный такт.
Каждый из процессорных элементов выбирает и выполняет команды, принадлежащие выделенному ему сегменту. Значения разделяемых процессорными элементами регистров копируются в каждый ПЭ. Результат модифи-
кации содержимого регистров динамически направляется множеству параллельных ПЭ в соответствии с генерируемыми компилятором масками.
Доступ к памяти осуществляется спекулятивно (условно, по предположению), без знания последовательности предшествующих команд загрузки или сохранения. Обращение к данным осуществляется параллельно многим ПЭ, обработка приостанавливается только в случае истинной зависимости данных.
Пример архитектуры мультитредового процессора показан на рис. 1.2?.
Рис 1.22. Архитектура мультитредового процессора
Аналогично, следующие процессоры выполняют динамические команды базисных блоков А,, В,, В^, С2, D* и А’, В*,С,3, В^, С23, D3 согласно второй и третьей итерации соответственно. В этом примере потенциальным результатом мультискалярного подхода является выполнение трех полезных команд в такте. Например, в данном такте процессоры могли бы выполнять команды из динамических базисных блоков Я^С2 и В^ одновременно.
Важно заметить, что сегменты хотя и разделены на группы команд, но не являются независимыми. Так как сегменты являются частями последовательного потока команд, то отношения по данным и управлению между индивидуальными командами должны поддерживаться в процессе выполнения. Ключевым вопросом в мультитредовой реализации является обеспечение связи по данным и управлению между параллельными процессорами. То есть, как обеспечить выполнение последовательного обхода ГУЗ, если фактически выполняется непоследовательный обход?
Последовательный обход поддерживается следующим образом. Во-первых, для каждого процессора обеспечивается последовательная модель выполнения назначенного ему сегмента. Во-вторых, предписывается последовательный порядок выполнения для совокупности процессоров, который поддерживается с помощью организации циклической очереди ПЭ. Указатели начала ,и конца очереди идентифицируют ПЭ, которые выполняют самый ранний и самый поздний из назначенных сегментов соответственно. Например, согласно рассматриваемому ГУЗ (рис. 1.23), ПЭ в начале списка, выполняющий первую итерацию, предшествует ПЭ, выполняющему вторую итерацию, который, в свою очередь, предшествует ПЭ в конце списка, выполняющему третью итерацию.
По мере выполнения команд сегмента производятся и потребляются значения переменных программы. Эти значения связаны с местом хранения, а именно с регистрами и с памятью. Так как при последовательном выполнении область.хранения переменных рассматривается как единый набор регистров и памяти, мультитредовое выполнение должно поддерживать такую же модель. Кроме того, должно гарантироваться, что значения используются и производятся так же, как и при последовательном выполнении. В рассматриваемом примере значения, используемые командами в динамическом базисном блоке В^, должны быть результатами выполнения последовательности блоков А', В‘, С,1, В\, В'3,С2, D}, Л2, 52, а также предшествующих команд в В^. Чтобы обеспечить это, необходимо синхронизировать обмен между сегментами.
В случае использования регистровой памяти логика управления синхронизирует создание значений регистров в сегментах-предшественниках с по-
треблением этих значений в сегментах-преемниках. Производимые сегментом регистровые значения могут быть определены статически и отмечены в маске создания сегмента. В момент выработки соответствующего регистрового значения, если есть отметка в маске создания, это значение посылается через однонаправленный кольцевой канал (см. рис. 1.22) последующим сегментам, т. е. в ПЭ, которые являются логическими преемниками ПЭ, выработавшего значение. Загружаемые из кольцевого канала в регистры значения, предназначенные для сегментов-преемников, определяются в маске накопления, которая является объединением масок создания активных сегментов-предшественников. Как только значения получены из ПЭ предшественников, очищаются признаки сохранения в ПЭ-преемниках. Если сегмент использует одно из этих значений, потребляющая команда может быть исполнена только в том случае, если значение было получено, иначе она ждет получения требуемого значения.
В отличие от значений регистров, для значений, хранимых в памяти, в силу динамического вычисления адресов нельзя заранее точно определить, какие из них используются или производятся сегментом. Если известно, что сегмент потребляет значение из памяти (используя команду загрузки), которое произведено (с помощью команды сохранения) в более раннем сегменте, возможно синхронизировать потребление и производство этого значения. То есть загрузка в сегменте-преемнике может быть отложена до тех пор, пока в сегменте-предшественнике не будет выполнена команда сохранения (похоже на ситуацию с регистрами, однако механизм синхронизации все же другой ввиду несоизмеримости размеров пространства имен).
В общем случае, когда такое знание недоступно, может быть предпринят консервативный или агрессивный подход. Консервативный подход подразумевает необходимость ожидания до тех пор, пока не возникнет уверенность, что команда загрузки прочтет правильное значение. Этот подход обычно подразумевает задержку выполнения команд загрузки внутри сегмента до тех пор, пока не завершили операции записи в память все сегменты- предшественники, результат которых может быть использован последующей командой. При агрессивном подходе загрузки из памяти в регистры ПЭ должны выполняться спекулятивно, в предположении, что сегмент-предшественник позже не будет сохранять значения в ту же самую ячейку памяти. Чтобы |арантировать, что никакой сегмент-предшественник не записывает значение в ячейку памяти, предварительно считанную сегментом- преемником, должна проводиться проверка в процессе выполнения вычислений. Если эта проверка идентифицирует загрузку и сохранение, которые находятся в противоречии (не происходят в соответствующем порядке), более поздняя единица обработки должна быть прервана, и должна быть инициализирована соответствующая процедура восстановления. В мультитредо- вых процессорах используется агрессивный подход,
Из-за спекулятивного характера мультитредовое выполнение должно иметь как средства подтверждения правильности выполнения, так и средства исправления в случае неправильного выполнения. Выполнение команд внутри сегмента может рассматриваться как спекулятивное с двух точек зрения:
□ спекулятивное по управлению;
О спекулятивное по данным.
Если в результате спекулятивного управления предсказание следующего сегмента оказалось неверным, то следующий сегмент (сегменты) должен быть отменен и восстановлена правильная последовательность сегментов. Аналогично сегмент, использующий неправильные данные, должен быть отменен, и должно быть восстановлено правильное значение данных. В любом случае отмена сегмента приводит к отмене всех сегментов, выполняемых после отмененного (иначе поддержание последовательной семантики оказывается сложным).
Для упрощения сохранения последовательной семантики исполнения программы мультитредовый процессор удаляет сегменты из циклической очереди в том же порядке, в каком их помещал в очередь. В процессе спекулятивного выполнения сегмент производит значения, которые могут быть как правильными, так и неправильными. Только, безусловно, правильные результаты сегмента могут быть безопасно использованы другими сегментами. Тем не менее, в мультитредовом процессоре значения оптимистично посылаются для спекулятивного использования в ходе выполнения других сегментов. Поскольку сегмент посылает значения предварительно другим сегментам, как только их вырабатывает, большая часть, если не все значения, будут посланы к моменту, когда сегмент становится головным в очереди,. Таким образом, отмена сегмента для освобождения процессора и назначения нового сегмента может быть выполнена просто путем модифицирования указателя начала очереди.
Чтобы иллюстрировать мощность мультитрсдовой модели, рассмотрим пример, приведенный в листинге 1.6. В ходе выполнения данной программы из буфера неоднократно выбирается символ и проверяется на совпадение с элементами связанного списка. Если совпадение произошло, вызывается функция обработки символа. Если совпадения не произошло, символ включается в список. По мере выполнения программы добавления элементов в список станут нечастыми, поскольку большинство символов будет совпадать с элементами, уже содержащимися в списке.
При выполнении программы на мультитредовом процессоре сегмент, назначенный на процессор, выполняет один полный поиск по списку для соответствующего символа. Процессоры выполняют поиск по связанному списку параллельно, каждый для своего символа, в результате чего выполняется множество команд за один такт.
fui (indx = 0; indx t-BUFSIZE; indx ++) {
/* Получить символ для поиска */ symbol = SYMVAL (buffer [indx]);
/* Пог-прдпватепнный перебор для символа в списке */ for (list = listhd; list; list = LNEXT (list)) ( /* если символ содержится в списке, обработать его */ if (symbol == LELE (list)) ( process (list);
break;
}
/*, если символ в списке не найден, добавить его к хвосту списка */ if (! list) ( Addlist (symbol);
}
}
Мультитредовые программы
Программа, предназначенная для исполнения на мультитредовом процессоре, должна обеспечивать возможность быстрого обхода ее ГУЗ, в результате которого производится распределение множества сегментов по множеству процессоров.
Спецификация кода для каждого сегмента одинакова. Сегмент определяется как фрагмент программы для последовательной машины. Хотя система команд, в которой представляется код, оказывает влияние на конструкцию каждого индивидуального процессора, это не оказывает влияния на остальную часть конструкции мультитредового процессора.
Для ускорения обхода ГУЗ планировщику мультитредового процессора требуется информация о структуре потока управления программы. В частности, требуется знать, какие сегменты являются возможными преемниками любого сегмента в ГУЗ. Планировщик мультитредового процессора использует эту информацию для предсказания одного из возможных сегментов- преемников и продолжения обхода ГУЗ, начиная с текущей отметки. Такая информация может быть определена статически и помещена в описатель сегмента. Описатели сегментов могут быть расположены внутри текста программы (например, перед кодом сегмента) или помещены отдельно, рядом с текстом программы (например, в копие).
Для согласованного выполнения различных сегментов необходимо характеризовать каждый сегмент в соответствии с набором используемых и производимых сегментом значений.
Процедура обработки регистровых значений проста. В результате статического анализа ГУЗ компилятором формируется маска создания. Потребляя значения, сегмент ожидает их только в том случае, если они еще не были произведены сегментом-предшественником. Иначе она находит требуемые значения внутри локальной памяти, переданные по кольцу сегментом- предшественниом.
Естественным является расположение маски создания внутри описателя сегмента. Так как сегмент может содержать множество базисных блоков, выполнение которых зависит от обрабатываемых данных, не представляется возможным определить статически, какие регистровые значения будут созданы в динамике вычислений из-за возможных условных переходов. Маска создания должна быть консервативной и, вследствие этого, включать все возможные регистровые значения, которые могут быть произведены.
По мере выполнения процессором команд сегмента производимые значения регистров пересылаются последующим сегментам. Так как ПЭ не может определять априорно, какие команды содержит назначенный ему сегмент, он не может знать, какие из команд выполняют модификацию регистров, чье значение должно быть послано другим сегментам, В соответствии с последовательной семантикой другим сегментам должен быть послан только результат последней модификации регистра в сегменте. Стратегия, связанная с ожиданием выполнения всех команд в сегменте (когда никакие дальнейшие модификации регистров не возможны), нецелесообразна, т. к. это часто приводит к ожиданию другими сегментами значения, которое уже является доступным.
Не все созданные сегментом значения должны быть переданы сегментам- преемникам. Достаточно передавать лишь те значения, которые будут использованы вне создавшего их сегмента.
Компилятор имеет возможность определения последней команды в сегменте, которая модифицирует соответствующий регистр. Он может отметить эту команду как специальную (выполнить и переслать) команду, которая в дополнение к выполнению определенной операции направляет результат следующим ПЭ. Кроме того, поскольку ПЭ выполняет команды сегмента, он может идентифицировать те регистры, для которых значения не будут произведены.
По тем же самым причинам процессор не может определить, какие команды в действительности выполняет назначенный ему сегмент, так же, как не может определить априорно, на какой команде сегмент завершится, т. е. в какой точке управление передается вне сегмента. Во время разбиения компилятором ГУЗ на сегменты определяются границы сегмента и узлы переда-
чи управления. Команда в одном из этих узлов передачи управления может быть отмечена специальными условиями остановки так, чтобы соответствующие условия могли быть оценены к моменту выборки такой команды процессором. Если связанные с командой условия останова выполнены, то сегмент завершен.
Спецификация пересылки и останова может быть задана с помощью добавления теговой битовой отметки (битов пересылки и стоповых битов) к каждой команде сегмента. Возможно также другое введение битовых отметок. Например, с каждой статической командой может быть ассоциирована таблица теговых битов Аппаратные средства выбирают команды из текста программы и соответствующие битовые отметки из таблицы объединяют эту пару в новую команду и помещают в кэш-память команд. Освобождение регистра может быть задано добавлением специальной команды освобождения базовой системе команд.
Мультитредовая программа может быть сгенерирована из существующей двоичной путем добавления описателей сегментов и битовых отметок. Эта информация может быть размещена внутри кода программы, а также до или после кода.
Разделение исполнительного кода и описателей позволяет упростить процедуру перенесения программы на другие аппаратные средства.
Аппаратные средства, необходимые для мультитредовой архитектуры
На аппаратные средства возлагаются функции обхода ГУЗ, назначения сегментов на процессоры и выполнения этих сегментов при сохранении последовательной семантики программы. Работа по определению порядка назначения сегментов на выполнение возлагается на программу-планировщик. По адресу описателя сегментов программа-планировщик выбирает описатель сегмента и назначает сегмент на процессор, выдает адрес первой команды, устанавливает маски создания и накопления для сегмента. Планировщик, используя статическую или динамическую схему предсказания на основе информации из описателя сегмента, предсказывает сегмент- преемник. Каждый процессор независимо выбирает и выполняет команды сегмента до тех пор, пока не сталкивается с командой останова, идентифицирующей завершение сегмента.
Основной целью распределения сегментов по процессорам мультитредового процессора является создание возможности выполнения нескольких команд в одном такте. Потери производительности мультитредового процессора возможны из-за наличия у процессоров тактов бесполезных вычислений, тактов ожидания и свободных тактов.
Бесполезные такты вычисления представляют работу, которая в последующем будет отменена ввиду использования неправильных значений данных или неправильного предсказания. Такты ожидания связаны с ожиданием получения значения, созданного командой в сегменте-предшественнике, или значения, созданного командой в том же самом сегменте (например, в случае операции с большим временем выполнения или ввиду неудачного обращения в кэш), а также с ожиданием при выполнении действий по перепланированию сегментов. Неактивные такты составляют время, в течение которого процессор не имеет назначенного сегмента. Основной причиной их возникновения является несбалансированность загрузки процессоров.
Для уменьшения потерь, связанных с бесполезными тактами, следует снижать вероятность отмены результатов предыдущих вычислений, обеспечивая синхронизацию процессоров по данным, а также устанавливать факт необходимости отмены (если он имеет место быть) как можно раньше.
Преимущества мультитредовой архитектуры
Мультитредовый процессор имеет некоторые свойства, выгодно отличающие его от традиционных суперскалярных микропроцессоров.
При суперскалярном подходе точность предсказания ветвлений ограничивает степень параллелизма. Если средняя вероятность правильного предсказания перехода 0,9, то вероятность правильного предсказания на пять ветвлений вперед только 0,6.
Мультитредовый процессор имеет большую глубину предсказания и обеспечивает большую вероятность выбора правильного направления вычислений. Это свойство обусловлено избирательностью предсказания ветвей. Мультитредовый процессор разбивает последовательный поток команд на сегменты. Хотя сегменты могут содержать внутренние ветви, планировщик должен предсказывать только ветви, которые отделяют сегменты. Ветви, содержащиеся внутри сегментов, не предсказываются (если они не предсказаны отдельно внутри процессора).
Для суперскалярных процессоров наличие широкого окна выполнения приводит к увеличению числа отложенных команд и усложняет контроль результатов выполнения всех команд в этом окне.
В мультитредовой реализации окно может быть очень широким, однако в любой момент времени только несколько команд должны быть рассмотрены на предмет выдачи результатов (только одна для каждого процессора). Границы окна отложенных команд могут быть идентифицированы первой и последней командами в очереди на исполнение.
Для одновременной выдачи и результатов в процессоре должна использоваться логика со сложностью л2, чтобы выполнить перекрестную проверку зависимостей среди команд. В суперскалярном процессоре это ограничи-
вает пропускную способность логики выдачи. В мультитредовом процессоре каждый процессор выдает команды независимо, т. е. сложность логики порядка п. •
Прежде чем переупорядочить доступ к памяти, необходимо идентифицировать и вычислить все адреса загрузки и записи значений.
В суперскалярной реализации команды загрузки и записи упорядочиваются (или сохраняются в первоначальной последовательности) и помешаются в буфер вместе с адресом доступа к памяти. При выполнении команды загрузки и выборке значения из памяти проверяется буфер, чтобы гарантировать, что не отложена никакая более ранняя команда записи или загрузки по тому же самому или по еще не определенному адресу. В мультитредовой реализации команды загрузки и записи могут быть выполнены независимо, без знания последовательности выполнения команд загрузки и записи в сегменте-преемнике или предшественнике.
В суперскалярном процессоре в принципе возможна генерация достаточно широкого окна выполнения с большой глубиной предсказания ветвлений. Можно генерировать очень гибкий план выполнения команд. Например, загрузка в вызываемой функции может выполняться параллельно с запоминанием в вызывающей функции. Однако суперскалярный процессор не имеет представления о ГУЗ программы. Поэтому и возникает необходимость предсказания каждого перехода, что, в конечном счете, приводит к снижению точности предсказания и производительности.
Мультитредовый процессор во многом похож на многопроцессорную систему с общей памятью и очень низким уровнем непроизводительных затрат на планирование |31—33|. Главное их отличие заключается в том, то многопроцессорная система требует, чтобы компилятор делил программу на сегменты, где все соотношения зависимостей между сегментами известны (предусмотрены программистом путем использования операторов синхронизации и межпроцессорных коммуникаций), а мультитредовый процессор не требует никакого априорного знания относительно связей команд по управлению и данным.
Мультитредовая архитектура объединяет принципы низко- и высокоуровневого распараллеливания, методы анализа статической и динамической структур программы, благодаря чему позволяет добиться более высоких значений эффективности использования вычислительных ресурсов процессора, чем другие типы архитектур. Фактически в мультитредовых процессорах реализован симбиоз автоматически распараллеливающего компилятора, дающего указания аппаратуре процессора в виде отметок команд и специальных команд, и аппаратных средств, воспринимающих эти указания.
Конечно, изложенный подход не является единственно возможным при реализации этой плодотворной идеи — привлечения компилятора к распре-
делению заданий по процессорам и балансировке загрузки процессоров в многопроцессорных системах.
Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы.
Примером реализации мультитредового процессора с тредами, выявляемыми путем анализа потоков данных программы, служит микропроцессор Kin [34]. Этот микропроцессор строится как совокупность функциональных блоков, связи между которыми выполняются через FIFO-очереди. Каждый функциональный блок может быть внутри как синхронным (что вполне возможно в силу ограниченного размера блока), так и асинхронным. Последнее достаточно актуально, т. к. в |35] приводится мнение о том, что микропроцессоры на кристаллах с миллиардом транзисторов и тактовыми частотами на уровне гигагерц не могут быть синхронными. На больших кристаллах время распространения от одного края кристалла до противоположного края любых сигналов, включая тактовые, составляет порядка 3 нс, что при тактовой частоте 2 ГГц занимает 5—7 тактов. Традиционное решение, основанное на введении сети распределения тактового сигнала, требует много ресурсов и энергии. Например, в микропроцессоре Alpha 40% мощности расходуется на распределение тактового сигнала без скоса (skew) фронтов и неравномерностей (jitter) периодов.
Для понимания функционирования микропроцессора Kin важно то, что блок выбирает из входной очереди элементы по мере их поступления, производит заданные действия и помещает результат в выходную очередь. При такой организации поток команд распространяется между блоками как поток пакетов, содержащих в себе теги и другую необходимую информацию для управления функциональными блоками. Используемая в Kin модель ILP организации вычислений служит развитием на современном этапе идей потоковых вычислений (data flow).
Основным архитектурным понятием микропроцессора Kin является базисный блок: последовательность команд преобразования данных в регистрах и памяти, завершающаяся командой перехода.
Устройство выборки команд извлекает и декодирует команды очередного базисного блока и размещает этот блок как строку кэш-памяти декодированных команд. Каждая команда получает при этом уникальный динамический тег.
Далее в блоках переименования регистров устраняются лишние WAR- и WAW-зависимости между командами, и команды поступают в блок организации внеочередного исполнения.
Из блока внеочередного исполнения команды передаются в резервирующие станции, в которых они ожидают готовности операндов для начала своего исполнения. .
Команды с готовыми операндами посылаются резервирующими станциями для исполнения в функциональные блоки: интерпретации команд перехода, интерпретации арифметических, логических команд и команд сдвига, выполнения команд обращения к памяти. Результаты работы функциональных блоков передаются в резервирующие станции, в блок внеочередного исполнения команд и, в случае команд перехода, в блок предвыборки команд.
Описанная организация функционирования микропроцессора Kin обычна для процессоров с внеочередным исполнением команд. Особенность Kin состоит в применении механизма жадной (avid) выборки команд базисных блоков и механизма удаления команд, которые были выбраны при ошибочном предсказании хода вычислений.
Блок предвыборки команд, реализующий предсказание переходов и жадную предвыборку команд, извлекает команды из кэш-памяти декодированных команд и приписывает им динамический тег, содержащий, среди прочего, трассу, которой принадлежит команда. При этом одни и те же команды могут извлекаться многократно. Например, в случае цикла, организуемого командой условного перехода, команды тела никла многократно извлекаются. При этом они рассматриваются как независимые друг от друга. Одновременно могут извлекаться команды разных кэш-строк памяти декодированных команд. Эго и составляет суть жадной предвыборки команд.
При жадной предвыборке команд выбираются команды как по направлению перехода, так и по направлению отсутствия перехода. Поэтому при определении значения предиката команды перехода необходимо устранить результаты неверно предвыбранных команд и сами эти команды. Для этого используются динамический тег, который формируется при выполнении команд перехода. Если команда перехода имела в теге трассу т, то предвы- бранные команды одного направления получают трассу тО, а другого направления — трассу ml. Тем самым, появляется возможность при каждом определении направления перехода установить все те команды, которые были ошибочно выбраны. Блок удаления ошибочно выбранных команд рассылает сообщения другим блокам о трассах команд, подлежащих удалению.
Специфика мультитредовых моделей распараллеливания
При реализации мультитредовых архитектур важно установить, что выполняется программистом, компилятором, операционной системой и процессором. Процессор должен исполнять треды, но есть еще управление тредами:
выборка тредов, порождение тредов, установление порядка их исполнения, назначение ресурсов, коммуникации между тредами.
Самый сложный процесс, а именно: выборку тредов должен делать компилятор или программист. При этом необходимо формировать вспомогательные указания для аппаратуры, позволяющие в дальнейшем упростить работу процессора.
Программа, предназначенная для исполнения на мультитредовом процессоре, должны состоять из совокупности тредов, каждый из которых представляет собой единицу обработки данных. Важной чертой мультитрсловых процессоров служит возможность эффективной реализации не только доступа в память, но и доступа к устройствам ввода/вывола, а также контроллерам сетевых адаптеров коммуникационных сред. В мультитрсдовой программе возможно достижение предельного совмещения вычислений в мультитредо- вых процессорах с межпроцессорными обменами. Тред, обратившийся к сетевому адаптеру, будет ждать завершения обмена, в то время как другие треды будут исполняться. Это свойство мультитрсловых микропроцессоров делает их проблемно-ориентированными на построение из них массово параллельных систем.
Следует отметить, что к мультитредовым микропроцессорам можно отнести транспьютеры с их аппаратно поддержанным исключительно малым, при соответствующей тактовой частоте, временем переключения контекста процессов и виртуализацией каналов (Т-9000) |21, 251.
Таким образом, мультитредовая архитектура служит следующим, после суперскалярной, шагом в направлении развития методов динамического распараллеливания программ при полном использовании результатов статического распараллеливания. Эта архитектура, если не снимает вообще, не предъявляет требования локализуемое™ обрабатываемых данных.
Мультитредовая архитектура предлагает решение для следующих проблем, препятствующих развитию суперскалярных микропроцессоров:
эффективной загрузки большого количества функциональных устройств;
преодоления разрыва в быстродействии выполнения регистровых команд и команд доступа в память;
уменьшения времени обслуживания прерываний по сравнению с суперскалярными процессорами за счет возможности выделения отдельного треда, исполняющего программы обработки прерывания, и возможность работы в режиме жесткого реального времени;
эффективного совмещения вычислений в микропроцессорах с межпроцессорными обменами.
Развитие архитектур микропроцессоров
Влияние элементной базы на реализуемость архитектур
Дискретная элементная база и интегральные схемы малой и средней интеграции позволяли сконструировать и изготовить процессор с произвольной архитектурой при одном ограничении на общий объем используемого оборудования. Процессор изготовлялся из плат, на которых были припаяны электронные компоненты. Платы, в свою очередь, посредством разъемных соединений устанавливались в блоки, которые объединялись кабелями с межблочными разъемами в стойки и конструктивы следующего уровня. Таким образом, для производства процессора, после того как было закончено его проектирование, требовалось большое количество монтажников и наладчиков для изготовления и настройки плат, блоков, стоек и соединений между ними.
Для получения высокой производительности было необходимо иметь соответствующее количество регистров и функциональных устройств, но требуемый для их создания объем электронных компонентов, паяных и разъемных соединений ограничивался надежностью создаваемого процессора, стоимостью и энергопотреблением. В этих условиях конструкторы процессоров придумали значительное разнообразие архитектур процессоров, каждый из которых при исполнении программ своей проблемной ориентации достигал наивысшего значения показателя "производительность/стоимость". К числу таких архитектур в первую очередь следует отнести векторноконвейерные процессоры и ассоциативные процессоры с SLM D-архитектурой (Single Instruction-Multiple Data), все обрабатывающие процессорные элементы (ПЭ) которых выполняют команды одного потока, выдаваемого - одним общим устройством управления. В период использования полупро- ■ водниковых схем малой и средней интеграции было создано несколько , типов таких процессоров, например, STARAN |36|, DAP [37], Connection । Machine (CM-1, СМ-2) [38], состоящих из большого числа однобитовых ПЭ j со встроенной в каждый ПЭ локальной памятью. На таких процессорах с ' использованием коммуникационной сети между ПЭ эффективно решались многие классы задач, включая решение систем уравнений, обработку сигналов и изображений, ассоциативную обработку данных.
Рост степени интеграции СБИС при почти постоянном числе выводов корпусов привел к ситуации, когда, с одной стороны, в одной СБИС могло разместиться довольно много ПЭ, а, с другой стороны этого количества ПЭ, явно не хватало для создания полноценного SIMD-процессора. Объединению совокупности таких СБИС в систему препятствовало малое число вы-;
водов, не позволявшее подсоединить к ПЭ память и создать эффективную сеть связи между ПЭ.
Подобная проблема из-за относительно малого количества выводов возникала и при попытке построения векторно-конвейерных процессоров: те их блоки, которые можно было реализовать на БИС, имели бы количество соединений с другими БИС, намного превышающее число их выводов.
Поэтому векторно-конвейерные процессоры и процессоры с архитектурой SIMD уступили, как уже было отмечено ранее, место микропроцессорам, получившим даже в одно время название "микропроцессоры-киллеры" [7|. Однако с достижением уровня 108—109 транзисторов на кристалле стало возможным изготовить полноценные однокристальные векторно-конвейерные процессоры и SIMD процессоры.
Фактически микропроцессоры Pentium 4 и Xeon с MMX, SSE, SSE2 расширениями системы команд представляют собой SIMD-процессоры. Кроме возможности выполнять за такт до 8 операций над малоразрядными операндами, предусмотрена также одновременная обработка нескольких чисел в формате с плавающей точкой двойной точности. Так, возможность выполнять 2 операции над 64-разрядными операндами за такт существенно подняла производительность этих микропроцессоров, например, на тесте Unpack.
Однокристальные векторно-конвейерные процессоры
Когда количество транзисторов на кристалле стало достаточным для реализации полноценного векторно-конвейерного процессора, появился' яркий представитель этого класса — микропроцессор SX-6 |39| японской фирмы NEC. Микропроцессор создан по 0,15-микронной К МОП-технологи и с медными проводниками. Микропроцессор содержит приблизительно 57 млн транзисторов. Структура микропроцессора изображена на рис. 1.24.
Основными компонентами микропроцессора являются скалярный процессор и 8 идентичных векторных устройств.
Скалярный процессор имеет суперскалярную архитектуру с 4 результатами за такт и использует 128 64-разрядных регистров. При тактовой частоте 500 МГц пиковая производительность скалярного процессора составляет 109 flops (I Gflops).
Каждое из 8 идентичных векторных устройств содержит 5 конвейеров обработки данных, выполняющих логические операции, маскирование, сложе- ние/сдвиги, умножение и деление над операндами, размешенными в векторных регистрах, а также один конвейер обменов данными (загрузки/ выгрузки) между векторными регистрами и основной памятью. Суммарный
объем регистров в восьми векторных устройствах составляет 18 Кбайт (эквивалентно 288 64-разрядным регистрам).
Рис. 1.24. Структура микропроцессора SX-6
В векторном устройстве операции умножения и сложения могут сцепляться, за счет этого пиковая производительность одного устройства при тактовой!, частоте 500 МГц может достигать I Gflops.
Пропускная способность интерфейса с памятью равна 32 Гбайт/с, что поИ зволяет каждому из 8 векторных устройств прочитать из памяти или запич сать в память один операнд в каждом такте. 1 Производительность кристалла SX-6 составляет 8 Gtlops. I В дальнейшем можно ожидать кристаллов с несколькими векторном конвейерными процессорами, образующими однокристальную систему И обшей памятью 1
Причины перехода к построению однокристальных мультипроцессорных систем
Среди тенденций, приводящих к появлению однокристальных мультипроцессорных систем, можно отметить описанные ниже.
Перенос на стадию компиляции проблем извлечения из последовательных программ команд, допускающих параллельное исполнение, и. в целом, ветвей параллельных программ. Если суперскалярный микропроцессор сам выделяет параллельно выполняемые команды, то уже в мультитредовом микропроцессоре на компилятор возлагаются дополнительные функции по выделению параллельных ветвей, а микропроцессоры с длинным командным словом возлагают на компилятор все проблемы загрузки параллельно функционирующих устройств. В этих условиях задача создания распараллеливающего компилятора для мультипроцессорной системы не выглядит неразрешимой.
Объем оборудования, обеспечивающего загрузку функциональных устройств, микропроцессоров с суперскалярной архитектурой достаточно велик и имеет Квадратичный оосАв зависимости от количества находя - щихся в обработке команд. При увеличении числа функциональных устройств должно увеличиваться и число выбираемых на исполнение команд, что приведет к возрастанию объема оборудования, не производящего непосредственно обработки данных. Суммарный объем схем управления всмультттрбцессорной системе) состоящеii ju простых процессоров, может быть существенно меньше, чем в микропроцессоре с суперскалярной архитектурой при одном и том же суммарном числе функциональных „устройств или, иными словами, при олшГаковой производительности в случае полной загрузки устройств. Следует также отметить, что простые процессоры мультипроцессорной системы могут иметь более высокую тактовую частоту.
Мультипроцессорная система, в силу присущей ей избыточности, может функционировать при отказе части оборудования. Эти отказы могут быть как изначально присутствующими, вследствие дефектов кремниевой пластины или технологического процесса изготовления, так и появившимися в ходе функционирования. Мультипроцессорные системы могут создаваться либо как однокристальные, либо как многокристальные микросборки. Реальность такова, что однокорпусная микросборка мультипроцессорной системы из совокупности простых микропроцессоров может значительно превышать по показателю "произволителыюсть/стои- мость" однокристальную систему, размер кристалла которой равен сумме площадей кристаллов микросборки |40, 41|. Микросборки не являются чем-то существенно отличным от СБИС. Выбор однокристальной реализации или микросборки определяется достигаемыми техникоэкономическими показателями. Использование микросборок памяти.
□□микропроцессоров Pentium Pro демонстрирует возможности технологии микросборок. Наиболее интересным проектом, концентрирующим архитектурные и технологические достижения, включая однокристальные системы и микросборки, служит микропроцессор Power 4 фирмы IBM [42].
□
□
I В традиционных компьютерах, состоящих из микропроцессора и микросхем памяти, использующих в совокупности порядка 108 транзисторов в микропроцессоре и 109 транзисторов в памяти, в каждом такте используется по разным оценкам 104—105 транзисторов. То есть имеет место простой значительной части оборудования, потенциально способного производить обработку данных. Конечно, простой оборудования имеет и некоторое достоинство при КМОП-технологии: это оборудование потребляет и выделяет мало электрической и тепловой энергии. При существующих на сегодня конструкциях корпусов микросхем проблема теплоотвода может стать решающей при выборе архитектуры кристалла. Однако на сегодня представляется, что на кристалле достаточно эффективно может быть реализована мультипроцессорная система из большого числа процессоров, каждый из которых имеет собственную небольшую встроенную память. Подобные вычислительные структуры обычно называют памятью с обработкой, многофункциональной памятью, интеллектуальной памятью и рядом других терминов.
Подходы к построению однокристальных , мультипроцессорных систем
На кристалле могут быть построены мультипроцессорные системы с архитектурой MIMD (Multiple Instructions-Multiple Data), обрабатывающие одно-; временно много потоков данных многими потоками команд. Эти системы могут быть как симметричными мультипроцессорами (SMP), так и массивно параллельными процессорами (МРР) |43|.
Наиболее близкой к микропроцессору с мультитредовой архитектурой будет SMP, состоящий из некоторого числа (8—32) простых микропроцессоров,' архитектурно близких к RISC-процессорам первого и второго поколений С, простым устройством управления выборкой команд, но со встроенной кэш-, памятью первого уровня. Все процессоры кристалла, кроме того, имеют раз-1 деляемую внутри кристальную кэш-память второго уровня. Фактически такой мультипроцессор отличается от микропроцессора с мультитредовой архитектурой заменой одного сложного устройства управления на совокупность^ простых независимых устройств управления каждого процессора..
МРР, образуемые из узлов (подобных описанным простым процессорам)^ объединяемых друг с другом каналами "точка-точка", также являются воз-> можным вариантом однокристальных мультипроцессоров. В таких мульти-, процессорах до 30% оборудования узла используется для образования кана* лов для обмена с другими узлами и периферийными устройствами. i
Важной характеристикой рассмотренных МРР являются сложность узлового процессора и число узлов на кристалле. Так, при уменьшении сложности узла до 1-разрядного АЛУ и 1-разрядного регистра (одного триггера) образуются реконфигурируемые микропроцессоры, которые в зависимости от подходов к реализации можно отнести либо к однородным вычислительным средам [44], либо к ПЛИС.
Уникальной возможностью реконфигурируемых систем служит их программная настройка на схемную реализацию исполняемого алгоритма, что позволяет на задачах с преобладанием логико-символьной обработки достичь существенного ускорения по сравнению с программной реализацией того же алгоритма.
Фактически однокристальные системы с архитектурой SIMD, состоящие из однобитовых ПЭ, весьма близки по своей организации к вычислительным средам и устройствам с программируемой логикой (ПЛИС) [44, 45].
Основной тенденцией развития гипербольших СБИС служит построение однокристальных систем из большого числа простых процессоров. Эти системы могут иметь мультитредовую или векторно-конвейерную архитектуру, а также представлять собой MIMD-, SIMD-системы из простых процессоров или реконфигурируемый массив простых (однобитных) процессорных элементов. Наряду с логическими схемами процессоров эти кристаллы должны содержать встроенную память.
Однокристальные системы, в свою очередь, будут объединяться в единую систему с архитектурой MIMD, SIMD или другой, являющейся комбинацией упомянутых ранее.
Способы оценки производительности процессоров
Пиковая
производительность компьютеров
Исторически первым способом оценки производительности было определение пиковой или технической производительности, представляющей собой теоретический максимум быстродействия компьютера при идеальных усло- вия<. Данный максимум определяется как число операций, выполняемое в единицу времени всеми имеющимися в компьютере обрабатывающими арифметико-логическими устройствами. Значение пиковой производительности измеряется количеством операций в секунду IPS (instructions per second), например, в современных компьютерах используется оценка в миллионах операций MIPS (millions instructions per second) или миллионах операций с плавающей точкой в секунду Mflops (millions floating point operations per second).
Пиковое быстродействие достигается при обработке бесконечной последовательности не связанных между собой и не конфликтующих при доступе в память команд (т. е. когда результат любой операции не зависит от действий, выполненных другими командами). При этом в современных компьютерах предполагается, что все операнды выбираются из внутрикристальной кэш-памяти данных, а команды — из кэш-памяти команд. Разумеется, подобная ситуация чисто гипотетическая, и на практике ни один компьютер не в состоянии работать сколько-нибудь длительное время с пиковой производительностью, хотя и может приближаться к этой величине.
Пиковая производительность является единственной по-настоящему объективной оценкой (для ее определения необходимо знать всего несколько параметров компьютера) и совершенно не зависит от выполняемых программ. Речь идет о тактовой частоте процессора, которая для подавляющего большинства современных компьютеров определяет темп формирования результатов на выходе арифметического конвейера, о числе арифметических конвейеров процессора. Чтобы определить пиковую производительность процессора, надо умножить тактовую частоту на количество параллельно выполняемых операций. При этом надо учитывать архитектурные возможности по совмещению операций, выполняемых в одном такте.
Например, арифметическое устройство Pentium каждый такт может формировать один результат 64-битной операции с плавающей точкой или два 32- разрядных результата целочисленных операций. Следовательно, для Pentium/90 (с тактовой частотой 90 МГц) пиковая производительность равна 90 Mflops (I Мflops = IO6 flops) при выполнении вычислений с плавающей точкой и 180 MIPS (Millions Instructions per Second — миллион команд в секунду) при целочисленной 32-разрядной обработке.
Другим примером может служить определение пиковой производительности процессоров Intel Itanium и IBM Power 4. Эти процессоры могут в двух устройствах для обработки с плавающей точкой в одном такте одновременно выполнять команду накопления: a + Ь х с. Поэтому применительно к ним говорят, что пиковая производительность с плавающей точкой равна учетверенной тактовой частоте. Однако это верно только для случая, если надо выполнять одинаковое количество умножений и сложений, что характерно для многих алгоритмов научно-технических задач, например, при численном решении дифференциальных уравнений. В случае, если надо выполнять только одни сложения или умножения, пиковую производительность ■‘этих процессоров следует считать равной удвоенной тактовой частоте.
Значения пиковой производительности, при всей простоте их получения, могут оказаться чрезвычайно полезными при обсуждении достоинств компьютеров. Особенно удобно использовать показатели предельного быстро-, действия для сравнения возможностей процессоров в первом приближении. Американские специалисты по контролю за экспортом вооружений при
оценке уровня производительности компьютеров используют показатель составной теоретической производительности (СТР), измеряемой в Mlops (Millions theoretical operations per second — миллион теоретических операций в секунду) [46]. СТР зависит только от аппаратных средств компьютера (тактовой частоты, набора функциональных устройств, пропускной способности и набора внутренних шин, длины разрядной сетки и т. д.).
Однако сравнение производительности компьютеров с использованием пиковых значений производительности не всегда приводит к адекватным результатам. Пиковая производительность, выраженная в количестве команд, выполняемых в единицу времени, не учитывает функционального наполнения команд. Один и тот же результат, например, сложение элементов двух массивов, размешенных в памяти, может быть получен с использованием разного числа команд в RISC- и CISC-процессорах (например, в RISC- процессорах формирование адресов элементов производится отдельными командами, а в CISC — это составная часть сложной команды). Разные форматы команд имеют разную длительность исполнения, и время исполнения последовательности команд зависит от конкретного места каждой команды в последовательности. Не следует забывать также о влиянии разрядности обрабатываемых чисел, чтобы избежать, например, некорректного сравнения производительности при обработке 32- и 64-разрядных данных.
При появлении суперкомпьютеров типа CRAY-I была введена единица измерения производительности, выражаемая числом "результатов" с плавающей точкой в единицу времени. Введение этого показателя обосновывалось тем, что есть собственно основные, необходимые операции с плавающей точкой, которые формируют результат вычислений, и есть вспомогательные операции по организации вычислений, которые не должны учитываться в полезной производительности. Например, при умножении матриц важны только операции с плавающей точкой получения значений элементов результирующей матрицы, а операции с фиксированной точкой, формирующие адреса элементов матриц, счетчики циклов и т. д. — это внутренняя организация компьютера. Однако явная проблемная ориентация этого показателя производительности на научно-технические расчеты не сделала его сколько- н и будь расп ространенн ы м.
Современные процессоры, такие как Intel Itanium и IBM Power 4, совмещают выполнение операций с фиксированной и плавающей точкой, поэтому для них производительность в операциях с плавающей точкой соответствует производительности в результатах.
, 1.6.2. Реальная производительность
। При оценке производительности микропроцессоров, как правило, оценива- < ются не сами микропроцессоры, а компьютеры, построенные на базе этих
5 Зак. 1086
микропроцессоров. Это обусловлено, в первую очередь, пользовательским подходом к оценке, при котором пользователя интересуют не собственно характеристики процессора, а производительность, которую можно получить при решении задач.
При выполнении реальных прикладных программ эффективная (реальная) производительность компьютера может весьма существенно (до нескольких раз) быть меньше пиковой. Это объясняется тем, что современные высокопроизводительные микропроцессоры имеют сложную архитектуру (конвейерная и суперскалярная обработка, многоуровневая память и т. д.). Характеристики их функционирования на уровне внутренних устройств существенно зависят от программы и обрабатываемых данных. Поэтому невозможно с необходимой точностью оценить производительность только на основании тактовой частоты их работы, числа затрачиваемых на выполнение одной команды тактов процессора и числа устройств обработки. Кроме того, производительность зависит от используемых операционной системы, компиляторов, библиотек и другого программного обеспечения. Например, для одной и той же программы при трансляции разными компиляторами может быть получена существенно разная производительность.
Исторически первой попыткой измерения реальной производительности было создание так называемых синтетических тестов, состоящих из смеси команд с заданным процентным соотношением каждого типа команд. Однако скоро стало ясно, что результаты измерений производительности, полученные с использованием синтетических тестов, трудно применить для оценки реальной производительности компьютера на конкретной задаче.
Поэтому для оценки производительности различных вычислительных средств в мировой практике наибольшее распространение получило использование фрагментов реальных задач, характерных для той или иной области применения вычислительной техники. Время выполнения каждой из задач набора составляет основу для расчета индекса производительности исследуемой вычислительной установки. Индекс производительности является относительной оценкой, несущей информацию о том, во сколько раз быстрее или медленнее исследуемая вычислительная установка выполняет подобные задачи по сравнению с некоторой широко распространенной ЭВМ (последнюю часто называют базовой или эталонной).
Если каким-либо образом определить абсолютную производительность эталонной ЭВМ, выражаемую числом выполняемых в секунду вычислительных операций, то не составит труда перейти от индексов производительности к абсолютным значениям оценок производительности исследуемых вычислительных средств.
Способы измерения реальной производительности
При оценке производительности на тестах приходится решать три проблемы, связанные с анализом результатов контрольного тестирования производительности [47]:
отделение показателей, которым можно доверять безоговорочно, от тех, которые должны восприниматься с известной долей настороженности (проблема достоверности оценок);
выбор контрольно-оценочных тестов, наиболее точно характеризующих производительность при обработке типовых задач пользователя (проблема адекватности оценок);
правильное истолкование результатов тестирования производительности, особенно если они выражены в довольно экзотических единицах типа MWIPS (Mega Whetstone Instructions Per Second) [48], Dhrystones/s и т. д. (проблема интерпретации).
Существующие тестовые наборы можно разбить на три группы. Первую группу тестов измерения производительности составляют тесты производителей, разрабатываемые компаниями — изготовителями компьютеров для "внутреннего" применения — оценивания качества собственных продуктов. Главная особенность данных тестов заключается в том, что они ориентированы на сравнение ограниченного множества однотипных компьютеров, часто относящихся к одному семейству. Эти тесты позволяют разработчикам компьютеров оптимизировать структурно-технические решения. Например, для оценки производительности микропроцессоров с архитектурой х86 компания Intel в 1992 году предложила индекс производительности iCOMP (Intel Comparative Microprocessor Performance). В качестве эталонного процессора принят 486 SX-25, значение индекса для которого равно 100. Индекс iCOMP определяется при выполнении синтетического теста, формирующего смесь операций, состоящую из 67% операций над 16-разрядными целыми, 3% операций над 16-разрядными числами с плавающей точкой, 25% над 32-разрядными целыми и 5% над 32-разрядными числами с плавающей точкой. К примеру, индексы iCOMP для микропроцессоров 486 SX2-50, Pentium-ЮО и Pentium-166 равны 180, 815 и 1308 соответственно. Следует отметить, что индекс iCOMP оценивает производительность микропроцессора как такового, а не вычислительной установки, включающей еще оперативную память и внешние устройства.
В IBM имеются специализированные тестовые пакеты для измерения производительности компьютеров с архитектурой мэйнфреймов семейства System/370 и System/390, а также тесты для компьютеров с архитектурой AS/400.
Тесты производителей являются почти идеальным средством оценивания быстродействия и технико-экономических показателей процессоров и вычислительных систем с одной и той же архитектурой, но разными средствами ее реализации, однако они не могут быть в чистом виде использованы для других компьютеров — сказывается слишком явная ориентация тестов на конкретную "фирменную” архитектуру. Эти тесты используются создателями систем оценки различных вариантов реализации.
Вторую группу составляют стандартные тесты. Стандартные тесты, разработанные для сравнения широкого спектра компьютеров, часто претендуют на роль полностью универсальных средств измерения производительности. В основе подобных амбиций лежит то, что разработчиками тестов этой категории являются либо независимые аналитики, например, Джек Донгарра, предложивший совместно с группой других исследователей тестовый пакет Unpack |49|), либо группы, объединяющие крупнейших производителей компьютеров SPEC (Standard Performance Evaluation Corporation) [50]. Коллективный характер разработки практически исключает возможность ориентации стандартного теста на конкретного поставщика компьютеров.
Третья группа тестов состоит из пользовательских тестов, учитывающих специфику конкретного применения компьютера или вычислительной системы. Пользовательские тесты создаются крупными компаниями, специализирующимися на внедрении компьютерных технологий, или совместными усилиями группы пользователей, объединенных сходством решаемых задач. Пользовательские тесты предназначены специально для выбора компьютеров и программного обеспечения, наиболее подходящих под определенные прикладные задачи. В принципе такой подход позволяет получить наиболее точные оценки производительности для конкретного класса приложений, хотя и сопряжен со значительными усилиями пользователей по созданию тестовых программ и проведению испытаний компьютеров.
Тесты для оценки пропускной способности памяти и производительности процессора
Существует ряд достаточно простых и небольших по объему тестов, позволяющих оценить производительность процессора и характеристики его ра-: боты с памятью при выполнении арифметических операций с плавающей, точкой. Приведем некоторые из них.’
Stream [5l| — синтетический тест, измеряющий пропускную способности оперативной памяти в Мбайт/с при циклическом многократном повторении? четырех арифметических операций с плавающей точкой. С помощью тест»1 Stream можно получить оценки пропускной способности, а также максим мальное, минимальное и среднее время обмена с оперативной памятью пр?; выполнении каждой из этих четырех операций.
Cpu-rate [52] — тест, созданный для оценки производительности процессора и оперативной памяти на задачах с плавающей точкой. В отличие от Stream, Cpu-rate распределяет обрабатываемые векторы динамически для получения информации о влиянии скорости работы оперативной памяти при циклически повторяющихся арифметических операциях. Измерения могут проводиться как для статически, так и для динамически распределяемой памяти, что обеспечивает более объективную, чем в Stream, оценку быстродействия процессора и памяти при операциях с плавающей точкой для чисел различных форматов. В качестве результата Cpu-rate выдает быстродействие про- цессора/памяти, измеренное количеством операций с плавающей точкой в секунду.
Тест Unpack
Тест Unpack широко используется для определения производительности компьютеров и систем с различной архитектурой. Результаты замеров производительности периодически публикуются в докладах "Performance of Various Computers Using Standard Linear Equations Software" об оценке производительности различных компьютеров при решении задач с использованием стандартного программного обеспечения для решения линейных уравнений, составляемых Джеком Донгаррой (Jack Dongarra) из университета Теннеси.
Содержательно тест Unpack представляет собой решение системы линейных уравнений с п неизвестными с плотной матрицей коэффициентов над полем действительных чисел. Для каждого и известно, сколько операций с плавающей точкой нужно выполнить, чтобы решить систему линейных уравнений методом исключения Гаусса. Это число операций с плавающей точкой
2
[ оценивается ул’+2л2. В тесте Linpack, каким бы методом и какой бы программой не решалась система линейных уравнений с н неизвестными, количество операций принимается равным количеству результатов, а имсн- 2
но: — п3 + 2п2. Следует отметить, что эта оценка предполагает равную дли
тельность операций сложения и умножения с плавающей точкой, что является известным допущением, т. к. умножение может требовать больше тактов, чем сложение. Более того, когда разница в длительности операций сложения и умножения была существенна, в Linpack было запрещено использовать алгоритм Шрассена, ускоряющий вычисления за счет замены части операций умножения на операции сложения.
|л3 + 2л2|л3 + 2л2Оценка производительности в flops — количестве операций (результатов) с плавающей точкой в секунду — получается путем деления числа операций
|л3 + 2л2
|л3 + 2л2
на время выполнения теста в секундах.
Тестирование выполняется по трем методикам, определяющим время решения при различных значениях и и задаваемых ограничениях:
□ п = 100; 100 х 100 ("Unpack Benchmark") — оригинальный вариант теста написан на языке Fortran с использованием библиотеки для решения задач линейной алгебры с плотными матрицами Level 1 BLAS (у = у + а х х), где у, о, х — скаляры; не допускаются никакие модификации программы теста на языке Fortran; существуют переложения на С; в тесте выполняются 2 операции на каждые 3 обращения к памяти, т. к. для основных вычислений используется подпрограмма DAXPY из библиотеки Level 1 BLAS.
□ п = 1000; 1000 х 1000 ("ТРР", best effort) — без ограничений на преобразование программы и использование ассемблера с целью достижения наивысшей производительности; может использоваться блочная обработка, например, с применением подпрограммы DGEMM из библиотеки Level 3 BLAS (С = С + А х В), где С, А, В — матрицы, что повышает локализуе- мость обрабатываемых данных (количество вычислительных операций, приходящихся на одно обращение в память;
□ п = Amax ("A Look at Parallel Processing") — без ограничений на преобразование программы и использование ассемблера с целью достижения наивысшей производительности за счет выбора размера yVmax матрицы, при котором достигается наивысшая производительность /?тах.
При "A Look at Parallel Processing" выбирается (путем подбора значения л, при котором матрица размешается в оперативной памяти вычислительной системы (ВС), т. к. обращения к диску существенно снижают производи- | тельность) и = Wmax, при котором достигается наивысшая производительность /?Шах- Далее определяется М|/2, при котором достигается производительность вдвое меньшая, чем Rmax. Для 500 ВС, превосходящих другие по значению Rmax, именно эти величины публикуются в списке ТОР 500, наряду с теоретической пиковой производительностью Rpcak, количеством про- , цессоров и их тактовой частотой. Список ТОР 500 начинается сведениями о 1 ВС с самым большим значением Rmax и содержит сведения о пятистах ВС, , упорядоченных по убыванию их показателя Rmax.1
Таким образом, набор тестов Linpack представляет собой совокупность , программ решения задач линейной алгебры. В качестве параметров используются: порядок матрицы (например, 100 х 100, 1000 х 1000), формат значений элементов матриц (одинарная или двойная точность представления элементов матриц), способ компиляции (с оптимизацией или без оптимизации), а также возможность применения оптимизированной библиотеки стандартных функций.
При измерении производительности современных микропроцессоров программа и данные теста Linpack 100 х 100 ("Linpack Benchmark") могут размещаться в кэш-памяти, что позволяет оценить практически пиковую производительность в результатах в секунду.
Пакеты тестовых программ SPEC CPU
Обзор тестов
Корпорация SPEC развивает тестовые пакеты для оценки производительности компьютеров в различных режимах их использования. Корпорация ставит целью объективное сопоставление параметров так, чтобы ни сами тесты, ни режимы их компиляции не могли быть ориентированы на какого-либо производителя. Исторически корпорация SPEC создала следующие тестовые пакеты для оценки производительности процессоров: SPEC CPU 89, SPEC CPU 92, SPEC CPU 95, SPEC CPU 2000. В настоящее время результаты тестов SPEC CPU 95, SPEC CPU 2000 компьютеров разных производителей доступны на http://www.specbench.org/osg/cpu2000/results. Смена тестовых пакетов в основном обусловлена развитием микропроцессоров и прогрессом в понимании методики тестирования. История развития тестовых пакетов SPEC CPU будет способствовать пониманию сложности проблемы оценки производительности.
Пакет SPEC CPU 89
Пакет SPEC CPU 89 включает два тестовых набора — Cint89, состоящий из четырех программ целочисленной обработки, и Cfp89, объединяющий шесть программ со значительным объемом операций над числами с плавающей точкой двойной точности. Все десять программ представляют собой достаточно сложные коды на языках С и Fortran с широким спектром решаемых задач — от оптимизации представлений функций булевой логики в программируемых логических схемах до моделирования замещения атомов в квантовой химии.
Методика оценки производительности SPEC 89 предполагает формирование десяти дифференциальных оценок SPECratio;, каждая из которых определяется как отношение времени выполнения программы № i из наборов Cint89 и Cfp89 на тестируемом компьютере ко времени выполнения той же про, граммы на ЭВМ DEC VAX 11/780.
। Интегральной характеристикой производительности компьютера служит показатель SPECmark, являющийся средним геометрическим всех десяти част-
I ных оценок SPECratio. К параметру SPECmark добавлены еще две оценки — SPECint89 и SPECfp89, раздельно характеризующие быстродействие компьютера при обработке целочисленных данных и вещественных чисел. Принцип расчета этих показателей не отличается от вычисления SPECmark:
' SPECint89 представляет собой среднее геометрическое частных оценок 1 SPECratio для четырех программ из набора Cint89, a SPECfp89 — аналогичную величину для шести программ из состава Cfp89.
Пакет тестовых программ SPEC CPU 92
Этот пакет расширяет совокупность классов задач, представленных в тесте, по сравнению со SPEC 89. Методика расчета основных характеристик производительности в SPEC 92 нс претерпела никаких принципиальных изменений. Показатели SPECint92 и SPECfp92 по-прежнему определяются средними геометрическими частных оценок SPECratio, полученных при тестовом прогоне программ из наборов Cint92 и СГр92 (конечно, с учетом увеличения числа тестовых программ).
Пакет оценочных программ Cint92 предназначен для оценки производительности вычислительных систем при выполнении целочисленных операций преимущественно в коммерческой области применения. В его состав входят 6 эталонных тестов, написанных на языке С и представляющих собой задачу из теории сетей, интерпретатор языка Lisp, задачу логического проектирования, UNIX-утилиту упаковки тестового файла размером I Мбайт, который 20 раз подвергается сжатию, операции со строками и столбцами электронной таблицы и компилятор языка С.
Пакет оценочных профамм Cfp92 предназначен для оценки производительности ВС при выполнении операций с плавающей точкой (преимущественно в технической и научной областях применения).
В его состав входят 14 реальных прикладных программ, две из которых написаны на языке Си 12 на языке Fortran. В пакет входят профаммы схемного проектирования, моделирования термодинамики ядерного реактора методом Монте-Карло, задачи квантовой химии и физики, решение уравнений Максвелла, преобразование координат, трассировка оптических лучей, задачи робототехники и нейросетей, моделирования человеческого уха, решение уравнений Навье—Стокса для определения параметра межгалактического газа, семь библиотечных функций обработки матриц (умножение, обращение и т. д.) и ряд других.
Но одно качественное новшество в SPEC 92 все-таки введено. Речь идет о > характеристиках мульти профам мной обработки SPECrate, формируемых в рамках метода однородной нафузки. Суть последнего заключается в еле- дующем: тестируемая ВС выполняет задание, состоящее из множества ко- 1 пий одной профаммы, а показателем производительности многопроцессорной обработки служит количество копий, завершенных за определенный интервал времени. Для получения оценки SPECrate используются те же профаммы, что и для расчета показателей SPECint92 и SPECfp92. Разница ‘ только в том, что тестовый модуль реализуется как несколько копий, образующих одно задание, а результатом измерений является нормированное общее время выполнения всех копий задания. Подобной процедуре под* вергается каждая из 20 тестовых программ, что позволяет получить шесть частных оценок SPECratio, для программ целочисленной обработки и 14 для профамм обработки вещественных чисел.
Таким образом, SPECrateint92 и SPECratefp92 оценивают среднюю скорость выполнения задач в многопроцессорном режиме работы системы. Кроме того, эти показатели позволяют получить представление о возможностях компилятора по организации параллельного мультизадачного кода, а также операционной системы — по эффективному динамическому распределению ресурсов системы (в частности, процессоров) между выполняемыми параллельными программами. Это делает оценки SPECrateint92 и SPECratefp92 особенно представительными для SMP-систем коллективного пользования, работающих в пакетном режиме.
Сводные сведения о программах, входящих в SPEC89 и SPEC92 приведены в табл. 1.4.
Таблица 1.4. Перечень программ наборов SPEC 89, SPEC 92
Программа
Тест, язык, тип данных
Моделирование ПЛМ (PLA)
89 и 92, С, ФТ*
Lisp-интерпретатор
89 и 92, С, ФТ
Формирование логических таблиц истинности
89 и 92, С, ФТ
UNIX-утйлйта упаковки тестового файла размером 1 Мбайт, который 20 раз подвергается сжатию
92, С. ФТ
Операция со строками и столбцами электронной таблицы
92, С, ФТ
Компилятор GNU, трансляция 19 программ на С в оптимизированный код ассемблера
89 и 92, С, ФТ
Моделирование аналоговых цепей с высокой интенсивностью обменов с памятью
89 и 92, Fortran, ПТ**, ДВ***
Моделирование термодинамики ядерного реактора методом Монте-Карло; содержит большое число ветвлений и коротких циклов
89 и 92, Fortran, пт, ДВ
Задача квантовой химии для системы из 500 атомов
92, Fortran, ПТ, ДВ
Версия теста Mdijdp2 для одинарной точности
92, Fortran, ПТ, QJ****
Решение уравнений Максвелла
92, Fortran, ПТ, ДВ
Генерация сетки при моделировании процессов обтекания; программа ориентирована на тестирование параллельных систем
89 и 92, Fortran, ПТ. ДВ
Моделирование управления движением робота с использованием видеосистемы
92. С, ПТ
Решение сеточной задачи shallow-water для сетки 256 х 256
92, Fortran, ПТ
Таблица 1.4 (окончание)
Программа
Тест, язык, тип данных
Задача квантовой физики вычисления массы элементарных частиц с использованием метода Монте-Карло; хорошо векторизуется и ориентирована на тестирование параллельных систем
Решение уравнений Навье—Стокса для определения параметра межгалактического газа; программа хорошо векторизуется и ориентирована на тестирование параллельных систем
Семь библиотечных функций обработки матриц (умножение, обращение и т. д.) *
Моделирование процесса замещения атомов на сериях Гаусса; программа плохо распараллеливается и содержит большой объем ввода/вывода
Синтетический тест, имитирующий различные алгоритмы умножения матриц
Моделирование уха человека
92, Fortran, ПТ, ДВ
92, Fortran, ПТ, ДВ
89 и 92, Fortran, ПТ, ДВ
89 и 92, Fortran, ПТ, ДВ
89, Fortran, ПТ, ДВ
92, С, ПТ, ДВ
ФТ- фиксиррванная точка.
* ПТ - плавающая 1очка.
** ДВ - плавающая точка с двойной точностью..
*** ОТ - плавающая точка с одинарной точностью.
Пакет тестовых программ SPEC CPU 95
Появление нового набора тестовых программ обусловлено развитием микропроцессоров (повышением производительности и увеличением объема внутри кристальной памяти), совершенствованием компиляторов, стремлением учесть требования стандартов открытых систем, а также скорректированным после появления SPEC 92 представлением об актуальности различных областей приложений.
Современные микропроцессоры выполняют тесты SPEC CPU 92 в течение интервалов времени от долей секунды до нескольких секунд, что вносит в измерения достаточно большую погрешность. Объем кода программ и данных SPEC 92 таков, что программы и данные могут разместиться в кэш-1 памяти процессора. Это вообще не позволяет получить сколько-нибудь доо товерные оценки производительности.
Индексы производительности в SPEC 95 даются по отношению к эталонной машине SPARC-station 10/40 в конфигурации с кэш-памятью второго уровня.
Используются два тестовых набора C1NT 95 и СЕР 95, состоящие из 8 и 10 программ соответственно.
При испытаниях компьютеров формируются:
индексы производительности SPEC ini 95, SPEC fp 95 и SPEC int base 95, SPEC fp base 95 для фиксированной и плавающей точки в режиме компиляции с агрессивной оптимизацией и с консервативной оптимизацией соответственно;
индексы пропускной способности SPEC int rate 95, SPEC fp rate 95 и SPEC int rate base 95, SPEC fp rate base 95 для оценки многозадачных режимов и SMP-архитектур в режиме компиляции с агрессивной оптимизацией и с консервативной оптимизацией соответственно.
Все интегральные индексы производительности формируются как среднее геометрическое индексов по отдельным тестам.
Корпорация SPEC не дает никаких рекомендаций по установлению соответствия между значениями индексов SPEC 92 и SPEC 95. В табл. 1.5 и табл. 1.6 представлены сведения о программах, составляющих тестовый набор SPEC 95.
Таблица 1.5. Перечень программ набора CINT 95
Область приложения
Спецификация задачи
Моделирование
Моделирование кристалла Motorola 88100
Компиляция
Компиляция программы на С и компиляция оптимизированного кода для процессоров SPARC-
Искусственный интеллект
Игра Го — игра сама против себя
Компрессия
Компрессия текстового файла размером 16 Мбайт
Интерпретация
Lisp-интерпретатор
Обработка изображений
Сжатие графических объектов (JPEG) с различными параметрами
Манипулирование текстовыми строками
Shell-интерпретатор
Базы данных
Построение таблиц и манипулирование с таблицами
Таблица 1.6. Перечень программ набора CFP 95
Область приложения
Спецификация задачи
Гидродинамика, геометрический аспект
Генерация двумерной координатной сетки в произвольной области
Таблица 1.6 (окончание)
Область приложения
Спецификация задачи
Предсказание погоды
Моделирование водной поверхности методом конечных элементов (вещественная арифметика с одинарной точностью)
Квантовая физика
Вычисление масс элементарных частиц методом Монте- Карло
Астрофизика
Расчет межгалактических газов по уравнениям Навье— Стокса
Электромагнетизм
Гидродинамика
Расчет трехмерного поля потенциалов
Решение системы уравнений в частных производных
Моделирование
Предсказание погоды
Моделирование турбулентности в кубическом объеме
Вычисление статистики температур, воздушных потоков и уровней загрязнения *
Квантовая химия
Порождение потока электронов
Эле ктро магнетизм
Решение уравнения Максвелла
Пакет тестовых программ SPEC CPU 2000
Причины появления пакета тестов SPEC CPU 2000, в целом, те же, что и предыдущего SPEC CPU 95 — прогрессивное увеличение показателей производительности и объема памяти компьютеров, а также развитие компиляторов и операционных систем. Показатели, определяемые при выполнении тестов, и методика их подсчета остались теми же, что и в SPEC CPU 95. Эталонной машиной взята 300-мегагерцевая рабочая станция Sun Ultra5_10, индекс производительности которой принят за 100.
Пакет тестов CPU 2000 состоит из 25 программ и включает 19 программ, ранее не входивших ни в один пакет тестов SPEC. Критерии включения и, наоборот, критерии невключения кандидата в тесты CPU 2000 приведены в |53|.
Тест рекомендуется включать в пакет, если он:
имеет много пользователей;
использует значительное количество аппаратных ресурсов;
решает интересную техническую задачу;
выдает результаты, опубликованные известными изданиями;
расширяет ассортимент задач, решаемых тестами комплекта.
Тест не рекомендуется включать в пакет, если он:
не переносится в разумные сроки с платформы на платформу;
выполняет слишком много операций ввода/вывода, и потому не может быть отнесен к вычислительным задачам;
уже входил в состав комплекта SPEC CPU ранее, а его рабочая нагрузка осталась без существенных изменений:
является скорее фрагментом кода, чем завершенным приложением;
повторяет задачи, решаемые другими тестами-кандидатами;
выполняет разную работу на различных платформах.
Результаты тестирования можно найти на сайте http://www.specbench.org/ osg/cpu2000/results.
В табл. 1.7 представлены программы, входящие в набор SPEC CPU 2000.
Таблица 1.7. Перечень программ тестового пакета SPEC CPU 2000
Тест
Язык программирования
Описание
SPECint2000
164.gzip
C
Компрессия
175.vpr
C
Размещение элементов и расчет разводки FPGA- микрос^ем
176.gcc
C
Компилятор С
181.met
C
Комбинаторная оптимизация
I 186.crafty
C
Игра: шахматы
197. parser
C
Обработка текста
252.eon
C++
Компьютерная визуализация
253.perlbmk
c
Интерпретатор Perl
254.gap
c
Интерпретатор теории групп
255. vortex
c
Объектно-ориентированная БД
256.bzip2
c
Компрессия
300.twolf
c
Моделирование размещения элементов и разводки процессора
SPECfp2000
168.wupwise
F77
Физика: квантовая хромодинамика
171.swim
F77
Моделирование мелкой воды
Таблица 1.7 (окончание)
Тест
Язык программирования
Описание
172.mgrid
F77
Многосеточные методы: трехмерное потенциальное поле
173.applu
F77
Дифференциальные уравнения в частных производных
177,mesa
с
Библиотека трехмерной графики
178.galgel
F90
Вычислительная гидродинамика
179.art
С
Распознавание образов/нейросети
183.equake
С
Моделирование распространения сейсмических волн
187.facerec
F90
Обработка изображений: распознавание лиц
188.ammp
С
Вычислительная химия
189.lucas
F90
Теория чисел/поиск простых чисел
191.fma3d
F90
Моделирование столкновений с применением метода конечных элементов
200.sixtrack
F77
Проектирование ускорителей элементарных частиц
3O1.apsi
F77
Метеорология: распространение загрязняющих веществ
Приведем оценки SPECint2000 (сентябрь 2002 года) из официально опубликованных результатов тестирования для ряда процессоров:
□ Intel Xeon 2800 МГц
921;
□ Alpha 21264С 1250 МГц
845;■i
□ Intel McKinley 1000 МГц
807;
□ IBM POWER4 1300 МГц
804.'
Соответственно оценки SPECfp2000:
□ Intel McKinley 1000 МГц
1356;,
□ IBM POWER4 1300 МГц
1202;j
□ Alpha 21264С 1250 МГц
1016;
□ Intel Xeon 2800 МГц
878.i
Вопросы для самоконтроля
к главе 1
Назовите основные типы сверхбольших интегральных схем и тенденции их развития.
Укажите достоинства и недостатки статических и динамических микросхем памяти.
Укажите механизмы уменьшения времени обращения к памяти и условия, при которых это уменьшение достижимо.
Назовите характерные показатели времени обращения к различным типам памяти.
Что такое программируемые логические интегральные схемы (ПЛИС), их основные типы, технология проектирования устройств с использованием ПЛИС?
Приведите классификацию форматов и типов команд микропроцессоров. Укажите на отличие между микропроцессором с векторными командами и суперскалярным микропроцессором.
Назовите основные особенности разнесенной архитектуры (decoupled architecture).
Укажите условия эффективного применения кэш-памяти.
Назовите структурные методы уменьшения времени доступа к памяти.
Как устроена кэш-память с прямым отображением?
Как устроены ассоциативная кэш-память и множественно-ассоциативная кэш-память?
Что такое кэш-память со сквозной записью и обратной записью?
Укажите особенности организации работы кэш-памяти в мультипроцессорных системах с многомодульной памятью.
Что такое расслоение памяти?
Укажите различие между RISC- и CISC-процессорами.
Зачем необходимо быстрое переключение контекста процессора? Назовите основные механизмы реализации переключения контекста.
Укажите основные направления стандартизации архитектур процессоров.
Что такое пиковая производительность?
Назовите основные виды тестов измерения производительности.
Что такое тесты SPECxx?
Объясните различие между мультитредовой архитектурой и архитектурой с длинным командным словом.
Какие процессоры используют параллелизм уровня команд?
Какие зависимости существуют между командами последовательной программы? Перечислите зависимости, которые могут быть устранены переименованием ресурсов.
Укажите приемы уменьшения потерь производительности, связанные с разрешением зависимостей между командами по управлению.
Перечислите известные вам способы переименования ресурсов.
Приведите примеры различных реализаций механизмов предсказания ветвлений.
Назовите известные вам способы диспетчеризации в микропроцессорах.
Укажите препятствия повышению эффективности суперскалярных микропроцессоров и процессоров с длинным командным словом.
Перечислите характерные особенности мультитредовой архитектуры.
Укажите на приемы, используемые при конструировании мультитредо- вых программ и мультитредовых процессоров.
В чем отличие мультитредовой архитектуры от традиционных мультипроцессорных систем?
Перечислите основные идеи использования при построении микропроцессоров ресурса транзисторов при достижении степени интеграции миллиард транзисторов на кристалл.
Объясните механизм условного выполнения команд и его отличие от команд условного перехода.
Чем вызвано использование условного выполнения команд в VLIW- процессорах?
Что такое преобразование if?
Разъясните основные особенности архитектуры IA-64.
В чем заключается особенность вычисления предикатов команд условного выполнения в архитектуре Narch Московского центра "СПАРК- технологий"?
Перечислите основные направления специализации функциональных устройств микропроцессоров.■
Перечислите основные архитектуры однокристальных мультипроцессорных систем.
Сформулируйте основные идеи построения реконфигурируемых мультипроцессоров.
Разъясните основные достоинства и недостатки однокристальных SIMD- систем.
Глава 2
Универсальные микропроцессоры
Структура рынка универсальных микропроцессоров
Доминирующее положение на рынке универсальных микропроцессоров занимают микропроцессоры с системой команд х86, основными производителями которых являются компании Intel, AMD и VIA. Ежегодный рост выпуска таких микропроцессоров составляет 10—15%. Доля остальных производителей универсальных микропроцессоров с RISC-архитектурой составляет около 20% рынка.
В настоящее время производятся и используются вычислительные системы на базе микропроцессоров со следующими архитектурами (табл. 2.1).
Таблица 2.1. Наиболее распространенные микропроцессорные архитектуры
Микропроцессорная архитектура
Компания-разработчик
х86
Intel, AMD, Cyrix, IDT, Transmeta
IA-64
Intel
Power PC
Motorola, IBM, Apple
Power
IBM
РА
Hewlett-Packard
Alpha
Hewlett-Packard (DEC)
SPARC
SUN
MIPS
MIPS
MAJC
SUN
Исторически микропроцессоры с архитектурой х86 доминировали в персональных ЭВМ, а RISC-процессоры использовались в рабочих станциях, высокопроизводительных серверах и суперкомпьютерах. В настоящее время процессоры с архитектурой х86 несколько потеснили RISC-процессоры в их традиционных областях применения, в то же время, некоторые производители рабочих станций, например SUN, пытаются выйти со своими процессорами на рынок персональных ЭВМ.
На сегодняшний день основные производители микропроцессоров обладают примерно равными технологическими возможностями, поэтому в "борьбе за скорость" на первое место выходит фактор архитектуры. Архитектура микропроцессоров на протяжении ряда лет развивается по двум магистральным направлениям. В рамках каждого направления в той или иной степени используются ранее рассмотренные архитектурные приемы повышения производительности. но имеются и собственные приоритеты.
Первое направление получило условное название Speed Daemon. Оно характеризуется стремлением к достижению высокой производительности главным образом за счет высокой тактовой частоты при упрошенной внутренней структурной организации микропроцессора.
Второе направление — Brainiac — связано с достижением высокой производительности за счет усложнения логики планирования вычислений и внутренней структуры процессора. Каждое из направлений имеет собственных , противников и сторонников и, по-видимому, право на существование. | Компании — производители RISC-процессоров создали и активно развива- | ют свои микропроцессорные архитектуры, обеспечивая обратную программную совместимость между поколениями микропроцессоров одного семейства при уменьшении технологических норм производства и увеличении ■ производительности.
Общей особенностью большинства RISC-микропроцессоров является высоко-; скоростная обработка 64-разрядных операндов с фиксированной и плавающей : точкой. Построение функциональных узлов таких микропроцессоров требует сложных схемотехнических решений, что обусловливает использование боль-i того числа транзисторов в логических схемах процессора и большого числа® слоев металлизации для осуществления межсоединений.I
В поисках способов достижения максимальной производительности разработ-1 чики микропроцессоров с RISC-архитектурой все чаще позволяют себе отхо-е дить от ее канонических принципов. В то же время, в микропроцессорах® CISC-архитектуры, яркими представителями которых является семейство х8б,® внедряются решения, наработанные при создании RISC-процессоров. Я В этой главе, на примерах микропроцессоров различных компаний-произ*® водителей, будут рассмотрены основные архитектурно-технические репфД ния, используемые в настоящее время при создании микропроцессоров, fl
Микропроцессоры с архитектурой х86
Микропроцессор Pentium (Р5)
Семейство микропроцессоров Pentium [55, 56] компании Intel включает в себя процессоры, работающие на тактовых частотах от 60 до 200 МГц. Процессор Pentium полностью программно совместим с предыдущими микропроцессорами Intel 80386, Intel 80486 и позволяет применять ранее разработанное программное обеспечение для персональных компьютеров.
Первые представители семейства Pentium, работавшие на частотах 60 и 66 МГц, изготовлялись по технологии БиКМОП 0,8 мкм с напряжением 5 В и содержали 3,1 млн транзисторов. При производстве процессоров Pentium с частотами 90 и 100 МГц, включающих 3,3 млн транзисторов, использовалась технология БиКМОП 0,6 мкм и напряжение питания 3,3 В. Начиная с Pentium 120 МГц, производство осуществлялось по технологии КМОП 0,35 мкм, а напряжение питания было снижено до 2,8 В.
В отличие от предыдущих микропроцессоров с системой команд х86, процессоры семейства Pentium обладали целым рядом технических новшеств, к числу которых относятся:
близкая к суперскалярной архитектура;
раздельные типы кэш-памяти команд и данных;
предсказание переходов;
высокопроизводительные операции с плавающей точкой;.
усовершенствованная 64-разрядная шина данных;
средства обеспечения целостности данных;
SL-технология со средствами управления энергопотреблением;
поддержка многопроцессорности;
мониторинг производительности;
поддержка различных размеров страницы памяти.
Структура микропроцессора Pentium изображена на рис. 2.1.
Суперскалярная архитектура
Суперскалярная реализация процессора Pentium — это естественное развитие предыдущих поколений Intel 80386, Intel 80486 процессоров Intel с 32- разрядной архитектурой (выполнять несколько команд за один такт мог уже процессор Intel 486).
Два конвейера процессора Pentium могут выполнять две команды одновременно. Как и в случае единственного конвейера процессора Intel486, двой-
ной конвейер процессора Pentium выполняет целочисленные команды в 5 этапов:
Предвыборка.
Декодирование 1.
Декодирование 2.
Выполнение.
Запись результатов.
При этом несколько команд могут находиться на разных этапах выполнения.
Рис. 2.1. Структура микропроцессора Pentium
Однако два конвейера не являются независимыми. При остановке одного останавливается и другой, поскольку блок арифметики с плавающей точкой использует блок арифметики с фиксированной точкой. Следовательно, эти операции не могут выполняться параллельно. Это ограничивает суперска- лярность процессора.
В процессоре Pentium многие часто используемые и простые команды, выполняемые ранее с помощью микрокода, были заменены аппаратной реализацией. Для сложных команд был усовершенствован микрокод процессора.
Раздельные типы кэш-памяти команд и данных
Каждая кэш-память процессора Pentium имеет размер 8 Кбайт. Типы кэшпамяти являются множественно-ассоциативными. Поиск требуемой информации выполняется в стандартных 32-байтовых строках.
Буфер трансляции адресов (TLB) преобразует адрес ячейки внешней памяти в соответствующий адрес данных в кэш-памяти.
Кэш-память данных процессора Pentium использует метод "обратной записи" (write-back) и протокол MESI (Midified Exclusive Shared Invalid). Метод обратной записи позволяет модифицировать данные в кэше без обращения к оперативной памяти (данные записываются в оперативную память только при удалении из кэша). В предыдущих поколениях использовалась кэшпамять со сквозной записью (write-through). При каждой модификации кэшпамяти данные передавались во внутреннюю память. Метод обратной записи повышает производительность, уменьшая нагрузку на шину интерфейса с памятью.
Поддержка в процессоре Pentium протокола MES1 позволяет обеспечить когерентность (согласованность) данных в кэшах процессоров и в основной памяти при работе в мультипроцессорной системе.
Предсказание переходов
Процессор Pentium — первый х86-совместимый микропроцессор, использующий данную технологию, которая ранее применялась только в больших ЭВМ и RISC-процессорах.
Процессор Pentium выполняет упреждающую обработку переходов, используя буфер адресов переходов ВТВ (Branch Target Buffer) и два буфера предварительной выборки. Один буфер применяется для предварительной выборки команды в предположении, что перехода нет, другой выполняет предвыборку инструкций в буфер, используя содержимое ВТВ (запомненное при первом выполнении перехода).
Алгоритм упреждающей обработки переходов процессора Pentium не только прогнозирует выбор простых ветвей, но поддерживает и более сложное
прогнозирование (например, во вложенных циклах). Это делается с помощью хранения в буфере ВТВ нескольких адресов переходов. ВТВ хранит до 256 результатов переходов, что позволяет выполнять правильное предсказание с вероятностью не менее 0,8.
Высокопроизводительный блок операций с плавающей точкой
Первым микропроцессором Intel, который объединял в одном кристалле средства обработки чисел в форматах с фиксированной и плавающей точкой, был процессор Intel 486 DX. В предыдущих поколениях процессоров Intel для выполнения операций с плавающей точкой применялся отдельный математический сопроцессор.
В процессоре Pentium применяется блок вычислений с плавающей точкой, использующий сложные восьмиступенчатые конвейеры и внутренние функции. Большинство команд с плавающей точкой начинают выполняться в одном из целочисленных конвейеров, а затем передаются на конвейеры с плавающей точкой. Кроме того, обычные функции с плавающей точкой (такие как сложение, умножение и деление) для более быстрого выполнения реализованы как внутренние функции.
В результате таких нововведений процессор Pentium (815/100) выполняет операции с плавающей точкой в 10 раз быстрее, чем процессор Intel 486 DX 33 МГц.
Усовершенствованная 64-разрядная шина данных
Благодаря 64-разрядной шине данных процессор Pentium может обмениваться данными с памятью со скоростью 528 Мбайт/с. Это более чем в 5 раз превышает максимальную скорость передачи в микропроцессоре Intel 486DX2 66 МГц (105 Мбайт/с). В результате общая производительность процессора Pentium (815/100) в 2,5 раза превышает производительность микропроцессора Intel 486DX2 66 МГц.
Помимо расширения шины данных, для увеличения ее пропускной способности процессор Pentium реализует конвейеризацию циклов шины, что позволяет начать второй цикл шины еще до завершения первого. Это предоставляет подсистеме памяти больше времени для декодирования адреса, благодаря чему можно использовать более медленные и менее дорогие микросхемы памяти.
Увеличению пропускной способности и надежности системы способствуют реализованная в Pentium поддержка пакетного чтения и записи, проверка четности адреса и данных.
Для повышения скорости выполнения последовательных операций записи в память процессор Pentium использует два буфера записи (по одному на ка-
ждый конвейер), благодаря которым процессор может выполнять следующие команды, в случае если результат одной из текущих команд еще не записан в память из-за занятости шины.
Средства обеспечения целостности данных
С целью пдвышения надежности систем, создаваемых на основе микропроцессора Pentium, в нем предусмотрены два средства, ранее присущие только большим ЭВМ, — внутреннее обнаружение ошибок и тестирование с помощью функциональной избыточности.
Для внутреннего обнаружения ошибок используются биты четности внутренних буферов процессора. Для приложений, особо критичных к достоверности результата, может быть использовано средство функциональной избыточности FRC (Functional Redundancy Checking). FRC требует использования двух микропроцессоров Pentium — основного и проверяющего. В таком тацдеме микропроцессоры выполняют одни и те же вычисления параллельно. Один микропроцессор сравнивает свои результаты с результатами второго микропроцессора. В случае их расхождения в системе генерируется прерывание.
Управление энергопотреблением
В процессорах Pentium, начиная с Pentium 90 МГц, была применена новая технология управления энергопотреблением. Средства энергосбережения работают на двух уровнях: на уровне микропроцессора и на уровне системы. Управление энергопотреблением предусматривает при выполнении задач, нс требующих выполнения интенсивных вычислений (например, в процессе редактирования текстов), перевод процессора в режим с пониженной тактовой частотой и пониженным потреблением питания. Возможна даже полная остановка процессора ("спящий" режим — SL). В энергосберегающем режиме микропроцессор может замедлять, приостанавливать или полностью прекращать работу отдельных системных компонентов, минимизируя потребление электроэнергии.
Поддержка мультипроцессорности
В процессор Pentium включены средства поддержки мультипроцессорной обработки, что позволяет использовать его в симметричных мультипроцессорных системах с SMP-архитектурой.
Как отмечалось ранее, для поддержки согласованности данных между различными процессорами кэш данных процессора Pentium использует протокол MESI.
Процессоры Pentium содержат также два новых средства поддержки многопроцессорности: внутри кристальный контроллер многопроцессорных пре-
рываний, поддерживающий до 60 процессоров и двухвходовой контроллер кэш-памяти второго уровня, позволяющий двум процессорам совместно использовать один кэш второго уровня.
Мониторинг производительности
Мониторинг производительности — это возможность, предоставляемая процессором Pentium проектировщикам систем и разработчикам приложений по выявлению и устранению в программном коде потенциально "узких мест". Разработчики могут наблюдать и подсчитывать такты для внутрипро- цессорных событий, оказывающих влияние на длительность операций чтения и записи, успешные и неуспешные обращения к кэш-памяти, прерывания и т. д. Это позволяет оценивать эффективность выполнения программного кода на процессоре Pentium и выполнять тонкую настройку разрабатываемых приложений и систем для получения максимальной производительности.
Поддержка различных размеров страницы памяти
Процессор Pentium поддерживает как традиционный размер страницы памяти (4 Кбайт), так и увеличенный размер (4 Мбайт). Этот прозрачный для программного обеспечения механизм работы со страницами памяти был введен для уменьшения частоты переключения страниц в сложных графических приложениях и ядре операционной системы. Увеличенный размер страницы позволяет отображать большие объекты, что ранее было невозможно. Кроме того, увеличенный размер страницы увеличивает частоту удачного обращения к странице, что повышает производительность системы.
Характеристики производительности
В табл. 2.2 и 2.3 приведены значения показателей производительности некоторых микропроцессоров Pentium в сравнении с другими микропроцессорами на тестах SPECint92 и SPECfp92 UNIX.
Тест производительности SPECint92 UNIX — это тест с интенсивным использованием процессора, позволяющий оценить его производительность с помощью репрезентативной смеси прикладных программ. Тест производительности SPECfp92 UNIX измеряет производительность процессора на операциях с плавающей точкой.
Таблица 2.2. Тест производительности SPECint92 UNIX
Процессор
Индекс
Процессор
Индекс
Intel Pentium (815/100)
100.0
HP PA 735/99
80.6
Intel Pentium (735/90)
90.1
SuperSPARC 10/51
65.2
Таблица 2.2 (окончание)
Процессор
Индекс
Процессор
Индекс
MIPS R4400SC-150
85.9
IBM Power РС601-66
62.6
DEC Alpha-150
84.4
Таблица 2.3. Тест производительности SPECfp92 UNIX
Процессор
Индекс
Процессор
Индекс
Intel Pentium (815/100)
80.6
HP PA 735/99
149.8
Intel Pentium (735/90)
72.7
SuperSPARC 10/51
83.0
MIPS R4400SC-150
93.6
IBM Power PC601-66
76.1
DEC Alpha-150
127.7
Микропроцессор Pentium MMX
В соответствии с концепцией NSP — естественной обработки сигналов, объявленной в 1995 году компанией Intel, на микропроцессор возлагается ряд задач, ранее выполняемых отдельными специализированными устройствами. Такой подход позволяет упростить конструкцию компьютера и удешевить его производство. К числу задач, которые представляется возможным решать с помощью универсального процессора, относятся: синтез звука и музыки, распознавание речи, обработка видео- и графической информации, выполнение коммуникационных функций и многое другое. Однако количество разнообразных приложений, выполнение которых должно быть возложено на процессор в соответствии с последовательным соблюдением принципов NSP, существенно превысило вычислительные возможности далекой от совершенства архитектуры семейства х86 и потребовало внесения в нее соответствующих изменений. Результатом воплощения концепции NSP в "металле" явился выпущенный в январе 1997 года микропроцессор Pentium MMX (кодовое обозначение Р55С). Система команд этого процессора расширена 57 дополнительными командами, ориентированными на эффективное выполнение типичных мультимедийных алгоритмов, к числу которых относятся и многие алгоритмы, характерные для цифровой обработки сигналов (операции над векторами, свертка, преобразование Фурье и т. п.). Это первое существенное изменение в системе команд микропроцессоров семейства х86, начиная с выхода в свет микропроцессора Intel 80386 в-1985 году, имевшего 220 команд.
К основным отличиям Pentium MMX от его предшественника относятся |57|:
поддержка выполнения мультимедийного набора команд;
удвоенные объемы типов кэш-памяти данных и команд (по I6 Кбайт каждый);
улучшенная логика предсказания переходов;
расширенная конвейеризация;
более глубокая буферизация записи.
Вместе с тем, процессор Pentium MMX лишился некоторых возможностей, присущих Pentium:
функционального контроля по избыточности;
поддержки набора микросхем управления кэшированием (Intel 82498/82493 и 82497/82492);
разделяемой линии обращения к кэш-памяти команд.
Микропроцессор Pentium MMX содержит 4,5 млн транзисторов и производился по технологии КМОП 0,35 мкм и 0,25 мкм. Микропроцессор использовал два напряжения питания 3,3 В и 2,8 В и потреблял мощность 15,7 Вт.
Структурная схема микропроцессора Pentium MMX приведена на рис. 2.2.
Процессор содержит два командных конвейера (LI pipeline, V pipeline). Конвейер U может выполнять все целочисленные команды и команды с плавающей точкой. Конвейер V — простые целочисленные команды и команду с плавающей точкой FXCH..
На рис. 2.2 показаны раздельные типы кэш-памяти команд и данных процессора. Каждый кэш имеет объем 16 Кбайт и содержит два порта, по одному для каждого исполнительного конвейера. Кэш данных снабжен буфером трансляции адресов (TLB). Разрешение или запрещение кэширования стра- i ниц памяти может задаваться индивидуально, с помощью программных или i аппаратных средств.
Кэш команд, буфер адресов переходов и буфер предварительной выборки обеспечивают интенсивную подачу команд к исполнительным модулям процессора. Программируемый внутренний контроллер прерываний функционально совместим с контроллером 8259А и обеспечивает обслуживание как внутренних, так и внешних прерываний.
В Pentium MMX улучшена система предсказания переходов. В процессоре Pentium для предсказания переходов используются два буфера (по 32 байта); предварительной выборки: один для линейной выборки команд, а другой—; для выборки в соответствии с содержанием буфера адресов перехода (ВТВ) Таким образом, команда, прежде чем она потребуется для исполнения, почти: всегда оказывается предварительно выбранной. В Pentium MMX количеств^ буферов предварительной выборки команд увеличено до четырех (по 16 байт)/
что позволяет осуществлять предвыборку по четырем независимым направлениям, а также повышена точность предсказания переходов.
Рис. 2.2. Структурная схема Pentium MMX
Увеличена до 6 стадий длина исполнительного конвейера за счет добавления стадии выборки (F) между стадиями предвыборки (PF) и декодирования команды (D1). На стадии выборки выполняется декодирование длины команды, которое в предыдущих моделях Pentium выполняется на стадии DL Процесс выполнения команд в Pentium и Pentium MMX показан на рис. 2.3. Увеличение длины конвейера позволило сократить в среднем длительность выполнения команд и увеличить производительность процессора.
pfpfffd1d1d2d2exexwbwb11I211I2I3I411I2I3I411I21516131411I21516131411I2I7I8I5I6I3I4 11I2I7I8I5I6I3I4 11I2I7I8I5I613I411I2I7I8I5I613I411I2I7I8I5I6I3I4 11I2I7I8I5I6I3I4 11I2I7I8I5I6I3I4I7I8I5I6I3I4I7I8I5I6I7I8I5I6I7I8I7I8
pf
pf
f
f
d1
d1
d2
d2
ex
ex
wb
wb
11
I2
11
I2
I3
I4
11
I2
I3
I4
11
I2
15
16
13
14
11
I2
15
16
13
14
11
I2
I7
I8
I5
I6
I3
I4 11
I2
I7
I8
I5
I6
I3
I4 11
I2
I7
I8
I5
I6
13
I4
11
I2
I7
I8
I5
I6
13
I4
11
I2
I7
I8
I5
I6
I3
I4 11
I2
I7
I8
I5
I6
I3
I4 11
I2
I7
I8
I5
I6
I3
I4
I7
I8
I5
I6
I3
I4
I7
I8
I5
I6
I7
I8
I5
I6
I7
I8
I7
I8
Рис. 2.3. Выполнение команд в Pentium и в Pentium MMX
На рис. 2.3 обозначены: II, 12, ... — последовательность выполняемых команд; CLKO, CLKI, ... — последовательность процессорных тактов; pf, f, dl, d2, ex, wb — стадии выполнения команд: предвыборка, выборка, декодирование инструкции, генерация адреса, выполнение и запись результата соответственно.j
Наряду с перечисленными улучшениями, главным отличием нового микропроцессора явилась поддержка дополнительного мультимедийного набора команд, для выполнения которых используется MMX-устройство и блок i регистров с плавающей точкой. Технология ММХ внесла следующие изменения в архитектуру микропроцессоров Intel:
добавлены 8 MMX-регистров (ММО— ММ7). Регистры ММХ физически совмещены с 64-разрядными регистрами с плавающей точкой и могут быть использованы только для выполнения действий над ММХ-. данными;'
добавлены 57 новых команд. Команды подразделяются на следующие; группы: обмена данными, арифметические, сравнения, преобразования,, логические, сдвига и команду отмены режима ММХ;.
добавлены 4 новых типа данных — упакованные байты (8 байт в 64битном пакете), упакованные слова (четыре 16-битных слова в 64-битном пакете), упакованные двойные слова (два 32-битных двойных слова в 64битном пакете) и учетверенное слово (64 бита). Арифметические или логические операции выполняются параллельно над каждым байтом слова или двойного слова, содержащегося в 64-разрядном ММХ-регистре (SIMD-модель обработки).
SIMD-обработка существенно ускоряет выполнение мультимедийных алгоритмов, для которых характерно выполнение идентичных операций над большими массивами однотипных данных (например, 16-битные отсчеты оцифрованного звука, 8-битные коды цвета пиксела и т. п.). Выполнение умножения с накоплением четырех 16-разрялных слов на другие 4 слова с использованием трех MMX-команд показано на рис. 2.4. Аналогичные вычисления на процессоре Pentium потребуют 4-кратного выполнения последовательности команд: FILD, FMUL, FADD (всего 12 команд).
Применение MMX-команд позволяет увеличить скорость выполнения мультимедийных приложений на 60% по сравнению с обыкновенным процессором Pentium, при одинаковых тактовых частотах (данные мультимедийного теста Intel Media Benchmark).
Умножение и сложение содержимого . MMX-регистра и памятиУмножение и сложение содержимого . MMX-регистра и памятиАЗА2А1АОАЗА2А1АОMOVQ MMX REG, memory (64-bit)MOVQ MMX REG, memory (64-bit)ВЗВ2В1ВОВЗВ2В1ВОАЗ * ВЗ + А2 * В2А1 * В1 + АО * ВОАЗ * ВЗ + А2 * В2А1 * В1 + АО * ВОPMADDWD MMX REG, memory (64-bit)PMADDWD MMX REG, memory (64-bit)Сложитьрезультат ссодержимымаккумулятораСложитьрезультат ссодержимымаккумулятораACC (High)ACC (Low)ACC (High)ACC (Low)PADDD ACC MMX REGPADDD ACC MMX REG
Умножение и сложение содержимого . MMX-регистра и памяти
Умножение и сложение содержимого . MMX-регистра и памяти
АЗ
А2
А1
АО
АЗ
А2
А1
АО
MOVQ MMX REG, memory (64-bit)
MOVQ MMX REG, memory (64-bit)
ВЗ
В2
В1
ВО
ВЗ
В2
В1
ВО
АЗ * ВЗ + А2 * В2
А1 * В1 + АО * ВО
АЗ * ВЗ + А2 * В2
А1 * В1 + АО * ВО
PMADDWD MMX REG, memory (64-bit)
PMADDWD MMX REG, memory (64-bit)
Сложитьрезультат ссодержимымаккумулятора
Сложитьрезультат ссодержимымаккумулятора
ACC (High)
ACC (Low)
ACC (High)
ACC (Low)
PADDD ACC MMX REG
PADDD ACC MMX REG
АЗ
А2
А1
АО
Загрузка MMX-регистра
64-разрядный MMX-регистр
Рис. 2.4. Выполнение умножения с накоплением с использованием ММХ-команд
Физическое совмещение MMX-регистров и регистров с плавающей точкой обеспечивает совместимость с предшествующей архитектурой и, следова-
тельно, позволяет использовать ранее разработанное программное обеспечение. Однако для переключения из режима ММХ в режим вычислений с плавающей точкой процессору требуется 50 тактов, что снижает его производительность при выполнении смеси MMX-команд и команд с плавающей точкой. Выполнение MMX-команды в исполнительном конвейере (U или V) может осуществляться одновременно с выполнением другой ММХ- команды или команды с фиксированной точкой (но не команды с плавающей точкой). К 6-ти обычным стадиям выполнения для MMX-команды добавляются еще 6 — в устройстве ММХ.
Расширенная конвейеризация существенно повышает производительность процессора и на немультимедийных приложениях. Сравнительные данные по результатам испытания на тестах SPECint95 и SPECfp95 процессоров Pentium и Pentium ММХ сведены в табл. 2.4.
Таблица 2.4. Показатели производительности процессоров Pentium и Pentium ММХ на тестах SPECint95 и SPECfp95
Процессор
SPECint95SPECfp95
Pentium 200 МГц
Pentium ММХ 200 МГц
Pentium ММХ 166 МГц
5,473,68
6,414,66
5,594,30
Микропроцессор Pentium Pro (Р6)
Микропроцессор компании Intel шестого поколения — Р6 получил наименование Pentium Pro |58|. Он ориентирован на применение, главным образом, в старших моделях рабочих станций и мультипроцессорных системах. Р6, как и предыдущие представители семейства, поддерживает систему команд х86. Однако архитектурные особенности процессора обусловливают его эффективность для 32-разрядных приложений, тогда как для 16-раз- рядных программ скорость выполнения может оказаться существенно меньшей, чем у Р5 с той же тактовой частотой.
При изготовлении процессора применена новая конструкция корпуса. Процессор состоит из двух микросхем, помещенных в один керамический корпус, и не согласуется по выводам с процессорами Pentium. Для его использования необходим переход на новые системные платы. Объем логического оборудования микропроцессора составляет 5,5 млн транзисторов, рассеиваемая мощность — 14 Вт. Первые микропроцессоры Р6 с тактовой частотой 150 МГц были выполнены по технологии 0,6 мкм БиКМОП с четырехслойной металлизацией. С переходом на технологию 0,35 мкм были выпущены микропроцессоры с частотой до 200 МГц.
Достижение высокой производительности в Pentium Pro обеспечивается за счет использования ряда архитектурных и технологических новшеств. К их числу относятся разнесенная архитектура (Decoupled Architecture), динамическое выполнение команд (Dynamic Execution), двойная независимая шина (Dual Independent Bus — DIB).
В основе технологии динамического выполнения лежат такие повышающие производительность методы, как исполнение команд с опережением (спекулятивное выполнение), переупорядочение команд и предсказание переходов.
Новая архитектура кэш-памяти предусматривает использование разных шин для соединения процессорного ядра с кэш-памятыо и основной оперативной памятью. Первая шина работает на тактовой частоте процессора, тогда как вторая — с частотой системы. Такое разделение шин позволило в 3 раза ускорить обмен процессора с подсистемой памяти.
Благодаря этому отпадает необходимость в отдельной внешней кэш-памяти. Микропроцессор содержит раздельные кэш-памяти первого уровня (L1) для данных и команд, каждая объемом 8 Кбайт, и объединенный кэш второго уровня (L2). Кэш-память данных первого уровня двухпортовая, неблокирующая, поддерживает одну операцию чтения и одну операцию записи за такт. Интерфейс кэш-памяти второго уровня работает с тактовой частотой центрального процессора (CPU) и может передавать 64 бита за такт. Внешняя шина микропроцессора работает с 1/2, 1/3, или 1/4 тактовой частоты ядра. Объем кэш-памяти второго уровня составляет 256 Кбайт при технологии 0,6 мкм и 512 или 1024 Кбайт при технологии 0,35 мкм.
Тот факт, что 16-разрядные программы работают на Pentium Pro не быстрее, чем на Pentium с соответствующей частотой, объясняется потерями производительности при частой перезагрузке длинного 14-стадийного исполнительного конвейера процессора при работе с короткими 16-разрядными данными.
Структура микропроцессора Pentium Pro показана на рис. 2.5. На нем рассмотрены состав и назначение основных функциональных блоков процессора.
512-элементный буфер адресов переходов (ВТВ — Branch Target Buffer) позволяет сократить число тактов при выборке строк из кэш-памяти устройством выборки команд (IFU — Instruction Fetch Unit). Процесс выборки конвейеризирован. Новая строка выбирается каждый такт центрального процессора (CPU). Три параллельных декодера (ID — Instruction Decoder) каждый такт преобразуют несколько команд архитектуры х86 в наборы микроопераций.
Таблица псевдоним.ов регистров (RAT — Register Alias Table) используется для переименования регистров. Результат переименования посылается в устройство резервирования (RS — Reservation Station) и в буфер переупоря- дочивания (ROB — ReOrder Buffer).
Рис. 2.5. Структура микропроцессора Pentium Pro
Микрооперации с переименованными операндами в резервирующей станции ожидают значений операндов, поступающих независимо из нескольких источников. Данными являются результаты выполненной микрооперации, адреса из ВТВ, содержимое регистров.
Выбор микроопераций из очереди и динамическое исполнение осуществляется с учетом их истинных зависимостей по данным, а также в зависимости от доступности исполнительных устройств. Порядок, в котором выполняются микрооперации, в общем случае отличается от их расположения в исходной программе.
При планировании обращений к памяти используется устройство резервирования, устройство вычисления адреса (AGU — Address Generation Unit) и буфер упорядочивания обращений к памяти (MOB — Memory Ordering Buffer).
Микрооперация становится кандидатом на выгрузку сразу, как только она выполнена, определен адрес перехода и полученные результаты направлены к нуждающейся в них микрооперации. Для восстановления первоначального порядка микроопераций используются временные метки микроопераций в буфере переупорядочи вания и файле регистров выгрузки (RRF — Retirement Register File). Процесс выгрузки должен обеспечить не только восстановление первоначального порядка микроопераций, но и гарантировать правильную обработку прерываний и ошибок, а также отменять все или часть результатов, полученных после неправильного предсказания ветвления. В момент выгрузки микрооперации ее результат из буфера переупорядочи- вания помещается в файл регистров выгрузки.
В табл. 2.5 и 2.6 приведены основные характеристики процессоров Pentium Pro.
Таблица 2.5. Технические характеристики микропроцессоров Pentium Pro
Тактовая частота (МГц)
Скорость шины (МГц)
Технологические нормы (мкм)
Дата выпуска
150
60
0,6
ноябрь 1995 г.
166
66
0,35
I кв. 1996 г.
200 (кэш 512 Кбайт)
66
0,35
IV кв. 1996 г.
200 (кэш 1 Мбайт)
66
0,35
август 1997 г.
Таблица 2.6. Сравнение производительностей микропроцессоров
Микропроцессор
SPEC95 Int/fp
Pentium Pro (200 МГц), кэш 1 Мбайт
8,66/6,8
Pentium (200 МГц)
5,47/3,68
DEC Alpha (300 МГц)
7,3/11,6
SUN UltraSPARC
5,1/7,4
Микропроцессор Pentium II
Этот микропроцессор компании Intel, известный первоначально под названием Klamath, объединяет лучшие качества предыдущих моделей [59, 60|. Высокая производительность процессора достигается благодаря использова-
6 Зак. 1086
нию в нем трех передовых технологий: динамического исполнения кода, ММХ и двойной независимой шины.
Архитектура процессора во многом сходна с Pentium Pro, однако в Pentium II применен более дешевый подход к реализации кэш-памяти второго уровня. Дороговизна Pentium Pro объяснялась, прежде всего, большим процентом брака при изготовлении и совместном размещении в корпусе кэш-памяти и собственно процессора, поскольку контроль качества может быть осуществлен только после полного цикла сборки микропроцессора.
В Pentium II применяется более дешевая кэш-память второго уровня BSRAM (Burst Static RAM — статическое пакетное ОЗУ), расположенная на одной плате с процессором. Кэш-память первого уровня увеличена до 32 Кбайт (16 Кбайт для кэш-памяти команд, 16 Кбайт — для кэш-памяти данных).
Архитектура двойной независимой шины, впервые примененная в Pentium Pro, в 3 раза улучшает возможности процессорного ядра по обмену с подсистемой памяти. Так же как и в Pentium Pro, одна шина соединяет процессорное ядро с кэшем второго уровня, а вторая шина — с основной оперативной памятью. Однако в ранних моделях Pentium II частота работы ядра с кэшем L2 была равна только половине тактовой частоты процессора.
Так же как и Pentium MMX, Pentium II содержит блок выполнения мультимедийных операций.
Плата процессора с кэш-памятью L2 помешена в картридж с контактным выводом SEC (Single Edge Contact), который устанавливается в разъем платы Slot 1 с 242 контактами (позже названный SC242).
По производительности первые модели Pentium II с частотой 233, 266 и 300 МГц превосходили Pentium ММХ, однако уступали Pentium Pro из-за более медленной кэш-памяти второго уровня. В то же время цена их при выпуске была почти в 2 раза ниже, чем у Pentium Pro.
Дальнейшее развитие линии Pentium II шло в трех направлениях:
Выпуск микропроцессоров Pentium II для высокопроизводительных персональных компьютеров (ПК) и рабочих станций с повышенной тактовой частотой ядра и системной шины.
Выпуск процессоров, ориентированных на использование в дешевых ПК с невысокими требованиями к производительности. Снижение цены микропроцессора удалось обеспечить за счет отказа от кэш-памяти второго уровня (процессор Celeron), при увеличении частоты работы ядра. Процессоры Celeron выпускались в упрощенном картридже SEPP (Single Edge Processor Package), а затем и в корпусе PPGA (Plastic Pin Grid Array). Необходимо заметить, что полный отказ от кэш-памяти второго уровня существенно снизил производительность микропроцессора и в последних моделях Celeron, с переходом на технологию производства 0,25 мм, на
кристалле была размещена кэш-память второго уровня уменьшенного объема (128 Кбайт).
Выпуск микропроцессоров с повышенной тактовой частотой, увеличенным объемом кэш-памяти, работающей на частоте ядра микропроцессора, поддержкой мультипроцессорного режима (последние модели Pentium II Xeon могут работать в 8-процессорной конфигурации). Данные микропроцессоры предназначены для использования в мощных рабочих станциях и серверах. Процессоры Pentium II Xeon также выпускаются в картриджах SEC, но гораздо большего размера. Для этих процессоров предназначен Slot 2 с числом контактов 330 (SC330).
Представители как первого, так и второго направления, были выпущены и в мобильном варианте. Обозначенные направления были продолжены Intel и в последующих микропроцессорных семействах.
Сведения о хронологии выпуска микропроцессоров Pentium 11 и их основные характеристики приведены в табл. 2.7.
Таблица 2.7. Общая характеристика микропроцессоров семейства Pentium II
Название, тактовая частота
Дата выпуска
Производительность SPECint95/ SPECfp95
Область применения
Кэш-память второго уровня
Число транзисторов, технологический процесс
Частота системной шины, МГц
Pentium II (300, 266, 233 МГц)
7.5.97
12,7/8.82
Высокопроизводительные профессиональные ПК, рабочие станции и серверы
512 Кбайт
7,5 млн (0,35 мкм)
66
Pentium II (333 МГц)
26.1.98
12,8/9,14
Профессиональные и бытовые ПК, серверы и рабочие станции
512 Кбайт
7,5 млн (0,25 мкм)
66
Мобильный Pentium II (233, 266 МГц)
2.4.98
12,3/ —
Мобильные ПК
512 Кбайт
7,5 млн (0,25 мкм)
66
Pentium II (350, 400 МГц)
15.4.98
16,9/12,0
Профессиональные и бытовые ПК, серверы и рабочие станции
512 Кбайт
7,5 млн (0,25 мкм)
100
Таблица 2.7 (продолжение)
Название, тактовая частота
Дата выпуска
Производи тельность SPECint95/ SPECfp95
Область применения
Кэш-память второго уровня
Число транзисторов, технологический процесс
Частота системной шины, МГц
Intel Celeron (266 МГц)
15.4.98
8,4/6.6
Дешевые ПК
Нет
7,5 млн f (0,25 мкм)
66
Intel Celeron (300 МГц)
8.6.98
8.8/7,0
Дешевые ПК
Нет
7,5 млн (0,25 мкм)
66
Pentium II Xeon
(400 МГц)
29.6.98
16,3/13,2
Рабочие станции и серверы
512 Кбайт или 1 Мбайт. Работает на частоте процессора
7,5 млн
100
Pentium II (450 МГц)
24.8.98
18,5/13,1
Профессиональные и бытовые ПК, серверы и рабочие станции
512 Кбайт
7,5 млн (0,25 мкм)
100
Intel Celeron (333 МГц)
24.8.98
12,9/10,4
Дешевые ПК
128 Кбайт на кристалле
19 млн
(0,25 мкм)
66
Intel Celeron (300A МГц)
24.8.98
11,9/9,2
Дешевые ПК
128 Кбайт на кристалле
19 млн (0,25 мкм)
66
Мобильный
Pentium II (300 МГц)
9.9.98
12,6/ —
Мобильные ПК
512 Кбайт
7,5 млн (0,25 мкм)
66
Pentium II Xeon (450 МГц)
6.10.98
19,7/15,0
Серверы и рабочие станции
512 Кбайт
Работает на частоте процессора
7,5 млн
100
Intel Celeron (400, 366 МГц)
4.1.99
14,9/11,8
Дешевые ПК
128 Кбайт на кристалле
19 млн (0,25 мкм)
66
Pentium II Xeon (450 МГц)
5.1.99
21,2/15,3
Серверы и рабочие станции
1 Мбайт или 2 Мбайт. Работает на частоте процессора
7,5 млн
100
Мобильный Pentium II (266, 300, 333, 366 МГц)
25.1.99
13,2/-
Мобильные ПК
256 Кбайт на кристалле
27,4 млн (0,25 мкм)
66
Таблица 2.7 (окончание)
Название, тактовая частота
Дата выпуска
Производительность SPECint95/ SPECfp95
Область применения
Кэш-память второго уровня
Число транзисторов, технологический процесс
Частота системной шины, МГц
Мобильный Intel Celeron (266, 300 МГц)
25.1.99
12,3/-
Дешевые мобильные ПК
128 Кбайт на кристалле
18,9 млн (0,25 мкм)
66
Intel Celeron (433 МГц)
22.3.99
15,8/12,1
ПК
128 Кбайт на кристалле
19 млн
(0,25 мкм)
66
Мобильный Intel Celeron (333 МГц)
5.4.99
12,6/-
Дешевые мобильные ПК
128 Кбайт на кристалле
18,9 млн (0,25 мкм)
66
Intel Celeron (466 МГц)
26.4.99
17,1/12,7
ПК
128 Кбайт на кристалле
19 млн (0,25 мкм)
66
Мобильный Intel Celeron (366 МГц)
17.5.99
12,8/ —
Дешевые мобильные ПК
128 Кбайт на кристалле
18,9 млн (0,25 мкм)
66
Мобильный Intel Celeron (400 МГц)
14.6.99
13,4/ —
Дешевые мобильные ПК
128 Кбайт на кристалле
18,9 млн (0,25 мкм)
66
Мобильный Pentium II (400 МГц)
14.6.99
17,1 /-
Мобильные ПК
256 Кбайт на кристалле
27,4 млн (0,18 мкм)
66
Микропроцессор Pentium III
Основные технические характеристики Pentium III
Процессор Intel Pentium III (Katmai) |6l ]„ выпущенный в начале 1999 года, унаследовал лучшие качества процессоров микроархитектуры Р6: динамическое исполнение команд, системную шину с множественными транзакциями и технологию Intel MMX для обработки данных мультимедиа. Кроме того, в процессоре Pentium III реализованы новые потоковые SIMD-pac- ширения — 70 новых команд, обеспечивающих улучшенные возможности обработки изображений, трехмерной графики, потокового видео и аудио, а также распознавания речи.
Основные технические характеристики микропроцессора:
тактовая частота от 450 МГц до 1 ГГц;
при изготовлении используется 0,25 мкм технологический процесс;
в систему команд, наряду с командами MMX-расширения, включено 70 новых SIMD-инструкций, улучшающих работу с приложениями трехмерной графики, потокового аудио, видео и распознавания речи;
процессор Pentium III с тактовой частотой 500 МГц более чем на 90% превышает быстродействие процессора Pentium II с тактовой частотой 450 МГц при работе с трехмерной графикой (по результатам эталонного теста 3D WinBench 99-3D Lighting and Transformation), и на 42% при работе с приложениями мультимедиа (по результатам эталонного теста MultimediaMark 99);
в процессоре применена архитектура двойной независимой шины (DIB);
в Pentium III реализована функция серийного номера процессора как компонент системы обеспечения безопасности ПК, предлагаемой корпорацией Intel;
микропроцессор содержит неблокируемую кэш-память первого уровня емкостью 32 Кбайт (16 Кбайт данных, I6 Кбайт команд) и унифицированную неблокируемую кэш-память второго уровня емкостью 512 Кбайт;
Pentium III поддерживает кэширование памяти с объемом адресного пространства до 4 Гбайт;
на основе Pentium III можно создавать масштабируемые двухпроцессорные системы с объемом физической памяти до 64 Гбайт.
Расширение системы команд
Увеличение производительности с введением MMX-расширения системы команд в процессоре Pentium MMX не оправдало ожиданий пользователей, работающих с графическими приложениями. Прирост производительности, составивший около 10%, во многом обязан увеличению внутренней кэшпамяти микропроцессора, а не векторным командам. В офисных приложениях SIMD-команды MMX-расширения практически не находят применения, а при выполнении геометрических преобразований, типичных для графических приложений, гораздо важнее иметь высокопроизводительную обработку данных в формате с плавающей точкой, что также не удается эффективно реализовать в рамках введенных SlMD-команд обработки данных с фиксированной точкой.
Частично решить задачу повышения производительности на графических задачах компания Intel попыталась, выпустив графический процессор 1740, ориентированный на работу в системах на базе Pentium И с AGP-шиной. Этот процессор обеспечил ускорение обработки трехмерных графических изображений, в том числе и благодаря примененной в нем технологии параллельного выполнения команд с плавающей точкой.
Стараясь устранить недостатки, свойственные MMX-технологии (отсутствие векторных команд для работы с плавающей точкой, блокирование модуля выполнения операций с плавающей точкой при выполнении ММХ-команд), Intel решила внести необходимые дополнения в архитектуру микропроцессоров 6-го поколения.
В процессор Pentium 111 были добавлены новые SlMD-команды и блок обработки мультимедийных данных в формате с плавающей точкой — SSE (Streaming SIMD Extensions, поточная SI MD обработка), что позволило увеличить производительность прикладных программ в следующих областях:
трехмерная графика;
обработка сигналов и моделирование процессов с широким диапазоном изменения параметров;
алгоритмы блочного кодирования и декодирования видеосигнала;
численные алгоритмы фильтрации потоков данных.
Новые команды процессора Pentium III делятся на 4 категории:
SIMD-команды обработки данных в формате с плавающей точкой одинарной точности (Single Precision, Floating Point, SPFP-команды);
дополнительные SlMD-команды для обработки целочисленных данных;
команды управления кэшированием;
команды сохранения и восстановления состояния процессора.
SPFP-команды
Одна SIMD-команда с плавающей точкой может обрабатывать одновременно четыре 32-разрядных числа одинарной точности (называемых SPFP- злементами данных). SPFP-команды используют новый тип данных — 128- разрядное значение, содержащее четыре последовательно расположенных (упакованных) 32-разрядных числа с плавающей точкой.
SlMD-команды обработки SPFP-данных используют восемь новых 128- разрядных регистров — ХММ-регистры: ХММО, ..., ХММ7. Для адресации памяти используются целочисленные регистры. В отличие от ММХ регистров, которые физически реализованы на стандартных для архитектуры Intel 80-разрядных регистрах данных с плавающей точкой, 128-разрядные ХММ- регистры являются новыми компонентами процессора.
В Pentium III, как и процессорах Intel предыдущих поколений, для внутреннего представления данных в формате с плавающей точкой используется 80- разрядный формат расширенной точности, однако для упакованных чисел с плавающей точкой в Pentium III используется представление в 32-разрядном формате с одинарной точностью. Поэтому из-за округления данных резуль-
таты вычислений с плавающей точкой команд архитектуры х87 и новых SPFP-команд могут не совпадать.
Формат представления SPFP-данных приведен на рис. 2.6. Каждое 32-раз- рядное число с плавающей точкой, в соответствии со стандартом IEEE-754, имеет 1 знаковый разряд, 8 бит порядка и 23 бита мантиссы.
Большинство SPFP-команд имеют два операнда. Данные, содержащиеся в первом операнде, после ее выполнения, как правило, замещаются результатами, а данные, содержащиеся во втором операнде, остаются неизменными.
Данные 3Данные 3Данные 2Данные 263 Г 31 JДанные^ z Данные 0 ,63 Г 31 JДанные^ z Данные 0 ,Рис. 2.6. Формат представления SPFP-данныхРис. 2.6. Формат представления SPFP-данныхУпакованные SPFP-данные
Данные 3
Данные 3
Данные 2
Данные 2
63 Г 31 J
Данные^ z Данные 0 ,
63 Г 31 J
Данные^ z Данные 0 ,
Рис. 2.6. Формат представления SPFP-данных
Рис. 2.6. Формат представления SPFP-данных
12795
SlMD-команды поддерживают два типа операций над упакованными данными с плавающей точкой: параллельные и скалярные.
Параллельные операции выполняются одновременно над всеми четырьмя 32-разрядными элементами данных каждого из 128-разрядных операндов. В именах команд, выполняющих параллельные операции, присутствует суффикс ps. Например, команда addps складывает 4 пары элементов данных и записывает полученные 4 суммы в соответствующие элементы первого операнда.
Скалярные операции выполняются над младшими (разряды 0—31) элементами данных двух операндов. Остальные три элемента данных не изменяются (исключение составляет команда скалярного копирования movss).
В имени команд, выполняющих скалярные операции, присутствует суффикс ss (например, команда addss).
В табл. 2.8 приведены примеры некоторых команд с плавающей точкой.
Таблица 2.8. Примеры SIMD команд с плавающей точкой
Выполняемая операция
Мнемоника параллельной команды
Мнемоника скалярной команды
Примечание
Арифметические команды
Сложение
addps xmm2
xmml,
addss xmml, xmm2
Первый операнд команды находится в ХММ-регистре, а второй операнд - либо в ХММ-регистре, либо в памяти.
Результат - в первом регистре
Вычитание
subps xmm2
xrnml,
subss xnuril, xmm2
Умножение
mulps xmm2
xmml,
•mulss xmml, xmm2
Деление
divps xmm2
xmml,
divss xmml, xmm2
Команды извлечения квадратного корня.
Извлечение квадратного корня
sqrtps xmm2
> xmml,
sqrtss xmml, xmm2
Аргумент - во втором операнде, результат - в первом
Приближенное вычисление обратных величин
Обратное значение аргумента
repps xmm2
xmml,
repss xmml, xmm2
Значения вычисляются приближенно, с использованием внутренних справочных таблиц. Относительная погрешность результата удовлетворяет неравенству |а - Ь| / |Ь| < 1,5 х х 2~12, где а — точный результат, Ь- приближенный.
Аргумент находится в ХММ-регистре или в памяти, результат - в ХММ-регистре. Арифметические исключения не генерируются
Обратное значение квадратного корня аргумента
rsqrtps xmml, xmm2
rsqrtss xmml, xmm2
Таблица 2.8 (окончание)
Выполняемая операция
Мнемоника параллельной команды
Мнемоника скалярной КОАНДЫ
Примечание
Команды нахождения максимума и минимума
Нахождение максимума
maxps xmml, xmm2
maxss xmml, xmm2
В результате попарного сравнения элементов операндов максимальное (минимальное) из значений элементов записывается в первый операнд. Второй операнд может располагаться либо в ХММ-ре- гистре, либо в памяти. Первый операнд — в ХММ-регистре
Нахождение минимума
minps xmml, xmm2
minss xmml, xmm2
Команды перестановки элементов
Перестанов ка элементов операндов
shufps xmml, xmm2, 9ch
не поддерживается
Два выбранных элемента первого операнда копируются в младшие элементы результата, а два выбранных элемента второго операнда - в старшие элементы выходного результата. Выбор элементов осуществляется в соответствии с маской, задаваемой непосредственным операндом: два младших 2битовых разряда указывают выбираемые элементы первого операнда, два старших - элементы второго операнда. Регистры операндов могут совпадать
В набор новых команд процессора Pentium III включены дополнительные SIMD-команды для работы с целочисленными данными. Эти новые команды расширяют возможности существующего набора команд технологии ММХ.
Новые SIMD-команды обработки целочисленных данных выполняют SIMD-операции над несколькими целочисленными элементами данных, упакованными в 64-разрядные группы (рис. 2.7), загружают и хранят упакованные данные в 64-разрядных ММХ-регистрах.
Мнемоника имен новых целочисленных SIMD-команд включает префикс и суффиксы, указывающие на характер выполняемой операции и тип используемых данных:
префикс р указывает на то, что команда выполняет параллельные операции над несколькими элементами данных;
суффиксы b, w, d и q указывают на используемый тип данных (упакованные байты, слова, двойные слова и учетверенное слово соответственно);
суффиксы и или s указывают на использование данных со знаком или без знака, соответственно.
Рис. 2.7. Форматы данных в целочисленных SIMD-командах
Так, например, команда умножения pmuihuw работает с данными типа "упакованные 16-разрядные слова без знака".
В табл. 2.9 приведены примеры добавленных в Pentium 111 SIMD-команд с фиксированной точкой.
Таблица 2.9. SIMD-команды с фиксированной точкой
Мнемо- Действие ника
ПримерПримечание
pextrw Перезапись слова из MMX-регистра в целочисленный регистр
Извлечь слово
pextrw еах, Команда pextrw копирует одно из mml, lh16-разрядных слов, упакованных в
MMX-регистре, в младшее слово 32-разрядного целочисленного регистра. 16 старших разрядов регистра результата обнуляются.
Какое именно из четырех слов MMX-регистра будет извлечено, определяется значением двух младших битов 8-разрядного непосредственного операнда
Таблица 2.9 (продолжение)
Мнемоника
Действие
Пример
Примечание
Вставить слово
pinsrw
Вставить слово в ММХ-регистр
pinsrw mml, eax, 2h
Команда копирует младшее 16- разрядное слово из 32-разрядного целочисленного регистра (или 16 разрядов данных из памяти) в одно из слов ММХ-регистра.
В какое именно из четырех слов ММХ-регистра будет произведена вставка, определяется значением двух младших разрядов 8-разрядного непосредственного операнда
Поиск максимума (минимума)
pmaxsw
Найти максимум в четырех словах
pmaxsw
mml, mm2
Команды сравнивают упакованные целочисленные элементы данных входного и выходного операндов и возвращают в регистре результата наибольшие или наименьшие значения для каждой пары. Команды применимы только для сравнения байтов без знака или слов со знаком.
Второй операнд для этих команд может располагаться либо в ММХ- регистре, либо в памяти. Первый операнд должен обязательно находиться в ММХ-регистре
pminsw
Найти минимум в четырех словах
pminsw
mml, mm2
pmaxub
Найти максимум в восьми байтах
pmaxub
mml, mm2
pminub
Найти минимум в восьми байтах
pminub
mml, mm2
Создание знаковой маски байтов
pmovmskb Создает байтовую маску из знаковых разрядов байтов ММХ-регистра
pmovmskb eax, mml
Команда копирует старшие (знаковые) биты всех восьми упакованных байтов второго операнда - ММХ- регистра и формирует 8-разрядную маску в младших разрядах 32-разрядного целочисленного регистра. Все старшие 24 разряда выходного целочисленного регистра обнуляются
Таблица 2.9 (окончание)
Мнемоника
Действие
Пример
Примечание
Умножение слов без знака
pmulhuw
Попарное беззнаковое умножение четырех слов
pmulhuw mml, mm2
Команда попарно перемножает четыре 16-разрядных беззнаковых слова входного и выходного операндов. Старшие 16 разрядов 32-разрядных произведений записываются в 16- разрядные слова первого операнда, а младшие 16 разрядов произведений теряются.
Второй операнд для команды pmulhuw может располагаться либо в ММХ-регистре, либо в памяти. Первый операнд должен обязательно находиться в ММХ-регистре
Перестановка целочисленных элементов
pshufw
Перестановка 16- разрядных слов
pshufw mml, mm2, 9ch
Целочисленная команда выбирает четыре 16-разрядных слова (необязательно различных) из входного операнда и записывает их в определенном порядке в выходной операнд. Порядок записи слов задается 2битными полями 8-разрядного непосредственного операнда.
Второй операнд может располагаться либо в ММХ-регистре, либо в памяти. Первый операнд должен находиться в ММХ-регистре
Команды управления кэшированием
В Pentium III введены команды нового типа, обеспечивающие:
управление кэшированием данных с целью повышения эффективности использования кэш-памяти и сокращения числа обращений к основной памяти;
О упреждающее кэширование данных с целью организации параллельной работы вычислительного конвейера и обмена с памятью.
В табл. 2.10 приведены примеры команд управления кэшированием.
Таблица 2.10. Команды управления кэшированием
Мнемо-ника
Действие
Пример
Примечание
Некэширующие команды записи в память
movntps
Запись данных из ХММ-регистра в память, минуя кэшпамять
movntps [есх], xmml
Команда копирует четыре FP-элемента данных из ХММ-регистра в память
movntq
Запись данных из MMX-регистра в память, минуя кэшпамять
movntq
Команда копирует 64 разряда данных из MMX-регистра в память
Запись маскированных байтов в память
masктоvq
Запись данных из ХММ-регистра в память, минуя кэшпамять
maskmovq mml, mm2
Команда выборочно записывает байты из MMX-регистра непосредственно в память, минуя кэшпамять. Байты выбираются в соответствии с 8-разрядной маской, состоящей из старших битов в байтах второго операнда — ММХ- регистра. Единица в некотором разряде маски означает запись соответствующего байта в память, ноль — отсутствие записи. Адрес памяти, по которому производится запись, указывается в регистре edi
Упреждающее кэширование
prefetchtO
Запись данных из памяти в кэшпамять первого и второго уровней
prefetchtO [esi]
Команды упреждающего кэширования позволяют загружать в кэшпамять нужные данные заранее, обеспечивая возможность записи данных в кэш-память различных уровней, что уменьшает задержки, связанные с доступом к основной памяти. Имена команд кэширования содержат суффиксы (0, 1, 2, а), указывающие нужный уровень кэшпамяти
prefetchtl, prefetcht2
Запись данных из памяти в кэшпамять второго уровня
prefetchtl [esi]
Таблица 2.10 (окончание)
Мнемо-ника
Действие
Пример
Примечание
Упреждающее кэширование
prefetchta
Запись данных из памяти в кэшпамять первого уровня, минуя кэш второго уровня
prefetchta [ esi ]
Принудительная запись
sfence
Упорядочение последовательности обращений в память и синхронизация ее с содержимым кэшпамяти
sfence
Команда предписывает копировать в основную память все данные предшествующих команд записи, хранящиеся в буфере записи и кэш-памяти
Команды сохранения и восстановления состояния
Микропроцессор Pentium III содержит новые ХММ-регистры и регистр состояния и управления MXCSR. Для работы с этими регистрами требуется поддержка, как со стороны процессора, так и со стороны операционной системы. Чтобы прикладные программы и операционная система могли сохранять и восстанавливать состояния новых компонентов процессора, введено несколько управляющих команд.
Новый регистр состояния и управления MXCSR служит для:
установки флагов обнаружения арифметических исключений;
установки флагов маскирования арифметических исключений;
установки режима округления;
установки режима flush-to-zero.
Структура регистра MXCSR приведена на рис. 2.8.
Регистр MXCSR
3116151050
F ZF ZRRССРР
F Z
F Z
R
R
С
С
Р
Р
Рис. 2.8. Структура регистра MXCSR
Разряды 0—5 (поле обнаружения исключений) содержат 6 флагов, которые служат признаками детектирования арифметических исключений. Если флаг установлен в 1, то это значит, что в ходе работы обнаружено соответствующее исключение, в противном случае исключения нет.
Разряд 6 не используется.
Разряды 7—12 (поле маскирования исключений) определяют, как обрабатываются обнаруженные исключения. Если флаг установлен, то соответствующее исключение маскировано и обрабатывается процессором, если флаг сброшен, то вызывается программный обработчик для этого исключения.
Разряды 13—14 (RC-поле) устанавливают режим округления данных.
Разряд 15 (FZ-поле) устанавливает режим flush-to-zero.
Разряды 16—31 не используются.
Примеры команд сохранения/восстановления приведены в табл. 2.11.
Таблица 2.11. Команды сохранения/восстановления
Мнемоника
Действие
Пример
Примечание
Сохранение и загрузка регистра MXCSR
stmxcsr
Сохранение содержимого регистра MXCSR в памяти
stmxcsr
Команда записывает в 32-разрядное слово памяти содержимое регистра MXCSR
Idmxcsr
Загрузка содержимого MXCSR из памяти
Idmxcsr
Команда загружает из памяти 32- разрядное слово состояния и управления в регистр MXCSR
Команды сохранения и восстановления состояния
fxsave Команда сохраняет в памяти состояние процессора при переключении контекста
fxsave [есх]
Сохраняет в области памяти длиной 512 байт состояние регистров данных с плавающей точкой, ММХ-регист- ров, а также новых регистров процессора Pentium III
1 dmx с s г Восстанавли
Idmxcsr
Область памяти, в которой сохранено
вает ранее со
[есх]
состояние процессора, должна быть
храненное состояние процессора Pentium III из памяти
выровнена на границу слова
Серийный номер микропроцессора
Серийный номер является уникальным идентификатором процессора [62], он может быть использован и для идентификации компьютера (пользователя) в сети или со стороны прикладных программ. Серийный номер процессора будет использоваться в следующих типах приложений, для которых надежная идентификация пользователя или системы является особенно необходимой:
приложения с повышенным уровнем зашиты — управляемый доступ к службам Internet, обмен электронными документами;
управляющие приложения — управление ресурсами, удаленная загрузка и конфигурирование систем;
управление информационными ресурсами — службы технической поддержки, защита резервируемых данных.
Встроенные средства самотестирования и контроля производительности процессора
Процессор Pentium III содержит аппаратные средства самотестирования и контроля производительности.
Встроенный механизм самотестирования (Buit-in Self Test — BIST) обеспечивает постоянные контроль зависаний и сбоев в микрокоде и больших логических матрицах, а также тестирование кэш-команд и кэш-дан- ных, буферов TLB и сегментов памяти ROM.
Механизм стандартного порта доступа к тестированию и периферийному сканированию IEEE 1149.1 дает возможность осуществлять проверку каналов связи между процессором Pentium III и системой через стандартный интерфейс.
Встроенные счетные устройства следят за показателями производительности и ведут подсчет событий.
Встроенный в кристалл диод может следить за температурой кристалла. Датчик температур, расположенный на системной плате, контролирует температуру кристалла процессора Pentium III, знание которой необходимо для управления температурным режимом.
Микропроцессор Pentium 4
Микропроцессор Pentium 4 [63], выпущенный Intel в июне 2000 года, с одной стороны, являет собой продолжение линии микропроцессоров с архитектурой х86, с другой стороны, он, несомненно, стал новым словом в этой архитектуре. Как и в случае с Pentium II, III, фирма Intel выпустила целое
семейство новых микропроцессоров: для персональных компьютеров, для серверов, рабочих станций и мобильных компьютеров.
К числу наиболее значимых достижений архитектуры Pentium 4, получившей название NetBurst (пакетно-сетевая), следует отнести значительное повышение тактовой частоты процессорного ядра и системной шины, а также появившуюся в старших представителях семейства мультитредовость (многопоточность), в терминологии Intel — Hyper-Threading (гиперпоточность).
Микроархитектура процессора Pentium 4 ориентирована на эффективную работу с Internet-приложениями.
Как и в других микропроцессорах шестого поколения, в Pentium 4 реализованы:
гарвардская архитектура внутренней памяти с разделением потоков команд и данных;
суперскалярная архитектура, обеспечивающая одновременное выполнение нескольких команд в параллельно работающих исполнительных устройствах;
динамическое изменение последовательности команд;
конвейерное исполнение команд;
предсказание переходов.
Структура микропроцессора показана на рис. 2.9.
К основным нововведениями архитектуры Pentium 4 можно отнести:
работу с системной шиной, имеющей эффективную частоту 400 МГц;
удвоение частоты работы блоков АЛУ микропроцессора;
значительное увеличение длины исполнительного конвейера;
добавлены 144 новые команды поточной SIMD-обработки SSE2;
использование кэша трассы команд в качестве кэш-памяти команд первого уровня;
размещение кэш-памяти второго уровня на кристалле.
Раздельные потоки команд и данных поступают от системной шины через блок внешнего интерфейса и размещенную на кристалле процессора 8- входовую множественно-ассоциативную общую кэш-память второго уровня с обратной записью. Кэш имеет объем 256 Кбайт и работает на частоте процессорного ядра. Пропускная способность кэш-памяти увеличена в 2 раза по сравнению с процессорами предыдущего поколения.
Блок внешнего интерфейса реализует обмен процессора с системной шиной, включающей 64-разрядную двунаправленную шину данных и 41- разрядную шину адреса (33 адресных линии А35-3 и 8 линий выбора байтов ВЕ7-0#). Процессор может адресовать до 64 Гбайт внешней памяти.
Системная шина (3,2 Гбайт/с)
Рис. 2.9. Структура микропроцессора Pentium 4
Четырехкратная передача данных по шине за такт при частоте тактирования 100 МГц обеспечивает эффективную частоту работы шины 400 МГц и скорость передачи данных 3,2 Гбайт/с.
Дешифратор команд, совместно с памятью микропрограмм, осуществляет преобразование х8б-команды в последовательность микрокоманд, помещае-
мых в кэш-память микрокоманд. Порядок размещения команд в этой памяти емкостью 12 000 микрокоманд соответствует последовательности их выполнения, с учетом предсказанных переходов.
Блок распределения регистров выполняет назначение каждому из логических регистров микрокоманд одного из 128 физических регистров, входящих в состав блоков регистров замещения (БРЗ), устраняя тем самым зависимости по данным между отдельными командами. Сформированная последовательность микрокоманд размещается в очереди, допускающей хранение микрокоманд для 126 команд х86 (в 3 раза больше, чем для Pentium III).
Блок распределения микрокоманд осуществляет выбор микрокоманд из очереди не в порядке их поступления, а по мере готовности соответствующих операндов и исполнительных устройств. При этом реализуется одновременное неупорядоченное выполнение до 6 микрокоманд в параллельно работающих исполнительных устройствах. Порядок выдачи результатов микрокоманд во внешнюю память, соответствующий следованию команд в программе, обеспечивается в Pentium 4 с помощью буфера переупорядочи- вания, так же как и в других микропроцессорах шестого поколения.
Блоки трансляции адресов команд и данных обеспечивают формирование физических адресов памяти, применяя для хранения базовых адресов наиболее часто используемых страниц памяти внутреннюю буферную память.
Адреса выбираемых из памяти операндов вычисляются блоком формирования адреса данных (БФА), который реализует интерфейс с кэш-памятыо данных первого уровня (с прямой записью, емкостью 8 Кбайт).
БФА формирует 48 адресов для загрузки операндов из памяти в регистр БРЗ и 24 адреса для записи из регистра в память для команд, еще не выбранных на выполнение. При обращении к памяти БФА выдает сразу два адреса: один для загрузки операнда в заданный регистр БРЗ, второй — для пересылки результата из БРЗ в память.
Кэш-память имеет отдельные порты для чтения и записи. Время доступа к кэшу по сравнению с Pentium III сокращено в 1,5 раза.
Суперскалярное ядро микропроцессора содержит конвейеризированные исполнительные блоки: ALU, FPU, ММХ. Причем целочисленные АЛУ работают на удвоенной частоте ядра процессора.
В Pentium 4 используется гиперконвейерная технология выполнения команд — число ступеней конвейера достигает 20. Благодаря разбиению цикла выполнения каждой команды на более мелкие этапы, каждый из которых может выполняться быстрее, удается увеличить частоту работы процессора.
В то же время, удлинение конвейера увеличивает потери, связанные с его перезагрузкой в случае выполнения команд ветвлений, когда требуется произвести очистку всех ступеней конвейера и выбрать команду из другой ветви программы. Сократить эти потери позволяет предсказание направлений пере-
ходов, осуществляемое блоком предсказания ветвлений. Входящая в состав блока предсказания ветвлений ассоциативная память — буфер адресов ветвлений (ВТВ) содержит 4092 адреса ранее выполненных переходов с предысторией их выполнения. Блок предсказания ветвления, используемый в Pentium 4, обеспечивает вероятность правильного предсказания перехода 0,9.
В состав процессора Pentium 4 включен блок SSE2, который значительно расширяет возможности SIMD-обработки по сравнению с блоком SSE в модели Pentium III. Блок SSE реализует 144 новые команды, обеспечивающих одновременное выполнение операций над несколькими операндами, которые располагаются в памяти и в 128-разрядных регистрах ХММО—ХММ7. В регистрах могут храниться и одновременно обрабатываться 2 числа в формате с плавающей точкой двойной точности (64 разряда) или 4 числа в формате одинарной точности (32 разряда). Этот блок может также одновременно обрабатывать целочисленные операнды: 16 8-разрядных, восемь 16- разрядных, четыре 32-разрядных или два 64-разрядных. В результате производительность процессора Pentium 4 при выполнении таких операций оказывается вдвое выше, чем у Pentium III. Блок SSE2 обратно совместим с блоком SSE процессора Pentium III.
Микропроцессор содержит 42 млн транзисторов и производится по технологии КМОП 0,18 мкм (ядро Willamette) для тактовых частот от 1,4 до 1,7 ГГц и 0,13 мкм (ядро Northwood) с 6-слойной металлизацией для тактовых частот от 2 до 3,06 ГГц.
Семейство серверных процессоров Intel — в архитектуре Pentium 4 представлено микропроцессорами Foster (на ядре Willamette), выпускается с 2001 года и Prestonia (на ядре Northwood), выпуск которого был начат в 2002 года. Данные микропроцессоры продолжают линию Xeon предыдущих поколений (Pentium II, Pentium 111) и обеспечивают возможность работы в мультипроцессорных конфигурациях. Кроме того, Prestonia поддерживает технологию Hyper-Threading (гиперпоточность).
Суть технологии Hyper-Threading заключается в том, что в кристалл процессора добавлено несколько блоков, позволяющих одному физическому процессору (с одним конвейером и общей кэш-памятью второго уровня) распознаваться и работать в системе как два логических процессора, каждый из которых может быть загружен своей задачей. Основная часть блоков процессора используется совместно, но некоторые продублированы и могут выполнять разные задачи.
Технология Hyper-Threading помогает сократить периоды простоя процессора путем задействования ресурсов, не занятых одной задачей, исполнением инструкций другой задачи, например, в случае:
задержек при доступе к памяти;
выполнения последовательности взаимозависимых инструкций;
ошибок предсказания ветвлений;
одновременных вычислений в целочисленном и экспоненциальном форматах.
В результате пропускная способность основных ресурсов процессора возрастает, а суммарное время выполнения двух задач сокращается.
Эффективность совместного использования ресурсов процессора двумя параллельными задачами в технологии Hyper-Threading существенно зависит от характера программного обеспечения: чем хуже приложения оптимизированы для данной микроархитектуры, тем больше может быть выигрыш от использования Hyper-Threading.
Производительность Pentium 4 с частотой 1,5 ГГц составляет на тестах SPECint2000 и SPECfp2000 — 536 и 561 соответственно.
Микропроцессор Pentium М
Одним из последних достижений компании Intel, призванным предоставить пользователям новые возможности мобильной работы, стала разработка технологи Centrino. Данная технология предусматривает использование в компьютере новых микропроцессоров Pentium М (на стадии разработки микропроцессор имел кодовое название Banias), нового чипсета Intel 855 и средств доступа к беспроводным сетям передачи данных семейства стандартов 802.11.
Основными чертами систем, построенных по технологии Centrino, являются: низкое энергопотребление, обеспечиваемое "интеллектуальной" системой управления частотой микропроцессорного ядра и напряжением питания — Enhanced SpeedStep, малые массогабаритные характеристики за счет реализации большинства системных функций в высокопроизводительном чипсете, а также расширенные коммуникационные возможности благодаря наличию встроенного контроллера радио-Ethernet.
Микропроцессор Pentium М, являющийся основным элементом технологии Centrino, содержит ряд новых решений, отличающих его от мобильных версий микропроцессоров Pentium Ill и Pentium 4. К их числу относятся:
усовершенствованное прогнозирование ветвлений. В микропроцессоре Pentium М одновременно используются три различных алгоритма предсказания ветвлений, выполняющие анализ условных и безусловных переходов, циклов, а также предыстории выполнения программы. При принятии решения выбираются результаты наиболее точного прогноза;
объединение микроопераций. Микропроцессор объединяет для одновременного выполнения в различных функциональных блоках несколько микроопераций, являющихся продуктом декодирования CISC-команды. Параллельное выполнение нескольких микроопераций существенно повышает соотношение производительность/энергопотребление;
усовершенствованное управление стеком. Управление стеком реализовано на уровне микроопераций, что позволило сделать этот процесс менее энергозатратным;
улучшенная технология управления энергопотреблением Enhanced SpeedStep. В отличие от предыдущей версии этой технологии, поддерживающей два соотношения частота/напряжение питания, в Pentium М предусмотрено большее число соотношений, позволяющих обеспечивать требуемую для выполняемого приложения производительность при минимальном энергопотреблении. Следует отметить также экономию энергии при работе с системной шиной (усилители считывания данных процессора включаются по команде чипсета только на период приема данных) и кэш-памятыо (активизируется только тот фрагмент кэша, к которому в данный момент осуществляется обращение).
Микропроцессор содержит блок векторных операций SSE2, раздельную кэш-память команд и данных первого уровня размером 32 Кбайт каждая, общую кэш-память второго уровня размером 1 Мбайт. Эффективная частота процессорной шины составляет 400 МГц, а частота работы процессорного ядра — от 0,9 до 1,6 ГГц. Мощность, потребляемая микропроцессором для тактовой частоты 1,6 ГГц, составляет 24,5 Вт.
Процессор производится по технологии 0,13 мкм и содержит на кристалле 77 млн транзисторов.
По производительности Pentium М с тактовой частотой 1,7 ГГц сравним с Pentium 4 — 2,5 ГГц. Средняя потребляемая мощность микропроцессора составляет от 1 до 7 Вт, а максимальная — не превышает 25 Вт.
Микропроцессоры с архитектурой IA-64
Микропроцессор Itanium
Микропроцессор Itanium [64) является первым представителем 64-разрядных микропроцессоров Intel. Выпуск этого процессора был начат в 2001 г. Первоначально микропроцессор выпускался по технологии 0,18 мкм для тактовых частот 660, 733 и 800 МГц. Производительность микропроцессора на тактовой частоте 800 МГц составляет 45 SPECint95 и 70 SPECfp95.
Архитектура микропроцессора Itanium (IA-64) реализует концепцию EPIC (Explicitly Parallel Instruction Computing — явное параллельное выполнение команд) и существенно отличается от архитектуры предыдущих, 32-разряд- ных микропроцессоров компании Intel.
Основными особенностями EPIC являются:
большое количество регистров;
масштабируемость по количеству функциональных устройств (возможность увеличения числа функциональных устройств в последующих моделях микропроцессора);
явное задание параллелизма в машинном коде;
предикатное исполнение инструкций;
упреждающая загрузка данных по предположению.
В табл. 2.12 приведены основные отличия архитектуры процессора IA-64 от архитектуры процессора х86.
Таблица 2.12. Отличия архитектур процессоров х86 и IA-64
Процессор х86
Процессор IA-64
Использование сложных инструкций переменной длины, обрабатываемых по одной
Использование простых инструкций, сгруппированных по три, одинаковой длины
Переупорядочивание и оптимизация инструкций во время выполнения
Переупорядочивание и оптимизация инструкций во время компиляции
Попытки предсказания переходов
Исполнение нескольких последовательностей команд одновременно без предсказания переходов
Загрузка данных из памяти по мере необходимости
Загрузка данных до того, как они потребуются
Архитектура IA-64 объединяет в себе лучшие качества суперскалярных микропроцессоров и микропроцессоров с длинным командным словом (VLIW — Very Long Instruction Words). В микропроцессоре Itanium, как и в других микропроцессорах VLIW-архитектуры, последовательность команд и план загрузки исполнительных устройств формируются на этапе компиляции. В ходе выполнения программы последовательность команд не изменяется. В микропроцессоре используется динамическое предсказание переходов, спекулятивное (по предположению) исполнение команд, аппаратная поддержка конвейерного выполнения циклов, отложенные операции обращения к памяти, предварительная загрузка данных в кэш.
Структура микропроцессора Itanium показана на рис. 2.Ю.
Она содержит:
четыре целочисленных устройства;
четыре устройства обработки мультимедийных данных;
по два устройства вычислений в формате с плавающей точкой одинарной и расширенной точности;
два устройства загрузки/сохранения;
три устройства выполнения переходов.
Все функциональные устройства микропроцессора конвейеризированы. Команда выполняется за 10 тактов, причем одновременно в микропроцессоре может выполняться до шести команд. Для повышения эффективности функционирования исполнительных блоков микропроцессора результаты выполнения команды передаются непосредственно на вход другой команды, минуя запись в регистры. Для этой цели используется память временного хранения результатов.
Высокоэффективный блок выполнения операций с плавающей точкой обеспечивает производительность до б Gflops на операциях с одинарной точностью и до 3 Gflops — на операциях с повышенной точностью.
Рис. 2.10. Структура микропроцессора Itanium
Высокоскоростной интерфейс процессор-память с пропускной способностью 2,1 Гбайт/с обеспечивает интенсивную подкачку данных и команд в микропроцессор.
Процессор может напрямую адресовать до 18 Гбайт оперативной памяти.
Itanium использует трехуровневую кэш-память:
первый уровень — внутренняя раздельная кэш-память команд и данных, по 16 Кбайт каждая;
второй уровень — внутренняя общая кэш-память команд и данных, 96 Кбайт;
третий уровень — внешняя (в картридже) общая кэш-память команд и данных до 4 Мбайт.
Команды микропроцессора группируются компилятором в "связку" длиной 128 бит. Связка содержит 3 команды и шаблон, указывающий, какие команды в текущей и следующей связке могут выполняться одновременно. Команды в связках могут размещаться в порядке, отличном от исходного, заданного в тексте программы, и могут быть как зависимые (по управлению и данным), так и независимые.
Формат связки команд:
Т | Instruction 1 | Instruction 2 | Instruction 3 |,
где Instruction 1, 2, 3 — команда микропроцессора, Т — 8-битная маска, указывающая возможность параллельного выполнения команд.
Приведем варианты связок команд.
ii Н 12 II 13 — все команды исполняются параллельно
11 &12 ||11 II 12 611 &12 ||11 II 12 613 — сначала п, затем исполняются параллельно 12 и 13
11 &12 ||
11 II 12 6
11 &12 ||
11 II 12 6
13 — параллельно исполняются 11 и 12, после них — 13
11 &12 &13 — последовательно исполняются 11, 12, 13
При распределении команд по функциональным устройствам микропроцессор Itanium анализирует одновременно две последовательные связки команд. В соответствии с шаблоном выбираются взаимно независимые команды и назначаются на функциональные устройства. В случае выполнения всех команд связок осуществляется переход к анализу следующих двух связок. Если некоторые из команд текущей связки оказались невыполненными, их назначение на функциональные устройства осуществляется совместно с командами следующей связки.
Команды микропроцессора имеют фиксированную длину 40 бит.
Формат команды:
Opcode field | PR field | GPR field | GPR field | GPR field |,
где Opcode field — 13-битнос поле кода операции, PR field — 6-битное поле предиката, GPR field — 7-битное поле — идентификатор регистра общего назначения.
Команда языка Ассемблер для микропроцессора архитектуры IA-64 имеет вид
[ (qp) ) mnemonic [.compl] [.comp2] dest= src
где:
(qp) — предикатный регистр. Если значение этого регистра I, то команда выполняется;
mnemonic — мнемоническое имя инструкции;
(.compl), [,comp2] — завершители (модификаторы команды). Некоторые инструкции могут содержать один или два завершителя;
dest, src — поле приемника и источника. Большинство команд IA-64 имеют два или больше операнда-источника и один операнд-приемник.
Примеры некоторых команд микропроцессора:■
Простая командаadd ri - г2, гЗ.
Предикативная команда(р4) add ri = г2, гЗ.
Команда с укороченным словомadd ri - г2, гЗ, 1.
Инструкция с завершителемcmp.eq рЗ = г2, г4.
1А-64 поддерживает следующие типы данных:
целые: 1, 2, 4 и 8 байт;
с плавающей точкой: одинарный, двойной и расширенный двойной форматы;
указатели: 8 байт.
Микропроцессор Itanium имеет на сегодняшний день рекордное число регистров. Их состав и назначение приведены в табл. 2.13.
Эффективность загрузки функциональных устройств микропроцессора существенно зависит от сформированной компилятором последовательности связок команд. Поэтому компилятор для 1А-64 в большей степени учитывает особенность архитектуры микропроцессора, чем существующие компиляторы для CISC- и RISC-микропроцессоров.
Таблица 2.13. Состав и назначение регистров Itanium
Название
Число Разряд- Примечания ность
GR0-GR127- целочисленные регистры общего назначения
12864+ 1Один регистр GR0 - предназначен только
для чтения и всегда равен 0;
32 регистра GR1-GR32 - для глобальных данных;
96 стековых регистров GR33-GR127.
Таблица 2.13 (окончание)
Название
Число
Разрядность
Примечания
Каждый регистр содержит 64 бита для представления данных и бит NaT, указывающий на достоверность значения регистра. Если данные регистра определены как невостребованные (например, если в регистре содержится результат спекулятивной команды), то NaT устанавливается в 0, и содержимое регистра не используется
FRO—FR127 —'
регистры с плавающей точкой
128
82
Блок вычислений с плавающей точкой содержит:
□ два регистра доступных только для чтения: FRO и FR1, всегда равных соответственно +0.0 и +1.0;
□ 32 глобальных и 96 вращаемых регистра.
Каждый регистр состоит из 64 бит мантиссы, 17 бит экспоненты и одного знакового бита
PR0-PR63 - предикатные регистры
64
1
Управление условным выполнением команд и ветвей.
Все 64 однобитных регистра делятся на 16 статичных и 48 вращаемых.
Предикатные регистры служат для принятия решения об исполнении команды. Инструкция выполняется только если соответствующий ей предикатный регистр равен 1.
Инструкциям, для которых явно не задан предикатный регистр, назначается регистр
PRO, значение которого всегда 1
BRO—BR7 - регистры ветвлений
8
64
Определение назначенных адресов ветвей команд
AR0-AR127 — прикладные регистры
128
64
Используются для реализации вспомогательных функций
IP — указатель команд
1
64
Содержит адрес следующей команды
Компилятор для IA-64 использует технологию отмеченных ветвлений, сущность которой заключается в следующем. Команды, принадлежащие раз-
личным ветвям алгоритма, помечаются различными значениями в поле предиката команды. Формирование связок команд осуществляется в независимости от значения предиката. Тем самым обеспечивается возможность одновременного выполнения команд, принадлежащих различным ветвям алгоритма.
В процессе выполнения программы, после определения истинного направления ветвления вычислительного процесса, сохраняются только результаты команд со значением предиката, соответствующим данной ветви.
Технология "отмеченных команд" существенно снижает негативное влияние ветвлений на машинном уровне. Следует отметить, что не все ветвления отмечаются компилятором для параллельного выполнения. Как правило, это осуществляется для коротких альтернативных ветвей. В случае, если ветвление не "отмечается", оно предсказывается микропроцессором в ходе выполнения.
Другой особенностью 1А-64 является предварительная загрузка данных в кэш-память. Сущность ее заключается в разнесении по времени команд загрузки данных из памяти и команд, их использующих.
Компилятор, анализируя исходный текст программы, заранее добавляет в формируемый исполняемый код команды загрузки необходимых данных и, непосредственно, перед командой, их использующей, — команду проверки их доступности. Таким образом, удается в значительной степени сократить задержки, связанные с необходимостью ожидания загрузки требуемых данных. Приведем пример использования команд предварительной зафузки.
Для обеспечения совместимости с ранее разработанными 32-разрядными приложениями в микропроцессоре Itanium поддерживаются два режима декодирования команд: VLIW и CISC. Переключение между режимами осуществляется профаммно. С этой целью в систему команд х86 добавлены дополнительные команды.
В Itanium предусмотрена аппаратная поддержка выполнения циклов. Цикл разделяется на три фазы выполнения: пролог, ядро и эпилог. Соответствующая аппаратная поддержка обеспечивается на всех этих фазах. В частности, используется механизм "вращения регистров", специальные инструкции и специальные прикладные регистры — счетчик циклов (LC) и счетчик эпилогов (ЕС).
В микропроцессоре не используется динамическое переименование регистров. С целью обеспечения возможности конвейерного выполнения различных витков цикла в микропроцессоре применяется схема циклической замены используемых регистров ("вращение регистров"): набор используемых в цикле регистров рассматривается как фрейм, отображаемый на регистровый файл, начиная с некоторой позиции — базы фрейма. При переходе на следующую итерацию цикла — изменяется база фрейма на величину, равную количеству регистров во фрейме.
Микропроцессор Itanium 2
Микропроцессор Itanium 2 [65], имеющий кодовое название McKinley, является вторым микропроцессором в семействе 64-разрядцых микропроцессоров компании Intel. Itanium 2 рассчитан на применение в высокопроизводительных серверах и рабочих станциях.
Микропроцессор выпускается по 0,18 мкм технологии для тактовых частот 1 и 0,9 ГГц. Частота работы системной шины составляет 400 МГц, что при 128- разрядной шине обеспечивает пропускную способность интерфейса 6,4 Гбайт/с.
Itanium 2 содержит кэш-память большой емкости: кэш третьего уровня емкостью 1,5 или 3 Мбайт, кэш второго уровня емкостью 256 Кбайт и кэш первого уровня емкостью 32 Кбайт. При размере кристалла 464 мм2, Itanium 2 является одной из самых крупных микросхем и содержит 221 млн транзисторов.
В Intel ведется работа над следующими версиями серверного процессора. В 2003 году начнется массовый выпуск обновленной версии Itanium 2 с ядром Madison. Этот микропроцессор производится по технологии 0,13 мкм, содержит кэш-память третьего уровня объемом 6 Мбайт и работает на тактовой частоте 1,5 ГГц. В этом же году планируется выпуск версии микропроцессора по технологии 0,09 мкм с ядром Deerfield, предназначенного для использования в системах с низким энергопотреблением.
Производительность процессора Itanium 2 на сегодняшний день является рекордной. В табл. 2.14 приведены результаты тестирования наиболее быстрых современных микропроцессоров.
Таблица 2.14. Производительность микропроцессоров
Процессор
Частота
Кэш
SPECint2000
SPECfp2000
Intel Itanium 2
1 ГГц
трехуровневая
3 Мбайт
760
1350
Intel Itanium
800 МГц
трехуровневая 4 Мбайт
400
701
Compaq Alpha 21264C
1 ГГц
трехуровневая 8 Мбайт
679
960
AMD Athlon XP2100
1,677 ГГц
двухуровневая 256 Кбайт
759
642
IBM RD64 IV
750 МГц
двухуровневая 8 Мбайт
458
410
IMB Power 4
1,3 ГГЦ
двухуровневая 16 Мбайт
839
1266
Sun UltraSPARC III
1,05 ГГц
двухуровневая 8 Мбайт
610
827
Микропроцессоры
пятого поколения компании NexGen
Переходя к рассмотрению микропроцессоров, производимых конкурентами компании Intel, соблюдая хронологию, в первую очередь следует упомянуть о разработках компании NexGen, ныне поглощенной компанией AMD |66, 67]. Оригинальные архитектурные решения, впервые примененные в процессорах этой компании, впоследствии были использованы многими другими разработчиками. NexGen удалось опередить компании AMD и Cyrix в создании микропроцессора пятого поколения, который был выпущен в 1995 году.
В микропроцессоре Nx586 впервые была реализована новая архитектура, обладающая, с одной стороны, всеми преимуществами RISC-архитектуры, а с другой стороны, обеспечивающая совместимость по системе команд с микропроцессорами семейства х86. Данная архитектура получила в NexGen название RISC86. Аналогичные решения позже использовали в своих разработках Intel в Pentium Pro и AMD в К5.
Основная идея состояла в том, чтобы преобразовывать сложные CISC- команды х86 в RISC-подобные операции, выполняемые RISC-подобным ядром процессора. Такой подход оказался весьма перспективным для процессоров, продолжающих линию х86.
Микропроцессор Nx586 имел три исполнительных модуля, трехпоточное суперскалярное ядро, однако мог декодировать только одну команду х86 за такт. Еще одной отличительной особенностью микропроцессоров Nx586 являлось отсутствие встроенного сопроцессора вычислений в формате с плавающей точкой. Разработчики предполагали, что данный процессор будет использоваться в персональных компьютерах, для которых операции с плавающей точкой достаточно редки, и скорость их выполнения не является критичной.
Процессоры компании NexGen имели названия Nx586-P100, Nx586-P90, Nx586-P80 и Nx586-P75. Управляя внутренней частотой с помощью схемы PLL (Phase Locked Loop, фазовой автоподстройки частоты), микропроцессоры Nx586 могли работать практически с любой тактовой частотой (естественно, с присущими их архитектуре ограничениями). Так, Nx586-P100 работал с тактовой частотой 93 МГц, Nx586-P90 — 84 МГц, Nx586-P80 — 75 МГц, a Nx586-P75 — 70 МГц. Шина системного интерфейса работала на половине тактовой частоты микропроцессора.
Основные идеи, заложенные в Nx586, NexGen планировала развить в новом микропроцессоре шестого поколения Nx686. Однако в результате постигших ее финансовых трудностей (невысокий объем продаж микропроцессора был вызван, прежде всего, необходимостью использования с Nx586 нестандартных системных плат), NexGen вынуждена была пойти на слияние с компанией AMD. Дальнейшая работа над проектом Nx686, получившим название Кб, велась уже в составе AMD.
Микропроцессоры компании AMD
Успешную конкуренцию микропроцессорам Intel составляет продукция компании AMD. По ряду показателей микропроцессоры этой компании занимают лидирующее положение. Отдельные интересные архитектурнотехнические решения, впервые примененные в микропроцессорах AMD, впоследствии получили распространение в изделиях других производителей, в том числе и в микропроцессорах компании Intel.
Микропроцессор К5
В течение ряда лет AMD, отставая от Intel по крайней мере на одно поколение микропроцессоров, полагалась в основном на лицензированную технологию и вносила незначительные конструктивные изменения в выпускаемые микропроцессоры. Появление микропроцессора Pentium создало для AMD прямую угрозу вытеснения с рынка, что стимулировало компанию к интенсификации работ по созданию нового семейства х86-совместимых микропроцессоров. Была поставлена цель создать такой микропроцессор, который опередил бы Pentium компании Intel, и изменить создавшееся для AMD положение следования за лидером. Работы над К5 были начаты, когда еще не были известны подробности о процессоре Pentium. Инженерам AMD пришлось разрабатывать собственную микроархитектуру, обеспечивая при этом совместимость с существующим программным обеспечением для процессоров х86.
Первоначально AMD планировала начать поставки своего микропроцессора с тактовой частотой 100—120 МГц в 1995 году, однако было выпущено лишь несколько тысяч таких процессоров, а их тактовая частота составила всего 75 МГц. Основные поставки К5 начались в первом квартале 1996 года, после того как компания перешла на 0,35 мкм технологию, разработанную совместно с Hewlett-Packard. Это позволило довести число транзисторов до 4,2 млн на кристалле площадью 167 мм2.
К5 [68] — это первый микропроцессор AMD, при создании которого не использовалась никакая интеллектуальная собственность Intel (за исключением микрокода), в то же время, он обладает лучшей по сравнению с процессорами Intel производительностью. Многие приложения, такие как Microsoft Excel, Word, CorelDRAW, работали на процессорах серии К5 на 30% быстрее, чем на Pentium с той же тактовой частотой. Такая производительность достигалась в основном за счет увеличенного объема кэш-памяти и более прогрессивной суперскалярной архитектуры. Используемая в микропроцессорах AMD архитектура RISC86 (впервые предложенная NexGen) показана на рис. 2.11.
Как известно, команды х86 отличает переменная длина и сложная структура, затрудняющие их декодирование и анализ существующих зависимостей между инструкциями по данным. В предлагаемой AMD архитектуре деко-
дер, представляющий собой наиболее сложную часть микропроцессора, разбивает длинные CISC-инструкции на небольшие RISC-подобные компоненты, так называемые ROP (RISC-операции).
Рис. 2.11. Архитектура RISC86 компании AMD
ROP напоминают команды микрокода микропроцессоров х86. Первые микропроцессоры с архитектурой х86 выполняли свой сложный набор микрокоманд, выбирая из внутренней постоянной памяти микрокод. В последних микропроцессорах х86 использование микрокода сведено к минимуму за счет применения простых команд и их аппаратной реализации.
В К5 применяется другой подход: здесь большинство ROP генерируются динамически не микрокодом, а декодером. Однако микрокод все еще используется для обработки сложных и редко применяемых команд х86, таких как строковые операции и операции над комплексными числами. Тем не менее, даже в этих случаях в результате генерируется поток ROP. К5 может конвертировать команду х86 в I—4 R-оперании. Эти операции планируются для выполнения в ядре, в котором многое заимствовано от RISC- архитектуры. Используется динамическое переименование регистров, предсказание переходов, изменение последовательности команд и другие методы
7 Зак. 1086
динамического выполнения. Таким образом, в К5 реализована гибридная ClSC/RISC-архитектура.
В отличие от Pentium, вместо двух конвейеров для параллельного выполнения двух целочисленных операций, К5 имеет шесть параллельно функционирующих блоков. Одновременно с целочисленными операциями могут выполняться инструкции с плавающей точкой, загрузки/сохранения или перехода. Блок загрузки/сохранения может за один цикл выбирать из памяти две инструкции. Другим отличием от Pentium является то, что К5 может изменять последовательность выполняемых команд.
Блок выполнения операций с плавающей точкой (FPU) отвечает стандартам х86, однако по производительности несколько уступает FPU процессора Pentium.
Использованное в архитектуре К5 сочетание принципов CISC и RISC позволило преодолеть ограничения набора команд х8б. Ценой увеличения сложности процессора AMD удалось повысить его производительность, сохранив совместимость с системой команд х86. Последнее весьма важно с учетом широкой распространенности программного обеспечения для этой микропроцессорной архитектуры.
Основные характеристики микропроцессора К5:
суперскалярная архитектура с четырехвходовой подачей команд;
конвейер с пятью стадиями обработки;
шесть параллельно функционирующих блоков: два арифметико-логических блока, блок операций с плавающей точкой, блок выполнения команд перехода и два блока загрузки/сохранения;
кэш команд — 16 Кбайт, кэш данных — 8 Кбайт;
изменение порядка выполнения команд, предсказание переходов, улучшенный микрокод;
производительность на 30% выше Pentium с той же тактовой частотой;
тактовая частота 75—200 МГц;
коэффициент умножения частоты шины: 1; 1,5; 2 и 3;
4,1 миллиона транзисторов;
технология изготовления: 0,5 мкм, затем 0,35 мкм с трехслойной металлизацией;
напряжение питания 3,3 В;
совместим по системе команд и электрическому соединению с Pentium.
Микропроцессор Кб
Микропроцессор Кб явился продуктом совместных усилий компании AMD и специалистов из бывшей NexGen. По сути дела, Кб представляет собой воплощение проекта Nx686, ранее начатого компанией NexGen, но не завершенного по финансовым причинам.
Микропроцессор Кб [69] был выпушен в 1997 году по технологии КМОП 0,35 мкм с пятислойной металлизацией, содержал 8,8 млн транзисторов на кристалле площадью 162 мм2, работал с тактовыми частотами 166, 200 и 233 МГц и устанавливался в разъем Socket 7.
Как и в К5, в Кб была применена суперскалярная архитектура RISC86 с раздельным декодированием/исполнением команд, обеспечивающая преемственность с системой команд х86 и достижение высокой производительности, свойственной микропроцессорам шестого поколения. Кб был оснащен мультимедийным расширением системы команд — ММХ. По производительности Кб при одной и той же тактовой частоте существенно превосходил Pentium ММХ и был сравним с Pentium Pro. В отличие от Pentium Pro, Кб одинаково успешно работал как с 32-разрядными, так и с 16-разрядными приложениями.
Высокая производительность процессора обеспечивалась благодаря ряду новых архитектурных и технологических решений.
В процессоре выполняется преддекодирование команд х86 при их выборке в кэш-памяти. Каждая команда в кэш-памяти первого уровня снабжается битами преддекодирования, указывающими смещение начала следующей команды в кэш-памяти (от 1 до 15 байт).
Кб содержит внутреннюю раздельную кэш-память первого уровня по 32 Кбайт для данных и команд.
В процессоре реализован высокопроизводительный блок вычислений с плавающей точкой.
Имеется высокопроизводительный блок мультимедийных операций стандарта ММХ.
Используется множественное декодирование х86-инструкций в однотактовые RISC-операции (ROP).
Процессор содержит параллельные дешифраторы, централизованный планировщик операций и семь исполнительных блоков, которые обеспечивают суперскалярное выполнение инструкций в шестиступенчатом конвейере.
В процессоре используется спекулятивное исполнение с изменением последовательности команд, предварительная посылка данных, переименование регистров.
Процессор поддерживает логику предсказания ветвлений, используя таблицу истории ветвлений из 8192 элементов, кэш-память адресов перехода
и стек возврата, которые обеспечивают вероятность правильного предсказания перехода 0,95. В процессоре используется двухуровневая схема предсказания ветвлений. Таблица истории ветвлений не хранит предсказаний целевых адресов, они вычисляются адресными АЛУ во время декодирования инструкции. Кэш адресов ветвлений обеспечивает уточнение предсказанного ветвления, уменьшая потери при обращении к памяти, и выдает дешифраторам первые I6 байт инструкций, выбранных согласна прогнозу ветвления.
Структура микропроцессора Кб приведена на рис. 2.12.
Выполнение команд с изменением порядкаВыполнение команд с изменением порядкаБлок записиБлок записиОчередь на записьОчередь на записьБлок загрузкиБлок загрузкиКонтроллер кэш-памяти 1-го уровняКонтроллер кэш-памяти 1-го уровняПредварительный дешифраторПредварительный дешифраторЦелочисленное АЛУ и регистровый файл YЦелочисленное АЛУ и регистровый файл YИнтерфейс шины Socket 7Интерфейс шины Socket 7Целочисленное АЛУ и регистровый файл XЦелочисленное АЛУ и регистровый файл XВыдача 6 операций RISC86Выдача 6 операций RISC86Блок мультимедийных команд (ММХ)Блок мультимедийных команд (ММХ)Блок переходовБлок переходовБлок вычислений с плавающей точкойБлок вычислений с плавающей точкой64-входовый буфер адресов переходов (ВТВ)64-входовый буфер адресов переходов (ВТВ)Кэш команд 1-го уровня (32 Кбайт * биты преддекодирования)Кэш команд 1-го уровня (32 Кбайт * биты преддекодирования)Двойной декодер команд х86 в RISC86Двойной декодер команд х86 в RISC86Логика переходов(таблица историиветвлений на8192-входов, кэшадресов ветвленийна 16 входов, стекадресов возвратана 16 входов)Логика переходов(таблица историиветвлений на8192-входов, кэшадресов ветвленийна 16 входов, стекадресов возвратана 16 входов)M”g. § И ®M”g. § И ®Буфер планировщика (24 RISC86- операции)Буфер планировщика (24 RISC86- операции)Устройство управления командамиУстройство управления командами
Выполнение команд с изменением порядка
Выполнение команд с изменением порядка
Блок записи
Блок записи
Очередь на запись
Очередь на запись
Блок загрузки
Блок загрузки
Контроллер кэш-памяти 1-го уровня
Контроллер кэш-памяти 1-го уровня
Предварительный дешифратор
Предварительный дешифратор
Целочисленное АЛУ и регистровый файл Y
Целочисленное АЛУ и регистровый файл Y
Интерфейс шины Socket 7
Интерфейс шины Socket 7
Целочисленное АЛУ и регистровый файл X
Целочисленное АЛУ и регистровый файл X
Выдача 6 операций RISC86
Выдача 6 операций RISC86
Блок мультимедийных команд (ММХ)
Блок мультимедийных команд (ММХ)
Блок переходов
Блок переходов
Блок вычислений с плавающей точкой
Блок вычислений с плавающей точкой
64-входовый буфер адресов переходов (ВТВ)
64-входовый буфер адресов переходов (ВТВ)
Кэш команд 1-го уровня (32 Кбайт * биты преддекодирования)
Кэш команд 1-го уровня (32 Кбайт * биты преддекодирования)
Двойной декодер команд х86 в RISC86
Двойной декодер команд х86 в RISC86
Логика переходов(таблица историиветвлений на8192-входов, кэшадресов ветвленийна 16 входов, стекадресов возвратана 16 входов)
Логика переходов(таблица историиветвлений на8192-входов, кэшадресов ветвленийна 16 входов, стекадресов возвратана 16 входов)
M”g. § И ®
M”g. § И ®
Буфер планировщика (24 RISC86- операции)
Буфер планировщика (24 RISC86- операции)
Устройство управления командами
Устройство управления командами
2-вхйдйбЫй кзш данных 1-го уровня (32 Кбайт)2-вхйдйбЫй кзш данных 1-го уровня (32 Кбайт)
2-вхйдйбЫй кзш данных 1-го уровня (32 Кбайт)
2-вхйдйбЫй кзш данных 1-го уровня (32 Кбайт)
128-входовый буфертрансляции адресовданных (DTLB)
RISC-ядро микропроцессора может выполнять за один такт до 6 ROP. В процессе исполнения ROP, ядро использует 48 физических регистров — 24 регистра общего назначения и 24 регистра для переименования.
Планировщик Кб содержит в буфере 24 команды R1SC86 и передает инструкции на выполнение 7 исполнительным модулям: сохранения, загрузки, перехода, 2 целочисленным АЛУ. блоку ММХ, блоку операций с плавающей точкой. Наличие буфера позволяет планировщику в динамике анализировать и изменять выбранную последовательность команд, обеспечивая максимальную загрузку исполнительных устройств.
Блок мультимедийных команд выполняет все инструкции расширения ММХ. Целочисленный Х-блок выполняет арифметико-логические операции, включая умножение, деление, сдвиг, циклический сдвиг. Y-блок осуществляет основные одно- и двухсловные арифметико-логические операции: ADD, AND, CMP, OR, SUB, XOR, расширение нуля и расширение знакового разряда числа. Блок вычислений с плавающей точкой выполняет все операции над вещественными данными. Блок переходов реализовывает обновление состояния процессора (регистров, флагов) после подтверждения предсказанного условного ветвления, обеспечивая тем самым возможность спекулятивного выполнения команд (на глубину до 7 переходов).
В начале 1998 года были выпущены варианты процессора по технологии 0,25 мкм с пятью слоями металлизации для тактовых частот 266 МГц и 300 МГц.
Микропроцессор K6-II
В конце мая 1998 года AMD объявила о выпуске Кб-11 — микропроцессора с суперскалярной обработкой MMX-команд и технологией 3DNow!, включающий набор из 21 новой инструкции, которые используются для ускорения обработки трехмерной графики, воспроизведения стереозвука и видео [70]. Подобная возможность в микропроцессорах Intel появилась значительно позже, с выпуском микропроцессора Pentium III (Katmai).
Технология 3DNow! ускоряет выполнение мультимедийных приложений за счет использования S1 MD-обработки мультимедийных данных. Команды 3DNow! аналогичны MMX-командам, но работают с данными в формате с плавающей точкой. Микропроцессор AMD-K6-1I выполняет за один цикл до двух инструкций 3DNow! в каждом из двух конвейеров. Таким образом, за один цикл может быть выполнено до четырех команд с плавающей точкой (сложение, вычитание или умножение).
Мультимедийный блок процессора AMD=K6=II объединяет существующие инструкции ММХ и новые инструкции 3DNow!. Такое объединение позволяет выполнять в программах графические инструкции ММХ (целочисленные) и 3DNow! (с плавающей точкой), не расходуя времени па переключе-
ние между блоками. Команды 3DNow! используют те же регистры, что и ММХ, имеют сходное кодирование и могут исполняться параллельно с инструкциям ММХ.
Различия в технологиях ММХ и 3DNow! заключается в том, что первая была разработана для ускорения целочисленных вычислений, позволяет усовершенствовать обработку целочисленных операций в таких приложениях, как редактирование и демонстрация видео, тогда как вторая дополняет и повышает возможности графических акселераторов, ускоряя вычисления с плавающей точкой на ранних стадиях графического конвейера.
Микропроцессор K6-II содержит 9,3 млн транзисторов и первоначально был выпущен для частот 266, 300 и 333 МГц. Позже появились микропроцессоры для частот 350, 366, 380 и 400 МГц. Микропроцессор K6-II стал первым микропроцессором для Socket 7, работающим с тактовой частотой системной шины 100 МГц.
К приложениям, для которых 3DNow! обеспечивает наибольший выигрыш в производительности, относятся:
трехмерные игры;
мультимедийные энциклопедии;
мультимедийные ресурсы Internet;
3 презентации, текстовые процессоры и электронные таблицы;
средства CAD/CAM;
обработка трехмерного звука;
средства распознавания речи;
передача изображений по Internet;
качественное воспроизведение DVD-фильмов и MPEG-видео.
Следующим микропроцессором компании AMD стал K6-II1, выпущенный в конце февраля 1999 года для тактовых частот 400, 450 МГц. Основным отличием этого микропроцессора стала размещенная на кристалле кэш-память второго уровня размером 256 Кбайт. Кб-III может также работать с внешним кэшем третьего уровня объемом от 512 Кбайт до 2 Мбайт. По сравнению с K6-II производительность микропроцессора увеличилась на 15—20%.
Микропроцессор К7
Микропроцессор следующего поколения — К7 (кодовое имя Athlon) был выпушен в июне 1999 года [71]. К7 содержит более 22 млн транзисторов на кристалле площадью 184 мм2 и изначально производился по технологии 0,25 мкм с 6 слоями металлизации-для тактовых частот 500, 550, 600 и 650 МГц. Впоследствии, с переходом на технологию 0,18 мкм, частота была увеличена до 1 ГГц и выше. Напряжение питания микропроцессора составляет 1,6 В.
Процессор размещен в картридже и соединяется с платой через Slot А, разработанный AMD. Athlon и Slot А используют шинный протокол Digital Alpha EV6, который имеет ряд преимуществ по сравнению с GTL+, используемым Intel. Так, EV6 предусматривает возможность использования топологии "point to point" для мультипроцессорных систем. Кроме этого, EV6 работает по переднему и заднему фронту тактирующего сигнала, что при частоте 100 МГц дает эффективную частоту передачи данных 200 МГц и пропускную способность интерфейса 1,6 Гбайт/с. В последующих моделях процессора частота работы шины (эффективная частота) достигла значений 133 (266), а затем и 200 (400) МГц. 1
Структурная схема микропроцессора К7 приведена на рис. 2.13.
Рис. 2.13. Структура микропроцессора К7
Архитектура, реализованная в Athlon, получила название QuantiSpeed™, она определяет суперскалярное, суперконвейерное выполнение команд, конвейерный блок вычислений с плавающей точкой, аппаратную предвыборку данных в кэш-память и усовершенствованную технологию предсказания ветвлений.
Athlon имеет девять исполнительных блоков: три для обработки целочисленных данных (IEU), три для вычисления адреса (AGU) и три блока для вычислений с плавающей точкой и обработки мультимедийных данных (один для загрузки/сохранения данных с плавающей точкой (FSTORE) и два конвейерных блока для исполнения команд FPU/MMX/3DNOW). Длина целочисленного конвейера составляет 10 стадий, конвейера с плавающей точкой — 15 стадий (в предыдущих моделях FPU не был конвейеризированным). Команда FPU Athlon позволяет одновременно выполнять до двух команд с плавающей точкой.
Athlon может декодировать три команды х86 в шесть RISC-операций. После декодирования ROP попадают в буфер, где ожидают своей очереди на выполнение в одном из функциональных блоков процессора. Буфер К7 содержит 72 операции (в три раза больше чем у Кб) и выдает 9 ROP для 9 исполнительных устройств.
Увеличенная до 2048 позиций таблица предсказания переходов (в 2 раза больше, чем у Pentium 111) и усовершенствованный алгоритм предсказания позволяют давать правильный прогноз в 95% случаев (у Pentium III всего 90%).
Набор S1 MD-инструкций 3DNow! дополнен 24 командами (новый набор из 45 команд получил название Enhanced 3DNow!).
Athlon имеет 128 Кбайт кэш-памяти первого уровня (64 Кбайт для данных и 64 Кбайт для команд). Для взаимодействия с кэш-памятью второго уровня предусмотрена специальная шина (как у архитектуры Р6 Intel). Кэш-память второго уровня размером 512 Кбайт расположена вне процессорного ядра, в процессорном картридже, и работает на половинной частоте ядра.
Использование при производстве процессора Athlon технологии 0,18 мкм с медными соединениями позволило разработчикам разместить на кристалле кэш-память второго уровня размером 256 Кбайт, работающую на тактовой частоте ядра. Ядро нового микропроцессора получило название Thunderbird. Микропроцессор с ядром Thunderbird содержит 37 млн транзисторов, имеет площадь кристалла 120 мм2 и работает на частотах от 750 до 1400 МГц.
Следующим микропроцессором с архитектурой К7 на ядре Thunderbird стал Duron — бюджетный вариант микропроцессора, ориентированный на дешевые ПК. Основным его отличием является уменьшенная до 64 Кбайт кэшпамять второго уровня. Duron содержит 25 млн транзисторов на кристалле 100 мм2 и рассчитан на частоты от 600 до 1200 МГц.
Размещение кэш-памяти на кристалле позволило разработчикам отказаться от использования картриджа и вернуться к разъему типа soket (462- контактный разъем Socket А). В процессорах Athlon и Duron работа кэшпамяти осуществляется по алгоритму, обеспечивающему эксклюзивность представления данных в кэшах (данные не дублируются в кэш-памяти первого и второго уровней), что увеличивает эффективный объем кэшированных данных.
Благодаря примененным в К7 новым архитектурно-техническим решениям микропроцессорам AMD удалось на 7—10% превысить производительность Pentium III при равных тактовых частотах.
Дальнейшее совершенствование архитектуры и технологии производства микропроцессоров в рамках семейства К7 привело к появлению двух новых версий Athlon: Athlon ХР и Athlon МР.
Процессор Athlon ХР основан на новом ядре Palomino, которое по сравнению с ядром Thunderbird имеет целый ряд преимуществ:
расширен набор SIMD-инструкций 3DNow!, который обеспечивает полную совместимость с предыдущими версиями 3DNow!, а также поддерживает инструкции Intel SSE. Новый набор из 107 SIMD-инструкций получил название 3DNow! Professional;
благодаря усовершенствованному ядру Athlon ХР потребляет на 20% меньшую мощность, чем Athlon на ядре Thunderbird при той же частоте;
усовершенствован алгоритм предсказания ветвлений;
улучшен механизм опережающей загрузки инструкций из основной памяти в кэш;
модифицирован буфер преобразования адресов (TLB — Translation Lookaside Buffer);
в процессор встроен термодатчик, позволяющий определять температуру кристалла.
Новый микропроцессор ориентирован на использование в высокопроизводительных персональных компьютерах, и особую эффективность, по мнению разработчиков, он должен проявлять при работе с операционной системой Windows ХР (отсюда и ХР в названии процессора).
Процессор содержит 54,3 млн транзисторов на кристалле площадью 101 мм2. Производился и производится Athlon ХР изначально по технологии 0,18 мкм, а затем — 0,13 мкм с использованием медных проводников.
Athlon МР предназначен для использования в серверах и мощных рабочих станциях и предусматривает возможность работы в двухпроцессорной конфигурации.
Основное отличие процессора AMD Athlon МР от AMD Athlon XP — использование технологии Smart MP, которая представляет собой совокупность высокоскоростной двойной системной шины и протокола когерентного кэша MOESI, управляющего пропускной способностью памяти, что необходимо для достижения оптимального баланса работы процессоров в многопроцессорных системах. Пропускная способность шины составляет 2,1 Гбайт/с, в расчете на каждый процессор.
Процессор выпускается с тактовыми частотами от 1 ГГц (технология 0,18 мкм) до 2,133 ГГц (технология 0,13 мкм, ядро Thoroughbred).
Микропроцессоры семейства Hammer
Новое семейство микропроцессоров AMD получило название Hammer [72]. К нему относятся микропроцессор для персональных компьютеров ClawHammer и серверный процессор SledgeHammer. Оба процессора производятся по технологии 0,13 мкм с медными соединениями и изолированной подложкой (SOI). Микропроцессоры данного семейства являются 64-раз- рядными, однако в отличие от архитектуры 1А-64 Intel, обеспечивают совместимость с системой команд х86, в связи с чем архитектура получила название х86-б4.
Основные преимущества архитектуры х86-64 следующие:
обратная совместимость с инструкциями х86;
64-битные версии регистров общего назначения;
8 новых РОН (general purpose registers, GPRs), доступных только для 64битных приложений;
поддержка SSE и SSE2, добавлено 8 новых регистров SSE2;
увеличен объем адресуемой памяти;
высокая производительность 32-битных приложений, поддержка 64= битных приложений.
Различия архитектур х86 и х86-64 показаны на рис. 2.14.
Упрошенная структура микропроцессора Hammer показана на рис. 2.15.
Создавая новую архитектуру, разработчики компании AMD стремились повысить производительность микропроцессора не только за счет увеличения тактовой частоты или числа вычислительных блоков, но и за счет повышения степени их загрузки. С этой целью в микропроцессор внесены следующие изменения:
увеличена длина вычислительных конвейеров: целочисленного конвейера до 12 стадий, с плавающей точкой до 17 стадий;
встроен контроллер памяти;
усовершенствован блок предсказания ветвлений;
встроен когерентный интерфейс HyperTransport.
Очевидно, что без интенсификации подкачки данных в микропроцессорное ядро нс представляется возможным повысить степень загруженности вычислительных блоков микропроцессора. Размещая на кристалле контроллер памяти, AMD стремилась повысить производительность подсистемы обмена с основной памятью, которая в современных микропроцессорах является узким местом. Оптимальный для данного процессора и максимально приближенный к нему контроллер позволяет организовать эффективный обмен с памятью, минуя системную шину, на частоте работы ядра.
Процессоры с архитектурой Hammer оснащаются 64- либо 128-битным контроллером DDR SDRAM, в дальнейшем предполагается переход на DDR II. На рис. 2.16 показана структура вычислительной системы, построенной на базе микропроцессора Hammer, в которой функции северного моста, за исключением контроллера AGP, обеспечиваются процессором.
Рис. 2.16. Структура вычислительной системы на базе МП Hammer
Встроенный когерентный интерфейс HyperTransport обеспечивает возможность использования Hammer в мультипроцессорной конфигурации.
Улучшение блока предсказания ветвлений заключается в выявлении и учете информации о типе ветвлений: статическое ветвление, т. е. адрес перехода . не изменяется, или динамическое..
Различия процессоров для одно- и многопроцессорных конфигураций за- ] ключаются, в основном, в размере кэш-памяти второго уровня и числе линков интерфейса HyperTransport. Так, для однопроцессорного использования предназначен микропроцессор Athlon ClawHammer-DT (DT означает DeskTop) в следующей конфигурации: один 72-битный канал DDR SDRAM DDR200/266/333 (РС1600/РС2100/РС2700), один 16-битный линк !
HyperTransport с пропускной способностью 3,2 Гбайт/с, кэш-память второго уровня 256 Кбайт или I Мбайт. Для двухпроцессорных систем (рис. 2.17) предназначен Athlon ClawHammer-DP (DP — Dual Processing), содержащий один 72-битный канал DDR SDRAM DDR200/266/333 (РС1600/РС2100/РС2700), два 8-битных линка HyperTransport по 3,2 Гбайт/с каждый и кэш-память второго уровня 512 Кбайт или 1 Мбайт. Для применения в мультипроцессорных конфигурациях предназначен Opteron SledgeHammer-MP (МР означает Multy Processing — до 8 процессоров), содержащий два 72-битных канала DDR SDRAM DDR200/266/333 (РС1600/РС2100/РС2700), три 16-битных линка НТ по 3,2 Гбайт/с каждый и кэш второго уровня — 1 Мбайт.
Первые два микропроцессора выпускаются в 754-контактном mPGA-корпусе, для последнего предназначен новый 940-контактный mPGA корпус.
Рис. 2;17, Микропроцессор Hammer в 2-процессорной конфигурации
2.2.11. Микропроцессоры компании Cyrix
Третье место после Intel и AMD на рынке микропроцессоров с архитектурой х86 занимают микропроцессоры семейства Cyrix. Не претендуя на лидерство в производительности, эти микропроцессоры, тем не менее, занимают ус- I тойчивую позицию на рынке микропроцессорных систем, в секторе систем нижней ценовой категории, благодаря сбалансированным значениям таких характеристик, как производительность, энергопотребление, стоимость.
Микропроцессор Cyrix 5x86 (M1sc)
Микропроцессор 5x86 был выпущен компанией Cyrix в качестве альтернативы Pentium и предлагаемой Intel технологии перехода с четвертого на пятое
поколение микропроцессоров — ChipUp. Для упрощения перехода пользователей на новый процессор компания обеспечила его совместимость по выводам с 486 микропроцессором.
В 5x86 [73] воплощены архитектурные и структурные решения, характерные для процессоров пятого поколения, такие как 64-разрядная внутренняя архитектура, предсказание переходов, предварительная посылка данных, выполнение нескольких операций за один такт (благодаря разнесению устройств загрузки/сохранения). В микропроцессор встроены 80-разрядное устройство вычислений с плавающей точкой и общий кэш данных и команд размером 16 Кбайт.
Особенностью микропроцессора является высокоэффективная система управления энергопотреблением процессора и внешних устройств. Система управления энергопотреблением может отключить модуль операций с плавающей точкой и другие внутренние схемы, если они в данный момент не используются. Низкое энергопотребление процессора (на частоте 100 МГц при напряжении питания 3,3 В 5x86 потребляет менее 3,5 Вт) делает его предпочтительным для использования в мобильных компьютерах, для которых критичны энергопотребление и отвод тепла.
Архитектура 5x86 — результат компромисса между производительностью и простотой реализации, благодаря которой удалось уменьшить число транзисторов на кристалле и снизить энергопотребление.
Процессор содержит модуль предсказания переходов, включающий буфер । адресов перехода (ВТВ), объединенный кэш данных и команд размеромч 16 Кбайт с режимом обратной записи, устройство операций с плавающей точ-. кой, устройство выборки и устройство декодирования команд, устройство3 управления памятью с буфером преобразования адресов на 32 элемента, па-- раллелыю функционирующие устройства загрузки/сохранения и модуль вы-: числения адресов. Функциональные модули 5x86 связаны между собой двумя 32-разрядными шинами, обеспечивающими неблокируемый обмен данными. 128-разрядная шина выборки команд обеспечивает за один такт передачу 16 байт команд в трехуровневый буфер устройства декодирования.
Модуль целочисленных операций выбирает, декодирует и выполняет комагН ды в шестистадийном конвейере. На первой стадии выборки (Fetch StagBM генерируется непрерывный высокоскоростной поток команд из внутреннем кэш-памяти. За один такт считывается до 128 бит кода. На второй стадии -Я декодирования (Decode Stage) — анализируется поток команд и определяет^ ся число байт в каждой команде и ее тип. На третьей стадии (Address® Calculation) выполняется конвейеризированное вычисление адреса, вклюЯ чающее стадии АС1 и АС2. Стадия АС1 используется для вычисления лй-д нейного адреса, если команда обращается к операнду в памяти. На стаайЯ АС2 реализуются операции доступа к памяти, кэш-памяти и регистрами В случае обнаружения команды с плавающей точкой АС2 передает ее уйЯ
ройству вычислений с плавающей точкой. На стадии выполнения (Execution Stage) под управлением микрокода осуществляется выполнение команды. На стадии записи результата (Write-Back) сохранение результата в регистровом файле выполняется непосредственно в модуле целочисленных операций, а сохранение в памяти выполняется модулем загрузки/сохранения.
Устройство операций с плавающей точкой связано 64-разрядным интерфейсом с кэш-памятью и модулем целочисленных операций и поддерживает систему команд х87, включая расширенный 80-разрядный формат.
Модуль управления памятью содержит устройство загрузки/сохранения, буфер преобразования адресов (TLB) и устройство вычисления адреса (АС). АС выполняет вычисление адреса, устанавливает значение указателя команд, инициирует операции загрузки/сохранения. Модуль загрузки/сохранения может выполнять операции параллельно с возможностью переупоря- дочивания трех операций загрузки и четырех операций сохранения.
64-разрядная внутренняя шина микропроцессора преобразуется в 32-раз- рядную внешнюю шину. Внешняя шина микропроцессора может работать с частотой от 33 до 50 МГц, умножитель частоты повышает внутреннюю частоту до 100—120 МГц.
По производительности Cyrix 5x86 сравним с младшими моделями Pentium (75, 90 МГц), но существенно дешевле последних.
Микропроцессор Cyrix 6x86
Первые образцы микропроцессоров 6x86 [74, 75], под названием Ml, были представлены Cyrix в октябре 1995 года. На частоте 100 МГц процессор на 30% превосходил по быстродействию аналогичный Pentium. Однако ввиду большого размера кристалла процессор сильно нагревался, что отражалось на надежности его работы. Поэтому первый вариант процессора не нашел широкого распространения, и массовое его производство было начато только с появлением нового варианта, в первом квартале 1996 года. При той же 0,6 мкм технологии Cyrix перешла на пятислойную металлизацию вместо прежней трехслойной, что позволило сократить размеры кристалла с 394 до 225 мм2 и уменьшить нагрев процессора. Новый вариант процессора был выпущен для частот 100, 120, 133, и 150 МГц, что соответствует используемому в маркировке процессоров Pentium-рейтингу 120+, 150+, 166+, 200+. Процессор использовал напряжение питания 3,3 В, существовала также низковольтовая версия процессора — 6x68L, предназначенная для применения в мобильных компьютерах. 6x86L использовал 2,8 В для процессорного ядра и 3,3 В — для подсистемы ввода/вывода.
В микропроцессоре 6x86 были реализованы такие прогрессивные архитектурные методы повышения производительности, как переупорядочивание инет-
2QQ
рукций, динамическое устранение зависимостей между командами, переименование регистров, спекулятивное выполнение, предсказание переходов.
Структура микропроцессора показана на рис. 2.18.
Рис. 2.18. Структура микропроцессора Cyrix 6x86
Микропроцессор Cyrix 6x86 содержит два независимых семистадийных конвейера (X и Y), позволяющих выполнять несколько команд за один такт. Процессор имеет два кэша: общий кэш данных и команд размером 16 Кбайт и дополнительную 256-байтовую кэш-память команд с прямым отображением. Выделенный кэш команд позволяет избежать частых конфликтов при обращении к данным и командам в общей кэш-памяти.
Так же как и 5x86, процессор способен параллельно выполнять целочисленные команды и команды с плавающей точкой, отложенные и переупорядоченные инструкции загрузки/сохранения.
Цикл работы целочисленного АЛУ включает следующие этапы конвейерного выполнения:
выборка команды (IF);
декодирование команды 1 (ID1);
декодирование команды 2 (ID2);
вычисление адреса 1 (АС1);
вычисление адреса 2 (АС2);
выполнение (ЕХ);
запись результата (WB).
Таким образом, этапы декодирования команды и вычисления адреса также конвейеризированы.
Этап IF, общий для X- и Y-конвейеров, заключается в выборке из кэша 16 байт кода за один такт. В этом такте осуществляется также анализ потока команд на наличие команд перехода. Если встретилась команда перехода, то логика предсказания генерирует адрес перехода, и начинается выборка команд по предсказанному адресу.
Суперконвейеризированный этап декодирования команды включает две стадии. ID1 является общей для обоих конвейеров. На этой стадии определяется размер команды в байтах. Затем команды для каждого конвейера передаются на стадию ID2, в ходе которой команды декодируются и направляются для выполнения в конвейер X или У. Выбор конвейера зависит от того, какая из выполняющихся в данный момент команд будет завершена раньше.
Вычисление адреса включает два этапа, аналогичные рассмотренным для 5x86. На стадии выполнения используются данные, полученные на предыдущей стадии вычисления адреса. Результаты выполнения записываются в регистр непосредственно в устройстве целочисленных операций или передаются для записи в память устройству управления кэш-памятью.
Особенностью, отличающей 6x86 от процессоров Pentium и 5x86, является переупорядочивание команд. Если команда выполнится быстрее, чем предыдущая в другом конвейере, то они будут переупорядочены. Вплоть до стадии выполнения все команды выполняются по порядку, а на стадиях ЕХ и WB порядок может быть нарушен. Аппаратные средства блокировки обеспечивают требуемый порядок выполнения и записи результатов для команд, связанных по данным.
Для устранения зависимостей по данным в процессоре используются следующие приемы: ’
переименование регистров;
предварительная посылка данных;
пропуск данных.
6x86 содержит 32 физических регистра общего назначения. Каждый из регистров может быть временно сопоставлен архитектурному регистру х86 (ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ЕВР и ESP). Для каждой операции записи в регистр выбирается новый физический регистр, чтобы сохранить предыдущие данные. Переименование регистров эффективно устраняет WAW- и WAR-зависи мости.
Зависимость RAW не может быть устранена только с помощью переименования регистров. Для этого в 6x86 используется также предварительная посылка данных и результатов.
Для уменьшения потерь производительности, связанных с использованием предварительной посылки данных и результатов при устранении RAW- зависимостей, в 6x86 используется метод пропуска данных. Этот метод применяется в случае записи в память одной из пары команд данных, которые считывает другая команда этой пары. Механизм пропуска данных передает эти данные непосредственно от команды к команде, экономя цикл чтения из памяти. Пропуск данных применяется только для кэшируемых областей памяти.
Для предсказания переходов в 6x86 используется 256-позиционный 4-вхо- довый ассоциативный буфер адресов переходов. Корректно предсказанная инструкция перехода выполняется за один процессорный такт.
Микропроцессор Cyrix 6х86МХ
Следующей разработкой компании Cyrix стал процессор с мультимедийным расширением системы команд — 6х86МХ, известный также как М2 [76—78]. Cyrix представляла этот процессор как более дешевую альтернативу Pentium 11. Подобно Pentium Pro, он оптимизирован для работы с 32-разрядными программами, но, в отличие от последнего, успешно работал с 16- разрядными программами и устанавливался в стандартное гнездо Socket 7.
Процессор производился по технологии КМОП 0,35 мкм и 0,25 мкм с пятислойной металлизацией и использовал два напряжения питания: 2,9 В для процессорного ядра и 3,3 В для подсистемы ввода/вывода. Процессор мог работать с частотой шины 66, 75 или 83 МГц. Его производительность по Pentium-рейтингу составляла от PR 166 до PR433.
Структура микропроцессора показана на рис. 2.19.
Рис. 2.19. Структура микропроцессора Cyrix 6х86МХ
В 6x68 используется предсказание переходов и спекулятивное выполнение команд. Спекулятивное выполнение может осуществляться на глубину до 4 ветвлений. Результаты, полученные при спекулятивном выполнении команд, не переносятся в кэш-память и внешнюю память до тех пор, пока не будет получено подтверждение правильности сделанного предположения. Спекулятивное выполнение команд продолжается до тех пор, пока не произойдет одно из следующих событий:
уровень спекулятивного выполнения превысил 4;
возникло исключение или установлена ложность предсказания перехода;
переполнение буфера записи результатов спекулятивно выполненных команд;
предпринята попытка модификации ресурсов, не сохраненных в контрольной точке (например, сегментных регистров, системных флагов).
Основные отличия процессоров 6х86МХ и 6x86 отражены в табл. 2.15.
Микропроцессор 6х86МХ содержит два кэша: 64-килобайтный 4-входовый ассоциативный общий кэш с обратной записью и 256-килобайтный высоко-
скоростной кэш команд с прямым отображением. Для поддержки выполнения мультимедийных операций часть кэш-памяти может быть использована в качестве основной памяти со строковой организацией. В этом случае она не участвует в операциях кэширования.
В 6х86МХ используются два буфера трансляции адресов (TLB) — основной TLB первого уровня (TLB L1) и вторичный TLB (TLB L2), большего размера. TLB LI с прямым отображением адресов имеет 16 позиций, 6-входовый ассоциативный TLB L2 рассчитан на 384 позиции.
Таблица 2.15. Отличия процессоров Cyrix 6x86 и 6х86МХ
Характеристика
Cyrix 6х86МХ
'Cyrix 6x86
6x86
6x86L
Напряжение питания: ядро
2,9 В
3,3 или 3,52 В
2,8 В
подсистема
3,3 В
3,3 В
3,3 В
ввода/вывода
Кэш-память первого уровня
TLB
Предсказание перехо
64 Кбайт
L1: 16 позиций
L2: 384 позиции
512-позиционный кэш
16 Кбайт
L1: 128 позиций
256-позиционный кэш адре
дов
ММХ
Реализация строковой памяти в первичной кэш-памяти
Умножение частоты
адресов переходов
1024-позиционная таблица предыстории переходов
Да
Да
2х; 2,5х; Зх; 3,5х
сов переходов
512-позиционная таблица предыстории переходов
Нет
Нет
2х; Зх
Устройство вычислений с плавающей точкой (FPU) имеет 64-разрядный интерфейс, 4-позиционную входную очередь команд на выполнение и 6- позиционную выходную очередь на запись результатов. Устройство FPU расширено возможностью выполнения команд ММХ, наряду с командами с плавающей точкой. Команды обоих типов могут выполняться одновременно с целочисленными операциями.
Для возможного применения в мобильных компьютерах в 6х68МХ предусмотрена эффективная система управления энергопотреблением.
В табл. 2.16 приведены данные по производительности процессоров Cyrix на тестах, включающих графические и мультимедийные приложения.
Таблица 2.16. Производительность микропроцессоров на мультимедийных тестах
Микропроцессор
ZD Winstone 97 для Windows 95
ZD Winstone 97 для Windows NT
PR233 Cyrix 6х86МХ
49,4
63,5
Pentium II — 233 МГц
49,9
65,7
PR200 Cyrix 6х86МХ
45,9
59,1
Pentium MMX — 200 МГц
43,3•
57.7
PR 166 Cyrix 6х86МХ
43,8
56,2
Pentium MMX-166 МГц
’40,8
54,6
PR200+ Cyrix 6x86
41,5
50,6
Pentium — 200 МГц
40,5
51,0
Микропроцессоры IDT WinChip и VIA Cyrix
В конце 1990-х годов на рынок микропроцессоров вышла компания VIA — известный производитель чипсетов. Предпосылкой к этому послужило приобретение ею компаний Cyrix и Centaur Technology (микропроцессорное подразделение компании 1DT), Последняя известна как разработчик микропроцессоров WinChip с архитектурой х86. Новые микропроцессоры компании VIA, таким образом, воплотили в себе лучшие качества микропроцессорных архитектур Cyrix и WinChip.
Микропроцессор WinChip
Несколько слов следует сказать о микропроцессорах IDT WinChip С6 |79|, появившихся на рынке в 1997 году и ориентированных на сектор дешевых компьютеров. Эти микропроцессоры являлись функциональными аналогами Pentium MMX и, не показывая значительных результатов в производительности, тем не менее, обладали рядом преимуществ, в числе которых низкое энергопотребление, невысокая цена (почти в 2 раза дешевле, чем Pentium MMX с такой же производительностью) и совместимостью по разъемам (Socket 5) и напряжению питания (3,3—3,5 В) со старыми материнскими платами, рассчитанными на использование с процессором Pentium. Таким
образом, переход на WinChip стал альтернативой замене материнской платы при переходе от Pentium к Pentium MMX или от AMD К5 к Кб.
Микропроцессор WinChip С6 представляет собой весьма простой микропроцессор, который имеет только один исполнительный конвейер, не использует предсказания переходов, спекулятивного выполнения и других ухищрений, направленных на повышение производительности. В WinChip Сб сделана ставка на эффективную реализацию наиболее часто выполняемых команд, а также на использование большой кэш-памяти (64 Кбайт), расположенной на кристалле и работающей на частоте ядра. В микропроцессоре реализована поддержка команд ММХ, однако FPU, в отличие от CPU, не являлось конвейеризированным, и процессор имел весьма низкую производительность на мультимедийных командах и командах с плавающей точкой.
Микропроцессор WinChip С6 выпускался по технологии 0,35 мкм с четырехслойной металлизацией для тактовых частот от 180 до 240 МГц, обеспечивал работу с системной шиной на частотах 60, 66, 75 МГц, имел энергопотребление около 10 Вт и содержал 5,4 млн транзисторов на кристалле площадью 88 мм2.
Микропроцессор WinChip 2
Осенью 1998 года компанией IDT был выпущен следующий микропроцессор — WinChip 2 [80], который заслуживает более подробного рассмотрения. Основными нововведениями данного микропроцессора являются конвейеризированное устройство вычислений с плавающей точкой, второй конвейер для обработки MMX-данных и блок 3Dnow!.
В микропроцессоре осуществляется динамическая трансляция команд х86 во внутреннее представление — микрокод. Выборка и трансляция команд х8б реализовывается асинхронно по отношению к исполнительному конвейеру. В процессоре не используется изменение порядка выполнения команд. В случае отсутствия данных в кэш-памяти исполнительный конвейер приостанавливается до их подкачки из основной памяти. Целочисленные команды и команды с плавающей точкой выбираются и исполняются по одной за такт, в соответствии с порядком их следования в программе. Команды ММХ и 3Dnow! могут выбираться и выполняться одновременно.
При достаточно простой архитектуре микропроцессор достигает высокой производительности за счет эффективной реализации часто используемых команд, конвейеризации устройств обработки данных с плавающей точкой и мультимедийных данных, большого размера размещенных на кристалле кэш-памяти и буфера быстрого преобразования адреса (TLB).
Внутренняя структура микропроцессора показана на рис. 2.20. Рассмотрим назначение и функционирование основных блоков микропроцессора.
Рис. 2.20. Структура микропроцессора WinChip 2
Устройство трансляции (X86-To-Microcode Translator) извлекает из кэш-па- мяти команд (I-Cache) до 16 байт за один такт, помешает их в буфер команд (Х86 Inst Buffer) и преобразует содержащиеся в них х86-команды во внутренние инструкции. За один такт могут преобразовываться две команды ММХ или две команды 3DNow!. Поток микроинструкций (Х86 Inst Farms) из очереди на выполнение (Queue) и непосредственные операнды (Х86 Immed
Data) поступают в исполнительный блок с выхода транслятора или из памяти (ROM) микроинструкций (Internal Insts — внутренние инструкции).
Устройство предсказания переходов, содержащее также стек адресов возврата (BR Prediction & Ret Stk), определяет с вероятностью 0,9 направление перехода для команд ветвлений. Эта информация используется для управления устройством выборки (Х86 Fetch) при загрузке кода программы в кэш команд.
Микропроцессор содержит раздельные типы кэш-памяти первого уровня для команд и данных: кэш команд (l-Cache) размером 32 Кбайт, множественно-ассоциативный, 2-входовый, с размером строк 32 байта; кэш данных (D-Cache) размером 32 Кбайта, множественно-ассоциативный, 4-входовый. В процессоре предусматривается возможность использования внешней кэшпамяти второго уровня размером от 512 Кбайт до 2 Мбайт.
Выполнение микроинструкций осуществляется в конвейере за 4 стадии: декодирование (Decode), вычисление адреса (Address Gen), выборка данных из кэша и вычисление результата (D-Cache Access & Execute), запись результата (Writeback). Одновременно с целочисленными вычислениями в АЛУ, процессор может выполнять обработку мультимедийных данных и данных в формате с плавающей точкой.
Блок операций 80-разрядный с плавающей точкой полностью конвейеризй’ рован и может выполнять операцию умножения или сложения за один такт. Каждый из двух блоков ММХ содержит сумматор и устройство выполнения логических операций, в то же время, один из них содержит умножитель- сумматор, а другой — устройство сдвига и преобразования форматов данных.
MMX-блоки разделяют аппаратные ресурсы с блоками 3DNow!, тогда как FPU является независимым. Регистры FPU и ММХ архитектурно идентичны, но физически различны и синхронизируются на аппаратном уровне, Шинный блок (Bus Unit) микропроцессора обеспечивает интерфейс с системной шиной, работающей на частотах 60, 66, 75, 83, 95 и 100 МГц.
WinChip 2 — производился по технологии 0,25 мкм для частот от 200 до 300 МГц и напряжения ядра 3,3 или 3,5 В.
Несмотря на существенное увеличение производительности по сравнению с ] предыдущим процессором, особенно в части, касающейся обработки мультимедийных данных и выполнения операций с плавающей точкой, WinChip 2 не удалось догнать лидеров — микропроцессоры компании Intel. В то ЖО время, по соотношению производительность/стоимость этому процессору! удалось обогнать ближайших конкурентов Intel — AMD и Cyrix. И пб-| прежнему, вне конкуренции остался WinChip в случае необходимости заме-| ны устаревшего процессора, при сохранении системной платы.1
Следующей (и последней) самостоятельной разработкой компании Centaura Technology стал микропроцессор WinChip 3, основным отличием которого!
явилась размешенная на кристалле кэш-память второго уровня размером 128 Кбайт. Однако в связи с покупкой компании этот микропроцессор так и не был запущен в производство.
Последующие микропроцессоры компания Centaur Technology выполняла уже в составе VIA совместно со специалистами из Cyrix.
Микропроцессор VIA Cyrix III
Микропроцессор VIA Cyrix III [811 был представлен в двух вариантах: с ядром Joshua, разработанный компанией Cyrix; и с ядром Samuel, являющийся результатом разработки Centaur Technology, ранее известной как Winchip 4.
В компании Cyrix данный микропроцессор ранее разрабатывался под кодовыми названиями Jedi и Gobi. Затем, после се покупки National Semiconductor, он получил название Jalapeno и уже в VIA — Joshua.
Микропроцессор VIA Cyrix III Joshua производился по шестислойной 0,18 мкм технологии, содержал кэш-память первого уровня 64 Кбайт и кэшпамять второго уровня 256 Кбайт, использовал напряжение питания 2,2 В, тактовую частоту системной шины — 66, 100, 133 и следующие делители частоты шины: 2,5; 3; 3,5; 4; 4,5; 5; 5,5; 6; 6,5 и 7. Процессор рассчитан на установку в гнездо Socket 370, обеспечивая совместимость с системными платами, разработанными для Pentium III и Celeron.
В микропроцессоре Joshua была реализована обработка команд в двух исполнительных конвейерах, использована технология переименования регистров для устранения связей по данным между отдельными командами, поддерживались наборы SIMD-команд ММХ и 3DNow!. Блоки ММХ и FPU у Joshua двухконвейерные.
Микропроцессор VIA Cyrix III, построенный на ядре Joshua, был представлен в феврале 2000 года, однако, в виду существенно меньшей производительности, чем ожидалось ранее, он так и не был запушен в серию.
Другой микропроцессор VIA Cyrix III, построенный на ядре Samuel, был анонсирован в начале июня 2000 года. Этот микропроцессор имел следующие характеристики:
□ технология производства 0,18 мкм с 6 слоями алюминиевых соединений;
□ на кристалле площадью 76 мм2 расположено! 1,2 млн транзисторов;
□ используемый разъем — Socket 370;
□ системная шина с частотой 66/100/133 МГц;
внутрикристальная кэш-память первого уровня, объемом 128 Кбайт, по 64 Кбайт на команды и данные;
кэш-память второго уровня — отсутствует;
□ напряжение питания — 1,9 В;
энергопотребление не более 10 Вт;
набор SIMD-инструкций 3DNow! и ММХ;
тактовая частота — 500, 533, 600, 667 МГц.
Микропроцессор имеет 12-стадийный исполнительный конвейер и 4 функциональных блока: 1 ALU, 2 MMX/3Dnow! и 1 FPU.
Отсутствие кэш-памяти второго уровня оказало существенное влияние на производительность процессора, и в новом варианте процессора Cyrix III, на основе ядра Samuel 2, был добавлен кэш размером 64 Кбайт. Помимо кэш-памяти, этот процессор отличается модифицированным блоком FPU и новой технологией производства — 0,15 мкм, самой современной на сегодняшний день. Размеры кристалла уменьшились до 52 мм2. Тактовая частота процессора составляет от 700 до 900 МГц. При напряжении питания 1,5 В процессор с ядром Samuel 2 на частоте 700 МГц потребляет всего 5 Вт. Низкое энергопотребление позволяет использовать микропроцессор без вентилятора.
Результаты тестирования процессора показывают, что и на целочисленных вычислениях, и на вычислениях с плавающей точкой Cyrix III уступает процессорам Seleron и Duron, причем, на плавающей точке отставание весьма существенное.
Дальнейшие планы VIA связаны с выпуском процессоров Ezra на основе нового ядра Nehemiah по технологии 0,13 мкм. Процессор содержит на кристалле 256 Кбайт кэш-памяти второго уровня, работает на частотах от 800 до 1200 МГц при частоте системной шины 266 МГц. Системная шина работает в режиме DDR. Помимо ММХ и 3Dnow!, в микропроцессор будет добавлена поддержка набора команд SSE.
Стремясь еще более удешевить системы на базе своих процессоров, VIA начала выпуск интегрированных кристаллов, содержащих помимо ядра северный мост. Данный процессор, получивший название Mark, был выпущен на основе ядра Nehemiah для тактовой частоты 1 ГГц.
Микропроцессоры компании Transmeta
Свои первые микропроцессоры компания Transmeta представила в начале 2000 года. Микропроцессорное семейство, получившее название Crusoe, отличает оригинальная архитектура, основанная на нескольких запатентованных Transmeta-решениях |82, 83]. Основной особенностью данных микропроцессоров в архитектурном плане является динамическое преобразование двоичного кода программы во внутренний VLIW-код ядра с помощью программно-аппаратного компонента, названного разработчиком Преобразователем кода (Code Morphing). Программная часть Преобразователя кода явля-
ется загружаемой (загружается при инициализации процессора из flash ROM в SDRAM-память) и может быть изменена для настройки на новую входную систему команд или новое процессорное ядро.
Существующие реализации микропроцессора работают с командами х86, однако нет принципиальных ограничений для настройки микропроцессора и на другие системы команд.
Обеспечить эффективную эмуляцию выполнения команд х86 в VLIW-ядре разработчикам удалось благодаря сохранению преобразованного кода каждой команды в специальной кэш-памяти для его последующего использования, а также за счет учета особенностей выполняемых программ при генерации последовательности VLIW-команд: Преобразователь кода анализирует наиболее часто выполняемые фрагменты программы, ветвления, вызовы подпрограмм и т. п. с целью их более эффективной реализации во внутреннем VLIW-коде.
Ядро Crusoe состоит из пяти модулей четырех различных типов: два блока для операций с целыми числами, один для операций с числами с плавающей запятой, один для операций с памятью, и один модуль переходов.
Рис. 2.21. Выполнение VLIW-команды в микропроцессоре Crusoe
Соответственно, и каждая VLIW-команда ("молекула", по терминологии Transmeta, длиной 64 или 128 бит) может состоять из четырех RISC- подобных операций этих типов ("атомов"). Все атомы выполняются параллельно, каждый соответствующим модулем (рис. 2.21).
Выявление потенциального параллелизма уровня команд программными средствами на этапе преобразования кода, а не в динамике, на стадии выполнения, как это делается в большинстве современных суперскалярных микропроцессоров, позволяет обойтись меньшим числом транзисторов, малыми размерами кристалла и, как следствие, меньшей себестоимостью и меньшим расходом энергии. На снижение энергопотребления в микропро-
цессорах Crusoe направлены и другие архитектурно-технические решения, в частности, система управления энергопотреблением ACPI, использование технологии LongRun (возможность изменения тактовой частоты и напряжения на ядре процессора в ходе выполнения программы).
Низкое энергопотребление при достаточно высокой производительности, определило позицию микропроцессоров семейства Crusoe на рынке мобильных устройств.
На сегодняшний день в это семейство микропроцессоров входят: ТМ3120, ТМ5400.
Микропроцессор ТМ3120
TM3I20 — младший процессор семейства. Выпускается для тактовых частот 333, 366, и 400 МГц.
ТМ3120— высокоинтегрированное устройство, предназначенное для построения "систем на одном кристалле". Помимо собственно процессора, кристалл содержит 96 Кбайт раздельных типов кэш-памяти второго уровня команд и данных (64 Кбайт для команд и 32 Кбайт — для данных), встроенный контроллер SDRAM (66—133 МГц), контроллер шины РС1 2.1 и контроллер флэш-памяти, содержащий программное обеспечение Преобразователя кода.
Микропроцессор рассчитан на напряжение 1,5 В и потребляет в системном состоянии Deep Sleep всего лишь 0,015 Вт. В процессе активного счета его энергопотребление на порядок ниже, чем у других микропроцессоров с архитектурой х86.
При производстве данного микропроцессора использовалась технология 0,22 мкм. Цена его при выпуске составила от $65 до $89 в зависимости от тактовой частоты.
Микропроцессор ТМ5400
Следующий представитель семейства Crusoe — ТМ5400. Это более производительный процессор, рассчитанный на тактовую частоту 500—700 МГц. В процессор добавлена кэш-память второго уровня размером 256 Кбайт и увеличен объем кэш-памяти первого уровня до 128 Кбайт (64 Кбайт — команды, 64 Кбайт — данные). Блок управления энергопотреблением регулирует напряжение ядра от 1,2 В до 1,6 В, в зависимости от интенсивности вычислений. Энергопотребление процессора не превосходит 1,8 Вт.
Внутренняя структура микропроцессора показана на рис. 2.22.
К дополнительным средствам системной интеграции добавился расположенный на кристалле контроллер памяти DDR SDRAM. Микропроцессор производится по технологии 0,18 мкм и стоил при выпуске от $119 до $329.
По производительности микропроцессор ТМ5400 с тактовой частотой 667 МГц примерно равен Pentium II1/500 МГц.
Рис. 2.22. Микропроцессор ТМ5400
Перспективы развития микропроцессоров Crusoe
Дальнейшее развитие семейства микропроцессоров Crusoe (ТМ5600, ТМ5800) идет в направлении повышения тактовой частоты, снижения энергопотребления, совершенствования программного обеспечения Преобразователя кодов, а также расширения номенклатуры встроенных дополнительных устройств. Так, микропроцессор ТМ5800 содержит средства аппаратной поддержки реализации криптографических алгоритмов, соответствующих стандарту шифрования AES (Advanced Encryption Standard — усовершенствованный стандарт шифрования).
В 2003 году планируется выпуск первого микропроцессора второго поколения семейства — ТМ8000 Astra.
Микропроцессор ТМ8000 Astra содержит встроенные контроллеры ОЗУ. AGP, оснащен высокоскоростной системной шиной HyperTranspoil, графи-
ческой шиной AGP 4х и поддерживает память DDR400. Увеличена длина VLIW-команд ядра микропроцессора со 128 до 256 разрядов, что позволяет обрабатывать за такт 8 команд длиной в 32 бита.
Планируется выпускать процессор Astra для частот свыше 1 ГГц по технологии 0,13 мкм. Серийный выпуск новых процессоров должен начаться в III квартале 2003 года..
Микропроцессоры с архитектурой Alpha
На протяжении ряда лет микропроцессоры Alpha, разработанные компанией DEC, являлись лидерами в производительности [84—89]. Первые 64-ра- рядные микропроцессоры разрабатывались в рамках концепции Spead Daemon, затем, начиная с модели 21264, разработчики начали использовать решения, характерные для концепции Brainiac.
Микропроцессоры Alpha 2106х
Микропроцессоры Alpha 21064 являются хорошей иллюстрацией концепции Speed Daemon — достижения высокой производительности за счет увеличения тактовой частоты при относительно простой логике функционирования. Архитектура микропроцессоров Alpha впервые была представлена в феврале 1992 года на конференции ISSCC, а уже в феврале 1993 года был выпущен первый из микропроцессоров — Alpha 21064 с тактовой частотой 200 МГц, выполненный по 0,75 мкм КМОП технологии с 4 слоями металлизации. Процессор содержал 1,68 млн транзисторов на кристалле площадью 238 мм2. Благодаря высокой тактовой частоте и высокой степени конвейеризации выполняемых операций (до 10 тактов на операцию) этот микропроцессор надолго занял лидирующее положение по производительности. Основной областью использования процессора явились высокопроизводительные рабочие станции и серверы.■
Следующими в сентябре 1993 года были выпушены микропроцессоры Alpha 21066 с тактовой частотой 166 МГц и Alpha 21068 с тактовой частотой 66 МГц. Эти процессоры были ориентированы на использование в более дешевых системах — рабочих станциях нижнего и среднего уровня. Архитектура ядра данных микропроцессоров аналогична Alpha 21064. На кристалле микропроцессоров Alpha 21066/21068 расположены контроллеры: ПДП (прямого доступа к памяти), графический и шины PCI. Это позволило снизить стоимость процессоров и упростить построение систем на их основе.
Выпуск в октябре 1993 года микропроцессора Alpha 21064А с тактовой частотой 225 и 275 МГц еще более упрочил позиции микропроцессоров компании DEC, как лидеров в производительности.
Микропроцессор Alpha 21064 имеет 64-разрядную суперскалярную RISC- архитектуру с двумя исполнительными конвейерами. Микропроцессор выполняет за один такт до двух команд с фиксированной и плавающей точкой или команду перехода. Блок предсказания переходов обеспечивает вероятность правильного прогноза 0,8.
Микропроцессор содержал на кристалле раздельную кэш-память команд и данных, каждая емкостью 16 Кбайт, 32 регистра с плавающей точкой и 32 регистра с фиксированной точкой. Кэш-память второго уровня — внешняя, емкостью от 128 Кбайт до 16 Мбайт. Тактовая частота шины в системе могла быть в 2,5—10 раз меньшей, чем частота работы микропроцессора. Ширина внешних шин адреса и данных составляла 43 и 128 битов соответственно.
В микропроцессорах Alpha 21064 не использовалась сложная логика пере- упорядочивания команд и переименования регистров. Обеспечение эффективной загрузки исполнительных устройств возлагалось на компилятор.
В табл. 2.17 приведены основные характеристики микропроцессоров Alpha 2106х.
Таблица 2.17. Основные характеристики микропроцессоров Alpha 2106х
Модель
Тактовая частота, МГц
Технология, мкм
Мощность, Вт
Внешняя кэш-память, Мбайт
Производительность
SPEC int92
SPEC fp92
21064
200
0,75
27
ДО 16
130
184
21064А
275
0,75
33
ДО 16
190
290
21066
166
0,68
21
0,064 -2
70
105
21066А
233
0,68
23
0,064 -2
100
112
21068
66
0,68
9
0,064 -2
30
50
Микропроцессор Alpha 21164
Следующим микропроцессором с архитектурой Alpha стал выпущенный в сентябре 1994 года микропроцессор Alpha 21164, работавший па тактовых частотах 266 и 300 МГц. Это был первый микропроцессор, имевший производительность более I млрд операций в секунду (1,2 млрд/с). Применение новой на тот период технологии 0,5 мкм позволило разместить на кристалле площадью 298 мм2 9,3 млн транзисторов.
Структура микропроцессора приведена на рис. 2.23.
Рис. 2.23. Структура микропроцессора Alpha 21164
Архитектура этого процессора максимально ориентирована на достижение большой производительности за счет высокой тактовой частоты. По сравнению с предыдущим поколением, в Alpha 2I164 вдвое увеличилось число исполнительных устройств, а длина конвейера уменьшилась.
Четыре команды извлекаются одновременно из кэш-памяти команд объемом 8 Кбайт и помешаются в один из двух буферов команд, каждый из которых в состоянии хранить четыре команды. Команды извлекаются из буфера в порядке, определяемом программой. Буфер должен быть полностью освобожден прежде, чем начнется использование другого буфера. Это ограничивает пропускную способность выборки команд, однако значительно упрощает управление процессором.
Когда для команды готовы операнды (находятся в файле регистров или могут быть доступны на проходе между операционным устройством и регистровым файлом), команда передается на исполнение в соответствующее функциональное устройство. Для обеспечения правильного исполнения прерываний процессор не меняет порядка исполнения команд: изменение значений регистров происходит в порядке, предписанном программой.
За один такт процессор может исполнять до четырех команд: две с фиксированной точкой, две с плавающей. Устройства целочисленных операций не идентичны. Одно из них может выполнять сохранение, сдвиги и целочисленное умножение, а другое — кроме общих целочисленный команд, обрабатывает условные переходы. Устройства операций с плавающей точкой также различаются. Устройство FPU+ выполняет конвейерное сложение, простое сложение, деление и условные переходы с плавающей точкой, а устройство FPUx — конвейерное и простое умножение. Alpha 21164 имеет по 32 регистра для операций с фиксированной и плавающей точкой.
Как и в более ранних микропроцессорах Alpha, в Aplha 21164 интенсивно используется конвейеризация. Первые 4 этапа выполнения команды являются общими для всех операций и выполняются в модуле инструкций. Это предвыборка команды, переход, определение, проверка/подача команды. Устройство целочисленных операций добавляет к обработке команд еще 3 этапа (выполнение 1, выполнение 2 и обратную запись), а устройство операций с плавающей точкой еще 5 этапов (доступ к регистрам с плавающей точкой, выполнение операции с плавающей точкой 1, выполнение операции с плавающей точкой 2, выполнение операции с плавающей точкой 3 и обратную запись).
В микропроцессоре Aplha 21164, в отличие от предыдущих моделей, регистры обновляются непосредственно. Не требуется сложный механизм отслеживания команд, обеспечивающий обновление регистров в нужном порядке. Чтобы избежать потерь производительности из-за ожидания завершения команд, Aplha 21164 предусматривает обходные пути, благодаря которым операнды становятся доступными еще до завершения команды. Это аналогично методам посылки данных с упреждением, применяемым в других микропроцессорах.
Помимо раздельных кэшей первого уровня со сквозной записью (write- through), на кристалле выполнена общая множественно-ассоциативная кэшпамять второго уровня с обратной записью (write-back) емкостью 96 Кбайт. На кристалле расположен также контроллер кэш-памяти третьего уровня, позволяющий работать как в синхронном, так и в асинхронном режимах.
Для предсказания ветвлений используется таблица, связанная с кэшпамятью команд. Для каждой команды в кэш-памяти имеется элемент таблицы, содержащий историю ветвлений. В элементе таблицы используется двухбитный счетчик. Предсказание осуществляется на глубину только одного перехода. Если в потоке выполняемых предсказанных команд встречается новая команда перехода, то она не предсказывается, а процесс выполнения приостанавливается до определения истинного направления перехода для предыдущей команды ветвления.
Кэш-память первого уровня может поддерживать некоторое число необработанных промахов. Процессор имеет шестиэлементный файл адресов необработанных промахов (MAF — Miss Address File), каждый элемент которого содержит адрес и регистр для загрузки при промахе. Если адреса промаха принадлежат одной строке кэш-памяти, то в МАЕ они рассматриваются как один элемент. Это позволяет накапливать в MAF большее число промахов.
Использование иерархии кэш-памяти позволило увеличить интенсивность подкачки команд и данных из внешней памяти. Внешняя 128-разрядная шина данных процессора может работать с тактовой частотой, в 1 — 15 раз меньшей частоты ядра.
В ноябре 1995 года был выпущен микропроцессор с тактовой частотой 333 МГц. А в марте 1996 года, с переходом на технологию 0,35 мкм, были представлены микропроцессоры Alpha 21164А с тактовыми частотами 366 и 400 МГц.
Дальнейшее развитие микропроцессоров семейства характеризуется увеличением тактовой частоты (в июле 1996 года выпушен Alpha 21164 с 500 МГц, в марте 1997 года — 600 МГц), резким снижением (почти в 2 раза) цены на процессоры, а также поиском путей адаптации архитектуры Alpha для использования в Windows NT системах.
Микропроцессор Alpha 21164РС, выпущенный в марте 1997 года, был призван обеспечить проникновение микропроцессоров DEC в настольные системы, создавая тем самым конкуренцию процессорам компании Intel. Совместимость с системой команд х86 DEC обеспечивает с помощью программного транслятора двоичного кода DIGITAL FXI32. Отличиями Alpha 21164РС являются внешняя кэш-память второго уровня, увеличенная до 16 Кбайт кэш-память команд, наличие блока MVI (Motion Video Instructions), который обеспечивает кодирование/декодирование в реальном времени данных в соответствии со стандартом MPEG-2.
Микропроцессор Alpha 21164РС выпускается для частот 400, 466, 533 МГц и имеет производительность SPECint95/SPECfp95 — 11/13, 12/15 и 14/17 соответственно.
В конце 1997 года был выпушен процессор на 600 МГц, производительность которого 18,0 SPECint95 и 27,0 SPECfp95.
Микропроцессор Alpha 21264
В мае 1997 года компанией DEC был представлен микропроцессор нового поколения — Alpha 21264, который значительно превосходил по производительности предыдущих представителей семейства. При тактовой частоте 500 МГц его индексы производительности SPECint95 и SPECfp95 составляют 30 и 50 соответственно. Микропроцессор содержал 15,2 млн транзисторов на кристалле площадью 310 мм2 и изготовляется по КМОП-технологии с 6 слоями металлизации.
В отличие от предыдущих микропроцессоров семейства, наряду с высокой тактовой частотой, в Alpha 21264 использовался сложный механизм динамического исполнения команд: динамическое планирование с изменением последовательности команд, переименование регистров, спекулятивное выполнение команд.
Выполнение команды микропроцессора включает следующую последовательность циклов:
выборка команды с учетом предсказанного перехода;
передача данных для команды в устройство переименования (отображения) регистров;
выполнение переименования (отображения) регистров;
выбор команды из очередей на выполнение;
выполнение целочисленных команд или команд с плавающей точкой;
запись результатов выполнения.
Для динамического исполнения рассматриваются сразу 80 команд — больше, чем у любого другого процессора. После декодирования команда помещается в одну из очередей: к устройствам с фиксированной или с плавающей точкой. Команды, получившие все операнды, конкурируют за доступ к исполнительным устройствам. Больший приоритет имеют команды, которые дольше находятся в очереди. Одновременно может выполняться до 6 команд.
Структура микропроцессора Alpha 21264 показана на рис. 2.24.
Рис. 2.24. Структура микропроцессора Alpha 21264
Процессор содержит два блока операций с плавающей точкой, выполняющих сложение, умножение, деление, извлечение квадратного корня, а также четыре целочисленных устройства: два общего назначения и два адресных. Последние, наряду с простыми арифметическими и логическими операциями, выполняют все команды загрузки и сохранения как для целочисленных данных, так и для данных в формате с плавающей точкой. Целочисленные АЛУ общего назначения выполняют арифметические и логические операции, сдвиги и переходы. Одно из целочисленных АЛУ выполняет также умножение, а другое — мультимедийный набор команд. Для динамического переименования доступны 41 из 80 целочисленных регистров и 41 из 72 регистров с плавающей точкой.
Микропроцессор не содержит кэш-памяти второго уровня, однако размеры его кэшей данных и команд первого уровня увеличены до 64 Кбайт. На кристалле расположены также контроллер кэш-памяти второго уровня и интерфейс с системной шиной, обеспечивающие пропускную способность 5,3 Гбайт/с при обмене с кэш-памятыо и 2,6 Гбайт/с при обмене с основной памятью.
DEC планировала применять новый микропроцессор не только в UNIX- системах, но и в системах с 64-разрядной Windows NT и Windows 95 (с использованием транслятора двоичного кода DIGITAL FX132).
На рис. 2.25 показано развитие микропроцессорных семейств компаний DEC (Alpha) и Intel (Р5, Р6, Р7).
Рис. 2.25. Сравнение производительности микропроцессорных семейств компаний DEC и Intel
Микропроцессор Alpha 21364
Новый микропроцессор компании Hewlett-Packard (в 1998 году компания DEC, разработчик архитектуры микропроцессоров Alpha, была куплена Compaq, которая в свою очередь влилась в Hewlett-Packard) был выпушен в конце 2002 года.
Процессор содержит то же самое ядро, что и Alpha 21264, однако имеет ряд существенных дополнений. В отличие от предыдущего процессора, на кристалле размещена 6-входовая множественно-ассоциативная кэш-память второго уровня объемом 1,75 Мбайт, восьмиканальный контроллер динамической памяти Direct Rambus и сетевой интерфейс. Скорость обмена микропроцессора с памятью составляет 12,8 Гбайт/с. Обмен данными между кэш-памятыо первого и второго уровней, кэш-памятыо второго уровня и оперативной памятью буферизирован (по 16 буферов для каждого уровня памяти).
Упрощенная структурная схема микропроцессора приведена на рис. 2.26.
Рис. 2.26. Структурная схема микропроцессора Alpha 21364
Интеграция компонентов в одном кристалле позволяет существенно упростить и удешевить системы, реализуемые на основе данного микропроцессора. Благодаря встроенному сетевому интерфейсу упрощается объединение микропроцессоров в высокопроизводительные мультипроцессорные систе-
мы. Сетевой интерфейс поддерживает 4 линка со скоростью передачи данных 6,4 Гбайт/с каждый, обеспечивающие межпроцессорное соединения типа "точка-точка". Задержка обменных операций через линк составляет 15 нс. Сетевой интерфейс обеспечивает когерентность кэш-памяти в мультипроцессорной системе, реализует асинхронный обмен данными с адаптивной маршрутизацией.
Пример структуры мультипроцессорной системы на основе микропроцессоров Alpha 21364 представлен на рис. 2.27.
Процессор имеет также пятый порт ввода/вывода со скоростью обмена 3 Гбайт/с. Этот порт может использоваться для подключения коммутатора [90].
Рис 2.27. Структура мультипроцессорной системы на базе микропроцессоров Alpha 21364
Микропроцессор Alpha 21364 производится по технологии 0,18 мкм с 6 слоями медных соединений для тактовой частоты 1,2 ГГц. Потребление энергии микропроцессором составляет 125 Вт. На кристалле площадью 397 мм2 расположены 152 млн транзисторов (из них 138 млн — кэш-память). На тестах SPEC 2000 микропроцессор показывает производительность 804 SPECint2000 и 1253 SPECfp2000.
В дальнейших планах Compaq значился выпуск нового мультитредового микропроцессора Alpha 21464 по технологии 0,13 мкм, однако впоследствии
компания полностью переключилась на поддержку разработки IA-64 и объявила о намерении прекратить разработку и использование процессоров Alpha к 2004 году. Все работы процессорного подразделения компании предполагается свернуть в течение двух лет. Ключевые программные инструменты и процессорные технологии передадут фирме Intel. Семейства 64- разрядных Alpha- (и MIPS-) серверов Compaq будут переделаны под микропроцессоры IA-64.
Микропроцессоры с архитектурой SPARC
Семейство микропроцессоров с архитектурой SPARC включает 32-разряд- ные микропроцессоры MicroSPARC, SuperSPARC, HiperSPARC и 64-разряд- ный микропроцессор UltraSPARC. Основной областью применения SPARC- процессоров являются высокопроизводительные рабочие станции, серверы и суперкомпьютеры.
В данном разделе будут рассмотрены представители 32-разрядного семейства SuperSPARC и 64-разрядные UltraSPARC.
Архитектура SPARC
Архитектура SPARC была создана компанией Sun Microsystems в 1985 году. В ее основу были заложены результаты работ RISC I и RISC II, проводившихся в Калифорнийском университете в Беркли с 1980 по 1982 годы. В частности, в архитектуру SPARC вошла предложенная в Беркли концепция "регистровых окон", упрощающая создание однопроходных компиляторов и существенно снижающая количество команд обращения к памяти по сравнению с другими реализациями RISC-архитектуры.
Основными чертами архитектуры SPARC являются:
поддержка линейного 32-разрядного адресного пространства;
использование 32-разрядных команд фиксированной структуры с тремя базовыми форматами;
реализация доступа к памяти и ввода/вывода посредством команд загруз- ки/сохранения;
небольшое количество способов адресации. Адрес вычисляется либо как "регистр + регистр", либо как "регистр + непосредственный операнд";
использование трехадресных регистровых команд. Большая часть команд выполняется над двумя операндами, результат помещается в регистр- приемник;
большой регистровый файл с регистровыми окнами. В каждый момент времени программе доступно 8 глобальных целочисленных регистров и регистровое окно (24 регистра), отображаемое на регистровый файл. Использование регистровых окон позволяет значительно сократить накладные расходы, связанные с переключением контекста при выполнении параллельных процессов;
отдельный регистровый файл вещественных регистров. Данный файл может интерпретироваться в программах как набор из 32 регистров обычной точности (32-разрядных), или 16 регистров двойной точности (64-разрядных), или 8 регистров учетверенной точности (128-разрядных), или как смесь регистров различной разрядности;
отложенная передача управления. Процессор всегда выбирает команду, следующую за командой отложенной передачи управления. Эта команда может быть выполнена или не выполнена, в зависимости от состояния "аннулирующего" разряда в команде передачи управления;
быстрые обработчики прерываний. Генерация прерывания приводит к формированию в регистровом файле нового регистрового окна;
тегированные команды. Тегированные арифметические команды интерпретируют два младших значащих разряда операндов (теги) как информацию о типах операндов. Эти команды устанавливают бит переполнения в регистре состояния при арифметическом переполнении или в случае, когда какой-либо из теговых битов операндов не равен нулю. Есть варианты команд, которые при указанных условиях вырабатывают прерывание;
команды межпроцессорной синхронизации — одна команда выполняет непрерываемую операцию "чтения с последующей записью"; другая команда выполняет непрерываемый "обмен содержимого регистра и памяти";
поддержка сопроцессора. Архитектура определяет простой набор команд сопроцессора, который может использоваться наряду с АЛУ;
важнейшей чертой архитектуры SPARC является двоичная совместимость программ пользователей на всех реализациях SPARC: готовые программы, выполняемые в пользовательском режиме, должны вести себя совершенно одинаково на всех SPARC-системах.
Рассмотрим описание основных компонентов микропроцессорной архитектуры SPARC v8.
Процессор SPARC
Процессор SPARC |9Ц содержит: целочисленное устройство (IU — Integer Unit), устройство вычислений в формате с плавающей точкой (FPU — Floating-point unit) и (опционно) сопроцессор (СР — Coprocessor). Каждое устройство имеет собственный набор регистров. Все регистры функцио-
нальных устройств имеют фиксированную длину 32 разряда. Исключения из этого правила возможны только для сопроцессора, они определяются его конкретной реализацией. В качестве операндов при выполнении операций в общем случае используются отдельные регистры, регистровые пары и четверки регистров.
Процессор может работать попеременно в одном из двух режимов: пользовательском и привилегированном. В привилегированном режиме процессор выполняет все команды, включая привилегированные (исполняемые только в данном режиме). В пользовательском режиме попытка выполнения привилегированных команд вызывает прерывание с передачей управления специальной системной программе. Прикладные программы пользователя исполняются только в пользовательском режиме.
Устройство целочисленных операций содержит набор регистров общего назначения (r-регистров) и счетчик команд. IU выполняет операции целочисленной арифметики, вычисляет адреса памяти, а также управляет работой FPU и СР.
Конкретная аппаратная реализация целочисленного устройства может содержать от 40 до 520 32-разрядных регистров общего назначения. Регистровый файл целочисленного устройства разбит на группы из восьми глобальных r-регистров и циклического стека, содержащего от 2-х до 32-х наборов по 16 регистров в каждом (регистровых окон).
В каждый момент времени исполняемой программе доступны восемь глобальных регистров и регистровое окно размером в 24 регистра.
Регистры окна разбиты на три группы: восемь входных регистров, восемь локальных и восемь выходных регистров, которые в то же время являются входными регистрами смежного окна (т. е. соседние окна перекрываются на 8 регистров). Текущее окно задается полем указателя текущего окна в слове состояния процессора.
При обращении к памяти адрес дополняется идентификатором адресного пространства (ASI — Address Space Identifier), который содержит информацию о режиме работы процессора (пользовательский или привилегированный), а также о том, к какой памяти (команд или данных) осуществляется обращение.
Архитектура SPARC допускает возможность разделения памяти (и/или кэшпамяти) данных и команд (гарвардская архитектура). Если программа модифицирует команды, то должна быть выполнена команда сброса (FLUSH) для адресов, в которые были записаны новые команды.
Устройство вычислений в формате с плавающей точкой содержит 32 32- разрядных регистра (f-регистры) для хранения вещественных данных. Данные в формате с плавающей точкой удвоенной точности занимают пару регистров с четным и нечетным номерами. Данные учетверенной точности (128 разрядов) занимают группу из четырех смежных регистров. Таким обра-
зом, регистровый файл f-регистров может в пределе хранить 32 вещественных числа одинарной точности, либо 16 чисел двойной точности, либо 8 чисел учетверенной точности.
Для передачи данных между f-регистрами и памятью используются команды загрузки/сохранения данных в формате с плавающей точкой. Адреса памяти формируются устройством целочисленных операций.
Система команд SPARC допускает подключение одного сопроцессора. Сопроцессор имеет свой собственный набор 32-разрядных регистров, количество которых определяется конкретной реализацией. Обмен с памятью выполняется с помощью команд загрузки/сохранения сопроцессора.
Форматы данных
Архитектура SPARC поддерживает три основных типа данных:
знаковое целое — 8, 16, 32 и 64 разрядов;
беззнаковое целое — 8, 16, 32 и 64 разрядов;
вещественное — 32, 64 и 128 разрядов.
Длина форматов:
байт — 8 разрядов;
полуслово — 16 разрядов;
слово (одинарное слово) — 32 разряда;
тегированное слово — 32 разряда, из них 30 разрядов — значение и 2 разряда — теги;
двойное слово — 64 разряда;
слово учетверенной точности — 128 разрядов.
Память
В архитектуре SPARC реализована стандартная модель памяти, имеющая название Полного упорядочивания обращений (TSO — Total Store Ordering). Модель применима как к однопроцессорным, так и к многопроцессорным системам с общей памятью. Реализация данной модели дает гарантию, что все команды записи, сброса и непрерываемые команды чтения/записи на всех процессорах отрабатываются памятью сериями в том порядке, в котором они завершаются процессором. Архитектурой поддерживается также дополнительная модель памяти, называемая моделью Частичного упорядочивания обращений (PSO — Partial Store Ordering), которая в ряде случаев позволяет повысить производительность строящихся на ее основе систем. Выбор модели памяти определяется разработчиком конкретной системы.
Ввод и вывод
Архитектура SPARC позволяет подключать целый спектр устройств ввода/ вывода, устройство управления памятью и подсистемы ассоциативной памяти. Архитектура SPARC предполагает, что доступ к регистрам ввода/вывода осуществляется посредством команд чтения/записи в альтернативном адресном пространстве, обычных команд чтения/записи, команд сопроцессора или команд чтения/записи вспомогательных регистров состояния. В случае использования команд чтения/записи в альтернативном адресном пространстве обращение к регистрам ввода/вывода возможно только в привилегированном режиме. Если для доступа используются сопроцессорные команды, то возможность доступа вне привилегированного режима определяется конкретной реализацией. Содержимое и адреса регистров ввода/вывода определяются конкретной реализацией.
Обработка прерываний
Исключительная ситуация, вызванная запросом прерывания (внешнего или программного), приводит к фиксации событий. Под фиксацией события (trap) понимается векторизованная передача управления операционной системе через специальную таблицу, каждый элемент которой содержит четыре первых команды обработчика фиксируемого события. Базовый адрес таблицы устанавливается программно в регистре состояния устройства целочисленных операций (регистр базы вектора прерываний). Смещение внутри таблицы задается для каждого фиксируемого события номером типа этого события. Половина таблицы фиксации событий зарезервирована для фиксации событий, связанных с работой аппаратуры, оставшаяся половина предназначена для фиксации событий, инициируемых программно, командами генерации событий.
Перед выполнением каждой команды целочисленное устройство проверяет наличие ожидающих обработки исключительных ситуаций и запросов на прерывание. Если таковые существуют, то целочисленное устройство выбирает из них то, которое имеет наивысший приоритет, и осуществляет соответствующую ему фиксацию события.
Фиксация события вызывает переключение указателя текущего окна на следующее регистровое окно и аппаратную запись регистров номера команды (номера текущей и номера следующей команды) в два регистра нового окна. Для обработчика фиксируемого события возможен доступ к сохраненным регистрам и к шести другим локальным регистрам нового окна.
14.3. Реализация архитектуры SPARC
Являясь разработчиком микропроцессорной архитектуры SPARC, компания Sun предоставляет лицензии на производство микропроцессоров с данной архитектурой в соответствии с ее спецификацией. Производством микро-
процессоров с этой архитектурой занимаются ряд компаний — производителей микроэлектроники, к числу которых относятся Texas Instruments, Fujitsu, LSI Logic, Philips, Cypress Semiconductor и др.
Рис. 2.28. Структура микропроцессора SuperSPARC
Первый процессор SPARC был изготовлен в 1986 году компанией Fujitsu. Этот процессор работал на тактовой частоте 16,67 МГц и использовался для производства в 1987 году первой рабочей станции Sun-4, имевшей производительность 10 MIPS (Million Instructions Per Second — миллион команд в секунду).
В последующих микропроцессорных реализациях архитектуры SPARC различными производителями широко использовались принципы суперсакляр- ной обработки, уменьшение технологических норм производства кристалла, увеличивалась тактовая частота, благодаря чему удалось существенно повысить быстродействие микропроцессора.
Наиболее распространенной реализацией 32-разрядной архитектуры SPARC являлся микропроцессор SuperSPARC, произведенный компанией Texas Instruments. Он стал основой для серии рабочих станций и серверов SPARCstation/SPARCserver 10 и 20. Структура микропроцессора SuperSPARC показана на рис. 2.28.
Суперскалярный процессор имел раздельные конвейеры целочисленной и вещественной арифметики, содержал на кристалле раздельную кэш-память первого уровня (20 Кбайт — кэш-память команд и 16 Кбайт — кэш-память данных), обеспечивал выполнение до 3 команд за один такт и, при тактовой частоте 75 МГц, обладал производительностью 205 MIPS.
Архитектура UltraSPARC (V9)
С выпуском нового поколения микропроцессоров значительно улучшились возможности SPARC-систем по обработке графики и видеоизображений. UltraSPARC (92] представляет собой один из первых процессоров общего назначения, в котором эти функции реализованы аппаратно. Он имеет специальный модуль для обработки видеоданных и графики, представленной в RGB- и альфа-формате. Функции обработки видеоизображений могут работать сразу с 8 элементами изображения. Обработка изображений выполняется в блоке FPU, который обычно выполняет операции над 64-битными данными с плавающей точкой.
В систему команд микропроцессора включен набор команд (VIS — Visual Instruction Set), позволяющий загружать и обрабатывать данные в виде 64- битных блоков. VIS насчитывает 30 команд для эффективной обработки мультимедиа, графики, изображений и других алгоритмов, ориентированных на целочисленную обработку. Набор VIS содержит команды сложения, умножения и вычитания, позволяющие параллельно выполнять за один такт до 8 целочисленных операций над байтами или полусловами.
При реализации алгоритма компрессии-декомпрессии MPEG большая часть времени приходится на ту часть алгоритма, которая анализирует движение и сравнивает каждую часть текущего кадра с предыдущим. Благодаря наличию
специальных команд в UltraSPARC эти действия выполняются как одна графическая операция. Специальная подсистема памяти автоматически загружает элемент изображения в 8-байтные блоки. Для этого не требуется выполнения отдельной команды. Конвейеризация этих специальных команд позволяет микропроцессору выполнять одну операцию за такт. Использование таких специализированных команд обеспечивает 80-кратное повышение скорости выполнения обработки изображений по сравнению с другими SPARC-процессорами.
UltraSPARC имеет также несколько специальных средств, улучшающих его работу с памятью. Самым крупным изменением является новая команда перемещения блока данных по шине "процессор-память" со скоростью 600 Мбайт/с. Это позволяет основному процессору системы работать как видеопроцессор, обмениваясь данными с видеопамятью. Операции перемещения блоков памяти дают выигрыш и в других приложениях, например, в сетевом программном обеспечении.
Были выпущены следующие варианты микропроцессоров с 64-разрядной архитектурой SPARC: UltraSPARC, UltraSPARC II и UltraSPARC III.
Структура микропроцессора UltraSPARC показана на рис. 2.29.
UltraSPARC оснащен кэш-памятью данных и команд по 16 Кбайт каждая. Обе имеют собственный буфер трансляции адресов TLB (Translation Lookaside Buffer). UltraSPARC содержит встроенный контроллер кэш-памяти второго уровня. Выборка команд тесно интегрирована с кэш-памятью команд первого уровня. Команды сохраняются в кэш-памяти и для ускорения обработки предварительно декодируются. Каждые 2 инструкции в кэшпамяти ассоциируются с 2 битами, которые используются для предсказания переходов, 2 бита позволяют отслеживать 4 различных состояния, кодирующих последние 2 перехода, выполняемых по этим командам. Механизм предвыборки использует эти биты для динамического упреждения переходов. UltraSPARC способен предсказывать переход с вероятностью 0,88 на тесте SPECint92 и с вероятностью 0,94 на тесте SPECfp92.
Обрабатывающий конвейер UltraSPARC имеет 9 стадий и позволяет выполнять до 4 команд за один такт. Первые две стадии стандартные — это выборка и декодирование команд. На третьей стадии группируются все команды, которые можно передать исполнительному блоку.
Микропроцессор не изменяет порядка выполнения команд. Задача планирования загрузки исполнительных блоков решается статически, на этапе компиляции. В каждом такте могут выбираться на выполнение 2 целочисленные команды, 2 команды с плавающей точкой или графические команды, одна команда загрузки/сохранения или одна команда перехода. Таким образом, при 6 возможных командах одновременно могут выполняться лишь 4. На этой же стадии происходит получение информации из регистров.
Рис, 2,29, Структура микропроцессора UltraSPARC
После выбора команды конвейер разделяется на 3 части. Одна ветвь обрабатывает целочисленные команды и команды работы с памятью, а другая — команды с плавающей точкой и графические команды. Команды с плавающей точкой передаются в трехэтапный конвейер, который выполняет всю обработку, кроме деления с плавающей точкой и вычисления квадратного корня. Эти функции выполняет отдельный блок. Хотя микропроцессор подает команды поочередно, результаты не обязательно выдаются в том же порядке.
Базовые целочисленные команды выполняются за 1 такт. Другие, такие как целочисленное умножение и деление, могут иметь переменную длительность. На остальных стадиях целочисленного конвейера выполняется за- грузка/сохранение.
Для обеспечения высокой пропускной способности UltraSPARC использует иерархию шин. 128-разрядная шина памяти работает с тактовой частотой процессорного ядра. Для обмена с периферийными устройствами используется шина SBus. Интерфейс с этой шиной реализован на аппаратном уровне с помощью микросхемы коммутации магистрали, входящей в набор микросхем процессора. Микросхема коммутации позволяет изолировать шину памяти от шины ввода/вывода и выполнять операции чтения из памяти одновременно с вводом/выводом на периферийные устройства. В результате достигается высокий коэффициент использования шины и пропускная способность 1,3 Гбит/с.
Производительность микропроцессора UltraSPARC с частотой 167 МГц на тестах SPECint95 и SPECfp95 составляет 5,6 и 9,1 соответственно.
Как и в SuperSPARC, в UltraSPARC используется концепция регистровых окон. Вместо 32 базовых регистров эти микропроцессоры предоставляют приложениям 8 перекрывающихся регистровых окон, по 24 регистра каждое. С началом новой процедуры или ветви обработки не требуется сохранять текущее окно, новый процесс будет использовать новое окно регистров. В UltraSPARC II добавлен дополнительный механизм, благодаря которому при каждом прерывании становится доступным новое окно из 8 регистров.
Производительность микропроцессора UltraSPARC II с частотой 250 МГц составляет 8,5 SPECint 95 и 15 SPECfp 95.
UltraSPARC III [93] — представитель третьего поколения микропроцессоров компании Sun Microsystems с архитектурой V9. Данный микропроцессор предназначен для использования в широком диапазоне вычислительных систем — от рабочих станций — до высокопроизводительных серверов и суперкомпьютеров.
В отличие от предыдущих поколений микропроцессоров семейства SPARC, требующих учета их архитектурных особенностей на уровне операционной системы (ОС), данный микропроцессор совместим со всеми ОС и приложениями, созданными для SPARC-процессоров.
Как и в предыдущих поколениях микропроцессоров, в UltraSPARC III используется предсказание переходов, статическое выявление параллелизма уровня команд (ILP — Instruction Level Parallelism) на этапе компиляции и регистровые окна. Выполнение команд осуществляется в 14-этапном конвейере.
В микропроцессоре используется разнесение архитектурных и рабочих регистров. Результаты неупорядоченно выполненных операций записываются в рабочие регистры и, в случае необходимости, могут быть отменены (восстановлены из архитектурных регистров) или сохранены (переписаны в архитектурные регистры).
Архитектура микропроцессора UltraSPARC 111 показана на рис. 2.30.
Рис. 2.30. Архитектура микропроцессора UltraSPARC III
Микропроцессор содержит 6 основных функциональных блоков.
Устройство выдачи команд (IIU — Instruction Issue Unit) осуществляет предсказание переходов и выбирает команды для их последующего исполнения с учетом предсказанного пути. Выбранные команды помещаются в очередь к двум исполнительным устройствам: целочисленному и с плавающей точкой. I1U содержит 4-входовый ассоциативный кэш команд размером 32 Кбайт,
буфер трансляции адресов команд и таблицу предсказания переходов на 16 Кбайт входов.
Устройство целочисленных команд (IEU — Integer Executive Unit) выполняет все виды обработки данных целого типа: загружает и сохраняет данные, выполняет арифметические и логические операции, операции сдвига и переходы. Наличие четрых независимых путей подачи данных позволяет за один цикл выполнять до четырех целочисленных команд.
Устройство вычислений с плавающей точкой (FPU — Floating Point Unit) выполняет все команды над данными с плавающей точкой и некоторые целочисленные команды (графические из VlS-расширения системы команд SPARC). FPU может одновременно выполнять до 3 команд.
Совместно целочисленное устройство и устройство с плавающей точкой могут одновременно выполнять до 6 команд за один такт.
Устройство кэш-памяти данных (DCU — Data Cache Unit) содержит буфер трансляции адресов данных и три кэш-памяти: кэш данных первого уровня (64 Кбайт), кэш предвыборки данных (2 Кбайт) и кэш записи данных (2 Кбайт). Запросы на запись данных в основную память помещаются в очередь в DCU, а затем — в кэш записи данных.
Устройство внешней памяти управляет внешней кэш-памятью данных второго уровня и основной памятью типа SDRAM. Контроллер кэш-памяти второго уровня содержит 90 Кбайт памяти тегов внешнего кэша. Контроллер основной памяти поддерживает до 4 банков памяти общим объемом до 4 Гбайт.
Устройство системного интерфейса обеспечивает взаимодействие с внешней памятью, устройствами ввода/вывода и другими процессорами. Устройство может неупорядоченно обрабатывать до 15 ожидающих выполнения транзакций. Для использования микропроцессора в мультипроцессорных системах в UltraSPARC III предусмотрена аппаратная поддержка когерентности модулей памяти.
Благодаря многоуровневой системе кэширования и широкому интерфейсу к памяти (128 бит) скорость обмена процессор/память составляет 2,4 Гбайт/с.
и 60 SPECfp95. UltraSPARC III UltraSPARC III выпускается для тактовых частот от 600 МГц до 1 ГГц. Производительность микропроцессора с частотой 600 МГц составляет 35 SPECint95 изготовляется по технологии КМОП 0,25 мкм с 6 слоями металлизации и содержит 16 млн транзисторов (12 млн — память, 4 млн — логика) на кристалле площадью 360 мм2. Энергопотребление микропроцессора составляет около 70 Вт. В дальнейшем Sun планирует перейти на выпуск микропроцессоре! по технологии 0,18 мкм. -
Микропроцессоры с архитектурой MAJC
Микропроцессоры с архитектурой MAJC [94, 95|, разработанной компанией Sun, предназначены для использования в системах обработки мультимедийных данных и выполнения Internet-приложений.
Компания Sun возлагает большие надежды на эту архитектуру и считает, что архитектура MAJC будет определять путь развития микропроцессоров на ближайшие 20 лет, как в свое время архитектура SPARC.
Первый микропроцессор с данной архитектурой — MAJC 5200 — был выпущен в середине 2000 года. MAJC 5 200 представляет собой два 128- разрядных VLIW (Very-Long Instruction Word) микропроцессорных ядра, интегрированных на одном кристалле.
В микропроцессоре реализовано 4 уровня параллелизма:
мультипроцессорная структура кристалла;
мультитредовое выполнение программы;
VLIW-параллелизм на уровне команд;
SIMD-обработка данных.
Система команд RISC-процессоров ориентирована на поточную обработку мультимедийной информации и аппаратную поддержку высокоуровневых конструкций языка Java. Само название MAJC образовано от "Microprocessor Architecture for Java Computing" — микропроцессорная архитектура для вычислений на Java.
Архитектура MAJC является масштабируемой. На одном кристалле MAJC может располагаться несколько идентичных процессоров (в зависимости от конкретной реализации), каждый из которых содержит от 1 до 4 функциональных блоков — RISC-процессоров и кэш команд. Каждый из расположенных на кристалле процессоров может выполнять до 4 команд за один такт.
Структура микропроцессора MAJC 5200 показана на рис. 2.31.
Помимо функциональных блоков (ФБ) и кэшей команд (16 Кбайт) на кристалле расположены: общий для RISC-процессоров кэш данных (16 Кбайт), контроллер PCI, контроллер Rambus-памяти, графический препроцессор, 64-разрядные высокоскоростные интерфейсы для межпроцессорных соединений и подключения графической подсистемы, а также коммутатор, объединяющий RISC-процессоры и остальные компоненты кристалла.
Командное слово MAJC объединяет от одной до четырех 32-разрядных команд, каждая из' которых предназначена для одного из 4 RISC- процессоров. В том случае, когда не представляется возможным одновременно задействовать все 4 RISC-процессора, отдельные команды могут от-
Каждый RISC-процессор содержит файл локальных регистров, логику управления (декодирования команд) и регистры состояния. Имеются также глобальные регистры, доступные для всех RISC-процессоров.
Реализованная в микропроцессоре аппаратная поддержка мультитредового выполнения программы предусматривает возможность одновременного выполнения до 4 потоков команд.
Производительность микропроцессора MAJC с тактовой частотой 500 МГЦ составляет:
на целочисленных операциях — 7 млрд/с для 32-разрядных данных и 13 млрд/с для 16-разрядных;
на операциях с плавающей точкой — 1,5 млрд/с для одинарной точности и 6,16 млрд/с для двойной точности.
Дальнейшей модификацией этого процессора стал MAJC-5200+. Основные различия этих микропроцессоров приведены в табл. 2.18.
Таблица 2.18. Технологические характеристики микропроцессоров MAJC
Микропроцессор
MAJC-5200
MAJC-5200+
Технология производства
0,22 мкм, 6 уровней медных соединений
0,18 мкм, 7 уровней медных соединений
Тактовая частота
500 МГц
500 МГц700 МГц
Потребляемая мощность
15 Вт
10 Вт ■15 Вт
Напряжение питания
1,8 В
1,5 В
Площадь кристалла
220 мм2
130 мм2
Микропроцессоры.
с архитектурой РА
Компания Hewlett-Packard (HP) была одной из первых компаний, вышедших на рынок RISC-процессоров. Ее 32-разрядный микропроцессор РА- RISC с архитектурой Precision Architecture был выпущен еще в 1986 году. Последовательно развивая принципы RISC архитектуры, в 1996 году HP выпустила микропроцессор РА-8000, в котором в полной мере воплощены основные принципы динамического исполнения команд ("интеллектуального выполнения" — в терминах Hewlett-Packard) [96—99].
Процессор изготовлялся по технологии КМОП 0,5 мкм и имел производительность 11,8 SPECint95 и 20,2 SPECfp95 на тактовой частоте 180 МГц.
Структура микропроцессора РА-8000 показана на рис. 2.32.
Рис. 2.32. Структура микропроцессора РА-8000
РА-8000 имеет 64-разрядную четырехконвейерную архитектуру с изменением последовательности выполняемых команд. Процессор содержит 10 функциональных устройств: два целочисленных АЛУ, два целочисленных устройства сдвига/объединения, два устройства умножения/накопления (МАС — Multiplication Accumulation) с плавающей точкой, два устройства деле- ния/извлечения корня и два устройства загрузки/сохранения. Устройства умножения/накопления конвейеризированы и выполняют обработку данных с одинарной точностью за 3 такта. Операция деления не конвейеризируется и требует 17 тактов.
В РА-8000 используется буфер переупорядочивания команд (IRB — Instruction Reordering Buffer), просматривающий следующие 56 команд в потоке инструкций и определяющий, какие из них можно выполнять параллельно. Фактически IRB состоит из двух блоков на 28 команд каждый. Блок АЛУ содержит команды для устройства целочисленной арифметики, а другой — блок используется для команд устройства операций с плавающей точкой и команд загрузки/сохранения.
Команда, помещенная в IRB, ожидает готовности данных, являющихся результатом предыдущих команд, и выбирается на выполнение (в порядке очередности) как только все требуемые данные получены и необходимое исполнительное устройство освободилось. Каждый из блоков 1RB позволяет планировать выдачу двух команд за такт (итого до четырех команд за такт). Для устранения зависимостей между командами по данным используется переименование регистров.
В микропроцессоре реализован алгоритм предсказания переходов, основанный на мажоритарном принципе опенки предыстории для каждой точки ветвления. Для предсказания используется таблица истории ветвлений ВНТ (Branch History Table), содержащая до 256 3-битных записей, по одной для каждой точки ветвления. Вероятность правильного предсказания составляет 0,8.
Hewlett-Packard спроектировала РА-8000 специально для научных и инженерных расчетов, размер интенсивно используемых данных в которых может быть велик. В этой связи возникает необходимость использования больших объемов кэш-памяти команд и данных. РА-8000 использует внешние основные типы кэш-памяти данных и команд объемом до 4 Мбайт, а также буфер переупорядочивания адресов (ARB — Address Reordering Buffer), отслеживающий все команды загрузки/сохранения, что позволяет сократить задержку, связанную с адресацией внешней кэш-памяти. Более медленный доступ к данным во внешнем кэше для РА-8000 компенсируется его большим объемом и эффективным управлением обменом с кэш-памятью (используются высокоскоростные линии управления кэшем и предвыборки команд и данных из основной памяти в кэш-память).
Разработка следующего микропроцессора семейства — РА-8200 — преследовала цель повышения производительности при внесении минимальных конструктивных изменений. К числу основных отличий относятся:
увеличение таблицы ВНТ с 256 до 1024 битовых записей и учет наличия нескольких ветвей вычисления в одном цикле позволили повысить точность предсказания переходов;
увеличение размера TLB с 96 до 120 элементов позволило снизить частоту промахов при обращении к кэш-памяти;
увеличение частоты работы микропроцессора до 220 МГц;
увеличение максимального размера кэш-памяти команд и данных до 2 Мбайт;
использование технологии производства КМОП 0,35 мкм.
Все внесенные изменения не отразились на электрической и программной совместимости с предыдущими микропроцессорами семейства. Производительность же микропроцессора составила 15.5 SPECint95 и 25 SPECfp95, что на 35% превышает производительность РА-8000.
Устранить недостаток, связанный с удорожанием системы при использовании внешней основной кэш-памяти, Hewlett-Packard удалось в новом микропроцессоре РА-8500, производимом по технологии 0,25 мкм. Высокая плотность упаковки позволила разместить на кристалле кэш-память первого уровня размером 1 Мбайт для данных и 0,5 Мбайт для команд. РА-8500 содержит 140 млн транзисторов и имеет производительность 26,0 SPECint95, 28,1 SPECfp95 на частоте 360 МГц. Были выпушены также версии микропроцессора для тактовых частот 360. 440 и 500 МГц.
Следующим микропроцессором семейства стал РА-8600, представленный HP в конце 1999 гола. Этот микропроцессор является модернизированной версией РА-8500. В микропроцессоре использованы новые алгоритмы работы с кэш-памятью (алгоритм замещения квази-LRU (Least Recently Used Removal — удаляются долго не используемые страницы памяти)). Для повышения надежности кэш-память реализована с механизмом обнаружения и исправления ошибок. Улучшен алгоритм предсказания переходов. Супер- скалярнос устройство вычислений в формате с плавающей точкой позволяет за один такт получать до 4 результатов, что обеспечивает производительность микропроцессора 2,2 Gflops на тактовой частоте 550 МГц.
В марте 2000 года был выпущен очередной микропроцессор семейства — РА-8700. Новый микропроцессор изготавливается по 0,18-микронной КМОП-технологии "кремний на изоляторе" (SOI — Silicon on Insulator) с семислойными медными соединениями, что позволило разместить на кристалле 2,25 Мбайт кэш-памяти первого уровня (кэш данных — 1,5 Мбайт, кэш команд — 750 Кбайт), использовать пониженное напряжение питания и
повысить тактовую частоту до 800 МГц и выше. Производительность микропроцессора составила 3,2 млрд операций в секунду.
РА-8700 имеет 10 исполнительных устройств (2 устройства загрузки/сохра- нения: 2 АЛУ, 2 устройства сдвига; устройства с плавающей точкой, 2 устройства умножения/сложения, 2 устройства деления/извлечения квадратного корня).
Использование 44-разрядной адресации (вместо 40-разрядной в предыдущих моделях), позволяет процессору работать с физической памятью объемом до 16 Тбайт.
Последняя на сегодняшний день разработка компании HP — микропроцессор РА-8800 (кодовое название Мако) — представляет собой двухпроцессорную систему на основе модифицированного ядра РА-8700, выполненную на одном кристалле и размещенную в одном картридже с кэш-памятыо второго уровня объемом 32 Мбайт.
На кристалле площадью 366 мм2 размещается 300 млн транзисторов, 25 млн из которых задействовано под логику, а остальные используются для реализации кэш-памяти.
Системная шина Мако такая же, как в процессоре Intel McKinley: ширина 128 бит, частота 400 МГц, пропускная способность 6,4 Гбайт/с. Процессор производится по 0,13 мкм технологии, с медными соединениями, изолятором с низкой диэлектрической постоянной и изолированной подложкой (SOI).
Производительность микропроцессора на тактовой частоте I ГГц составляет 900 SPECint2000 и 1000 SPECfp2000 на частоте I ГГц.
В дальнейших планах HP предусматривается выпуск еще одного микропроцессора РА-8900, рассчитанного на тактовую частоту 1,2—1,3 ГГц, и совместная с Intel работа над микропроцессорами с архитектурой IA-64.
Микропроцессоры с архитектурой Power и PowerPC
Архитектура Power разрабатывается компанией IBM с конца 1980-х годов. В ее основе лежат принципы RISC-архитектуры: фиксированный формат команд, регистровые операции, однотактовое выполнение команд, простые способы адресации, большой регистровый файл. В то же время, имеется несколько существенных особенностей, отличающих данную архитектуру от архитектур других RISC-процессоров. К ним относятся: независимый набор регистров для каждого из исполнительных устройств; включение в систему команд отдельных CISC-подобных инструкций (например, команды групповой загрузки/сохранения, команды манипуляции битовыми полями, смешанные команды умножения-сложения с плавающей точкой); отсутствие
механизма "задержанных переходов" (т. е. опережающее выполнение команды, следующей за командой условного перехода); оригинальный способ реализации условных переходов (наличие разряда условного выполнения в коде операции каждой команды и нескольких регистров условий).
Основной областью применения микропроцессоров с архитектурой Power являются высокопроизводительные серверы и суперкомпьютеры. Стремление разработчиков применить созданную архитектуру и в менее производительных, дешевых системах привело к появлению варианта архитектуры Power для персональных компьютеров и рабочих станций начального уровня. Эта архитектура получила название PowerPC [100].
Первый микропроцессор с данной архитектурой (PowerPC 601) появился в 1991 году в результате совместных усилий трех компаний: автора архитектуры Power — IBM, одного из лидеров в производстве персональных компьютеров — Apple и производителя микропроцессоров для компьютеров Apple — Motorola.
В настоящее время архитектура PowerPC используется в микропроцессорах IBM и Motorola, применяемых в контроллерах, телекоммуникационном оборудовании, персональных компьютерах, серверах и рабочих станциях. В то же время, IBM продолжает самостоятельно разрабатывать микропроцессоры с архитектурой Power, ориентированные на использование в высокопроизводительных мультипроцессорных системах.
В последних разработках Motorola и IBM новые архитектурные решения сочетаются с прогрессивной технологией производства микросхем (медные соединения, SOI), позволяющей уменьшить размер кристалла, снизить энергопотребление и поднять тактовую частоту микропроцессоров. К наиболее интересным разработкам последнего времени относятся микропроцессоры PowerPC, G3, G4, G5, PowerPC 970, Power 3, Power 4. Заслуживает также подробного рассмотрения технология обработки мультимедийных данных AlliVec, предложенная компанией Motorola.
Микропроцессор PowerPC 620
В 1995 году была анонсирована первая 64-разрядная реализация архитектуры PowerPC — микропроцессор PowerPC 620 [101J. Если предыдущие версии микропроцессоров PowerPC были ориентированы на персональные компьютеры, то PowerPC 620 предназначался для рабочих станций и высокопроизводительных серверов.
При производстве процессора использовалась технология КМОП 0,5 мкм с 4 слоями металлизации. На кристалле площадью 311 мм2 размещается 7 млн транзисторов. PowerPC 620 имеет рабочее напряжение 3,3 В и потребляет не более 30 Вт.
Структура микропроцессора показана на рис. 2.33.
Рис. 2.33. Структура микропроцессора PowerPC 620
PowerPC 620 имеет четырехконвейерную суперскалярную архитектуру с шестью исполнительными блоками: 3 целочисленных АЛУ, блоком операций с плавающей точкой, блоком загрузки/сохрансния и блоком переходов. За один такт процессор может выполнять до 4 команд.
Для обеспечения эффективной загрузки исполнительных блоков в процессоре применяется динамическое предсказание переходов совместно со спекулятивным выполнением команд на глубину до четырех предсказанных ветвлений. Для предсказания переходов используется таблица предыстории переходов ВНТ (Brahch History Table), в которой регистрируется результат выполнения каждой команды ветвления. Команды и адреса переходов кэшируются в кэш-памяти ВТАС (Branch-Target Address Cache). Вероятность правильного предсказания переходов составляет 0,9.
В PowerPC 620 используется гарвардская архитектура с раздельной кэшпамятью команд и данных, емкостью по 32 Кбайт. Каждый кэш имеет собственный блок управления памятью (MMU — Memory Management Unit) и функционирует независимо от другого.
На кристалле процессора размещены схемы управления внешней кэшпамятью второго уровня. Внешняя кэш-память может иметь объем до 128 Мбайт и работать с тактовой частотой процессора, с 1/2 или с 1/4 этой частоты, что дает возможность гибкого выбора конфигурации памяти системы. Кэш данных реализует режим сквозной и обратной записи и протокол MES1 (Modified, Exclusive, Shared, Invalid), обеспечивающий синхронизацию кэшей в мультипроцессорных системах.
Перед тем как попасть во внутреннюю кэш-память, команды проходят этап предварительного декодирования, необходимый для учета зависимостей между командами при планировании их выполнения. Преддекодированные команды хранятся в кэше команд до их выборки блоком планирования/ выполнения. Окончательное декодирование команд объединяется с этапом планирования загрузки конвейеров микропроцессора, что позволяет сократить число этапов конвейера до 5 (выборка, декодированис/планирование, выполнение, завершение и запись).
Процессор совместим по коду с более ранними версиями PowerPC, что позволяло наряду с новыми специально разработанными 64-разрядными программами выполнять на нем 32-разрядные программы PowerPC. Процессор может работать в 32- или 64-разрядном режиме, переключение между режимами осуществляется программно. Уникальной особенностью микропроцессоров PowerPC является также программное переключение режимов адресации (Intel/Motorola). Это позволяет рабочей станции на базе PowerPC 620 выполнять код приложений разных операционных систем, обеспечивая при этом высокую производительность. '
На тактовой частоте 133 МГц производительность микропроцессора составляла 225 SPECint92 и 300 SPECfp92.
Технология AltiVec
В настоящее время многие производители расширяют функциональные возможности выпускаемых ими микропроцессоров за счет введения специализированных блоков, например, для ускорения мультимедийных приложений. Такие блоки имеют микропроцессоры фирмы Intel (MMX, SSE), AMD (3DNowI), Sun (VIS), DEC (MVI).
Компания Motorola анонсировала технологию AltiVec |23, 102] для ускорения обработки мультимедийных данных в микропроцессорах с архитектурой PowerPC. Технология предусматривает расширение архитектуры PowerPC путем добавления 128-разрядного блока векторной обработки, функционирующего параллельно с уже имеющимися блоками обработки целочисленных и вещественных данных.
Структура PowerPC с блоком векторной обработки показана на рис. 2.34.
Устройство переходов
Команда Команда КомандаКоманда Команда КомандаУстройство векторных операцийУстройство векторных операцийУстройство целочисленных операцийУстройство целочисленных операцийУстройство операций с плавающей точкойУстройство операций с плавающей точкой
Команда Команда Команда
Команда Команда Команда
Устройство векторных операций
Устройство векторных операций
Устройство целочисленных операций
Устройство целочисленных операций
Устройство операций с плавающей точкой
Устройство операций с плавающей точкой
Регистры общегоназначенияРегистры общегоназначенияРегистры сплавающей точкойРегистры сплавающей точкойВекторныерегистрыВекторныерегистры
Регистры общегоназначения
Регистры общегоназначения
Регистры сплавающей точкой
Регистры сплавающей точкой
Векторныерегистры
Векторныерегистры
Команда Адрес командыКоманда Адрес командыАдрес Данные данныхАдрес Данные данныхДанныеДанныеДанныеДанные
Команда Адрес команды
Команда Адрес команды
Адрес Данные данных
Адрес Данные данных
Данные
Данные
Данные
Данные
Память
Рис. 2.34. Структура микропроцессора PowerPCс блоком векторной обработки
AltiVec-технология предусматривает параллельную SIMD-обработку векторов длиной 4, 8 или 16 элементов.
Блок векторной обработки позволяет выполнять до 16 операций за один такт. При общей разрядности векторного блока 128 возможна обработка за один такт:
16-ти 8-битных знаковых и беззнаковых целых и'символов;
8-ми 16-битных знаковых и беззнаковых целых;
О 4-х 32-битных знаковых и беззнаковых целых и чисел с плавающей запятой.
AltiVec-технология предусматривает для блока векторной обработки выделенный регистровый файл из 32-х 128-битных регистров. Эти регистры используются для хранения исходных данных и результатов обработки в векторном блоке. Операции по загрузке этих регистров и сохранению в памяти их содержимого выполняются специальными векторными командами.
Команды AltiVec векторного блока могут содержать до трех входных операндов и один выходной. Каждый операнд является одним из 128-разрядных регистров векторного блока. Имеются также команды формата "память- регистр" и "регистр-непосредственный операнд". Общее число команд векторного блока = 162. Команды разбиты на несколько классов.
Локальные операции
Локальные операции выполняются параллельно и независимо над данными регистров-источников и помещаются в соответствующие поля регистра результата (рис. 2.35) (представлены 3 операнда-источника vA, vB, vC и операнд-результат vT; выполняется 16 операций над 8-разрядными векторами).
Рис. 2.35. Выполнение локальных операций
Определены операции со знаковыми и беззнаковыми числами по соответствующему модулю. Операции: сложение, вычитание, умножение, умножение с накоплением, min, max, среднее, преобразование форматов представления чисел с фиксированной и плавающей точкой. Кроме того, выполняются логические операции AND, OJR, NOT, XOR, AND—NOT, операции сравне-
ния, сдвигов и циклических сдвигов вправо и влево. Имеется также команда выбора (мультиплексирования), пересылающая данные одного из двух регистров источников в регистр результата. Последовательность команд сравнения и выбора позволяет, в том числе, эффективно маскировать и заменять данные в 128-битных полях.
Глобальные операции
Глобальные операции позволяют провести суммирование произведений компонентов векторов и суммирование компонентов одного вектора (рис. 2.36). В частности, с помощью этих операций можно вычислять скалярное произведение векторов.
Рис. 2.36. Выполнение глобальных операций
Кроме того, с помощью глобальных операций можно производить сдвиги векторов, упаковку и распаковку, слияние и другие операции, характерные для сжатия и преобразования сигналов и изображений.
Имеется также команда перестановки, позволяющая выбрать байты из двух 16-байтных регистров-источников в 16-байтный регистр результата, как показано на рис. 2.37.
Такие перестановки, примененные для распаковки-упаковки 8- и 16-битных элементов данных, могут дать значительный выигрыш при хранении в памяти упакованных элементов, распаковки их перед вычислениями и упаковки после вычислений.
Глобальные команды позволяют также работать со 128-битными данными.
Рис. 2.37. Выполнение команды перестановки
Микропроцессор PowerPC 750/740 (G3)
32-разрядные микропроцессоры PowerPC 750 и PowerPC 740 [103| выпускаются компаниями IBM и Motorola для использования в мобильных и настольных системах (PowerPC 750) и во встроенном режиме, в коммуникационном оборудовании (PowerPC 740).
Оба микропроцессора программно и по выводам совместимы с PowerPC 603 и PowerPC 604. Главное различие микропроцессоров PowerPC 750 и 740 заключается в наличии у первого встроенного интерфейса и внутренней теговой памяти кэш-памяти второго уровня. Кэш-память первого уровня — раздельная, 8-входовая, множественно-ассоциативная, размером 32 Кбайт каждая.
Микропроцессоры способны запускать на выполнение до 3 команд за один такт в 6 независимых исполнительных устройствах: двух целочисленных устройствах, устройстве с плавающей точкой, устройстве переходов, устройстве загрузки/сохранения и устройстве системных регистров.
В микропроцессорах особое внимание уделено снижению энергопотребления. Для исполнительных устройств предусмотрено раздельное управление питанием. Микропроцессоры выпускаются для напряжения питания 2,6 или 1,9 В. При производстве микропроцессоров используется медная технология CMOS 7S 0,22 мкм.
PowerPC 750 выпускается с тактовыми частотами 200, 233, 266, 275, 300, 333, 350, 366 и 400 МГц, микропроцессор PowerPC 750 — с тактовыми частотами 200, 233, 266, 300 МГц. Объем внешней кэш-памяти второго уровня может
составлять 256 Кбайт, 512 Кбайт или 1 Мбайт. Внешняя кэш-память работает на половине тактовой частоты микропроцессора.
Микропроцессор PowerPC 750 содержит на кристалле 6,35 млн транзисторов и потребляет 4,1 Вт при тактовой частоте 400 МГц. Производительность на этой частоте составляет 18,8 SPECint95, 12,2 SPECfp95. Производительность Микропроцессора PowerPC 740 на частоте 300 МГц составляет 13,5 SPECint95, 9,0 SPECfp95.
Микропроцессор PowerPC G4
Дальнейшим развитием линии микропроцессоров PowerPC стал чип G4 |104|. Этот микропроцессор использует базовую архитектуру G3 и содержит ряд существенных дополнений.
G4 — первый микропроцессор, использующий предложенную компанией Motorola технологию AltiVec, позволяющую ускорить обработку графики и существенно повысить производительность микропроцессора на задачах цифровой обработки сигналов.
Другим дополнением является возможность объединения в кластер до 4 микропроцессоров, причем каждый из микропроцессоров может иметь доступ к кэш-памяти любого другого микропроцессора.
Микропроцессор может работать с кэш-памятыо второго уровня объемом от 512 Кбайт до 2 Мбайт. G4 содержит 10,5 млн транзисторов на кристалле 82 мм2 и потребляет 8 Вт при напряжении питания 1,8 В.
Первые микропроцессоры выпускались с использованием медной технологии 0,2 мкм для частоты 400 МГц. В дальнейшем при переходе на технологию 0,18 мкм тактовая частота была повышена до 1000 МГц.
Производительность G4 на частоте 400 МГц составляет 21,4 SPECint95 и 19,5 SPECfp.
По выводам и питанию данный микропроцессор несовместим с предыдущим поколением, что потребует использования новых материнских плат.
Микропроцессор G5 компании IBM
Микропроцессор G5 [105] компании IBM представляет собой CISC- процессор, совместимый по системе команд с архитектурой ESA/390, IBM S/360, S/370, развиваемой IBM начиная с 1964 года.
Микропроцессор G5 производится по 0,25 мкм КМОП технологии с 6 слоями металлизации для тактовых частот 385, 417, 500 МГц. При напряжении питания 1,9 В потребляемая G5 мощность составляет 25 Вт.
Конструктивно микропроцессор выполнен на одном модуле с кэш-памятью ■ второго уровня, работающей на половине тактовой частоты ядра, системой
9 Зак. 1086
воздушного охлаждения и некоторыми дополнительными микросхемами. В корпусе микропроцессора площадью 214,6 мм2 содержится 25 млн транзисторов (7 млн — логические схемы, 13 млн — кэш-память первого уровня и 5 млн — дополнительные функциональные блоки).
Микропроцессор G5 содержит на кристалле 4-входовую множественноассоциативную кэш-память первого уровня размером 256 Кбайт. Скорость обмена между кэш-памятью первого и второго уровня составляет 4 Гбайт/с. 2048-позиционный ассоциативный ВТВ процессора использует 2-битный алгоритм предсказания переходов.
Как и в системах с архитектурой ESA/390, в основе реализации системы команд G5 лежит концепция микрокода (в G5 используется название милликод), которая представляет собой совокупность встроенных микропрограмм, вызываемых для выполнения высокоуровневых CISC-команд микропроцессора.
Большинство команд микропроцессора имеют формат RX (операнды находятся в регистре и в памяти), что эквивалентно выполнению двух регистровых команд. Оптимизация 10-стадийного исполнительного конвейера микропроцессора позволила добиться выполнения большинства команд за один такт.
В отличие от архитектуры ESA/390, в G5 используется IEEE-754-совмести- мый блок вычислений с плавающей точкой (архитектура ESA/390 предусматривала иной стандарт представления данных (HEP — Hexadecimal Floating Point), который также поддерживается G5). Микропроцессор содержит средства интеграции в симметричную мультипроцессорную систему (до 12 микропроцессоров). В приложениях, требующих высокой отказоустойчивости, микропроцессоры могут использоваться в спаренном режиме, "прозрачном" для пользователя системы. В микропроцессоре обеспечивается аппаратный контроль четности, проверки состояния логических схем и служебных массивов.
В G5 реализована аппаратная поддержка эмуляции двух уровневой виртуальной машины, позволяющей одновременно выполнять несколько операционных систем.
Благодаря высокой тактовой частоте и тщательной проработке микрокода данный микропроцессор почти в 2 раза превосходит по производительности микропроцессор G4.
Область использования микропроцессора — мейнфреймы.
Микропроцессор Power 3
64-разрядный микропроцессор Power 3 [106] разрабатывался компанией IBM как альтернатива высокопроизводительным процессорам Intel и Alpha и предназначался для использования в высокопроизводительных серверах и
рабочих станциях. Наличие средств поддержки мультипроцессорного режима позволяет использовать этот микропроцессор в SMP-системах.
Power 3 — суперскалярный микропроцессор с внеочередным спекулятивным выполнением команд. За один такт Power 3 способен выполнять до 8 команд: 2 команды загрузки/сохранения, 2 команды с плавающей точкой, 2 короткие целочисленные команды, I длинную целочисленную команду и 1 команду перехода.
Структура микропроцессора показана на рис. 2.38.
Рис. 2.38. Структура микропроцессора Power 3
Power 3 содержит 7 исполнительных устройств: 2 с плавающей точкой (FPU), 3 с фиксированной точкой (FXU), 2 устройства записи/сохранения (L/St).
В процессоре содержится раздельная кэш-память первого уровня: кэш- данных — 64 Кбайт и кэш-команд — 32 Кбайт. Кэши данных и команд являются 128-входовыми, множественно-ассоциативными, неблокирующими. Power 3 может использовать кэш-память второго уровня емкостью от 1 до 16 Мбайт, которая подключается к выделенной 256-разрядной шине, работающей на частоте 200 МГц. Скорость обмена с кэш-памятью второго уровня составляет 6,4 Гбайт/с. Обмен с основной памятью осуществляется по 128-разрядной системной шине, работающей на тактовой частоте 100 МГц. Скорость обмена составляет 1,6 Гбайт/с.
Особенностью процессора является минимальное время запуска команд на выполнение в конвейере — всего 3 такта, что снижает задержки в конвейере в случае неправильно предсказанного перехода.
Микропроцессор содержит 15 млн транзисторов на кристалле 270 мм2 и производится по технологии 0,25 мкм с тактовой частотой 200 МГц. В перспективе IBM планирует выпуск микропроцессора по медной 0,2 мкм технологии с последующим переходом на 0,18 мкм и повышением тактовой частоты до 500—600 МГц.
Производительность Power 3 на частоте 200 МГц составляет 13,2 SPECint95 и 30,1 SPECfp95, на частоте 600 МГц - 30 SPECint95 и 70 SPECfp95.
Микропроцессор Power 4
Выпущенный в 2001 году компанией IBM 64-разрядный микропроцессор Power 4 [107] представляет собой 2-процессорную систему, выполненную на одном кристалле (рис. 2.39). Power 4 содержит также большую внутрикристальную кэш-память, высокоскоростной порт внешней памяти и линки для объединения микропроцессоров в DSM (Distributed Shared Memory) системы.
Рис. 2.39. Архитектура Power 4
Наряду с параллелизмом уровня команд (1LP), процессор использует параллелизм уровня нитей — тредов (TLP — Thread Level Parallelism). Динамическое выявление параллелизма позволяет повысить использование ресурсов процессора за счет предотвращения простоев функциональных блоков процессора, связанных с промахами при обращении в кэш-память или с неустранимой зависимостью между командами по данным.
Каждый из расположенных на кристалле процессоров является суперскалярным, с неупорядоченным и спекулятивным выполнением команд. Одновременно могут выбираться до 8 команд, рассматриваться для выполнения более 200 команд и выполняться до 8 команд в 8 функциональных блоках. К функциональным блокам процессора относятся: 2 блока операций с плавающей точкой (FP), 2 блока операций с фиксированной точкой (FX), 2 блока загрузки/сохранения (LD/ST), 1 блок переходов (BR) и 1 блок логических операций (CR). В среднем, в каждом из процессоров за один такт выполняется 5 команд.
На рис. 2.40 показан исполнительный конвейер процессора.
Рис. 2.40. Исполнительный конвейер процессора Power 4
Стадии IF (выборка команды), IC (помещение команды в кэш-память), ВР (предсказание перехода) соответствуют загрузке очередной команды. Стадии с DO до GD соответствуют декодированию и группировке команд (по очередям к функциональным устройствам). На стадии МР выявляются зависимости между командами, назначаются ресурсы и команды ставятся в очередь к соответствующим функциональным устройствам. Дальнейшая обработка ведется в 4 независимо функционирующих конвейерах.
Стадии с ISS до WB соответствуют этапам выполнения команд, начиная с извлечения команды из очереди и до записи результата в регистровый файл. На стадиях Xfer и СР осуществляется проверка завершения выполнения всех предыдущих команд (в соответствии с их порядком в программе) и выдача результата.
Процессоры содержат раздельные кэши команд и данных первого уровня объемом по 64 Кбайт каждый. На кристалле расположена разделяемая процессорами внутрикристальная кэш-память второго уровня (8-входовая, множественно-ассоциативная, объемом 1,5 Мбайт), контроллер и память тегов внешней кэш-памяти третьего уровня.
Для подключения кэш-памяти третьего уровня объемом до 32 Мбайт имеется двунаправленный порт разрядностью 16 байт, функционирующий на частоте 1/3 от тактовой частоты процессора, что обеспечивает пропускную способность 10 Гбайт/с.
Для образования мультипроцессорных конфигураций имеются 3 линка с суммарной пропускной способностью 35 Гбайт/с. На рис. 2.41 показана 4процессорная система на основе Power 4.
Рис. 2.41. 4-процессорный кластер на базе Power 4
Микропроцессор имеет систему команд IBM ISA, реализованную в RS/6000 и AS/400 и полностью совместимую с системой команд PowerPC.
Power 4 изготавливается для тактовых частот 1,1, 1,3 ГГц по 0,18 мкм технологии SOI "кремний на изоляторе" с 5-слойными медными соединениями. На кристалле площадью 400 мм2 содержится 170 млн транзисторов.
Производительность систем на базе Power4 составляет 140 Gflops.
В конце 2001 года компания IBM представила новый 64-разрядный микропроцессор PowerPC 970, ориентированный на использование в компьютерах Apple.
PowerPC 970 — это упрощенная версия серверного процессора Power 4. Процессор может работать как с 32-разрядными, так и с 64-разрядными приложениями и имеет специальный набор инструкций для эффективной обработки графики.
Производительность процессора при тактовой частоте 1,8 ГГц составляет 7,2 млрд операций в секунду.
Микропроцессоры компании MIPS (Silicon Graphics)
Область применения микропроцессоров с архитектурой MIPS велика: от игровых приставок и карманных компьютеров до высокопроизводительных серверов и рабочих станций.
Микропроцессоры MIPS являются хорошей иллюстрацией воплощения концепции "Brainiac" в архитектуре процессора.
Разработанный компанией MIPS Technology Inc. 64-разрядный микропроцессор R10000 |108, 109], построен на базе предыдущих поколений RISC- процессоров (R2000, R3000, R4000 и R5000)
В основе этого микропроцессора лежит суперскалярная RISC-технология пятого поколения, реализованная ранее в ориентированном на суперЭВМ процессоре R8000. Однако, в отличие от многокристального R8000, оптимизированного для высокопроизводительных научных расчетов, R10000 представляет собой однокристальный процессор общего назначения для настольных ПК, рабочих станций и серверов. Он обеспечивает лучший, чем в R8000, баланс между целочисленными операциями и операциями с плавающей точкой, что делает его более подходящим для широкого класса приложений. R10000 проектировался так, чтобы его можно было с равным успехом применять в бытовых ПК с Windows NT, на рабочих станциях с UNIX или в многопроцессорных серверах баз данных.
Производительность процессора с тактовой частотой 200 МГц составляет 10,7 SPECint95 и 19,0 SPECfp95. Процессор содержит более 6,8 млн транзисторов на кристалле площадью 298 мм2, из которых 4,4 млн транзисторов приходится на кэш-память первого уровня. При изготовлении процессора
используется технология КМОП 0,35 мкм с 4 слоями металлизации. Процессор рассчитан на напряжение 3,3 В и потребляет 20—30 Вт. Внутренняя тактовая частота этого процессора программируется на 200, 133, 100, 80, 67, 57 или 50 МГц.
Структура микропроцессора показана на рис. 2.42.
Рис. 2.42. Структура микропроцессора R10000
Основными особенностями архитектуры процессора R10000 являются высокая степень параллельности выполнения микроопераций, эффективное
предсказание переходов и планирование загрузки функциональных модулей. R10000 имеет 5 функциональных блоков: 2 блока операций с плавающей точкой, 2 блока целочисленных операций и 1 блок загрузки/хранения.
Схема предсказания переходов использует 512-входовую таблицу предыстории переходов. Вероятность правильного предсказания на SPEC92 составляет 0,87. В момент выполнения предсказанного перехода процессор сохраняет свое состояние в 4-позиционном стеке переходов. В него заносится альтернативный адрес перехода, полная копия таблиц отображения регистров с плавающей и фиксированной точкой и различные управляющие биты. Эта информация требуется для восстановления в случае неправильного предсказания перехода. При заполнении стека декодирование команд производится до новой команды перехода, после чего ожидается освобождение позиции в стеке. При неправильно предсказанном переходе отменяются все команды, выбранные после неправильно предсказанного перехода. Эти команды идентифицируются с помощью 4-битной маски, связанной с конкретной позицией стека.
На этапе предвыборки команд в кэш-памяти первого уровня осуществляется загрузка четырех 32-разрядных команд и их предварительное декодирование. Каждая команда снабжается в кэше L1 дополнительным 4-битным тегом, который необходим для дальнейшего декодирования и классификации команды. Для команд перехода осуществляется вычисление результирующего адреса.
На втором этапе декодирования устраняются (если это возможно) зависимости между командами по данным. С этой целью используется механизм переименования регистров. Зависимости по памяти устанавливаются по содержимому очереди обращений к памяти. Независимые команды могут выполняться в порядке, отличном от первоначального, задаваемого программой. Все результаты выполнения команд, полученные вне очереди, являются временными и могут быть отменены в случае неправильно предсказанного перехода. R10000 имеет 64 целочисленных регистра и 64 регистра с плавающей точкой, динамически отображаемые в 33 целочисленных регистра и 32 регистра с плавающей точкой.
После декодирования команды разделяются на три 16-позиционные очереди, в которых ожидают готовности операндов и функциональных блоков: целочисленных АЛУ, блоков выполнения операций с плавающей точкой и блока загрузки/записи. Очереди обслуживаются в порядке освобождения функциональных блоков процессора. Команда выполняется в одном из 5 конвейеров процессора, связанном с функциональным блоком. Функциональные блоки выполнения операций с фиксированной и плавающей точкой независимы, имеют раздельные регистровые файлы и пути передачи данных. Длина целочисленного конвейера — 1 такт, конвейера блока за- грузки/сохранения — 2, блока операций с плавающей точкой — 3. При по-
тенциальной способности выполнять 5 команд за такт R10000 допускает выборку только четырех, оставляя "пространство для маневра" при планировании загрузки функциональных блоков. Это позволяет R10000 в большинстве случаев выполнять четыре команды за такт. Благодаря чему за один такт можно получить до 4 результатов.
Каждое из целочисленных АЛУ может выполнять сложение и логические операции. В то же время один из АЛУ выполняет операции сдвига и предсказывает переходы, а другой — целочисленные операции умножения и деления. Один из двух блоков операций с плавающей точкой с удвоенной точностью выполняет сложение, а другой — функции умножения/деления и извлечения квадратного корня (последняя операция разбивается на две подоперации, выполняемые параллельно).
R10000 содержит высокоскоростной (до 1,6 Гбайт/с) внутрикристальный интерфейс "процессор-шина", позволяющий объединять в многопроцессорной конфигурации до четырех процессоров без использования дополнительных интерфейсных схем.
Следующий микропроцессор — R12000 — по архитектуре немногим отличается от R10000:
в R12000 в 4 раза возросла емкость таблицы предсказания переходов — до 2048 строк;
появилась кэш-память адресов перехода емкостью 32 строки;
с 32 до 48 увеличено максимальное число инструкций, которые могут выполняться с нарушением порядка следования;
улучшена работа с кэш-памятью второго уровня;
увеличены длины конвейеров.
Внутренняя структура микропроцессора R12000 показана на рис. 2.43.
R12000 работает на тактовых частотах 300 и 400 МГц. Значения производительности для тестов SPECint и SPECfp 95 и 2000 показаны в табл. 2.19.
Таблица 2.19. Производительность микропроцессора R12000
Микропро- Частота, SPEC int95 SPEC fp95 SPEC int95 SPEC fp95 цессорМГц
R1200040023,837,1320319
В 2001 году Silicon Graphics (SG) выпустила очередной микропроцессор семейства — R14000. Этот микропроцессор производится по 0,13-микронной медной технологии и работает на частоте 500 МГц. Существенных изменений по сравнению с R12000 архитектура микропроцессора не претерпела.
Рис. 2.43. Структура микропроцессора R12000
В ближайших планах SG — выпуск R16000 с частотой 600 МГц, R18000 с частой 800 МГц и ожидаемой пиковой производительностью 3,2 Gflops, а также R20000 с частотой 1 ГГц и пиковой производительностью 4 Gflops. После 2005 года SG планирует свернуть микропроцессорное производство и в дальнейшем использовать в своих серверах и рабочих станциях микропроцессоры Intel/HP с архитектурой IA-64.
Микропроцессоры отечественного производства
В настоящее время подавляющее большинство российских разработчиков и производителей микропроцессорных систем ориентируется на использование продукции иностранного производства. Это обусловлено широкой номенклатурой представленных на рынке микропроцессоров и их относительной дешевизной. В силу массовости производства микропроцессоры разных производителей доступны на рынке, на уровне бытовой электроники. Для большинства случаев при изготовлении какого-либо микропроцессорного устройства достаточно ограничиться самым общим описанием микропроцессора, не вдаваясь в подробности его реализации, воспринимая его как черный ящик, вся функциональность которого полностью отображается во внешних проявлениях и, более того, воспринимается через свободно распространяемое программное обеспечение. Однако существуют приложения, для которых на первое место по значимости выходит предсказуемость функционирования устройства: в этом случае нельзя ограничиться только наблюдением внешнего "поведения" процессора, требуется четко представлять не только "что", но и "как" он считает. Обеспечить такую предсказуемость можно только путем проведения полномасштабной разработки всех компонентов устройства, включая и микропроцессор.
В России рядом организаций выполнены разработки микропроцессоров как с оригинальной, так и с клонированной архитектурой. К первым относятся, например, микропроцессоры серии "Квант", описанные в главе 4. Примером второго подхода являются разработки Научно-исследовательского института системных исследований (НИИСИ) РАН и Московского центра SPARC- технологий. ■
Микропроцессоры с архитектурой SPARC
Московский центр SPARC-технологий на протяжении ряда лет разрабатывает SPARC-совместимые микропроцессоры семейства МЦСТ. Микропроцессоры имеют 32-разрядную архитектуру, соответствующую спецификации SPARC v8, описанной в разд. 2.4.
На сегодняшний день выпущен микропроцессоры МЦСТ-RISO [ПО], работающий на тактовой частоте 150 МГц, производимый по технологии 0,35 мкм
с 4 слоями металла, содержащий 2,8 млн транзисторов. Ведутся работы по созданию опытного образца микропроцессора МЦСТ-К500 с тактовой частотой 500 МГц, а также разрабатывается микропроцессор МЦСТ-R с тактовой частотой 1000 МГц [НО]. Последние два микропроцессора будут производиться с топологическими нормами 0,13 мкм, 8 слоев металла и будут содержать 4,2 млн транзисторов на кристалле.
Производительность микропроцессоров составляет:
□ МЦСТ-К150 - 140 MIPS, 63 flops;
□ MUCT-R500 - 400 MIPS, 170 flops.
Микропроцессоры с архитектурой MIPS
Вариант популярной архитектуры MIPS-I реализован в разработанном НИИСИ РАН микропроцессоре 1В812, который является архитектурным аналогом микропроцессора MIPS R3000 [111].
MIPS R3000 был разработан компанией MIPS Technology Inc. в 1988 году. Микропроцессоры с данной архитектурой получили широкое распространение в компьютерной индустрии и нашли свое применение в рабочих станциях и серверах, телекоммуникационном и офисном оборудовании.
Процессоры работали на тактовой частоте 33 МГц или 40 МГц и обеспечивали производительность на уровне 20 SPECint92 и 23 SPECfp92.
R3000 состоит из двух тесно связанных процессоров, расположенных на одном кристалле: центрального RISC-процессора (ЦП) и сопроцессора управления системой (CP0). R3000 является 32-разрядным микропроцессором: все регистры имеют 32 разряда. Центральный процессор содержит 32 регистра общего назначения (РОН), счетчик команд и два регистра для сохранения старшего и младшего слов результата команд целочисленного умноже- ния/деления. РОН е номером 0 является аппаратным нулем: чтение из него всегда дает 0, а запись приводит к потере записываемых данных. РОН с номером 31 используется для сохранения адреса возврата в командах перехода с возвратом.'
Поддерживаемые форматы данных: двойное слово (64 бита), слово (32 бита), полуслово (16 бит), байт (8 бит).
В процессор встроено устройство управления памятью (MMU), отвечающее за обработку запросов к памяти от центрального процессора. К функциям этого устройства относятся: преобразование виртуального адреса в физический, защита памяти, управление кэшем и арбитраж шин. К процессору подключается раздельная кэш-память команд и данных. Размер каждой кэш-памяти может быть от 4 до 256 Кбайт. Логика управления кэш-памятью расположена на кристалле и обеспечивает когерентность кэшей в мультипроцессорных конфигурациях. Режим работы кэш-памяти — сквозная запись (Write through) и прямое отображение (Direct mapped).
Спецификация архитектуры R3000 предусматривает возможность использования до 3 внешних сопроцессоров (СР1-СРЗ). СР1 — сопроцессор вычислений в формате с плавающей точкой (R3010), а СР2 и СРЗ — предусмотрены для расширения возможностей системы. Обмен сопроцессоров с памятью обслуживает центральный процессор — формирует адреса и управляет интерфейсом памяти.
Команды ЦП — 32-разрядные, 3 форматов: регистровые команды (1-тип), команды переходов (J-тип), команды с непосредственным операндом (R- тип). Команды выполняются в 5-стадийном конвейере. В каждом такте выдаются результаты очередной команды.
По функциям команды подразделяются на следующие группы:
команды загрузки/сохранения (1-тип);
вычислительные команды (арифметические, логические, операции сдвига) (R- или 1-тип);
команды безусловного (R- или J-тип) и условного (1-тип) перехода;
команды сопроцессора (формат команд зависит от используемого сопроцессора);
команды сопроцессора 0 выполняют операции над регистрами СРО;
специальные команды (R-тип) выполняют системные вызовы, останов, обмен между специальными регистрами и РОН и т. п.
Сопроцессор управления системой СРО обеспечивает работу виртуальной памяти, обрабатывает исключительные ситуации, управляет переходом между состояниями "ядро" и "пользователь", предоставляет средства диагностики и восстановления после ошибок, управляет кэш-памятыо.
СРО содержит 10 специальных регистров, 4 из которых используются системой виртуальной памяти, а 6 — используются при обработке исключительных ситуаций.
Адресное пространство R3000 составляет 4 Гбайт и делится на 2 части: 2 Гбайт для пользователя (младшие адреса) и 2 Гбайт для ядра. Так как физическое адресное пространство меньше чем адресуемое (виртуальное), MMU осуществляет преобразование виртуальных адресов в физические (с помощью таблицы TLB, расположенной внутри кристалла), а также кэширование страниц памяти. Полностью ассоциативная TLB содержит 64 элемента, каждый из которых соответствует странице размером 4 Кбайт.
СРО обычно работает в режиме пользователя, а в случае обработки исключительной ситуации — переходит в режим ядра. К исключительным ситуациям относятся: арифметическое переполнение, прерывания по вводу/выво- ду, системные вызовы, промахи при обращении к таблице страниц и т. д.
Сопроцессор вычислений в формате с плавающей точкой (FPU) R3010 выполняет операции над 64-разрядными числами. FPU содержит 16 64-раз-
рядных регистров, которые могут содержать числа с одинарной и двойной точностью.
Конвейер команд FPU содержит 6 стадий и работает параллельно с конвейером команд ЦП. Как и целочисленные команды, команды FPU выполняются в среднем за один такт.
Реализация архитектуры R3000
Лицензия на производство процессоров с архитектурой MIPS приобретена многими производителями полупроводниковых устройств, такими как Broadcom, IDT, LSI Logic, NEC, NKK, Philips, Toshiba и др.
Собственный вариант архитектуры MIPS разработан в России Научноисследовательским институтом системных исследований РАН, который приобрел лицензию у компании MIPS Technology Inc. на микропроцессор R3000 и сопроцессор с плавающей точкой R3010 [1121.
Созданный НИИСИ РАН микропроцессор 1В812 [ИЗ] представляет собой функциональный аналог микропроцессора R3000 с сопроцессором R3010.
Микропроцессор 1В812 содержит:
процессор для обработки чисел с фиксированной точкой (включая системный сопроцессор СРО), являющийся архитектурным аналогом микропроцессора R3000;
арифметический сопроцессор для обработки чисел с плавающей запятой, являющийся архитектурным аналогом сопроцессора R3010;
кэш-память программ объемом 8 Кбайт;
кэш-память данных объемом 8 Кбайт;
контроллер системной шины;
встроенный буфер записи, позволяющий избежать задержек в цикле записи;
встроенный буфер чтения, поддерживающий блочное и одиночное чтение.
Процессор имеет следующие характеристики:
тактовая частота процессора 33 МГц;
частота работы интерфейса системной шины - 1 или */2 частоты процессора;
производительность — 24,5 MIPS, 8,7 Mflops;
наличие программируемого режима работы с уменьшенным потреблением энергии. Энергопотребление в рабочем режиме не более 1 Вт, в режиме энергосбережения не более 0,1 Вт;
реализован в виде КМОП СБИС с проектными нормами 0,5 мкм и числом транзисторов на кристалле около 1,6 млн. Корпус имеет 108 выводов.
Структура микропроцессора показана на рис. 2.44.
Рис. 2.44. Структура микропроцессора 1В812
В 1В812 используется тот же набор целочисленных команд, что и в R3000A.
Процессорное ядро (CPU) является 32-разрядным RISC-процессором. CPU содержит пятиступенчатый конвейер и 32 ортогональных 32-разрядных регистра.
Конвейерное выполнение позволяет осуществлять до одной операции за такт. В конвейере процессора одновременно на разных стадиях выполнения могут находиться до пяти команд.
1В812 содержит встроенный арифметический сопроцессор (СР1), совместимый с R3010, работающий параллельно с ЦП. СР1 является высокопроизводительным сопроцессором, выполняющим операции сложения, умножения, деления с одинарной и двойной точностью для чисел в формате с плавающей точкой.
СР1 содержит 16 ортогональных 64-разрядных регистров, которые для операций чтения и записи, выполняемых ЦП, видны как 32 32-разрядных регистра. На рис. 2.45 показана структура СР1.
Рис. 2.45. Структура арифметического сопроцессора
На кристалле расположены раздельные кэши команд и данных размером 8 Кбайт каждый.
Системный интерфейс 1В812 использует 32-разрядную мультиплексируемую шину адреса и данных, обеспечивает арбитраж шин для реализации режима ПДП. Обмен с внешней памятью буферизирован (4-словный буфер) и может осуществляться как одиночными словами, так и блоками по 4 слова в пакетном режиме.
Разработанные НИИСИ РАН микропроцессоры производятся на предприятии "Ангстрем" (Россия) [112].
Состояние и перспективы развития универсальных микропроцессоров
Основные тенденции развития универсальных микропроцессоров
Рассмотрение семейств микропроцессоров разных производителей подтверждает общие тенденции их развития: стремление к программной совместимости внутри семейства и повышение тактовой частоты, увеличение объема и пропускной способности подсистемы памяти, увеличение количества параллельно функционирующих исполнительных устройств.
В XX веке совокупная реализация в одном микропроцессоре рекордных значений параметров по всем этим тенденциям была невозможна из-за ограничений технологического процесса изготовления и экономических ограничений на стоимость одного микропроцессора и микроэлектронного производства в целом. При ограниченном объеме аппаратных ресурсов каждый разработчик микропроцессора должен был выбрать ряд архитектурноструктурных приемов, за счет преимущественного развития которых этот микропроцессор будет превосходить другие. Поэтому каждый конкретный тип микропроцессора был результатом многих компромиссов, принятых его создателями.
В архитектуре современных микропроцессоров разных компаний-производителей имеется много общего, что даже наводит на мысль об унификации архитектур. Большое число транзисторов на кристалле позволяет применить в одном микропроцессоре все известные приемы повышения производительности, сообразуясь только с их совместимостью.
Программная совместимость
Программная совместимость как возможность выполнять программы, созданные для предыдущих поколений микропроцессоров на новом поколении, имеет важное значение для развития и накопления программного обеспечения. Собственно, невозможно себе представить развитие компьютерных технологий без сохранения программной совместимости.
Конечно, обеспечение программной совместимости может находиться в противоречии со стремлением к повышению производительности микропроцессора. Особенно ярко это демонстрируется развитием микропроцессоров с архитектурой х86. Потенциал востребованности этих микропроцессоров настолько велик, что оказал и оказывает до сих пор стимулирующее воздействие на производителей, заставляя их искать технические и ценовые ниши для продвижения своих продуктов.
Когда в результате проведенных исследований по оптимизации архитектуры, приведших к созданию концепции RISC-процессоров, выяснилось, что сложные команды, имеющиеся в архитектуре х86, препятствуют повышению производительности, это не привело к отказу от этой архитектуры. И хотя основной производитель микропроцессоров с архитектурой х86, фирма Intel, следовал традиционным подходам, инженерная мысль в рамках более подвижной малой компании, стремящейся выйти на рынок с большим количеством потребителей, предложила решение, сохраняющее архитектуру х8б при аппаратной трансляции ее команд в RISC-команды. В процессорах с архитектурой х86, за счет введения RISC-ядра, преодолено отставание в производительности от RISC-процессоров. Более того, такой подход позволяет перейти к процессорам со многими системами команд, каждая из которых транслируется своим внутрикристальным аппаратным транслятором в набор операций RISC-ядра процессора. Это решение стало впоследствии общепринятым у всех производителей микропроцессоров с архитектурой х86, включая фирму Intel.
Конечно, это решение требует дополнительных затрат оборудования, но эти затраты вполне оправданы достигаемым ростом производительности.
Компанией Transmeta предпринята попытка, при сохранении архитектуры х86, получить более эффективную по производительности, энергопотреблению и объему оборудования реализацию микропроцессора с использованием для повышения производительности VLIW-архитектуры с длинным командным словом.
Другие производители стремятся предложить процессоры, выгодно отличающиеся своей ориентацией на определенные ценовые классы компьютеров.
Кроме того, производители микропроцессоров с другой архитектурой стремятся снабдить свои изделия средствами, обеспечивающими возможность эмулировать архитектуру х86. Так, в свое время DEC решила проблему переносимости существующего для архитектур х86 программного обеспечения посредством оптимизирующего транслятора FX132. Транслятор преобразует исполняемый код архитектуры х86 в оптимизированный исполняемый код DEC Alpha. Собственно, этот подход может быть применен и для обеспечения совместимости с другими архитектурами. Возможно также введение в
процессор программируемой логики, аналогичной ПЛИС, настраиваемой на требуемую систему команд.
Поэтому сохранение программной совместимости служит не столько препятствием на пути развития микропроцессоров, сколько фактором, стимулирующим это развитие.
Повышение тактовой частоты
Для повышения тактовой частоты используются более совершенный технологический процесс с меньшими проектными нормами, увеличение числа слоев металлизации, более совершенная схемотехника меньшей каскадности и с более совершенными транзисторами, а также более плотная компоновка функциональных блоков кристалла.
Так, все производители перешли на технологию КМОП, хотя Intel, например, использовали БиКМОП для первых представителей семейства Pentium. Еще более экзотическая попытка была предпринята компанией Exponential Techholoqy, которая пыталась развить биполярную схемотехнику для производства процессоров с архитектурой PowerPC и х86. Однако на частоте 466 МГц кристалл площадью 150 мм2 рассеивал около 80 Вт, что создало серьезную проблему теплоотвода (без этого кристалл превращается в святящуюся раскаленную пластину металла). Компания пыталась добиться повышения тактовой частоты до обещанного уровня, но не справилась с этим, По ее утверждению, из-за экономических проблем.
Вообще говоря, известно, что биполярные схемы и КМОП на высоких частотах имеют примерно одинаковые показатели тепловыделения, но КМОП- схемы более технологичны, что и определило их преобладание в микропроцессорах.
Уменьшение размеров транзисторов, сопровождаемое снижением напряжения питания, увеличивает быстродействие и уменьшает выделяемую тепловую энергию. Все производители микропроцессоров перешли с проектных норм 0,25 мкм на 0,18 мкм, а сейчас уверенно стремятся к 0,13—0,09 мкм.
Проблема уменьшения длины межсоединений на кристалле решается путем увеличения числа слоев металлизации. Так, Cyrix при сохранении 0,6 мкм КМОП-технологии за счет увеличения с 3 до 5 слоев металлизации сократила размер кристалла на 40% и уменьшила выделяемую мощность, исключив существовавший ранее перегрев кристаллов.
Уменьшение длины межсоединений актуально для повышения тактовой частоты работы, т. к. существенную долю длительности такта занимает вре= мя прохождения сигналов по проводникам внутри кристалла. Так, в Alpha 21264 предприняты специальные меры по кластеризации обработки, призванные локализовать взаимодействующие элементы микропроцессора.
Увеличение пропускной способности подсистемы памяти
Спектр возможных решений по увеличению пропускной способности подсистемы памяти, снабжающей функциональные устройства процессора работой, включает создание кэшей одного или нескольких уровней, а также увеличение пропускной способности интерфейсов между процессором и кэш-памятью и конфликтующим с этим увеличением пропускной способности между процессором и основной памятью. Совершенствование интерфейсов реализуется как увеличением пропускной способности шин (путем увеличения частоты работы шины и/или ее ширины), так и введением дополнительных шин, устраняющих конфликты между процессором, кэшпамятью и основной памятью. В последнем случае одна шина работает на частоте процессора с кэш-памятью, а вторая — на частоте работы основной памяти. При этом частоты работы второй шины, например, равны 66, 66, 166 МГц для микропроцессоров Pentium Pro-200, PowerPC 604Е-225, Alpha 21164-500, работающих тактовых частот 300, 225, 500 МГц соответственно. При ширине шин 64, 64, 128 разрядов это обеспечивает пропускную способность интерфейса с основной памятью 512, 512, 2560 Мбайт/с соответственно.
Общая тенденция увеличения размеров кэш-памяти реализуется по-разному: □ внешние кэши данных и команд с двухтактовым временем доступа объемом от 256 Кбайт до 2 Мбайт с временем доступа 2 такта в HP РА-8000;
отдельный кристалл кэш-памяти второго уровня, размещенный в одном корпусе в Pentium Pro;
размещение отдельных кэшей команд и данных первого уровня объемом по 8 Кбайт и общей для команд и данных кэш-памяти второго уровня объемом 96 Кбайт в Alpha 21164.
Наиболее часто используемое решение состоит в размещении на кристалле отдельных кэшей первого уровня для данных и команд с возможным созданием внекристальной кэш-памяти второго уровня. Например, в Pentium П использованы внутрикристальные кэши команд и данных первого уровня по 16 Кбайт каждый, работающие на тактовой частоте процессора, и внекри- стальная общая кэш-память второго уровня, работающая на половинной тактовой частоте.
Повышение степени внутреннего параллелизма
Каждое семейство микропроцессоров демонстрирует в следующем поколении увеличение числа исполнительных устройств и улучшение их характе-
ристик, как временных (сокращение числа ступеней конвейера и уменьшение длительности каждой ступени), так и функциональных (введение ММХ- расширений системы команд и т. д.).
В настоящее время процессоры могут выполнять до 6 операций за такт. Однако число операций с плавающей точкой в такте ограничено 2 для R10000 и Alpha 21164 и 4 для РА-8х00.
Для того чтобы обеспечить эффективную загрузку исполнительных устройств, используется переименование регистров и предсказание переходов, устраняющие зависимости между командами по данным и управлению. Устоявшихся решений в этой области практически нет, т. к. каждый микропроцессор демонстрирует изобретательность его создателей по симбиозу аппаратных средств и компилятора для статического и динамического устранения зависимостей между командами,
На сегодня в стадии практической апробации находятся архитектура с длинным командным словом и мультитредовая архитектура.
Вопросы для самоконтроля к главе 2
Перечислите основные типы архитектур универсальных микропроцессоров и характерные области их применения.
Укажите основных представителей микропроцессоров с архитектурой х86.
Что такое мультимедийное расширение системы команд? Приведите примеры реализаций мультимедийных расширений системы команд в микропроцессорах RISC- и CISC-архитектуры.
В чем смысл введения отдельных шин для работы процессора с кэшпамятью и основной памятью?
Перечислите составляющие технологии энергосбережения.
Укажите особенности организации кэш-памяти в микропроцессорах Intel шестого поколения.
Как в рамках архитектуры х86 сочетаются концепции RISC- и CISC-процессоров?
В чем состоят особенности реализации архитектуры х86 в конкурирующих изделиях фирм Intel, AMD, Cyrix? Сопоставьте эти семейства по основным структурным и функциональным характеристикам: реализация устройства выборки команд, управление ветвлениями, работа с кэшпамятью, диспетчеризация и исполнение команд.
Перечислите основные особенности микропроцессоров фирмы Transmeta.
Перечислите архитектурные особенности Alpha 21064, 21164, 21264. Прокомментируйте линию развития семейства микропроцессоров с архитектурой Alpha. Назовите состав и назначение основных блоков микропроцессоров.
В чем состоят характерные особенности архитектуры SPARC? Состав и назначение основных блоков.
В чем заключается, по вашему мнению, причина появления микропроцессоров семейства MAJC?
Прокомментируйте развитие семейства процессоров с РА-архитекту- рой компании Hewlett-Packard. Структура и организация кэш-памяти. Состав исполнительных устройств. Механизм предсказания переходов.
Перечислите черты микропроцессоров семейств PowerPC и R-lxxxx как классических RISC-процессоров с разнесенной архитектурой.
Сопоставьте подходы различных производителей к организации кэшпамяти микропроцессоров. Укажите тенденции развития.
Назовите число возможных одновременно выполняемых операций в разных микропроцессорах. Что препятствует увеличению этого числа? Назовите длину конвейеров каждого микропроцессора.
Сравните механизмы реализации предсказания переходов в разных микропроцессорах. Назовите превалирующие тенденции развития.
Сопоставьте между собой методы диспетчеризации и выполнения команд в разных микропроцессорах.
Укажите на механизмы образования мультипроцессорных конфигураций, заложенные в разные микропроцессоры.
Прокомментируйте развитие микропроцессоров отечественного производства.
Глава 3
Сигнальные, коммуникационные и медийные микропроцессоры
Общие сведения о цифровой обработке сигналов
Цифровая обработка сигнала (ЦОС) — это арифметическая обработка в реальном масштабе времени последовательности значений амплитуды сигнала, получаемых через равные временные промежутки [114]. Примерами цифровой обработки являются:
фильтрация сигнала;
свертка двух сигналов (смешение сигналов);
вычисление значений корреляционной функции двух сигналов;
усиление, ограничение или трансформация сигнала;
прямое/обратное преобразование Фурье сигнала.
Аналоговая обработка сигнала, традиционно используемая во многих радиотехнических устройствах, является в большинстве случаев более дешевым способом достижения требуемого результата, однако тогда, когда требуется высокая точность обработки, миниатюрность устройства, стабильность его характеристик в различных температурных условиях функционирования, цифровая обработка оказывается единственно приемлемым решением.
Пример аналоговой фильтрации сигнала приведен на рис. 3.1. Используемый в фильтре операционный усилитель позволяет расширить динамический диапазон обрабатываемых сигналов. Форма амплитудно-частотной характеристики фильтра определяется значениями величин R/, Cj;. Для аналогового фильтра сложно обеспечить высокое значение добротности, характеристики фильтра сильно зависят от температурного режима. Компоненты фильтра вносят дополнительный шум в результирующий сигнал. Аналоговые фильтры трудно перестраивать в широком диапазоне частот.
Аналоговый фильтрАналоговый фильтрЧастотная характеристикаЧастотная характеристикаSSИдеальныйфильтрИдеальныйфильтрffЧастота f,Частота f,Частота f.Частота f.РеальныйфильтрРеальныйфильтр
Аналоговый фильтр
Аналоговый фильтр
Частотная характеристика
Частотная характеристика
S
S
Идеальныйфильтр
Идеальныйфильтр
f
f
Частота f,
Частота f,
Частота f.
Частота f.
Реальныйфильтр
Реальныйфильтр
Рис. 3.1. Аналоговая обработка сигнала
Аналогичные результаты обработки сигнала могут быть получены с помощью цифровой схемы, показанной на рис. 3.2. Компонентами схемы являются фильтры низкой частоты (ФНЧ), выполняющие предварительное и последующее удаление из частотного спектра дополнительных гармоник сигнала, аналого-цифровой (АЦП) и цифроаналоговый (ЦАП) преобразователи сигнала и собственно цифровой фильтр с конечной импульсной характеристикой. Амплитудно-частотная характеристика фильтра определяется значениями коэффициентов фильтра Цку Изменяя количество коэффициентов (длину фильтра) и их значения, можно получить фильтр с любой требуемой амплитудно-частотной характеристикой. Вносимый шум (шумы квантования) зависит от частоты и разрядности АЦП и ЦАП, а также от точности вычислений.
Схема преобразования, выполняемого над последовательностью отсчетов сигнала, задаваемая математической формулой, может быть также представлена графически, в виде структурной схемы цифрового фильтра.
Существует классификация фильтров по виду импульсной характеристики: фильтры с конечной импульсной характеристикой (КИХ) и фильтры с бесконечной импульсной характеристикой (БИХ). Структуры цифровых фильтров типа КИХ и БИХ приведены на рис. 3.3. и 3.4 соответственно.
ФНЧ Аналого-цифровое Операция ЦОС Цифроаналоговое ФНЧ
А
Рис. 3.2. Цифровая обработка сигнала
Приняты обозначения:.
Т — блок задержки на 1 такт;
х — блок умножения;
+ — блок сложения.
Для эффективной реализации алгоритмов цифровой фильтрации необходима аппаратная поддержка базовых операций ЦОС: умножения с накоплением (МАС — Multiplication Accumulation), модульной адресной арифметики, нормировки результатов арифметических операций.
Другим часто выполняемым преобразованием сигнала является дискретное преобразование Фурье (прямое и обратное) [115].
Любой сигнал может быть представлен как во временной области (совокупность графиков в координатах "время-амплитуда"), так и в частотной области (последовательность графиков в координатах "частота-амплитуда").
В зависимости от используемых алгоритмов обработки может быть выбрано либо частотное, либо временное представление сигнала. Преобразование Фурье позволяет осуществлять перенос сигнала из одной формы представления в другую.
Рис. 3.3. Структура каскада КИХ-фильтра
w(n) = x(n) + aj х w(n - 1) - 3j2 х w(n - 2) у(n) s w(n) + bj x w(n -1) + b(2 x w(n - 2)
Рис. 3.4. Структура каскада БИХ-фильтра
Дискретное преобразование Фурье (ДПФ) в аналитическом виде задается формулой:
Х(Л = Х(Л = т
где х(л7) — последовательность отсчетов сигнала.
Существует большое разнообразие реализаций дискретного преобразования Фурье. В ряде алгоритмов используются приемы, позволяющие сократить объем требуемых вычислений. Эти алгоритмы известны под общим названием "быстрое преобразование Фурье" (БПФ).
На практике интервал суммирования ограничен некоторым числом временных отсчетов — N, зависящим от требуемой точности преобразования. В этом случае формула принимает вид:
N-I
Х^Л = х^л = Т ^уЛЛе^'Л
//О
N — число точек преобразования.
Для уменьшения числа операций умножения при выполнении ДПФ используется метод, получивший название "прореживание по времени". Сущность данного метода заключается в том, что преобразование Фурье по последовательности из N точек может быть выражено через преобразования, выполненные по подпоследовательностям этой последовательности, каждая из которых имеет длину N/1 точек. Так как число умножений пропорционально числу точек преобразования, то процедура двукратного преобразования по N/2 точкам с последующим объединением результатов выполняется за меньшее время. Применив к последовательности отсчетов процедуру прореживания рекурсивно, получим схему вычислений, изображенную на рис. 3.5.
На рис. 3.5 k/N обозначает умножение на коэффициент е .
При реализации данной схемы преобразования наряду с операциями умножения и сложения используются битовые операции. Результирующие отсчеты расположены в бит-реверсивном порядке (см. рис. 3.5), т. е. таком, когда позиция элемента определяется реверсией двоичного представления индекса элемента. Для их переупорядочения требуется выполнить либо перестановку элементов массива, либо операцию битовой реверсии индекса при обращении к элементу массива. Второй подход имеет преимущество по времени выполнения, однако требует возможности манипулирования адресами данных.
В большинстве реальных приложений рассмотренные базовые алгоритмы цифровой обработки сигналов должны выполняться в режиме реального времени, что предъявляет повышенные требования к производительности
сигнальнь х
Рассмотрим основные семейства сигнальных микропроцессоров, представ-
3.2. Микропроцессоры обработки сигналов
кой производительностью на указанных задачах, а с другой стороны — с их чрезмерной избыточностью для данных задач.
Для цифровой обработки сигналов используются так называемые сигнальные микропроцессоры. К их особенностями относятся малоразрядная (40 и менее разрядов) обработка чисел с плавающей точкой, преимущественное использование чисел с фиксированной точкой разрядности 32 и менее, а также ориентация на несложную обработку больших массивов данных.
Отличительной особенностью задач цифровой обработки сигналов является поточный характер обработки больших объемов данных в реальном режиме времени, требующий высокой производительности процессора и обеспечения возможности интенсивного обмена с внешними устройствами. Соответствие данным требованиям достигается в настоящее время благодаря специфической архитектуре сигнальных процессоров и проблемно-ориентированной системе команд.
Сигнальные процессоры обладают высокой степенью специализации. В них широко используются методы сокращения длительности командного такта, характерные и для универсальных RISC-процессоров, такие, как конвейеризация на уровне отдельных микрокоманд и команд, размещение операндов большинства команд в регистрах, использование теневых регистров для сохранения состояния вычислений при переключении контекста, разделение памяти команд и данных (гарвардская архитектура). В то же время для сигнальных процессоров характерным является наличие аппаратного умножителя, позволяющего выполнять умножение двух чисел за один такт. В универсальных процессорах умножение обычно реализуется за несколько тактов, как последовательность операций сдвига и сложения. Другой особенностью сигнальных процессоров является включение в систему команд таких операций, как умножение с накоплением МАС (С := А х В + С), инверсия бит адреса, операции над битами. В сигнальных процессорах реализуется аппаратная поддержка программных циклов, кольцевых буферов, обработки прерываний.
Реализация однотактного умножения, а также команд, использующих в качестве операндов содержимое ячеек памяти, обусловливает сравнительно низкие тактовые частоты работы этих процессоров.
Сигнальные процессоры различных компаний-производителей образуют два класса, существенно отличающихся по цене: более дешевые микропроцессоры обработки данных в формате с фиксированной точкой и более дорогие микропроцессоры, аппаратно поддерживающие операции над данными в формате с плавающей точкой.
Использование в сигнальной обработке данных в формате с плавающей точкой обусловлено несколькими причинами. Для многих задач, связанных с выполнением интегральных и дифференциальных преобразований, особую значимость имеет точность вычислений, обеспечить которую позволяет экс-
поненциальный формат представления данных. Алгоритмы компрессии, декомпрессии, адаптивной фильтрации в цифровой обработке сигналов связаны с определением логарифмических зависимостей и весьма чувствительны к точности представления данных в широком динамическом диапазоне значений. Работа с данными в формате с плавающей точкой существенно упрощает обработку, поскольку не требует выполнения операций округления и нормализации данных, отслеживания ситуаций потери точности и переполнения.
Платой за "комфорт" является высокая сложность функциональных устройств, выполняющих обработку данных в формате с плавающей точкой, необходимость использования более сложных технологий производства микросхем и, как следствие, дороговизна микропроцессоров.
В настоящее время стал популярен и другой подход к получению высокой производительности. Большое количество транзисторов на кристалле может быть использовано для создания симметричной мультипроцессорной системы с более простыми процессорами, обрабатывающими целочисленные операнды. Примерами таких так называемых медийных процессоров служат Mediaprocessor компании MicroUnity, Trimedia компании Philips, Mpact Media Engine компании Chromatic Research, NV1 компании Nvidia, MediaGx компании Cyrix.
Эти процессоры создавались исходя из потребности обработки в реальном времени видео- и аудиоинформации в мультимедийных ПК, игровых приставках, бытовых радиоэлектронных приборах. Ввиду более простой схемотехники по сравнению с универсальными сигнальными процессорами, стоимость медийных процессоров достаточно низкая (порядка $100), а значение показателя произвддителыюсть/стоимость на 2—3 порядка больше. Пиковое значение производительности медийных процессоров составляет несколько миллиардов целочисленных операций в секунду.
К наиболее крупным производителям сигнальных микропроцессоров относятся компании Motorola, Texas Instalments, Analog Devices, Lucent Technologies. Каждая из указанных компаний выпускает целый спектр устройств, ориентированных на решение широкого круга задач. При выборе микропроцессора ЦОС для реализации конкретного проекта необходим учет многих параметров. Использование продукции той или иной компании во многом определяется предпочтениями разработчиков, однако следует учитывать определенные преимущества каждого микропроцессорного семейства.
Сигнальные микропроцессоры компании Texas Instruments
Сигнальные процессоры компании Texas Instruments [116] разделяются на два класса: процессоры для обработки чисел с фиксированной точкой и процессоры для обработки чисел с плавающей точкой (рис. 3.6). Первый класс пред-
ставлен тремя семействами процессоров, базовыми моделями которых являются соответственно TMS320C10, TMS320C20, TMS320C50. Второй класс включает процессоры TMS320C30, TMS320C40. TMS320C80 также поддерживает операции с плавающей точкой и представляет собой мультипроцессорную систему, выполненную в одном кристалле, а семейство TMS320C6x включает процессоры как с фиксированной, так и с плавающей точкой.
Процессоры старших поколений одного семейства наследуют основные архитектурные особенности предшествующих поколений и совместимы "снизу вверх" по системе команд (чего нельзя сказать о процессорах, входящих в разные семейства).
Микропроцессоры
семейства TMS320C1X
Первый процессор семейства — TMS320C10 — был выпущен в 1982 году и, благодаря ряду удачных технических решений, получил широкое распространение [117]. Структура типичного представителя семейства — микропроцессора TMS320C15 — приведена на рис. 3.7.
В основу микропроцессора положена модифицированная гарвардская архитектура, отличием которой от традиционной гарвардской архитектуры является возможность обмена данными между памятью программ и памятью данных, что повышает гибкость устройства.
10 Зак. 1086
нейную ИКМ).
Микропроцессоры семейства TMS320C2X
Микропроцессоры семейства TMS320C2x имеют ту же архитектуру, что и TMS320C1X, но обладают более высокой производительностью и более широкими функциональными возможностями |118], Все процессоры семейства могут использовать по 64 Келов памяти программ и данных, имеют 16 портов ввода/вывода каждый разрядностью 16 и последовательный порт.
Структура микропроцессора TMS320C2x приведена на рис. 3.8.
Рис. 3.8. Структура микропроцессора TMS320C2x
Процессоры семейства TMS320C2x используют внешний контроллер прямого доступа в память (ПДП). Умножитель микропроцессоров помимо операций умножения позволяет выполнять за один такт возведение в квадрат. В процессоры включена аппаратная поддержка кратного выполнения команды, реализован режим двоичной инверсно-косвенной адресации, предназначенный для эффективной реализации быстрого преобразования Фурье.
Основные технические характеристики процессоров второго поколения приведены в табл. 3.1.
Таблица 3.1. Основные характеристики процессоров семейства TMS320C2X
Микропроцессор
Технология
Такт (нс)
Внутренняя память
Внешняя память
Ввод/ вывод
ОЗУ
ПЗУ
ППЗУ
Данных
Программ
Последовательный
Параллельный
пдп
TMS32020
NMOS
200
544
64К
64К
1
16x16
Да
TMS320C25
CMOS
100
544
4К
64К
64К
1
16x16
Да
TMS320C25-50
CMOS
80
544
4К
64К
64К
1
16x16
Да
TMS320E25
CMOS
100
544
4К
64К
64К
1
16x16
Да
TMS320C26
CMOS
100
1568
256
64К
64К
1
16x16
Да
Основные отличия архитектуры процессоров TMS320C2X от TMS320C1X заключаются в следующем:
умножение и сохранение результатов в TMS3202x осуществляется за один командный такт;
набор команд поддерживает вычисления с плавающей точкой;
имеется внутреннее маскируемое постоянное запоминающее устройство (ПЗУ) программ (ROM — Read Only Memory) размером 4 Келов для TMS320C25, или полупостоянное запоминающее устройство (ППЗУ) с ультрафиолетовым стиранием и возможностью записи нового содержимого (EPROM — Erasable Programmable ROM) 4 Келов для TMS320E25;
выполнение программ осуществляется из памяти программ, расположенной на кристалле. Объем памяти программ — 544 слова, из которых 256 могут быть использованы как память данных;
расширенная внешняя память имеет объем 128 Келов (64 Келов — память программ, 64 Келов — память данных);
наличие команд блочной пересылки данных;
TMS3202x содержит внешний интерфейс для организации многопроцессорных связей и средства синхронизации для доступа к разделяемой памяти;
возможность организации тактов ожидания при доступе к медленной внешней памяти или медленным периферийным устройствам;
TMS3202x содержит на кристалле таймер и последовательный порт;
наличие пяти (TMS32020) или восьми (TMS320C25) вспомогательных регистров и специального арифметического устройства для них;
наличие аппаратного стека размером 4 слова для TMS32020 или 8 слов для TMS320C25 и возможности программного расширения стека в памяти данных;
наличие команд обработки битовых данных;
наличие трех маскируемых пользователем прерываний;
наличие режима прямого доступа к памяти (только для TMS320C25).
Микропроцессоры семейства TMS320C5X
Процессоры следующего за TMS320C2x поколения, обеспечивая совместимость по системе команд и наследуя общие архитектурные особенности построения процессоров предыдущих поколений, отличаются от них большими функциональными возможностями, повышенной тактовой частотой, меньшим энергопотреблением [119].
Структурная схема процессора TMS320C5.X приведена на рис. 3.9.
В процессоре реализована аппаратная поддержка кольцевых буферов, имеется возможность одновременного создания в памяти данных двух независимых кольцевых буферов. Существует возможность кратного выполнения блока программы. Процессор содержит 11 теневых регистров, используемых для быстрого сохрапения/восстановления состояния основных регистров в случае возникновения программных или аппаратных прерываний. Параллельное логическое устройство процессора позволяет выполнять битовые и логические операции над операндами, содержащимися в памяти и различных регистрах.
Процессор может использовать 244 Келов памяти, в том числе: 64 Келов — память программ, 64 Келов — память данных, 64 Келов — 16-разрядные порты ввода/вывода, 32 Келов — глобальная память. Для возможности работы с медленной памятью в процессор включен программируемый генератор тактов ожидания. Для использования процессора в мультипроцессорных системах с разделяемой памятью в нем предусмотрены сигналы запроса и подтверждения готовности памяти. Различия между процессорами семейства TMS320C5x заключаются, в основном, в конфигурации внутрикристальной памяти.
Рис. 3.9. Структура микропроцессора ТМ8320С5х
Помимо 16-разрядных портов ввода/вывода, процессоры семейства имеют 2 последовательных порта (у TMS320C52 — 1), таймер, интерфейс тестирования и отладки JTAG.
Значительное внимание при разработке процессоров данного семейства уделялось обеспечению энергосберегающих режимов функционирования. Процессоры выпускаются на напряжение 3 В и 5 В. В микропроцессорах поддерживаются активный режим, периферийный режим и режим "сна". Потребление тока в активном режиме составляет 1,5 мА/MIPS на 3 В и 2,5 мА/М IPS на 5 В. В периферийном режиме центральный процессор останавливается, работает только периферия, и потребление тока составляет 0,25 мА/MIPS и 0,4 мА/MIPS для 3 и 5 В соответственно. В режиме "сна" процессор останавливается до получения сигнала прерывания. Потребление тока составляет 5 мкА.
Микропроцессоры семейства TMS320C2xx
Архитектура TMS320C2xx (120, 121] базируется на архитектуре семейства TMS320C5x. Основные свойства микропроцессоров TMS320C2xx:
совместимость по программному коду с семействами *С1х, 'С2х;
расширенная система команд для ускорения алгоритмов ЦОС и поддержки конструкций языков высокого уровня;
высокая производительность (до 40 MIPS);
низкое потребление энергии благодаря наличию энергосберегающего режима.
Модифицированная гарвардская архитектура, предусматривающая раздельные шины команд и данных, позволяет одновременно выбирать команды и операнды. Возможность обмена между памятью программ и данных увеличивает гибкость микропроцессора. Так, коэффициенты, расположенные в памяти программ, могут быть переданы в память данных, что приводит к экономии памяти, выделяемой для коэффициентов.
Процессор имеет увеличенный, по сравнению с предыдущими семействами, объем внутрикристальной памяти и перепрограммируемую энергонезависимую flash-память.
Наличие 4-этапного конвейера позволяет TMS320C2xx выполнять в среднем одну команду за такт. 'С2хх содержит средства управления прерываниями, повторного выполнения операций, вызова подпрограмм и функций.
Типовая структура микропроцессора 'С2хх приведена на рис 3.10.
Все микропроцессоры семейства имеют одинаковое процессорное ядро и отличаются различными конфигурациями памяти и внутрикристальной периферией. Все устройства, кроме TMS320C209, имеют по 1 синхронному и 1 асинхронному последовательному порту.
Синхронный порт предназначен для обмена с другим процессором, кодеком и внешними периферийными устройствами. Порт имеет два буфера памяти емкостью по 4 слова с дисциплиной доступа FIFO и механизмом генерации прерываний. Максимальная скорость обмена через синхронный порт равна половине тактовой частоты процессора (для 40 МГц — скорость обмена 20 Мбит/с).
Асинхронный последовательный порт предназначен для обмена данными с другими устройствами. При обмене используется 8-битное представление данных с 1 стартовым и 1 или 2 стоповыми битами. Скорость обмена может достигать 250 тыс. 10-битных знаков в секунду.
Благодаря лучшему соотношению производительность/стоимость среди всех микропроцессорных семейств ($0,12 за MIPS), микропроцессоры TMS320C2xx
получили самое широкое распространение и используются в связных системах, мультимедиа-устройствах, средствах промышленной автоматизации, военной технике.
Рис. 3.10. Структура микропроцессора TMS320C2xx
Микропроцессоры семейства TMS320C54X
Процессоры TMS320C54x отличает комбинирование модифицированной гарвардской архитектуры с тремя внутренними шинами данных и одной шиной команд |122, 123|. Такая внутренняя организация процессора позволяет обеспечить высокую степень параллельности выполнения команд. Этому семейству свойственна высокоспециализированная система команд, наличие на кристалле дополнительных периферийных устройств и увеличенный объем внутренней памяти. Все это позволяет добиться высокой гибкости и производительности.
Три шины данных используются для чтения операндов и записи результата операции одновременно с выборкой инструкции в одном процессорном цикле.
Общий объем адресуемой процессором памяти составляет 192 слова. Разрядность слов — 16. Память разбита на 3 специализированных сегмента: команд, данных и ввода/вывода, каждый из которых может иметь размер до 64 Келов. В некоторых моделях внутри процессора может быть размещена ROM объемом до 48 слов и до 10 Келов двухвходовой RAM. В процессоре предусмотрена опция защиты данных во внутренней памяти от сканирования. При установке режима защиты ни одна из команд не сможет получить доступ к содержимому внутрикристальной памяти.
Для ускорения выполнения типовых операций сигнальной обработки, помимо "стандартных" для процессоров ЦОС блоков барабанного сдвига и адресной арифметики, процессор содержит ряд дополнительных функциональных модулей, повышающих его гибкость и производительность. Блок умножения с накоплением (МАС) выполняет над 17-битными операндами операции вида S := S + a х b за один процессорный такт. Подобные операции характерны для алгоритмов фильтрации, свертки, вычисления корреляционной функции.
Для быстрого вычисления значений у = ехр(х) микропроцессор содержит блок вычисления экспоненциальной функции. Этот блок, используя значение аккумулятора как значение аргумента функции х, позволяет вычислять соответствующее значение у = ехр(х) за один такт. Для эффективной реализации оператора Витерби служит блок CMPS Operation, выполняющий за один цикл операцию сравнения/выбора с накоплением (Add/Compare Selection).
АЛУ микропроцессора способно выполнять арифметические или булевы операции над комплексными числами (используя два регистра- аккумулятора — АССА и АССВ) или может функционировать как два 16- разрядных АЛУ, выполняющих одновременно две 16-разрядные операции. АЛУ и МАС могут реализовывать операции в цикле одновременно.
Устройство барабанного сдвига осуществляет сдвиг данных на 0—31 разрядов влево или 0—16 разрядов вправо за один такт, а также совместно с блоком вычисления экспоненциальной функции позволяет выполнять нормализацию содержимого аккумулятора за один такт. Дополнительные возможности сдвига позволяют процессору осуществлять масштабирование данных, выделять разряды числа, предотвращать возникновение переполнения и потерю точности.
Все микропроцессоры семейства TMS320C54x имеют одинаковую структуру (рис. 3.11), однако отличаются друг от друга расположенной на кристалле периферией. В состав периферии входят:
программно-управляемый генератор тактов ожидания;
программный переключатель банков памяти;
параллельные порты ввода/вывода;
аппаратный таймер и генератор тактовых импульсов.
Генератор тактов ожидания позволяет увеличить число тактов внешней шины для работы с медленной внешней памятью и внешними устройствами.
Переключатель банков памяти позволяет автоматически добавлять один такт при пересечении границ банка памяти внутри программного адресного пространства или при переходе от пространства адресов команд к пространству адресов данных. Этот дополнительный такт позволяет устройству памяти освободить шину раньше, чем другое устройство получит доступ к ней, избегая тем самым конфликтной ситуации при обращении к памяти.
Микропроцессоры семейства имеют 64 Кпорта ввода/вывода. Эти порты предназначены для связи с внешними устройствами с использованием минимума дополнительных внешних декодирующих схем. Интерфейс главного порта (HPI — Host Port Interface) — 8-разрядный параллельный порт, предназначенный для связи сигнального процессора и хост-процессора системы. Мы будем использовать термин "хост-процессор", т. к. представляется, что его замена на "главный процессор" или "управляющий процессор" не в полной мере адекватна. Обмен данными между хост-процессором и сигнальным процессором осуществляется через внутрикристальную HPI-память объемом 2 Келов, разрядности 16, которая может также использоваться как память команд или данных. Скорость обмена по HPI составляет до 160 Мбайт/с.
Микропроцессоры семейства содержат высокоскоростные дуплексные последовательные порты, позволяющие связываться с другими микропроцессорами, кодеками и другими устройствами. В микропроцессоре реализованы следующие разновидности последовательных портов:
универсальный порт;
мультиплексный с временным уплотнением;
порт с автобуферизацией.
Универсальный последовательный порт использует два отображаемых в память регистра: регистр передачи данных и регистр приема данных. Передача и прием данных сопровождаются генерацией маскируемого прерывания, которое может быть обработано программно. Порт с разделением времени может обслуживать до семи устройств. Буферизированный последовательный порт позволяет осуществлять непосредственный обмен между устройством и памятью, не используя при передаче ресурсов процессора. Максимальная скорость обмена по последовательному порту может составлять до 40 Мбайт/с.
Как и в семействах TMS320C5x, TMS320C2xx, в процессоре реализована эффективная трехуровневая система управления энергопотреблением.
Высокая производительность (до 66 MIPS) и расширенные функциональные возможности при невысокой цене обеспечивают процессору обширные области применения: сотовые и радиотелефоны, персональные системы радиовызова, карманные персональные компьютеры (PDA — Personal Digital Assistant), устройства беспроводной передачи данных (радиосети) и т. д.
Микропроцессоры семейства TMS320C3X
Первым представителем класса процессоров с плавающей точкой стал TMS320C30 [124]. На момент выпуска процессора — в конце 1980 годов — TMS320C30 значительно превосходил по производительности процессоры
других компаний — производителей сигнальных процессоров. Процессор имеет гибкую систему команд, хорошую аппаратную поддержку операций с плавающей точкой, мощную систему адресации, расширенное адресное пространство, обеспечивает поддержку выполнения конструкций языка высокого уровня — С на аппаратном уровне.
Процессор производился по 0,7 мкм КМОП-технологии с тремя уровнями металлизации. Все операции в процессоре выполняются за один такт. При длительности такта 60 нс процессор TMS320C30 имеет быстродействие около 33 Mflops. Высокая производительность процессора на алгоритмах ЦОС обеспечивается благодаря аппаратному выполнению ряда специфических функций, которые в других процессорах реализуются программно или микропрограммно. Процессор имеет конвейерную регистро-ориентированную архитектуру и может параллельно выполнять в одном такте умножение и арифметико-логические операции с числами в формате с фиксированной или плавающей точкой. Структура процессора приведена на рис. 3.12.
Кэш-память 64x32Кэш-память 64x32ПЗУ 4Кх32 ССЗО) Прогр. загрузки CC3VC32)ПЗУ 4Кх32 ССЗО) Прогр. загрузки CC3VC32)Первичный портинтерфейса спамятью
Кэш-память 64x32
Кэш-память 64x32
ПЗУ 4Кх32 ССЗО) Прогр. загрузки CC3VC32)
ПЗУ 4Кх32 ССЗО) Прогр. загрузки CC3VC32)
Доступ к данным 32-бит ('С30-'С31) 8/16/32-бит ('С32)
Доступ к программе32-бит (*С30-'С31)16/32-бит (*С32)
Умножитель с фиксированной и плавающей точкойАЛУ операций с фиксированной и плавающей точкой8 регистров повышенной точности8 вспомогательных регистровГенератор адреса 0Генератор адреса 112 регистров управленияДва режима управления энергопотреблением ('С31-'С32)Умножитель с фиксированной и плавающей точкойАЛУ операций с фиксированной и плавающей точкой8 регистров повышенной точности8 вспомогательных регистровГенератор адреса 0Генератор адреса 112 регистров управленияДва режима управления энергопотреблением ('С31-'С32)ЦПУЦПУСопроцессорПДПСопроцессорПДПКанал ПДП ОКанал ПДП ОКанал ПДП 1 (С32)Канал ПДП 1 (С32)
Умножитель с фиксированной и плавающей точкой
АЛУ операций с фиксированной и плавающей точкой
8 регистров повышенной точности
8 вспомогательных регистров
Генератор адреса 0
Генератор адреса 1
12 регистров управления
Два режима управления энергопотреблением ('С31-'С32)
Умножитель с фиксированной и плавающей точкой
АЛУ операций с фиксированной и плавающей точкой
8 регистров повышенной точности
8 вспомогательных регистров
Генератор адреса 0
Генератор адреса 1
12 регистров управления
Два режима управления энергопотреблением ('С31-'С32)
ЦПУ
ЦПУ
СопроцессорПДП
СопроцессорПДП
Канал ПДП О
Канал ПДП О
Канал ПДП 1 (С32)
Канал ПДП 1 (С32)
Рис 3.12. Структура микропроцессора TMS320C30
Процессор имеет 32-разрядную шину команд и данных и 24-разрядную шину адреса. Содержит 2 блока ОЗУ по одному 32-разрядному Кслову, 32- разрядный умножитель с плавающей точкой, кэш-память команд объемом 64 слова (32-разрядных), 8 регистров для операций с повышенной точностью, 2 генератора адреса и регистровый файл. В процессоре реализованы разнообразные методы адресации. 40-разрядное АЛУ процессора работает как с целыми числами, так и с числами в формате с плавающей точкой. Встроенный контроллер ПДП позволяет совмещать во времени вычисления и выполнение обменов данными с памятью. Наличие у TMS320C30 мультипроцессорного интерфейса, двух внешних интерфейсных портов, двух последовательных портов, расширенной системы прерываний упрощает конструирование систем на его основе. Благодаря своей высокой производительности и простоте использования в вычислительных системах TMS320C30 может применяться как в качестве хост=процессора, так и в качестве специализированного сопроцессора.
Процессоры 'СЗх отличаются, в основном, количеством последовательных портов ('C3I и 'С32 — I, 'СЗО — 2) и каналов ПДП ('СЗО, 'С32, — 2, 'C3I — 1). Представители этого семейства получили большую популярность у разработчиков. Учитывая значительный объем программных наработок для микропроцессоров TMS320C3x, Texas Instruments в последствии повторно выпустила это семейство, но уже по новой технологии 0,18 мкм, с увеличенной внутренней памятью (34 Келов), повышенной тактовой частотой и меньшим энергопотреблением. Производительность обновленного микропроцессора составила 150 Mflops.
Основными областями применения микропроцессоров семейства ’СЗх являются: цифровое аудио, ЗО-графика, видеоконференцсвязь, промышленные роботы, копировально-множительная техника, телекоммуникационные системы.
Микропроцессоры * семейства TMS320C4X
Следующими представителями сигнальных процессоров с плавающей точкой явились процессоры семейства TMS32OC4X [125, 126|.
Благодаря своей уникальной архитектуре микропроцессоры TMS320C4x получили широкое распространение в мультипроцессорных системах и практически вытеснили ранее господствующее в этой технологической нише семейства транспьютеров компании Inmos, рассматриваемые в главе 4.
Процессоры TMS320C4x совместимы по системе команд с TMS320C3x, однако обладают большей производительностью и лучшими коммуникационными возможностями.
В семейство TMS320C4X входят процессоры TMS320C40, TMS320C44, TMS320LC40.
TMS320C40 — имеет производительность 30 MIPS/60 Mflops и максимальную пропускную способность подсистемы ввода/вывода 384 Мбайт/с. 'С40 содержит на кристалле 6 высокоскоростных (20 Мбайт/с) коммуникационных портов и б каналов ПДП, 2 Келов памяти, 128 слов кэш-памяти программ и начальный загрузчик. Две внешних шины обеспечивают работу с 4 Гелов объединенного адресного пространства.
Процессор TMS320C44 — более дешевый вариант, имеющий 4 коммуникационных порта и адресуемое пространство 32 Мелов. Однако значения показателей производительности и пропускной способности процессора те же, что и у ’С40.
TMS320LC40 — архитектурный аналог TMS320C40, отличающийся низким энергопотреблением, повышенной производительностью (40 MIPS/80 Mflops) и большей пропускной способностью (488 Мбайт/с).
Структура микропроцессора TMS320C40 приведена на рис. 3.13.
Центральный процессор TMS320C4x имеет конвейерную регистро-ориентированную архитектуру. Компонентами ЦП являются:
умножитель;
арифметико-логический модуль;
32-разрядное барабанное устройство сдвига;
внутренние шины;
дополнительные модули регистровой арифметики;
регистровый файл.
Умножитель выполняет операции над 32-разрядными данными в формате с фиксированной точкой и 40-разрядными данными в формате с плавающей точкой, причем умножение производится за один такт (25 нс) для данных любого типа и параллельно с обработкой данных в других функциональных блоках микропроцессора (например, АЛУ).
АЛУ выполняет за один такт операции над 32-разрядными целыми и логическими данными и 40-разрядными числами в формате с плавающей точкой, в том числе и операции преобразования форматов представления данных. Микропроцессор аппаратно поддерживает операции деления и извлечения квадратного корня. Устройство барабанного сдвига позволяет за один такт выполнить сдвиг данных влево или вправо на число позиций от 1 до 32.
Два дополнительных модуля регистровой арифметики (генераторы адреса) функционируют параллельно с умножителем и АЛУ и могут генерировать два адреса в одном такте. В процессоре поддерживается относительная базовая, базово-индексная, циклическая и бит-реверсивная адресации.
АКD(3i-0) Y * акА(ЗО-О) 1АКD(3i-0) Y * акА(ЗО-О) 1Шина команд/данныхШина команд/данныхУмножитель с фиксированной и плавающей точкойАЛУ с фиксированной и плавающей точкой12 регистров повышенной точности8 вспомогательных регистровГенератор адреса 0Генератор адреса 114 регистров общего назначения32-разрядное устройство барабанного сдвигаУмножитель с фиксированной и плавающей точкойАЛУ с фиксированной и плавающей точкой12 регистров повышенной точности8 вспомогательных регистровГенератор адреса 0Генератор адреса 114 регистров общего назначения32-разрядное устройство барабанного сдвигаЦПУЦПУпдп канал Опдп канал 1ПДП канал 2ПДП канал 3ПДП канал 4ПДП канал 5пдп канал Опдп канал 1ПДП канал 2ПДП канал 3ПДП канал 4ПДП канал 5СопроцессорПДПСопроцессорПДПТаймер ОТаймер ОПорт ОПорт ОПорт 2Порт 2Порт 3Порт 3Порт 4Порт 4
АК
D(3i-0) Y * ак
А(ЗО-О) 1
АК
D(3i-0) Y * ак
А(ЗО-О) 1
Шина команд/данных
Шина команд/данных
Умножитель с фиксированной и плавающей точкой
АЛУ с фиксированной и плавающей точкой
12 регистров повышенной точности
8 вспомогательных регистров
Генератор адреса 0
Генератор адреса 1
14 регистров общего назначения
32-разрядное устройство барабанного сдвига
Умножитель с фиксированной и плавающей точкой
АЛУ с фиксированной и плавающей точкой
12 регистров повышенной точности
8 вспомогательных регистров
Генератор адреса 0
Генератор адреса 1
14 регистров общего назначения
32-разрядное устройство барабанного сдвига
ЦПУ
ЦПУ
пдп канал О
пдп канал 1
ПДП канал 2
ПДП канал 3
ПДП канал 4
ПДП канал 5
пдп канал О
пдп канал 1
ПДП канал 2
ПДП канал 3
ПДП канал 4
ПДП канал 5
СопроцессорПДП
СопроцессорПДП
Таймер О
Таймер О
Порт О
Порт О
Порт 2
Порт 2
Порт 3
Порт 3
Порт 4
Порт 4
Рис. 3.13. Структура микропроцессора TMS320C40
Первичный регистровый файл центрального процессорного устройства (ЦПУ) представляет собой многовходовый файл из 32 регистров. Все регистры первичного регистрового файла могут использоваться умножителем, АЛУ и в качестве регистров общего назначения. Регистры имеют некоторые специальные функции. Например, 12 регистров повышенной точности могут использоваться для размещения результатов операций с плавающей точкой, 8 дополнительных регистров — для некоторых косвенных способов адресации, а также как целочисленные и логические регистры общего назначения. Остальные регистры обеспечивают функции системы такие, как адресация, управление стеком, прерывания, отображение статуса процессора, повторы блоков команд. .
Регистры повышенной точности предназначены для хранения и обработки 32-разрядных целых чисел и 40-разрядных чисел с плавающей точкой. Дополнительные регистры доступны как для АЛУ, так и для двух модулей адресной арифметики. Основная функция этих регистров — генерация 32- разрядных адресов. Они также могут использоваться как счетчики циклов или как регистры общего назначения.
Адресуемое микропроцессором пространство составляет 4 Гелов 32-разрядных. На кристалле расположены два двухвходовых блока оперативной памяти RAM0 и RAM 1 размером 4 Кбайт каждый, а также двухвходовый блок ROM, содержащий программу начальной загрузки.
Кэш-память команд процессора емкостью 128 слов (32-разрядных) содержит наиболее часто используемые участки кода, что позволяет сократить среднее время выборки команд. Высокая производительность TMS320C4x достигается благодаря внутреннему параллелизму процессов и многошинной организации процессора. Раздельные шины позволяют одновременно выполнять выборку команды, данных и прямой доступ в память.
Шесть ('С44 четыре) высокоскоростных (160 Мбит/с) коммуникационных портов обеспечивают эффективный обмен данными между процессорами. В ходе передачи осуществляется буферизация передаваемых и принимаемых данных и автоматический контроль за синхронизацией всех обменных операций между каналами, центральным процессором и сопроцессором ПДП. Шесть каналов сопроцессора ПДП содержат собственные генераторы адресов, счетчики, входные и выходные регистры и обеспечивают возможность одновременного бесконфликтного обращения к памяти, обмена данными с медленными модулями памяти и внешними устройствами, без снижения производительности процессора. Особенностью сопроцессора ПДП является способность автоматической инициализации каналов после выполнения обмена.
Линк Ly, у = 0, ..., 5, состоит из 8-разрядной двунаправленной линии данных Dy (7—0) и двунаправленных одноразрядных управляющих линий для передачи сигналов:
REQy — запрос коммуникационным портом маркера, разрешающего передачу по линку;
АС Ку — подтверждение предоставления линка для передачи данных;
STRy — строб коммуникационного порта, сопровождающий выдачу данных на линии данных;
CRDYy — сигнал готовности коммутационного порта к приему, выдаваемый принимающим С4х по завершении приема предыдущей порции данных.
Линии данных и управляющие линии реализованы как двунаправленные, что приводит к необходимости согласования состояний портов линков, соеди-
няющих два микропроцессора: один порт обязательно передающий, другой — принимающий, либо оба порта находятся в третьем состоянии, исключающем передачу электрических сигналов между ними. При начальной установке обязательно выполнение этого требования, которое дальше поддерживается протоколом функционирования линка. Передающий порт отмечается маркером, который передается другому порту при смене направления передачи по линку. Передача маркера происходит за 4 такта.
Очереди портов
Каждый порт имеет входную и выходную FIFO-очереди. Процессор или канал ПДП пересылают данные в конец выходной FIFO-очереди порта для передачи их по линку. Выборка принятых данных выполняется из начала входной FIFO-очереди. Обе очереди имеют по 8 элементов, каждый из которых предназначен для хранения 32-битного слова. При соединении двух С4х в каждом линке образуется очередь в 16 элементов: 8 элементов на одном конце линка и 8 элементов на другом конце линка.
Интерфейс линков
Программное управление передачами данных по линкам выполняется путем записи соответствующих кодов в регистры состояния и управления линков. Для каждого линка в С4х выделена часть адресного пространства размером 16 слов:
первое слово содержит управляющий регистр порта;
второе слово является элементом 0 входной FIFO-очереди;
третье слово служит элементом 7 выходной FIFO-очереди;
остальные слова резервные.
Поля и отдельные биты управляющего регистра определяют:
направление передачи порта: входной или выходной;
прекращение функционирования порта как входного и переключение на функционирование как выходного;
прекращение функционирования порта как выходного и готовность переключиться в режим входного порта;
указатель заполненности выходной очереди;
указатель заполненности входной очереди.
Функционирование линков
Когда функционирование порта как входного прекращено, он не дает сигнала готовности к приему после получения первого байта. Передача данных останавливается до момента переключения порта в режим входного порта
или до поступления сигнала сброса. При этом передача данных после возобновления идет без потери байтов.
Коммуникационный порт не выдает подтверждения на запрос маркера в следующих случаях:
его функционирование как входного порта прекращено;
порт имеет заполненную входную FIFO-очередь.
При этом порт, сохранив маркер, может функционировать как выходной.
Если коммуникационный порт прекращает функционировать в качестве входного порта в момент приема запроса маркера, то подтверждение на запрос маркера выдается до остановки.
Прекращение функционирования порта как выходного приводит к следующим последствиям:
если выходной порт не имеет маркера и его функционирование как выходного порта прекращено, то запрос на маркер не высылается;
если выходной порт имеет маркер и идет передача, то после выдачи передаваемого слова следующее слово не передается;
если выходной порт имеет маркер и его функционирование как входного порта не прекращено, а функционирование как выходного порта прекращено, то при запросе маркера он должен быть передан;
при установке функционирования порта как выходного при наличии маркера передача возобновляется; при отсутствии маркера она должна быть запрошена в обычном порядке.
Основной механизм синхронизации базируется на сигналах "готов/не готов". Если канал прямого доступа в память или центральный процессор пытаются прочитать из пустой входной очереди или записать в полную выходную очередь, выдается сигнал "не готов" и каналы ПДП или ЦП продолжат чтение или запись после получения сигнала "готов".
Сигналом готовности для выходного канала является OCRDY (Output Channel Ready), который также является сигналом прерывания. Сигналом готовности для входного канала является ICRDY (Input Channel Ready), который также является сигналом прерывания.
Каждый порт способен генерировать четыре различных сигнала прерывания:
входная очередь полна (input channel full);
входной канал готов (input channel ready);
выходной канал готов (output channel ready);
выходная очередь пуста (output channel empty).
ЦП может обрабатывать все 4 сигнала, а канал ПДП только сигналы готовности.
Два 32-разрядных таймера могут работать как с внутренней, так и с внешней синхронизацией, осуществлять подсчет временных интервалов и внешних событий, выдавая сигналы процессору или во внешнюю среду.
Микропроцессоры семейства TMS320C8X
Микропроцессор TMS320C80, выпушенный в конце 1994 года |127], имеет второе название — MVP (Multimedia Video Processor — мультимедийный видеопроцессор), что обусловлено его высокой эффективностью на задачах обработки изображений, в системах виртуальной реальности, компрессии и декомпрессии видео- и аудиоданных, обработки связной информации.
TMS320C80 представляет собой новый подход к повышению производительности и функциональности цифровых сигнальных процессоров: в одной микросхеме объединено четыре усовершенствованных цифровых процессора обработки сигналов (ADSP — Advanced Digital Signal Processor), каждый из которых выполняет за такт несколько RISC-операций, и пятый процессор, называемый главным процессором (Master Processor — MP), — 32-разряд- ный процессор с высокопроизводительным устройством обработки чисел в формате с плавающей точкой.
В дополнение к процессорному ядру на кристалле размещены:
контролер обмена (ТС — Transfer Controller) — интеллектуальный контроллер ПДП, поддерживающий интерфейс с DRAM и SRAM;
видеоконтроллер (VC — Video Controller);
порт тестирования и отладки — JTAG;
50 Кбайт SRAM.
Выпускается также упрощенный вариант микропроцессора TMS32OC82, который отличается меньшим объемом памяти, количеством сигнальных процессоров ADSP (2), отсутствием видеоконтроллера и, соответственно, меньшей стоимостью.
Структура процессора изображена на рис. 3.14.
Суммарная производительность TMS320C80 на регистровых операциях достигает 2 млрд RISC-подобных команд в секунду. Благодаря столь высокой производительности TMS320C80 может заменить при реализации ряда приложений более 10 высокопроизводительных сигнальных микропроцессоров или универсальных микропроцессоров, выпускавшихся до его появления.
Приведем технические характеристики TMS320C80:
тактовая частота 40 или 50 МГц;.
производительность свыше 2 млрд операций в секунду;
Рис. 3.14. Структура микропроцессора TMS320C8X
64-разрядный контроллер обмена с динамическим конфигурированием шины на обмен 64-, 32-, 16- и 8-разрядными словами;
режим ПДП к SRAM, DRAM;
пропускная способность шины памяти — 2,4 Гбайт/с при передаче данных и 1,8 Гбайт/с при передаче команд;
объем адресного пространства — 4 Гбайт;
поддержка до 4 внешних прерываний;
напряжение питания 3,3 В;
около 4 млн транзисторов на кристалле;
технология производства КМОП 0,5 мкм.
Архитектура
микропроцессора TMS320C80
Архитектура процессора TMS320C80 относится к классу MIMD — множественный поток данных, множественный поток команд. Входящие в состав TMS320C80 процессоры программируются независимо один от другого и могут выполнять как разные, так и одну общую задачу. Обмен данными между процессорами осуществляется через общую внутрикристальную память, доступ к которой обеспечивает матричный коммутатор (Crossbar), выполняющий также функции монитора при одновременном обращении к одному сегменту памяти нескольких процессоров.
Рассмотрим подробнее архитектуру процессоров, входящих в состав TMS320C80.
Архитектура главного процессора
Главный процессор — это вычислительное устройство с RISC-архитектурой и встроенным сопроцессором для выполнения операций с плавающей точкой. Подобно другим процессорам с RISC-архитектурой, МР использует команды загрузки/сохранения для доступа к данным в памяти, а также выполняет большинство целочисленных, битовых и логических команд над операндами в регистрах в течение одного такта.
Вычислитель с плавающей точкой (FPU — Floating Point Unit) конвейеризирован и позволяет выполнять операции над данными как с одинарной, так и с двойной точностью, совмещая в конвейере операции умножения? сложения с накоплением, загрузки и сохранения результата. FPU использует тот же регистровый файл, что и устройство целочисленной и логической обработки. Производительность устройства составляет около 100 Mflops.
Специальный механизм отметок (Scoreboard) фиксирует занятость регистров и обеспечивает их бесконфликтное использование.
На рис. 3.15 приведена структура главного процессора.
Основными компонентами МР являются:
□ регистровый файл, состоящий из 31 регистра (32-разрядного);
барабанное устройство сдвига (Barrel Rotator);
генератор маски;
□ таймер;
целочисленное АЛУ;
управляющий регистр;
4 аккумулятора с плавающей точкой двойной точности;
умножитель с плавающей точкой;.
сумматор с плавающей точкой;
контролер кэш-памяти.
Объем каждого из внутрикристальных кэшей МР для команд и данных равен 4 Кбайта. Управление кэш-памятыо осуществляет входящий в состав МР контроллер.
МР может обслуживать до четырех внешних прерываний. Запрос на обслуживание трех из них должен иметь форму импульса, а для одного — передача управления процедуре обработки осуществляется по изменению уровня напряжения.
Для различных схем распараллеливания обработки в рамках микропроцессора МР может использоваться как управляющий или как универсальный арифметико-логический и графический процессор.
31 32-разрядный регистр
Таблица занятости регистров (Scoreboard)
Устройство барабанного сдвига
4 аккумулятора с плавающей точкой двойной точности
Генератор маски
Компаратор на 0
Умножитель с плавающей точкой одинарной точности
Целочисленое АЛУ
Контроль переполнения
|Таймер
Управляющие регистры
Сумматор с плавающей точкой двойной точности
*
Регистр команд
Программный счетчик
Инкремент программного счетчика
Логика эмуляции
Мультиплексор
Контроллер кэш-памяти команд
Контроллер кэш-памяти данных
Интерфейс коммутатора
Рис. 3.15. Структура главного процессора
Набор инструкций МР включает в себя:
арифметические операции;
логические операции;
операции сравнения;
операции с плавающей точкой;
арифметические преобразования;
векторные арифметические операции;
векторные операции умножения/накопления;
векторные операции преобразования;
векторные операции умножения/накопления с удвоенной точностью;
операции ветвления и переключения контекста;
команды управления;
команды чтения/записи ОЗУ;
команды сдвига.
Архитектура ADSP-процессоров
Архитектура ADSP-процессоров TMS320C80 оптимизирована для приложений, связанных с обработкой 2- и 3-мерной графики, видеоизображений и звука. ADSP может выполнять за один такт одновременно операцию умножения, арифметико-логическую операцию (например, сдвиг-суммирование) и два обращения к памяти. Внутренний параллелизм ADSP позволяет обеспечить на некоторых алгоритмах быстродействие свыше 500 млн операций в секунду.
ADSP манипулирует 32-разрядными словами, а разрядность команд составляет 64 бита. Процессор использует прямую, непосредственную и 12 видов косвенной адресации.
Архитектура ADSP характеризуется следующими параметрами:
3-этапный конвейер;
44 доступных пользователю регистра (10 адресных, 6 индекса, 8 данных, 20 — прочих);
32-разрядное 3-входовое АЛУ;
репликатор битов;
два адресных устройства;
32-разрядное устройство барабанного сдвига;
генератор масок;
блок условных операций (для сокращения времени выполнения переходов). Структура ADSP-процессора показана на рис. 3.16.
На рисунке обозначены:
А/S — блок выравнивания/расширения знакового разряда;
Repl — репликатор.
Контроллер обмена
Контроллер обмена управляет операциями обмена процессоров и памяти как внутри кристалла (через коммутатор), так и вне кристалла, с использованием входящих в его состав интерфейсных схем, поддерживающих все распространенные стандарты памяти (DRAM, VRAM, SRAM) и обеспечи-
ваюших возможность динамического изменения разрядности шины от 8 до 64. Используя приоритетную дисциплину обслуживания запросов к памяти в режиме ПДП, контроллер обмена позволяет выполнять обмен данными, не прерывая вычислений со скоростью до 400 Мбайт/с.
Контроллер обмена поддерживает линейную и координатную адресацию памяти для эффективного выполнения обмена при работе с 2- и 3-мерными графическими изображениями.
Рис. 3.16. Структура ADSP-процессора
Видеоконтроллеры
Два расположенных на кристалле микропроцессора TMS320C80 видеоконтроллера обладают возможностью захвата и отображения видеоинформации в режимах как вертикального, так и горизонтального сканирования. Режимы захвата/сканирования могут устанавливаться для каждого из контроллеров независимо.
Области применения микропроцессора TMS320C80
Области применения микропроцессора гораздо шире тех, что обозначены его названием. Процессор нашел свое применение в системах: обработки мультимедийной информации, видеоконференцсвязи, обработки 2- и 3- мерной графики, моделирования виртуальной реальности, передачи данных.
Микропроцессоры семейства TMS320C6X
Новое семейство процессоров ЦОС компании Texas Instruments — TMS320C6x — включает в себя процессоры как с фиксированной, так и с плавающей точкой [128—130]. Первый представитель данного семейства TMS320C6201 оперирует с данными только в формате с фиксированной точкой.
На тактовой частоте 200 МГц микропроцессор имеет производительность до 1,6 млрд операций в секунду. Областями его применения являются:
беспроводные системы передачи данных;
средства удаленной медицинской диагностики;
базовые станции мобильной связи;
модемные пулы и серверы удаленного доступа;
xDSL и кабельные модемы;
многоканальные телефонные платформы, офисные коммутаторы, системы речевой передачи сообщений;
мультимедийные системы.
TMS320C6201 помимо процессорного ядра содержит:
1 Мбит внутрикристальной памяти (512 Кбит для программы, 512 Кбит для данных);
32-битный интерфейс внешней памяти, поддерживающий стандарты памяти SDRAM, SBSRAM, SRAM;
два последовательных расширенных буферизированных порта;
16-битный порт центрального процессора;
два канала доступа к памяти данных с возможностью начальной загрузки; □ генератор интервалов времени.
Построенный в соответствии с разработанной компанией Texas Instruments архитектурой VelociTI, процессор 'С62хх — первый из сигнальных VLIW- процессоров, использующий для повышения производительности параллелизм уровня команд.
Структура микропроцессора TMS320C6201 приведена на рис. 3.17.
Процессор TMS320C6201 состоит из трех основных частей: центрального процессора (ядро), периферийных устройств и памяти.
Рис. 3.17. Структура микропроцессора TMS320C6201
Ядром TMS320C6201 является VelociTI VLIW-процессор с 8 функциональными модулями, включая 2 умножителя и б АЛУ. Модули взаимодействуют через два регистровых файла, содержащих по 16 32-разрядных регистров. ЦП может выполнять до 8 команд за один такт.
Программный параллелизм выявляется на этапе компиляции, анализ зависимости по данным аппаратными средствами на стадии выполнения не производится. Код выполняется на независимых функциональных устройствах в последовательности, задаваемой программой.
В процессоре используется упаковка команд, сокращающая размеры кода и время выборки команд. 256-разрядная шина памяти программ позволяет выбирать за один такт восемь 32-разрядных команд. Все команды содержат условия их выполнения, что позволяет сократить расходы производительности процессора на выполнение переходов и увеличить степень параллелизма обработки.
Процессор может оперировать с 8/16/32-разрядными данными. Для приложений, требующих высокой точности вычислений, предусмотрена возможность вычислений с 40-разрядными операндами. Для результатов всех основных арифметических операций выполняется округление и нормализация. В процессоре реализованы операции над битовыми полями, такие как "выделить" (extract), "установить" (set), "очистить" (clear), "подсчет битов" (bit counting).
Центральный процессор имеет два тракта обработки данных, каждый из которых содержит функциональные модули (L, S, М, D) и регистровый файл (16 32-разрядных регистров). Функциональные модули выполняют сдвиг, умножение, логические и адресные операции. Все операции выполняются над регистрами. Два набора устройств адресации данных (D1 и D2) отвечают исключительно за все пересылки данных между регистровым файлом и памятью. Управляющий регистровый файл определяет различные аспекты функционирования процессора.
Процесс обработки VLIW начинается с выборки из памяти команд 256- битного пакета. Команды связываются для совместного выполнения в выполняемый пакет (до 8 команд) по значению младшего бита команды.
Устройство выборки-декодирования-диспетчеризации команд может направлять к функциональным модулям до 8 команд (32-разрядных) за один такт по каждому из путей обработки (А и В).
В 'С62хх реализованы прямой и циклический (для регистров А4-А7 и В4-В7) способы адресации. Способ адресации определяется регистром режима адресации (AMR — Address Mode Register).
Процессоры семейства *С62хх имеют 14 прерываний, соответствующих сигналу Reset (Сброс), немаскируемому прерыванию (NMI — None Masked Interrupt) и прерываниям с номерами 4—15.
'С62хх содержат внутрикристальную память, которая может использоваться как память программ или кэш-память. Интерфейс внешней памяти процессора объединяет в единое адресное пространство внутреннюю и внешнюю память.
Внутрикристальная память разделена на память данных и память программ. Процессоры семейства *С62хх имеют два 32-разрядных порта к памяти данных и один 256-разрядный порт к памяти программ для выборки инструкций. Процессор TMS320C6201 содержит на кристалле по 64 Кбайт памяти
данных и программ. В процессоре используется расслоение памяти данных (четыре 16-разрядных банка) для повышения скорости выборки за счет одновременного обращения к различным банкам памяти.
Дополнительно процессоры семейства 'С62хх могут содержать на кристалле интерфейс внешней памяти, контроллер ПДП, интерфейс хост-порта (HPI), средства энергосбережения, расширенные буферизированные последовательные порты, 32-разрядные таймеры.
Следующий представитель семейства TMS320C6x — микропроцессор TMS320C6701 поддерживает операции с плавающей точкой, имеет более широкий (128 бит) интерфейс внешней памяти и меньшую частоту работы — 167 МГц.
В состав микропроцессора TMS320C6701 включены дополнительные функциональные модули:
М-модуль умножения 24 32-разрядных целочисленных данных и 32 64- разрядных данных в формате с плавающей точкой;
L-модуль выполнения арифметических операций над 32 40-разрядными целочисленными данными и 32 64-разрядными данными в формате с плавающей точкой;
S-модуль выполняет операции сдвига, перехода и отдельные операции с 32 64-разрядными данными в формате с плавающей точкой;
D-модуль, выполняющий адресные операции.
Пиковая производительность данного микропроцессора составляет 688 Mflops.
Сигнальные микропроцессоры компании Analog Devices
Микропроцессоры компании Analog Devices образуют два семейства: ADSP21XX и ADSP210XX 1131, 132].
Семейство ADSP21xx — набор однокристальных 16-разрядных микропроцессоров с общей базовой архитектурой, оптимизированной для выполнения алгоритмов цифровой обработки сигналов и других приложений, требующих высокопроизводительных вычислений с фиксированной точкой. Микропроцессоры этого семейства на сегодняшний день насчитывают 15 представителей, которые отличаются друг от друга, в основном, расположенными на кристалле периферийными устройствами, такими как кэшпамять, таймеры, порты и т. п.
Второе семейство микропроцессоров ADSP210xx объединяет 32-разрядныс микропроцессоры, ориентированные на сигнальные алгоритмы, требующие
выполнения вычислений с плавающей точкой. Семейство представлено микропроцессорами ADSP21010, ADSP21020, ADSP21060, ADSP21062, ADSP21160, ADSP-TS001.
В рамках каждого семейства микропроцессоров обеспечивается совместимость снизу вверх по системе команд. Старшие представители семейства обладают большей производительностью и содержат на кристалле дополнительные функциональные блоки.
В дальнейшем изложении при рассмотрении сигнальных микропроцессоров компании Analog Devices будем выделять общие архитектурные и конструктивные особенности каждого семейства, отмечая наиболее существенные отличия отдельных его представителей.
Микропроцессоры семейства ADSP21xx
Микропроцессоры семейства ADSP2lxx |I3I| успешно конкурируют с аналогичной продукцией компаний Motorola и Texas Instruments благодаря высокой производительности и низкой цене, а также наличию развитых аппаратных и программных средств разработки прикладных систем. Высокая производительность процессоров на сигнальных алгоритмах достигается за счет многофункциональной и гибкой системы команд, аппаратной реализации большинства типичных для сигнальной обработки операций, высокой степени параллелизма процессов в микропроцессоре, сокращения командного цикла. Микропроцессоры ADSP2lxx имеют модифицированную гарвардскую архитектуру, в рамках которой предусматривается возможность доступа в память команд при ее физическом разделении с памятью данных. Аналогичную архитектуру, ставшую для процессоров ЦОС стандартом де- факто, имеют многие другие процессоры, в том числе и TMS320xxx (см, разд. 3.3).
Обобщенная структура микропроцессора ADSP2lxx приведена на рис. 3.18.
Каждый микропроцессор семейства содержит три независимых функциональных блока: АПУ, умножитель с накоплением (МАС) и устройство барабанного сдвига. Каждый блок непосредственно оперирует с 16-разрядными данными и обеспечивает аппаратную поддержку вычислений с различной точностью.
Микропроцессор содержит генератор адресов команд и два генератора адресов данных, обеспечивающие адресацию к данным и командам, расположенным как во внутренней, так и во внешней памяти. Параллельное функционирование генераторов сокращает длительность выполнения команды, позволяя за один такт выбирать из памяти команду и два операнда.
Генераторадресаданных 1
Регистр/—
команд\— (SRAM)
1 К°'МаНА2Кх64
2Кх64
Память(SRAM)1Кх16
Генераторадресазагрузки
Флаги ДЛЯ 2111
3
Генератор адреса данных 2
Шина DMA
Шина DMD
Входные регистры
АЛУ
Выходные t-регистры \—
[^ МАС
Входные регистры
Выходные регистры
Выходные регистры
Внешняя шина адреса
ШинаРМ/
мих
ШинаРМР
Таймер
RBUS
Рис. 3.18. Обобщенная структура микропроцессора ADSP21xx
ПЗУ 2Кх64
Регистры интерфейса хост-порта
Управление энергопотреблением
Генератор адресов команд
Передающий регистр
Передающим регистр
для 2111 217х 21msp5x
Приемный регистр Последовательны»! порт О
Приемный регистр Последовательный порт
АЦП/ЦАП и v фильтры
-А (только у ~,
-✓ 21msp5x)
U Входные регистры Устрой- ство сдвига
Логикауправле-ния
5
5
Внешняя шина данных
310ГлазаЗ
Последовательные порты обеспечивают интерфейс с большинством стандартных последовательных устройств, а также с аппаратными средствами сжатия/восстановления данных, использующими А- и ц-законы компандирования.
Порт интерфейса с хост-процессором позволяет без дополнительных интерфейсных схем взаимодействовать с хост-процессором системы, в качестве которого может использоваться как процессор данного семейства, так и другой микропроцессор.
Микропроцессор ADSP-21msp5x отличается наличием аналогового интерфейса, позволяющего вводить и выводить обрабатываемый сигнал в аналоговой форме. В состав интерфейсных блоков входят АЦП, ЦАП, цифровой и аналоговый фильтры, параллельный интерфейс.
Микропроцессор ADSP-218I содержит внутренний порт ПДП и байтовый порт ПДП, которые обеспечивают быстрый обмен с внутренней памятью. Внутренний порт ПДП поддерживает асинхронный обмен с памятью программ, а байтовый порт позволяет записывать и читать как команды, так и данные.
Микропроцессоры компании Analog Devices отличает высокая степень параллелизма внутренних операций. За один такт процессор может:
генерировать адрес следующей команды;
загрузить из памяти следующую команду;
выполнить 1 или 2 пересылки данных;
обновить 1 или 2 указателя на данные;
выполнить операцию.
Микропроцессор, имеющий соответствующее устройство, может в этом же такте:
принять и/или передать данные через последовательные порты;
принять и/или передать данные хост-процессору;
принять и/или передать данные через аналоговый интерфейс.
Основные характеристики микропроцессоров семейства ADSP-21XX приведены в табл. 3.2.
Таблица 3.2. Основные характеристики микропроцессоров семейства 21 хх
Возможности
2101
2103
2105
2115
2111
2171
2173
2181
2183 21msp58
АЛУ
+
+
+
+
+
+
+
+
++
Блок МАС
+
+
+
+
+
+
+
+
++
Сдвиг
+
+
+
+
+
+
+
+
++
Таблица 3.2 (окончание)
Возможности
2101
2103
2105
2115
2111
2171
2173 2181
2183 21msp58
Генератор адресов данных
+
+
+
+
+
+
+
+
+
+
Генератор адресов команд
+
+
+
+
+
+
+
+
+
ОЗУ данных, Келов
1
1
0,5
0,5
1
2
2
16
16
2
ОЗУ команд, Келов
2
2
1
1
2
2
2
16
16
2
Таймер
+
+
+
+
+
+
+
+
+
+
Многоканальный последов, порт
+
+
—
+
+
+
+
+
+
+
Последовательный порт 1
+
+
+
+
+
+
+
+
+
+
Порт хост- интерфейса
—
—
—
—
+
+
+
—
—
+
Порт ПДП
—
—
—
—
—
—
—
+
+
—
Аналоговый интерфейс
—
—
—
—
—
—
—
—
—
Напряжение питания, В
5
3,3
5
5
5
5
3,3
5
3,3
5
Производительность (MIPS)
20
10
13.8
20
20
33
20
33
33
26
Общее для семейства ADSP-21XX микропроцессорное ядро изображено на рис. 3.19. Арифметико-логическое устройство микропроцессора выполняет стандартный набор арифметических и логических операций, включая деление. Устройство МАС выполняет операции умножения со сложением (вычитанием) за один такт. Устройство сдвига осуществляет арифметические и логические сдвиги операндов, нормализацию и возведение в степень. Функциональные устройства микропроцессора могут обмениваться результатами выполнения операций по шине внутренних результатов.
Внутренние функциональные блоки связаны между собой с помощью пяти шин: шина адресов памяти данных (DMA), шина адресов памяти команд (РМА), шина данных памяти данных (DMD), шина данных памяти команд (PMD) шина внутренних результатов (R). Первые четыре шины имеют мультиплексированный внешний интерфейс в виде шины адреса и шины данных (см. рис. 3.19).
Рис. 3.19. Структура микропроцессорного ядра ADSP21xx
По системе команд все микропроцессоры совместимы снизу вверх. Отдельные представители семейства — ADSP-2171, 2181, 21msp5x — имеют дополнительные и расширенные команды. Каждая команда выполняется за один
такт. Многофункциональные команды микропроцессора объединяют несколько пересылок данных с арифметико-логической обработкой.
Все устройства микропроцессора — 16-разрядные и оперируют с данными в формате с фиксированной точкой. Числа представляются либо как беззнаковые, либо в дополнительном коде. Логические операции выполняются над битовыми строками.
Совершенствование данного семейства микропроцессоров идет в направлении повышения тактовой частоты, снижения энергопотребления и расширения коммуникационных возможностей процессора.
Новый микропроцессор семейства ADSP-219X [133] содержит модифицированное ядро, которое рассматривается компанией Analog Devices как ключевой элемент в технологии создания перспективных 16-разрядных сигнальных процессоров общего назначения и процессоров для встроенных решений.
Специальные схемотехнические решения на основе данного ядра и программное обеспечение планируется создавать непосредственно для заказчика, под конкретно заданные требования и характеристики. Для приложений, требующих высокой производительности, будут создаваться процессоры, содержащие несколько ядер на одном кристалле. В будущем предполагается выпуск микропроцессоров, содержащих 4 ядра на одном кристалле и обладающих производительностью 1,2 миллиарда МАС в секунду на I квадратный дюйм площади кристалла.
Структура микропроцессора ADSP-219x показана на рис. 3.20.
Рис. 3.20. Структура микропроцессора ADSP-219x
По сравнению с процессорами семейства ADSP-218X, имеющими 14-разряд- ную шину адреса, в семействе ADSP-219X используется 24-разрядная шина адреса, что позволяет осуществлять прямую адресацию в пределах 64 Келов или страничную адресацию в пределах 16 Мелов. Адресный генератор процессоров семейства 219х поддерживает все ранее использованные и пять новых режимов адресации.
ADSP-219X программно совместим с предыдущими микропроцессорами семейства ADSP-21xx, обладает большей производительностью (до 300 MIPS) и меньшим энергопотреблением (0,4 мВт/MIPS).
Микропроцессоры
семейства ADSP 21ххх
Второе семейство микропроцессоров компании Analog Devices — ADSP 21 ххх — ориентировано на обработку данных в формате с плавающей точкой |132]. Общая структура ядра микропроцессоров данного семейства сходна с ранее рассмотренной структурой ADSP 21хх, в то же время в микропроцессорах существенно расширена разрядность шин и функциональных устройств, добавлена аппаратная поддержка обработки данных в формате с плавающей точкой.
Выполнение операций над данными как с фиксированной, так и с плавающей точкой повлекло за собой усложнение структуры функциональных устройств и, как следствие, отразилось на сложности производства микропроцессора и его стоимости.
К данному семейству микропроцессоров компании Analog Devices относятся следующие изделия: ADSP 21020, 21010, 21060, 21062, 21160.
Особенностями архитектуры микропроцессоров ADSP 21ххх являются:
быстрые и гибкие модули арифметики. Все команды выполняются за один такт. Набор команд микропроцессора, наряду с традиционными арифметическими операциями, включает такие, как 1/х, 1/R(x), команды сдвига, циклического сдвига, комбинации операций сложения/вычитания с умножением;
независимые потоки данных, поступающие в вычислительные модули и исходящие из них. За один процессорный такт ADSP 21ххх может одновременно считать (записать) два операнда в регистровый файл, загрузить два операнда в АЛУ, принять два операнда в умножитель, АЛУ и умножитель могут выработать два результата (или три, если АЛУ выполняет операцию совместно со сложением/вычитанием). Командное слово процессора (48-битное) позволяет задавать параллельное выполнение арифметических операций и обмен данными;
повышенная точность и расширенный динамический диапазон выполняемых операций. Все представители микропроцессорного семейства
оперируют с данными в 32-битном формате с плавающей точкой, 32битными целочисленными данными (в дополнительном коде и беззнаковыми) и 40-битными данными расширенной точности с плавающей точкой. Повышенная точность вычислений достигается благодаря уменьшению ошибки округления результата в вычислительных модулях. Аккумулятор для 32-разрядных данных с фиксированной точкой имеет 80 разрядов;
наличие двух генераторов адреса. Генераторы адреса обеспечивают пред- и постформирование прямого или косвенного адреса данных, выполняют над адресами модульные и бит-реверси вные операции;
эффективные средства формирования последовательности команд и организации программных циклов. Инициализация, возврат на начало и выход из программного цикла выполняются за один процессорный такт для уровня вложенности до 6. Процессор аппаратно поддерживает выполнение команд перехода и перехода с задержкой.
Первым в семействе ADSP 21ххх был выпущен микропроцессор ADSP-21020 с тактовой частотой 33,3 МГц. Производительность данного микропроцессора составила 66 Mflops. АЛУ процессора работает с 32-разрядными данными, расширяемыми до 40 разрядов при выполнении операций с плавающей точкой. При обработке данных в формате с фиксированной точкой используется 32-разрядное представление и 80-разрядный аккумулятор.
Следующим представителем семейства явился более дешевый микропроцессор ADSP-2I010, работавший на тактовой частоте 21,5 МГц и оперирующий только с 32-разрядными данными.
Структура микропроцессора ADSP-21020 приведена на рис. 3.21.
Универсальное АЛУ процессора, устройство барабанного сдвига и универсальный умножитель функционируют независимо, обеспечивая высокую степень внутреннего параллелизма операций. Регистровый файл общего назначения служит для обмена данными между вычислительными модулями и внутренней шиной, а также для запоминания промежуточных результатов. Регистровый файл содержит 32 регистра (16 первичных и 16 вторичных), имеет 10 портов и, совместно с гарвардской архитектурой процессора, позволяет организовать эффективный обмен между вычислительными модулями и памятью. Расширенная гарвардская архитектура процессора позволяет выбирать до 2 операндов и команду из кэш-памяти команд за один такт. Кэш-память команд работает избирательно: кэшируются только те команды, выборка которых конфликтует с выборкой данных из памяти программ (РМ).
Адресные генераторы (DAG 1 и DAG 2) обеспечивают аппаратную реализацию циклических буферов, использующихся алгоритмами цифровой фильтрации и ДПФ, для которых требуется циклическое изменение адресов обрабатываемых данных. Физически циклический буфер может быть располо-
жен, начиная с любого адреса памяти, а для ссылки на его содержимое используются регистровые указатели. Два DAG содержат 16 первичных и 16 вторичных регистров, что позволяет работать одновременно с 32 циклическими буферами.
Рис. 3.21. Структура микропроцессора ADSP-21020
Микропроцессоры с архитектурой SHARC семейства ADSP-2106X
Следующее поколение семейства ADSP 21ххх представлено микропроцессорами ADSP-21060 и ADSP-21062. Будучи сходными с ранее рассмотренными микропроцессорами ADSP-210xx по структуре ядра и совместимыми снизу- вверх по Системе команд, эти микропроцессоры обладают существенными архитектурными.отличиями, что позволило разработчикам выделить их в отдельное архитектурное семейство SHARC (Super Harvad Architecture Computer). Архитектура SHARC (рис. 3.22) продолжает развитие транспьютер-
ного направления в микропроцессорной технике и задает новый стандарт интеграции сигнальных процессоров в мультипроцессорную систему. Эта архитектура является примером гармоничного сочетания принципов построения распределенных и связанных систем, объединяя в себе простоту и эффективность масштабирования распределенных систем с удобством программирования систем с разделяемой памятью.
В SHARC-микропроцессоре объединены высокоэффективное процессорное ядро, выполняющее обработку данных в формате с плавающей точкой, интерфейс с хост-процессором, контроллер ПДП, последовательные порты, коммуникационные линки и разделяемая шина.
На тактовой частоте 40 МГц производительность микропроцессоров составляет 80 MIPS и 120 Mflops [134].
Рис. 3.22. Архитектура SHARC
Шинный коммутатор соединяет ядро процессора с независимым процессором ввода/вывода, двухвходовой памятью и портом шины мультипроцессорной системы.
Вычислительные модули на базе микропроцессоров ADSP-2106x выпускаются в виде микропроцессорных кластеров: платы с шинным интерфейсом ISA, PCI или VME содержат от 3 до 8 узлов. Производятся также мезонинные модули SHARCPAC и TRANSPAC, устанавливаемые в специальные разъемы материнских плат. .
Кэш-памятьКэш-памятьГенераторадресовданных 18x4x32Генераторадресовданных 18x4x32Генераторадресовданных 28x4x24Генераторадресовданных 28x4x24■ кэш-памя,*Таймер командI ~32x48 бит■ кэш-памя,*Таймер командI ~32x48 битUzznzГенераторадресовпрограмыUzznzГенераторадресовпрограмыДва независимыхдвухеходовых блокаДва независимыхдвухеходовых блокаБ лБ лБ л оБ л о22Шина РМАШина РМАШина DMAШина DMA32/32/Шина PMDШина PMDТестированиеи эмуляция(JTAG)Тестированиеи эмуляция(JTAG)32.32.шреса данные данныешреса данные данныеадресаадресаI Мультипроцессорный |интерфейсI Мультипроцессорный |интерфейсПорт процессора Порт ввода/выводаПорт процессора Порт ввода/выводаРМА Мультиплексор ЕРА шины адреса DMAРМА Мультиплексор ЕРА шины адреса DMAШинныйинтерфейс(IP)Шинныйинтерфейс(IP)Шина DMDШина DMD515132/4р32/4рУстройство барабанного АЛУ сдвига—рг-г-1Устройство барабанного АЛУ сдвига—рг-г-1Хост-интерфейсХост-интерфейсРегистры ЮРРегистры ЮР[PMDМультиплексорEPD шины данных DMD[PMDМультиплексорEPD шины данных DMDУмножительУмножитель16x48 бит16x48 битУправление,состоя ни б.буферыданныхУправление,состоя ни б.буферыданныхКонтроллер ПДПКонтроллер ПДППоследовательный порт (2)Последовательный порт (2)Порты линков (6)Порты линков (6)
Кэш-память
Кэш-память
Генераторадресовданных 18x4x32
Генераторадресовданных 18x4x32
Генераторадресовданных 28x4x24
Генераторадресовданных 28x4x24
■ кэш-памя,*
Таймер командI ~32x48 бит
■ кэш-памя,*
Таймер командI ~32x48 бит
UzznzГенераторадресовпрограмы
UzznzГенераторадресовпрограмы
Два независимыхдвухеходовых блока
Два независимыхдвухеходовых блока
Б л
Б л
Б л о
Б л о
2
2
Шина РМА
Шина РМА
Шина DMA
Шина DMA
32/
32/
Шина PMD
Шина PMD
Тестированиеи эмуляция(JTAG)
Тестированиеи эмуляция(JTAG)
32.
32.
шреса данные данные
шреса данные данные
адреса
адреса
I Мультипроцессорный |интерфейс
I Мультипроцессорный |интерфейс
Порт процессора Порт ввода/вывода
Порт процессора Порт ввода/вывода
РМА Мультиплексор ЕРА шины адреса DMA
РМА Мультиплексор ЕРА шины адреса DMA
Шинныйинтерфейс(IP)
Шинныйинтерфейс(IP)
Шина DMD
Шина DMD
51
51
32/4р
32/4р
Устройство барабанного АЛУ сдвига—рг-г-1
Устройство барабанного АЛУ сдвига—рг-г-1
Хост-интерфейс
Хост-интерфейс
Регистры ЮР
Регистры ЮР
[PMDМультиплексор
EPD шины данных DMD
[PMDМультиплексор
EPD шины данных DMD
Умножитель
Умножитель
16x48 бит
16x48 бит
Управление,состоя ни б.буферыданных
Управление,состоя ни б.буферыданных
Контроллер ПДП
Контроллер ПДП
Последовательный порт (2)
Последовательный порт (2)
Порты линков (6)
Порты линков (6)
Вычислительные модули на базе микропроцессоров SHARC используются в системах радио- и гидролокации, в системах распознавания речи и обработки изображений, в средствах телекоммуникации и медицинской диагностики.
Структура микропроцессора ADSP-2106x приведена на рис. 3.23.
Процессорное ядроПроцессорное ядро^ Двухвходовое ОЗУ (SRAM)
Процессорное ядро
Процессорное ядро
уПроцессор ввода/вывода (ЮРу
Рис. 3.23. Структура микропроцессора ADSP-2106X
Микропроцессоры ADSP-21060 содержат на кристалле 4 Мбит статической двухвходовой памяти, которая может быть сконфигурирована для работы 16-битными (256 Келов), 32-битными (128 Келов) и/или 48-битными (80 Келов) словами. Вся память может быть произвольно разделена на память программ и память данных.
Другой представитель этого семейства — микропроцессор ADSP-21062 — отличается от ADSP-21060 меньшим объемом внутрикристальной памяти (2 Мбит).
Общее адресуемое пространство микропроцессора составляет 4 Гслова. Встроенный контроллер внешней оперативной памяти позволяет задавать различное число генерируемых тактов ожидания и поддерживает страничный обмен с динамической памятью. "
Интерфейс с хост-процессором обеспечивает простое соединение со стандартной 16- или 32-разрядной микропроцессорной шиной. Передача данных через интерфейс осуществляется асинхронно, со скоростью, ограниченной тактовой частотой микропроцессора. Хост-интерфейс доступен через внешний порт и отображается в адресное пространство микропроцессора. Четыре канала контроллера ПДП обеспечивают обмен данными и командами через хост-интерфей с с минимальным участием процессорного ядра.
Расположенный на кристалле 10-канальный контроллер ПДП обеспечивает обмен данными между внутренней и внешней памятью, периферийными устройствами, хост-процессором, последовательными портами и линками микропроцессора.
ADSP-21060 имеет два синхронных последовательных порта для связи с разнообразными периферийными устройствами. Максимальная скорость передачи данных через последовательный порт составляет 40 Мбит/с. Передача может осуществляться одновременно в двух направлениях в режиме ПДП. В процессе обмена может выполняться дополнительное преобразование данных, такое, например, как ц- или А-компандирование.
ADSP-21060 предоставляет разработчикам широкие возможности по созданию мультипроцессорных сигнальных систем. Общее адресное пространство может быть разделено между несколькими процессорами. Обеспечивается автоматическая поддержка семафоров для последовательностей операций чтсние-изменсние-запись в память. Встроенная распределенная шинная логика позволяет создавать системы, содержащие до 6 взаимодействующих процессоров ADSP-21060 и хост-процессор. Межпроцессорное управление осуществляется с помощью механизма векторов прерывания.
Дополнительные возможности ввода/вывода процессору предоставляют шесть 4-разрялных линков. Линки передают данные по переднему и заднему фронту тактового импульса, обеспечивая, таким образом, передачу 8 бит за такт. Линки используются в мультипроцессорных системах для соединений типа "точка-точка". Передача данных по линку может осуществляться 32- или 48-разрядными словами непосредственно в процессорное ядро или, с использованием ПДП-канала, во внутреннюю память. Каждый линк содержит собственные буферные входные и выходные регистры. Максимальная скорость межпроцессорного обмена через все линки или внешний порт составляет 240 Мбайт/с. Загрузка микропроцессора может осуществляться из ПЗУ, хост-процессора или по одному из линков.
Линки микропроцессора
Каждый линк Lx, х е {0, 1, ..., 5}, состоит из 4 двунаправленных линий данных LxDAT (0, 1, 2, 3), а также из двух двунаправленных управляющих линий LxCLK и LxACK, обеспечивающих асинхронную передачу в режиме "запрос-ответ".
Порты на противоположных концах линка настраиваются на передачу и прием, либо находятся в третьем состоянии.
Порт каждого линка может выбрать для передачи или приема один из 6 буферов. Данные читаются из буферов и пишутся в буферы под управлением контроллера прямого доступа в память (ПДП) или процессора (ЦПУ). Буферы линков 5, 4, 3, 2, 1,0 поддерживаются каналами ПДП 7, б, 5, 4, 3, I соответственно.
Контроллер ПДП программируется для работы с буфером путем задания размера буфера, начального адреса в памяти, приращения адреса, а также направления передачи. Когда контроллер ПДП завершает операцию, вырабатывается прерывание, индивидуальное для каждого из 10 ПДП-каналов.
Буферы могут быть читаемы или пополняемы процессором посредством операций чтения/записи в области памяти внешних устройств. Если предпринимается попытка чтения из пустого буфера, процессор должен перейти в ждущее состояние до тех пор, пока не поступят данные извне. Естественно, при записи в заполненные буферы операция также должна быть приостановлена, вплоть до появления свободного места в буфере.
В приложениях, в которых задержка, вносимая контроллером ПДП, неприемлемо велика, процессор может непосредственно работать с буферами. Контроллер ПДП должен быть переведен в неактивное состояние.
При работе линков вырабатываются следующие прерывания:
если канал ПДП активизирован, то по завершении передачи сообщения ПДП-контроллером вырабатывается маскируемое прерывание;
генерируется маскируемое прерывание, если ПДП-контроллср не активизирован, а принимающий буфер не пуст или передающий буфер не полон. По прерыванию требуется выполнение операций с буфером (чтение или запись);
маскируемое прерывание, отличное от прерываний, вырабатываемых буферами, генерируется при внешнем доступе в порт линка; который не активизирован.
Асинхронный "запрос-ответ"
Передающий ADSP 2106х выставляет высокий уровень на LxCLK при выдаче очередного полубайта на линии LxDAT. Изменение этого уровня исполь-
зуется принимающим ADSP-2106X для приема полубайта. Принимающий ADSP-2l06x выставляет LxACK, когда принято очередное слово в буфер.
Передающий ADSP-2106x анализирует LxACK в начале передачи каждого слова. Если требуемый уровень LxACK в этот момент отсутствует, то передача слова не начинается.
Передающий ADSP-2106x оставляет LxCLK высоким, если LxACK отсутствует. При появлении LxACK, LxCLK становится низким и начинается передача следующего слова.
Принимающий буфер может заполняться, если выполняются высокоприоритетная ПДП- или цепочечная операция, при этом LxACK не выставляется. Однако сразу после завершения ПДП выставляется LxACK. Данные "защелкиваются" в принимающем буфере по спадающему уровню LxCLK. Передача полубайта данных происходит каждый такт ADSP-2106x или дважды за такт, если установлен специальный бит LCKx2.
Буферы
Каждый буфер состоит из внешнего и внутреннего регистров. При передаче внутренний регистр используется для приема данных из внутренней памяти под управлением ПДП-контроллера или цп. Внешний регистр используется для распаковки полубайтов для порта линка (старший полубайт следует первым). Эти два регистра формируют FIFO-очередь. Два слова могут быть помещены в буфер прежде, чем вырабатывается сигнал "заполнено". Если регистр пуст, уровень сигнала LxCLK становится низким.
При приеме внешний регистр упаковывает принимаемые полубайты в слова и передает их через внутренний регистр в память под управлением ПДП- контроллера или ЦП. Если ПДП-контроллер или ЦП не успели извлечь данные из внутреннего регистра и оба регистра буфера заняты, сигнал LxACK не выдается, и прием прекращается.
Длина регистров настраивается программно и составляет 32 или 48 битн. Для работы с 40-битными данными или командами должна устанавливаться длина регистров 48 битн.
Установление соглашения по использованию линка
Прежде чем два процессора начинают взаимодействовать по связывающему их линку, должно быть определено: кто из процессоров будет передавать данные, а кто принимать. Для этого используется обмен маркером. При начальной установке маркер (программно доступный флаг) устанавливается в одном из процессоров, определяя его как "хозяина" (master) линка и разрешая ему передачу.
Если принимающий порт желает стать "хозяином" линка для передачи данных, он должен выставить сигнал на LxACK (запрос данных) для текущего "хозяина" линка. "Хозяин", используя программный протокол, определяет, когда приходит подтверждение данных, а когда запрос на получение маркера.
Если "хозяин" решил передать маркер, он посылает обратно определенный пользователем в качестве маркера идентификатор и сбрасывает собственный маркер. Одновременно ведомый процессор проверяет полученные данные и, если в них содержится необходимое слово, то он устанавливает свою метку, переходя в состояние ведущего процессора.
Если полученные данные не содержат необходимого идентификатора, то ведомый процессор должен понять, что ведущий начинает новую передачу данных.
Ведущий процессор может также запросить получение данных с помощью программного протокола путем посылки маркера без получения запроса по LxACK.
Контроллер ПДП и порты линков передают данные между собой с помощью того же самого протокола ("запрос-подтверждение"), который используется всеми портами ввода/вывода.
Интерфейс с хост-компьютером
Интерфейс позволяет с минимумом дополнительного оборудования подключаться к стандартным 16- или 32-разрядным микропроцессорным шинам. Интерфейс служит внешним портом, отображенным в адресное пространство, и обеспечивает асинхронную передачу данных.
Хост-процессор генерирует запрос шины. ADSP-2106x предоставляет шину по завершении текущего такта, выдавая сигнал предоставления шины и сигнал готовности. Хост-процессор может читать из памяти и записывать в память ADSP-2106x.
Обнаружение ошибок при передаче
В специальном управляющем регистре хранится информация о состоянии счетчика полубайтов каждого порта линка. Если по завершении передачи счетчик не обнулен, то вырабатывается сигнал, свидетельствующий об ошибке при передаче. Для контроля этого сигнала применяются специальные протоколы на передающем и принимающем концах линка.
В конце передачи блока слов передающий ADSP-2106x должен настроить свой порт на прием. Протокол обмена предусматривает передачу одного дополнительного пустого слова. Это позволит принимающему ADSP-2106x переслать соответствующее сообщение передающему. Протокол приема после получения блока данных предусматривает выработку прерывания для чтения управляющего регистра и передачи соответствующего сообщения передающему ADSP-2106x.
Микропроцессоры
с архитектурой SHARC семейства ADSP-2116х
Следующей разработкой компании Analog Devices явились 32-разряд- ные микропроцессоры семейства SHARC — ADSP-2116х, представленные в 1998 году |135].
Основным отличием семейства ADSP-2116х от ADSP-2106x является наличие в составе микропроцессорного ядра двух процессорных элементов. Процессорные элементы могут одновременно выполнять команду, каждый над своими данными (режим SIMD). SIMD-обработка данных позволяет существенно увеличить производительность микропроцессора при незначительном изменении программной модели. Отличием от микропроцессоров предыдущей серии является также увеличенная разрядность внутренних шин.
Каждый процессорный элемент содержит набор обрабатывающих устройств: 32-, 40-разрядное арифметико-логическое устройство с фиксированной и плавающей точкой, 32-, 40-разрядный умножитель в формате с плавающей точкой с 80-разрядным регистром-аккумулятором, устройство барабанного сдвига, регистровый файл — 32 40-разрядных регистра.
Структура микропроцессора ADSP-2116х показана на рис. 3.24.
Новая серия микропроцессоров программно совместима с ADSP-2106x на уровне исполняемых кодов. Система программирования ADSP-2116х — ADI Visual DSP — включает трансляторы, отладчики, оптимизированные библиотеки, а также аппаратные средства поддержки разработки.
Микропроцессор ADSP21160 является первым представителем новой серии. Он содержит 4 Мбит внутренней памяти, 14 каналов ПДП, 6 линков. Приведем основные характеристики данного микропроцессора:
выполнение команд за один такт, в том числе, двумя вычислительными блоками, в SIMD-режиме;
наличие сдвоенного генератора адреса;
наличие команд ускорения обработки циклов;
тактовая частота 100 МГц;
пиковая производительность 600 Mflops;
напряжение питания 2,5 В.
При относительно небольшой тактовой частоте высокая реальная производительность микропроцессоров ADSP-2116х достигается благодаря эффективной системе команд. Например, программа КИХ-фильтрации для микропроцессора TMS320C67x содержит 100 команд, тогда как программе для ADSP-2I16х требуется всего 25 команд.
ZZ'Двухвходовое ОЗУ (SRAM)'Двухвходовое ОЗУ (SRAM)Процессорное ядроПроцессорное ядро|Таймер||Таймер|22Шина РМАШина РМАШина DMAШина DMAШина PMDШина PMD| Хост-интерфейс^| Хост-интерфейс^ФайлФайлГенератор адресов програмыГенератор адресов програмы16x40 бит (РЕх)16x40 бит (РЕх)Генератор адресов данных 1 8x4x32Генератор адресов данных 1 8x4x32Файл регистровФайл регистровБлок объединен ния шин (РХ)Блок объединен ния шин (РХ)Устройство барабанного сдвигаУстройство барабанного сдвигаУмножительУмножительДва независимых двухвходовых блокаДва независимых двухвходовых блокаБ л оБ л оБ лБ лРегистры ЮРРегистры ЮРZZZZ Генератор адресов данных 2 8x4x32ZZZZ Генератор адресов данных 2 8x4x32Кэш-память команд 32x48 бит„ЗЕ/Кэш-память команд 32x48 бит„ЗЕ/PMD Мультиплексор EPD шины данных DMDPMD Мультиплексор EPD шины данных DMDШина DMD 32/40/64Шина DMD 32/40/64Порт процессораПорт ввода/выводаадреса данные данные адресаПорт процессораПорт ввода/выводаадреса данные данные адресаТестирование 7 и эмуляция №. (JTAG)Тестирование 7 и эмуляция №. (JTAG)48/6448/64ЮА 32 ( Внешний портУРМА Мультиплексор — -И ЕРА шины адреса ЦРМАГ|Т^ультипроцессорныТ| JинтерфейсЮА 32 ( Внешний портУРМА Мультиплексор — -И ЕРА шины адреса ЦРМАГ|Т^ультипроцессорныТ| Jинтерфейс32,32,6464Контроллер ПДП^^—т)Контроллер ПДП^^—т)(РЕу)(РЕу)Устройство барабанногоУстройство барабанногоУмножительУмножительУправление,состояние,буферыданныхУправление,состояние,буферыданныхПорты линков(6)Порты линков(6)Последовательный порт (2)Последовательный порт (2)уПроцессор ввода/вывода (ЮР) ууПроцессор ввода/вывода (ЮР) у
Z
Z
'Двухвходовое ОЗУ (SRAM)
'Двухвходовое ОЗУ (SRAM)
Процессорное ядро
Процессорное ядро
|Таймер|
|Таймер|
2
2
Шина РМА
Шина РМА
Шина DMA
Шина DMA
Шина PMD
Шина PMD
| Хост-интерфейс^
| Хост-интерфейс^
Файл
Файл
Генератор адресов програмы
Генератор адресов програмы
16x40 бит (РЕх)
16x40 бит (РЕх)
Генератор адресов данных 1 8x4x32
Генератор адресов данных 1 8x4x32
Файл регистров
Файл регистров
Блок объединен ния шин (РХ)
Блок объединен ния шин (РХ)
Устройство барабанного сдвига
Устройство барабанного сдвига
Умножитель
Умножитель
Два независимых двухвходовых блока
Два независимых двухвходовых блока
Б л о
Б л о
Б л
Б л
Регистры ЮР
Регистры ЮР
ZZZZ Генератор адресов данных 2 8x4x32
ZZZZ Генератор адресов данных 2 8x4x32
Кэш-память команд 32x48 бит
„ЗЕ/
Кэш-память команд 32x48 бит
„ЗЕ/
PMD Мультиплексор EPD шины данных DMD
PMD Мультиплексор EPD шины данных DMD
Шина DMD 32/40/64
Шина DMD 32/40/64
Порт процессораПорт ввода/вывода
адреса данные данные адреса
Порт процессораПорт ввода/вывода
адреса данные данные адреса
Тестирование 7 и эмуляция №. (JTAG)
Тестирование 7 и эмуляция №. (JTAG)
48/64
48/64
ЮА
32 ( Внешний порт
УРМА Мультиплексор — -И ЕРА шины адреса ЦРМА
Г|Т^ультипроцессорныТ
| Jинтерфейс
ЮА
32 ( Внешний порт
УРМА Мультиплексор — -И ЕРА шины адреса ЦРМА
Г|Т^ультипроцессорныТ
| Jинтерфейс
32,
32,
64
64
Контроллер ПДП^^—т)
Контроллер ПДП^^—т)
(РЕу)
(РЕу)
Устройство барабанного
Устройство барабанного
Умножитель
Умножитель
Управление,состояние,буферыданных
Управление,состояние,буферыданных
Порты линков(6)
Порты линков(6)
Последовательный порт (2)
Последовательный порт (2)
уПроцессор ввода/вывода (ЮР) у
уПроцессор ввода/вывода (ЮР) у
Рис. 3.24. Структура микропроцессора ADSP-2116X
В табл. 3.3 приведены результаты тестирования микропроцессоров семейства SHARC на распространенных алгоритмах ЦОС.
Таблица 3.3. Производительность микропроцессоров семейства SHARC
ADSP-21065L SHARC
ADSP-21160 SISD
ADSP-21160 SIMD
Тактовая частота
66 МГц
100 МГц
100 МГц
Длительность такта
15 нс
10 нс
10 нс
Mflops средняя
132 Mflops
200 Mflops
400 Mflops
Mflops пиковая
198 Mflops
300 Mflops
600 Mflops
Таблица 3.3 (окончание)
ADSP-21065L SHARC
ADSP-21160 SISD
ADSP-21160 SIMD
Комплексное БПФ на 1024 точки
274 мкс
180 мкс
90 мкс
Звено КИХ-фильтра
15 нс
10 нс
5 нс
Звено БИХ-фильтра
60 нс
40 нс
20 нс
Умножение матриц: [3x3] *[3x1]
135 нс
90 нс
45 нс
[4x4] *[4x1]
240 нс
160 нс
80 нс
Деление
90 нс
60 нс
30 нс
Извлечение квадратного корня
135 нс
90 нс
45 нс
Микропроцессор TigerSHARC - ADSP-TS001
Пути дальнейшего повышения производительности компания Analog Devices связывает со статическим выявлением параллелизма уровня команд.
ADSP-TS001 — первый микропроцессор семейства TigerSHARC с новой статической суперскалярной архитектурой [136]. Процессоры TigerSHARC сочетают возможности цифровой обработки сигналов с особенностями RISC и VLIW.
В ADSP-TS001 поддерживаются на высоком уровне такие присущие процессорам ЦОС характеристики, как короткий машинный такт с детерминированной длительностью, быстрая реакция на прерывания и эффективный интерфейс с периферийными устройствами. Это достигается использованием VLIW-подхода к планированию загрузки функциональных блоков (выявление параллелизма уровня команд на этапе компиляции и возможность независимого задания в программе порядка загрузки функциональных блоков) и RISC-подхода к исполнению команд (фиксированная структура команды, конвейерное выполнение за один такт до четырех 32-разрядных операций над данными в регистровом файле, предсказание переходов и т. д.).
Работая на тактовой частоте 150 МГц, процессор ADSP-TS00I обеспечивает наибольшую производительность среди процессоров семейства SHARC как при обработке данных с фиксированной точкой, так и при работе с данными в формате с плавающей точкой. ADSP-TS001 может обрабатывать 8-, 16-,
32-разрядные типы данных с фиксированной и плавающей точкой, причем скорость обработки увеличивается при уменьшении разрядности данных.
Рассмотрим основные характеристики микропроцессора ADSP-TS001.
Производительность:
1200 ММАС/с (Millions MAC per Second — миллионов "умножений с накоплением" в секунду) на частоте 150 МГц — 16 бит с фиксированной точкой;
300 ММАС/с на частоте 150 МГц — 32 бита с плавающей точкой;
900 Mflops — 32 бита с плавающей точкой.
Память:
6 Мбит встроенной SRAM, общей для данных и команд (в отличие от традиционной гарвардской архитектуры);
адресуемое пространство до 4 Гбайт;
встроенный контроллер динамической памяти SDRAM.
Коммуникационные возможности:
скорость передачи данных через внешнюю шину 600 Мбайт/с;
суммарная скорость передачи данных через 4 порта связи 600 Мбайт/с;
возможность объединения в многопроцессорную конфигурацию (до 8 процессоров ADSP-TS001) без использования дополнительных интерфейсных схем;
4 порта ввода/вывода общего назначения.
Внутренняя структура процессора TigerSHARC показана на рис. 3.25.
В состав микропроцессора входят: вычислительные блоки, память, 2 АЛУ адресной арифметики, блок формирования последовательности команд (секвенсор) и периферийные компоненты.
Каждый из вычислительных блоков X и У содержит 32-регистровый файл, умножитель, АЛУ и 64-разрядное устройство сдвига.
Эффективная загрузка функциональных устройств микропроцессора, планируемая в соответствии с VLIW-подходом на стадии компиляции программы, позволяет процессору в одном такте выполнять восемь 40-разрядных операций умножения с накоплением 16-разрядных данных, две 40- разрядных операции умножения с накоплением 16-разрядных комплексных чисел или две 80-разрядные операции умножения с накоплением 32- разрядных данных.
Два АЛУ (J, К) предназначены для вычисления адресов, но могут быть использованы и для выполнения целочисленных операций над данными. Каждое АЛУ имеет свой 32-регистровый файл, поддерживает циклические буферы и бит-реверсивную адресацию.
СеквенсорСеквенсоралу иа'алу иа'АЛУ нк*АЛУ нк*ОООО128входов128входов^ 128/ 128 „ ^[^ 128/ 128 „ ^[128128128:IV/ 128128:IV/ 128Вычислительныйблок XВычислительныйблок XО Гр" еО Гр" еАЛУАЛУУстройство умноженияУстройство умножения3131ррУстройство сдвигаУстройство сдвига3131РегистрыРегистрыJlJl3131РегистрыРегистрыАтMD2: MD1АтMD2: MD1MDOMDO~^ 128 IV/ 128~^ 128 IV/ 128Вычислительныйблок YВычислительныйблок YОО3131128128Р еР еррАЛУАЛУУстройство умноженияУстройство умноженияУстройствосдвигаУстройствосдвигаВнешнийпортВнешнийпортпдппдпПериферияПериферия128128МО2МбитМО2МбитМ12МбитМ12МбитМ22МбитМ22МбитВнутренняя памятьВнутренняя память
Секвенсор
Секвенсор
алу иа'
алу иа'
АЛУ нк*
АЛУ нк*
О
О
О
О
128входов
128входов
^ 128
/ 128 „ ^[
^ 128
/ 128 „ ^[
128
128
128:
IV/ 128
128:
IV/ 128
Вычислительныйблок X
Вычислительныйблок X
О Гр" е
О Гр" е
АЛУ
АЛУ
Устройство умножения
Устройство умножения
31
31
р
р
Устройство сдвига
Устройство сдвига
31
31
Регистры
Регистры
Jl
Jl
31
31
Регистры
Регистры
АтMD2
: MD1
АтMD2
: MD1
MDO
MDO
~^ 128 IV/ 128
~^ 128 IV/ 128
Вычислительныйблок Y
Вычислительныйблок Y
О
О
31
31
128
128
Р е
Р е
р
р
АЛУ
АЛУ
Устройство умножения
Устройство умножения
Устройствосдвига
Устройствосдвига
Внешнийпорт
Внешнийпорт
пдп
пдп
Периферия
Периферия
128
128
МО2Мбит
МО2Мбит
М12Мбит
М12Мбит
М22Мбит
М22Мбит
Внутренняя память
Внутренняя память
Рис. 3.25. Структура микропроцессора ADSP-TSOO1
Секвенсор обеспечивает порядок исполнения команд, при котором каждая очередная команда выполняется в соответствии с результатом предварительно заданного условия. Кроме того, одна и та же команда может быть выполнена двумя вычислительными блоками одновременно с использованием различных значений данных (SIMD-обработка).
Для уменьшения потерь производительности, связанных с необходимостью перезагрузки исполнительных конвейеров в случае выполнения переходов, в микропроцессоре используются буфер адресов перехода (ВТВ — Branch Target Buffer) и статическое предсказание переходов.
Внутренняя и внешняя память микропроцессора организованы в виде единого адресного пространства. Внутренняя память разделена на три 128- разрядных блока по 2 Мбит каждый, что позволяет при обращении к памяти читать из нее в регистровый файл учетверенные, длинные и нормальные слова, выбирать в каждом цикле до четырех 32-разрядных команд. Одновременно может быть загружено в регистровый файл или записано в память 256 битн данных. Данные с длиной слова 8, 16 или 32 разряда могут записываться в память последовательно в упакованном виде. При работе на тактовой частоте 150 МГц скорость обмена с внутренней памятью составляет 7,2 Гбит/с.
Шинная структура микропроцессора обеспечивает возможность одновременной передачи двух операндов результата. Три 128-разрядные шины образуют
быстродействующий канал передачи данных между внутренними функциональными блоками и внешними периферийными устройствами. Высокоскоростной 64-разрядный интерфейс внешней шины позволяет строить на базе ADSP-TS001 мультипроцессорные системы, объединяющие до 8 процессоров. На рис. 3.26 показана одна из возможных подобных систем.
Рис. 3.26. Использование ADSP-TS001 в многопроцессорных системах
Наряду с внешней шиной, для взаимодействия между процессорами могут использоваться порты связи. Передача данных через порты связи выполняется отдельным процессором ввода/вывода и не требует вмешательства ЦП. Данный способ не имеет ограничений по числу взаимодействующих процессоров и обладает большей гибкостью, однако обеспечивает меньшую пропускную способность.
При производстве следующих микропроцессоров семейства TigerSHARC планируется использовать меньшие технологические нормы, что позволит увеличить тактовую частоту. Кроме этого, разные представители семейства будут различаться объемами встроенной памяти и составом интегрированных периферийных устройств.
Основная область применения микропроцессоров TigerSHARC — телекоммуникации, требующие высокопроизводительной обработки данных: базовые станции сотовых сетей третьего поколения, приложения, связанные с передачей речи по сетям с протоколом TCP/IP (VoIP — Voice over IP), серверы и сетевые концентраторы.
Микропроцессор
ADSP-21535 Blackfin
Микропроцессор ADSP-21535 — первый представитель семейства микропроцессоров Blackfin, с микросигнальной архитектурой, разрабатываемой совместно компаниями Analog Devices и Intel [137]. Процессор выпускается с начала 2002 года в двух вариантах: ADSP-21535PKB-300 (для частоты 300 МГц) и ADSP-21535PKB-200 (для частоты 200 МГц).
Особенностью данной архитектуры является сочетание в одном микропроцессоре возможностей сигнальной обработки, SIMD-обработки мультимедийных данных и RISC-подобного набора команд.
ADSP-21535 отличает чрезвычайно низкое энергопотребление при достаточно высокой производительности и широком наборе интегрированных периферийных устройств.
Производительность микропроцессора на операции "умножение с накоплением" (МАС) составляет: при частоте 300 МГц — 600 MMACS, при частоте 200 МГц - 400 MMACS.
На кристалле (рис. 3.27) помимо микропроцессорного ядра содержатся 256 Кбайт статической памяти, контроллер ПДП, контроллер прерываний, блок интерфейса системной шины, память загрузки, таймеры, контроллер внешней памяти, контроллер шины PCI, интерфейс USB, универсальный асинхронный интерфейс (UART — Universal Asynchronous Receiver/Transmitter) блок эмуляции и отладки JTAG.
Ядро ADSP-21535 состоит из 3 компонентов: устройство вычисления адреса, устройство управления и устройство обработки данных (рис. 3.28). .
Устройство вычисления адреса содержит два генератора адреса (DAG0 и DAG1), использующие общий регистровый файл. Регистровый файл включает 4 набора регистров: индексный, модификатор, длины, базы. Восемь дополнительных 32-разрядных регистров могут использоваться совместно с основными индексными регистрами в качестве указателей позиций стека и памяти.
Устройство управления содержит блок формирования последовательности команд (Sequencer), блоки выделения и декодирования команд, а также буфер команд цикла (для локального сохранения команд в целях сокращения числа обращений к памяти команд).
Рис. 3.27. Структура микропроцессора Blackfin
Рис. 3.28. Ядро микропроцессора Blackfin
Устройство обработки данных содержит 9 вычислительных устройств: 2 блока выполнения операций умножения с накоплением (МАС), два 40- разрядных АЛУ, четыре видео-АЛУ и устройство барабанного сдвига. Вычислительные устройства обрабатывают 8-, 16- или 32-разрядные данные, содержащиеся в регистровом файле.
Каждая команда МАС осуществляет умножение 16-разрядных данных за один процессорный такт с формированием 40-разрядного результата.
Каждое АЛУ может выполнять стандартный набор арифметических и логических операций, большинство из которых выполняется за один процессорный такт. Содержимое восьми 32-разрядных регистров может интерпрети-
роваться АЛУ как 32-разрядные данные или как пара 16-разрядных данных. За один процессорный такт 2 АЛУ могут вычислять до 4 результатов операций над 16-разрядными данными.
Устройство барабанного сдвига может выполнять простые и циклические сдвиги, нормализацию над 40-разрядным операндом, извлечение и хранение данных.
В микропроцессоре реализована модифицированная гарвардская архитектура в комбинации с иерархической структурой памяти. Вся память микропроцессора рассматривается как унифицированное адресное пространство размером до 4 Гбайт.
Первый уровень иерархии памяти работает на частоте ядра и имеет минимальное время доступа. Память команд этого уровня (16 Кбайт на кристалле) содержит только команды. Память данных первого уровня иерархии (два банка по 16 Кбайт на кристалле) содержит, наряду с данными, стек и локальные переменные. К этому же уровню иерархии относится и внутренняя память промежуточных результатов (scratchpad) размером 4 Кбайт. Память первого уровня может быть сконфигурирована как быстрая память прямого доступа или как кэш-память (за исключением scratchpad).
Второй уровень иерархии памяти — это внутренняя (256 Кбайт SRAM) и внешняя память, доступ к которой осуществляется за несколько процессорных тактов. Память этого уровня является общей для команд и данных.
Большое внимание при создании микропроцессоров семейства Blackfill разработчики уделили сокращению энергопотребления. В них реализовано гибкое динамическое управление питанием: в зависимости от интенсивности вычислений изменяется напряжение питания и тактовая частота работы ми кропроцессора.
Дальнейшее развитие семейства идет в направлении повышения производительности, сокращения энергопотребления и использования проблемно- ориентированного набора периферии.
К другим представителям семейства Blackfin относятся:
ADSP-21532 — с частотой 300 МГц, процессор оснащен звуковым (I2S), видео (CCIR-656) интерфейсами, а также содержит 640 Кбит SRAM и встроенный регулятор напряжения;
ADSP-BF533 — это наиболее производительный микропроцессор семейства. На тактовой частоте 600 МГц он выполняет 1200 ММАС в секунду. Процессор содержит на кристалле 1,2 Мбит статической высокоскоростной памяти, встроенный регулятор напряжения и набор периферии, ориентированный на широкий круг задач обработки мультимедийных данных. Потребление энергии данным микропроцессором составляет 280 мВт.
Новые Blackfin-процессоры поддерживают встраиваемые операционные системы, такие как Linux Embedded, ThreadX и Nucleus.
Область применения микропроцессоров семейства Blackfin — мобильные устройства, мультимедиа-устройства, игровые консоли, Internet-приложения (видеотелефоны, WWW-терминалы, NetTV).
Сигнальные микропроцессоры компании Motorola
Сигнальные микропроцессоры компании Motorola подразделяются на семейства 16- и 24-разрядных микропроцессоров с фиксированной точкой — DSP560xx, DSP561xx, DSP563xx, DSP566xx, DSP568xx и микропроцессоры с плавающей точкой — DSP960xx.
Микропроцессоры 24-разрядные с фиксированной точкой
Линия 24-разрядных микропроцессоров компании Motorola включает два семейства: DSP560xx и DSP563xx [138, 139|. Основные принципы, положенные в основу архитектуры сигнальных микропроцессоров Motorola, были разработаны и воплощены в семействе DSP560xx. Дальнейшие работы по совершенствованию сигнальных процессоров проводились по трем направлениям:
наращивание производительности 24-разрядных процессоров за счет конвейеризации функциональных модулей и повышения тактовой частоты;
создание дешевых 16-разрядных микропроцессоров с расширенными средствами взаимодействия с периферией;
разработка высокопроизводительных процессоров, включающих блок вычислений с плавающей точкой.
Далее последовательно будут рассмотрены все три направления на примере наиболее популярных представителей микропроцессорных семейств, указаны также наиболее существенные отличия процессоров в рамках одного семейства.
Микропроцессоры семейства DSP560xx
Микропроцессоры DSP56000/DSP5600I являются первыми представителями линии сигнальных процессоров компании Motorola [138]. Архитектура микропроцессоров ориентирована на максимизацию пропускной способности в приложениях ЦОС с интенсивным обменом данными. Это обеспечивается благодаря расширяемой архитектуре со сложной встроенной периферией и
универсальной подсистеме ввода/вывода. Данные свойства, а также низкое энергопотребление, минимизируют сложность, стоимость и сроки разработки прикладных систем на базе микропроцессоров DSP56000/DSP56001.
Микропроцессоры работают на частотах до 33 МГц и обеспечивают производительность около 16 MIPS, что позволяет выполнять быстрое преобразование Фурье по 1024 отсчетам за 3,23 мс.
Различие между процессорами семейства заключается в типе их внутренней памяти. Для использования во встроенном варианте микропроцессор DSP56000 может работать под управлением программы, хранимой в ППЗУ емкостью 3,75 Келов. Существует также вариант процессора DSP56000, в котором реализована защита внутренней памяти программ от чтения. DSP56001 содержит на кристалле память произвольного доступа емкостью 512 слов, 32 слова памяти (ROM) программы начальной загрузки процессора, а также два модуля памяти, предварительно запрограммированных в качестве таблиц функций экспандирования по А- и ц-закону и таблиц синусоидального преобразования (SINE).
Структуры микропроцессоров DSP56000 и DSP56001 изображены на рис. 3.29 и рис. 3.30 соответственно.
Назначение основных компонентов структуры микропроцессоров будет описано при рассмотрении общей структуры микропроцессорного семейства DSP560xx.
Дальнейшее развитие микропроцессоров DSP560xx происходило в рамках концепции общего для всех представителей семейства процессорного ядра. В состав семейства входят 24-разрядные микропроцессоры с фиксированной точкой DSP56002, 4, 7, 9, 11 [139], отличающиеся друг от друга конфигурацией внутренней памяти и периферийными устройствами.
Процессоры данного семейства характеризуются высокой пропускной способностью и расширенной разрядностью, обеспечивающей высокую точность вычислений и широкий динамический диапазон обрабатываемых данных, поддержкой энергосберегающего режима работы.
Типовая структура представителя семейства DSP560xx микропроцессора приведена на рисунке 3.31. Основными компонентами микропроцессора являются:
шины данных;
шины адресов;
АЛУ данных;
устройство генерации адресов (AGU);
устройство программного управления (PCU);
расширение памяти (порт А);
внутрикристальная схема эмуляции (ОпСЕ™);
схема умножения частоты.
Рис. 3.29. Структура микропроцессора DSP56000
Рис. 3.30. Структура микропроцессора DSP56001Рис. 3.30. Структура микропроцессора DSP56001ПортАПортА
Рис. 3.30. Структура микропроцессора DSP56001
Рис. 3.30. Структура микропроцессора DSP56001
ПортА
ПортА
Процессор содержит три независимых исполнительных устройства: устройство программного управления, устройство генерации адресов и АЛУ данных. Пересылка данных между регистрами исполнительных устройств осуществляется по двунаправленным 24-разрядным шинам: шине данных X (XDB — X Data Bus), шине данных Y (YDB), программной шине данных (PDB) и глобальной шине данных (GDB). Некоторые команды используют
шины данных X и Y как единую 48-разрядную шину. Для повышения скорости выборки операнды команды загружаются в АЛУ из модулей памяти X и У по независимым шинам XDB и YDB, а команда — по программной шине данных PDB. Обмен данных с периферийными устройствами осуществляется по шине GDB.
вв33151524-биттаймер/счетчиксобытий24-биттаймер/счетчиксобытийСинхронныйпоследова-тельныйинтерфейс(SSI) иливвод/выводСинхронныйпоследова-тельныйинтерфейс(SSI) иливвод/выводПоследо-вательныйпорт (SCI)ипи ввод/Последо-вательныйпорт (SCI)ипи ввод/Хост интер-фейс (HI)или ввод/выводХост интер-фейс (HI)или ввод/выводПамять программ512x24 ОЗУ64 х 24 ПЗУ(загрузочная)Память программ512x24 ОЗУ64 х 24 ПЗУ(загрузочная)Память данныхX512x24 ОЗУ256 х 24 ПЗУ(т/А)Память данныхX512x24 ОЗУ256 х 24 ПЗУ(т/А)Память данныхПамять данных512 х 24 ОЗУ256 х 24 ПЗУ(SINE)512 х 24 ОЗУ256 х 24 ПЗУ(SINE)Переключатель внешней шины данныхПереключатель внешней шины данныхПереключатель внешней шины адресаПереключатель внешней шины адресаКонтроллер шиныКонтроллер шиныБлок генерации адресовБлок генерации адресовПереключательвнутренней шиныданныхПереключательвнутренней шиныданныхСхема эмуляции(ОпСЕ порт)Схема эмуляции(ОпСЕ порт)УмножительтактовойчастотыУмножительтактовойчастотыТактовый генераторТактовый генераторКонтроллерпрограммныхпрерыванийКонтроллерпрограммныхпрерыванийдекодированияпрограммыдекодированияпрограммыГенераторадресапрограммыГенераторадресапрограммыУстройство управленияпрограммойУстройство управленияпрограммойАЛУ данных24 х 24 + 56 -> 56 бит МАСдва 56-разрядныхаккумулятораАЛУ данных24 х 24 + 56 -> 56 бит МАСдва 56-разрядныхаккумулятораАдресАдрес1616ДанныеДанные2424УправлениеУправление1616
в
в
3
3
15
15
24-биттаймер/счетчиксобытий
24-биттаймер/счетчиксобытий
Синхронныйпоследова-тельныйинтерфейс(SSI) иливвод/вывод
Синхронныйпоследова-тельныйинтерфейс(SSI) иливвод/вывод
Последо-вательныйпорт (SCI)ипи ввод/
Последо-вательныйпорт (SCI)ипи ввод/
Хост интер-фейс (HI)или ввод/вывод
Хост интер-фейс (HI)или ввод/вывод
Память программ512x24 ОЗУ64 х 24 ПЗУ(загрузочная)
Память программ512x24 ОЗУ64 х 24 ПЗУ(загрузочная)
Память данныхX512x24 ОЗУ256 х 24 ПЗУ(т/А)
Память данныхX512x24 ОЗУ256 х 24 ПЗУ(т/А)
Память данных
Память данных
512 х 24 ОЗУ256 х 24 ПЗУ(SINE)
512 х 24 ОЗУ256 х 24 ПЗУ(SINE)
Переключатель внешней шины данных
Переключатель внешней шины данных
Переключатель внешней шины адреса
Переключатель внешней шины адреса
Контроллер шины
Контроллер шины
Блок генерации адресов
Блок генерации адресов
Переключательвнутренней шиныданных
Переключательвнутренней шиныданных
Схема эмуляции(ОпСЕ порт)
Схема эмуляции(ОпСЕ порт)
Умножительтактовойчастоты
Умножительтактовойчастоты
Тактовый генератор
Тактовый генератор
Контроллерпрограммныхпрерываний
Контроллерпрограммныхпрерываний
декодированияпрограммы
декодированияпрограммы
Генераторадресапрограммы
Генераторадресапрограммы
Устройство управленияпрограммой
Устройство управленияпрограммой
АЛУ данных24 х 24 + 56 -> 56 бит МАСдва 56-разрядныхаккумулятора
АЛУ данных24 х 24 + 56 -> 56 бит МАСдва 56-разрядныхаккумулятора
Адрес
Адрес
16
16
Данные
Данные
24
24
Управление
Управление
16
16
^4^4
^4
^4
16-разрядная шина
24-разрядная шина
Рис. 3.31. Структура микропроцессора семейства DSP560xx
Шинная структура поддерживает основные пересылки данных типа "регистр-регистр", "регистр-память", "память-регистр". За один такт могут быть переданы два 24-битных и одно 56-битное слова. Обмен между шинами осуществляется через внутренний коммутатор, позволяющий соединить
любые две внутренние шины без добавления тактов задержки. Адреса для внутренних Х-памяти и Y-памяти данных передаются по двунаправленным 16-разрядным шинам ХАВ и YAB, а адреса памяти команд — по двунаправ- Лённой программной шине (РАВ). Внешняя память адресуется с помощью однонаправленной шины, являющейся выходом 3-входового мультиплексора шин ХАВ, YAB, РАВ.
Устройство битных операций физически расположено в блоке коммутатора, что обеспечивает ему доступ к любой области памяти и позволяет выполнять битные операции над данными в памяти, регистрах, содержимым адресных и управляющих регистров.
АЛУ данных микропроцессора выполняет над данными все арифметические и логические операции и содержит четыре 24-битных регистра-источника, два 48-битных регистра-аккумулятора, два 8-битных регистра расширения аккумуляторов, устройство сдвига, две схемы сдвига/ограничения данных и параллельное (неконвейеризированное) однотактовое устройство умножения с накоплением (МАС).
Аккумуляторы А и В служат в качестве буферных регистров шин XDB и YDB, а их 8-битные регистры расширения используются схемой сдвига/ограничения для фиксирования и обработки ситуаций переполнения в результате арифметических операций или сдвига.
АЛУ данных позволяет выполнять умножение в режиме удвоенной точности (задается установкой соответствующего бита в регистре состояния процессора). Результат умножения двух 48-битных операндов имеет 96 разрядов и содержится в четырех 24-битных регистрах.
Устройство генерации адреса (AGU) работает параллельно с другими компонентами процессора, обеспечивая вычисление требуемых адресов данных в памяти за один такт с помощью двух одинаковых 16-битных арифметических устройств, каждое из которых может выполнять линейные, модульные и циклические арифметические операции.
С каждым адресным АЛУ связаны три набора из 4 регистров: адресных — RO—R3 и R4—R7, смешения — NO—N3, N4—N7 и модификаторов МО—М3 и М4—М7. Регистры используются тройками: R0:N0:M0, RI:N1:M1, R2:N2:M2, R3:N3:M3, R4:N4:M4, R5:N5:M5, R6:N6:M6 и R7:N7:M7. Адрес формируется из содержимого адресного регистра и регистра смешения с учетом типа арифметики, который определяется содержимым регистра модификатора.
Устройство программного управления генерирует адреса программы, декодирует команды, аппаратно обрабатывает команды циклического перехода, внутренние и внешние прерывания. Оно содержит 15-уровневый 32-битный системный стек (SS) и 6 непосредственно адресуемых регистров: счетчик команд (PC), счетчик цикла (LC), регистр адреса цикла (LA), регистр состояния (SR), регистр режима (OMR) и указатель стека (SP). 16-битный
регистр PC может адресовать до 65 536 команд. Системный стек сохраняет счетчик команд и регистр состояния при вызове процедур, обработке прерываний и выполнении программных циклов.
Команды процессора выполняются в 3-этапном (предвыборка, декодирование, выполнение) конвейере с последующим анализом 5 возможных состояний процессора: "нормальное", "исключение", "сброс", "ожидание" и "останов".
В состав PCU входят три блока: блок декодирования программы (PDC), генератор адреса программы (PGA) и программный контроллер прерываний (PIC). PDC декодирует команды, загруженные в командный буфер и генерирует все необходимые для выполнения команды управляющие сигналы. Содержимое командного буфера дублируется для более эффективного выполнения команд повтора (REP) и перехода.
Основное назначение блока PGA — аппаратное формирование адресов циклов. При инициализации цикла адрес его начала помещается в стек, значение переменной цикла содержится в регистре LC, адрес конца цикла — в LA. При завершении очередной итерации адрес перехода извлекается из стека, а не формируется программно, что существенно повышает скорость обработки.
PIC получает все запросы на прерывание, классифицирует их и генерирует адрес вектора прерываний. Прерывания могут быть маскируемыми — уровни О (нижний уровень), 1, 2 и немаскируемыми — уровень 3 (высший уровень).
Порт расширения памяти А обеспечивает синхронный обмен данными с различными типами памяти и внешними устройствами по 24-разрядной шине данных. Порт работает с высоко- и низкоскоростной памятью, а также другими универсальными и сигнальными процессорами в режиме "ведущий/ведомый" (master/slave).
Внутрикристальный эмулятор — схема, позволяющая интерактивно анализировать состояние регистров, памяти, периферийных устройств и управлять процессом отладки программы, разрешать отладку для разработчика системы или запрещать другим пользователям доступ к внутренним ресурсам процессора.
Умножитель частоты позволяет процессору работать на повышенной внутренней тактовой частоте, обеспечивая синхронизацию внутренних и внешних тактовых импульсов, а также понижение частоты в энергосберегающем режиме.
Программная модель микропроцессора представляется в виде трех параллельно функционирующих устройств: ALU, AGU и PCU. Система команд микропроцессора ориентирована на эффективную поддержку языка С и организована таким образом, чтобы обеспечить занятость этих устройств в течение каждого такта, достигая при этом максимальной скорости выполнения программы.
Команды микропроцессора имеют переменную длину: 1 или 2 слова (24битных). Типичная команда DSP560xx содержит поле кода операции, определяющее соответствующее действие ALU. AGU или PCU, поле операндов и два поля, задающих пересылки по шинам XDB и YDB, выполняемые микропроцессором параллельно с основной операцией. Пример команды МАС приведен на рис. 3.32.
Opcode
Operands
XDB
YDB
МАС
Х0, Y0, А
X: (R0)+, ХО
Y: (M)+,Y0
Рис. 3.32. Структура команды микропроцессора DSP560xx
Благодаря своей высокой производительности и низкой стоимости семейство микропроцессоров DSP560xx широко используется в самых различных областях: коммуникационных системах, цифровых аудиосистемах, робототехнике, в военной электронике.
Микропроцессоры семейства DSP563xx
Микропроцессоры этого семейства |140| объединяет процессорное ядро нового типа (NDE — New DSP Engine), которое, благодаря конвейеризации обработки в функциональных блоках, обеспечивает выполнение команды за каждый такт, что повышает производительность в два раза по сравнению с ядром DSP560xx, при обеспечении программной совместимости.
Ядро DSP563xx содержит АЛУ данных, устройство генерации адресов памяти, устройство программного управления, контроллер кэш-памяТи команд, контроллер ПДП, умножитель частоты, а также шины расширения периферии и памяти. Для уменьшения стоимости создаваемых систем DSP563xx снабжен универсальным интерфейсом внешней памяти различных типов: DRAM, SRAM, SDRAM и т. д. Параллельный 6-канальный контроллер ПДП обеспечивает требуемую для ЦОС-приложений высокую скорость передачи данных. Особое внимание при создании микропроцессора было уделено снижению энергопотребления как в пассивном, так и в активном режимах.
Основные технические характеристики микропроцессорного семейства DSP563xx:
производительность — 66/80/100 MIPS при тактовой частоте 66/80/100 МГц;
полностью конвейеризированное параллельное устройство умножения с накоплением;
56-разрядное устройство барабанного сдвига;
управляемая пользователем внутрикристальная кэш-память команд;
Структура микропроцессора DSP56300 изображена на рис. 3.33.
Микропроцессоры 16-разрядные с фиксированной точкой
Семейства DSP561xx, DSP566xx и DSP568xx представляют 16-разрядные
Микропроцессоры семейства DSP561xx
ванной точкой — DSP56156 и DSP56166 [141]. Представители данного се-
DSP56156 был разг
кационных протоколов и речевых сигналов. Некоторыми командами и способами адресации разработчики вынуждены были пожертвовать для уменьшения длины кода команды.
Микропроцессор содержит встроенный сигма-дельта-декодер, обеспечивающий непосредственный ввод аналогового сигнала, а также 2 Кслова внутрикристальной памяти, ■
Структура микропроцессорного ядра представлена на рис. 3.35.
не входит в состав ядра
Рис. 3.35. Структура микропроцессорного ядра DSP561xx
Приведем основные технические характеристики микропроцессоров семейства:
производительность до 30 MIPS на частоте 60 МГц;
однотактовый параллельный умножитель с накоплением (16 х 16 разрядов);
два 40-разрядных аккумулятора с байтом расширения;
плавающая и целочисленная арифметика различной точности;
высокопараллельный набор команд с гибкой системой адресации;
аппаратная реализация вложенных циклов, включая бесконечные циклы;
три 16-битные внутренние шины данных и три 16-битные внутренние шины адреса;
программируемое время доступа к внешней шине;
интерфейс с отображением в память периферийных устройств;
внутренний блок эмуляции и отладки (ОпСЕ);
низкое потребление энергии, наличие средств энергосбережения.
Микропроцессоры
семейства DSP566xx
Семейство микропроцессоров DSP566xx, как и семейство DSPlxx, специально разработано для применения в электронных схемах сотовых телефонов, для которых весьма важным является не только возможность цифровой обработки сигналов в широком динамическом диапазоне его интенсивности, но и наличие высокоэффективной системы энергосбережения.
Семейство включает микропроцессоры DSP56602, DSP56603, отличающиеся конфигурацией используемой памяти и составом периферийных устройств 1142].
Микропроцессоры данного семейства являются высокоинтегрированными устройствами, в состав которых входит общее для семейства 16-разрядное микропроцессорное ядро, конвейеризированное устройство умножения с накоплением, проблемно-ориентированное ППЗУ, раздельные блоки памяти для хранения данных прикладной программы и программы начальной загрузки.
По системе команд микропроцессоры DSP566xx совместимы с DSP563xx.
Структура микропроцессора семейства DSP566xx приведена на рис. 3.36.
Приведем основные технические характеристики микропроцессоров данного семейства:•
два 40-разрядных аккумулятора микропроцессора снабжены битом расширения для контроля переполнения результата;
40-разрядное устройство барабанного сдвига;
аппаратная поддержка выполнение вложенных циклов и быстрый возврат из программ обработки прерываний;
периферийные схемы микропроцессора включают три порта общего назначения, с общим числом линий 31, которые могут быть использованы как 8-битный параллельный интерфейс к хост-ми кропроцессору и синхронный последовательный интерфейс;
производительность — около 60 MIPS;
рабочее напряжение от 1,8 до 3,3 В, потребляемый ток от 0,55 до 0.85 мА.
17 Ini, 10R6
Микропроцессоры семейства DSP568xx
В микропроцессорах данного семейства объединены функции высокопроизводительной цифровой обработки сигналов и интеллектуального контроллера. В настоящее время семейство включает микропроцессоры DSP56L811 и DSP56L812 [143]. Область применения данных микропроцессоров весьма широка: цифровые беспроводные средства связи, радиомодемы, цифровые автоответчики и т. п. Благодаря высокой степени интеграции функциональных модулей в микропроцессоре решения на его базе отличаются не только высокой производительностью, но и низкой стоимостью.
Основные технические характеристики микропроцессоров семейства:
производительность — до 25 MIPS на частоте 40 МГц;
однотактовый 16 х 16 умножитель-накопитель;
два 36-битных аккумулятора с битами расширения;
16-битное барабанное устройство сдвига;
аппаратная поддержка циклов и репликации команд;
два входа внешних прерываний;
система команд, включающая поддержку функций ЦОС и контроллеров;
программный стек подпрограмм и прерываний с неограниченной глубиной;
расширенные внутрикристальные средства эмуляции и отладки;
эффективная система энергосбережения.
Структура микропроцессора DSP568xx приведена на рис. 3.37.
Микропроцессор является полностью 16-разрядным. Длина команды процессора также составляет 16 бит, поэтому по системе команд микропроцессор несовместим с ранее рассмотренными семействами 24-разрядных микропроцессоров. Память данных представлена единым блоком емкостью 2 Келов. Программная память состоит из блока ROM, содержащего программу начальной загрузки, и памяти для хранения программы, загружаемой программой из внешнего источника.
Программируемая универсальная подсистема ввода/вывода микропроцессора может быть сконфигурирована в соответствии с требованиями конкретной задачи: выводы подсистемы могут быть индивидуально настроены для ввода или вывода, могут мультиплексироваться между периферийными блоками микропроцессора, могут использоваться как выводы подсистемы обработки прерываний. Подобное универсальное использование выводов процессора позволяет уменьшить число контактов микросхемы.
В табл. 3.4 приведены характеристики других представителей микропроцессорного семейства DSP568xx.
от 16 до 32
!линий GRIDI
Рис. 3.37. Структура микропроцессора DSP568xx
Гпава 3
Таблица 3.4. Характеристики микропроцессоров семейства DSP568xx
Наимено- ОЗУ (ко- ПЗУ (ко- < ваннеманды) манды)
ОЗУПЗУ ПЗУ за- Таймеры I/O Последо-А/D Напряже- Частота
(данные) (данные) грузкивательныйниепита- шины,
интерфейсния, В МГц
DSP56824 128x16 32Кх16
2Кх16 2Кх16-3 16-161 SPI-2,770
разрядных
DSP56F8011К х 16 8К х 16
Flash
1Кх16 2Кх16 2Кх16 1 счетве-11SPIДва3,380
FlashFlash ренныйSCI4x12-бит
модульАЦП
таймера
DSP56F803 512 х 16 32К х 16 Flash
2Кх16 4Кх16 2Кх16 2 счетве-16SPIДва3,380
HashFlash ренныхSCI4 х 12-бит
модуляCANАЦП
таймера
DSP56F805 512 х 16 32К х 16 Flash
2Кх16 4Кх16 2Кх16 2 счетве-32SPI2Два3,380
HashFlash ренныхSCI4 х 12-бит
модуляCANАЦП
таймера
DSP56F807 2К х16 60К х16 Flash
4Кх16 8Кх16 2Кх16 4 счетве- 32 SPI2 SCI Четыре3,380
RashFlash ренныхCAN4 х 12-бит
модуляАЦП
таймера
Сигнальные, коммуникационные и медийные микропроцессоры
Микропроцессоры
с плавающей точкой семейства DSP9600X
Микропроцессоры данного семейства предназначены для обработки данных в формате с плавающей точкой.
Представителем данного семейства является 32-разрядный микропроцессор DSP96002 [144]. Это однокристальный универсальный микропроцессор с устройством обработки данных в формате с плавающей точкой. DSP96002 содержит 1024 слова памяти, равномерно разделенной между памятью данных X и Y, 1024 слова программной памяти, два ППЗУ данных, двухканальный контроллер ПДП, подсистему начальной загрузки программы, а также встроенные средства отладки и эмуляции.
Структура микропроцессора DSP96002 приведена на рис. 3.38.
ЦПУ состоит из трех функционирующих параллельно 32-разрядных исполнительных устройств: АЛУ данных, устройства генерации адреса и устройства программного управления. Процессор содержит два идентичных порта расширения памяти, обеспечивающих интерфейс с различными типами памяти (SRAM, DRAM, VRAM). Каждый порт может быть преобразован в хост-интерфейс, который обеспечивает возможность простой интеграции процессора в мультипроцессорную систему.
Основные характеристики микропроцессора:
однотактное устройство умножения с накоплением разрядностью 32 х 32;
высокопараллельный специализированный набор команд;
аппаратная поддержка выполнения программных циклов и быстрого возврата из прерываний;
расширенная до 1 Келов кэш-память команд;
пять 32-разрядных адресных шин — внутренние однонаправленные шины адреса X и Y, программная адресная шина и две внешние адресные шины;
семь 32-разрядных шин данных — внутренние двунаправленные шины данных X и Y, внутренняя двунаправленная глобальная шина данных, внутренняя двунаправленная шина данных ПДП, внутренняя двунаправленная программная шина данных и две внешних шины данных;
внутрикристальная память микропроцессора включает 1024 слова программной памяти (RAM), две независимых памяти данных по 512 слов каждая (RAM), два независимых ПЗУ емкостью 1024 слова и ПЗУ начальной загрузки емкостью 64 слова;
внешняя память процессора может составлять по 232 32-разрядных слов для команд и данных;
на тактовой частоте 40 МГц микропроцессор имеет производительность 200 MIPS.
g idoug idouсмсмQQV idouV idou
g idou
g idou
см
см
Q
Q
V idou
V idou
Коммуникационные процессоры
Еще одна категория специализированных процессоров, достаточно близкая по архитектуре к сигнальным, но имеющая существенные отличия, — коммуникационные процессоры. С сигнальными микропроцессорами ее роднит общая область применения — системы связи, а отличия обусловлены местом использования в трактах телекоммуникационных систем и задачами, которые возложены на эти процессоры.
Если традиционные сигнальные микропроцессоры ориентированы на эффективную реализацию протоколов физического и канального уровня, то коммуникационные микропроцессоры предназначены, в основном, для обработки протоколов сетевых и транспортных уровней. Общим для сигнальных и коммуникационных микропроцессоров является характер процесса обработки: поточная обработка данных в реальном режиме времени.
В разд. 3.7 будет рассмотрен еще один класс микропроцессоров — микропроцессоры для мобильных коммуникационных устройств. Эти микропроцессоры объединяют в себе черты и сигнальных, и коммуникационных, и мультимедийных микропроцессоров, поскольку должны реализовывать функции, характерные для перечисленных типов устройств.
Микропроцессор МРС8260
Микропроцессор компании Motorola — МРС8260 PowerQUICC II™ |145] — представляет собой универсальный коммуникационный процессор, который объединяет в одном кристалле высокопроизводительное вычислительное RISC-ядро с архитектурой PowerPC, гибкое устройство системной интеграции и множество периферийных контроллеров.
На базе микропроцессора могут быть реализованы устройства для различных коммуникационных приложений, в том числе:
сервер удаленного доступа;
мост LAN-WAN;
базовая станция сотовой связи;
маршрутизатор локальной вычислительной сети и др.
Структурная схема микропроцессора приведена на рис. 3.39.
В состав микропроцессора входят три основных функциональных блока:
микропроцессорное ядро с устройством управления памятью и кэшпамятью команд и данных;
устройство системного интерфейса;
модуль коммуникационного процессора.
Микропроцессор МРС8260 имеет две шины для обеспечения коммуникационных потребностей высокопроизводительного микропроцессорного ядра и быстрых коммуникационных каналов: микропроцессорная шина 60х (64- разрядная шина данных и 32-разрядная шина адреса) и локальная шина (32- разрядная шина данных, 18-разрядная шина адреса). Ядро и модуль коммуникационного процессора подключены к шине 60х.
Как микропроцессорное ядро, так и модуль коммуникационного процессора содержат собственные делители частоты, позволяюшие осуществлять независимую настройку компонентов на оптимальную частоту работы.
Ядро процессора представляет собой встроенный вариант 32-разрядного целочисленного RISC-микропроцессора PowerPC — МРСбОЗе, работающего на тактовой частоте до 200 МГц с раздельной 4-входовой множественноассоциативной кэш-памятью команд и данных объемом по 16 Кбайт каждая. Микропроцессор не поддерживает операции над данными в формате с плавающей точкой.
Ядро микропроцессора может быть отключено. В этом случае микропроцессор функционирует как периферийное устройство внешнего ядра.
В состав устройства системного интерфейса микропроцессора входят два контроллера памяти, совместимые с большинством существующих типов памяти (SDRAM, DRAM, EPROM, Flash и др.) и прочие периферийные устройства, превращающие данный микропроцессор в полнофункциональную систему в одном кристалле.
Устройство системного интерфейса содержит следующие компоненты:
64-разрядную системную шину, совместимую с шиной 60х;
локальную шину (32 линии передачи данных, 32-разрядная внутренняя и 18-разрядная внешняя шины адреса), работающую на той же частоте, что и системная шина 60х. Эта шина используется для обменных операций коммуникационного контроллера;
контроллер памяти, обеспечивающий работу с 12 банками памяти, которые могут быть подключены как к системной, так и к локальной шине микропроцессора;
порт тестирования и отладки микропроцессора JTAG;
таймеры реального времени и интервальный таймер;
интерфейс кэш-памяти второго уровня.
Модуль коммуникационного процессора представляет собой набор схем, осуществляющих взаимодействие с периферией и обеспечивающих на аппаратном уровне разнообразные интерфейсные функции, включая поддержку коммуникационных протоколов, таких как Fast Ethernet и ATM, обработку полнодуплексных мультиплексированных каналов с временным разделением и др.
Модуль коммуникационного процессора содержит:
коммуникационный процессор (СР — Communication Processor), представляющий собой встроенный 32-разрядный RISC-процессор. Коммуникационный процессор подключен к отдельной локальной шине, благодаря чему он не оказывает влияния на микропроцессорное ядро, подключенное к шине 60х. СР выполняет низкоуровневые задачи и инициирует обработку ПДП-запросов, освобождая тем самым микропроцессорное ядро для выполнения задач высокого уровня. Система команд СР оптимизирована для коммуникационных задач, в то же время, коммуникационный процессор может выполнять и приложения общего назначения, разгружая основной процессор;
два независимо функционирующих последовательных ПДП-контроллера, оптимизированных для выполнения блочных пересылок по локальной шине и шине 60х;
три полнодуплексных высокоскоростных последовательных контроллера, поддерживающих протокол ATM со скоростью передачи 155 Мбит/с (интерфейс UTOPIA) и протоколы IEEE 802.3, Fast Ethernet, HDLC (до 45 Мбайт/с). Возможна также сквозная (прозрачная) пересылка битных потоков;
два многоканальных контроллера, способных совместно обрабатывать до 256 HDLC потоков со скоростями до 64 Кбит/с, принимаемых по 8 интерфейсным каналам. Многоканальный контроллер может также обрабатывать суперканалы со скоростями выше 64 Кбит/с и субканалы 64-ки- лобитного канала;
четыре полнодуплексных последовательных коммуникационных контроллера, поддерживающих протоколы IEEE802.3/Ethernet, HDLC, Local Talk, UART, BISYNC и прозрачную пересылку данных;
два полнодуплексных последовательных управляющих контроллера (SMC), поддерживающих протоколы GCI, UART и прозрачную пересыпку данных;
последовательный периферийный интерфейс SPI и контроллеры шин 12С;
устройство распределения временных интервалов (TSA — Time-slot assigner), обеспечивающее мультиплексирование потоков данных от источников: 4 полнодуплексных последовательных коммуникационных контроллера, 3 высокоскоростных последовательных контроллера, 2 последовательных управляющих контроллера.
Микропроцессор использует два напряжения питания: для внутренних схем — 2 В, для подсистем ввода/вывода — 3,3 В и потребляет около 2,5 Вт. Производительность МРС8260 на тактовой частоте 200 МГц составляет 280 MIPS, на тестах SPECint95 — 5,1.
Сетевые микропроцессоры компании Intel
Первым представителем сетевых процессоров компании Intel является IXP1200 [146]. Это высокоинтегрированный гибридный процессор, ориентированный на использование в коммуникационных приложениях, для которых большое значение имеют эффективный доступ к подсистеме быстродействующей памяти, устройствам ввода/вывода, наряду с высокопроизводительной обработкой данных различной длины (битн, байтов, слов, двойных слов).
Структура микропроцессора IXP1200 приведена на рис. 3.40.
РС1-устройствоРС1-устройствоХост ЦПУ (опционально)Хост ЦПУ (опционально)Шина PCI 66 МГцШина PCI 66 МГцРис. 3.40. Структура микропроцессора IXP1200Рис. 3.40. Структура микропроцессора IXP1200
РС1-устройство
РС1-устройство
Хост ЦПУ (опционально)
Хост ЦПУ (опционально)
Шина PCI 66 МГц
Шина PCI 66 МГц
Рис. 3.40. Структура микропроцессора IXP1200
Рис. 3.40. Структура микропроцессора IXP1200
Основными компонентами микропроцессора являются: микропроцессорное ядро StrongARM, 6 блоков обработки данных (БОД), блок интерфейса с
шиной IX, блок интерфейса с шиной PCI и блоки управления внешней памятью SDRAM и SRAM.
Блок обработки данных представляет собой 32-разрядный мультитредовый RISC-процессор, работающий на тактовой частоте 162 МГц. БОД выполняют обработку и обмен данными независимо от вычислительного ядра процессора.
Каждый БОД содержит 4 программных счетчика, АЛУ, устройство сдвига, 128 регистров общего назначения (32-разрядных), 128 регистров обмена данными (32-разрядных) и локальную память объемом 4 Кбайт. Высокоспециализированный набор команд микропроцессора БОД, аппаратная поддержка переключения контекста и синхронизации процессов, совмещенное в одном процессорном цикле выполнение операций АЛУ и устройством сдвига обеспечивают производительность более 109 оп/с.
Блок интерфейса с шиной IX обеспечивает связь микропроцессора с сетевой периферией, подключенной к данной шине. Шина IX может быть сконфигурирована в виде одной двунаправленной 64-разрядной шины или двух 32- разрядных однонаправленных шин и имеет максимальную пропускную способность 4,2 Гбайт/с на частоте 66 МГц, и 5 Гбайт/с на частоте 80 МГц.
Микропроцессор IXP1200 поддерживает 2 типа памяти: статическую (SRAM) и динамическую (SDRAM). Управляют работой статической и динамической памяти соответствующие встроенные в микропроцессор контроллеры.
Статическая память используется в качестве быстрой памяти для хранения таблиц поиска, а динамическая предназначена для хранения текущей информации и очередей обмена. Микропроцессор IXP1200 может адресовать до 256 Мбайт динамической памяти.
Блок управления SDRAM обслуживает запросы на чтение/запись данных от блока PCI (включая поддержку режима ПДП) от ядра микропроцессора и блоков обработки данных. На частоте 81 МГц пиковая пропускная способность интерфейса с SDRAM составляет 684 Мбайт/с.
Блок управления SRAM принимает запросы к памяти от ядра микропроцессора и БОД и управляет собственно памятью SRAM (до 8 Мбайт), а также памятью загрузки BootROM (до 8 Мбайт) и портами периферийных устройств.
На частоте 81 МГц при 32-битном доступе к SRAM обеспечивается пиковая пропускная способность 334 Мбайт/с.
Блок интерфейса с шиной PCI процессора IXP1200 управляет 32-разрядной PCI-шиной, предназначенной для соединения с хост-процессором (в случае его использования) и другими периферийными устройствами с PCI- интерфейсом. Поддерживается спецификация PCI 2.1 (32 бита, 66 МГц) с пиковой скоростью передачи данных 264 Мбайт/с.
Представителями следующего поколения сетевых процессоров являются микропроцессоры семейства IPX2xxx (IPX2400, IPX2800, 1РХ2850) [147].
Микропроцессор IPX2850 (рис. 3.41) объединяет ядро Intel® XScale (работает на частоте 700 МГц) и 16 независимых 32-разрядных мультитредовых БОД (работают на частоте 1,4 ГГц), которые дают совокупную производительность более чем 23,1 х 109 операций в секунду. Блоки обработки данных обеспечивают вычислительную мощность, необходимую для решения задач, для которых ранее требовались дорогостоящие высокоскоростные заказные микросхемы.
На кристалле расположены также контроллеры статической (4 канала QDR SRAM) и динамической (3 канала RDRAM) памяти, PCI-интерфейс, сетевой интерфейс, интерфейсы периферийных устройств, память хеш-таблиц, а также блокнотная память (Scratchpad) для хранения промежуточных результатов обработки.
IXP2850 содержит 2 встроенных блока, реализующих распространенные криптографические алгоритмы, такие как 3DES/DES, AES, SHA-1, что делает эффективным использование процессора в устройствах, работающих в сетях с протоколами IPsec и TCP/SSL. Процессор способен осуществлять криптографическую обработку потоков данных со скоростью до 10 Гбит/с.
Представители следующего семейства — микропроцессоры IXP42x (IXP420, IXP421, 1ХР422, IXP425) |148] предназначены для использования в аппаратуре систем пакетной передачи данных и представляют собой совокупность высокопроизводительного микропроцессорного ядра Intel XScale, встроенных сетевых устройств и широкого набора интерфейсов периферийных устройств. Функциональные блоки микропроцессора объединены внутренними шинами: усовершенствованной высокопроизводительной шиной (АНВ — Advanced High-performance Bus) и усовершенствованной шиной периферии (APB -= Advanced Peripheral Bus).
На рис. 3.42 показана структура микропроцессора 1ХР422.
Основные характеристики микропроцессоров семейства 1ХР42х:
тактовая частота ядра от 266 МГц;
интегрированные средства аппаратной поддержки выполнения распространенных криптографических алгоритмов SHA-1, MD5, DES, 3DES, AES;
два интегрированных контроллера 10/100 Base-T Ethernet;
SDRAM-контроллер, поддерживающий от 8 до 256 Мбайт памяти;
низкое потребление мощности 1,0—1,5 Вт;
Q контроллер USB версии 1.1;
два универсальных высокоскоростных последовательных интерфейса (UART) со скоростью до 921 Кбод каждый;
Рис. 3.41. Структура микропроцессора IPX2850
Рис. 3.42. Структура микропроцессора IXP422
1BUJ
16 выходов портов общего назначения;
PCI-интерфейс v2.2 33/66 МГц, для объединения до 4 процессоров;
16-разрядная конфигурируемая шина расширения.
Представители семейства отличаются тактовыми частотами и составом встроенных в микропроцессор компонентов.
Областями применения микропроцессоров являются: точки доступа систем беспроводной связи, аппаратура сетей VPN, сетевые шлюзы, маршрутизаторы и коммутаторы, сетевые принтеры и т. п.
Микропроцессоры Intel с архитектурой РСА
Относительно новым для компании Intel направлением стало создание микропроцессоров для мобильных коммуникационных устройств: сотовых телефонов, карманных компьютеров, коммуникаторов, интернет-терминалов. Архитектура процессоров, разработанная Intel специально для подобных устройств, получила название Intel Personal Internet Client Architecture (Intel РСА — архитектуры персональных клиентов). К процессорам данного типа относятся представители микропроцессорных семейств РХА25х, РХА2бх [149].
Основными чертами РСА-микропроцессоров являются широкий набор встроенных коммуникационных устройств, поддержка сигнальной обработки на уровне ядра, низкое энергопотребление и малые габариты при достаточно высокой производительности.
Внутренняя структура микропроцессора РХА255 показана на рис. 3.43.
Оба микропроцессорных семейства построены на микропроцессорном ядре XScale, которое является развитием микропроцессорного ядра StrongARM, Микропроцессорное ядро XScale нс применяется как самостоятельный продукт, а используется как вычислительный блок в проблемно-ориентированных микропроцессорах и микроконтроллерах. На рис. 3.44 показаны основные структурные блоки микропроцессорного ядра XScale.
Блок умножения с накоплением МАС содержит 40-разрядный аккумулятор и 16-разрядный блок SlMD-обработки.
Устройство управления памятью, состоящее из двух блоков: памяти команд и памяти данных, поддерживает разграничение доступа к памяти и отображение виртуального адресного пространства в физическое. С различными областями памяти могут связываться всевозможные атрибуты, определяющие режимы доступа к ним (кэшируемая память, буферизируемая, способ выделения строк, способ записи и т. п.). Для ускорения преобразования виртуальных адресов в физические используются буферы преобразования адресов (TLB) команд и данных, кэширующие последние преобразования.
32 .КГц
3,68/w
Драйверы. часов , ’
г Управление' энёргр- • пдтрёбденйе|и
Генератор
Часыреальноговремени
Таймер/широтно-импульсныймодулятор
Аудио-интерфейсАС97
Интерфейс!28-кодека
Интерфейсшины PC
КонтроллерIrDA UART
Последова-тельныйинтерфейс(протоколыSSP/SPI/Microwire)
Контроллеркарт памятиMMC/SD
АппаратныйконтрольпередачиUART
ИнтерфейсBluetoothUART
Интерфейс USB1
Первичный интерфейсUART (17 линии)
контроллер цветного,LCD
'К6О^0
Шу.ча6овУ2 •
контроллер. Прерываний
9
Микропроцес-сорное ядроXScale
200, 300, 400
МГц
КонтроллерПДП(16 каналов)
у/йнтерфейс^
КонтроллерSDRAM
Мультиплексор адреса/данных <--> 18/32
КонтроллерSRAM
Пакетный к интерфейс <- -* 1 Flash-памяти
Интерфейсввода/вывода спеременнойзадержкой
Контроллер карт PCMCIA/CF
Интерфейс АВМ-шины <-> SDRAM
Рис. 3.43. Структура микропроцессора РХА255
Кэш-память команд(32 Кбайт)
Вычислительное ядро
Кэш-память данных(32 Кбайт)
RAM данных (до 28 Кбайт)
Дополнительнаякэш-памятьданных(2 Кбайт)
Блок мониторинга производительности
Устройство управленияпамятью команд
TLB
Устройство управления памятью данных
Буфер чтения
Блок отладки
Блок МАС
40-разрядный аккумулятор 16-разрядный блок 51МО=обработки
Буфер записи
Блок управления энергопотреблением
БлокJTAG
Рис. 3.44. Структурные блоки микропроцессорного ядра XScale
Кэш-память команд объемом 32 Кбайт — 32-входовая, частично-ассоциативная, с размером строки 32 байта. Процессором поддерживается возможность сохранения в кэш-памяти критичных участков кода. В дополнение к основной кэш-памяти команд существует дополнительная кэш-память размером 2 Кбайт, предназначенная для обеспечения отладочного режима работы процессора.
Процессор содержит 128 элементный буфер адресов переходов (ВТВ).
Кэш-память данных включает основную 32-входовую множественноассоциативную кэш-память емкостью 32 Кбайт и отладочную 2-входовую кэш-память емкостью 2 Кбайт. Процессор допускает возможность реконфигурирования части кэш-памяти данных для использования в качестве RAM (Random Access Memory — память произвольного доступа) для хранения специальных таблиц или часто используемых переменных.
Блок управления энергопотреблением позволяет изменять тактовую частоту и напряжение питания микропроцессора в соответствии с интенсивностью вычислений.
Для разработчиков программ предусмотрены встроенные средства монито= ринга производительности и отладки (блоки Performance Monitoring, Debug, JTAG).
По системе команд микропроцессор XScale обратно совместим с микропроцессорами семейства ARM — Advanced RISC Machines. В то же время, помимо стандартного набора команд ARM, микропроцессор XScale поддерживает набор команд Thumb. Это 16-разрядные команды, которые выполняют те же функции, что и 32-разрядный набор команд ARM, но позволяют получать более компактный программный код. Набор команд XScale дополнен также командами вычислений с плавающей точкой и специализированными командами цифровой обработки сигналов, которые выполняются в сопроцессоре. Команды выполняются над данными, содержащимися в 16 регистрах (32-разрядных).
Одно из основных отличий XScale от StrongARM заключается в исполнительном конвейере. Процессор XScale является суперскалярным: содержит основной конвейер (7 стадий), конвейер операций с памятью (8 стадий) и конвейер МАС (6 стадий). Причем, первые 4 стадии конвейеров являются общими. Большая длина конвейера по сравнению со StrongARM позволяет процессору работать на более высоких частотах. Наличие нескольких конвейеров допускает возможность неупорядоченного выполнения команд (при отсутствии зависимостей по данным между командами).
Микропроцессоры семейства РХА25х выпускаются по технологии 0,18 мкм для тактовых частот ядра 200, 300, 400 МГц, Тактовая частота системной шины равна половине частоты ядра. Микропроцессоры содержат встроенные интерфейсы беспроводной передачи данных, USB, контроллеры карт памяти и устройств MMC/SD и PCMCIA/CF. •
Представители микропроцессорного семейства РХА26х построены по технологии "одночиповых систем" (SIP — system-in-a-package), основанной на способе многоуровневой упаковки флэш-памяти (MLC — multi-level-cell).
От семейства РХА25х данные процессоры отличаются меньшими габаритами, дополнительными коммуникационными портами и расположенной в одном корпусе с процессором флэш-намятью Intel StrataFlash Wireless Memory (энергонезависимая память, построенная на основе новой экономичной технологии многоуровневых ячеек флэш-памяти, разработанной компанией Intel для беспроводных устройств).
Intel РХА261 и РХА262 представляют собой интегрированное решение для мобильных устройств. В одном корпусе объединены процессор и флэш- память стандарта StrataFlash®. Чип РХА261 содержит процессорное ядро с частотой 200 МГц и 128 Мбайт памяти. Процессорное ядро чипа РХА262 может работать на частоте 200 или 300 МГц, а объем памяти составляет 256 Мбайт (два кристалла по 128 Мбайт).
Медийные микропроцессоры
С ростом популярности мультимедийных технологий, увеличением числа приложений и компаний их разрабатывающих, все большее внимание со стороны производителей микропроцессоров уделяется поддержке алгоритмов сигнальной обработки на уровне команд микропроцессоров [150]. В микропроцессорах в настоящее время наблюдается тенденция переноса акцентов с чисто числовых операций на операции с новыми типами данных, характерными для обработки видео- и звуковой информации. (Расширения системы команд архитектуры х86 — MMX, SSE, 3DNow! и т. п.)
На сегодняшний день можно выделить два класса микропроцессоров, обеспечивающих поддержку мультимедиа на аппаратном уровне, это универсальные процессоры с мультимедийным расширением набора команд и мультимедийные микропроцессоры. Такая классификация отражает в первую очередь ориентацию процессоров на различные области применения. В тех областях использования, где доля числовой обработки велика — перспективно применение универсальных процессоров с мультимедийным расширением системы команд. Там, где мультимедийные операции доминируют над традиционными числовыми операциями эффективно использование мультимедийных микропроцессоров.
К первому классу относятся рассмотренные ранее микропроцессоры общего назначения, адаптированные к требованиям мульти медиаобработки (Pentium MMX, Pentium III, 4, VIA Cyrix Mill, AMD Athlon, SUN UltraSPARC, DEC Alpha и др.).
Второй класс представляет собой некоторый гибрид архитектурных решений, характерных для традиционных сигнальных и универсальных микропроцессоров. Микропроцессоры данного класса — медийные процессоры (или медиапроцессоры), предназначены для обработки аудиосигналов, графики, видеоизображений, а также для решения ряда коммуникационных задач. Этим они близки с рассмотренными ранее коммуникационными процессорами.
К медиапроцессорам на сегодняшний день можно отнести:
Mediaprocessor компании MicroUnity;
Trimedia компании Philips;
Mpact Media Engine компании Chromatic Research;
NV1 компании Nvidia;
MediaGx компании Cyrix.
Несмотря на расширение мультимедийных возможностей универсальных микропроцессоров, сфера использования медийных микропроцессоров остается довольно широкой. На сегодняшний день это: персональные компьютеры начального уровня, карманные компьютеры, коммуникаторы, игровые приставки, интернет-терм и налы и т. д.
Микропроцессор Mediaprocessor компании MicroUnity
Микропроцессор компании MicroUnity — Mediaprocessor — ориентирован на использование в мультимедийных и широкополосных связных системах [151]. В различных разработках Mediaprocessor использовался совместно с дополнительными устройствами, также разработанными компанией MicroUnity, — АЦП MediaCodec и интерфейсом внешней кэш-памяти — MediaBridge.
Аналого-цифровой преобразователь MediaCodec позволяет реализовать интерфейс с широкополосным каналом связи, a MediaBridge может выступать в роли интерфейса с шиной PCI и основной памятью в мультимедийных компьютерах.
Mediaprocessor изготавливался по 4-слойной технологии КМОП 0,5 мкм для тактовых частот от 300 до I ГГц.
Мультитредовая архитектура процессора позволяет одновременно выполнять до 5 различных задач, используя 5 комплектов 64-разрядных регистров по 64 регистра в каждом. Для каждой задачи выделяется "виртуальный процессор" с тактовой частотой 200 МГц (при тактовой частоте микропроцессора 1 ГГц).
Процессор имеет на кристалле 64 Кбайт кэш-памяти, обшей для команд и данных. Выделенная 8-разрядная шина ввода/вывода может передавать данные 1 Гбайт/с и используется для связи микропроцессора с устройствами MediaCodec и MediaBridge.
Медиапроцессор имеет компактную систему команд, которая включает специальные операции обработки сигналов и расширенные математические операции. Так, например, одной командой за один такт выполняется умножение четырех 32-разрядных операндов на другие четыре 32-разрядных операнда, суммируются полученные значения с операндами большей разрядности и возвращаются четыре результирующих значения в 32-разрядном виде.
Микропроцессор TriMedia компании Philips
Мультимедийный микропроцессор компании Philips TriMedia предназначен для использования как в качестве сопроцессора цифровой обработки сигналов, разгружающего основной процессор мультимедийной системы, так и во встроенном режиме, в качестве универсального процессора разнообразных мультимедийных устройств: игровые телеприставки, проигрыватели DVD, видео-CD ит. п. |151, 152].
Структура микропроцессора TriMedia изображена на рис. 3.45. Ее компонентами являются высокоскоростная шина со скоростью передачи данных
400 Мбит/с, связывающая основные узлы микропроцессора: процессорное ядро, видеовход, видеовыход, аудиовход, VLD-декодер MPEG, сопроцессор обработки изображений и коммуникационный блок.
Рис. 3.45. Структура микропроцессора TriMedia
Микропроцессорное ядро TriMedia построено на принципах VLIW-архитектуры и способно обрабатывать 5 RISC-команд за один такт (рис. 3.46). Глубокая конвейеризация микроопераций в процессоре обеспечивается благодаря наличию 27 функциональных модулей (включая АЛУ целочисленного умножения, несколько АЛУ для операций с плавающей точкой и несколько модулей ЦОС). В микропроцессоре используется раздельная кэш-память общей емкостью 48 Кбайт (32 Кбайт для команд и 16 Кбайт для данных).
Другие модули микропроцессора, взаимодействуя с VLIW-ядром, выполняют обработку, специфичную для конкретного типа данных. Использование
режима ПДП позволяет осуществлять подготовку данных к обработке сразу несколькими модулями процессора.
<-—До 5 операций за один цикл►
Рис. 3.46. Выполнение команд микропроцессором TriMedia
Эффективная для мультимедийных приложений система команд процессора позволяет осуществлять одновременное MPEG-декодирование аудио- и видеоданных при использовании всего лишь 22 процентов вычислительных ресурсов процессора и 12 процентов ресурсов памяти.
Микропроцессор Mpact Media Engine компании Chromatic Research
Основной областью применения микропроцессора Mpact Media Engine компании Chromatic Research являются мультимедийные ПК, реализуемые на базе микропроцессоров семейства х86 (151 —153|. В подобных системах на Mpact Media предполагается возложить функции -графического ускорителя, сопроцессора обработки трехмерной графики, MPEG-кодека, звуковой платы, факс-модема и телефонной платы.
Mpact Media — VLIW-процессор с ядром, оптимизированным для многозадачного выполнения мультимедийных приложений в режиме реального времени. Например, параллельно могут выполняться вывод 2- и 3-мерных изображений, синтез музыки и передача данных с помощью модема.
Mpact Media содержит 1,4 млн транзисторов. ЦП процессора имеет пять АЛУ, одно из которых используется для оценки изменений в изображениях объектов, что имеет большое значение при кодировании видеоданных.
Шина PCI
Рис. 3.47. Структура микропроцессора Mpact Media
Сигнальные, коммуникационные и медийные микропроцессоры
со
АЛУ связаны между собой 792-разрядной магистральной шиной, способной передавать до 8 млн целых чисел в секунду. 8-портовая внутрикристальная кэш-память объемом 4 Кбайт связана шиной, имеющей пропускную способность 500 Мбит/с, с внешней памятью RDRAM. Такая архитектура позволяет обеспечить высокую интенсивность потока данных на вход АЛУ и достигать для большинства мультимедийных приложений производительности от 1 до 2 млрд операций в секунду.
Структура микропроцессора приведена на рис. 3.47.
Командное слово процессора имеет длину 72 разряда и содержит две инструкции длиной от 3 до 5 байт. В число инструкций входят также инструкции SIMD-обработки массивов данных.
Микропроцессор NV1 компании Nvidia
Процессор компании Nvidia ориентирован прежде всего на использование в игровых приставках |154|. Этот кристалл спроектирован специально для выполнения игровых программ, для которых требуется быстрое выполнение алгоритмов преобразования аудио- и видеоданных. Архитектура процессора приведена на рис. 3.48.
Рис. 3.48. Архитектура микропроцессора NV1
В состав процессора входит мультимедийный акселератор 3-мерной видеографики с аудиоблоком, эмулирующим Sound Bluster. В отличие от большинства ускорителей ЗВ-графики, аппроксимирующих кривые кусочно- ломанными линиями (создание гладких кривых линий требует выполнения интенсивных вычислений для генерации большого числа отрезков), в NV1 реализуется алгоритм NURBS (неоднородные рациональные В-сплайны) — округления сторон многоугольников, благодаря чему улучшается качество создаваемого изображения и уменьшается объем выполняемых вычислений, т. к. требуется меньшее количество рассчитываемых "контрольных точек" генерируемой кривой.
На кристалле процессора также расположен процессор ввода/вывода (для джойстика и других игровых манипуляторов). Все обрабатывающие блоки микропроцессора связаны с помощью однонаправленной кольцевой шины. Контроллер шины принимает транзакцию и посылает ее каждому компоненту процессора.
Основные мультимедийные алгоритмы в NV1 реализованы аппаратно, что, с одной стороны, делает невозможным их модификацию, а с другой стороны, приводит к уменьшению размеров и стоимости процессора. Производительность процессора на мультимедийных командах составляет около 350 MIPS. Недостатком NV1 является отсутствие декодера MPEG.
Микропроцессор MediaGX компании Cyrix
20 февраля 1997 года компания Cyrix представила свой медиапроцессор MediaGX [155, 156|. Процессор выпускается по технологии 0,5 мкм КМОП с 3 слоями металлизации с тактовыми частотами 133, 150, 166, 180 МГц.
Микропроцессор предназначен для применения в недорогих мультимедийных компьютерах. Он реализует как системные, так и мультимедийные функции. Благодаря совместимым с Windows программным средствам, реализующим виртуальную системную архитектуру, аппаратная реализация функций мультимедиа заменяется программной, поэтому системы на основе MediaGX не нуждаются в платах расширения для воспроизведения графики и звука. В системе MediaGX используется совместно с микросхемой Сх5510, выполняющей функции контроллера периферийных устройств.
Пример вычислительной системы на основе MediaGX показан на рис. 3.49.
Процессор имеет 64-разрядную шину данных и совместим по системе команд с семейством х86, кроме того, он может работать как высококачественная виртуальная видеокарта. Структура процессора показана на рис. 3.50.
Рис. 3.49. Структура вычислительной системы на основе медиапроцессора MediaGX
Порт DRAMВидеопортШина PCI
Основными компонентами микропроцессора являются:
процессорное ядро;
устройство операций с плавающей точкой (FPU);
кэш-память первого уровня;
контроллер внутренней шины;
контроллер шины PCI;
графический конвейер;
контроллер дисплея;
контроллер динамической памяти.
Данные и команды передаются из памяти и пересылаются по внутренним шинам X и С в кэш-память первого уровня. Коды команд выбираются на выполнение в процессорном ядре или FPU из внешней памяти или кэшпамяти. Видеоданные обрабатываются в графическом конвейере и видеоконтроллере. Данные с видеоконтроллера посылаются либо в цифровом виде непосредственно на жидкокристаллический экран, либо через внешнюю схему формирования аналогового видеосигнала RAMDAC (Random Access Memory Digital to Analog Converter) — на электронно-лучевую трубку. Видеоконтроллер работает на тактовой частоте процессорного ядра, поддерживает все режимы VGA и VESA и позволяет работать с максимальным разрешением 1280x1024 при 8 бит цвета или 1024x768 при 16 бит цвета.
Контроллер PCI управляет внутренней шиной, объединяющей MediaGX и Сх5510. Эта шина не является системной, для интерфейса с периферией используется шина ISA, ввод/вывод — обеспечивает микросхема Сх5510.
Процессорное ядро выбирает, декодирует за один такт и за один такт выполняет целочисленные команды х86. Разнесенное (decoupled) устройство загрузки/сохранения позволяет обрабатывать одновременно несколько запросов к памяти за один такт.
Цикл выполнения команды в конвейеризированном ядре процессора включает шесть стадий:
Выборка команды (IF).
Декодирование команды.
Вычисление адреса I (АС1).
Вычисление адреса 2 (АС2).
Выполнение (ЕХ).
Запись результата (WB). Результат выполнения записывается в кэшпамять, а не непосредственно в основную память.
В процессоре используется предсказание переходов с вероятностью правильного предсказания — 0,8. Устройство операций с плавающей точкой
выполняет команды с плавающей точкой одновременно с целочисленными. Устройство имеет 64-разрядный интерфейс данных, четырехпозиционные входную и выходные очереди.
Процессор содержит 4-входовую множественно-ассоциативную общую кэшпамять объемом 16 Кбайт, работающую в режиме обратной записи. Контроллер внутренней шины реализует функции моста между шинами С и X.
Графический контроллер обеспечивает полнофункциональную поддержку графического пользовательского интерфейса (GUI), включая рендеринг, растровые операции и высокоскоростные блочные пересылки. В системах на основе MediaGX не выделяется отдельная видеопамять, графический буфер располагается в основной памяти.
В системах MediaGX используется совместно с сателитным чипом Сх5510, который реализует следующие функции:
аудиоконтроллер с ЧМ-синтезом звука и MPU-401 MIDI-интерфейсом и возможностью дополнительного подключения табличного синтеза волн;
мост PCI-1SA;
контроллер ПДП;
контроллер прерываний;
контроллер клавиатуры и мыши;
E-IDE-контроллер;
таймер;
управление энергопотреблением.
Структура сателитного чипа — Сх5510 — показана на рис. 3.51.
Рис. 3.51. Структура интегрированного контроллера Сх5510
Компьютеры и системные платы на основе процессора MediaGX выпускаются рядом известных производителей, среди которых Compaq Computer, LG Electronics, Daewoo Telecom, SCI System, Tatung. По производительности данные системы сравнимы с компьютерами на базе Pentium с аналогичной тактовой частотой и значительно дешевле по цене.
Вопросы для самоконтроля к главе 3
Сформулируйте определение цифровой обработки сигналов.
Укажите основные достоинства и недостатки цифрового способа обработки аналоговых сигналов.
Приведите пример задачи цифровой обработки сигнала и реализующего ее тракта.
Укажите основные особенности задачи цифровой обработки сигналов.
Какие функциональные, архитектурные и структурные особенности характерны для сигнальных микропроцессоров?
Назовите основные фирмы — производители сигнальных микропроцессоров.
Приведите классификацию сигнальных микропроцессоров фирмы Texas Instruments.
Назовите основные архитектурные и структурные особенности семейства микропроцессоров с фиксированной точкой фирмы Texas Instruments.
Назовите состав и назначение внутренних шин и основных функциональных блоков микропроцессоров с фиксированной точкой фирмы Texas Instruments.
В чем заключается отличие модифицированной гарвардской архитектуры от традиционной?
И. Укажите рекомендуемые производителем области применения сигнальных процессоров с фиксированной точкой фирмы Texas Instruments.
Назовите представителей семейства микропроцессоров с плавающей точкой фирмы Texas Instruments, укажите их основные архитектурные и структурные особенности.
Назовите состав и назначение внутренних шин и основных функциональных блоков микропроцессоров с плавающей точкой (TMS32()C3x, 'С4х) фирмы Texas Instruments.
Укажите состав и назначение процессорных модулей микропроцессора TMS320C80.
В чем состоит отличие архитектуры VelociTI от традиционной VLIW-архитектуры?
Какие структурные особенности представителей семейства микропроцессоров Т1 с плавающей точкой обусловлены спецификой параллельной обработки данных?
Укажите рекомендуемые производителем области применения сигнальных процессоров с плавающей точкой фирмы Texas Instruments. ■
Приведите классификацию сигнальных микропроцессоров фирмы Analog Devices.
Назовите представителей семейства 16-разрядных микропроцессоров фирмы Analog Devices, укажите их основные архитектурные и структурные особенности и область применения.
Благодаря каким структурным решениям достигается сокращение командного цикла в микропроцессорах фирмы Analog Devices?
Назовите состав и назначение внутренних шин и основных функциональных блоков микропроцессоров Analog Devices.
Поясните назначение HIP-порта микропроцессоров Analog Devices.
Назовите представителей семейства 32-разрядных микропроцессоров фирмы Analog Devices, укажите их основные архитектурные и структурные особенности и область применения.
В чем заключается особенность расширенной гарвардской архитектуры, реализованной в микропроцессорах Analog Devices?
Назовите основные характеристики и архитектурные особенности микропроцессоров ADSP 21060/62.
Укажите основные особенности SHARC-архитектуры, реализованной в микропроцессорах ADSP 21060/62.
Какие элементы структуры SHARC-микропроцессора обеспечивают возможность его интеграции в мультипроцессорную систему?
Назовите основные особенности микропроцессоров семейства TigerSHARC.
В чем состоит особенность архитектуры BlackFine компании Analog Devices?
Приведите классификацию сигнальных микропроцессоров фирмы Motorola.
Назовите представителей 24-разрядного семейства сигнальных микропроцессоров фирмы Motorola, их основные характеристики и области применения.
В чем заключается отличие микропроцессорного ядра семейства DSP563XX от DSP560XX?
Назовите 16-разрядные семейства микропроцессоров фирмы Motorola, их основные архитектурные и структурные особенности и область применения.
Укажите состав и назначение внутренних шин и основных функциональных блоков сигнальных микропроцессоров фирмы Motorola.
Поясните назначение и особенность реализации универсальной подсистемы ввода/вывода (GPIO) сигнальных микропроцессоров фирмы Motorola.
Назовите основные структурные, архитектурные особенности и технические характеристики микропроцессоров DSP96002.
Укажите основные общие черты сигнальных, коммуникационных и медийных микропроцессоров и их различия.
На какой круг задач ориентированы микропроцессоры с архитектурой РСА?
Назовите классы микропроцессоров и их представителей, снабженных аппаратной поддержкой обработки мультимедийных данных, укажите области их эффективного использования,
Назовите основные структурные и архитектурные особенности медийных микропроцессоров.
Укажите основные технические характеристики медийных микропроцессоров: Mediaprocessor (MicroUnity), TriMedia (Philips), Mpact Media (Chromatic Research), NV1 (Nvidia), MediaGX (Cyrix).
Какие системные функции возлагаются на медийные микропроцессоры? Приведите пример структуры вычислительной системы, построенной на основе медийного процессора. •
Глава 4
Транспьютеры — элементная база мультипроцессорных систем
Основные особенности транспьютеров
Концепция параллелизма давно привлекала внимание специалистов своими потенциальными возможностями повышения производительности и надежности вычислительных систем. В нашей стране с 60-х годов XX века выполнялись теоретические, экспериментальные и промышленные разработки в этом направлении, что отмечено американскими специалистами в области контроля экспорта высоких технологий [157, 158]. В монографии Э. Евреи- нова, Ю. Косарева "Однородные универсальные вычислительные системы высокой производительности" (44] было представлено теоретическое обоснование построения массово-параллельных систем из элементарных вычислительных машин на базе больших интегральных схем. Именно с подобными системами связывается в настоящее время перспектива дальнейшего наращивания производительности [159, 160). Исторически первой промышленной разработкой, ориентированной на массово-параллельные системы, стали транспьютеры [21, 25].
Транспьютер — это микрокомпьютер с собственной внутренней памятью и каналами для соединения с другими транспьютерами. Часто каналы, используемые для соединения транспьютеров, называют линками. Термин "транспьютер — transputer", образованный в результате объединения слов "транзистор-transistor" и "компьютер-computer", отражает основную область его применения — использование как базового вычислительного элемента при построении массово-параллельных вычислительных систем.
Некоторые специалисты понимают термин "транспьютер" как название конкретного продукта фирмы Inmos, другие трактуют его как обобщенное наименование микропроцессоров со встроенными каналами межпроцессорного обмена. Используется также термин "транспьютероподобный микропроцессор", чтобы, с одной стороны, подчеркнуть, что речь идет не о продукте фирмы Inmos, а с другой стороны, указать, что микропроцессор имеет встроенные
липки для образования параллельных систем. Вполне возможно, что стремительное развитие микроэлектроники не позволит термину "транспьютер" устояться, и он будет поглощен более общим термином — "микропроцессор", т. к. отличительный признак транспьютера— встроенные межпроцессорные каналы появятся в том или ином виде у всех микропроцессоров.
В настоящее время разработаны спецификации InfiniBand и Rapid I/O [161, 162] и ряд других, вводящие соединения "точка-точка" и коммутаторы. Построение систем на базе соединений "точка-точка" базируется на идеях, ранее уже апробированных в транспьютерных системах.
Первый транспьютер — Т414 был представлен фирмой Inmos, Inc. (Бристоль, Великобритания) в 1983 году. Его основные характеристики:
разрядность 32 бит;
объем внутренней памяти 2 Кбайт;
число линков — 4;
скорость обмена но линку 5, 10, 20 Мбит/с;
тактовая частота: внешняя — 5 МГц, внутренняя — 15 МГц;
производительность 10 MIPS.
Широкую доступность и известность транспьютеры получили с 1985 году. Были выпущены модификации с большим объемом внутренней памяти (4 Кбайт) и более высокой тактовой частотой:
семейство Т-4: Т424, Т425 — 20, 25 и 30 МГц;
семейство Т-2: Т212, Т222 — 16-разрядные модификации транспьютеров;
семейство Т-8: Т800, Т801, Т805 со встроенным устройством выполнения операций с плавающей точкой. Производительность этих микропроцессоров достигает 30 MIPS и 4,3 Mflops.
Наряду с процессорами был выпущен ряд периферийных устройств транспьютерных семейств, к числу которых относятся микросхемы: М212 — контроллер жестких магнитных дисков стандарта ST506, G412 — графический RGB-контроллер мониторов, С004 — программируемые 32-канальные коммутаторы линков и другие устройства, например, сигнальные процессоры.
Высокая степень "функциональной самостоятельности" транспьютера, простота интефации и наличие периферийных устройств позволяют в короткие сроки создавать системы на их основе. Линки транспьютера могут осуществлять обмен данными одновременно с вычислениями, практически не снижая производительность процессора. Благодаря этому качеству транспьютеров системы на их основе обладают хорошей масштабируемостью и высоким значением показателя эффективности — "производительность/стоимость". Именно из транспьютеров были созданы первые массово-параллельные сис-
темы с числом процессоров, превышающим несколько сотен вплоть до нескольких тысяч.
В настоящее время вслед за транспьютерами фирмы Inmos серийно выпускаются транспыотероподобные универсальные и сигнальные микропроцессоры, соответственно Power4, Alpha 21364 и TMS 320 С4Х, ADSP 2I06X (см. главу 2 и главу 3).
Архитектура и структура транспьютеров фирмы Inmos
Архитектура семейств Т-2, Т-4, Т-8
Транспьютеры относятся к классу RISC-процессоров. Система команд гранспьютеров ориентирована на поддержку языка высокого уровня — ОККАМ (OCCAM) [163], названного так в честь средневекового философа Уильяма Оккама, призывавшего использовать минимально необходимое количество сущностей, отсекая лишние. Этот язык параллельного программирования позволяет задавать параллельные вычисления в соответствии с моделью взаимодействующих последовательных процессов (CSP — Communicating Sequential Pprocesses) |164|. Программа на языке ОККАМ представляет собой совокупность асинхронных совместно протекающих взаимодействующих процессов. Под процессом понимается ход исполнения программного кода некоторой программы или фрагмента программы. Взаимодействие между процессами реализуется путем обмена данными по принципу "рандеву": обмен происходит только тогда, когда каждый из двух взаимодействующих процессов достигает при своем протекании соответственно команд передачи и приема данных. Процесс, первым достигший команды обмена, независимо от того, передает он данные или принимает, ставится в ожидание вплоть до достижения другим процессом соответствующей команды приема или передачи данных. Использование только двух этих команд для синхронизации и коммуникации между процессами без каких-либо других средств координации между процессами и составляет суть следования идеям Оккама.
В транспьютере данная модель параллельных вычислений поддерживается благодаря наличию аппаратно реализованного диспетчера, обеспечивающего выполнение параллельных процессов в режиме квантования времени. Причем количество одновременно выполняемых процессов не ограничено. Такую организацию функционирования можно рассматривать как один из вариантов реализации мультитредовой архитектуры.
Мультипроцессорная система на базе транспьютеров представляет собой совокупность транспьютеров, линки которых соединены линиями связи (непосредственно или через коммутатор).
Существенно упростить программирование мультипроцессорных вычислительных систем на базе транспьютеров позволяет то, что одинаковая модель параллельных вычислений поддерживается как внутри отдельного транспьютера, так и в рамках мультитранспьютерной системы в целом. Благодаря этому программа, разрабатываемая для мультипроцессорной системы, может быть создана и отлажена на одном-единственном процессоре, а затем перенесена на сеть транспьютеров без существенных преобразований. Исключение составляет ограничение числа каналов связи процесса с процессами, протекающими на другом транспьютере. Это ограничение преодолено в транспьютере Т-9000.
Обобщенная структура транспьютера Т800, архитектурные регистры процессора, управляющие структуры процессов и распределение их рабочих областей памяти приведены на рис. 4.1.
В зависимости от семейства транспьютер состоит из 32- или 16-разрядного центрального процессора, интерфейса внешней памяти, 2 или 4 двунаправленных каналов — линков, программируемого блока событий (Event), таймера, внутреннего ОЗУ емкостью 2 или 4 Кбайт, блока режимов работы линков, блока системных функций. Некоторые модели могут содержать 64- разрядное устройство операций с плавающей точкой и (или) контроллеры внешних устройств, таких как жесткие магнитные диски, мониторы, сетевые адаптеры (контроллеры внешних устройств обычно выполняются на кристалле вместо двух линков.)
Центральный процессор
Центральный 32-разрядный процессор транспьютера работает на тактовой частоте до 30 МГц, формируемой из опорной внешней тактовой частоты 5 МГц внутренней схемой умножения. Внутренняя структура центрального процессора показана на рис. 4.2.
Аппаратный планировщик (диспетчер) центрального процессора организует выполнение совокупности процессов в режиме разделения времени. Каждому процессу в момент его создания в адресном пространстве транспьютера выделяется выровненная по границе слова рабочая область памяти и устанавливается приоритет. В транспьютере реализована двухуровневая схема приоритетов: 0 — высокий приоритет процесса, 1 — низкий приоритет. Объединение адреса рабочей области и приоритета образует дескриптор (контекст) процесса.
Центральный процессор содержит два регистра-таймера для низко- и высокоприоритетных процессов. Высокоприоритетный таймер инкриминируется каждую 1 мкс, низкоприоритетный — каждые 64 мкс.
Регистр W транспьютера указывает на рабочую область процесса, а в регистре указателя команды 1 находится адрес следующей выполняемой команды.
Регистры общего назначения А, В, С образуют регистровый стек — память с дисциплиной доступа FIFO. АЛУ выполняет логические и арифметические операции над операндами, содержащимися в регистровом стеке. Операнды помещаются в стек через его вершину — регистр А. При загрузке данных в А его содержимое переносится в В, содержимое В — в С, а содержимое последнего теряется. Результаты операций также формируются в регистре А, при этом содержимое регистра С "выталкивается" в регистр В и становится неопределенным.
Система команд транспьютера
Все команды транспьютера однобайтные и выполняются за один такт процессора. Команды (см. рис. 4.1) состоят из двух полей. Старшие 4 разряда — код команды, младшие 4 разряда используются для формирования операнда команды или кода команды в регистре операнда О.
Операции, реализуемые командами транспьютера, подразделяются на первичные и вторичные. Набор первичных операций включает 13 наиболее употребительных операций, таких, например, как сложение с константой со значением в диапазоне 0—15, безусловный переход, загрузка (запись) слова и т. п. Еще 3 команды — pfix, nfix, opr — используются для организации выполнения вторичных операций.
Выполнение команд
Команды выбираются из памяти транспьютера и помещаются в буфер команд центрального процессора. За один такт выбирается 2 команды в Т-414 и 4 команды — в Т-800.
Выполнение большинства команд осуществляется в три этапа.
Операнд команды помещается в младшие 4 разряда регистра операнда О.
Выполняется операция, задаваемая кодом команды. Содержимое регистра О интерпретируется как операнд.
Очищается регистр операнда О.
Исключение составляют команды pfix, nfix и орг.
Команда pfix на этапе 2 осуществляет сдвиг содержимого регистра О на 4 разряда влево и не очищает регистр О на этапе 3. Команда nfix выполняется так же, как и pfix, но перед сдвигом регистра О помещает в него арифметическое дополнение содержимого этого регистра.
Поскольку после выполнения команд pfix и nfix содержимое регистра О не очищается, последовательность команд pfix и nfix позволяет формировать в регистре О операнды с разрядностью до 32. Требуемая для формирования вторичной операции последовательность первичных команд генери-
руется компилятором. Как правило, эта последовательность имеет минимально возможную длину.
Например, операция сложения содержимого регистра А с константой 9 будет выполнена командой adc #9 (символ # обозначает, что следующее за ним число представлено в шестнадцатеричном виде), как первичная операция. Однако для того, чтобы сложить содержимое регистра А с константой 21 = 15,6, уже необходимо использовать вторичную операцию. Для ее формирования необходимо выполнить последовательность команд pfix #i; adc #5. Сложение с константой -31 = fTHTTel ,6 можно выполнить последовательностью команд pfix #f; pfix #f; pfix #f; pfix #f; pfix itf; pfix #f; pfix #e; adc из или с использованием команды nfix: nfix #i; adc Ni.
Команда opr интерпретирует содержимое регистра О как код вторичной операции. В этом случае операнды содержатся в регистрах процессора. Код вторичной операции, таким образом, задается как операнд первичной операции орг и может иметь до 232 различных значений. В существующих на сегодняшний день моделях транспьютеров используется около сотни вторичных операций.
Например, для операции умножения, имеющей код f3|6, компилятор сформирует следующую последовательность команд: pfix #f; орг из.
Использование сопроцессора
В случае наличия у транспьютера встроенного сопроцессора, выполняющего операции с плавающей точкой, распознавание команд и передача их на выполнение осуществляется аппаратно в центральном процессоре, там же выполняется вычисление адреса операндов и их загрузка в регистры FPU.
Модуль операций с плавающей точкой, как показано на рис. 4.2, состоит из двух блоков — блока мантиссы и блока порядка со своим набором регистров (два регистровых стека). Все команды с плавающей точкой подразделяются на два класса: полностью самостоятельные команды, никак не влияющие на состояние центрального процессора, и команды, пересылающие результаты выполнения операции в центральный процессор.
После передачи команды на исполнение в сопроцессор центральный процессор продолжает выполнение потока команд, если эти команды относятся к первому классу, или ожидает получения результата, если эти команды второго класса.
Распределение памяти транспьютера
Транспьютер может адресовать до 232 байт (4 Гбайт). Особенностью транспьютера является начало адресов в области отрицательных значений. Младший адрес в дополнительном коде соответствует значению 80000000,6-
Структурно (конструктивно) вся оперативная память подразделяется на внутрикристальную и внешнюю. Объем внутрикристальной памяти составляет 4 (2) Кбайт (в зависимости от модели транспьютера). Архитектурно (с точки зрения программиста) вся память транспьютера, как внешняя, так и внутрикристальная, равнодоступна и имеет единую адресацию: внутрикристальной памяти соответствуют младшие адреса, а внешней памяти — старшие.
Поскольку внутрикристальная память обеспечивает меньшее время доступа (один такт процессора), в нее программисты обычно помещают часто используемые данные и подпрограммы. Пример распределения памяти показан на рис. 4.1.
Несколько слов в младших адресах памяти используется для специальных целей: для слов состояния аппаратных каналов — линков, блока Event, регистров таймера, в качестве рабочих областей памяти диспетчера.
Диспетчеризация процессов
Каждый из процессов в конкретный момент времени может быть либо выполняемым, либо активным (готовым к выполнению в очереди соответствующего приоритета), либо ожидающим сигнала таймера (в очереди к таймеру соответствующего приоритета), либо ожидающим ввода/вывода.
Для выполняемого процесса регистр I содержит адрес следующей команды, регистр W содержит его дескриптор.
Для организации очереди процессов на выполнение (очередь активных процессов) в диспетчере используются пары регистров FptrO, BptrO, Fptrl, Bptrl, указывающие на начало и конец очереди высоко- и низкоприоритетных процессов соответственно. В качестве элементов очередей используются рабочие области процессов, содержащие помимо данных процесса управляющую информацию, требующуюся для сохранения и восстановления состояния процессов на этапе диспетчеризации (в том числе ссылку на рабочую область следующего процесса в очереди).
Низкоприоритетные процессы выполняются в течение не более чем 32 периодов низкоприоритетного таймера, после чего процесс (если он еще способен к выполнению) помешается в конец очереди активных низкоприоритетных процессов, а диспетчер планирует выполнение следующего процесса. Сначала просматривается очередь высокоприоритетных процессов, затем — низкоприоритетных.
Высокоприоритетный процесс не прерывается и выполняется до тех пор, пока это возможно (до завершения или до момента перехода в состояние ожидания либо ввода/вывода, либо сигнала таймера или сигнала внешнего события, выдаваемого блоком Event). Если высокоприоритетный процесс становится активным (например, получает сигнал таймера) в момент выполнения процесса с низким приоритетом, последний прерывается, его со-
стояние сохраняется в области зарезервированных адресов памяти транспьютера и инициируется выполнение высокоприоритетного процесса, прервавшего этот низкоприоритетный. После выполнения высокоприоритетного возобновляется прерванный низкоприоритетный процесс.
Ввод/вывод
Ввод/вывод для процессов в транспьютере организуется одинаковым образом как в случае использования аппаратных линков (внешний ввод/вывод), так и в случае использования виртуального линка (обмен между процессами одного транспьютера). В обмене всегда участвуют только два процесса: один вводит данные, другой выводит.
В момент выполнения команды описания канала и после завершения каждого обмена слово состояния канала (ССК) инициализируется константой Minlnt (80000000]б), задающей минимальное целое число 0. Процесс, первым выполняющий команду обмена, приостанавливается и проверяет содержимое канала. Если оно равно Minlnt, то это означает, что процесс пришел первым на "рандеву" и должен дождаться второго процесса. Организация ожидания реализуется следующим образом: в ССК заносится дескриптор процесса, а в рабочую область процесса помешаются значение W и адрес данных, которые должны быть переданы из одного процесса в другой, после чего управление переходит к диспетчеру для планирования выполнения других процессов.
Если содержимое ССК не Minlnt, значит данный процесс пришел на "рандеву" вторым. В этом случае содержимое ССК — дескриптор процесса, используя который, находятся данные в случае ввода или буфер для данных в случае вывода.
Обмен по линкам осуществляется аналогично, с той разницей, что ССК имеют фиксированные адреса в памяти 8000000016—8000001С|б, и в процессе обмена данные не пересылаются между областями памяти, а передаются по линии связи в стартстопном режиме с квитированием байтов.
При выполнении ввода/вывода от центрального процессора требуется лишь инициализация обмена. По команде ввода/вывода вся требуемая информация об операции обмена — адрес и длина данных, помещается во внутренние регистры линка, после чего центральный процессор освобождается для дальнейших вычислений, а линк транспьютера самостоятельно управляет обменом данными.
Передача данных по линку
Все семейства транспьютеров Т-2 (Т-212, Т-222, Т-225), Т-4 (Т-414, Т-400, Т-425), Т-8 (Т-800, Т-801, Т-805) используют один и тот же протокол пере-
Транспьютеры — элементная база мультипроцессорных систем 389 дачи данных по линкам. Взаимодействие между транспьютерами осуществляется посредством обмена сообщениями, состоящими из последовательности байтов. Данные передаются по одному проводу из пары проводов, составляющих линк. По другому проводу пары передаются подтверждения приема каждого байта. Передачи в двух направлениях могут совмещаться, что приводит к чередованию в каждом из линков передаваемых данных и байтов подтверждения.
Байт передается в обрамлении служебных битов, начиная со стартового бита, далее следует управляющий бит, а затем 8 информационных битов и столовый бит. Таким образом, на 8 информационных битов приходится 3 управляющих, поддерживающих протокол передачи. На рис. 4.3 показан пример передачи по линку.
Входной линкВходной линкВыходной линкВыходной линкПодтверждение
Входной линк
Входной линк
Выходной линк
Выходной линк
IIIIIII1
114Данные► : О
।।L।।।।I
Время
Рис. 4.3. Передача данных по линку транспьютера
После передачи байта отправитель ждет подтверждения, которое состоит из стартового и управляющего бита. Причем если при передаче информационного байта управляющий бит равен I, то в подтверждении он равен 0. При этом байты данных и подтверждения для переданных в противоположном направлении байтов данных передаются по одному проводнику. Подтверждения имеют приоритет перед байтами данных. Можно установить режим, при котором подтверждения начинают передаваться сразу после получения стартового и управляющего битов, что приводит к передаче байтов без задержки между ними.
Если один из обменивающихся через линк процессов не готов к приему данных, байты накапливаются в регистре данных линка. При заполнении регистра подтверждение после получения очередного байта не выдается, и передающий линк приостанавливает передачу до приема данных процессом и освобождения регистра линка.
При инициации передачи первого байта сообщения существует задержка на настройку каналов прямого доступа в передающем и приемном транспьютерах, что обусловливает разную скорость при передаче коротких (от единиц до нескольких десятков байтов) и длинных (несколько тысяч байтов) сооб-
щений. В первом случае скорость составляет 2—4 Мбит/с, во втором — максимально возможную 10—20 Мбит/с, в зависимости от настройки передающего и принимающего транспьютеров.
Передача по линку асинхронна, приемный транспьютер нечувствителен к фазе принимаемых сигналов. Единственное, что требуется — точный кварцевый генератор 5 МГц для задания тактовых сигналов транспьютеров.
Блок режимов работы линков позволяет задавать скорость передачи по линкам транспьютера (5, 10, 20 Мбит/с), причем для нулевого линка скорость устанавливается независимо от остальных. Установка осуществляется подачей соответствующих уровней на входы LinkSpecial, LinkOSpecial, Linkl23Special.
Обмены по линку программируются раздельно в передающем и принимающем транспьютерах. В передающем транспьютере программируется команда передачи по линку заданного числа байтов. В принимающем транспьютере программируется команда приема из линка задаваемого числа байтов. Реализация обмена происходит, если программы в передающем и принимающем транспьютерах выходят на команды передачи и приема. Если один транспьютер вышел на соответствующую команду, то он ждет, пока другой выйдет на свою команду обмена. Неправильно запрограммированный обмен ведет к бесконечному ожиданию. Кроме того, бесконечное ожидание возможно, если заданы разные значения количества передаваемых и принимаемых байтов.
Ожидание сигнала от блока событий •
Блок событий (Event) выполняет преобразование внешних логических уровней на входе блока в байтовое сообщение со значением 0 или I, передаваемое по внутреннему каналу. Поэтому программно блок Event воспринимается как специальный канал, отличием которого от обычного канала является то, что из этого канала можно только "читать". ССК для блока Event имеет фиксированный адрес 80000020(6- В транспьютере ожидать ввода из канала Event может в каждый момент времени только один процесс.
Обычно Event используется для регистрации внешних прерываний в транспьютерной системе. Сигнал прерывания подается на вывод микросхемы транспьютера EventRcq. Подтверждение приема сигнала прерывания (чтение из канала Event) выдается в виде уровня 1 на вывод микросхемы транспьютера EventAck.
Ожидание сигнала от таймера
Программно таймер воспринимается как канал только для чтения, выдающий либо содержимое регистра таймера с соответствующим приоритетом, либо сигнал наступления ожидаемого момента времени.
Все процессы, ожидающие наступления некоторого момента времени (истечения временного интервала), помещаются в очередь к таймеру, соответствующему их приоритету. Очередь процессов отсортирована в порядке наступления ожидаемого момента времени и организована с помощью ссылок между служебными словами в рабочей области процессов. Адрес первого процесса в очереди соответствующего приоритета содержится в служебных словах транспьютера (TPtrLocO, TPtrLocl), в младших адресах памяти. При достижении ожидаемого момента времени диспетчеру передается дескриптор соответствующего процесса для его перевода в конец очереди активных процессов.
Инициализация системы после включения питания
Транспьютер и его ОЗУ построены по КМОП-технологии и не сохраняют своего состояния после отключения питания. Поэтому после включения питания для начала функционирования в транспьютер необходимо загрузить некоторый минимум программного обеспечения. Транспьютер может быть загружен как из внешнего постоянного запоминающего устройства (ROM — Read Only Memory), так и из любого линка. Для указания режима начальной (загрузки используется вывод микросхемы транспьютера BootFromROM — загрузка из постоянного запоминающего устройства. Если уровень Boot From ROM равен 1, то управление передается по адресу FFFFFFFE|6, по которому обычно содержится команда безусловного перехода на программу начальной загрузки.
Если Boot From ROM равен 0, то производится загрузка из линка. После включения питания транспьютер переходит в состояние ожидания приема данных по линкам. Первый байт, принятый по любому из линков, управляв ет дальнейшим режимом работы транспьютера. Если его значение больше 1, то он интерпретируется как длина кода программы, принимаемой следом за ним. Принимаемые данные записываются в память транспьютера, начиная с адреса Mem Start, с него же начинается и выполнение программы. Как правило, первой загружается программа начальной загрузки транспьютера, которая обеспечивает загрузку остального программного обеспечения.
Если первый принятый управляющий байт равен 0 или 1, то транспьютер переходит в режим управления памятью.
Управляющий байт, равный 0, заставляет транспьютер интерпретировать следующие 4 байта как адрес памяти, по которому в память будет записано слово, поступившее как следующие 4 байта. После этого транспьютер снова переходит в режим управления памятью, из которого его может вывести лишь прием управляющего байта со значением, большим 1.
Если управляющий байт равен 1, следующие 4 байта задают адрес слова памяти, которое будет считано и передано как 4 байта по тому же линку, из которого поступили в противоположном направлении предыдущие 4 байта. После этого транспьютер остается в режиме управления памятью.
Режим управления памятью используется обычно для целей начальной загрузки и отладки.
Управление системой
Появление уровня I на выводе микросхемы транспьютера, называемом Analyze, переводит транспьютер, работающий по программе, в режим управления памятью. Как уже было отмечено, в этом режиме может быть считано и изменено состояние памяти транспьютера.
Обработка ошибок
Программные ошибки, такие как арифметическое переполнение, деление на О, выход за границы массива, вызывают установку в транспьютере флага ошибки error и появление сигнала на выводе микросхемы транспьютера Error. Флаг режима обработки ошибок транспьютера — HaltOnError позволяет определять поведение транспьютера в случае ошибки (установки флага error):
если был задан режим остановки (HaltOnError = 1), то в случае возникновения ошибки устанавливается 1 на выводе микросхемы Error, и транспьютер останавливается;'
если была выполнена установка HaltOnError = 0, то в случае ошибки устанавливается в 1 флаг error, однако транспьютер продолжает работать.
Рис. 4.4. Схема соединения линий системного сервиса в мультитранспьютерной системе
В мультипроцессорных системах выводы микросхем Analyze, Reset, Error, Errorin всех транспьютеров обычно соединены согласно схеме, представлен-
ной на рис. 4.4. При такой схеме соединения появление сигнала Error на выводе любого транспьютера переводит всю систему в режим управления памятью. Соответствующие программы в управляющем компьютере позволят определить состояние системы и пути преодоления ошибочной ситуации.
Транспьютер Т-9000
Архитектурные и структурные особенности
На момент своего появления транспьютеры семейства Т-8 были самыми быстродействующими 32-разрядными микропроцессорами. Попытка фирмы Inmos сохранить лидерство перед американскими производителями микропроцессоров воплотилась в разработку транспьютера Т-9000 |25]. Его основные технические характеристики:
производительность 200 MIPS, 25 Mflops;
объем внутрикристальной памяти 16 Кбайт;
число линков — 4;
скорость обмена по линку 100 Мбит/с.
Основными особенностями архитектуры данного транспьютера являются аппаратная поддержка механизма виртуальных линков и аппаратный груп- пировщик команд, повышающий загрузку параллельно функционирующих устройств процессора.
Однако фирма Inmos не смогла выдержать обещанные сроки поставки Т-9000, а также достичь объявленной производительности из-за невозможности достижения требуемой тактовой частоты при используемом технологическом процессе производства СБИС. Поэтому, хотя образцы Т-9000, работающие на пониженной, по сравнению с объявленной, тактовой частоте, были выпущены, коммерческого успеха они не имели, т. к. к этому времени появились более производительные 32-разрядные микропроцессоры американских компаний.
Виртуальные линки
Механизм виртуальных линков позволяет вести по одному физическому линку обмен между произвольным числом пар процессов, протекающих в разных транспьютерах.
Управляет обменом встроенный в Т-9000 процессор виртуального канала (VCP — Virtual Channel Processor). Сообщение, передаваемое от процесса- отправителя к процессу-получателю, VCP делит на пакеты, каждый из которых содержит 32 байта данных (последний пакет — от I до 32 байт), заголовок пакета и концевик (для последнего пакета — признак конца сообщения,
для остальных — признак конца пакета). При получении пакета VCP в принимающем транспьютере передает подтверждение в виде пустого пакета, содержащего только заголовок и признак конца пакета. VCP, используя информацию, содержащуюся в заголовке пакета, осуществляет маршрутизацию пакетов и сшивку сообщения из пакетов. Таким образом, обмен данными для процессов выглядит так же, как и в случае транспьютеров прежних поколений, что способствует преемственности программного обеспечения.
"Прозрачность" для процессов маршрутизации сообщений в сети транспьютеров Т-9000 полностью устраняет различие между обменом в рамках одного транспьютера и обменом в транспьютерной сети. Этот свойство существенно упрощает разработку программы для мультитранспьютерной системы и повышает ее эффективность, поскольку не требуется дополнительных расходов на организацию маршрутизации и коммутации.
В целях увеличения числа физических связей транспьютера Т-9000 разработан программируемый коммутатор С104, осуществляющий передачу сообщения с любого из 32 входов на любой из 32 выходов в соответствии с их заголовком.
Для возможности использования в системе Т-9000 совместно с транспьютерами предшествующих поколений разработана микросхема С100, выполняющая согласование электрических характеристик и преобразование формата передаваемых по линкам данных.
Группировщик команд
В Т-9000 полностью сохранена система команд предыдущих поколений транспьютеров. Увеличение производительности достигается за счет одновременного исполнения группы, в которую входит до 8 команд.
В Т-9000 реализован аппаратный группировщик команд. Образование групп команд преследует цель достижения высокой зафузки устройств процессора.
В качестве образца работы группировщика приведем следующий пример |25|. Пусть требуется вычислить выражение о|/ + 1] = Ь[/+ 15| + с[& + 7]. Компилятор формирует код, представленный в листинге 4.1.
Idl j
load local variable j
Idl b
load base address of array b
wsub
calculate address of b[j]
Idnl 15
load value of element b[j+15)
Idl k
Idl с
wsubIdnl 7wsubIdnl 7addIdl iaddIdl iadd two values on the top of stackadd two values on the top of stackIdl aIdl awsubwsubstnl 1stnl 1store into a(ifl]store into a(ifl]
wsub
Idnl 7
wsub
Idnl 7
add
Idl i
add
Idl i
add two values on the top of stack
add two values on the top of stack
Idl a
Idl a
wsub
wsub
stnl 1
stnl 1
store into a(ifl]
store into a(ifl]
Эта последовательность команд преобразуется группировщиком в 3 группы:
Idl, Idl, wsub, Idnl.
Idl, Idl, wsub, Idnl, add.
Idl, Idl, wsub, stub
Процессор за один такт извлекает из памяти 4 команды. В силу того, что некоторые команды требуют для исполнения не один, а несколько тактов, в процессоре может быть накоплено количество команд, достаточное для формирования 5 групп по 8 команд каждая, что соответствует полной загрузке устройств процессора.
Транспьютероподобные микропроцессоры серии "Квант"
Основы архитектуры
Примером отечественной разработки транспьютероподобных процессоров являются микропроцессоры серии "Квант" |165, 166]. Это семейство 32- разрядных микропроцессоров с оригинальной архитектурой, сочетающей RISC-подход с методикой длинного командного слова. Семейство характеризуется высокой степенью внутреннего параллелизма процессов обработки, конвейерным выполнением команд, гарвардской архитектурой памяти, наличием последовательных коммуникационных каналов — линков. Были выпущены две модификации микропроцессора:
"Квант-10" по технологии 2,5 мкм на трех полузаказных матричных кристаллах 1537 ХМ2, спроектированных в НИИ "Квант" и изготовленных в НИИ точной технологии (г. Зеленоград);
"Квант-20" по технологии 1,5 мкм на одном кристалле типа U1700 фирмы ZMD (ФРГ, г. Дрезден), спроектированном в НИИ "Квант" и изготовленном фирмой ZMD.
Структура микропроцессора показана на рис. 4.5.
Рис. 4.5. Структура микропроцессора "Квант"
Микропроцессор работает с внешними раздельными кэшами команд и данных и может использовать сопроцессор. Память данных микропроцессора содержит только данные, тогда как память команд может содержать как команды, так и данные (такая архитектура памяти получила название "модифицированной гарвардской").
Устройство управления
Процессор выбирает из памяти команд 32-разрядные команды и помещает их сначала в первый, а затем во второй регистры команд, далее декодирует команды и формирует управляющие сигналы для всех функциональных блоков процессора. Блок управления прерываниями обеспечивает приоритетную схему обработки 10 типов внешних и внутренних прерываний. Блок прямого доступа в память (ПДП) позволяет выполнять вычисления одновременно с обменом данными по 4 коммуникационным каналам. Блок защиты данных предназначен для защиты фрагментов памяти команд и данных, выделяемой под операционную систему.
Адресное устройство
В процессоре реализована концепция "разнесенной" (decoupled) архитектуры [И], в соответствии с которой все вычисления адресов выполняются отдельным адресным устройством, которое предоставляет возможность одновременной обработки данных в арифметическом устройстве и вычисления адресов в адресном устройстве. "
Адресное устройство содержит в программном счетчике адрес следующей команды, поддерживает в памяти стек адресов возврата из подпрограмм (обработчиков прерываний), выполняет все вычисления адреса в 16-раз- рядном адресном сумматоре. Файл адресных регистров (АР) содержит 8 16- разрядных АР для МП "Квант-10" и 4 16-разрядных АР для МП "Квант-20".
Арифметическое устройство
Арифметический блок способен выполнять 16 логических и 14 арифметических операций, в том числе байтовые, пошаговое умножение 32-разрядного множимого на два разряда множителя. Логический блок может выполнять логические операции параллельно с арифметическим блоком. Все операции выполняются над 32-разрядными операндами за один такт.
Универсальный сдвигатель способен выполнять за один такт логический, арифметический или циклический сдвиг 32-разрядного слова влево или вправо на 0—31 разрядов, а также осуществлять циклические сдвиги внутри байтов, тетрад, пар. Схема маскирования арифметического устройства по-
зволяет маскировать результаты любой операции содержимым одного рз регистров общего назначения. Файл регистров общего назначения (РОН) используется для хранения операндов, результатов, масок, адресов данных. В регистр флагов заносятся признаки по результатам выполнения операций в арифметическом устройстве.
Системное устройство
Системное устройство обеспечивает связь с 4 аналогичными процессорами по независимым каналам. Обмен осуществляется побитно блоками слов. В начале каждого блока задается количество передаваемых слов и адрес в памяти, в который будет записываться сообщение. В процессе передачи осуществляется контроль по четности для каждого передаваемого байта данных. В случае ошибки при передаче вырабатывается соответствующее прерывание.
Регистр защиты памяти позволяет запрещать запись в любой блок памяти длиной 4 Келов.
Конвейер процессора
В процессоре реализован трехстадийный конвейер выполнения команд. На первой стадии осуществляется выборка команды из памяти команд, на второй сталии производится формирование адреса данных для последующего обращения в память и модификация регистров адреса, на третьей стадии выполняются ввод/вывод данных из памяти по предварительно вычисленному адресу и операции арифметики. Действия на каждом этапе выполняются за один такт, что позволяет при обеспечении высокой степени загруженности конвейера выполнять команды в среднем за один такт.
Система команд
Команды процессора подразделяются на простые и комплексные. Первые выполняют одно действие, тогда как вторые задают трехадресную арифметическую операцию над данными в регистрах одновременно с операцией обмена данными с памятью и (или) модификацией адресных регистров.
При обращении к памяти используются следующие виды адресации: базовая по содержимому АР, базовая по содержимому РОН, автоинкрементная или автодекрементная адресация по любому АР, базово-индексная адресация по двум АР. В микропроцессоре "Квант-20” добавлена базово-индексная адресация с 8-разрядным смещением, задаваемым в поле команды.
Для упрощения устройства управления и обеспечения большей гибкости в программах в микропроцессоре реализована следующая схема выполнения условных и безусловных переходов. В случае условного перехода специальная команда проверяет соответствие флага признаков результата арифмети-
ческой операции одному из 16 возможных условий перехода. Если имеет место соответствие, то следующая команда не выполняется, а как бы подменяется пустой операцией (NOP). Причем проверка условия осуществляется на фоне выполнения арифметических операций.
Чтобы не нарушить работу конвейера (избежать пропуска конвейерных циклов), безусловный переход выполняется по принципу отложенного перехода. В конвейере сначала отрабатывается команда, следующая за командой перехода, а затем выполняется переход. Так же выполняется и обращение к подпрограммам.
Конвейеризация внутренних процессов и совмещение во времени выполнения операций в различных функциональных устройствах микропроцессора позволяют выполнять до четырех команд за один такт.
Производительность микропроцессора
Гибкая система команд микропроцессора способствует его эффективному применению как на задачах счетного характера, так и на задачах логической и символьной обработки. Коммуникационные возможности процессора позволяют строить па его базе масштабируемые системы с МРР-архитектурой.
Уникальная архитектура процессора серии "Квант" позволила обеспечить лучшее значение производительности по сравнению с транспьютерами фирмы Inmos [166]. Производительность микропроцессора "Квант-10" с тактовой частотой 4 МГц соответствует производительности транспьютера Т-800 с частотой 20 МГц. Производительность микропроцессоров "Квант-10" и "Квант-20" может быть оценена соответственно как 12—15 MIPS и 25—30 MIPS.
Вопросы для самоконтроля к главе 4
Назовите основные архитектурные и структурные особенности устройств транспьютерного семейства.
Какие свойства позволяют рассматривать транспьютер в качестве элементной базы мультипроцессорных систем?
Укажите основные функциональные блоки транспьютера и их назначение.
Что такое дескриптор процесса?
Поясните принцип формирования вторичных операций транспьютера.
В чем состоит отличие в диспетчеризации высоко- и низкоприоритетных процессов?
Как распределена память транспьютера?
Поясните процесс обмена данными между параллельными процессами через аппаратный и виртуальный линки.
Какие средства контроля и диагностики предусмотрены в транспьютере?
Поясните процесс начальной загрузки транспьютера через линк.
Назовите основные функциональные блоки транспьютера Т-9000 и объясните их назначение.
Поясните принцип работы виртуальных линков транспьютера Т-9000.
Назовите назначение и функции группировшика команд.
Назовите состав и архитектурные особенности микропроцессоров семейства "Квант".
Глава 5НейропроцессорыГлава 5Нейропроцессоры
Глава 5
Нейропроцессоры
Глава 5
Нейропроцессоры
Общие сведения о нейросетевых вычислениях
Проблемная ориентация нейросетевых вычислений
Нейросетевой подход показал свою эффективность как при решении плохо формализованных задач распознавания, кластеризации, ассоциативного поиска, так и при решении хорошо формализованных, но трудоемких задач аппроксимации функций многих переменных и оптимизационных задач.
Для плохо формализованных задач характерно отсутствие разработанных моделей, приводящих к расчетным формулам, или цепочек простых действий, последовательное, быть может, многократное применение которых дает искомый результат. Классическим примером плохо формализованной задачи служит проблема распознавания образов "кошки" и "собаки". Человек решает эту задачу безошибочно, однако попытка написать распознающую программу, основанную на правилах "если А, то Б", сталкивается с неопределенностью набора параметров, по которым различаются образы этих животных. Попытка увеличить число рассматриваемых параметров ведет к усложнению программы и появлению в ней противоречивых правил.
В задаче аппроксимации функций многих переменных при использовании традиционных методов для получения требуемой точности при увеличении размерности функции необходимо увеличивать число членов линейной комбинации фиксированных базисных функций, что делает практически неприемлемым использование этих методов в задачах большой размерности (167]. При нейросетевом подходе точность аппроксимации при любой размерности аппроксимируемой функции зависит только от числа членов линейной комбинации базисных функций.
Для оптимизационных задач, относящихся к классу АР-полных, не существует другого точного метода решения кроме полного перебора п'. возможных
вариантов решения, где п — размерность задачи. Нейросетевые алгоритмы обеспечивают достижение приемлемых приближенных решений этих задач.
Практическая важность перечисленных задач — безусловна. Следуя [168— 170], приведем типовые постановки этих задач.
Распознавание образов. Задача состоит в отнесении входного набора данных, представляющего распознаваемый объект, к одному из заранее известных классов. В число этих задач входит распознавание рукописных и печатных символов при оптическом вводе в ЭВМ, распознавание типов клеток крови, распознавание речи и др.
Кластеризация данных. Задача состоит в группировке входных данных по присущей им "близости". Алгоритм определения близости данных (определение расстояния между векторами, вычисление коэффициента корреляции и другие способы) закладывается в нейросеть при ее построении. Сеть кластеризует данные на заранее неизвестное число кластеров. Наиболее известные применения кластеризации связаны со сжатием данных, анализом данных и поиском в них закономерностей.
Аппроксимация функций. Имеется набор экспериментальных данных {(%), К)), ... ..., (Х,ь К„)}, представляющий значения Y; неизвестной функции от многомерного аргумента Л), z = 1, ..., п. Требуется найти функцию, аппроксимирующую неизвестную и удовлетворяющую некоторым критериям. Эта задача актуальна при моделировании сложных систем и создании систем управления сложными динамическими объектами.
Предсказание. Имеется набор {ХЛ), Х^)- —« УкО\ значений у, представляющих поведение системы в моменты времени /,, /2, ..., /„. Требуется по предыдущему поведению системы предсказать ее поведение yU„ + i) в момент времени /„ + р Эта задача актуальна для управления складскими запасами, автоматизированных систем поддержки принятия решений.
Оптимизация. Цель этих задач найти решение ЛТ’-полной проблемы, удовлетворяющее ряду ограничений и оптимизирующее значение целевой функции. К числу этих задач относится, например, задача коммивояжера.
Контекстно-адресуемая (ассоциативная) память. Эта память позволяет считывать содержимое по частичному или искаженному представлению входных данных. Основная область применения — мультимедийные базы данных.
В отличие от программ, базирующихся на правилах типа "если А, то Б", нейронная сеть может экстраполировать результат. Еще одно преимущество нейросетей перед программами, базирующимися на правилах, состоит в том, что учет новых фактов заключается в переобучении сети с их участием, а не в переделывании правил программы и ее переписывании. Кроме того, настройка нейронной сети на большем числе примеров может не увеличивать время ее работы (например, при сохранении графа сети), а введение новых дополнительных правил замедляет работу программы.
Вообще говоря, чем более изучена проблема, тем выше вероятность применения для ее решения алгоритмов, основанных на формулах и правилах. Однако при ограниченном количестве экспериментальных данных нейронные сети являются аппаратом, позволяющим максимально использовать имеющуюся информацию. Характерный пример [169] использования нейронных сетей дают системы оптического считывания и распознавания символов. Среди Ю лучших систем есть как основанные на нейросетевом подходе, так и системы, использующие программы, основанные на правилах.
Основы организации нейросетевых вычислений
Общая идея применения нейронных сетей для решения плохо формализованных задач основана не на выполнении предписанного алгоритма, а на запоминании сетью предъявленных ей примеров на этапе создания сети и выработке результатов, согласованных с запомненными примерами, па этапе решения нейросетью задачи.
Практическая реализация этих положений подразумевает, во-первых, минимизацию объема памяти, требуемой для запоминания примеров, и, во- вторых, быстрое использование запомненных примеров, исключающее применение традиционных типов памяти.
В нейронных сетях принято следующее представление решаемых задач. Исходя из постановки задачи, выявляется набор и входных параметров, от которых, по мнению исследователя, зависит ее решение. Этот набор в душнейшем может многократно уточняться в ходе экспериментов по обучению нейросети. Каждому входному параметру X/, / = I, ..., м, задачи сопоставляется измерение / многомерного пространства, размерность которого равна числу п параметров. Для каждого параметра используется некоторая шкапа, задающая возможные значения этого параметра. Тем самым постановка задач сводится к определению свойств точек х,= (xyi, х^, ..., лу,,} л-мерного пространства, где Xjf — значение входного параметра / точки у при известных свойствах точек, принадлежащих примерам, использованным при обучении.
Итак, пусть имеется обучающий набор примеров:
<Аь D\> = <(хн, ..., Х|„), D\>;
<^2, D^ = <(Х2|, ..., Х2л), Dt>\
<(х/Я|, , xmn), Dm>.
Xj = (xyi, ..., Xj„) — входные значенияу-го примера, Dj — требуемое выходное значение при подаче на входы у-го примера, у = 1, ..., т. Считается, что сеть правильно обучена, если выполняется критерий окончания обучения.
В качестве этого критерия обычно используют следующие, хотя могут быть и другие:
для всех у: max|Z)y Yj\ < б, где б — заданная величина ошибки; Yj — выходное значение, выдаваемое сетью при подаче на се входы у-го примера, у = 1, ..., т.
1^(0,-У,)2 <5.
V i
В задачах, эффективно решаемых нейросетями, точки многомерного пространства, в котором сформулирована задача, образуют области точек, обладающих одним и тем же свойством, например, принадлежащих одному классу объектов, имеющих одинаковое значение заданной на них некоторой функции и т. д. Нейронные сети запоминают подобные области, а не отдельные точки, представляющие предъявленные при обучении примеры.
Используются различные способы реализации запоминания областей. Наиболее употребляемые в настоящее время способы — это выделение областей гиперплоскостями и покрытие областей гипершарами. На рис. 5.1 показано выделение областей в двумерном пространстве.
Рис. 5.1. Выделение областей в двумерном пространстве
Для запоминания одной гиперплоскости из ограничивающих область достаточно сохранения и + I значения, где и — размерность пространства. Соответственно для запоминания одного гипершара также требуется n + I значение: координаты центра и радиус.
В нейронных сетях для запоминания каждой гиперплоскости или гипершара используется отдельный элементарный вычислитель, называемый нейроном, а для запоминания всех гиперплоскостей или гипершаров используется объединение составляющих нейронов в параллельную структуру — нейросеть. Именно параллельная согласованная работа всех нейронов обеспечивает быстрое решение задачи о принадлежности точки /7-мерного пространства выделяемой при создании сети области.
Основные понятия теории нейронных сетей
Нейрон у, у EMBEDe {1, 2, ..., и^, задается совокупностью своих входов х/Л / е EMBED{1, 2, ..., л}, весами входов wjSl функцией состояния Sj и функцией активации Jj. Функция состояния определяет состояние нейрона в зависимости от значений его входов, весов входов и, возможно, предыдущих состояний. Наиболее часто используются функции состояния, не зависящие
от предыдущего состояния, значений входов на веса лЦ)(Xх;/ -wji > где nV) ~ число /=|от предыдущего состояния, значений входов на веса лЦ)(Xх;/ -wji > где nV) ~ число /=|вычисляемые либо как сумма произведений соответствующих входов по всем входам
от предыдущего состояния, значений входов на веса лЦ)
(Xх;/ -wji > где nV) ~ число /=|
от предыдущего состояния, значений входов на веса лЦ)
(Xх;/ -wji > где nV) ~ число /=|
входов нейрона у), либо как расстояние между
вектором входов Xj = {ху,} и вектором весов входов Wj = {ну,}, измеряемое в
какой-либо метрике, например,
Функция активации у=Л5) определяет выходной сигнал нейрона как функцию его состояния s. Наиболее распространенными функциями активации являются ступенчатая пороговая, линейная пороговая, сигмоидная, арктангенс, а также линейная и гауссиана, приведенные в табл. 5.1.
Таблица 5.1. Функции активации нейрона
Название
Определение
Ступенчатая пороговая
у = 0 при з < а, у = 1 при s > а
Линейная пороговая
у= 0 при s< ab у = ks* b при а1 < 5 < а2, у = 1 при
1
з > а2, ат = — + m к
Сигмоидная
у=(1 + е-М*-->)-’
Гиперболический тангенс
Арктангенс
у = th (х) = (е* - е"х)/(ех + е~ I у = 2 arctg (х)/ л
Таблица 5.1 (окончание)
Название
Определение
Линейная
у = ks + b
Гауссиана
у = e-kts-a^
Линейные нейронные сети используют нейроны с линейной функцией активации, нелинейные — применяют нелинейную функцию активации, например, пороговую или сигмоидную.
Нейронная сеть образуется путем объединения ориентированными взвешенными ребрами выходов нейронов с входами. При этом граф межнейронных соединений может быть ациклическим, либо произвольным графом с циклами. Вид графа служит одним из классификационных признаков типа нейронной сети, разделяющим сети на сети без циклов и сети с обратными связями. Примеры нейронных сетей этих типов приведены на рис. 5.2 и 5.3 соответственно. ■
Легко видеть, что, приняв некоторое соглашение о тактировании сети (времени срабатывания нейронов), мы получаем аппарат для задания алгоритмов посредством нейронных сетей. Разнообразие этих алгоритмов ничем не ограничено, т. к. можно использовать нейроны с различными функциями активации, различными функциями состояния, двоичными, целочисленными, вещественными и другими значениями весов и входов. Поэтому в терминах нейронных сетей можно описывать решение как хорошо формализованных задач, например задач математической физики, так и плохо формализуемых задач распознавания, классификации, обобщения и ассоциативного запоминания.
Рис. 5.2. Нейронная сеть без циклов
Рис. 5.3. Нейронная сеть с обратными связями
Сети могут быть конструируемыми или обучаемыми. В конструируемой сети число и тип нейронов, граф межнейронных связей, веса входов нейронов определяются при создании сети, исходя из решаемой задачи. Например, при конструировании сети Хопфилда (171 ], функционирующей как ассоциативная память, каждая входная последовательность из заранее определенного набора участвует в определении весов входов нейронов сети. После конструирования функционирование сети заключается в следующем. При подаче на входы частичной или ошибочной входной последовательности сеть через какое-то время переходит в одно из устойчивых состояний, предусмотренных при ее конструировании. При этом на входах сети появляется последовательность, признаваемая сетью как наиболее близкая к одной из изначально поданных.
Число запоминаемых входных последовательностей М связано с числом нейронов в сети соотношением М < N/4 log/V, где N — число нейронов.
В обучаемых сетях их графы межнейронных связей и веса входов изменяются при выполнении алгоритма обучения. По алгоритму обучения сети делятся на наблюдаемые, ненаблюдаемые и смешанные (гибридные). Первые при обучении сравнивают заранее известный выход с получившимся значением. Вторые обучаются, не зная заранее правильных выходных значений, но группируя "близкие" входные векторы так, чтобы они формировали один и тот же выход сети. Ненаблюдаемое обучение используется, в частности, при решении задачи кластеризации. При смешанном алгоритме обучения часть весов определяется при наблюдаемом, а часть при ненаблюдаемом обучении.
Обучение осуществляется путем предъявления примеров, состоящих из наборов входных данных в совокупности с соответствующими результатами при наблюдаемом обучении и без последних при ненаблюдаемом. Эффек-
тивность решения задач нейронной сетью зависит от выбранной структуры нейронной сети, используемого алгоритма обучения, называемых в совокупности нейропарадигмой, и полноты имеющейся базы данных примеров.
Организация
функционирования нейросети
При использовании гиперплоскостей каждый нейрон j с пороговой функцией активации, у е EMBED {I, ... , N\, N — число нейронов в сети, задает гиперплоскость значениями весов своих входов:
- X WH Х Х" = °’ / = 1
где л(/) — число входов нейрона /, aj — величина порога.
В этом случае запоминание примеров выполняется путем формирования нейронной сети и заданием весов входов. Изменение весов входов, числа нейронов, графа межнейронных связей меняет набор и положение разделяющих гиперплоскостей, разбивающих многомерное пространство на области.
На рис. 5.4 приведено схематичное изображение возможностей сетей с двумя входами по разбиению областей двумерного пространства. Одноуровневая сеть, известная также как простой персептрон, нс способна разделить на два класса точки, соответствующие нулевым и единичным значениям булевой функции "исключающее ИЛИ". Двухуровневые сети и сети с большим числом уровней способны справиться с этой задачей. Посредством нейросетей с числом уровней, превышающим два, и с п входами может быть задана произвольная булева функция от п переменных [172].
Как показано в [173—175], двухуровневая нейронная сеть способна аппроксимировать с любой наперед заданной погрешностью EMBEDe > 0 любую непрерывную функцию Дх|, xj, —, xnV определенную на ограниченном множестве:
n1
ЯХ|, X?, •••, хп) = У ... х,
MV' 1 + e'(M,'iXi+M'<2X2+-+w„x„)
где V/EMBED — веса входов нейрона второго слоя с линейной функцией активации; EMBEDw^- — вес /-го входа, j = I, ..., и, /-го нейрона, / = 1,.... N, первого слоя с сигмоидной функцией активации; N — число нейронов первого слоя.
Трехуровневая сетьТрехуровневая сетьРис. 5.4. Разбиение 2-мерного пространства 2-входовыми нейросетямиРис. 5.4. Разбиение 2-мерного пространства 2-входовыми нейросетями
Трехуровневая сеть
Трехуровневая сеть
Рис. 5.4. Разбиение 2-мерного пространства 2-входовыми нейросетями
Рис. 5.4. Разбиение 2-мерного пространства 2-входовыми нейросетями
Такие сети называются многоуровневыми персептронными сетями.
В случае покрытия гипершарами каждый нейрон задает значениями весов своих входов координаты центра гипершара, а также запоминает радиус этого гиперкуба.
Эти сети называются сетями с радиусными базисными функциями.
Как видно, в обоих случаях имеет место реализация распределенного коллективного запоминания нейронами при обучении предъявленных сети
14 Зак. 1086
примеров. Естественно, что этими двумя случаями разнообразие нейронных сетей не должно исчерпываться, т. к., например, в качестве разделяющих поверхностей могут использоваться не гиперплоскости, а гиперповерхности второго и более высоких порядков.
В ходе функционирования сеть относит предъявленный на ее входы набор значений к той или иной области, что и является искомым результатом, Заметим, что предъявляемый сети набор входных значений мог не подаваться на входы сети при обучении. Но, в силу сформированных посредством других наборов входных значений совокупности областей, этот набор попадет в одну из них. Если результат правильный, то имеет место правильно функционирующая сеть, иначе сеть обучена или сконструирована с ошибкой. Поэтому смысл процедуры обучения или конструирования — отделение множеств точек каждой области без включения посторонних точек и потери своих.
Алгоритмы обучения многоуровневых персептронных сетей
Большинство алгоритмов обучения использует эвристические приемы формирования графов сетей и весов ребер. При использовании многоуровневых персептронных сетей обучение начинается с выбора начальной сети (эвристически выбираемый граф) с заданным в постановке задачи числом входов и выходов, связывающей входы с выходами. Например, в [170] рекомендуется взять трехслойную сеть с числом нейронов внутреннего слоя, равным полусумме числа входов и выходов сети. Каждый нейрон внутреннего слоя должен быть связан с выходами всех входных нейронов сети. Каждый выходной нейрон должен быть связан с выходами всех нейронов внутреннего слоя.
Далее предпринимается попытка подобрать веса входов нейронов сети так, чтобы сеть решала поставленную задачу. Если это не удается для выбранного графа сети, то по некоторой эвристике, например, с использованием генетических алгоритмов [176| перебираются графы сетей, для каждой из которых предпринимается попытка обучения. Этот процесс продолжается до получения устраивающего результата.
Практически важным алгоритмом определения весов сети при наблюдаемом обучении персептронных сетей, для которого доказана сходимость процесса, является алгоритм обратного распространения (168—170]. При обучении сигнал ошибки распространяется обратно по сети. Производится коррекция весов входов нейронов, предотвращающая повторное появление этой ошибки.
Аппаратные средства, интерпретирующие алгоритмы, заданные нейронной сетью
Подходы к аппаратной реализации нейросетей
Построение вычислительных систем, интерпретирующих нейросетевые алгоритмы, осуществляется сейчас на традиционной элементной базе. Однако весьма многообещающей выглядит потенциальная возможность реализации базисной операции (вычисления скалярного произведения) в физической среде-носителе сигнала. Прежде всего, это касается операции суммирования в электромагнитном поле, хотя в живых организмах существуют и иные примеры, в частности, суммирование на биохимическом уровне. Реализация скалярного произведения за счет суммирования электромагнитного поля (включая оптический диапазон) может привести к тому, что время срабатывания элемента, вычисляющего скалярное произведение, будет исключительно малым, сравнимым со временем прохождения светом линейного размера элемента. '
Алгоритм, заданный нейронной сетью, может быть интерпретирован обычной универсальной вычислительной машиной, либо некоторым специализированным устройством [177, 178].
Сравнение аппаратных средств, интерпретирующих нейросетевые алгоритмы, затруднено в связи с большим разнообразием параметров. В их число входят: число интерпретируемых нейронов и связей, точность представления значений входов/выходов и весов входов, точность схем умножения и сложения (особенно при аналоговой реализации). Например, если используются 8-разрядные входы и веса и 16-разрядный сумматор, то возникают проблемы точности результатов при интерпретации сетей, имеющих многовходовые нейроны.
Принятой в нейрокомпьютерном мире единицей измерения производительности является число соединений в секунду (CPS — Connections Per Second). Под соединением понимается умножение входа на вес и сложение с накопленной суммой.
Другим показателем, оценивающим скорость обучения, служит число измененных значений весов в секунду (CUPS — Connections Update Per Second).
Эти показатели достаточно условны, т. к. не учитывают разрядности обрабатываемых входов и весов, точность промежуточных результатов и другие особенйости.
При оценке в этих единицах традиционных вычислительных устройств необходимо учитывать, кроме собственно вычислительных операций, операции по выборке из памяти операндов и организации вычислений.
Анализ преобразований, выполняемых при интерпретации нейросетевых алгоритмов, позволяет сделать выводы.
При реализации нейросетевых алгоритмов решения плохо формализованных задач моделирования, прогнозирования и распознавания, при которых создаются (в ходе обучения или конструирования) области многомерного пространства, состоящие из точек, которым соответствуют одни и те же значения выходов нейросети, могут использоваться малоразрядные представления значений входов и весов, а также выполнение операций умножения и сложения с фиксированной точкой. Это обусловлено тем, что значения входов нормируются (приводятся к интервалу |0, 1] или |-1, 11), и число различных значений каждого входа, как правило, невелико. При этом операции с фиксированной точкой, выполняемые существенно быстрее и с меньшими затратами оборудования, по сравнению с операциями с плавающей точкой дают приемлемую точность вычисления положения разделяющих гиперплоскостей или гипершаров.
При решении хорошо формализованных задач, сформулированных в нейросетевом базисе, существенна точность вычислений, что требует многоразрядных представлений чисел и операций с плавающей точкой. Разработка нейросетевых алгоритмов решения хорошо формализованных задач, кроме самоочевидной попытки понять, как надо строить нейрокомпьютеры и наработать впрок программы для нейрокомпьютеров, построенных на новых физических принципах с быстрым вычислением скалярного произведения, имеет целью создать класс параллельных, по-новому структурированных алгоритмов. Эти алгоритмы в большинстве случаев получаются не на основе формальных преобразований существующих последовательных алгоритмов, а в результате творческих находок. Присущая этим алгоритмам большая степень параллелизма, включающая, в том числе, вычисление всех возможных вариантов, из которых заведомо нужен только один, дает простор для исследования аппаратурно-временных затрат на реализацию вычислений. Может оказаться, что для массово-параллельных вычислительных систем, реализованных, например, на кремниевой пластине, такие параллельные программы будут выполняться быстрее, чем программы с меньшим числом операций, но с другой структурой, не обеспечивающей полную загрузку всех вычислителей.
Таким образом, специализация вычислительных средств на исполнение нейроалгоритмов заключается, с одной стороны, в повышении эффективности обмена между памятью и параллельно функционирующим операционными устройствами, а с другой стороны — в уменьшении времени выполнения умножения и следующего за ним сложения за счет укорочения
операндов и выполнения операций с фиксированной точкой. Первое, безусловно, дает выигрыш и при исполнении любых других алгоритмов, второе — специфично нейрокомпьютерное и позволяет создавать встраиваемые системы с рекордными значениями показателей "производительность/ стоимость", "производительность/габаритно-весовые характеристики". Это обусловлено важным свойством нейросетевых алгоритмов по решению задачи с разной степенью точности результата.
Например, при использовании многоуровневых персептронов одна и та же область может быть выделена различным количеством гиперплоскостей с разной степенью точности охвата всех принадлежащих области точек и включением не принадлежащих области точек. Этим наборам гиперплоскостей соответствуют нейросети разной сложности, что обусловливает разную сложность, а, следовательно, разную требуемую производительность при решении одной и той же задачи за заданное время. Поэтому может быть выбран вариант реализации нейросети, достаточно хорошо решающий задачу и имеющий требуемое время исполнения на предоставленных аппаратных средствах. •
Нейрочипы
Нейрочипы бывают цифровые, аналоговые и гибридные. Они также могут включать схемы настройки весов при обучении, а могут не иметь таких схем и предусматривать внешнюю загрузку весов. Наибольшую проблему при создании нейрочипов представляют схемы умножения, т. к. именно они ограничивают скорость вычислений. Следуя обзору |178|, представим нейрочипы первого поколения.
Цифровые нейрочипы
Одним из первых коммерчески доступных нейрочипов был Micro Devices MD1220 [179|. Этот кристалл интерпретирует 8 нейронов и 8 связей с 16- разрядными хранящимися во внутрикристальной памяти весами и одноразрядными входами. Входы имеют одноразрядные последовательные умножители. Длительность такта — 7,2 мкс, что обеспечивает 8,9 MCPS. Сумматоры в кристалле также 16-разрядные. Из этих нейрочипов путем их каскадирования могут быть построены нейрокомпьютеры, аппаратно интерпретирующие в одном такте число нейронов, размещающееся в совокупности объединенных нейрочипов.
Фирма Neuralogix разработала нейрочип NLX-420 [180] с 16 процессорными элементами (ПЭ), каждый из которых имеет 32-разрядный сумматор. Веса и входы загружаются как 16-разрядные слова, но могут быть использованы как 16 одноразрядных слов, либо как четыре 4-разрядных, либо как два 8-
разрядных, либо как одно 16-разрядное слово. Веса хранятся вне чипа. Вход общий для всех ПЭ, что позволяет выполнять параллельно до 16-ти умножений. После того как все входы обсчитаны, 16 результатов в мультиплексном режиме выдаются на задаваемую пользователем пороговую функцию активации для вычисления выходов. Нейрочип имеет производительность 300 MCPS. Кристаллы могут каскадироваться.
Кристалл Lneuro [181] фирмы Philips содержит 16 ПЭ с 16-разрядными регистрами. Каждый ПЭ может функционировать как 16 одноразрядных, 8 2-разрядных, 4 4-разрядных, 2 8-разрядных или 1 16-разрядный ПЭ. Чип имеет 1 Кбайт памяти весов, что позволяет использовать 1024 8-разрядных или 512 16-разрядных весовых коэффициентов. Функция активации реализуется вне чипа, что позволяет при каскадировании интерпретировать большие сети за счет сбора 32-разрядных сумм из разных чипов. Выходы 16 ПЭ мультиплексируются. Кристалл ориентирован на транспьютер как на основной управляющий процессор. Производительность составляет 100 MCPS в режиме 256 одноразрядных ПЭ и 26 MCPS в режиме 64 8-разрядных ПЭ. При использовании чипа в цепи обучения достигается производительность 160 и 32 MCUPS соответственно.
Фирма Hitachi выпустила Wafer Scale Integration [182] — многокристальные полупроводниковые пластины. На пластине размещается сеть Хопфилда с 576 нейронами, каждый из которых имеет 64 8-разрядных весовых коэффициента.
Цифровые кристаллы для систолических систем и систем с одним потоком команд
Это кристаллы с меньшей степенью специализации для нейровычислений и представляют собой близкие к обычным RISC-процессорам чаще всего 16- или 32-разрядные процессоры.
Кристалл N64000 [183] фирмы Inova используется в системе CNAPS и содержит 80 ПЭ, из которых 64 основных и 16 резервных. ПЭ имеет девять 16- разрядных умножителей и 32-разрядный сумматор. Внутри чипа содержится 4 Кбайт памяти 8- или 16-разрядных весов и 32 регистра. Все чипы выполняют синхронно один внешний поток команд.
Чип Hecht-Nielson Computers 100 NAP [184] представляет собой 4 ПЭ, исполняющих 32-разрядную обработку с плавающей точкой. ПЭ может адресовать 512 Кбайт внекристальной памяти и имеет производительность 160 Мflops.
Фирма Siemens производит чип МА-16 [185] для построения систолических сетей, ориентированных на нейросетевые алгоритмы. МА-16 реализует мат-
ричные операции над 4x4 матрицами с 16-разрядными элементами. Умножители и сумматоры имеют 48 разрядов. Веса хранятся вне кристалла. Функция активации реализуется вне кристалла.
Кристалл МТ19003 — Neural Instruction Set Processor [186], называемый процессором с нейросетевым набором команд, фирмы Micro Circuit Engineering — является RISC-процессором с 7 командами, ориентированными на нейровычисления. Вследствие проблемной ориентированности набора команд программы интерпретации нейросети имеют небольшой объем кода, что позволяет загружать их в нейрочип. Для представления входов и весов используются 13-разрядные операнды. Чип имеет 16-разрядный умножитель и 35-разрядный сумматор. Веса хранятся вне кристалла. Скорость обработки 40 MCPS.
Нейрочипы с радиусными базисными функциями
Эти сети манипулируют с расстояниями между входным вектором и запомненными прототипными векторами весов входов нейронов. Если расстояние от прототипного вектора не превышает пороговой величины, то входной вектор относится к этому прототипу. Если расстояние между входным вектором и любым прототипным больше пороговой величины, то входной вектор запоминается как прототипный. Если расстояние между входным вектором и несколькими прототипными не превышает пороговой величины, то величина порога этих прототипных векторов уменьшается. Многомерное входное пространство, таким образом, сегментируется на совокупность областей, заданных прототипными векторами. Эти сети легко настраиваются и просто реализуются в аппаратуре.
Фирма IBM выпустила ZISC036 (Zero Instruction Set Computer — компьютер с числом команд, равным нулю) [187]. Этот кристалл, первый в серии подобных, позволяет работать с 36 прототипами. Собственно то, что для работы кристалла необходимо задать только значения прототипов, определило само название кристалла. Кристаллы легко каскадируются для увеличения числа прототипов. Векторы состоят из 64 8-разрядных элементов. Пороговая величина расстояния выбирается любой. Входной вектор загружается последовательно за 3,5 мкс, и результат появляется через 0,5 мкс.
Фирмы Intel и Nestor создали чип NilOOO |188], подобный ZISC, но более мощный. Он содержит 1024 прототипных 256-мерных векторов с 5-раз- рядными элементами. Скорость обработки 40 000 векторов в секунду при тактовой частоте 40 МГц.
Аналоговые нейрочипы
Аналоговые реализации используют простые физические эффекты для выполнения нейросетевых преобразований. Аналоговые элементы обычно меньше и проще цифровых. С другой стороны, обеспечение необходимой точности требует тщательного проектирования и изготовления.
Кристалл фирмы Ifitel 80170NW ETANN [189] содержит 64 нейрона и 2 банка 64 х 80 весов. Возможно несколько сетевых конфигураций. Чип имеет 64 аналоговых входа (0—3v) и 16 внутренних смещений. На кристалле можно реализовать двухслойную сеть с 64 входами, 64 внутренними и 64 выходными нейронами, имеющую производительность 2GCPS. Другие конфигурации включают трех- и более слойные сети или однослойную сеть со 128 входами.
Точность ETANN 5—6 разрядов для весов и выходов. Настройка 80170NN выполняется пакетом BrainMaker фирмы California Scientific Software.
Гибридные нейрочипы
Гибридные нейрочипы используют комбинацию аналогового и цифрового подходов. Например, входы могут быть аналоговыми, веса загружаться как цифровые и выходы быть цифровыми.
Чип CLNN-32 [190] фирмы Bellcore содержит 32 нейрона. Входы, выходы и внутренняя обработка аналоговые, а 5-разрядные веса — цифровые.
Чип ANNA [191] фирмы AT&T в основном цифровой, но внутри использует конденсаторные заряды для хранения весов. Чип содержит 4096 весов, и число нейронов варьируется от 16 до 256 с числом входов у нейрона 256 или 16 соответственно. Веса имеют точность 6 разрядов. Для однослойной сети с 64 входами и 64 нейронами достигается скорость 2,1 GCPS.
Существуют нейрочипы, в которых используется представление данных частотой или шириной импульсов.
Сигнальные микропроцессоры и микропроцессоры с расширенным набором команд для мультимедийных приложений
Сигнальные микропроцессоры ориентированы на обработку векторов данных, что может быть использовано при интерпретации нейросетевых алгоритмов |177| при умножении с накоплением векторов весов и векторов входов нейронов сети. Собственно это же обусловливает эффективную интерпретацию нейросетей микропроцессорами с ММХ или другим мультимедийным расширением набора команд.
Можно отметить, что при бурном развитии нейросетевых алгоритмов последние несколько лет не появилось новых цифровых нейрочипов. По- видимому, это объясняется тем, что все особенности проблемной специализации первого поколения нейрочипов адекватно учтены при мультимедийных расширениях системы команд таких микропроцессоров, как, например, Pentium III и Motorola PowerPC AltiVec.
Высокая тактовая частота и выполнение в одном такте совокупности команд целочисленной обработки делают эти микропроцессоры почти идеальным средством интерпретации нейросетей. Важным аспектом использования микропроцессоров служит то, что они в состоянии выполнять предобработку данных и обработку результатов работы нейросети. Сказанное относится только к цифровым нейрочипам. Продолжают появляться проблемноориентированные аналоговые нейрочипы.
Нейропроцессор NeuroMatrix NM6403
Основные характеристики архитектуры
Разработанный в Научно-техническом центре "Модуль" [191], отечественный нейропроцессор NM6403 [193—195] имеет скалярный процессор (скалярное-RISC ядро) для выполнения логических, целочисленных арифметических операций, операций сдвига и формирования адресов для обращения в память, а также векторный процессор для обработки двоичных векторов произвольной разрядности в пределах от 1 до 64 битов. При этом в одном такте векторный процессор может выполнять операции над несколькими векторами, вплоть до 64, суммарная длина которых не превышает 64. Скалярный процессор выполняет всю подготовку данных для работы векторного процессора. В целом, нейропроцессор NM6403 характеризуется как процессор с разнесенной (decoupled) архитектурой.
Для работы с памятью нейропроцессор имеет два одинаковых интерфейса, называемых интерфейсами глобальной и локальной памяти, каждый из которых адресует 231 32-разрядных слов. Обмен с памятью выполняется по 64- разрядной шине данных интерфейса, что поддерживается выборкой при одном обращении в память двух соседних слов.
Нейропроцессор NM6403 имеет два встроенных канала, называемых также линками (линк — часто используемая транслитерация слова link, обозначающего понятие "связь", введенная вследствие того, что термин "канал" в русскоязычной литературе закрепился за "каналом прямого доступа в память", для обозначения которого в английском языке служит слово channel). Линки NM6403 совместимы по логическому и физическому протоколам с линками сигнального микропроцессора TMS 320С4Х. Кроме того, интер-
фейсы локальной и глобальной памяти нейропроцессора имеют встроенные схемы арбитража, позволяющие без дополнительного оборудования подсоединять интерфейсы двух разных нейропроцессоров к одному разделяемому блоку памяти. Наличие двух линков и двух интерфейсов разделяемой памяти позволяет компоновать широкий спектр параллельных структур, ряд которых показан на рис. 5.5.
Рис. 5.5. Примеры реализации параллельных структур на базе нейрочипа NM6403
Система команд нейропроцессора NM6403
Команды нейропроцессора принадлежат к двум основным типам: команды скалярного процессора и команды векторного процессора. Команды скалярного процессора выполняются за один такт. Длительность исполнения команды векторного процессора, в зависимости от типа команды, составляет от одного до 32 тактов.
Команды скалярного процессора имеют 32-разрядный или 64-разрядный формат. В последнем случае второе 32-разрядное слово задает константу, адрес перехода или смещение адреса перехода. Команда скалярного процессора включает три поля OPER, MOVE, Р и предписывает выполнение двух операций:
16-разрядное поле OPER [0:15] задает одну из арифметических, логических или сдвиговых операций над содержимым регистров общего назначения;
15-разрядное поле MOVE [16:30] задает преобразование содержимого адресных регистров, пересылку констант и содержимого регистров типа "регистр-регистр", "регистр-память", "память-регистр", "константа-регистр", а также модификацию счетчика команд для управления переходами при выполнении следующих команд: условных и безусловных переходов, перехода к подпрограмме, возврата из подпрограммы и прерывания;
одноразрядное поле Р [31], разрешающее начать выполнение данной команды на фоне незавершенной предшествующей команды векторного процессора.
Скалярный процессор имеет следующие 32-разрядные регистры:
восемь адресных регистров AR0=AR7, используемых при обращениях к памяти (AR7 используется как указатель стека);
восемь регистров общего назначения GRO—GR7;
регистр счетчика команд (PC — Program Counter), задающий адрес очередной команды;
регистр слова состояния процессора (PSWR — Program Status Word Register), содержащий информацию о состоянии процессора, флаги, установленные по результатам выполнения предшествующих команд, информацию о ресурсах процессора и текущие значения масок прерываний.
Команды векторного процессора имеют 32-разрядный формат, состоящий из шести полей: L ]0], VOPER [1: 12], COUNT [13: 17], W [18], VMOV [19: 30], Р [31] и задающий 4 операции:
одноразрядное поле L задает выполнение пересылки WBUF в WOPER;
12-разрядное поле VOPER определяет арифметическую или логическую операцию над векторами упакованных данных;
одноразрядное поле W задает пересылку из WFIFO в WBUF;
12-разрядное поле VMOVE задает обмен с внешней памятью посредством операции "чтение" или "запись" вектора упакованных данных;
5-разрядное поле COUNT определяет число повторений выполнения команды (это поле не используется при пересылке WF1FO в WBUF,
выполняемой всегда за 32 такта; кроме этого, следует отметить, что при повторении команды с заданной пересылкой WBUF в WOPER эта пересылка выполняется только один раз при последнем выполнении команды);
одноразрядное поле Р, разрешающее начать выполнение данной команды на фоне незавершенной предшествующей команды векторного процессора.
Мы не будем касаться организации работы векторного процессора. Заинте- ч ресованный читатель может обратиться к сайту [192] и работам [193, 194]. Однако приведем некоторые пояснения. WBUF и WOPER являются матрицами ячеек памяти объемом 32 х 64 бита, хранящими 64-разрядные слова, представляющие весовые коэффициенты. Пересылка WBUF в WOPER выполняется за один такт.
WFIFO — двухпортовый FIFO-буфер объемом 32 х 64 битов, используемый при подкачке из памяти 64-разрядных слов, представляющих упакованные данные. Пересылка из WFIFO в WBUF выполняется за 32 такта на фоне выполнения векторным процессором других операций с использованием WOPER.1
Таким образом, для исключения простоев в ожидании данных для векторного процессора используется WFIFO-буфер, накачиваемый в темпе, допускаемом памятью, "теневая" память WBUF и память WOPER, непосредственно используемая при выполнении операций обрабатывающим устройством векторного процессора.
Производительность нейропроцессора NM6403
Нейропроцессор NM6403 изготовлен по 0,5 мкм КМОП-технологии и имеет тактовую частоту 50 МГц. Близость архитектур скалярного процессора NM6403 и микропроцессоров семейства "Квант", рассмотренных в главе 4, позволяют сделать вывод о том, что производительность скалярного процессора NM6403 составляет 60—75 млн операций в секунду (в 5 раз выше, чем у "Квант-10" пропорционально тактовой частоте).
В работе [194] приведена формула для определения производительности NM6403 при выполнении нейросетевых алгоритмов при различной разрядности весов и входов нейронов и даны следующие из этой формулы оценки производительности:
50 MCPS при 32-разрядных весах и входах;
51,2 GCPS при одноразрядных весах и входах.
Вопросы для самоконтроля
к главе 5
Какие классы задач эффективно решаются нейросетевыми алгоритмами?
Как организуется запоминание нейросетями обучающих примеров?
Как должна быть сформулирована задача для решения с применением нейросетевых алгоритмов?
Приведите определение понятий "нейрон" и "нейросеть".
Что такое функции состояния и активации нейронов? Приведите примеры функций состояния для персептронных сетей и сетей с радиусными базисными функциями.
В чем заключается процесс обучения нейросети?
Сформулируйте основные идеи обучения многоуровневых персептронных сетей с использованием алгоритма обратного распространения.
Изложите идеи, лежащие в основе обучения сетей с радиусными базисными функциями.
Какими показателями оценивается производительность нейросетей?
Как сравнить производительность традиционных "фоннеймановских" компьютеров и нейросетей?
Какие основные направления специализации вычислительных средств используются для повышения эффективности интерпретации нейросетевых алгоритмов?
Какие преобразования нейросетевых алгоритмов позволяют достигать при решении задач рекордных значений показателей типа "производи- тельность/стоимость", "производительность/объем оборудования" и т. д.? ‘
Перечислите основные типы нейрочипов.
Укажите особенности сигнальных процессоров, повышающие эффективность интерпретации нейросетевых алгоритмов.
Список литературы
Карцев М. А. Арифметика цифровых машин. М.: Наука, 1979. — 575 с.
f 2.\ DeHon A. The Density Advantage of Configurable Computing // Computer. — LV 2000. No 4.
Дж. фон Нейман Теория самовоспроизводящихся автоматов. М.: Мир, 1971. - 382 с.
Henessey J., Patterson D. Computer Architecture: A Quantitative Approach. Morgan Kaufman Publishers, Palo Alto, CA, 1990, — p, 563.
Карцев M. А. Архитектура ЦВМ. — M.: Наука, 1978. — 295 с.
Cray Research, Inc., CRAY-1 Computer System Hardware Reference Manual, Bloomington, Minn., pub. no. 2240004, 1977.
Bell G. Ultracomputers: A Teraflop Before Its Time // Communications of the ACM. - 1992. - Vol. 35, No 8. - pp. 27-47.
8. )Строганов А. Проектирование топологии заказных КМОП БИС // Chip W News. 2003. № 2.
Мур Г. Ничто не бесконечно, но предел можно отодвинуть! // Chip News. 2003. № 2.
The Programmable Logic Data Book. Xilinx, Xilinx, Inc. 1999.
Smith J. Decoupled access/execute computer architectures // ACM Transactions on Computer Systems. — 1984. Vol. 2(4). — pp. 289—308.
Smith J., Sohi G. The Microarchitecture of Superscalar processors // Proc, of the IEEE. - 1995. Vol. 83, No 12. - pp. 1609-1624.
Pratt Y., et. al. One Billion Transistors, One Uniprocessor, One Chip // Computer. 1997. No 9. — pp. 51—57.
Hwu W. Introduction to Predicated Execution // Computer. — 1998. No 1. — —'pp. 49—50.
Halfbill T. Inside IA-64 // Byte. - 1998. - Vol. 23, No 6. pp. 81-88.
Diefendorff K. The Russians Are Coming // Microprocessor report. — 1999. — Vol. 13, No 2.
fl7.) Волин В., Рудометов В., Столярский Е. Организация подкачки кода в ч~/ VLIW-процессоре // Информационные технологии и вычислительные системы. 1999, № 1, с. 58—64.
(J8J Останевич А. Экспериментальное исследование поддержки предикатных вычислений в архитектуре с явно выраженным параллелизмом // Информационные технологии и вычислительные системы. 1999, № 1, с. 41—49.
Overview of the i860XP Supercomputing Microprocessor. Intel Corporation. 1991. - p. 47.
Lenoski D„ Laudon J., Gharachorloo K., Gupta A., Hennessy J. The Directory-Based Cache Coherence Protocol for the DASH Multiprocessor // Proceedings of the 17th Annual International Symposium on Computer Architecture. — 1990. — p. 148—159.
Transputer Databook. INMOS Ltd. 1985.
Коржов В. Java в кремнии // PC WEEK/RE. 20 дек. 1996, 48 с.
DiefendorfT К., el. al. How Multimedia Workloads Will Change Processor Design // Computer. — 1997. No 9. — pp. 43—45.
Щербо В., Козлов В. Функциональные стандарты в открытых системах, (в двух частях). Справочное пособие. М.: МЦНТИ, 1997.
The Т9000 Transputer. Inmos. SGS-Thomson Microelectronics Group. 1991. — p. 194.
Clark D. Blue Gene and the race toward petaflops capacity // IEEE Concurrency. — 2000. January—March. — pp. 5—9.
Tera Computer Company Completes Design of Breakthrough Multiprocessor Chip, http://www.tera.com.
Level One(TM) IXP1200 Network Processor. Advance Datasheet, Revision 278298-001 September 1999, http://www.levell.com.
.^ Barroso L., Gharachorloo K., Novatzyk A., Verghese B. Impact of Chip-Level Integration on Performance of OLTP Workloads // Proc, of The Sixth International Symposium on High-Performance Computer Architecture (HPCA). 2000. January.
Sohi G., Roth A. Speculative Multithreaded Processors // Computer. 2001. — Vol. 34, No 4.
Sohi G., Breach S., Vijaykumar T. Multiscalar Processors // Proceedings of the 22nd Annual International Symposium on Computer Architecture, 1SCA '95, June 22—24, 1995, Santa Margherita Ligure, Italy. — pp. 414—425.
Krishnan V., Torrellas J. A Chip-Multiprocessor Architecture with Speculative Multithreading // IEEE Transactions on Computers. 1999. — Vol. 48, No 9.
Tsai J., et. al. The Superthreaded Processor Architecture // IEEE Transactions on Computers. 1999. — Vol. 48, No 9.
. Koi R., Ginosar R. Kin: A High Perfomance Asynchronous Processor Archi- - lecture // Proceedings of International Conference on Supercomputing. July 13—17, 1998, Melbourne, Australia. — pp. 433—440.
The National Technology Roadmap for Semiconductors, Semiconductor Industry Association, 1997. http://www.sematech.org.
Batcher K. STARAN Parallel Processor System Hardware // 1974 National Computer Conference, AFIPS Conference Proceedings, Vol. 43. — pp. 405—410.
.; Reddaway S. DAP — A Distributed Array Processor // Proceedings of 1st Annual Symposium on Computer Architecture, IEEE, 1973.
Hillis W. The Connection Machine. The MIT Press, 1985.
CRAY, Inc. Announces CRAY SX-6 series of high-performance, high- effeciency supercomputers, http://www.cray.com.
. । Davidson E. Large Chip vs. MCM for a High-Performance System // IEEE Micro. 1998. - Vol. 18, No 4. - pp. 33-41.
. (Koyanagi M. et. al. Future System-on-Silicon LSI Chips // IEEE Micro, ' 1998. - Vol. 18, No 4. - pp. 17-22.
Diefendorff K. Power4 Focuses on Memory Bandwith // Microprocessor Re- port. 1999. - Vol. 13, No 13.
Корнеев В. Параллельные вычислительные системы. М.: Нолидж. 1999. — ^ 312 с. М Pr<.} Ui'i’Arс
4.) Евреинов Э. В., Косарев Ю. Г. Однородные универсальные вычислительные системы высокой производительности. Новосибирск: Наука. 1966. - 308 с.
5. Smith D., Hall J., Miyake К. The САМ2000 Chip Architecture. Rutgers University. 2000. http://www.cs.rugers.edu/pub/technical-reports.
Goodman S., Wolcott P., Burkhart G. Building on the Basics: An Examination of High-Performance Computing Export Control Policy in the 1990s. Centre for International Security and Arms Control. Stanford University. 1995. — pp. 78.
Кручинин С. Стандартные тесты измерения производительности // COMPUTER WEEK. Москва. 5(211), 8-14 февраля. 1996.
Curnow Н. and Wichmann В. A Synthetic Benchmark // Computer Journal, 1976. - Vol. 19, No 1.
http://www.netlib.org/benchmark/performance.ps.
SPEC (http://www.specbench.org).
STREAM: Sustainable Memory Bandwidth in High Performance Computers, http://www.cs.virginia.edu/stream.
CPU-Rate, http://www.phy.duke.edu/brahma/dual_athlon/src/cpu-rate/cpu-rate.hhnl.
Хеннинг Дж. SPEC CPU 2000: определение производительности в новом тысячелетии // Открытые системы. 2000. № 7—8.
54. IBM’s Cell completes design phase // IEEE Micro. 2002. — Vol. 22, No 5.
Pentium Processor Family. Developer’s Manual, Intel Corporation, 1997.
Intel Architecture. Optimization Manual. (Order Number: 242816-003), Intel Corporation, 1997.
Pentium Processor with MMX technology, (Order Number 243185-001), Intel Corporation, January 1997.•
Pentium Pro Family Developer’s Manual. Volume 1: Specifications. (Order Number 242690), Intel Corporation, 1996.
Intel Delivers the Next Level of Computing with the New Pentium 11 Processor, Intel Corporation, May 1997.
Pentium II Processor at 233 MHz, 266 MHz and 300 MHz, (Order Number: 243335-001), Intel Corporation, April 1997.
Introduction to Streaming SIMD Extensions, Intel Corporation, 1999.
Fischer S., Mi J., Teng A. Pentium® 111 Processor Serial Number Feature and Applications // Intel Technology Journal. 1999. — Q2.
IA-32 Intel® Architecture Software Developer’s Manual Volume 1: Basic Architecture. Intel Corp. 2003.
Sharangpani H., Arora K., Itanium Processor Microarchitecture // IEEE Micro. 2000. Sept.—Oct.
Intel® Itanium® 2 Processor Reference Manual for Software Development _ and Optimization. Intel corp. 2003.
. /Костяков С. Процессоры NexGen — реальная альтернатива Pentium // _ CompUnity. 1995. - № 1(2) - c. 69-74.
. Клаймен Д. Три конкурента процессора Pentium // PC Magazine / Russian Edition. 1995. — № 5. — c. 117—134.
AMD-K5 Processors. Advanced Micro Devices, Inc., 1996.
AMD-Кб MMX Processor. Product Overview. Advanced Micro Devices, Inc., 1997.
ObermanS., Favor G., Weber F. AMD 3DNow! Technology: Architecture and Implementations // IEEE Micro. 1999. — March—April.
Huynh J. The AMD Athlon MP Processor Technology and Performance Leadership for x86 Microprocessors. White Paper. White Paper. Advanced Micro Devices, Inc., August 27, 2002.
AMD Eighth-Generation Processor Architecture. White Paper. Advanced Micro Devices, Inc., October 16, 2001.
Cyrix 5x86. Architectural Overview. Cyrix Corporation, 1995.
6x86 Processor. Data Book, (Order Number: 94175-01), Cyrix Corporation, March 1996.
6x86-P200+ Processor Data Book Addendum, Cyrix Corporation, May 1996.
Cyrix Launches 6x86MX Processor. Cyrix Corporation, May 1997.
Cyrix 6x86MX Processor. Cyrix Corporation, July 1997.
6x86MX Processor Performance Benchmarks. Product Info, Cyrix Corporation, 1997.
IDT WinChip C6 Processor Data Book. Centaur Technology, Inc., March 1998.
WinChip2. IDT WinChip 2 Processor data sheet. Integrated Device Technology, Inc., September 1998.
Полувялов A. VIA Cyrix III (Samuel 2) 600 и 667 MHz, iXBT Hardware, 5 января 2000.
2. Crusoe Processor Model TM3200 Feature. Transmeta Corporation, 2000.
3. Crusoe Processor Model TM5400 Feature. Transmeta Corporation, 2000.
Digital Semiconductor Alpha 21164PC Microprocessor, Product Brief, Digital Equipment Corporation, June 1997.
Digital Semiconductor Alpha 21264 Microprocessor, Product Brief, Digital Equipment Corporation, May 1997.
Gwennap L. Digital 21264 Sets New Standard Clock Speed, Complexity, Performance Surpass Records, But Still a Year Away // Microdesign Resourcses. 1996. — October 28.
Alpha Architecture Handbook, (Order Number EC—QD2KB—ТЕ), Digital Equipment Corporation, October 1996.
Digital Semiconductor 21164 Alpha Microprocessor. Data Sheet, (Order Number: EC—QP98B—ТЕ), Digital Equipment Corporation, February 1997.
Bannon P. Alpha 21364: A Scalable Single-chip SMP. Compaq Computer Corparation, Microprocessor Forum. 1998. — 13 October.
Г 9Q./Борзенко А. Следующее поколение против "будущего" или Next " Generation I/O vs. Future I/O // PC WEEK, № 9(183), 1999.
Архитектура SPARC. Версия 8. Руководство пользователя. SUN Microsystems, 1990.:
The UltraSPARC Architecture. The UltraSPARC Processor, Technology White Paper, Sun Microsystems, Inc., 1995.
Horel Т., Lauterbach G. UltraSPARC-Ill: Designing Third-Generation 64- Bit Performance // IEEE Micro. 1999. — May—June.
Introduction to the MAJCTM Architecture. Sun Microsystems Inc., 1999.
Tremblay M., Microprocessor Architecture for Java Computing. Sun Microsystems Inc., 1999.
Lesartre G., Hunt D. PA-8500: The Continuing Evolution of the PA-8000 Family. Hewlett-Packard Company, 1997.
Gwennap L. PA-8000 Combines Complexity and Speed // Microprocessor Report. 1994. - Vol. 8, No 15.
Gwennap L. HP Pumps Up PA-8xOO Family // Microprocessor Report 1996. — Vol. 10, № 14.
PA-RISC 8x00 Family of Microprocessors with Focus on PA-8700. Technical White Paper. April 2000, http://www.jpn.hp.com/products/servers/parisc/ technology/pa_risc/pdfs/wpaper.pdf.
Paap G., Silha E., PowerPC: A Performance Architecture, Proceedings of COMPCON 1993. - pp. 104-108.
PowerPC 620 Microprocessor. Product Overview. Motorola, Inc., 1994.
AltiVec Technology. Fact Sheet. Motorola, Inc., 1998.
PowerPC 6xx or 7xx RISC Microprocessor Technical Summary, Motorola 1998.
Motorola launches PowerPC G4, www.theregisler.co.uk.
Siegel T., Averil R. Ill, Check M., Giamei B., et al. IBM's S/390 G5 Microprocessor Design // IEEE Micro. 1999. — March—April.
Кузьминский M. IBM свернула на столбовую дорогу // ComputerWorld Россия, 17 ноября 1998.
Tendler J., DodsonS., Fields S., Le H., Sinharoy B. POWER4 System Microarchitecture. IBM Server Group. October 2001.
Yeager K. The Mips R10000 Superscalar Microprocessor // IEEE Micro. 1996. - Vol. 16. - pp. 28-40.
R10000 Microprocessor. Product Overview. Mips Technologies, Inc., October 1994.
НО. Бабаян Б., Ким А., Сахин Ю. Отечественные универсальные микропроцессоры серии "МЦСТ-R" // Электроника: Наука, Технология, Бизнес. 2003. — № 3. — с. 46—51.
Капе G., Heinrich J.MIPS RISC Architecture. Prentice Hall, 1992.
^flZ) http://www.niisi.ru/otdl2.htm.
чТз.^Однокристальный микропроцессор с архитектурой MIPS 1В812. Техни- х—^ ческое описание. niisi.ru/o/lb578omp_short.doc.
1Г4) Введение в цифровую фильтрацию // Под ред. Р. Богнера, А. Констан- тинидиса: Пер. с англ. М.: Мир, 1976.
Guy R., Sohie L, Chen W. Fast Fourier Transforms on Motorola's Implementation on Digital Signal Processors., Motorola, Inc. 1993.
TMS320 Digital Signal Processor Solutions. Texas Instruments Inc., 1997.
TMS320C1X Digital Signal Processors. Production Data, Texas Instruments, Inc., 1993.
TMS320C2x Digital Signal Processors. Production Data, Texas Instruments, Inc., 1994.
TMS320C5x Digital Signal Processors. Production Data, Texas Instruments, Inc., 1995.
TMS320C2xx User’s Guide. Texas Instruments, Inc., January 1997.
TMS320C203, TMS320C209, TMS320VC203 Digital Signal Processors. Advance Information, Texas Instruments, Inc., 1995.
TMS320C54x DSPs. Product Bulletin, Texas Instruments, Inc., 1996.
TMS320C54x, TMS320LC54x, TMS320VC54x Fixed-Point Digital Signal Processor. Data Book, Texas Instruments, Inc., February 1996.
TMS320C30, TMS320C30 Digital Signal Processors. Production Data, Texas Instruments, Inc., April 1996.
TMS320C44 Digital Signal Processor, Data Book, Texas Instruments Inc., 1995.
TMS320C4x, User’s Guide, Texas Instruments Inc., March 1996.
TMS320C80. Multimedia Video Processor (MVP). Technical Brief, Texas Instruments, Inc,, 1994.
TMS320C62xx. Technical Brief. Texas Instruments, Inc., January 1997.
TMS320C62xx CPU and Instruction Set. Reference Guide, Texas Instruments, Inc., January 1997.
TMS320C6201 Digital Signal Processor. Product Preview. Texas Instruments, Inc., January 1997.
ADSP 21xx Family Manual. Analog Devices, Inc., 1995.
ADSP-21000 Family Applications Handbook, Analog Devices, Inc., 1995.
ADSP-219x Family Manual. Analog Devices, Inc., 2002.
ADSP-2106x SHARC DSP Microcomputer Family, Analog Devices, Inc., 1996.
ADSP-21160 SHARC Technical Specification, Analog Devices, Inc., 1998.
36. Кинг К., Гирлинг Г, Воурин К., Левин Н., Моррис Д., Кестер У. Аппаратура цифровых сигнальных процессоров, Analog Devices, Inc., 2002.
ADSP-21535. Preliminary Technical Data. Analog Devices, Inc., June 2002.
DSP56000/DSP56001 User’s Manual. Motorola, Inc., 1995.
DSP56000 24-bit Digital Signal Processor. Family Manual. Motorola, Inc., 1995.
DSP56300 Family Manual. Motorola, Inc., 1995.
DSP56100 Family Manual. Motorola, Inc., 1995.
DSP56600 Family Manual. Motorola, Inc., 1996.
DSP56800 Family Manual. Motorola, Inc., 1996.
DSP96002 Product Documentation. Motorola, Inc., 1996.
MPC8260 PowerQUICC II Technical Summary Motorola, 9/98. — p. 20.
IXP1200 Network Processor. Product Brief, Order Number: PB-0010-0899-
3K, http:\\www.levell.com.
Intel® IXP2850 Network Processor, Product Brief. Intel Corporation. 2002.
Intel® IXP422 Network Processor, Product Brief. Intel Corporation. 2003.
Intel PXA26x Processor Family, Developer's Manual, Intel Corporation, 2003.
Slater M. The microprocessor today // ComputerWeek-Moscow. 1997. — No 17-18 - pp. 34-39, 46, 47.
Halflull T., Montgomery J. Multimedia chips will dominate the technical talc at this Microprocessor Forum // Byte, Chip Fashion. 1996.
Hars A. Hot Chips, Cool Media // Byte. 1995. = Vol. 20. — pp. 45—50.
{f|l)Mpact Media Processor. Data Sheet, Chromatitc Research, Inc., 1997.
Andrews. Hot Chips, Tough Choices. Byte, 1995, Vol. 20. — p. 25.
Cyrix Announces the MediaGX Processor. Cyrix Corporation, February 1997.
Cyrix MediaGX Processor. Data Book, Cyrix Corporation, 1997.
Goodman S., Wolcott P., Burkhart G. Executive Briefing: An Examination of High-Performance Computing Export Control Policy in the 1990s. IEEE CS Press, Los Alamitos, Calif., 1996.
158jWolcott P. Soviet Advanced Technology: The Case of High-Performance x-// Computing. Ph. D. Dissertation. University of Arizona. 1993.
Корнеев В. В. Архитектура вычислительных систем с программируемой структурой. Новосибирск: Наука, 1985. — 168 с.
Н60,'Левин В. К. Высокопроизводительные мультимикропроцессорные сис- ' темы И Информационные технологии и вычислительные системы. 1995.-Том 1,№ к-с. 1-9.
InfiniBandTM Architecture Specification, Volume 1, Release 1.0. October 24, 2000 Final.
. ,RapidIO: An Embedded System Component Network Architecture. Architecture and Systems Platforms Motorola Semiconductor Product Sector 7700 West Parmer Une, MS: PL30 Austin, TX 78729.
Hull M. Occam — A programming system for multiprocessor systems. Computer Unguages 12 (1), pp. 27—37.
Хоар Ч. Взаимодействующие последовательные процессы: Пер. с англ. М.: Мир, 1989. - 264 с.
(П^Виксне П. Е., Каталов Ю. Т., Корнеев В. В., Панфилов А. П., Трубецкой А. В., Черников В. М. Транспьютероподобный 32-разрядный RISC- процессор с масштабируемой архитектурой // Вопросы радиоэлектроники. Серия ЭВТ. 1994. — Выпуск 2. — НИИЭИР. — с. 49—59.
Виксне П. Е., Каталов Ю. Т., Конотопцев В. Н., Корнеев В. В, Ярмолинский И. П. Сравнительная оценка производительности процессоров "Квант-10", "Квант-20" и транспьютера Т-800. Вопросы радиоэлектроники. Серия ЭВТ. 1994. — Выпуск 2. — НИИЭИР. — с. 60—65.
Barron A. Universal approximation bounds for superposition of sigmoid functions // IEEE Transactions Information Theory. 1993. — Vol. 39.
Уоссермен Ф. Нейрокомпьютерная техника. M.: Мир, 1992.
Jain A., Mohiuddin J. Artificial Neural Networks: A Tutorial // Computer. 1996. No 3.-pp. 31-44.
Uwrence J. Introduction in Neural Networks: Design, Theory and Applications. California Scientific Software. 1994. — p. 423.
Hopfield J. Neural networks and physical systems with emergent collective computational abilities. — In: Proc. Nat. Acad. Sci. USA, Vol. 79, 1982. — p. 2554-2558.'
Гаврилкевич M. В. Введение в нейроматематику. Обозрение прикладной и промышленной математики. М.: ТВП, 1994. — с. 377—388.
Hornick К., Stinchcombe М., White Н. Multilayer Feedforward Networks are Universal Approximators // Neural Networks. 1989. — Vol. 2, No 5. — pp. 359—366.
Cybenko G. Approximation by Supcipositions of a Sigmoidal Function // Mathematics of Control, Signals and Systems. 1989. — No 2. — pp. 303—314.
Funahashi К. On the Approximate Realization of Continuous Mappings by Neural Networks // Neural Networks. 1989. — Vol. 2, No 3. — pp. 183— , 192.
176^Эволюционные вычисления и генетические алгоритмы // Обозрение ' ' прикладной и промышленной математики. М.: Научное изд-во "ТВП", том 3, вып. 5, 1996.
Marguerat С. Artificial neural network algorithms on a parallel DSP system. In: Transputers'94 Advanced research and industrial applications. Proc, of the International conf. 21—23 Sept. 1994. IOS Press 1994. — p. 278—287.
Lindsey C., Lindblad T. Survey of neural networks hardware // SPIE. Vol. 2492. - pp. 1194-1205.
MD1220 Data Sheet. March 1990,Micro Devices, 30 Skyline Dr., Lake Mary, Fl 32746-6201,USA.
NLX420 Data Sheet. June 1992, Neurologix, Inc., 800 Charcot Av., Suite 112, San Jose. Ca. USA.
Mauduit №., Duranton M., Gobert J. Lneuro 1.0: A Piece of Hardware LEGO for Building Neural Network Systems // IEEE Trans, on Neural Networks. 1992. — Vol. 3, No 3. — pp. 414—422.
Yasunga M., Msuda №.. Yagytt M., Asai M., Yamada M., Masaki A. Design, Fabrication and Evaluation of a 5-lnch Wafer Scale Neural Network LSI Composed of 576 Digital Neurons // Proceedings International Joint Conference on Neural Networks. 1JCNN'9O, June 1990.
Hammerstrom D. A VLSI Architecture for High-Performance, Low-Cost, On-chip Learning // Proceedings International Joint Conference on Neural Networks. IJCNN'90, June 1990.
Means R., Lissenbee L. Extensible Linear Floating Point SIMD Neurocomputer Array Processor // Proceedings International Joint Conference on Neural Networks. IJCNN'91, July 1991.
Beichter J., Bruels №., Meister E., Ramacher U., Klar H. Design of General-purpose Neural Signal Processor. Proceedings of the 2nd International Conference on Microelectronics for Neural Networks, Munich, Germany. Oct. 1991.
MT19003 Data Sheet, May 1994, Micro Circuit Engineering, Alexander Way, Tewkesbury, Gloucestershire GL20 GTB.
LeBouquin J-P. IBM Microelectronics ZISC, Zero Instruction Set Computer// Procedings of the Word Congress on Neural Networks, Supplement, San Diego, 1994.
Holler M., Park C., Diamond J., Sanloni U., The S., Glier M., Scofield C., Nunez L. A High Performance Adaptive Classifier Using Radial Basis
Function. Procedings of Government Microcircuit Application Conference, Las Vegas, Nevada, USA, Nov. 1999.
80170NX Electrically Trainable Analog Neural Network, Data Sheet, Intel Corp., Santa Clara, CA, 1991.
Alspector J., JayakumarT., Luna S. Experimental Evaluation of Learning in a Neural Microsystem // Proceedings of NIPS'91 in Advances in Neural Information Processing Systems-4. — pp. 871—878, Morgan-Kaufmann Pub., San Mateo, CA. 1992.
Boser B., Sackinger E., Bromley J., LeCun Y., Jacket L. Hardware Requirements for Neural Network Pattern Classifiers // IEEE Micro. 1992. — No 2.- pp. 32-40.
http://www.module.ru.
Виксне П., Фомин Д., Черников В. Однокристальный цифровой нейропроцессор с переменной разрядностью операндов // Известия вузов. Приборостроение. 1996. — т. 36, № 7. — с. 13—21.
Черников В., Виксне П., Фомин Д., Шевченко П. Архитектурные особенности нейропроцессора NM6403 // Сборник докладов V Всероссийской конференции "Нейрокомпьютеры и их применение". Москва, 17— 19 февраля 1999.
Виксне П., Черников В., Фомин Д., Шевченко П. Применение микропроцессора NM6403 для эмуляции нейронных сетей // Сборник докладов V Всероссийской конференции "Нейрокомпьютеры и их применение". Москва, 17—19 февраля 1999.
АAddress Generation Unit 153AltiVec 246вBrainiac 138, 255Branch Target Buffer 151cCode Morphing 210DDecoupled Architecture 151Dual Independent Bus 151Dynamic Execution 151EEnhanced 3DNow! 192EPIC 175H, I, J, M, NHyper-Threading 170, 173Instruction Fetch Unit 151АAddress Generation Unit 153AltiVec 246вBrainiac 138, 255Branch Target Buffer 151cCode Morphing 210DDecoupled Architecture 151Dual Independent Bus 151Dynamic Execution 151EEnhanced 3DNow! 192EPIC 175H, I, J, M, NHyper-Threading 170, 173Instruction Fetch Unit 151
А
Address Generation Unit 153
AltiVec 246
в
Brainiac 138, 255
Branch Target Buffer 151
c
Code Morphing 210
D
Decoupled Architecture 151
Dual Independent Bus 151
Dynamic Execution 151
E
Enhanced 3DNow! 192
EPIC 175
H, I, J, M, N
Hyper-Threading 170, 173
Instruction Fetch Unit 151
А
Address Generation Unit 153
AltiVec 246
в
Brainiac 138, 255
Branch Target Buffer 151
c
Code Morphing 210
D
Decoupled Architecture 151
Dual Independent Bus 151
Dynamic Execution 151
E
Enhanced 3DNow! 192
EPIC 175
H, I, J, M, N
Hyper-Threading 170, 173
Instruction Fetch Unit 151
Предметный указатель
Java-машина 94
Memory Ordering Buffer 153
NetBurst 170
R
Register Alias Table 151
ReOrder Buffer 151
Reservation Station 151
Retirement Register File 153
ROP 185
s
Spead Daemon 214
Speed Daemon 138
Streaming SI MD Extensions 159
T
Thread Level Parallelism 253
TLB 230
V
Very Long Instruction Words 176
Visual Instruction Set 229
VLIW 176
А
Алгоритм:
функционирования процессора 19
обучения нейросетей 410
Амплитудно-частотная характеристика фильтра 274
Аналоговая:
обработка сигнала 273
фильтрация сигнала 273
Аналоговые нейрочипы 416
Аппаратный:
группировшик команд 394
планировщик центрального процессора 383
Аппроксимация функций многих переменных 408
Архитектура:*
IA-64 72
R1SC86 184
SHARC 317
VelociTI 306
микросигнальная 330 мультитредовая 96 персонального клиента — РСА 361 процессора 25
статическая суперскалярная 326
разнесенная 67
Архитектурно независимый формат спецификации программ 94
Архитектурное состояние процессора 81 Ассоциативная:
кэш-память 33
память 30, 407
Ассоциативные процессоры 114
Б
Байт 8
Безусловно исполняемые треды 99
Бит 8
готовности регистра ввода/вывода 27 Бит-рсверсивный порядок 277
Блок: встраиваемый в кристалл динамической памяти 91 памяти 9 режимов работы линков транспьютера 390 событий транспьютера 390 интеллектуальной собственности 55 обработки мультимедийных данных 92,
Буфер:
адресов перехода 141, 328 истории:
* вычислений 81
истории трансляции виртуальных адресов в физические 36 трансляции адресов 141
Буфе риз иро ва н н ы й п ослед о вате л ьн ы й порт 291
Быстрая буферная память 30
в
Векторно-конвейерные процессоры 38
Векторные регистры 39
Вентиль 5
Вес входа нейрона 405
Взаимодействие: процессоров 381 транспьютеров 389 систем 93
Виды зависимостей по данным 66 Внутрикристальный эмулятор 340 Вращение регистров 181 Время: доступа в память 30 переключения контекста 89
Встроенные средства мониторинга производительности и отладки 363
Встроенный сопроцессор транспьютера 386
Вход нейрона 405
Высокоприоритетный процесс транспьютера 387
Вычислительный процесс 28
Выявление:
потенциального параллелизма уровня команд 211
тредов 97
на основе анализа потоков данных, управления 99
г
Гарвардская архитектура 279 модифицированная 309
Генератор адреса 294
Граф межнейронных соединений 406
д
Двойное слово 8
Декодирование команды 20
Динамическая память:
BEDO 48
DDR SDRAM 49
EDO 48
RDRAM 49
видео 52
со страничной организацией
FPM 47
Динамическая структура программы 65
Динамические микросхемы памяти 46
Динамическое преобразование двоичного кода программы во внутренний VLIW-код ядра 210
Дискретная элементная база 38
Дискретное преобразование Фурье 275
Длительность такта 7
Е
Единицы измерения производительности нейросетей 411
3
Зависимости по данным: лишние 66 управление между командами 61
Задача:
аппроксимации функций 402
кластеризации данных 402
оптимизации 402
плохо формализованная 401
предсказания 402
распознавания образов 402
эффективно решаемые
нейросетями 404
и
Изготовление микросхемы 42
Изменение порядка следования
команд 70
Индекс производительности 122
Интеграция:
коммуникационных интерфейсов
в кристалл микропроцессора 92
функций на кристалле 59
Интерпретация нейросетей микропроцессорами 416
Интерфейс:
HyperTransport 196
универсальный асинхронный 330
к
Каналы "точка-точка" 92
Когерентность кэш-памяти, основной
памяти 31
Кодек данных 282
Кодирование видеоданных 368
Команды:
векторные 26
скалярные 26
нейропроцессора 418
перехода 20
безусловные 22
условные 22
транспьютера 385
Компьютер 26
Конвейерноеть 15
Контекст процесса 29
Контроллер прямого доступа
в память 284
Концепция:
Explicitly Parallel Instruction Computing 175
NSP 145 регистровых окон 223 параллелизма 379 процессоров с сокращенным набором команд 61
Криптографические алгоритмы 358 Кэш-память 31 множественно-ассоциативная 33 с буферизацией записей 32 с обратной записью 31 с прямым отображением 32 со сквозной записью 31 трасс 70
Кэш-строка 31
л
Линк 196, 254, 296, 320, 321, 379, 417
Локализуемость данных 30
м
МАС 275
Масштабируемость 93
Машина Тьюринга 17 Медиапроцессор 366 Мезонинные модули SHARCPAC 318 Метод: write-back 141 write-through 141
Методика оценки производительности SPEC 89 127
Механизм: задержанных переходов 242 виртуальных линков 393
Микропроцессор 39 для мобильных коммуникационных устройств 361 транспьютероподобцый 381 отечественный 395 универсальный 45
Микропроцессорное ядро: StrongARM 356 XScale 361
Многокристальные микросборки 60
Многоуровневое прерывание 29
Модель последовательного программирования 65
Мультиплексор 9
Мультипроцессорная система на базе транспьютеров 381
Мультитредовость 170
М ул ьтитредовы й м и Kpoi iроцессор:
Torrent 98
сетевой IXP1200 98
суперкомпьютера Blue Gene 98
Мультитредовый процессор 95
Cell 98
Kin с тредами, выявляемыми путем анализа потоков данных 111
мультискалярный 97 с условно исполняемыми
тредами 100
н .
Набор:
команд 16
процессора DLX 21
микросхем (чипсет) 91
Нахождение решения нейросетью 410
Нейрон 405
Нейронная сеть 406
конструируемая 407
многоуровневая персептронная 409
обучаемая 407
общая идея применения 403
Нейропроцессор NM6403 417
Нейросетевой подход 401
Нейросетевые:
алгоритмы решения оптимизационных задач 402
постановки задач 403
Нейросети с радиусными базисными функциями 409
Нейрочип 413
сеть Хопфилда 414
цифровой 413
Низкоприоритетный процесс транспьютера 387
О
Обмен по линкам между транспьютерами 388
Обработка:
в режиме SIMD-процессора 92
ошибок транспьютера 392
Однокристальная система 97 построение из большого числа простых процессоров 119
Однокристальные процессоры:
SIMD 115
векторно-конвейерные 115
Окно исполнения суперскалярного процессора 66
Операции с памятью 9
Оптимизация показателя производительность/стоимость 413
Опция защиты данных 289
Организация очереди процессов транспьютера 387
Открытые системы 93
Оценка производительности:
SPECrate 128
универсальных компьютеров при интерпретации нейросетей 412
п
Пакет SPEC CPU 89 127
Память:
виртуальная 34
двухуровневая 30 идеальная 29 контекстно-адресуемая 402 синхронная динамическая
SDRAM 48
с произвольным числом уровней иерархии 30
Параллелизм 15
уровня команд 65
Переименование регистров 77
Переключение процессора на другой регистровый файл 96
Переносимость программного обеспечения 93
Пиковая производительность 119
Полупостоянное запоминающее устройство 284
Пользовательские тесты 124
Попадание процессора в кэш-память 31
Порт с разделением времени 291
Постоянное запоминающее устройство 284
Предикатный регистр 73
Предсказание переходов 66
Преобразование if 73
Прерывание 28
Природа ограничений
эффективности:
VLIW-процессоров 82
суперскалярных архитектур 82
Проблема "исключающее ИЛИ" 408
Программа:
на языке ОККАМ 381
обработки прерываний 28
Программируемые логические интегральные схемы 54
Программная реализация вычислений 16
Программный ввод/вывод 27
Промах процессора в кэш-память 31
Протекание вычислительного процесса 28
Протокол:
MESI 141
когерентности DASH 87
когерентности MES1 83
Прототипные векторы 415
Процессор 19
медийный 280
модельный DLX 21
мультимедийный видео 299
с длинным командным словом 64
структура DLX 22
суперскалярный 64
р
Разделяющие гиперплоскости 408
Разрешение или запрещения кэширование страниц памяти 146
Разрешение кэширования страницы 36 Разрыв между быстродействием логических элементов и элементов памяти 29
Расслоение памяти 37
Реализация:
обмена по линку между транспьютерами 390 памяти 29
Регенерация динамической памяти 46
Регистр 8
повышенной точности 296
Регистровый файл 9
Режим управления памятью транспьютера 391
Резервирующая станция 79
с
Сверхбольшие интегральные схемы 40
Симбиоз компиляторов и аппаратуры 98•
Синтетический тест 122
Слово 8
Смешение в кэш-строке 32
Составная теоретическая производительность 121
Сотовый телефон 343
Специализация вычислительных средств на исполнение нейроалгоритмов 412
Специфика архитектуры сигнальных процессоров 279
Способы оценки производительности 119
Способы реализации запоминания областей 404
Стандартизация архитектуры процессоров 93
Стандартные тесты оценки производительности 124
Статические микросхемы памяти 46
Стек 28
Страничная организация памяти 34
Схема суммирования двух двоичных чисел 12
Схемная реализация вычислений 15
Счетчик команд 19
т
Таблица: отображения, страниц 35 предсказания ветвлений 71
Таймер транспьютера 390
Тактовая частота 7
Тактовый сигнал 7
Тенденции, приводящие к появлению однокристальных мультипроцессорных систем 117
Теневые регистры 285
Тест:
Unpack 125
оценки производительности процессора и характеристики его работы с памятью 124
Тестовые пакеты SPEC CPU 127
Технология:
3DNow! 189, 193
MMX 148
управления энергопотреблением
LongRun 212
Тип команды 25
Транспьютер 379
начальная загрузка 391
обобщенная структура Т800 383
оперативная память 387 рабочая область памяти процесса 383
семейства 380
состояния процессов 387
центральный процессор 383
Треды 96
условно-исполняемые 99
Триггер 6
Увеличение производительности процессоров 29
Указатель стека 28
Уменьшение времени переключения контекста процессора 89
Умножение с накоплением 279 Умножитель частоты 340 Универсальный последовательный порт 291
ц
Цифровая обработка сигнала 273
Цифровое устройство Colossus 17
Цифровые сигнальные
микропроцессоры 278
Условное исполнение:
команд 73
тредов 97
Условные графические изображения вентилей 5
Цифровые сигнальные процессоры 45
э
Элемент:
ф
данных 5 памяти 5
Фильтр:
Энергосберегающий режим функционирования 286
с бесконечной импульсной характеристикой 274
с конечной импульсной характеристикой 274
Эталонная ЭВМ 122
абсолютная производительность 122 Эффект сокращения времени доступа в память 30
Функция:
активации нейрона 405
состояния нейрона 405
Эффективная производительность компьютера 122
X
Я
Хост-процессор 291
Язык высокого уровня — ОККАМ 381
Ячейка памяти 8