Рабочие станции и серверы, созданные на базе концепции 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 состоит во включениив архитектуру компьютера динамического механизма быстрого сохранения регистровых окон в специальной памяти.
Сташин В.В., Урусов Ф.В. Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М., Энергоатомиздат, 1990.
Ремизевич Т.В. Микроконтроллеры для встраиваемых приложений. додека, - М., 2000.
Козаченко В.Ф. Микроконтроллеры: руководство по применению 16-разрядных микроконтроллеров Intel MCS-196/296 во встроенных системах управления. – М., ЭКОМ, 1997.
Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. - М.: Радио и связь, 1989. - 288 с.
Микропроцессорный комплект К1810: структура, программирование, применение: справочная книга/ Ю.М.Казаринов, В.Н.Номоконов, Г.С.Подклетнов, В.Ф.Филиппов. Под ред. Ю.М.Казаринова. - М.: Высш.шк., 1990. -269с.: ил.
Григорьев В.Л. Программирование однокристальных микропроцессоров. - М.: Энергоатомиздат, 1987. - 288 с.: ил.
Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/88. Архитектура, программирование и проектирование микрокомпьютерных систем: Пер. с англ. - М.: Радио и связь, 1987. - 512 с.; ил.
Микро- и мини-ЭВМ/ Е.П.Балашов, В.Л.Григорьев, Г.А.Петров: Учебное пособие для вузов. - Л: Энергоатомиздат. Ленингр. отд., 1984. - 376 с., ил.
Проектирование цифровых устройств на однокристальных микроконтроллерах/ В.В.Сташин, А.В.Урусов, О.Ф.Мологонцева. - М.: Энергоатомиздат, 1990. - 224с., ил.
Микропроцессорные системы./ М.С. Куприянов, Р.И. Грушвицкий, О.Е. Мартынов и др. Под. ред Д.В.Пузанкова Учебное пособие для вузов. - СПб., Политехника, 2002, 936 с.
Фрир Дж. Построение вычислительных систем на базе перспективных микропроцессоров: Пер. с англ. - М.: Мир, 1990. – 413 с. ил.
А.Н. Комин, М.С. Куприянов, Д.В. Пузанков, А.В. Сиповский. Процессоры семейства М68К фирмы Motorola/СПб., 1996, - 282с.