Микропроцессор будущего.RISC,CISK или MISC ?

В настоящее время не существует процессора, способного удовлетворить требованиям всех производителей и пользователей ЭВМ и вряд ли задача создания такового разрешима. Этим, по-видимому, и объясняется тот факт, что на определенных стадиях развития технологии возникают многочисленные дискуссии на тему, каким быть компьютеру, а вместе с ним и процессору будущего - RISC (Reduced Instruction Set Computer) или CISC (Complex Instruction Set Computer). Чтобы разобраться в этом, рассмотрим концепции RISC и CISC более подробно.
Команды RISC-процессоров очень просты и почти всегда исполняются за один такт. Для реализации операции, отрабатываемой CISC-процессором как одна команда, RISC должен выполнить целую программу. Важная особенность CISC-процессоров - наличие блока микропрограммного управления, отрабатывающего последовательность микрокоманд, записанную в ПЗУ внутри процессора, соответствующую исполняемой команде.
Каждой микрокоманде соответствует какая-либо элементарная операция, выполняемая за один такт. Команды же RISC-процессоров сами, по сути дела, являются микрокомандами. Проще говоря, CISC- процессор - это RISC со встроенной библиотекой более сложных функций, записанной в ПЗУ микропрограммного управления в виде набора микропрограмм.
Достоинства и недостатки каждого из этих подходов весьма прозрачны. С одной стороны, при использовании CISC-процессора объем памяти, необходимый для решения одной и той же задачи, существенно меньше. Язык ассемблера CISC-процессора намного легче для человека, следовательно, затраты времени на написание и отладку программ меньше. В процессе исполнения команд он значительно меньше загружает системную шину, чем RISC, что позволяет иногда, даже в мультипроцессорных системах, обходиться без кеш-памяти.
С другой стороны, далеко не во всех программах полностью используется вся мощная система команд CISC-процессора, а это - неоправданный простой его дорогостоящей аппаратуры. Даже самые простые команды не могут выполняться за один такт (как правило, требуются два-три такта), так как они реализуются внутри процессора микропрограммно. В CISC-процессорах программист не может управлять процессом исполнения сложной команды. Следовательно, этот процесс не может быть оптимизирован для получения максимально возможного быстродействия в каждом конкретном месте данной задачи. При программировании CISC-процессоров в критичных к быстродействию местах программ иногда целесообразно написать несколько простых команд вместо одной сложной. В таких ситуациях лучше иметь несколько дополнительных регистров общего назначения, как в RISC-процессорах. Система команд CISC-процессоров, как правило, не отличается стройностью. Сложные команды имеют ограниченный набор режимов адресации и регистров, с которыми они работают. Все это затрудняет автоматическую генерацию и оптимизацию программ, что может быть особенно актуально для задач, формируемых с помощью языков логического программирования.
Опыт производства средств вычислительной техники показал, что на каждой новой ступени развития технологии как аппаратных средств, так и программирования оптимальным оказывается процессор, близкий то к RISC, то к CISC. Это часто порождает контрасты в оценках той или иной архитектуры. Однако авторы современных технических проектов пытаются найти такое сбалансированное решение, в котором максимально сочетались бы преимущества этих двух концепций.
Например, команда инкрементирования регистра общего назначения занимает в микропроцессоре i80386 два такта.
Один из примеров реализации такого подхода - микропроцессор Fairchild Clipper [2]. Это RISC-процессор, предоставляющий в то же время пользователю возможность создания макрокоманд, помещаемых в ПЗУ процессора. Макрокоманда, таким образом, работает, как микропрограмма в CISC-процессоре, в то время как остальные команды выполняются аппаратурой процессора, как RISC, за один такт. Это пример хорошего подхода, но он не обладает достаточной гибкостью. Архитектура процессора должна учитывать совершенствование технологии и по возможности обеспечивать совместимость с системами команд предыдущих процессоров.
Существует много подходов к решению проблем совместимости. Один из них - создание современных микропроцессорных комплектов для эмуляции систем команд mainframe компьютеров, например NCR/32 [3]. Но такой подход не позволяет сочетать эффективное совершенствование аппаратуры процессора и системы команд.
Оглянемся назад. Чем объясняется фантастический успех фирмы IBM после выпуска персонального компьютера PC? Любой специалист, знакомый с этим компьютером, сразу ответит, что своим успешным развитием и распространением PC обязан "открытой" архитектуре. Она оказалась настолько гибкой, что к настоящему моменту дала возможность создать персональные компьютеры, соизмеримые по мощности с большими ЭВМ того времени. Свою роль сыграла и поддержка ее фирмой Intel все более и более мощными процессорами, позволившими на протяжении всего развития от PC до PS/2 не переписывать старое программное обеспечение (ПО).
Так что же такое открытая архитектура? Заметим, что в словарях, как правило, определяется только понятие архитектуры вообще или архитектуры системы, но не архитектуры компьютера. Объясняется это, по-видимому, неустоявшейся терминологией в этой области. Согласно [1] архитектура открытой системы - концепция, которая позволяет соединять в единое целое различные компьютеры и периферийные устройства с помощью единой сети. Предполагается, что стандарты связей существуют и широко используются.
Такое определение легко распространить на более низкий уровень описания (компьютера, а не системы). Компьютер с открытой архитектурой - это компьютер, шина которого широко используется многими адаптерами периферийных устройств, протокол работы шины подробно описан, а правила взаимодействия программ с различными периферийными устройствами достаточно хорошо стандартизованы.
Спускаясь на еще более низкий уровень описания, можно определить понятие процессора с открытой архитектурой. Процессором с открытой архитектурой будем называть процессор, правила взаимодействия функциональных блоков которого стандартизованы и описаны. Сформулированы правила расширений и изменений системы команд, а также принципы формирования режимов адресации и кодов операций.
По-видимому, назрела необходимость в создании (наряду с новым семейством компьютеров) новой серии процессоров с такой архитектурой, чтобы процессор мог легко совершенствоваться без необходимости переделки уже наработанного ПО. Выход серии процессоров i8086/88 - i80486 ясно показал ту пользу,- которую приносит совместимость систем команд новых процессоров со старыми.
Мне кажется, будущий микропроцессор с открытой архитектурой (его можно, например, назвать MISC - Multipurpose Instruction Set Computer) должен сочетать преимущества как RISC-, так и CISC-про- цессоров. По мере развития технологии его структура может изменяться как в сторону CISC, так и, что особенно важно, в сторону RISC.
Логическая структура MISC
Собственно микропроцессор должен состоять как минимум из двух частей (микросхем). Первая, основная, часть (host) - RISC-процессор, но несколько расширенный так, что при подключении второй части, которая является практически исключительно ПЗУ микропрограммного управления, этот процессор превращается в CISC. Таким образом, выполнение четырех-пяти десятков команд, присущих обычно RISC-процессорам, возлагается на логику host-процессора, а любые команды, не принадлежащие к их числу, преобразуются в адрес соответствующей микропрограммы. В отсутствие ПЗУ MISC-процессор работает, как чистый RISC. Все команды исполняются им за один такт. При наличии ПЗУ он эквивалентен процессору со сложным набором команд, хотя 40...50 простых команд, характерных для RISC, по-прежнему выполняются не более чем за один такт.
Каковы же преимущества такого подхода? Один из основных недостатков RISC-процессора заключается в том, что любой компилятор с языка высокого уровня вынужден фактически генерировать микрокод. Библиотеки стандартных функций (некоторые из них CISC- процессоры выполняют одной, хотя и сложной командой) для RISC- процессоров занимают много места в памяти. В предлагаемой архитектуре библиотеки функций располагаются в микропрограммном ПЗУ. Для команд микропрограммы не требуется время на выборку из системной памяти и дешифрацию, так как фактически - это уже дешифрованная последовательность RISC-команд, видимая программистом как единая CISC-команда. Зафиксировав протокол взаимодействия host-процессора со своим ПЗУ или логическим устройством, а также со всеми сопроцессорами, можно получить реализацию процессора с открытой архитектурой, а это значит:
1.    С развитием технологии появляется возможность практически неограниченно расширять набор команд/программ (движение к концепции CISC) при сохранении полной преемственности в отношении старого ПО, а также совершенствовать и оптимизировать уже созданные команды заменой только микросхемы ПЗУ.
2.    В дальнейшем ПЗУ может быть заменено на логическое устройство (движение в сторону концепции RISC), которое, получая входной адрес от host-процессора, будет выполнять соответствующую стандартную функцию за меньшее по сравнению с микропрограммой число тактов, сильно увеличивая быстродействие при сохранении совместимости. В свою очередь, команды, не реализованные в таком логическом устройстве, могут быть отданы на исполнение следующему ПЗУ.
3.    Для простых приложений, в которых необходимо быстрое выполнение небольшого набора простых логических команд, можно использовать только host-процессор.
4.    С точки зрения технологии:
выполнить ПЗУ микропрограмм на отдельном кристалле значительно проще, чем вместе со схемой процессора. В будущем, вероятно, можно сделать это ПЗУ репрограммируемым;
высвобождающееся от ПЗУ место на кристалле host-процессора (а в таком процессоре, как i80386, ПЗУ занимает значительную часть площади кристалла) можно использовать для реализации более развитого регистрового файла, т. е. расширения набора регистров общего назначения, что характерно для RISC-процессоров. Некоторые из этих регистров могут использоваться для хранения промежуточных CISC- операций.
Система команд
Формат команды MISC-процессора должен обеспечивать возможность реализации всех существующих режимов адресации и формирования новых. Сложность режимов адресации, как и самих команд, будет возрастать по мере увеличения длины команды. Рассмотрим пример построения системы команд MISC.
Для наиболее эффективной реализации как самой системы команд, так и правил ее расширения представляется наиболее целесообразной система команд, организованная в виде дерева. Корень дерева состоит из базисной системы команд (RISC-команды host-процессо- ра), а также префиксов для вхождения в более сложные команды. На уровне базисной системы команд все команды однобайтовые. В случае набора из 63 команд возможны четыре режима адресации. При этом 64-я команда в различных режимах адресации резервируется как четыре префикса для входа в более сложные команды. Процесс исполнения такого префикса host-процессором заключается в дешифрации следующего за ним байта как адреса микропрограммы ПЗУ, а набор двухбайтовых команд (кодов операций) может состоять, например, из 127 команд в восьми режимах адресации, 128-я команда резервируется под восемь префиксов трехбайтовых команд. Набор трехбайтовых команд будет состоять из 127 команд в 16 режимах адресации или из 255 команд в восьми режимах и т. д.
Для каждого из наборов команд (двух-, трехбайтовые и т. д.) необходима своя микросхема ПЗУ микропрограмм или логического устройства. Все они соединяются друг с другом цепочкой, так же как host-процессор с первым ПЗУ (см. рис. а и б), т. е. всякое логическое устройство (ЛУ), стоящее перед очередным ПЗУ, является для него host-процессором.
Такое использование регистров должно быть оговорено в описании архитектуры, так как из-за побочных эффектов могут возникнуть проблемы их совместимости.
 
