Особенности архитектуры 32-разрядных МП


4.1. Микропроцессоры с RISC – архитектурой


В развитии архитектур МП наблюдается два подхода. Пер-вый из них относится к более ранним моделям процессоров и но-сит название МП с CISC (Complete Instruction Set Computer) архи-тектурой - процессоры с полным набором инструкций. К ним от-носится семейство процессоров 80 ? 86. Состав и назначение их регистров существенно неоднородны, широкий набор команд ус-ложняет декодирование инструкций, на что расходуются аппарат-ные ресурсы. Возрастает число тактов, необходимое для выполне-ния инструкций.
Процессоры 80 ? 86 имеют весьма сложную систему ко-манд, что еще довольно терпимо при использовании ее в 8 - и 16 – разрядных МП. В начале 80-х годов архитектура CISC стала серь-езным препятствием на пути реализации идеи «один процессор в одном кристалле», поскольку для работы с «традиционным» рас-ширенным списком команд требуется очень сложное устройство центрального управления (обычно - микропрограммное), зани-мающее до 60% всей площади кристалла.
В процессорах семейства 80 ? 86, начиная с i80486, приме-няется комбинированная архитектура - CISC-процессор имеет RISC-ядро. Архитектура RISC (Reduced Instruction Set Computer — компьютер с сокращенным набором инструкций) была впервые реализована в 1979 г. в миникомпьютере IBM801. В ней воплоти-лись три основных принципа:
- ориентация системы на поддержку языка высокого уровня с помощью развитого компилятора;
- использование примитивного набора инструкций, кото-рый полностью реализуется аппаратными средствами;
- организация памяти и ввода—вывода, которая позволяет выполнять процессором большинство инструкций за один такт.
Первые микропроцессоры с архитектурой RISC были разработаны и изготовлены в начале 80-х годов в Калифорнийском (г. Беркли) и Стандфордском университетах. Разработчики этих МП ставили перед собой задачу достижения наивысшей произво-дительности при наименьшей сложности. В ходе ее решения сло-жились два подхода.
Первый заключается в снижении числа обращений в память за счет увеличения емкости регистрового файла и организации его в виде перекрывающихся регистровых окон. Архитектура, создан-ная на этой основе, была впервые реализована в МП RISC I, разра-ботанном в г. Беркли (берклийская архитектура).
Другой подход заключается в устранении задержек конвей-ера за счет переупорядочения инструкций и интенсивного исполь-зования регистров МП при помощи оптимизирующего компилято-ра. Архитектура, реализующая этот способ, была разработана и впервые применена в г. Стэнфорде (станфордская архитектура).

4.1.1. Общие принципы построения


