(RISC - reduced instruction set computer - компьютер с сокращенным набором команд).

CPU первого типа являются традиционными, а их система команд включает большое количество команд для выполнения арифметических и логических операций, команд управления, пересылки и ввода-вывода данных. При считывании из операнда кода операции процессор обращается в ПЗУ микрокоманд и получает набор микроинструкций, реализующий алгоритм выполнения данной команды.

Такие CPU способны реализовывать любой алгоритм, который предварительно кодируется в системе команд данного CPU. Большинство универсальных CPU аппаратно поддерживают только целочисленную арифметику. Арифметика же с плавающей точкой реализуется программно во внутренних сопроцессорах . Сопроцессор расширяет набор команд ЭВМ. Когда основной процессор получает команду, которая не входит в его рабочий набор, он передает управление сопроцессору с целью ее выполнения.

Формально к этому классу относятся в большей или меньшей степени все нынешние Athlon , Pentium и прочие процессоры для IBM PC-совместимых компьютеров. В большей или меньшей потому, что те или иные заимствования идей и методов RISC имеются практически в каждом современном чипе.

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

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

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


Основные задачи распараллеливания вычислений (ILP - Instruction Level Parallelism):

Проверка зависимостей между инструкциями для выявления тех из них, которые можно сгруппировать для параллельного выполнения;

Распределение инструкций между функциональными блоками процессора;

Определение момента начала выполнения инструкций.

На основе статистического анализа кода множества CISC-приложений определяются наиболее часто используемые команды; уменьшение же числа команд позволяет увеличить число внутренних регистров (пересылка между регистрами выполняется быстрее всего), сделать конвейер более эффективным и поднять частоту его работы (чем более простые команды в нем исполняются, тем выше частота). Несмотря на значительно увеличившийся объем программного кода, RISC-процессор будет работать в несколько раз быстрее CISC-процессора с одинаковой частотой: специализация всегда предпочтительнее универсальности в плане быстродействия.

Разницу между RISC- и CISC-программами можно пояснить на простом примере. Но для начала оговорим некоторые детали: память компьютера адресуется по номеру строки и столбца, из которого осуществляется выборка (или в который производится запись). Операции над значениями из памяти производятся в исполнительном блоке, который, однако, может работать лишь с данными, загруженными в процессорные регистры.

Пусть нам нужно умножить два значения в памяти по некоторым адресам 2:2 (строка:столбец) и 5:4. CISC нацелен на исполнение задачи при минимуме команд: набор инструкций процессора строится таким образом, чтобы все более или менее сложные действия решались одной командой. Предположим, что в CISC- процессоре имеется команда MULT, которая выбирает указанные значения из ячеек памяти, записывает их в различные регистры и сохраняет результат в соответствующем регистре. Тогда задача умножения решится в одну строку кода:

MULT 2:2, 5:4

RISC-процессоры используют простые инструкции, которые исполняются за один такт. В этом случае вместо MULT потребуются команды LOAD/STORE, загружающие данные из памяти в регистр и записывающие их обратно, а также команда PROD, выполняющая умножение данных в двух некоторых регистрах. Эквивалентом MULT для RISC-процессора будет следующий код:

LOAD A, 2:2

LOAD B, 5:4

PROD A, B

STORE 2:3, A

Очевидно, код длиннее, но скорость выполнения операций на регистрах в 4 - 8 раз выше.

Таблица 1. Различия CISC и RISC

В принципе, с увеличением объема кода можно мириться, если этот увеличенный объем позволит в несколько раз повысить быстродействие - при необходимости программы пишут на ассемблере. Кроме того, RISC-код очень эффективно «распараллеливается».

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

Во-вторых, как следствие сыграла свою роль несовместимость программного обеспечения. Для х86 уже были написаны DOS и набирающая популярность Windows, а различные RISC- процессоры базировались на Unix, причем, как правило, на несовместимых между собой ее версиях. Да и программ для них было куда меньше, особенно пользовательских. В-третьих, несмотря на кажущуюся «упрощенность», RISC-процессоры были дороги - они выпускались сравнительно небольшими партиями для высокопроизводительных рабочих станций, и производители не считали нужным ни экономить на материалах, ни оптимизировать дизайн, ни упрощать чипсет и материнскую плату.

В некоторых сферах (научные ресурсоемкие вычисления), действительно, конкурировать с RISC системам на базе CISC-процессоров было сложно, зато во всех остальных недорогие и достаточно производительные x86-процессоры остались вне конкуренции. Для создания конкуренции Intel в 1991 году Apple, IBM и Motorola основали альянс AIM Alliance, который занялся созданием дешевого, быстрого и современного RISC-процессора. В 1993 году была представлена спецификация платформы PowerPC, а также первый чип - 32-разрядный PowerPC 601, работавший на частотах 50 и 66 МГц.

