Блог → Микропроцессор будущего: RISC или CISC? Часть 1

В настоящее время не существует идеального процессора, способного удовлетворить требованиям всех производителей и пользователей компьютеров, и вряд ли вообще задача создания такового, разрешима. Этим, по-видимому, и объясняется тот факт, что на определенных стадиях развития технологии возникают многочисленные дискуссии на тему, каким быть компьютеру, а вместе с ним и процессору будущего - RISC (Reduced Instruction Set Computer) или CISC (Complex Instruction Set Computer). Чтобы разобраться в этом, рассмотрим обе этих концепции - RISC и CISC, более подробно.

Как известно, команды RISC-процессоров очень просты и почти всегда исполняются за один такт. Для реализации операции, отрабатываемой CISC-процессором как одна команда, RISC должен выполнить целую программу. Важная особенность CISC-процессоров - наличие блока микропрограммного управления, отрабатывающего последовательность микрокоманд, записанную в ПЗУ внутри процессора, соответствующую исполняемой команде.

Каждой микрокоманде соответствует какая-либо элементарная операция, выполняемая за один такт. Команды же RISC-процессоров сами, по сути дела, являются микрокомандами. Проще говоря, CISC-процессор - это RISC со встроенной библиотекой более сложных функций, записанной в ПЗУ микропрограммного управления в виде набора микропрограмм.

Достоинства и недостатки каждого из этих подходов весьма прозрачны. С одной стороны, при использовании CISC-процессора объем памяти, необходимый для решения одной и той же задачи, существенно меньше. Язык ассемблера CISC-процессора намного легче для человека, следовательно, затраты времени на написание и отладку программ меньше. В процессе исполнения команд он значительно меньше загружает системную шину, чем RISC, что позволяет иногда, даже в мультипроцессорных системах, обходиться без кэш-памяти.

С другой стороны, далеко не во всех программах полностью используется вся мощная система команд CISC-процессора, а это - неоправданный простой его дорогостоящей аппаратуры. Даже самые простые команды не могут выполняться за один такт (как правило, требуются 2-3 такта, к примеру, команда инкрементирования регистра общего назначения занимает в микропроцессоре i386 два такта), так как они реализуются внутри процессора микропрограммно. В CISC-процессорах программист не может управлять процессом исполнения сложной команды. Следовательно, этот процесс не может быть оптимизирован для получения максимально возможного быстродействия в каждом конкретном месте данной задачи. При программировании CISC-процессоров в критичных к быстродействию местах программ, иногда целесообразно написать несколько простых команд вместо одной сложной. В таких ситуациях лучше иметь несколько дополнительных регистров общего назначения, как это сделано в RISC-процессорах. Система команд CISC-процессоров, как правило, не отличается стройностью. Сложные команды имеют ограниченный набор режимов адресации и регистров, с которыми они работают. Все это затрудняет автоматическую генерацию и оптимизацию программ, что может быть особенно актуально для задач, формируемых с помощью языков логического программирования.

Опыт производства средств вычислительной техники показал, что на каждой новой ступени развития технологии как аппаратных средств, так и программирования оптимальным оказывается процессор, близкий то к RISC, то к CISC. Это часто порождает контрасты в оценках той или иной архитектуры. Однако авторы современных технических проектов пытаются найти такое сбалансированное решение, в котором максимально сочетались бы преимущества этих двух концепций.

Один из примеров реализации такого подхода - микропроцессор Fairchild Clipper. Это RISC-процессор, предоставляющий в то же время пользователю возможность создания макрокоманд, помещаемых в ПЗУ процессора. Макрокоманда, таким образом, работает, как микропрограмма в CISC-процессоре, в то время как остальные команды выполняются аппаратурой процессора, как RISC, за один такт. Это пример хорошего подхода, но он не обладает достаточной гибкостью. Архитектура процессора должна учитывать совершенствование технологии и по возможности обеспечивать совместимость с системами команд предыдущих процессоров.

Существует много подходов к решению проблем совместимости. Один из них - создание современных микропроцессорных комплектов для эмуляции систем команд mainframe компьютеров, например NCR/32. Но такой подход не позволяет сочетать эффективное со¬вершенствование аппаратуры процессора и системы команд.

Давайте оглянемся назад. Чем объясняется фантастический успех фирмы IBM после выпуска персонального компьютера PC? Любой специалист, знакомый с этим компьютером, сразу ответит, что своим успешным развитием и распространением PC обязан "открытой" архитектуре. Она оказалась настолько гибкой, что к настоящему моменту дала возможность создать персональные компьютеры, соизмеримые по мощности с большими ЭВМ того времени. Свою роль сыграла и поддержка её фирмой Intel все более и более мощными процессорами, позволившими на протяжении всего развития от PC до PS/2, не переписывать старое программное обеспечение.

Так что же такое открытая архитектура? Заметим, что в словарях, как правило, определяется только понятие архитектуры вообще или архитектуры системы, но не архитектуры компьютера. Объясняется это, по-видимому, неустоявшейся терминологией в этой области. Архитектура открытой системы - концепция, которая позволяет соединять в единое целое различные компьютеры и периферийные устройства с помощью единой сети. Предполагается, что стандарты связей существуют и широко используются.

Такое определение легко распространить на более низкий уровень описания (компьютера, а не системы). Компьютер с открытой архитектурой - это компьютер, шина которого широко используется многими адаптерами периферийных устройств, протокол работы шины подробно описан, а правила взаимодействия программ с различными периферийными устройствами достаточно хорошо стандартизованы.

Спускаясь на еще более низкий уровень описания, можно определить понятие процессора с открытой архитектурой. Процессором с открытой архитектурой будем называть процессор, правила взаимодействия функциональных блоков которого стандартизованы и описаны. Сформулированы правила расширений и изменений системы команд, а также принципы формирования режимов адресации и кодов операций.

По-видимому, назрела необходимость в создании (наряду с новым семейством компьютеров) новой серии процессоров с такой архитектурой, чтобы процессор мог легко совершенствоваться без необходимости переделки уже разработанного ПО. Выход серии процессоров i86 (всей линейки, от i8086/88 до i80486), ясно показал ту пользу, которую приносит совместимость систем команд новых процессоров со старыми.

Мне кажется, будущий микропроцессор с открытой архитектурой (его можно, например, назвать MISC - Multipurpose Instruction Set Computer) должен сочетать преимущества как RISC-, так и CISC-процессоров. По мере развития технологии его структура может изменяться как в сторону CISC, так и, что особенно важно, в сторону RISC. На этом я заканчиваю первую часть заметки, и в ближайшие дни, обязательно выложу в блоге её продолжение. Не пропустите, будет интересно!