Рабочие станции и серверы, созданные на базе концепции RISC, завоевали лидирующие позиции благодаря своим исключи-тельным характеристикам. Дело дошло до предсказаний скорого отмирания более традиционных CISC-систем. Чисто академиче-ский интерес середины 80-х годов к архитектуре RISC в начале 90-х годов сменился бурным ростом производства промышленных RISC-систем. Практически все ведущие производители - IBM, Hewlett-Packard, DEC, Silicon Graphics - создали процессоры с RISC-архитектурой и выпустили на рынок новые семейства рабо-чих станций и серверов на их базе. Более того, RISC-системы вы-шли за границы узких профессиональных приложений и находят все большее признание среди средних пользователей.
В теории цифровых логических систем есть известная ак-сиома, которая гласит, что любой компьютер в принципе может быть построен с использованием всего одного типа элементов - вентиля "И - НЕ / ИЛИ - НЕ". Однако никому из разработчиков машин 60-х и 70-х годов не приходило в голову отказаться от ка-талога из десятков и сотен логических микросхем и спроектировать компьютер на одном типе вентиля.
Никому, кроме Сеймура Крея. Результат известен: супер-компьютер CRAY-1, созданный в рекордно короткие сроки, ока-зался меньше и быстрее всех своих предшественников. Нечто по-добное произошло и в процессе становления RISC-архитектуры. Идея, заложенная в основу RISC-архитектуры, состояла в сле-дующем: оставить в системе команд всего несколько десятков наиболее употребимых и наиболее универсальных инструкций, исключив сложные и редко используемые.
Результатом должно было стать существенное упрощение центрального управления, а значит, высвобождение части поверх-ности кристалла процессора для размещения более мощных средств обработки данных. Так возникла философия RISC-архитектуры – «меньше команд - выше скорость», которая осно-вывается на двух фундаментальных постулатах:
- скорость компьютерной обработки определяется не столь-ко быстродействием аппаратных средств, сколько хорошим взаи-модействием программного обеспечения и аппаратуры
- за скорость всегда надо платить усложнением либо аппа-ратуры, либо программных средств, либо того и другого.
Их реализация давно интересовала разработчиков МПС. Еще задолго до разделения компьютеров на RISC- и CISC-семейства было освоено два способа повышения скорости вычис-лений – «быстрые» технологии и параллелизм обработки. На пути ускорения обработки данных в принципе хорошо известны: схемы на арсениде галлия примерно в четыре раза производительнее схем на кремниевой основе, насыщенная логика по быстродейст-вию уступает, оптимизация откомпилированного кода теоретиче-ски позволяет в 2 - 4 раза сократить время выполнения программы и т. д.
Концепция RISC - архитектуры базируется на почти оче-видной логической формуле: если «быстрые» технологии и парал-лельная обработка для всего списка команд недостижимы из-за высокого уровня затрат, то надо ускорять только часто выполняе-мые операции, а редко применяемыми и сложными следует по-жертвовать ради повышения общей производительности. Заметная разница между RISC-компьютерами 80-х и 90-х годов и CISC- машинами 60-х годов заключается в числе аппаратных шагов, при-ходящихся на инструкцию. В RISC - процессоре одна инструкция выполняется за один шаг, тогда как в CISC та же инструкция мо-жет вызвать сотни и тысячи аппаратных действий.
Конечно, программирование с помощью подобных насы-щенных операций позволяет получить компактный исполняемый модуль, но возникает естественный вопрос: «Что лучше - короткая программа с медленными инструкциями или длинная программа с быстрыми инструкциями?". Ответ на него помогли дать пpикладные исследования в лабораториях фирмы IBM. Было скон-струировано подмножество языка PL/1 под названием PL/8 и на-писан компилятор с оптимизацией кода для гипотетического ком-пьютера, система команд которого использовала короткие инст-рукции типа «регистр-регистр». Имитация работы этого компью-тера проводилась на мэйнфрейме IBM/370 модели 168. Этот экс-перимент дал весьма впечатляющий результат: С большинством наиболее часто употребляемых программных операторов компью-тер справилась в 2 - 3 раза быстрее, чем IBM 370/168, запрограм-мированная при помощи стандартного варианта языка PL/1.
Для последующих семейств мэйнфреймов производства IBM данное соотношение несколько уменьшилось за счет конвей-еризации процессора и большего объема кэш-памяти, однако принципиальный вывод из эксперимента в IBM не потерял своей значимости: отказ от применения редких инструкций и оптимиза-ция использования регистров ускоряют вычислительный процесс более чем в два раза.
Итак, исключение из системы команд редко применяемых инструкций и ориентация аппаратных и программных средств на операции типа «регистр-регистр» открывают широкие возможно-сти для экономии оборудования без существенной потери произ-водительности. Но как только на кристалле процессора оказалось свободное место, сразу же нашлись желающие занять его под бо-лее мощные средства обработки. Так, в 1985 г. фирма Acorn Corporation of England выпустила 32-разрядный RISC-процессор ARM, примерно эквивалентный по степени интеграции 8-разрядному CISC-процессору Intel 8080 (около 25 тыс. транзисто-ров), но со значительно большим быстродействием.
Правда, произошло это уже после того, как были сформу-лированы основные законы RISC-архитектуры. Законы RISC в са-мом начале 80-х годов почти одновременно завершились теорети-ческие исследования в области RISC-архитектуры, проводившиеся в Калифорнийском университете (г. Беркли), Станфордском уни-верситете и в корпорации IBM. Именно тогда были сформулиро-ваны четыре основных принципа RISC-архитектуры:
1. Каждая команда независимо от ее типа выполняется за один машинный цикл, длительность которого обратно пропорцио-нальна тактовой частоте процессора и должна быть максимально короткой. Стандартом для RISC - процессоров считается длительность машинного цикла, равная времени сложе-ния двух целых чисел (для современного уровня развития техно-логии эта величина составляет от 3 до 10 нс).
2. Все команды должны иметь одинаковую длину и исполь-зовать минимум адресных форматов; это резко упрощает логику центрального управления процессором. Другим важным следстви-ем принципа простоты адресации является то, что RISC - процес-сор способен выбирать очередную команду в темпе обработки, т. е. одну команду за один цикл.
3. Обращение к памяти происходит только при выполнении операций записи и чтения, модификация операндов в памяти воз-можна лишь с помощью команды «запись», вся обработка данных осуществляется исключительно в регистровой структуре процес-сора.
4. Система команд должна обеспечивать поддержку языков высокого уровня. Имеется в виду подбор системы команд, наибо-лее эффективной для различных языков программирования.
Само собой разумеется, что четыре перечисленных базовых принципа RISC-архитектуры не существуют вне основного закона RISC: система команд должна содержать минимум наиболее часто используемых и наиболее простых инструкций.
Конечно, в компьютерной практике можно найти немало примеров широкого толкования принципов RISC, однако один за-кон RISC-архитектуры соблюдается всеми разработчиками не-укоснительно - обработка данных должна вестись только в рамках регистровой структуры и только в формате команд «регистр- регистр».
Регистры - основное достоинство и главная проблема RISC. Все существующие RISC-процессоры базируются на единствен-ном типе обработки данных в формате «регистр-регистр», а точ-нее, «регистр-регистр-регистр»: R1:=R2,R3. Это позволяет без су-щественных затрат времени выбрать операнды из адресуемых опе-ративных регистров и записать в регистр результат операции. Кроме того, трехместные операции дают компилятору большую гибкость по сравнению с типовыми двухместными опе-рациями формата «регистр-память» аpхитектуpы CISC. В сочета-нии с быстродействующей арифметикой RISC-операции типа «ре-гистр-регистр» становятся очень мощным средством повышения производительности процессора. Проблема заключается в том, что в процессе выполнения задачи RISC-система неоднократно выну-ждена обновлять содержимое регистров процессора, причем за минимальное время, чтобы не вызвать длительных простоев арифметического устройства (а это прямые потери производи-тельности). Для CISC-систем подобной проблемы не существует, поскольку модификация регистров может происходить на фоне обработки команд формата «память – память».
Существует два подхода к решению проблемы модифика-ции регистров в RISC - архитектуре: аппаратный, предложенный в проектах RISC-1и RISC-2 университета в Беркли, и программный, разработанный специалистами IBM и Станфордского университе-та. Принципиальная разница между ними заключается в том, что аппаратное решение основано на стремлении уменьшить время вызова процедур за счет установки дополнительного оборудова-ния процессора, тогда как программное базируется на возможно-стях компилятора и является более экономичным с точки зрения аппаратуры центрального процессора.
В RISC-архитектуре используется механизм переключения множественных перекрывающихся регистровых окон - MORS (Multiple Overlapping RegisterSets), иногда называемый структурой регистрового файла Rolodex. Механизм MORS послужил основой архитектуры RISC-1, в соответствии с которой процессор содер-жит 138 регистров для хранения данных. Из них десять, именуе-мых глобальными, всегда «видны» программе; их основное назначение - хранение данных, являющихся общими для всех процес-сов в текущем контексте программы. Остальные 128 регистров разбиты на восемь перекрывающихся окон по 22 регистра. В каж-дый момент времени программа, исполняемая на RISC-1, «наблю-дает» десять глобальных регистров и одно целое окно, т. е. всего 32 регистра.
Идея структуры MORS заключается в минимизации затрат процессорного времени при обращении к процедурам. Для этого каждое из восьми окон связано с конкретной процедурой, а реги-стры окна разделены на верхние, локальные и нижние. При вызове процедуры В из процедуры А активное окно регистрового файла смещается на шесть позиций так, что верхние регистры процедуры A перекрываются нижними регистрами процедуры B.
Перекрывающиеся зоны окон - это физически одни и те же регистры, доступные обеим процедурам. Они используются для передачи параметров, адресов возврата и позволяют обращаться к процедуре, не обмениваясь данными с оперативной памятью. Та-ким образом, вызов процедуры реализуется не сложнее, чем, ска-жем, суммирование регистровых операндов. К тому же эта опера-ция выполняется практически моментально: для обращения к про-цедуре или для возврата в точку вызова достаточно переместить указатель активного окна регистрового файла. В этом состоит важнейшая особенность архитектуры RISC-1.
Веpоятно, именно благодаря своей логической стройности архитектура RISC-1 послужила основой для разработки массовых процессоров Pyramid и SPARC, правда, с небольшими изменения-ми в организации регистрового файла Rolodex (в SPARC програм-ма «видит» окно из тех же 32 регистров, но количество глобаль-ных, верхних, локальных и нижних регистров одинаково - по во-семь в каждой зоне).
Однако структура MORS обладает двумя недостатками – оптимальное размещение процедур по окнам регистрового файла является далеко не тривиальной задачей для ОС, а выбранное чис-ло из восьми процедур, сохраняемых в регистровом файле, пред-ставляется, скорее, эмпирическим значением. Во всяком случае можно найти множество примеров, когда задача включает сущест-венно большее количество процедур и при этом возникает реальная проблема модификации одного или нескольких окон для ак-тивизации процедур, сохраняемых в оперативной памяти.
В компьютере RISC-1 ситуация, когда требуется выполнить вызов очередной вложенной процедуры, а все окна регистрового файла заняты, разрешается с помощью логики процессора, которая формирует специальную программную ситуацию. При этом про-цессор инициирует программу ОС, высвобождающую одно или несколько регистровых окон, т. е. передает (trap) содержимое ре-гистров в оперативную память. В случае применения RISC-1 в ка-честве машины общего назначения такое решение казалось весьма приемлемым, поскольку обычно ситуация trap возникает в одном из ста обращений к процедуре.
Но для работы в реальном времени один процент случаев оказывается недопустимо большой величиной. Действительно, ес-ли прерывание происходит в момент, когда все регистровые окна заняты, то инициируется выполнение процедуры trap и время ре-акции становится недетерминированным - ситуация, крайне опас-ная для систем реального времени. Если к тому же потребуется контекстное переключение от одной задачи к другой, то придется передать в память от одного до восьми окон в зависимости от те-кущего состояния прерываемой программы. А это, в свою очередь, означает, что время контекстного переключения будет изменяться в широких пределах: от 60 до 840 машинных циклов (прерывание, выполняемое внутри регистрового файла RISC-1, занимает не бо-лее трех циклов).
Именно такой разброс и является неприемлемым для сис-тем реального времени, в которых период реакции должен быть строго детерминированным. Попытки решения данной проблемы привели к совершенствованию процедуры trap в проекте RISC-2 университета в Берклии в проекте Omega. Существенное отличие названных проектов от RISC-1 состоит во включениив архитекту-ру компьютера динамического механизма быстрого сохранения регистровых окон в специальной памяти.

4.1.2. Берклийская архитектура


Согласно статистике, 50—70% используемых операндов составляют локальные переменные и параметры процедур. Их размещение в регистровом файле МП позволяет существенно сни-зить число обращение в память. В RISC МП с берклийской архи-тектурой регистры группируются в несколько банков, чтобы для каждой процедуры процессор мог назначить свой набор регистров, переключение которого осуществляется модификацией аппаратно-го указателя.
Рассмотрим организацию регистрового файла (табл. 1) на примере МП RISC II, разделенного на виртуальные регистровые окна емкостью 32 регистра каждое (рис.1).

Таблица 1

Параметры RISC I RISC II SOAR SPARC Am29000
Число вирт. рег. окон
6
8
8
7
8
Число локальных рег. в вирт. окне
14
22
16
24
16
Глубина перекрытия вирт. рег. окон
4
6
8
8
0
Число глоб. регистров
18
10
8
8
64
Общее число рег. в рег. файле
78
138
72
120
192