Название PowerPC пошло от многочиповой RISC-архитектуры IBM POWER, на базе системы команд которой и был основан первый процессор. Чип рассеивал намного меньше тепла, чем его конкурент в лице Intel Pentium, и работал зачастую быстрее его. Вслед за 601 появились 603/604 модели, затем в 1997 - PowerPC 750 (G3) с L2-кэш и ускоренной системной шиной. В 1999 модельная линейка процессоров PowerPC пополнилась PowerPC 7400 (G4) - «конкурентом» Intel Pentium III, представившим поддержку набора команд для векторных вычислений AltiVec (также известного как VMX - Vector Multimedia eXtension - «мультимедийное расширение» PowerPC).

Однако с появлением и совершенствованием архитектуры Intel NetBurst (в Pentium IV) процессоры компании закрыли единственное слабое место, которое позволяло PowerPC выглядеть более выигрышно: заметно ускорив операции с плавающей точкой, х86- процессоры оказались самыми быстрыми и дешевыми на рынке. PowerPC-чипы же остались основой Apple Macintosh и различных встраиваемых систем (благодаря низкой рассеиваемой мощности) - системы на их базе, даже с учетом более дешевого процессора, все равно получались заметно дороже IBM PC совместимых компьютеров. Кардинальным образом ситуацию не изменил и выход нового процессора от IBM - PowerPC 970 (G5). Он позволил лишь приблизиться к x86 фаворитам в некоторых приложениях.

В настоящее время RISC-CPU широко применяются в проблемно-ориентированных компьютерах повышенной вычислительной мощности; очень часто - в

  • Перевод

Примечание переводчика. В оригинале статьи авторы (один из них - пионер RISC-процессоров Д. Паттерсон) аргументируют необходимость развития открытых ISA (instruction set architecture, наборов команд процессоров) и продуктов на их основе. В качестве аргументов выдвигается стимулирование развития тех областей вычислительной техники и экономических ниш, в которых коммерческие компании не заинтересованы или же недостаточно гибки. Они напоминают об успехах открытых стандартов и свободного программного обеспечения.

На расширенную версию этой статьи (а также на контр-статью от представителей ARM и контр-контр-параграф от авторов!) я наткнулся в августовском выпуске Microprocessor Report (MPR). Доступ к MPR ограничен и распространяется только на подписчиков, однако в открытом доступе есть оригинальный отчёт, размещённый на сайте университета Беркли. Его перевод я и предлагаю далее.

Instruction Sets Should Be Free: The Case For RISC-V by Krste Asanović and David A. Patterson. EECS Department, University of California, Berkeley - Technical Report No. UCB/EECS-2014-146 www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.html

Copyright notice and disclaimers

Copyright 2014, by the author(s).
All rights reserved.
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission.



Заказные системы на чипе (SoC), в которых процессоры и их кэши занимают лишь малую часть кристалла, становятся вездесущими; сегодня уже сложно найти электронное устройство, в котором не используется процессор в составе SoC. Таким образом, всё больше компаний проектируют чипы, в которые входят процессоры, чем это было раньше. Учитывая, какую революцию произвели открытые стандарты и открытое программное обеспечение - например, сетевой протокол TCP/IP и операционная система Linux - почему один из самых важных интерфейсов остаётся проприетарным?

Аргументы в поддержку свободных, открытых ISA

Безусловно, некоторые наборы команд процессоров (ISA, англ. instruction set architecture) могут быть проприетарными по историческим и коммерческим причинам. Однако, не существует ни одного твёрдого технического основания для объяснения отсутствия свободных, открытых вариантов.
  1. Это не ошибка или упущение. Компании, владеющие успешными ISA, такие как ARM, IBM и Intel, владеют патентами на причуды своих систем команд, что препятствует остальным использовать их без лицензий 1 . Переговоры об использовании длятся по 6-24 месяца и могут стоить от 1 до 10 миллионов долларов, что исключает из процесса академические организации и всех, кому требуются лишь небольшие объёмы производства 2 . Лицензия от ARM даже не позволяет вам спроектировать собственное ядро; вы лишь получаете право на использование их дизайна (лишь около 15 больших компаний имеют право на создание новых ядер ARM). Даже «OpenPOWER» - это оксюморон; вы обязаны платить IBM, чтобы использовать эту ISA. Разумная с т.з. бизнеса, подобная практика лицензирования душит конкуренцию и инновации, запрещая многим проектировать и делиться собственными ISA-совместимыми ядрами.
  2. Это не из-за того, что сами владельцы ISA производят подавляющую долю программного обеспечения для своих систем. Несмотря на размеры программных экосистем, которые выросли вокруг популярных ISA, львиная доля ПО для них пишется внешними людьми.
  3. Эти компании не владеют сакральным знанием, требуемым для создания адекватной ISA. Это большая работа, но многие сегодня могут спроектировать набор инструкций.
  4. Самые популярные ISA - не самые изящные. Как 80x86, так и ARM не считаются эталонами хорошего дизайна.
  5. Для верификации совместимости с ISA не требуется контроль компаний. Открытые организации разработали механизмы для сертификации совместимости аппаратных средств много лет назад. Примеры: стандарт IEEE 754 для чисел с плавающей запятой, Ethernet, PCIe. Если бы это было не так, открытые IT-стандарты не были бы столь популярны.
  6. Наконец, нет гарантий, что проприетарные ISA будут существовать долго. Если компания разоряется и исчезает, она забирает свою ISA с собой. Кончина DEC закончила развитие наборов инструкций Alpha и VAX.