Примеры простой (а) и расширенных (б,б) конфигураций. ЛУ содержит реализации двухбайтовых команд, реализации трехбайтовых команд находятся в ПЗУ (б) и системном ОЗУ (в)

Кроме того, один из наборов команд может быть сформирован в системной памяти компьютера с помощью специальных компиляторов или ассемблера. В этом случае вместо одного из ПЗУ или логического устройства устанавливается кеш-память микропрограмм (см.рис. в), имеющая на входе шину данных, разрядностью соответствующую ширине шины данных вычислительной системы, в которой работает процессор (например, 32 бит), а на выходе - слову микропрограммного управления (48 ..64 бит.). Это необходимо, в основном, для процесса написания, отладки и оптимизации микропрограмм с целью последующей реализации в аппаратуре. Широкое использование данного режима ограничено высокой загрузкой шины. В такой конфигурации MISC-процессор становится похожим на WISC (Writable Instruction Set ...)[4]. В этом случае возможна более тонкая оптимизация программы, позволяющая достичь разумного компромисса между объемом памяти, занимаемым командами в виде слов микропрограммного управления (против обычной компактной формы), и скоростью исполнения программы.
Стек
В настоящее время проявляется тенденция к усложнению* стековых структур данных современных микропроцессоров. Для обеспечения их гибкости стек в общем случае должен иметь иерархическую структуру, хотя на уровне базисной системы команд целесообразно реализовать только одно-, двух- или трехстековую структуру.
Управление памятью
MISC-процессор должен поддерживать современные способы обслуживания виртуальной страничной и (или) сегментированной памяти, используя внешний диспетчер памяти. Внесение его на кристалл host-процессора не представляется целесообразным, так как далеко не все системы используют виртуальную память. Кроме того, фиксация протокола работы интерфейса диспетчера и правил его конвейеризованной работы с процессором позволит совершенствовать диспетчер памяти независимо от процессора. В остальном структура процессора очень похожа на существующие. Желательно применение раздельных кеш-памятей для команд, стека и данных, что станет, по-видимому, "правилом хорошего тона" в ближайшие годы.
Накопление опыта в создании ПО, выражающееся в стандартизации и унификации функционально законченных модулей программ, а также рост степени интеграции микросхем приводят к постепенному перемещению программных наработок в аппаратуру. Этот объективный процесс вызывает часто необходимость отказа от традиционных архитектур, что, в свою очередь, приводит к несовместимости с ранее написанным ПО. Открытая архитектура в отличие от консервативных традиционных могла бы стать мощным инструментом совершенствования как аппаратных, так и программных средств.
 


Обсудить вопрос в студенческом форуме

 

Сайт содержит информацию о учебном заведении и студенческой общине и не является официальным