Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Организация ЭВМ и систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Рисунок 6.2 – Виртуальное регистровое окно
В данной архитектуре, регистры разделены на разные группы и используются
для разных целей:
регистры 26-31 (верхние) содержат параметры, переданные от вызывающей
процедуры;
регистры 16-25 (локальные) используются для хранения локальных скаляр-
ных переменных;
регистры 10-15 (нижние) предназначены для хранения переменных и пара-
метров, которые передаются вызываемой процедуре;
регистры 0-9 используются для хранения глобальных переменных.
Таким образом, каждая процедура может обращаться к 32 регистрам. Сосед-
ние регистры, используемые вызывающей и вызываемой процедурами, перекрыва-
ются, что позволяет передавать параметры от одной процедуры к другой без пере-
мещения данных. При вызове каждой процедуры назначается новый набор реги-
стров R10...R31. Нижние регистры вызывающей процедуры становятся верхними
регистрами вызываемой процедуры, так как они физически перекрываются. Таким
образом, параметры, хранящиеся в регистрах 10—15 вызывающей процедуры, авто-
матически появляются в регистрах 26—31 вызываемой процедуры. Этот механизм
иллюстрируется на рисунке 6.3, который показывает случай, когда процедура А вы-
зывает процедуру В, а затем последняя вызывает процедуру С.
91
Рисунок 6.3 – Организация регистрового файла в виде перекрывающихся ре­гистровых окон
В программировании часто бывает, что глубина вложенности процедур пре-
вышает количество регистровых окон, доступных в регистровом файле микропро-
цессора с берклийской архитектурой. В таких случаях, чтобы освободить место, ре-
гистры могут быть переданы в память. Если глубина вложенности становится боль-
ше, чем количество логических наборов регистров, которые содержатся в регистро-
вом файле, начинается программное или аппаратное управление прерыванием. Со-
держимое нескольких регистров переносится в память, где организован стек пере-
полнения регистров. Сигналы о переполнении или недополнении регистров пере-
мещают указатель стека к его вершине.
Эффективность такой организации обращения к процедурам зависит от часто-
ты возникновения переполнений и недополнений, которая, в большей степени, свя-
зана с изменениями в глубине стека, а не его абсолютной глубиной. Исследования
показали, что при использовании восеми регистровых банков переполнения и недо-
полнения возникают менее чем в 1% случаев при вызовах процедур. Для обеспече-
ния доступа к данным в регистрах через указатели, все регистры отображаются в
адресное пространство обычной памяти.
92
6.4 Станфордская архитектура
Скорость обработки инструкций в МП с конвейерной архитектурой суще-
ственно снижается из-за возникновения конфликтных ситуаций следующего типа:
– программа осуществляет переход, для которого требуются очистка конвейе­ра и загрузка его новыми инструкциями (зависимость по адресу);
– инструкции запрашивают информацию, которая еще не получена от обраба­тываемых в конвейере инструкций (зависимость по данным);
– инструкциям в конвейере одновременно требуются обращения к одному и тому же ресурсу – шине памяти, регистру или АЛУ.
Возможны различные случаи задержки конвейера, содержащего пять ступеней
обработки инструкции (рисунок 6.4): выборку инструкции (IF), дешифрацию ин-
струкции (ID), выборку операнда (OF), вычисление (ОЕ) и запоминание результата
(OS). В первом случае (рисунок 6.4(а)) выполняется инструкция безусловного пере-
хода JMP, что задерживает конвейер до тех пор, пока не завершится ее обработка,
включающая четыре этапа [12]:
– дешифрацию инструкции JMP;
– выборку операнда из программного счетчика PC;
– модификацию содержимого PC;
– запись результата обратно в программный счетчик.
Задержка в этом случае длится четыре такта.
Инструкция INC A не завершит запись результата операции в регистр А; за­держка длится два такта.
Рисунок 6.4 – Случаи задержки конвейера
93
Зависимости по адресу и данным являются распространенными конфликтны-
Адрес
Обычный
переход
Задержанный
переход
Оптимизированный
задержанный переход
100
LOAD X,A
LOAD X,A
LOAD X,A
101
ADD 1,A
ADD 1,A
JMP 105
102
JMP 105
JMP 106
ADD 1,A
103
ADD A,B
NOP
ADD A,B
104
SUB C,B
ADD A,B
SUB C,B
105
STORE A,Z
SUB C,B
STORE A,Z
106
STORE A,Z
ми ситуациями в микропроцессорах с конвейерной архитектурой. Обычно эти про-
блемы решаются с использованием аппаратных мер, таких как опережающая выбор-
ка инструкций в точке перехода или блокировка конвейера при возникновении кон-
фликтов.
Однако станфордская архитектура предлагает альтернативный подход к реше-
нию задержек конвейера. Она предусматривает устранение этих задержек с помо-
щью оптимизирующего компилятора, который переупорядочивает инструкции так,
чтобы они не зависели друг от друга при обработке в конвейере. В этом контексте
вводится инструкция «задержанного перехода» (см. таблицу 6.2), которая применя-
ется также в некоторых микропроцессорах с архитектурой RISC, основанной на
берклийской архитектуре.
Инструкция «задержанного перехода» выполняется таким образом, что ин-
струкция, идущая после нее, выполняется до передачи управления в точку перехода.
Это дает процессору возможность выбрать инструкцию по адресу перехода и загру-
зить ее в конвейер.
Таблица 6.2 – Инструкция задержанного перехода
В традиционных микропроцессорах (МП), фрагмент программы выполняется
последовательно: сначала инструкция 100, затем 101, 102, 105 и так далее. В случае
RISC-процессоров, чтобы достичь такой же последовательности выполнения, мы
94
вставляем инструкцию NOP (которая не выполняет никаких операций) в задержан-
ный переход. Это изменяет последовательность выполнения на 100, 101, 102, 103,
106 и так далее. Оптимизирующий компилятор затем переупорядочивает эту после-
довательность так, чтобы максимально использовать время после задержанного пе­рехода. Результат – выполнение инструкций в следующей последовательности: 100,
101, 102, 105 и так далее. Поскольку следующая инструкция после задержанного
перехода всегда выполняется, а переход по адресу 101 не зависит от инструкции
ADD по адресу 102, конечная последовательность эквивалентна исходному фраг-
менту программы.
Эта концепция задержанных переходов также применяется для оптимизации
выполнения инструкций, которые обращаются к памяти. Обычно, для выполнения
таких инструкций требуется два такта: один для вычисления адреса и второй для
фактического доступа к памяти. Оптимизированные инструкции, позволяющие об-
ращаться к памяти за один такт, называются задержанными загрузками и требуют
некоторых изменений в аппаратуре, такие как дополнительные порты в памяти и
регистрах МП. Зависимости по данным, которые могут возникнуть при выполнении
задержанных загрузок, устраняются оптимизирующим компилятором.
RISC-процессоры с архитектурой станфордского типа обычно имеют ограни-
ченное количество регистров общего назначения, используемых для хранения ло-
кальных переменных и параметров процедур. Оптимизирующий компилятор зани-
мается распределением этих регистров между переменными для более эффективно-
го использования ресурсов регистровых файлов.
6.5 Особенности интеграции элементов RISC-архитектуры в процессорах
серии x86
Оригинальные процессоры, такие как i8086/8088, были разработаны с целью
уменьшения размера программ, чтобы соответствовать ограниченному объему опе-
ративной памяти. Они расширили набор доступных операций, что позволило про-
граммам быть более компактными, упростило процесс их написания и отладки. Од-
95
нако, расширение набора команд также увеличило сложность разработки процессо-
ров, что привело к увеличению времени, необходимого для создания CISC- процессоров, а также к появлению ошибок в их работе.
Кроме того, набор инструкций CISC-процессоров стал неоднородным и слож-
ным, что затруднило использование временного параллелизма при обработке ин-
струкций в конвейере, который включает этапы, такие как выборка команды, де-
шифрация команды, выборка данных, вычисление и запись результата.
В ответ на эти недостатки была разработана альтернативная архитектура RISC
(Reduced Instruction Set Computer) с основной целью снизить нерегулярность потока
команд и уменьшить их общее количество. Эта архитектура оптимизировала набор
команд и делала их более простыми и однородными. В результате классические
CISC-процессоры стали называться CISC (Complex Instruction Set Computer) – ком­пьютерами со сложным набором инструкций.
Сокращение нерегулярности потока команд в RISC-процессорах привело к
важным улучшениям в архитектуре, таким как пространственный параллелизм, спе-
циализированные аппаратные блоки для логических и арифметических операций
(ALU), независимые кэши для данных и команд, а также раздельные шины для вво­да-вывода. Эти изменения позволили увеличить производительность, выполняя
больше операций за один такт, и увеличили быстродействие, сокращая задержки во
внутренних транзакциях процессора. Важно отметить, что разработка RISC­процессоров часто оказывается менее трудоемкой по времени по сравнению с CISC­процессорами.
На мировых рынках, CISC-процессоры, в основном, представлены клонами
процессоров Intel x86, такими как AMD и Cyrix, в то время как RISC-процессоры
включают в себя чипы Alpha, PowerPC и SPARC. В сравнении с последними, про-
цессоры x86 сохраняют своё лидерство в рынке персональных компьютеров в зна-
чительной степени благодаря совместимости с программным обеспечением, создан-
ным для этой архитектуры. С другой стороны, RISC-процессоры успешно утверди­лись в рынке высокопроизводительных машин благодаря своим преимуществам.
96
Несмотря на формальное разделение «сфер влияния», в начале 90-х годов
началась острая конкуренция между представителями обеих архитектур в плане
улучшения характеристик процессоров, в частности, производительности и её от-
ношения к трудоемкости разработки. Создатели как CISC, так и RISC-процессоров
часто заимствовали успешные решения друг у друга, следуя принципу «бить врага
его собственным оружием».
Intel впервые внедрила пространственный параллелизм в i486, путем исполь-
зования отдельных АЛУ для вычислений с фиксированной и плавающей запятой.
Каждый АЛУ был оборудован собственной шиной данных/команд и регистровым
блоком, что позволило i486 выполнять команды одновременно и таким образом уве-
личить производительность. Интеграция кэш-памяти и очереди команд также спо­собствовала повышению частоты ядра процессора, увеличив её в 2-3 раза по сравне­нию с системной шиной.
Однако, проблемой стало совместное размещение данных и команд в кэше,
что требовало полной перезагрузки кэша после выполнения команд переходов. Для
решения этой проблемы Intel в Pentium ввела раздельные кэши для команд и дан-
ных, известные как Гарвардская архитектура. Кроме того, было внедрено предска-
зание переходов, которое снизило частоту перезагрузок кэша. Это достигалось
предварительной загрузкой команд в кэш из обоих разветвлений, что позволило бо-
лее эффективно использовать кэш-память.
Создание второго целочисленного тракта, включая АЛУ, адресный блок и ши-
ны данных/команд, работающего с общим регистровым файлом, привело к увеличе-
нию производительности за счет поддержки параллельной обработки целочислен-
ных данных. Позднее, это развивалось в Pentium MMX с мультимедийным трактом,
состоящим из АЛУ, шин данных/команд и регистрового файла, что значительно
улучшило возможности процессора в области мультимедийных вычислений.При
этом в случае выборки двух целочисленных команд, зависящих по данным, каждая
из них выполняется последовательно, что снижает эффективность работы процессо-
ра. Частично поправило ситуацию создание оптимизирующих рекомпиляторов,
например, Pen_Opt фирмы Intel, разделяющих по возможности такие команды.
97
Для управления обработкой команд CISC-формата, разработка Pentium вызва-
ла увеличение сложности в сравнении с предыдущими процессорами, такими как
i8086/i486. Это привело к увеличению реального срока разработки на 27% по срав-
нению с ожидаемым, а также к появлению ошибок в первых моделях процессора.
В ответ на эти проблемы, компания Intel внедрила в Pentium Pro организацию
вычислений, аналогичную RISC. Она интерпретировала команды x86 во внутренние
RISC-подобные инструкции VLIW-формата. Это уменьшило нерегулярность потока
команд и обеспечило синхронную загрузку четырех операционных блоков, включая
по два блока для операций с плавающей и фиксированной запятой.
Создание такой архитектуры позволило обогатить управление обработкой пу-
тем предвыборки данных и команд, которые предполагалось обработать в ближай-
шие 20 тактов, что увеличило регулярность загрузки вычислительных блоков. Кро-
ме того, интеграция вторичного кэша на кристалле, обслуживаемого отдельными
шинами для «интерфейс-кэш» и «кэш-АЛУ», работающими на частоте АЛУ, увели­чило быстродействие в сравнении с внешними кэшами. Увеличение длины команд
до 11 ступеней введением ступеней трансляции и предвыборки также способствова-
ло увеличению производительности Pentium Pro. Все эти меры в совокупности поз-
волили увеличить частоту ядра процессора в 5-6 раз.
Архитектура Р6 внесла значительные изменения в семейство x86-процессоров, превратив их из чистых CISC-решений в полноценные RISC-архитектуры (сокраще-
ние от Precision RISC Organization). Новые решения в этой архитектуре не были
просто дополнительными функциями для повышения производительности, как это
было ранее, такие как увеличение разрядности или отложенная запись в шине дан-
ных.
Pentium II внес топологические инновации, такие как интеграция MMX-
тракта, мультипроцессорный интерфейс Xeon, размещение кэша второго уровня на
кристалле процессора в его корпусе, а также полное устранение кэша второго уров-
ня в моделях Celeron. Однако в данном контексте эти изменения не имели фунда-
ментального значения и были направлены на оптимизацию характеристик процес-
соров в соответствии с их ценой.
98
Снижение трудоемкости и времени разработки аппаратно-программных реа-
лизаций алгоритмов в Pentium Pro позволило достичь значительного роста произво-
дительности, объединив в себе преимущества как RISC, так и CISC архитектур.
Сказанное иллюстрирует, как современные RISC-процессоры развивают свои
системы команд, сохраняя при этом иерархическую совместимость и снижая трудо-
емкость разработки программ. Это приводит к сближению технологий обработки
команд между процессорами разных архитектур.
Например, архитектура SuperSparc заимствовала от последних моделей x86
возможности предсказания переходов и предварительной интерпретации кода.
Таким образом, каждая из рассмотренных архитектур, развиваясь, "позаим-
ствовала" лучшие черты конкурента, отказавшись от своих особенностей, такие как
CISC от скалярности вычислений и RISC от "простоты" системы команд. Это улуч­шило характеристики их представителей.
Это подтверждается также процессором Merced, разрабатываемым совмест-
ными усилиями Intel и Hewlett Packard. Информация, которая доступна на данный
момент, позволяет предположить, что его архитектура будет продолжением тенден-
ций, установленных Pentium Pro, с оптимизацией внутренних VLIW-подобных ко­манд и одновременной оптимизацией «внешних» инструкций. Особенно интерес-
ным является намерение создать две версии этого процессора, различающиеся коли-
чеством поддерживаемых инструкций: одна совместима с семейством CISC x86, а
другая с RISC-процессорами Alpha.
Merced, будучи «един в двух лицах», означает завершение конкуренции между
CISC и RISC, где представители обеих архитектур улучшили свои характеристики,
интегрируя лучшие аппаратно-программные решения конкурентов. Это позволяет
предположить, что будущее развитие массовых процессоров будет связано с разви-
тием топологических и микропрограммных решений ядра RISC-архитектуры, одно­временно расширяя возможности "внешней" системы команд CISC.
Реализация концепции RISC в процессе проектирования микропроцессоров
включает в себя следующие этапы:
99
1) анализ эффективности инструкций при выполнении типичных программ и
оптимизацию инструкционного набора на основе результатов этого анализа;
2) оптимизацию структуры конвейера инструкций с целью выполнения боль-
шинства инструкций за один такт и уменьшение частоты возникновения конфликтов
в конвейере;
3) создание оптимизирующего компилятора, способного эффективно управ-
лять локальными переменными и параметрами, а также устранять задержки в кон-
вейере, вызванные зависимостями по адресу или данным, путем переупорядочива-
ния инструкций.
Сокращение времени схемотехнического проектирования и возможность эму-
ляции сложных наборов команд других компьютеров, обеспечивая совместимость
программного обеспечения, придают RISC-микропроцессорам серьезные преиму­щества на быстрорастущем рынке микропроцессорных систем.
Несмотря на недостатки, такие как увеличение размера программы и увеличе-
ние времени компиляции, основные преимущества RISC-компьютеров в виде низ-
кой стоимости и быстрого роста производительности позволяют им успешно разви-
ваться, причем их темпы роста производительности вдвое выше, чем у традицион-
ных компьютеров.
6.6 Вопросы для закрепления материала по шестому разделу
1. Общие принципы и перспективы развития CISC архитектуры.
2. Общие принципы и перспективы развития RISC-архитектуры.
3. Дайте характеристику Берклийской архитектуре.
4. Что собой представляет Станфордская архитектура?
5. Что собой представляет инструкция «задержанного перехода»?
6.Особенности интеграции элементов RISC-архитектуры в процессорах серии
x86.
7. Назовите этапы при реализации концепции RISC в процессе проектирова- ния микропроцессора.
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]