Отметим, что ISA на самом деле - спецификация интерфейса, но не его реализация. Существует три подхода к реализации некоторого интерфейса:

1. Частная закрытая, аналогично Apple iOS.
2. Лицензируемая открытая, наподобие Wind River VxWorks.
3. Свободная и открытая, пользователи которой могут изменять и делиться, как это сделано в Linux.

Проприетарные ISA на практике позволяют работать с первыми двумя подходами, но вам нужна свободная, открытая ISA для поддержки всех трёх подходов.

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

Это может привести к:

1. Инновациям через конкуренцию на свободном рынке многих дизайнеров, включая открытые и закрытые реализации ISA.
2. Общим открытым дизайнам ядер, что будет выражаться в сокращении времени выхода продукции на рынок, уменьшении стоимости от переиспользования, меньшем числе ошибок из-за пристального внимания многих людей 3 , и в прозрачности, которая, например, затруднит внедрение секретных бэкдоров правительственными агенствами.
3. Процессорам, доступным для большего числа устройств, что поможет развивать Интернет Вещей (IoT, англ. Internet of Things), со стоимостью порядка доллара.

Аргументы в поддержку RISC как стиля для свободной, открытой ISA

Для того, чтобы какая-либо ISA была принята сообществом open-source, мы считаем, что она должна иметь успешную историю коммерческого применения. Первый вопрос - какой стиль ISA демонстирует такую историю? За последние 30 лет история не знает ни одной успешной стековой архитектуры (Примечание переводчика: странное заявление, учитывая успех Java bytecode и.NET CLI - стековых архитектур ). Кроме как в сегменте приложений DSP (англ. digital signal processing), VLIW также постигла неудача: Multiflow всплыл брюхом вверх, а Itanium, несмотря на миллиардные инвестиции HP и Intel, не получил признания. Уже десятки лет ни одна новая CISC ISA не обретает успеха. Выжившие же CISC архитектуры транслируют свои сложные инструкции в более простые ISA, что очень оправдано для исполнения ценной унаследованной кодовой базы. Новая же ISA по определению не будет иметь такой базы, так что дополнительные расходы на аппаратуру и энергопотребление, требуемые для трансляции, сложно оправдать: почему бы сразу не использовать более простую ISA? RISC -подобные load-store наборы команд известны как минимум уже 50 лет, с эпохи CDC 6600 Сэймюра Крея. Тогда как 80x86 выиграл войны за ПК, RISC доминирует в планшетах и телефонах пост-ПК эры. В 2013 г. было продано более 10 миллиардов ARM, в сравнении с 0.3 миллиардами x86. Повторяя то, что мы уже говорили в 1980 4 , мы считаем, что RISC - лучший выбор для свободной и открытой ISA.

Более того, новая RISC ISA может быть лучше своих предшественников, если при её разработке учесть их ошибки:

  1. Исключение слишком многого: отсутствие команд load/store для байт и полуслов в первом варианте Alpha ISA и отсутствие load/store для чисел с плавающей запятой в MIPS I.
  2. Включение излишнего: встроенный сдвиг в инструкциях ARM и регистровые окна SPARC.
  3. Влияние микроархитектурных деталей на ISA: отложенные переходы в MIPS и SPARC, барьеры-ловушки для чисел с плавающей запятой на Alpha.

Для удовлетворения потребностей рынка встраиваемых решений, RISC-и даже предоставили решение проблемы размера кода: ARM Thumb и MIPS16 добавили 16-битные форматы для того, чтобы код был даже короче, чем у 80x86. Таким образом, существует общепризнанное соглашение о том, как в целом должна выглядеть хорошая RISC ISA.