Регистры 26—31 (верхние) содержат параметры, передан-ные от вызывающей процедуры. Регистры 16—25 (локальные) ис-пользуются для хранения локальных скалярных переменных, 10—15 (нижние) — для хранения переменных и параметров, переда-ваемых вызываемой процедуре. Регистры 0—9 предназначены для хранения глобальных переменных.
Таким образом, возможно обращение каждой процедуры к 32 регистрам. Соседние регистровые банки, используемые вызы-вающей и вызываемой процедурами, перекрываются, так что па-раметры могут быть переданы процедуре без какого-либо переме-щения данных. На каждое обращение к процедуре назначается но-вый набор регистров R10...R31. При этом нижние регистры вызы-вающей процедуры становятся верхмими вызываемой, поскольку они совмещены физически.
Таким образом, без перемещения информации параметры, хранящиеся в регистрах 10—15 вызывающей процедуры, появ-ляются в регистрах 26—31 вызываемой. Рис. 1 иллюстрирует этот подход для случая, когда процедура А вызывает процедуру В, а та, в свою очередь, вызывает С.

w
Рис. 1


Во многих программах глубина вложенности процедур превышает число регистровых окон, поэтому в МП с берклийской архитектурой освобождение регистровых банков при переполне-нии регистрового файла осуществляется путем передачи их со-держимого в память. Если глубина вложенности выходит за пре-делы логических наборов регистров, содержащихся в регистровом файле, то начинается программная или аппаратная обработка пре-рывания. Содержимое нескольких регистров передается в память, в отдельной области которой организован стек переполнения реги-стров. Сигналы переполнения/недополнения перемещают указа-тель стека на его вершину.
Эффективность такой организации обращения к процеду-рам зависит от частоты появления переполнений/недополнений, в большей степени связанной с логическими изменениями глуби-ны стека, нежели с его абсолютной глубиной.
Исследования показали, что при восьми регистровых бан-ках переполнения/недополнения возникают менее чем в 1% обра-щений к процедурам. Для того, чтобы к переменным в регистрах можно было обращаться с помощью указателей, все регистры ото-бражаются в адресное пространство регулярной памяти.

4.1.3. Станфордская архитектура


Скорость обработки инструкций в МП с конвейерной ар-хитектурой существенно снижается из-за возникновения кон-фликтных ситуаций следующего типа:
- программа осуществляет переход, для которого требуют-ся очистка конвейера и загрузка его новыми инструкциями (зави-симость по адресу);
- инструкции запрашивают информацию, которая еще не получена от обрабатываемых в конвейере инструкций (зависи-мость по данным);
- инструкциям в конвейере одновременно требуются обра-щения к одному и тому же ресурсу — шине памяти, регистру или АЛУ.
Возможны различные случаи задержки конвейера, содер-жащего пять ступеней обработки инструкции (рис. 2): выборку ин-струкции (IF), дешифрацию инструкции (ID), выборку операнда (OF), вычисление (ОЕ) и запоминание результата (OS). В первом случае (см. рис. 6,а) выполняется инструкция безусловного пере-хода JMP, что задерживает конвейер до тех пор, пока не завершит-ся ее обработка, включающая четыре этапа:
- дешифрацию инструкции JMP,
- выборку операнда из программного счетчика PC,
- модификацию содержимого PC,
- запись результата обратно в программный счетчик; за-держка в этом случае длится четыре такта.
Во втором случае (рис. 2,б] инструкция INC А не может выбрать операнд А, пока предыдущая инструкция ADD B, C, A не завершит запись результата операции в регистр А; задержка длится два такта.

4
Рис. 2

Такие конфликтные ситуации - зависимость по адресу и по
данным, свойственны всем МП с конвейерной обработкой инст-рукций. Традиционно эти проблемы решаются аппаратно за счет опережающей выборки инструкций в точке перехода или за счет блокировки конвейера в случае возникновения конфликтной си-туации.
Станфордская архитектура предусматривает устранение за-держек конвейера при помощи оптимизирующего компилятора, переупорядочивающего инструкции так, чтобы они не зависели одна от другой при обработке их в конвейере. При этом вводится инструкция задержанного перехода (табл. 2), которая применяется также и в некоторых RISC МП с берклийской архитектурой. За-держанный переход выполняется так, что инструкция, следующая за инструкцией перехода, выполняется до передачи управления в точку перехода. В это время процессор имеет возможность вы-брать инструкцию по адресу перехода и загрузить ее в конвейер.
Традиционные МП реализуют этот фрагмент программы как обычный переход - инструкции выполняются в последователь-ности: 100, 101,102, 105 и т.д. Чтобы получить такой эффект в RISC МП, необходимо ввести в задержанный переход инструкцию NOP, не выполняющую операций. Тогда последовательность ста-нет такой: 100, 101, 102, 103, 106 и т.д.; обрабатывается она оптимизирующим компилятором, который по возможности переупо-рядочивает ее так чтобы максимально использовать цикл после за-держанного перехода. Последовательность исполнения инструк-ций принимает вид: 100, 101, 102, 105 и т.д. Поскольку инструк-ция, следующая за инструкцией перехода ,выполняется всегда и переход по адресу 101 не зависит от выполнения инструкции ADD по адресу 102, последовательность эта эквивалентна исходному фрагменту программы.


Таблица 2
1

Концепция задержанного перехода применяется в ряде слу-чаев для выполнения инструкций обращения в память за один такт. Непосредственный способ выполнения этих инструкций тре-бует двух тактов: один необходим для вычисления адреса, второй — собственно для обращения в память. Модифицированные инст-рукции обращения в память называются задержанными загрузками и предполагают некоторые изменения аппаратуры: память и реги-стры МП должны быть оснащены дополнительными портами. За-висимость по данным, которая может возникнуть при выполнении задержанной загрузки, устраняется при помощи оптимизирующего компилятора.
Для RISC МП со станфордской архитектурой характерно небольшое число регистров общего назначения, используемых для хранения локальных переменных и параметров процедур. Распределение регистров между переменными выполняется оптимизирующим компилятором.

4.1.4. Применение RISC - архитектуры в 32-разрядных МП


