|
Традиционная архитектура вычислительных ядер развивалась по
принципу объединения часто используемых последовательностей элементарных машинных
команд в одну сложную микрооперацию. В результате сформировался набор команд,
состоящий как из простых машинных команд, так и из набора более сложных микроопераций,
объединяющей в одной машинной команде операции чтения/записи данных и
арифметические действия над данными. Из-за большого количества способов
адресации данных количество сложных микроопераций в несколько раз превысило
количество элементарных машинных команд. Подобная архитектура получило название
CISC (Complex
Instruction Set Computing - вычислитель с полным набором инструкций).
По мнению разработчиков CISC-архитектуры, аппаратная поддержка выполнения сложных машинных
команд должна была увеличить производительность программ, использующих сложные
микрооперации, по сравнению с программами, написанными с использованием элементарных
машинных команд.
Однако на практике все обстояло несколько иначе. Проведенные
в 1970-х годах сотрудниками IBM
исследования показали, что наиболее часто при написании программ программисты
использовали ограниченный набор микроопераций, количество которых составляло
всего 20% от полного набора машинных команд CISC-архитектуры, остальные же микрооперации практически игнорировались.
Причиной такого дисбаланса явились:
-
Ограниченная поддержка полного набора команд CISC-архитектуры
существующими на тот момент компиляторами.
-
Отсутствие унифицированного формата команд, что усложняло
использование полного набора машинных команд программистами.
Кроме того, составные микрооперации, призванные увеличить
быстродействие вычислений, начали проигрывать в быстродействии
последовательностям элементарных машинных команд. Это явилось результатом того,
что в процессе эволюции вычислительных ядер основная работа велась над
оптимизацией выполнения наиболее часто используемых элементарных машинных
команд. Кроме того, из-за ограниченного набора специализированных регистров в CISC-архитектуре, большинство
вычислений велось по схеме: чтение операндов из оперативной памяти в регистры, выполнение
арифметического действия над операндами, запись полученного результата из
регистра в оперативную память. Так как скорость чтения данных из оперативной
памяти в регистр и записи данных из регистра в оперативную память на порядок
ниже скорости пересылки данных между регистрами, по этой причине интенсивная
работа с оперативной памятью, свойственная CISC-архитектуре снижала производительность программ.
Еще одним недостатком CISC-архитектуры бала различная длинна машинных команд и разное
время их выполнения, это затрудняло расчет времени, необходимого на выполнения
программы, но кроме того не позволяло реализовать конвейерную обработку машинных
команд.
Для решения проблем, присущих CISC-архитектуре была разработана новая RISC-архитектура с
сокращенным набором машинных команд. RISC (Reduced Instruction Set Computer - вычислитель с сокращенным набором инструкций). В набор команд RISC-архитектуры вошли только
основные элементарные микрооперации, что позволило унифицировать формат команд
вычислительного ядра, упростить конструкцию и снизить стоимость изготовления
вычислительных ядер. Разработчиками было принято решение сравнять время
выполнения всех машинных команд, что упростило расчет времени выполнения
программ, а самое главное позволило реализовать конвейерную обработку
инструкций .
Уменьшение набора машинных команд в RISC-архитектуре позволило разместить на
кристалле вычислительного ядра большое количество регистров общего назначения .
Увеличение количества регистров общего назначения позволило минимизировать
обращения к медленной оперативной памяти, оставив для работы с RAM только операции чтения
данных из оперативной памяти в регистр и запись данных из регистра в
оперативную память, все остальные машинные команды используют в качестве операндов
регистры общего назначения.
Основными преимуществами RISC-архитектуры является наличие
следующих свойств:
-
Большое число регистров общего назначения.
-
Универсальный формат всех микроопераций.
-
Равное время выполнения всех машинных команд.
-
Практически все операции пересылки данных осуществляются по
маршруту регистр – регистр.
Равное время выполнения всех машинных команд позволяют
обрабатывать поток командных инструкций по конвейерному принципу, т.е.
выполняется синхронизация аппаратных частей с учетом последовательной передачи
управления от одного аппаратного блока к другому.
Аппаратные блоки в RISC-архитектуре:
-
Блок загрузки инструкций включает в себя следующие составные
части: блок выборки инструкций из памяти инструкций, регистр инструкций, куда
помещается инструкция после ее выборки и блок декодирования инструкций. Эта
ступень называется ступенью выборки инструкций.
-
Регистры общего назначения совместно с блоками управления
регистрами образуют вторую ступень конвейера, отвечающую за чтение операндов
инструкций. Операнды могут храниться в самой инструкции или в одном из
регистров общего назначения. Эта ступень называется ступенью выборки операндов.
-
Арифметико-логическое устройство и, если в данной
архитектуре реализован, аккумулятор , вместе с логикой управления, которая исходя
из содержимого регистра инструкций определяет тип выполняемой микрооперации.
Источником данных помимо регистра инструкций может быть счетчик команд, при
выполнении микроопераций условного или безусловного перехода. Данная ступень
называется исполнительной ступенью конвейера.
-
Набор состоящий из регистров общего назначения, логики
записи и иногда из RAM образуют ступень сохранения данных. На этой ступени
результат выполнения инструкций записываются в регистры общего назначения или в
основную память.
Однако к моменту разработки RISC-архитектуры, промышленным
стандартом микропроцессоров де-факто стала архитектура Intel x86, выполненная по принципу CISC-архитектуры. Наличие
большого числа программ, написанных под архитектуру Intel x86, сделала невозможным массовый
переход ЭВМ на RISC-архитектуру.
По этой причине основной сферой использования RISC-архитектуры явились
микроконтроллеры , благодаря тому, что они не были привязаны к существующему программному обеспечению.
Кроме того некоторые производители ЭВМ во главе с IBM так же начали выпускать ЭВМ,
построенные по RISC-архитектуре,
однако несовместимость программного обеспечения между Intel x86 и RISC-архитектурой в значительной степени
ограничивала распространение последних.
Однако, преимущества RISC-архитектуры были столь существенны, что инженеры нашли
способ перейти на вычислители, выполненные по RISC-архитектуре, при этом не
отказываясь от существующего программного обеспечения. Ядра большинство
современных микропроцессоров, поддерживающих архитектуру Intel x86, выполнены по RISC-архитектуре с поддержкой
мультискалярной конвейерной обработки. Микропроцессор получает на вход
инструкцию в формате Intel x86,
заменяем ее несколькими (до 4-х) RISC-инструкциями.
Таким образом, ядра большинства современных микропроцессоров,
начиная с Intel 486DX, выполнены по RISC-архитектуре с поддержкой
внешнего Intel x86
интерфейса. Кроме того, подавляющее большинство микроконтроллеров, а так же
некоторые микропроцессоры выпускаются по RISC-архитектуре.
|