Аргументы за использование существующей свободной открытой RISC ISA

Уже существует три свободных и открытых RISC ISA 5:
  • SPARC V8 - к чести Sun Microsystems, она сделала SPARC V8 стандартом IEEE в 1994.
  • OpenRISC - GNU-лицензированный open-source проект, начатый в 2000, с 64-битной ISA законченной в 2011.
  • RISC-V - в 2010, частично из-за ограничений ARM на свой IP и из-за отсутствия 64-битных режимов, а также из-за общей гротескности ARM v7, мы и наши студенты Andrew Waterman и Yunsup Lee разработали RISC-V 6 (произносится как «RISC-5») для нужд наших исследований и преподавательской деятельности и выпустили её под BSD-лицензией.

Так как обычно на то, чтобы отшлифовать все тонкости, уходят годы - вызревание OpenRISC заняло 11 лет, а у RISC-V ушло 4 года, - более правильно будет начать с уже существующей ISA, а не формировать комитет и начинать с нуля. Все RISC похожи, так что любая из них может быть хорошим кандидатом.

Так как ISA могут существовать десятилетиями, необходимо сперва экстраполировать и описать будущий ландшафт информационных технологий, чтобы понять, какие особенности могут оказаться важными, для облегчения процесса приоритезации. Скорее всего, преобладать будут три платформы: IoT - миллиарды дешёвых устройств с IP-адресами и доступом в Интернет; 2) персональные мобильные устройства, такие как современные телефоны и планшеты; 3) дата-центры (Warehouse-Scale Computers, WSCs). Можно иметь разные ISA для каждого типа платформ, однако жизнь будет проще, если она всюду будет одна. Такая картина будущего предлагает четыре ключевых требования на неё.

1. Формат «базовая ISA плюс расширения» 7 . Для повышения эффективности и уменьшения затрат SoC-системы добавляют собственные специфичные для приложения акселераторы. Для этого, а также чтобы поддерживать стабильную кодовую базу, свободная открытая ISA должна иметь: а) небольшое ядро инструкций, которые известны компиляторам и ОС, б) стандартные, но опциональные расширения для частых частных сценариев адаптации SoC к конкретному приложению, в) пространство для полностью новых кодов инструкций для работы акселераторов.

2. Компактная кодировка команд. Меньший объём кода желателен из-за чувствительности цены IoT-приложений к объёму используемой памяти.

3. Четверная точность (QP, quadruple-precision) вычислений над числами с плавающей запятой в дополнение к двойной и одинарной точностям. Некоторые приложения, исполняющиеся в дата-центрах сегодня, обрабатывают настолько большие объёмы данных, что они уже сейчас используют программные библиотеки для QP.

4. 128-битная адресация в дополнение к 32- и 64-битной. Ограничения по памяти IoT-устройств означают, что 32-битная адресация ещё долгое время будет актуальной. 64-битные адреса - де-факто стандарт для всех больших систем. Хотя промышленность WSC не потребует всех 2 128 байт, вполне правдоподобно, что через десятилетие понадобятся числа, превышающие 2 64 (16 эксабайт), для адресации хранилищ SSD. Ограниченный размер пространства адресов - одна из тех ошибок ISA, которые сложно исправить 8 , разумно планировать большие адреса уже сейчас.

Следующая таблица суммирует информацию о трёх свободных открытых ISA по этим четырём критериям, а также по наличию поддержки компиляторами и портированными ОС.

Аргументы в поддержку RISC-V как свободной открытой ISA

Наше сообщество должно объединиться вокруг единой ISA, чтобы проверить, что свободная открытая ISA может работать на практике. Только RISC-V удовлетворяет всем четырём требованиям. Она также от 10 до 20 лет моложе остальных RISC, так что мы имели возможность проанализировать и исправить их ошибки, такие как слоты задержки переходов SPARC и OpenRISC. Поэтому система команд RISC-V простая и понятная (см. таблицы 4 и 5 оригинальной статьи, а также www.riscv.org). В дополнение к тому, что остальные ISA не выполняют многие требования, есть вопросы к тому, что 64-битный SPARC V9 - проприетарный, а OpenRISC потерял импульс.
RISC-V всё ещё имеет большой импульс. Таблица 1 перечисляет различные группы, проектирующие SoC на основе RISC-V. Отчасти из-за использования высокопродуктивной, открытой системы проектирования аппаратуры Chisel 9 , университет Беркли имеет уже 8 типов чипов и новые разработки в процессе. Таблица 2 показывает, что одно 64-битное ядро RISC-V занимает половину площади, потребляет половину от мощности и при этом работает быстрее, чем 32-битный ARM с похожим конвеером или тем же техпроцессом. Хотя сложно полностью устранить нашу предвзятость в этом вопросе, мы полагаем, что RISC-V - лучший и безопасный выбор для свободной открытой RISC ISA. Поэтому мы будем проводить серию семинаров 10 для расширения сообщества RISC-V и, вдохновлённые примерами из таблицы 3, планируем создать некоммерческий фонд для задачи сертификации реализаций, а также для поддержки и развития ISA.