Каждой из рассмотренных разновидностей архитектуры присущи как достоинства, так и недостатки, поэтому обе они по-лучили примерно одинаковое развитие и распространение.
Первые МП с архитектурой RISC (RISC I и RISС II) были разработаны и изготовлены в начале 80-х годов в Калифорний-ском университете (г. Беркли). Они имели небольшой набор инст-рукций и простые режимы адресации. Все арифметические и ло-гические инструкции выполнялись над регистровыми операндами, и только две — LOAD и STORE — использовались для обращения в память. На площади кристалла, освободившейся от схемы де-шифрации сложных команд и формирователя последовательности микрокоманд, присущих традиционной архитектуре МП, разме-щен большой регистровый файл. Организация его в виде перекры-вающихся регистровых окон позволяла каждой процедуре назна-чать новый набор регистров и передавать данные от одной проце-дуры к другой простым изменением аппаратного указателя. Реги-стровые окна, впервые примененные в берклийских МП обеспечи-вают эффективную поддержку вложенных процедур, сокращают число обращений в память и значительно повышают производи-тельность МП.
В 1983 г. в Станфордском университете был разработан и из-готовлен МП MIPS (Microprocessor without Interlocked Pipeline Stages - микропроцессор без блокировок конвейера) . Целью про-екта MIPS было создание МП, свободного от задержек конвейера, связанных: с выполнением переходов, зависимостью инструкций по данным и одновременным обращением нескольких инструк-ций, обрабатываемых в конвейере, к одному ресурсу. Благодаря разработке и применению оптимизирующего компилятора в МП MIPS удалось преодолеть недостатки берклийсиой архитектуры, обусловленные, прежде всего, необходимостью использования большого регистрового файла, занимающего до 60% площади кристалла.
Архитектура МП SOAR (Smalltalk On A RISC) является развитием берклийской ветви RISC. Он предназначен для под-держки языка высокого уровня Smalltalk-80 и функционирования в составе рабочей станции Sun. SOAR поддерживает два типа дан-ных: 31-разрядные переменные со знаком и 28-разрядные указате-ли. Каждое слово данных содержит признак типа (тег), который проверяется одновременно с выполнением арифметических опе-раций. Если оба операнда оказываются целыми, то через один такт получается правильный результат. В противном случае SOAR об-ращается к программам обработки указателей. Другой особенно-стью его является использование инструкций групповой загруз-ки—хранения, позволяющих передавать содержимое восьми реги-стров за девять тактов вместо шестнадцати (один такт тратится на выборку инструкции и восемь — на обращения в память).
МП ARM (Acorn RISC Machine) разработан специально для персонального компьютера модели В фирмы Acorn Computers и воплощает основные принципы станфордской архитектуры. Он обладает небольшим набором аппаратно-реализованных инструк-ций, имеющих одинаковый 32-разрядный формат. Для обеспече-ния быстрой реакции на прерывания разработчики ARM исключи-ли из его набора команд длинные операции, которые невозможно прервать. Как и МП SOAR, ARM поддерживает инструкции груп-повой загрузки—хранения, позволяющие повысить скорость об-мена между МП и памятью. В отличие от других RISC МП, в ARM не используются задержанные переходы. Для устранения за-держек конвейера при выполнении переходов в каждую инструк-цию введено 4-разрядное поле кода условия; выполняется оно только в том случае, если установлен код соответствующего усло-вия.
МП ROMP (Research/Office division Microprocessor) - микро-процессор отделения по автоматизации научных и Учрежденче-ских работ) корпорации IBM. Он предназначен для работы в каче-стве центрального процессора в персональном компьютере RT PC (RISC Technology Personal Computer), реализует станфордскую ар-хитектуру и оснащен развитым оптимизирующим компилятором.
Особенностью ROМР является длинное 40 - разрядное ад-ресное слово и соответствующее ему адресное пространство 1T байт.
При разработке ROMP большое внимание уделялось по-вышению скорости обмена между процессором и памятью. Для этого используется аппаратно управляемый буфер преобразован-ных адресов, применявшийся в ранних моделях IBM. Он выполня-ет эффективное преобразование виртуальных адресов в физиче-ские. Кроме того, каждое слово данных в RОМР снабжается те-гом, по которому определяется получатель данных, поэтому лю-бой элемент данных может перебраться, как только он будет го-тов.
Центральный процессорный элемент (ЦПЭ) R2000 фирмы Mips Computer Systems составляет основу для построения супер-мини компьютеров этой фирмы. Он имеет станфордскую архитек-туру, работает в программной среде ОС Umips, совместимой с ОС Unix, языков высокого уровня Си, Фортран-77 и Паскаль. Для управления внешней кэш-памятью используется буфер преобразо-ванных адресов. R2000 работает в составе трехкристального набо-ра, в который входят также сопроцессор для операций с плаваю-щей точкой и буфер записи, предназначенный для согласования скоростей работы ЦПЭ и динамической памяти.
ЦПЭ MD 484 фирмы McDonnell Douglas изготавливается по GaAs-технологии и имеет расчетную производительность 100 млн. инструкций в 1 с. Благодаря станфордской архитектуре, MD 484 содержит небольшое число компонентов (23,2 тыс. транзисторов и 10,4 тыс. резисторов) и поддерживает набор инструкций МП MIPS. Он имеет развитую систему прерываний, включающую прерывания из-за неправильной адресации, внутреннего перепол-нения и системных обращений. Для передачи инструкций и дан-ных используются три двунаправленные 32-разрядные шины, ка-ждая линия которых заряжается с помощью большого n-канального транзистора. Высокая производительность ЦПЭ обес-печивается за счет сопроцессора для операций с плавающей точ-кой и устройства управления памятью, входящих в МП набор.
МП SPARC (Scalable Processor ARChitecture) фирмы Sun Microsystems воплощает основные принципы берклийской архи-тектуры: он содержит большой регистровый файл емкостью 120 32-разрядных регистров и использует задержанные переходы. МП реализован на вентильной матрице фирмы Fujitsu, выполненной по 1,5 мкм КМОП-технологии и содержащей 20 тыс. вентилей. МП SPARC предназначен для работы в програмной среде ОС Unix в составе рабочей станции Sun-4.
МП Аm29000 фирмы AMD отличается наивысшей произво-дительностью среди серийных RISC МП и реализует усовершен-ствованную версию берклийской архитектуры. В него входит ре-гистровый файл емкостью 192 регистра, разделенный на банки по 16 регистров; использует он задержанные переходы для устране-ния задержек конвейера, вызванных зависимостью по адресу, и выполняет команды обращения в память за один такт благодаря применению концепции задержанной загрузки. Кроме того, для ускорения обмена между МП и внешней памятью в Аm29000 вве-ден буфер преобразованных адресов.
Трехкристальный МП набор Clipper С100 корпорации Fairchild позволяет реализовать суперЭВМ на одной плате. Архи-тектура Clipper С100 имеет некоторые черты RISC, например ап-паратную реализацию большинства инструкций, однако ее нельзя отнести ни к одному из рассмотренных выше классов. Этот МП способен выполнять все арифметические операции с плавающей точкой по стандарту IEEE 754, он поддерживает десять типов дан-ных и девять режимов адресации, а его система прерываний вклю-чает 256 векторных прерываний и 128 системных обращений.
Набор инструкций Clipper С100 содержит 101 аппаратно-реализованную инструкцию и 67 макроинструкций, выполняющих преобразование чисел из формата с фиксированной точкой в фор-мат с плавающей точкой и обратно, обработку символьных строк, хранение - восстановление регистров, обработку прерываний и другие операции. Для поддержки макроинструкций используется микропрограммное ПЗУ емкостью 1К 48-разрядных слов. Вычис-лительный модуль Clipper С100 работает в программной среде ОС Unix и языков высокого уровня Си, Фортрая и Паскаль.
МП система МС88000 фирмы Motorola включает процессор МС88100 и два кристалла памяти МС88200.
МС88100 содержит регистровый файл небольшой емкости, блоки обработки чисел в формате с фиксированной и плавающей точкой, а также до шести заказных блоков специальных функций. МП имеет четыре порта ввода - вывода и поэтому может быть использован для построения мультипроцессорных систем.

4.1.5. Особенности интеграции элементов RISC-архитектуры в процессорах серии x86