Заключение

Наши доводы даже более ясны для открытой ISA, чем для открытой ОС, так как ISA меняются очень медленно, тогда как алгоритмические инновации и новые приложения требуют непрерывной эволюции ОС. Также, как и TCP/IP, это - стандарт на интерфейс, который легче поддерживать и развивать по сравнению с ОС.

Открытые ISA использовались и раньше, но они никогда не становились популярными из-за недостатка спроса в них. Низкая цена и энергопотребление IoT, желание иметь альтернативу 80x86 для дата-центров и тот факт, что процессорные ядра - лишь малая, но вездесущая часть всех SoC, комбинируются в то предложение, способное удовлетворить возникший спрос. RISC-V нацелен в первую очередь на SoC, с базовым набором никогда не меняющихся команд, учитывая долгую жизнь идей RISC, с медленно эволюционирующим подмножеством опциональных расширений, а также уникальными инструкциями, которые никогда не будут переиспользованы. Хотя первый плацдарм для RISC-V может быть IoT или WSC, наша цель шире: так же, как Linux стал стандартной ОС для большинства вычислительных устройств, мы представляем себе RISC-V как стандартную ISA для всех вычислительных устройств будущего.

представляет ту часть системы, которая видна программисту или разработчику компиляторов. В широком смысле архитектура охватывает понятие организации системы, включающее такие высокоуровневые аспекты разработки компьютера как систему памяти, структуру системной шины, организацию ввода/вывода и т.п.

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

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

Следующий уровень отражает основную линию разграничения системы, а именно границу между системным программным обеспечением и аппаратурой. Эту идею можно развить и дальше и говорить о распределении функций между отдельными частями физической системы. Например, некоторый интерфейс определяет, какие функции реализуют центральные процессоры, а какие - процессоры ввода/вывода.

Глава 4.2. Архитектура системы команд. Классификация процессоров (CISC и RISC).

Двумя основными архитектурами набора команд являются архитектуры CISC и RISC. Основоположником CISC-архитектуры можно считать компанию IBM с ее базовой архитектурой /360, ядро которой использлвалось с1964 года.

Лидером в разработке микропроцессоров c полным набором команд (CISC - Complete Instruction Set Computer) считается компания Intel со своей серией x86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокомпьютеров. Для CISC-процессоров характерно: сравнительно небольшое число регистров общего назначения; большое количество машинных команд, некоторые из которых нагружены семантически аналогично операторам высокоуровневых языков программирования и выполняются за много тактов; большое количество методов адресации; большое количество форматов команд различной разрядности; преобладание двухадресного формата команд; наличие команд обработки типа регистр-память.

Основой архитектуры современных рабочих станций и серверов является архитектура компьютера с сокращенным набором команд (RISC - Reduced Instruction Set Computer). Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитектуры Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако окончательно понятие RISC в современном его понимании сформировалось на базе трех

исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета.

Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд использовались команды фиксированной длины и фиксированного формата.

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

Следует отметить, что в разработках компании Intel (имеется в виду Pentium P54C и процессор следующего поколения P6), а также ее последователейконкурентов (AMD R5, Cyrix M1, NexGen Nx586 и др.) широко используются идеи, реализованные в RISC-микропроцессорах.

В 70-е годы XX века ученые выдвинули революционную по тем временам идею создания микропроцессора, "понимающего" только минимально возможное количество команд.

Замысел RISCпроцессора (Reduced Instruction Set Computer, компьютер с сокращенным набором команд) родился в результате практических исследований частоты использования команд программистами, проведенных в 70-х годах в США и Англии. Их непосредственный итог - известное "правило 80/20": в 80% кода типичной прикладной программы используется лишь 20% простейших машинных команд из всего доступного набора.

Первый "настоящий" RISC-процессор с 31 командой был создан под руководством Дэвида Паттерсона из Университета Беркли, затем последовал процессор с набором из 39 команд. Они включали в себя 20-50 тыс. транзисторов. Плодами трудов Паттерсона воспользовалась компания Sun Microsystems, разработавшая архитектуру SPARC с 75 командами в конце 70-х годов. В 1981 г. в Станфордском университете стартовал проект MIPS по выпуску RISC-процессора с 39 командами. В итоге была основана корпорация Mips Computer в середине 80-х годов и сконструирован следующий процессор уже с 74 командами.

По данным независимой компании IDC, в 1992 году архитектура SPARC занимала 56% рынка, далее следовали MIPS - 15% и PA-RISC - 12,2%

Примерно в то же время Intel разработала серию 80386, последних "истинных" CISCпроцессоров в семействе IA-32. В последний раз повышение производительности было достигнуто только за счет усложнения архитектуры процессора: из 16разрядной она превратилась в 32-разрядную, дополнительные аппаратные компоненты поддерживали виртуальную память, и добавился целый ряд новых

Основные особенности RISC-процессоров:

1. Сокращенный набор команд (от 80 до 150 команд).

2. Большинство команд выполняется за 1 такт.

3. Большое количество регистров общего назначения.

4. Наличие жестких многоступенчатых конвейеров.

5. Все команды имеют простой формат, и используются немногие способы адресации.

6. Наличие вместительной раздельной кэш-памяти.

7. Применение оптимизирующих компиляторов, которые анализируют исходный код и частично меняют порядок следования команд.

RISC-процессоры 3-го поколения

Самыми крупными разработчиками RISC-процессоров считаются Sun Microsystems (архитектура SPARC - Ultra SPARC), IBM (многокристальные процессоры Power, однокристальные PowerPC - PowerPC 620), Digital Equipment (Alpha - Alpha 21164), Mips Technologies (семейство Rxx00 -- R 10000), а также Hewlett-Packard (архитектура PA-RISC - PA-8000).

Все RISC-процессоры третьего поколения:

∙ являются 64-х разрядными и суперскалярными (запускаются не менее 4-х команд за такт);

имеют встроенные конвейерные блоки арифметики с плавающей точкой;

имеют многоуровневую кэш-память. Большинство RISC-процессоров кэшируют предварительно дешифрованные команды;

изготавливаются по КМОП-технологии с 4 слоями металлизации.

Для обработки данных применяется алгоритм динамического прогнозирования ветвлений и метод переназначения регистров, что позволяет реализовать внеочередное выполнение команд.

Повышение производительности RISC-процессоров достигается за счет повышения тактовой частоты и усложнения схемы кристалла. Представителями первого направления являются процессоры Alpha фирмы DEC, наиболее сложными остаются процессоры компании Hewlett-Packard. Рассмотрим процессоры этих фирм более подробно.

Структура процессоров Alpha: 21064, 21264

Структура процессора Alpha 21064 представлена на рис.

Рис. Структура процессора Alpha 21064

Основные функциональные блоки процессора Alpha 21064:

∙ I-cache - кэш команд.

IRF - регистровый файл целочисленной арифметики.

∙ F-box - устройство арифметики с плавающей точкой.

∙ E-box - устройство целочисленной арифметики (7 ступеней конвейера).

∙ I-box - командное устройство (управляет кэш команд, выборкой и дешифрацией команд).

∙ A-box - устройство управления загрузкой/сохранением данных. Управляет процессом обмена данными м/у IRF, FRF, кэш данных и внешней памятью.

Write Buffer - буфер обратной записи.

∙ D-cache - КЭШ данных.

BIU - интерфейсный блок, с помощью которого подключаются внешняя кэшпамять, размером 128 Кб-8 Мб.

Сравнительные характеристики Alpha 21164 и 21264

Процессор Alpha 21264 отличается значительной новизной по сравнению с предшественником 21164. Он обладает кэш-памятью первого уровня большего объема, дополнительными функциональными блоками, более эффективными средствами предсказания ветвлений, новыми инструкциями обработки видеоданных и широкой шиной.

Alpha 21264 читает до четырех инструкций за один такт и может одновременно исполнять до шести инструкций. Самое большое его отличие от модели 21164 - это способность выполнять команды (впервые для Alpha) с изменением их очередности

Эффективность выполнения Out-of-Order определяется количеством инструкций, которыми может манипулировать ЦП в целях определения оптимального порядка выполнения команд. Чем больше инструкций ЦП может для этого использовать, тем лучше, тем дальше он может заглядывать вперед. Процессоры Intel класса Р6 (Pentium Pro, Pentium II, Xeon) могут одновременно обращаться не менее чем с 40 командами. У других процессоров данный показатель значительно больше: PA-8000 фирмы HP оперирует 56 командами, а процессор Alpha справляется с 80 командами.

Как и большинство RISC-процессоров, Alpha содержит набор из 32 целочисленных и 32 регистров с плавающей запятой, все они имеют разрядность 64 бита. Для повышения эффективности внеочередного выполнения команд процессор 21264 дополнительно к обычному набору регистров снабжен еще 48 целочисленными регистрами и 40 регистрами с плавающей запятой.