Организация первых моделей процессоров - i8086/8088 -была направлена, в частности, на сокращение объёма программ, отличавшихся малой оперативной памятью. Расширение спектра операций, реализуемых системой команд, позволило уменьшить размер программ, трудоёмкость их написания и отладки, но повы-сило трудоёмкость их разработки.
Последнее проявилось в удлинении сроков разработки CISC-процессоров и проявлении различных ошибок в их работе. Кроме того, нерегулярность потока команд ограничила развитие топологии временным параллелизмом обработки инструкций на конвейере «выборка команды, дешифрация команды, выборка данных, вычисление - запись результата».
Эти недостатки обусловили необходимость разработки аль-тернативной архитектуры, нацеленной, прежде всего, на снижение нерегулярности потока команд уменьшением их общего количест-ва. Это было реализовано в RISC-процессорах.
Сокращение нерегулярности потока команд позволило обо-гатить топологию RISC-процессоров пространственным паралле-лизмом, специализированными аппаратными АЛУ, независимыми кэш данных и команд, раздельными шинами ввода-вывода. По-следние, в частности, увеличили длину конвейеров команд. Всё это повысило и производительность - увеличением числа опера-ций, выполняемых за один такт, и быстродействие - сокращением пути транзактов - RISC-процессоров. При этом срок разработки данных чипов свидетельствует о том, что её трудоёмкость меньше, чем в случае CISC-процессоров.
На мировых рынках CISC-процессоры представлены, в ос-новном, клонами процессоров Intel серии x86, производимыми AMD, Cyrix, а RISC -чипами Alpha, PowerPC, SPARC. Уступая во многом последним, процессоры x86 сохранили лидерство на рын-ке персональных систем лишь благодаря совместимостис программным обеспечением младших моделей. В свою очередь, достоинства RISC-процессоров укрепили их позиции на рынке высокопроизводительных машин.
Несмотря на формальное разделение «сфер влияния», меж-ду представителями этих архитектур в начале 90-х годов началась острая конкуренция за улучшение характеристик. В первую оче-редь, производительности и её отношения к трудоёмкости разра-ботки процессоров.
Первыми к этому пришли разработчики Intel, реализовав-шие в i80486 пространственный параллелизм вычислений с фик-сированной и плавающей запятой. Поддержка каждого АЛУ своей шиной данных/команд и регистровым блоком повысила произво-дительность i80486 одновременным выполнением указанных ко-манд. Кроме того, интеграция кэш-памяти и очереди команд по-зволила поднять частоту ядра процессора в 2-3 раза в сравнении с системной шиной. Однако совместное размещение данных и ко-манд ограничило эффективность кэш необходимостью его полной перезагрузки после выполнения команд переходов.
Для устранения недостатка в Pentium реализованы раздель-ные кэш для команд и данных, позволяющие после переходов пе-резагружать лишь команды- такое решение называется Гарвард-ской архитектурой, а также предсказание переходов, снижающее частоту перезагрузок. Последнее достигается предварительной за-грузкой в кэш команд с обоих разветвлений. Введение второго це-лочисленного тракта, состоящего из АЛУ, адресного блока, шин данных/команд, и работающего на общий блок регистров, повы-сило производительность поддержкой параллельной обработки целочисленных данных. Развитием данной тенденции стало обо-гащение Pentium MMX мультимедийным трактом, образованным АЛУ, шинами данных/команд и регистровым файлом.
При этом в случае выборки двух целочисленных команд, зависящих по данным, каждая из них выполняется последователь-но, что снижает эффективность работы процессора. Частично по-правило ситуацию создание оптимизирующих рекомпиляторов, например, Pen-Opt фирмы Intel, разделяющих по возможности та-кие команды.
Реализация описанного управления обработкой команд CISC-формата вызвала дополнительный рост трудоёмкости раз-работки Pentium в сравнении с i8086/i80486, что привело не только к увеличению её реального срока на 27% в сравнении с ожидае-мым, но и к проявлению ошибок в первых моделях данного про-цессора
Учтя это, компания Intel реализовала в Pentium Pro RISC-подобную организацию вычислений. Интерпретация команд 80?86 внутренними - RISC86 - инструкциями VLIW-формата по-мимо снижения нерегулярности их потока, обеспечила синхрон-ную загрузку четырёх операционных - по два с плавающей и фик-сированной запятой - АЛУ этого чипа. Термин VLIW расшифро-вывается как "очень длинное командное слово" (Very Long Instruction Word). Инструкции этого формата содержат команды для всех параллельных АЛУ.
Обогащение управления обработкой предвыборкой данных и команд, предполагаемых к обработке в ближайшие 20 тактов, повысило регулярность загрузки вычислительных трактов. В свою очередь, осуществление предвыборки из интегрированного на кристалле кэш второго уровня, обслуживаемого раздельными ши-нами «интерфейс-кэш» и «кэш-АЛУ» и работающего на частоте АЛУ, повысило быстродействие подготовки команд в сравнении с внешними кэш. Дополнительное повышение производительности Pentium Pro обеспечило увеличение длины команд до 11 ступеней введением ступеней трансляции и предвыборки. Кроме того, инте-грация кэш второго уровня позволила умножать частоту ядра в 5-6 раз.
В архитектуре Р6 RISC - решения впервые в семействе 80?86 перестали быть лишь дополнением исконных CISC - средств повышения производительности - роста разрядности, от-ложенной записи шины и других. Поэтому частица PRO в назва-нии первого процессора этой серии обозначает «полноценная RISC-архитектура» (Precision RISC Organization).
Топологические новинки Pentium II - интеграция тракта MMX, мультипроцессорный интерфейс Xeon, вынесение кэш вто-рого уровня на кристалл в корпусе чипа, как и полное устранение кэш второго уровня в Celeron, не имеют в данном случае качест-венной роли и направлены на оптимизацию отношения характеристик этих процессоров, к их цене.
Снижение трудоёмкости и длительности разработки аппа-ратно – программных реализаций алгоритмов работы Pentium Pro, позволило достигнуть роста характеристик сочетанием преиму-ществ RISC&CISC архитектур.
Сказанное иллюстрирует и организация современных RISC-процессоров. Их отличает, в данном случае, развитие систем команд с целью сохранения иерархической совместимости и сни-жения трудоёмкости разработки программ. Это сближает техноло-гии обработки команд процессорами упомянутых архитектур. На-пример, SuperSparc взяли от последних моделей 80?86 предсказа-ние переходов и предварительную интерпретацию кода.
Таким образом, развиваясь, каждая из рассмотренных архи-тектур, «отказавшись» от своих черт - CISC от скалярности вы-числений, RISC от «простоты» системы команд, приобрела луч-шие характеристики её представителей. Это подтверждает и про-цессор Merced, разработанный Intel и Hewlett Packard.
Имеющиеся сведения позволяют предположить, что его ар-хитектура продолжит тенденции Pentium Pro по оптимизации об-работки внутренних VLIW – подобных команд реализацией эф-фективных архитектурных решений при одновременной оптими-зации преобразования «внешних» инструкций. Особо отмечаются намерения создания двух вариантов этого чипа, различающихся лишь множеством этих инструкций. Первый совместим с CISC-семейством 80?86, второй - с RISC-процессорами Alpha.
Merced в известной степени прекратил соперничество CISC и RISC, в ходе которого представители данных архитектур улуч-шили свои характеристики. Это позволило предположить, что дальнейшее развитие массовых процессоров пройдёт по пути раз-вития топологических и микропрограммных решений вычисли-тельного ядра RISC - организации при одновременном повышении возможностей CISC - подобной системы команд.

4.2. МП с традиционной архитектурой
4.2.1. Intel Pentium 4


Одной из особенностей архитектуры процессора Pentium 4 является гарвардская внутренняя структура, реализуемая путем разделения потоков команд и данных, поступающих от системной шины через блок внешнего интерфейса и размещённую на кри-сталле процессора общую кэш-память 2-го уровня L2 (рис. 3).
Блок внешнего интерфейса реализует обмен пpоцессоpа с системной шиной, к которой подключается память, контроллеры ввода / вывода и другие активные устройства системы. Обмен по системной шине осуществляется с помощью 64-разрядной двуна-правленной шины данных, 41-разрядной шины адреса (33 адрес-ных линии и 8 линий выбора байтов), обеспечивающей адресацию до 64 Гб внешней памяти.
Архитектура МП является суперскалярной, что обеспечива-ет одновременное выполнение нескольких команд в параллельно работающих исполнительных устройствах. Суперскалярность ар-хитектуры реализуется путем организации исполнительного ядра процессора в виде ряда параллельно работающих блоков. Арифме-тико-логические блоки ALU производят обработку целочисленных операндов, которые поступают из заданных регистров блока реги-стров замещения (БРЗ). В эти же регистры заносится и результат операции. При этом проверяются также условия ветвления для ко-манд условных переходов и выдаются сигналы перезагрузки кон-вейера команд в случае неправильно предсказанного ветвления. Исполнительное ядро работает с повышенной скоростью выпол-нения операций.
Адреса операндов, выбираемых из памяти, вычисляются блоком формирования адреса (БФА), который реализует интер-фейс с кэш-памятью данных L1 ёмкостью 8 Кбайт. В соответствии с заданными в декодированных командах способами адресации формируются 48 адресов для загрузки операндов из памяти в ре-гистр БРЗ и 24 адреса для записи из регистра в память. При этом БФА формирует адреса операндов для команд, которые ещё не по-ступили на выполнение.
При обращении к памяти БФА одновременно выдаёт адреса двух операндов: один для загрузки операнда в заданный регистр БРЗ, второй - для пересылки результата из БРЗ в память. Таким образом реализуется процедура предварительного чтения дан-ных для последующей их обработки в исполнительных блоках, ко-торая называется спекулятивной выборкой.

s
Рис. 3