Каждый регистр может временно хранить значения текущих команд. Если обрабатывается какая-либо инструкция, нет необходимости перегружать результат в целевой регистр - вместо этого ЦП просто переименовывает временный регистр (Register Renaming).

Подобное переименование регистров есть и в других процессорах. Однако в 21264 реализована уникальная "хитрость" - он имеет задублированный набор целочисленных регистров, каждый из 80 целочисленных регистров дублируется еще раз. Таким образом, на чипе в целом - 160 целочисленных регистров. Это одна из причин, почему, несмотря на сложность выполнения Out-of-Order, допустима высокая частота процессора 21264.

Блоки целочисленных операций в обеих группах идентичны не полностью. Одна из них содержит блок умножения, а вторая - специальную логику для обработки движущихся изображений (MPEG). Для этого набор команд Alpha был дополнен пятью новыми командами. Самая интересная из них - PERR - служит для оценки движения, т.е. выполнения задачи, возникающей как при сжатии, так и декомпрессии MPEG. Команда PERR выполняет работу девяти обычных инструкций. Таким образом, процессор 21264 может декодировать видеопоследовательности MPEG-2, а также DVD-аудиоданные AC-3 в режиме реального времени без использования дополнительных периферийных устройств.

В процессоре 21264, в отличие от его предшественников практически полностью реорганизована иерархия кэш-памяти. Он снабжен одним 64-Кбайт кэшем первого уровня (L1) для инструкций и еще одним 64-Кбайт кэшем первого уровня для данных; оба являются двукратно-ассоциативными. Кэш-память второго уровня (L2) была вынесена за пределы чипа - к ней можно обращаться через 128-бит backsideшину.

Сравнительные характеристики Alpha 21164 и 21264 приведены в табл. .

Таблица 10.1. Сравнительные характеристики Alpha 21164 и 21264

Тактовая частота, МГц

Емкость:8(I)+8(D)

Емкость: 64(I)+64(D)

Это устройство, представляющее собой одну или несколько больших интегральных схем(БИС), выполняющих функции процессора ЭВМ.Классическое вычислительное устройство состоит из арифметического устройства (АУ), устройства управления (УУ), запоминающего устройства (ЗУ) и устройства ввода-вывода (УВВ).

Существуют процессоры различной архитектуры.

CISC (англ. Complex Instruction Set Computing) - концепция проектирования процессоров, которая характеризуется следующим набором свойств:

· большим числом различных по формату и длине команд;

· введением большого числа различных режимов адресации;

· обладает сложной кодировкой инструкции.

Процессору с архитектурой CISC приходится иметь дело с более сложными инструкциями неодинаковой длины. Выполнение одиночной CISC-инструкции может происходить быстрее, однако обрабатывать несколько таких инструкций параллельно сложнее.

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

Достоинства архитектуры CISC

  1. Компактность наборов инструкций уменьшает размер программ и уменьшает количество обращений к памяти.
  2. Наборы инструкций включают поддержку конструкций высокоуровневого программирования.

Недостатки архитектуры CISC

  1. Нерегулярность потока команд.
  2. Высокая стоимость аппаратной части.
  3. Сложности с распараллеливанием вычислений.

RISC (Reduced Instruction Set Computing). Процессор с сокращенным набором команд. Система команд имеет упрощенный вид. Все команды одинакового формата с простой кодировкой. Обращение к памяти происходит посредством команд загрузки и записи, остальные команды типа регистр-регистр. Команда, поступающая в CPU, уже разделена по полям и не требует дополнительной дешифрации.

Часть кристалла освобождается для включения дополнительных компонентов. Степень интеграции ниже, чем в предыдущем архитектурном варианте, поэтому при высоком быстродействии допускается более низкая тактовая частота. Команда меньше загромождает ОЗУ, CPU дешевле. Программной совместимостью указанные архитектуры не обладают. Отладка программ на RISC более сложна. Данная технология может быть реализована программно-совместимым с технологией CISC (например, суперскалярная технология).

Поскольку RISC-инструкции просты, для их выполнения нужно меньше логических элементов, что в конечном итоге снижает стоимость процессора. Но большая часть программного обеспечения сегодня написана и откомпилирована специально для CISC-процессоров фирмы Intel. Для использования архитектуры RISC нынешние программы должны быть перекомпилированы, а иногда и переписаны заново.

Достоинства архитектуры RISC

1.снижение нерегулярности потока команд

2.обогащение пространственным параллелизмом

Недостатки архитектуры RISC