Аналогичным образом организуется параллельная работа блоков SSE, FPU, MMX, которые используют отдельный набор ре-гистров и блок формирования адресов операндов. Хотя конвейер Pentium 4 является намного более длин-ным, он выполняет те же функции что и конвейеры других про-цессоров.
Из-за сложности архитектуры на рис. 2 не изображена каж-дая из ступеней конвейера. Тем не менее, связанные ступени сгруппированы воедино, чтобы можно было представить всю схе-му процессора и схему потока команд.
Особое внимание стоит уделить тому, что кэш-память L1 разделена и кэш инструкций находится фактически на препроцес-соре. Он называется отслеживающим кэшем (Trace Cache) и явля-ется одной из важных инноваций в Pentium 4. Эта кэш-память ока-зывает сильное влияние и на конвейер, и на основной поток инст-рукций.
Если рассмотреть процессоры Pentium III или Athlon, то можно отметить, что инструкции поступают в их декодер из кэш-памяти инструкций, в декодере они разбиваются на меньшие час-ти, более единообразные, с которыми проще работать, - микроко-манды. Фактически, эти инструкции применяются при внеочеред-ном выполнении команд, исполнительный модуль выполняет их планирование, исполнение и сброс. Такое разбиение случается всякий раз, когда процессор выполняет инструкцию, поэтому на эту операцию в начале конвейера отводится несколько ступеней (на рис. 3 и 4 эти ступени объединены, на самом же деле выборка инструкций занимает несколько ступеней, транслирование - не-сколько ступеней, декодирование - несколько, и т.д.).
Если взять фрагмент кода, повторно выполняющийся всего несколько раз по ходу программы, то для него такая потеря не-скольких тактов мало что означает. Но для фрагмента кода, где инструкции исполняются тысячи и тысячи раз (например, в цикле в мультимедийном приложении, выполняющем несколько опера-ций над большим файлом), количество повторных трансляций и декодирований может отнимать ощутимые ресурсы. Для того, чтобы избежать таких циклов, процессор Pentium 4 не осуществля-ет повторного разбиения 80x86-инструкций на микрокоманды при их выполнении.

s
Рис. 3


Кэш инструкций в Pentium 4 принимает транслированные и декодированные микрокоманды, готовые к передаче на внеоче-редное выполнение, и формирует из них мини-программы, назо-вем их трейс-последовательностями (traces). Именно эти мини-программы (а не 80x86-код, созданный компилятором) и выполня-ет Pentium 4 в том случае, если происходит попадание в кэш-память L1 (процент попадания - 90%). До тех пор, пока требуемый код находится в кэш-памяти L1. Схема выполнения представлена на рис. 4.
По мере выполнения препроцессором накопленных трейс-последовательностей, отслеживающий кэш посылает до трех мик-рокоманд за такт напрямую на внеочередной модуль выполнения, ведь процессору уже не нужно проводить команды через логику трансляции или декодирования. И только в случае промаха кэш-
86
памяти L1 препроцессор нарушит этот порядок и начнёт выби-рать и декодировать инструкции из кэш-памяти L2.

s
Рис. 4


В этом случае к началу основного конвейера добавляется ещё восемь ступеней. Как видно, кэш с отслеживанием может из-бавить от довольно большого количества тактов при выполнении программы.
Отслеживающий кэш может работать в двух режимах. Ис-полнительный режим (execute mode) был только что рассмотрен. Здесь отслеживающий кэш снабжает логику выполнения инструк-циями. В этом режиме он обычно и работает. Когда наступает промах кэш-памяти L1, он переходит в так называемый режим по-строения отслеживаемых сегментов (trace segment build mode) В этом режиме препроцессор выбирает 80x86-инструкции из кэш-памяти L2, транслирует их в микрокоманды, создает отслеживаемый сегмент, который затем перемещается в отслеживающий кэш и далее выполняется.
Из рис. 4 видно, что когда работает отслеживающий кэш, устройство предсказания ветвлений не участвует в работе, равно как не работают и ступени выборки/декодирования инструкций. На самом деле отслеживаемый сегмент - это нечто большее, чем просто фрагмент транслированного и декодированного кода 80x86, выданного компилятором и полученного препроцессором из кэш-памяти L2. В действительности, при создании мини-программы отслеживающий кэш все же использует предсказание ветвлений. Он может добавить в мини-программу (где содержится предназначенный для выполнения код) код, который только пред-полагается к выполнению при предсказании ветвления. Поэтому если имеется фрагмент x86-кода с ветвлением, отслеживающий кэш построит трейс-последовательность из инструкций до ветвле-ния, включая саму инструкцию ветвления. Затем он продолжит спекулятивно строить мини-программу вдоль предсказанной ветви (рис. 5).
Такое спекулятивное выполнение даёт отслеживающему кэшу два больших преимущества по сравнению с обычным кэшем инструкций. Во-первых, в стандартном процессоре для работы устройства предсказания ветвлений требуется некоторое время. При обработке условной инструкции ветвления устройство ветв-ления (BPU) должно определить, какую из ветвей нужно спекуля-тивно выполнять, найти адрес кода после ветвления и т.д. Весь этот процесс добавляет, по крайней мере, еще один такт задержки для каждой условной инструкции ветвления. Такая задержка часто не может быть заполнена выполнением другого кода, что приво-дит к появлению нежелательного пузырька (пустая ячейка в кон-вейере - pipeline bubble). В случае же использования отслеживаю-щего кэша, код после ветвления уже готов к выполнению сразу же после инструкции ветвления, поэтому показанных задержек не возникает.
Второе преимущество также связано с возможностью хра-нения спекулятивных ветвей. Когда стандартный кэш инструкций L1 считывает строку кэш-памяти, он прекращает считывание при попадании на инструкцию ветвления, поэтому оставшаяся часть строки остается пустой. Если инструкция ветвления находится вначале строки кэш-памяти L1, то в считанной строчке будет на-ходиться только одна эта инструкция. При использовании отсле-живающего кэша считанные строчки могут содержать как инст-рукции ветвления, так и спекулятивный код после них. Таким об-разом, в 6-командных строчках не возникает потерянного места.

a
Рис.5.


Кстати, большинство компиляторов сталкиваются именно с описанными двумя проблемами: с задержками в инструкциях ветвления и с неполными строками из кэш-памяти. Как видно, от-слеживающий кэш по-своему позволяет решать эти проблемы. Ес-ли программы оптимизированы с учетом этих возможностей, то они будут быстрее выполняться.
Ещё один интересный эффект, производимый отслеживаю-щим кэшем на препроцессор Pentium 4 заключается в том, что пропускная способность ступеней транслирования и декодирова-ния 80x86-команд не зависит от пропускной способности ступени диспетчеризации. Если вспомнить процессор AMD K7, то он расходует множество транзисторов на усиленный блок декодирова-ния 80x86-макрокоманд, что позволяет за цикл декодировать дос-таточно много громоздких 80x86-инструкций в микрокоманды для загрузки исполнительного модуля. В случае же с Pentium 4 нали-чие отслеживающего кэша означает, что большая часть кода заби-рается из него уже в виде готовых микрокоманд, так что здесь от-падает надобность в трансляторах и декодерах с высокой пропуск-ной способностью.
Процессор начинает декодирование только лишь в случае промаха кэш-памяти L1. Поэтому он разработан таким образом, чтобы декодировать только одну 80x86-инструкцию за такт. Это составляет всего треть от максимальной теоретической пропуск-ной способности декодера Athlon, но отслеживающий кэш в Pentium 4 позволяет ему достичь или даже обойти производитель-ность Athlon (2,5 диспетчеризации за такт).
Стоит обратить внимание и на то, как отслеживающий кэш обращается с очень длинными 80x86-инструкциями из нескольких циклов. Большинство 80x86-инструкций декодируются примерно в две или три микрокоманды. Но встречаются и такие инструкции, которые декодируются в сотни микрокоманд, например, инструк-ции по строковой обработке. Как и в Athlon, в Pentium 4 существу-ет специальное ПЗУ микрокода, которое обрабатывает эти гро-моздкие инструкции, что позволяет разгрузить аппаратный деко-дер для работы только с небольшими, быстрыми инструкциями.
Каждый раз, когда встречается громоздкая инструкция, ПЗУ находит готовую последовательность микрокоманд и выдаёт их дальше в по очереди. Чтобы не засорять отслеживающий кэш этими длинными последовательностями микрокоманд, разработ-чики поступили следующим образом: как только при создании от-слеживаемого сегмента отслеживающий кэш встречает такую большую 80x86-инструкцию, вместо того, чтобы разбивать её на последовательность микрокоманд, он вставляет в отслеживаемый сегмент метку (tag), которая указывает на место в ПЗУ, содержа-щее последовательность микрокоманд данной инструкции. Позд-нее, в режиме выполнения, когда отслеживающий кэш будет пере-давать поток инструкций на ступень выполнения, при попадании на такую метку он временно приостановит работу и на время передаст управление потоком инструкций ПЗУ микрокода. Здесь уже ПЗУ будет выдавать в поток инструкций требуемую последо-вательность микрокоманд (как определено меткой). После этого, оно возвратит управление обратно, и отслеживающий кэш про-должит передавать инструкции. Исполнительному модулю безраз-лично, откуда поступает поток инструкций (из отслеживающего кэша или из ПЗУ). Для него все это выглядит как непрерывный по-ток команд.
Единственным недостатком отслеживающего кэша является его размер: он слишком мал. Точные размеры его неизвестны. Он может содержать до 12 тысяч микрокоманд. Intel уверяет, что это примерно эквивалентно обычному кэшу команд на 16-18 тысяч инструкций. Но так как отслеживающий кэш работает совсем ина-че, нежели стандартный кэш инструкций L1, то для того, чтобы оценить, как его размер влияет на производительность всей систе-мы, нельзя обойтись простым сравнением его размера с кэш-памятью другого процессора.
Общая архитектура процессора определяет комплекс средств, предоставляемых пользователю для решения различных задач. Эта архитектура задаёт базовую систему команд процессора и реализуемых способов адресации, набор программно-доступных регистров (регистровая модель), возможные режимы работы про-цессора и обращения к памяти и внешним устройствам (организа-ция памяти и реализация обмена по системной шине), средства об-работки прерываний и исключений.
В процессоре Pentium 4 реализуется архитектура IA-32 (Intel Architеcture-32), общая для всех 32-разрядных микропроцес-соров Intel, начиная с 80386. Модели Pentium II Xeon и Pentium III Xeon ориентированы на работу в высокопроизводительных муль-типроцессорных системах (серверах, рабочих станциях). Для этих же приложений в 2001 году выпущена модификация процессора Pentium 4 с поддержкой мультипроцессорного режима работы (на ядре Foster).
В процессе развития IA-32 производилось расширение воз-можностей обработки данных, представленных в различных фор-матах (рис. 6). Процессоры 80386 выполняли обработку только целочисленных операндов. Для обработки чисел с плавающей точ кой использовался внешний сопроцессор 80387, подключаемый к микропроцессору. В состав процессоров 80486 и последующих моделей Pentium введён специальный блок FPU (Floating-Point Unit), выполняющий операции над числами с "плавающей точкой". В процессорах Pentium MMX была впервые реализована групповая обработка нескольких целочисленных операндов разрядностью 1, 2, 4 или 8 байт с помощью одной команды. Такая обработка обес-печивается введением дополнительного блока MMX.

1
Рис. 6


Название блока отражает его направленность на обработку видео- и аудиоданных, когда одновременное выполнение одной операции над несколькими операндами позволяет существенно повысить скорость обработки изображений и звуковых сигналов. Начиная с модели Pentium III, в процессоры вводится блок SSE (Streaming SIMD Extension) для групповой обработки чисел с пла-вающей точкой.
Таким образом, если первые модели процессоров Pentium выполняли только пооперандную обработку данных по принципу "одна команда - одни данные" (SISD), то, начиная с процессора Pentium MMX, реализуется также их групповая обработка по принципу "одна команда - много данных" (SIMD).
Соответственно, расширяется и набор регистров процессо-ра, используемых для промежуточного хранения данных (рис. 7).
Кроме 32-разрядных регистров для хранения целочисленных опе-рандов, процессоры Pentium содержат 80-разрядные регистры, ко-торые обслуживают блоки FPU и MMX. При работе FPU регистры ST0-ST7 образуют кольцевой стек, в котором хранятся числа с плавающей точкой, представленные в формате с расширенной точностью (80 разрядов). При реализации MMX-операций они ис-пользуются как 64-разрядные регистры MM0-MM7, где могут хра-ниться несколько операндов (8 8-разрядных, 4 16-разрядных, 2 32-разрядных или один 64-разрядный), над которыми одновременно выполняется поступившая в процессор команда (арифметическая, логическая, сдвиг и т.д.).

1
Рис.7


Блок SSE2, введённый в состав процессора Pentium 4, зна-чительно расширяет возможности обработки нескольких операн-дов по принципу SIMD, по сравнению с блоком SSE в модели Pentium III. Этот блок реализует 144 новые команды, обеспечи-вающих одновременное выполнение операций над несколькими операндами, которые раcполагаются в памяти и в 128-разрядных регистрах XMM0-XMM7. В регистрах могут храниться и одновременно обрабатываться 2 числа с плавающей точкой в формате двойной точности (64 разряда) или 4 числа в формате одинарной точности (32 разряда). Этот блок может также одновременно об-рабатывать целочисленные операнды: 16 8-разрядных, 8 16-разрядных, 4 32-разрядных или 2 64-разрядных. В результате про-изводительность процессора Pentium 4 при выполнении таких опе-раций оказывается вдвое выше, чем Pentium III.
Операции SSE2 позволяют существенно повысить эффек-тивность процессора при реализации трехмерной графики и ин-тернет-приложений, обеспечении сжатия и кодирования аудио- и видео-данных. Что касается базового набора команд и используе-мых способов адресации операндов, то они практически полно-стью совпадают с набором команд и способов адресации в преды-дущих моделях Pentium. Процессор обеспечивает реальный и за-щищённый режимы работы, реализует сегментную и страничную организации памяти. Таким образом, пользователь имеет дело с хорошо знакомым набором регистров и способов адресации, мо-жет работать с базовой системой команд и известными ва-риантами реализации прерываний и исключений, которые харак-терны для всех моделей семейства Pentium.
Pentium 4 является первым IA-32 (32-bit Intel Architecture) процессором, использующим не P6 архитектуру. Сегодня эта ар-хитектура получает название с использованием терминологии - Intel NetBurst.
Первой особенностью NetBurst архитектуры является то, что Intel называет гиперконвейерной технологией, что является несколько причудливым термином для 20-ти шагового конвейера Pentium 4. Эти 20 шагов или стадий – вдвое длиннее P6 конвейера, которым оснащен Pentium III и в четыре раза длиннее, чем P5 кон-вейер. Как известно, более длинный конвейер имеет свои “за” и “против”.
20-ти шаговый конвейер Pentium 4, позволяет ему работать на более высокой тактовой частоте. По этой причине Pentium 4 бу-дет дебютировать на скорости 1.4 ГГц и выше. Но 20-ти шаговый конвейер Pentium 4 приводит к уменьшению значения IPC (инст-рукций за такт).
Имеется множество путей восполнения низкого IPC. Один из них, наиболее очевидный, заключается в простом увели-чении тактовой частоты, что Intel и сделала. Нет сомнения, что на любом современном эталонном тесте 1ГГц Pentium III по-сравнению с гипотетическим 1ГГц Pentium 4 показал бы значи-тельно больший результат, потому что выполняет больше инст-рукций за такт, чем Pentium 4.
В современных процессорах предусмотрены средства уве-личения эффективности конвейеров засчет предсказания хода программы. Когда процессор правильно предсказывает следую-щую команду, все идет согласно плану, но когда предсказание сделано неверно, цикл обработки должен начаться с начала. Из-за этого процессор с 10 шаговым конвейером имеет несколько мень-ший штраф за неправильный переход, чем процессор с 20 шаго-вым конвейером.
Для уменьшения недостатков более длинного конвейера, архитектура NetBurst имеет несколько особенностей.
Как уже указывалось ранее, АЛУ Pentium 4 работает на уд-военной тактовой частоте. Это означает, что АЛУ 1.4ГГц Pentium 4 работает на 2.8ГГц, а у 1.5ГГц Pentium 4 на 3.0ГГц. Считается, что это дает Pentium 4 явное преимущество в производительности в целочисленных операциях. Однако практика показала, что ос-новной причиной удвоенной частоты АЛУ является восполнение более низкий IPC NetBurst архитектуры.
Другая особенность связана со снижением влияния более длинного конвейера заключается в том, что Intel называет Execution Trace Cache. Декодер любого 80x86 процессора (модуль, который берет выбранные инструкции и декодирует их в форму, понятную вычислительным модулям) является одним из самых медленных модулей. Execution Trace Cache действует как посред-ник между стадией декодирования и первой стадией выполнения. Trace cache по существу кэширует декодированные micro-ops (ин-струкции после того, как они были выбраны и декодированы, т.е. полностью готовы к выполнению) так, чтобы вместо прохождения процесса выборки и декодирования при выполнении новой коман-ды Pentium 4 мог обратиться к trace cache, получить декодирован-ные micro-ops и начинать выполнение.
Это помогает уменьшать штраф, связанный с неправиль-но предсказанным переходом в длинном конвейере Pentium 4. Другой особенностью trace cache является, то, что он кэширует micro-ops в предсказанном пути выполнения, означая, что, если Pentium 4 выбрал 3 инструкции из trace cache, то они уже пред-ставлены в порядке выполнения. Это добавляет некоторый потен-циал для неправильного предсказания пути выполнения кэшируе-мых micro-ops, однако Intel уверена, что это будет компенсиро-ваться новыми алгоритмами предсказания, используемых в Pentium 4.
Intel отказалась от обычного метода определения размера кэш-памяти, по крайней мере для Execution Trace Cache. Вместо этого заявлено, что trace cache может кэшировать приблизительно 12K micro-ops. В дополнение к Execution Trace Cache, Pentium 4 имеет 8KB L1 Data Cache. Очевидно, что это меньше 16KB L1 Data Cache Pentium III. Такой размер кэш-памяти был сделан для дос-тижения лучшего отношения цены и производительности для Pentium 4.
Pentium 4 также имеет 256KB L2, работающий на основной тактовой частоте процессора. Этот кэш имеет большую ширину полосы частот, чем текущий 256KB L2 в Pentium III. Основной причиной является работа на большей тактовой частоте, а также передача данных на каждом такте.
В терминах полосы частот, доступной L2, гипотетический Pentium III работающий на тактовой частоте 1.5ГГц имел бы ско-рость передачи 24GB/s. Pentium 4 на той же тактовой частоте име-ет 48GB/s. L1 в Pentium 4 (включая Execution Trace Cache) дубли-руется в L2.