MISC (Multipurpose lnstruction Set Computer). Элементная база состоит из двух частей, которые либо выполнены в отдельных корпусах, либо объединены. Основная часть – RISC CPU, расширяемый подключением второй части – ПЗУ микропрограммного управления. Система приобретает свойства CISC. Основные команды работают на RISC CPU, а команды расширения преобразуются в адрес микропрограммы. RISC CPU выполняет все команды за один такт, а вторая часть эквивалентна CPU со сложным набором команд. Наличие ПЗУ устраняет недостаток RISC, выраженный в том, что при компиляции с языка высокого уровня микрокод генерируется из библиотеки стандартных функций, занимающей много места в ОЗУ. Поскольку микропрограмма уже дешифрована и открыта для программиста, то времени выборки из ОЗУ на дешифрацию не требуется.

Сравнение CISC и
RISC архетиктур
процессоров

CISC
Исторически первые микропроцессоры, появившиеся в
70­х годах XX века, имели относительно простую
систему команд, что объяснялось небольшими
возможностями интегральной схемотехники. По мере
увеличения степени интеграции ИМС разработчики
МП старались расширять систему команд и делать
команды более функциональными, «семантически
нагруженными».

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

CISC
CISC (Complex instruction set computing, или. complex instruction set
computer - компьютер с полным набором команд) - концепция
проектирования процессоров, которая характеризуется следующим
набором свойств:
● нефиксированное значение длины команды;
● арифметические действия кодируются в одной команде;
● небольшое число регистров, каждый из которых выполняет строго
определённую функцию.

Недостатки CISC
Наряду с отмеченными преимуществами процессоры CISC
обладали и рядом недостатков, в частности – команды
оказывались сильно неравнозначными по времени
выполнения (разное количество тактов), плохо
конвейеризовывались, требовали сложного (и длительного)
декодирования и выполнения. Для повышения
производительности стали использовать жесткую логику
управления, что отразилось на регулярности и сложности
кристаллов (нерегулярные кристаллы менее технологичны
при изготовлении). На кристалле оставалось мало места
для РОН и КЭШ.

История CISC
Типичными представителями являются
большинство процессоров семейства x86.
Например:
Intel 8008, Intel 80286, Motorola 68k

Что такое RISC?
RISC (Reduced Instruction Set Computer) – архитектура
процессора с сокращённым набором инструкций.
Начало исследований в данной области положено
компанией IBM в 1975 году. Правда фактически, RISC
подобная архитектура была создана Сеймуром Крэйем
в 1964 году и опробована в суперкомпьютере CDC
6600.

«Сокращённый набор команд» вовсе не означает, что
процессор имеет малое количество инструкций. Это
значит лишь то, что инструкции разделены на
действия, результаты которых могут быть вычислены
за определённый период времени (обычно один такт).

Особенности RISC
1. Любая операция должна выполняться за один такт, вне
зависимости от ее типа.
2. Система команд должна содержать минимальное количество
наиболее часто используемых простейших инструкций
одинаковой длины.
3. Операции обработки данных реализуются только в формате
"регистр­регистр" (операнды выбираются из оперативных
регистров процессора, и результат операции записывается
также в регистр; а обмен между оперативными регистрами и
памятью выполняется только с помощью команд чтения/записи).
4. Состав системы команд должен быть "удобен" для компиляции
операторов языков высокого уровня.

RISC
Новая архитектура была создана для устранения
недостатков CISC архитектуры, но не получила
популярности в то время из­за унификации стандарта
Intelx86 и всех программ выпущенных в то время под
CISC процессоры (точнее нежелания их переписывать
заново, ведь этот процесс ­ затратный).

RISC
Вычислительным ядрам больше не нужно было
обращаться к более медленной ОЗУ для занесения и
считывания результатов. Эти цели теперь выполняют
регистры общего назначения, а к оперативной памяти
обращение идёт только в процессе чтения начальных
данных и вывода результатов вычислений.
Поддерживается маршрут «регистр­регистр».

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

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

RISC
На данный момент, RISC – архитектура является одной
самых распространённых в мире, имея более 40%
мирового рынка. Данный результат в основном
благодаря ARM архитектуре и то, что в современных
мобильных устройствах используются именно
процессоры ARM (в абсолютном большинстве).

RISC
CDC 6600 ­ прародитель идеи
RISC процессоров на которых
сейчас работает большинство
электроники: от холодильников
до iPhone.

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

Сравнение CISC и RISC
Начиная с Intel 486DX все x86 процессоры имеют
внутреннее ядро RISC, остался только
преобразователь и дополнительные конвейеры,
который на входе преобразует CISC инструкции в
RISC, а на выходе обратно в CISC. Это необходимо из­
за особенностей архитектуры х86, но иногда тормозит
работу процессора и увеличивается количество
транзисторов, площадь и тепловыделение в сравнении
с полноценными RISC процессорами.