4.2.2. AMD Athlon


Микроархитектура Athlon представлена на рис.8. С целью увеличения пропускной способности декодеров, которые переко-дируют 80х86-команды во внутренние макрооперации, в блок кэш-памяти команд первого уровня добавлена специальная кэш-память предварительного декодирования. Эти макрооперации представ-ляют собой по сути RISC-команды, которые, собственно, и исполняются. Подобная схема перекодирования из 80х86 в RISC ис-пользуется и в Pentium III, и в предыдущих процессорах AMD, и в некоторых других 80х86-совместимых процессорах.

l
Рис.8


В Athlon таких декодеров три, а число выдаваемых на вы-полнение за такт команд больше, чем в Pentium III. Команды в де-кодеры попадают из кэш команд первого уровня. Он является двухканальным, а его емкость составляет 64 Кбайт, что в четыре раза выше, чем в Pentium III. Кроме того, блок кэш команд в AMD содержит два уровня буферов быстрой переадресации TLB: перво-го уровня — на 24 строки, а второго — на 256.
Емкость кэш данных первого уровня в Athlon также в четы-ре раза больше, чем в Pentium III, и составляет 64 Кбайт. Он явля-ется двухканальным и включает двухуровневый блок TLB. Кэш данных имеет восемь банков, что позволяет одновременно загру-жать в регистры или писать из них в кэш до двух 64-разрядных ве-личин. Команды из кэш команд поступают в декодеры, а оттуда — в блок управления командами, емкость которого 72 строки.
Athlon является суперскалярным микропроцессором с вне-очередным спекулятивным выполнением команд. Большая ем-кость очереди команд позволяет Athlon эффективно использовать свои ресурсы: число функциональных исполнительных устройств в нем больше, чем в Pentium III.
Совокупность вышеуказанных факторов уже объясняет, по-чему производительность Athlon выше, чем в Pentium III. В Athlon имеется три целочисленных устройства и три устройства с пла-вающей запятой. Кроме того, Athlon содержит три адресных уст-ройства. Все исполнительные устройства способны работать во внеочередном режиме. Для этого в арифметических устройствах имеются «планировщики», содержащие очереди команд емкостью 18 (для целочисленных устройств) и 36 (для вещественных уст-ройств) строк соответственно.
Следует отметить, что в составе МП имеются следующие устройства с плавающей запятой: cумматор, умножитель и модуль загрузки регистров/записи в память. Они могут работать парал-лельно, поэтому производительность микропроцессора (в MFLOPS) в два раза выше, чем его тактовая частота (1,3 GFLOPS при 650 МГц), и в два раза выше, чем у Pentium III при той же час-тоте. Кроме того, умножитель Athlon - это настоящий конвейер. Физических регистров с плавающей запятой в Athlon - 88, что по-зволяет использовать технологию переименования регистров.
Athlon не только суперскалярный, но еще так называемый и суперконвейерный микропроцессор. С одной стороны, большое число ступеней конвейеров (10 — в целочисленном и 15 — в ве-щественном конвейере) позволяет легче поднимать тактовую час-тоту. С другой стороны, это вызывает проблему заполнения кон-вейеров: если они не заполняются, производительность падает. Наиболее «опасными» будут при этом программы нерегулярного характера с большим числом условных переходов, которые трудно динамически предсказывать. Кстати, в Athlon блок динамического предсказания переходов включает таблицу предыстории на 2048 строк. Такой большой объем позволяет добиться очень высокого качества предсказания переходов.
В Athlon расширена система команд 3D–Now!. Их теперь 45, из них 24 - новых, в том числе: 12 команд целочисленной ма-тематики для обработки видео и распознавания речи; 7 команд пе-ресылки данных, ориентированных на программы, подобные Inter-net-приложениям, работающим с графическими данными; 5 новых команд для цифровой обработки сигналов
Кроме рассмотренных выше блоков микропроцессора, Ath-lon имеет встроенное управление внешней кэш-памятью второго уровня и сопряжение с системной шиной. Интеграция в микро-процессор функций управления внешней кэш-памятью позволяет Athlon иметь L2, расположенный на выделенной шине с програм-мируемой частотой. Поддерживается совместимость с индустри-альными стандартами SRAM, в том числе DDR и SDR. Кроме то-го, этот блок содержит память тегов для L2 наиболее популярного размера 512 Кбайт, при этом емкость L2 может составлять до 8 Мбайт.
Системный интерфейс Athlon обеспечивает соединения «точка-точка», то есть фактически мы имеем дело с коммутатором, а не с общей системной шиной, как у Pentium III. Важным пре-имуществом коммутаторов является то, что в отличие от систем-ной шины они не имеют конфликтов и обеспечивают гарантиро-ванный уровень пропускной способности. Это особенно важно для многопроцессорных SMP-систем.
Системный интерфейс шириной 8 байт может работать на частотах от 200 до 400 МГц, что обеспечивает гораздо более высо-кую пропускную способность, чем у шины Pentium III. Однако, по некоторым данным, на тестах пропускной способности оператив-ной памяти (STREAM) Athlon лишь незначительно опережает Pen-tium III. Важным преимуществом системного интерфейса Athlon является расщепленная обработка транзакций (до 24 на процессор против 4 в Pentium III). При этом пакетный протокол может пере-давать блоки в 64 байт против 32 байт у Pentium III.
Максимальная поддерживаемая емкость оперативной памя-ти составляет у Athlon 7 Тбайт против 64 Гбайт в Pentium III; впрочем, это отличие вряд ли имеет сегодня практическое значе-ние. Учитывая высокую пропускную способность системного ин-терфейса, он явно проектировался в расчете на использование с Athlon технологии RAMBUS. Увеличилась и надежность: теперь как шина внешней кэш-памяти, так и системный интерфейс ис-пользуют ECC-коды.
Athlon имеет площадь 128 кв. мм и производится по 0,18-микронной технологии с шестислойной металлизацией. Он ис-пользует разъем типа Slot A, механически совместимый со Slot 1 и близкий к применяемому в Alpha EV6.

 

Оглавление


Сайт управляется системой uCoz