Процессоры risc: Не хотите RISCовать? Узнайте больше о процессорах архитектуры RISC
Не хотите RISCовать? Узнайте больше о процессорах архитектуры RISC
Что такое RISC-архитектура? Краткая история
Аббревиатура «RISC», от английского — reduced instruction set computer, переводится на русский как «сокращенное (ограниченное) число команд (инструкций)».
Очень часто в каталогах продукции различных производителей можно встретить название раздела или описание товара с указанием «на базе RISC». Данное заявление не относится к описанию каких-либо особых функций или характеристик оборудования. Оно связано только с одним из важнейших элементов любой ЭВМ, ее «вычислительным сердцем», без которого, не может функционировать ни один компьютер в мире. Указывая «RISC», производитель подразумевает только одно – процессор.
Свое начало «RISC» архитектура процессоров берет в середине 70-х – 80-х годов. Исследователями того времени, в частности представители IT-гиганта IBM, было выяснено, что большинство комбинаций команд и прямых методов адресации, не были задействованы использовавшимися в то время компиляторами («сборщики» исходного программного кода высокого уровня в программу на машинном языке, «понятную» компьютеру). Кроме того, было обнаружено, что программы, реализующие набор инструкций актуальных процессоров, зачастую обрабатывают сложные операции значительнее медленнее простых, выполняющие те же действия. Основная проблема заключалась в общей оптимизации микрокода процессора. Для решения простых задач процессоры того времени представляли из себя слишком сложные устройства, содержащие в себе большое количество инструкций, половина которых, могла даже быть не задействована. Соответственно, обработка всех инструкций сказывалась и на общей производительности процессора. Учтя все минусы современных процессоров того времени, было принято решение о разработке новой архитектуры. Основной фокус – сделать инструкции процессора настолько простыми, чтобы они легко и эффективно конвейеризировались (технология организации вычислений в процессорах и контроллерах). После нескольких лет исследований, в начале 80-х годов, было выпущено несколько видов процессоров, общее название которых и дало имя всей архитектуры – RISC. Своим созданием новая архитектура обязана американскому инженеру Дэвиду Паттерсону, руководителю проекта Berkeley RISC с 1980 по 1984 годы. В рамках данного проекта были разработаны дебютные процессоры новой архитектуры — RISC I и RISC II.
Профессора кафедры «Электротехника и компьютерные науки (EECS)» калифорнийского университета в Беркли, слева направо, Дэвид Паттерсон и Карло Секин. Участники проекта «Berkeley RISC». (ссылка на источник)
CISC и RISC процессоры. Характерные отличия, преимущества и недостатки
Все процессоры в мире, условно можно поделить на два типа – RISC, о нем уже было ранее сказано, и CISC. Что же такое CISC-процессор? Аббревиатура «CISC», от английского complete instruction set computing, переводится как «полный набор команд (инструкций)».
Главные особенности, определяющие архитектуру CISC:
- большое количество различных по длине и формату команд, выполняемых за несколько тактов центрального процессор
- управление с помощью программируемой логики (кодировка инструкций)
- преобладание двухадресной адресации и развитый механизм адресации операндов (переменная, над которой производят операции в коде)
CISC-процессоры являются так называемыми «классическими» процессорами. Они содержат в сотни раз больше команд, чем RISC-архитектура, используют больше способов адресации и т.д. На рубеже 80—90-ых в мире разгорелся настоящий «жаркий» спор, о том, какой же процессор лучше? С одной стороны баррикад, поставщики процессоров RISC — Hewlett-Packard (PA-RISC), Sun Microsystems Computers (SPARC), Silicon Graphics (MIPS) (R210000), союз IBM и Motorola (PowerPC), с другой – Intel и AMD. И решение было найдено не в технических аргументах сторон, а в технологическом преимуществе Intel и AMD. Но, с начала 2000-х, с момента появления мобильных решений и стремительного скачка развития в этом сегменте технологий, архитектура RISC обрела новую жизнь. Кроме того, во многих современных процессорах CISC, отдельные блоки и модули инструкций, представляют из себя, не что иное как RISC-процессор.
Наглядное сравнение процессоров CISС и RISC архитектур. CISC – массивный, мощный Кадиллак с эффектными спойлерами. RISC – быстрый, маневренный, компактный Porsche. (Из выступления Дэвида Паттерсона в 1985 году, ссылка).
В данной части мы не будем подробно рассматривать технические характеристики процессоров RISC, основные принципы построения архитектуры, алгоритмы логики и т.д. На данную тему, в просторах интернета, можно найти множество различных статей, как в англоязычном, так и в русскоязычном сегменте. Нас же, в первую очередь интересует вопрос – «Что получит обычный пользователь, приобретая оборудования на базе архитектуры RISС процессора?». Именно этот вопрос, послужит основным тезисом при разборе преимуществ и недостатков далее.
Преимущества
- Главное, и, пожалуй, основополагающее преимущество при выборе оборудование на базе процессора RISC — цена. Связано это в первую очередь с тем, что наборы инструкций RISC-процессоров просты и соответственно, для их выполнения, нужно меньшее количество логических элементов, что в конечном счете влияет на итоговую стоимость процессора. Кроме того, производство RISC-процессоров не требует сложных технологических процессоров, по сравнению с CISC, и занимает гораздо меньше времени.
- Общее быстродействие процессора. Связано это в первую очередь с небольшим числом команд, форматов, режимов и т.д., что ведет к упрощению схемы декодирования, и оно происходит быстрее.
- Использование семейства операционных систем Linux. Можно сказать, что оборудование на базе процессора RISC является идеальным для установки операционных систем Linux. Мощный рывок в развитии, особенно за последние несколько лет, RISC-подобные процессоры получили благодаря использованию открытого программного обеспечения, которое в дальнейшем раскрылось в использование различных дистрибутивов под разные задачи и от разных разработчиков. Любой производитель оборудования на RISC-процессоре, как правило может предоставить все необходимые драйвера, даже под несколько дистрибутивов. По запросу также есть возможность получить SDK (software development kit) набор.
К сожалению, недостатки RISC процессоров, тесно связаны с их преимуществами.
Недостатки
- Недостаточная производительность и функциональность. К сожалению, да, несмотря на свое быстродействие, процессоры RISC не предназначены для решения сложных и трудоемких задач. Для обработки больших массивов данных, сложной графической информации, развертывания виртуальных сред и т.д., оборудование на базе RISC-процессора не подходит.
- Большая часть программного обеспечения, сегодня написана под процессоры Intel и AMD, соответственно для работы с архитектурой RISC, оно должно быть перекомпилировано или переписано заново, что часто создает определенные сложности, а порой и просто невыполнимость задачи.
- Сокращенное число команд в архитектуре RISC, создает ситуации, когда на выполнение нескольких функций, приходится тратить несколько команд, в отличие от одной в архитектуре CISC. Это удлиняет не только код программы, но и увеличивает трафик команд между памятью и центральным процессором. Проводимые исследования показатели, что в среднем, длина кода программы в архитектуре RISC на 30% больше, чем аналогичной программы в CISC.
Простой пример сравнения СISC-кода и RISC-кода.
Основные RISC-процессоры. Что применяют в промышленности?
Как уже упоминалось выше, на сегодняшний день, RISС-подобные процессоры активно развиваются в своем сегменте рынка. Большую часть этого сегмента, 80%-90% занимают процессоры для товары широкого потребления. Конечно же, это различные смартфоны, планшетные компьютеры, игровые приставки и т.д. Любое мобильное устройство, где необходимо использование процессора, с вероятностью 90% построено на вычислительной мощности RISC-подобного процессора. Но, возможно Вы об этом не слышали и сам термин «RISC-подобный» вызывает дополнительные вопросы. Неоднократно в данной статье говорилось о RISC-подобных процессорах, что же это такое? RISC-подобные процессоры – это процессоры, в базисе архитектуры которых, были заложены основные идеи при разработке первых RISC процессоров, но в дальнейшем, приобретали свои уникальные свойства, особенности и развивались уже собственным путем. Инженеры-разработчики данных процессоров, черпали вдохновение именно из идей проекта «Berkeley RISC». Самые известные архитектуры RISC-подобных процессоров это ARM, MIPS, SPARK. Но конечно же есть и другие, менее распространённые, либо применяемые только в специализированных сферах, такие как – SuperH (SH), PowerPC, AVR и другие. Даже Intel и AMD разработали некогда свою собственную архитектуру на RISC-ядре – Intel P5/P6 и AMD K5/K6/K7. Но, стоит сказать об интересной особенности, данные компании занимаются лишь проектированием и лицензированием микропроцессорных устройств, но своих производственных мощностей не имеют. Например, лицензиатами архитектуры ARM, являются такие известные мировые производителя как AMD, Apple, Samsung, Qualcomm, Sony, HiSilicon и многие другие. Соответственно, такие современные процессоры как Snapdragon 865, Kirin 980, Samsung Exynos Octa 990 и Apple A12Z, разработаны на ARM-микропроцессоре. Самые известные производители, использующие в своих процессорах MIPS архитектуру, это Realtek, Broadcom, Atheros, ATI, Toshiba и российская компания «Т-Платформа», использующий процессорные ядра P5600 архитектуры MIPS32 Release 5 в процессоре Baikal-T1. Как мы можем увидеть, рынок RISC-подобных процессоров в массовом сегменте достаточно широкий, и можно найти решения отвечающее любым задач, но как обстоят дела в промышленном сегменте?
Особенности промышленных компьютеров RISC
Развитие RISC-подобных процессоров в промышленной отрасли отличается от массового рынка. В первую очередь это связано с не таким огромным спросом на устройства с данным типом процессора. Если у производителя есть возможности, он может реализовать в своем устройстве уже готовое процессорное ядро от стороннего разработчика и в дальнейшем просто оптимизировать под него программное обеспечение. Чаще всего так и происходит и самые распространённым для применения процессором в данном контексте является Cortex, являющийся процессором ARM архитектуры от разработчика ARM Holdings. Более сложный путь, иметь собственный процессор, развитие и разработка которого полностью зависят от самого производителя. Одним из таких производителей является компания DMP, которая выпускает процессоры собственной линейки под названием Vortex86. Процессоры серии Vortex86 являются процессорами так называемой «системой на кристалле» (от. System-on-a-Chip, SoC), т.е. один чип включающий в себя CPU, North Bridge и South Bridge.
Блок-диаграмма процессора Vortex86DX3.
На базе данного семейства процессоров подразделение производителя DMP, компания iCOP, разрабатывает и выпускает промышленное оборудование различного форм-фактора. У компании есть три основные линейки, каждая из которых включает различные варианты конфигураций и функционала для задач любой сложности.
Продукция ICOP Technology.
Так какие же основные преимущества у промышленных компьютеров на базе процессоров RISC? Перечислим их по пунктам:
- Цена. Стоимость промышленного вычислительного оборудования в основе которого лежит RISC-подобный процессор, всегда будет ниже по сравнению с аналогичным оборудованием, но на базе процессоров Intel или AMD. Основные доводы были проведены нами ранее. В этом случае нет зависимости массовый это сегмент или промышленный.
- Долгий уровень поддержки. Это означает то, что производитель RISC-подобного процессора не зависит от решений мировых корпораций и тенденций на массовом рынке. Производитель смотрит только на промышленный сегмент и может даже руководствоваться необходимыми рамками производства той или иной модели процессора, в условиях применения исключительно только в одном проекте. Да, в таком случае, это должен быть довольно крупный проект, но решение принимается индивидуально в процессе общения с конечным пользователем. Срок такой поддержки может достигать 15-20 лет.
- Поддержка работы в экстремально низких температурах. Это одно из главных преимуществ RISC-подобных процессоров в промышленности. За счет своей достаточной производительности, низкого тепловыделения и архитектуры, оборудование на базе RISС-подобных процессоров поддерживает и проще адаптируется к работе при низких минусовых температурах.
- Свобода разработки программного обеспечения с поддержкой производителя процессора. Если планируется использовать ОС на базе любого дистрибутива Linux, то адаптировать программное обеспечение под RISC-подобный процессор намного проще из-за простых наборов инструкций, выполнение которых происходит достаточно быстро. Дополним это преимущество и возможностью писать программы для Linux почти на любом языке программирования, начиная от Java и Python и заканчивая С++.
- Гибкая конфигурация и разработка решений под ключ. Можно сказать, это основный интерес производителей RISC-подобных процессоров, предлагать не стандартные решения, а уникальные и зачастую разработанные специально под какие-то специализированные нужды. Даже на базе, например какой-либо стандартной платы, в основе которой лежит процессор Vortex86, производитель готов создать устройство только с необходимыми заказчику функциями.
Особенности промышленных компьютеров RISC
С момента своего появления и до сегодняшних дней, эволюция процессоров RISC сделала гигантский скачок вперед и запас потенциала их дальнейшего развития еще очень и очень велик. С появления узкоспециализированных процессоров в рамках закрытых научных программ до базовой вычислительной основы миллионов устройств по всему миру, кажется, прошло совсем немного времени, но данный промежуток ярко показывает насколько это была гениальная инженерная мысль с последующим ее огромным влиянием на развитие всей IT-индустрии.
Собственная платформа. Часть 0.1 Теория. Немного о процессорах / Хабр
Здравствуй, мир! Сегодня у нас серия статьей для людей со средними знаниями о работе процессора в которой мы будем разбираться с процессорными архитектурами (у меня спелл чекер ругается на слово Архитектурами/Архитектур, надеюсь я пишу слово правильно), создавать собственную архитектуру процессора и многое другое.
Принимаются любые замечания!
Исторически сложилось, что существуют много процессоров и много архитектур. Но многие архитектуры имеют схожести. Специально для этого появились «Группы» архитектур типа RISC, CISC, MISC, OISC (URISC). Кроме того они могут иметь разные архитектуры адресации памяти (фон Неймана, Гарвард). У каждого процессора есть своя архитектура. Например большинство современных архитектур это RISC (ARM, MIPS, OpenRISC, RISC-V, AVR, PIC** и т.д.), но есть архитектуры которые выиграли просто за счет других факторов (Например удобство/цена/популярность/etc) Среди которых x86, x86-64 (Стоит отметить, что x86-64 и x86 в последних процессорах используют микрокод и внутри них стоит RISC ядро), M68K. В чем же их отличие?
RISC
Reduced Instruction Set Computer — Архитектура с уменьшенным временем выполнения инструкций (из расшифровка RISC можно подумать, что это уменьшенное количество инструкций, но это не так). Данное направления развилось в итоге после того, как оказалось, что большинство компиляторов того времени не использовали все инструкции и разработчики процессоров решили получить больше производительности использую Конвейеры. В целом RISC является золотой серединой между всеми архитектурами.
Яркие примеры данной архитектуры: ARM, MIPS, OpenRISC, RISC-V
TTA
Что такое TTA? ТТА это Архитектура на основе всего одной инструкции перемещения из одного адреса памяти в другую. Данный вариант усложняет работу компилятора зато дает большую производительность. У данной архитектуры есть единственный недостаток: Сильная зависимость от шины данных. Именно это и стало причиной ее меньшей популярности. Надо отметить что TTA является разновидностью OISC.
Яркие примеры: MOVE Project
OISC (URISC)?
One Instruction Set Computer — Архитектура с единственной инструкцией. Например SUBLEQ. Такие архитектуры часто имеют вид: Сделать действие и в зависимости от результата сделать прыжок или продолжить исполнение. Зачастую ее реализация достаточно простая, производительность маленькая, при этом снова ограничение шиной данных.
Яркие примеры: BitBitJump, ByteByteJump, SUBLEQ тысячи их!
CISC
CISC — Complex Instruction Set Computer — ее особенность в увеличенных количествах действий за инструкцию. Таким образом можно было теоретически увеличить производительность программ за счет увеличения сложности компилятора. Но по факту у CISC плохо были реализованы некоторые инструкции т.к. они редко использовались, и повышение производительности не было достигнуто. Особенностью этой группы является еще ОГРОМНАЯ Разница между архитектурами. И несмотря на названия были архитектуры с маленьким количеством инструкций.
Яркие примеры: x86, M68K
Архитектура фон Неймана
Особенностью таких архитектур была общая шина данных и инструкций. Большинство современных архитектур это программный фон Нейман, однако никто не запрещает делать аппаратный Гарвард. У данной архитектуры большим недостатком является большое зависимости производительности процессора от шины. (Что ограничивает общую производительность процессора).
Архитектура гарварда
Особенность этой архитектуры является отдельная шина данных и инструкций. Дает большую производительность чем фон Нейман за счет возможности за один такт использовать обе шины (читать из шины инструкций и одновременно записывать в шинну данных), но осложняет архитектуру и имеет некоторые ограничения. В основном используется в микроконтроллерах.
Конвейеры
Что такое конвейеры? Если сказать очень глупым языком это несколько параллельных действий за один такт. Это очень грубо, но при этом отображает суть. Конвейеры за счет усложнения архитектуры позволяют поднять производительность. Например конвейер позволяет прочитать инструкцию, исполнить предыдущую и записать в шину данных одновременно.
На картинке более понятно, не правда?
IF — получение инструкции,
ID — расшифровка инструкции,
EX — выполнение,
MEM — доступ к памяти,
WB — запись в регистр.
Вроде все просто? А вот и нет! Проблема в том что например прыжок (jmp/branch/etc) заставляют конвейер начать исполнение (получение след. инструкции) заново таким образом вызывая задержку в 2-4 такта перед исполнение следующей инструкции.
Расширение существующих архитектур
Достаточно популярной техникой является добавление в уже существующую архитектуру больше инструкций через расширения. Ярким примером является SSE под x86. Этим же грешит ARM и MIPS и практически все. Почему? Потому что нельзя создать унивирсальную архитектуру.
Другим вариантом является использование других архитектур для уменьшения размера инструкций.
Яркий пример: ARM со своим Thumb, MIPS с MIPS16.
В видеокартах часто встречается много ядер и из-за этой особенности появилась потребность в дополнительных решениях. Если конвейеры можно встретить даже в микроконтроллерах то решения используемых в GPU встречаются редко. Например Masked Execution (Встречается в инструкциях ARM, но не в Thumb-I/II). Еще есть другие особенность: это уклон в сторону Floating Number (Числа с плавающей запятой), Уменьшение производительности в противовес большего количества ядер и т.д.
Masked Execution
Данный режим отличается от классических тем, что инструкции исполняются последовательно без использования прыжков. В инструкции хранится некоторое количество информации о том при каких условия эта инструкция будет исполнена и если условие не соблюдено то инструкция пропускается.
Но Зачем?
Ответ прост! Что бы не нагружать шину инструкций. Например в видеокартах можно загрузить тысячи ядер одной инструкцией. А если бы использовалась система прыжков то пришлось бы для каждого ядра ждать инструкцию из медленной памяти. Кеш частично решает проблему, но все еще не решает проблему полностью.
Здесь мы будем описывать несколько техник используемых в центральный процессорах и микроконтроллерах.
Прерывания
Прерывания это техника при которой исполняемый в данный момент код приостанавливается для выполнения какой-то другой задачи при каких-то условиях. Например при доступе в несуществующий участок памяти вызывается HardFault или MemoryFault прерывания или исключения. Или например если таймер отсчитал до нуля. Это позволяет не бездействовать пока нужно ждать какое-то событие.
Какие недостатки? Вызов прерывания это несколько тактов простоя и несколько при возврате из прерывания. Так же несколько инструкций в начале кода будет занято инструкциями для Таблицы прерываний.
Exception (исключения)
Но кроме прерываний еще существуют исключений которые возникают например при деления на ноль. Зачастую его совмещают с прерываниями и системными вызовами, как например в MIPS. Исключения не всегда присутствуют в процессоре например как в AVR или младших PIC
Системные вызовы
Системные вызовы используется в Операционных системах для того, чтобы программы могли общаться с операционной системой например просить ОС прочитать файл. Очень похоже на прерывания. Аналогично исключениям не всегда присутствуют в процессоре
Здесь описываются методы запрета доступа приложений к аппаратуре напрямую.
Привилегированный режим
Это режим в котором стартует процессор. В таком режиме программа или ОС имеют полный доступ к памяти в обход MMU/MPU. Все программы запускаются в непривилегированном режиме во избежания прямого доступа к аппаратным подсистемам программ для этого не предназначенных. Например вредоносным программам. В Windows ее часто называют Ring-0, а в *nix — системным. Не стоит путать Привелигированный пользователь и Привилегированный режим ибо в руте вы все еще не можете иметь прямой доступ к аппаратуре (можно загрузить системный модуль который позволит это сделать, но об этом чуть позже 🙂
MPU и MMU
MPU и MMU используется в современных системах чтобы изолировать несколько приложений. НО если MMU позволяет «передвинуть» память то MPU позволяет только блокировать доступ к памяти/запуск кода в памяти.
PIC (PIE)
Что такое PIE? (PIC не использую для избежания путаницы с МК PIC). PIE это техника благодаря которой компилятор генерирует код который будет работать в любом месте в памяти. Эта техника в совмещении с MPU позволяет компилировать высокие языки программирования которые будут работать и с MPU.
Популярная техника SIMD используется для того, что бы за один такт выполнять несколько действий над несколькими регистрами. Иногда бывают в качестве дополнений к основной архитектуре, например, как в MIPS, ARM со своими NEON/VFP/etc, x86 со своим SSE2.
Это техника Используется для оптимизации кода, генерируемого компилятором, с помощью пересортировки инструкций, увеличивая производительность процессора. Это позволяет использовать конвейер на полную.
Что такое регистр статуса? Это регистр который хранит состояние процессора. Например находится ли процессор в привилегированном режиме, чем закончилась операция последнего сравнения.
Используется в связке с Masked Execution. Некоторые разработчики специально исключают регистр статуса ибо он может являться узким местом как поступили в MIPS.
В MIPS нет отдельной инструкции загрузки константы в память, но есть инструкция addi и ori которая позволяет в связке с нулевым регистром ($0) эмулировать работу загрузки константы в регистр. В других архитектурах она присутствует. Я затронул эту тему, потому что она пригодиться нам в статьях с практикой.
Идут множество споров насчет того сколько должно быть операндов в арифметических инструкциях. Например в MIPS используется вариант с 3-мя регистрами. 2 операнда, 1 регистр записи. С другой стороны, использование двух операндов позволяет сократить код за счет уменьшения размера инструкции. Пример совмещения является MIPS16 в MIPS и Thumb-I в ARM. В плане производительности они практически идентичны (Если исключать размер инструкции как фактор).
Порядок байт. Возможно вам знакомы Выражения Big-Endian и Little-Endian. Они описывают порядок байт в инструкциях/в регистрах/в памяти/etc. Здесь думаю все просто :). Есть процессоры которые совмещают режимы, как MIPS, или которые используют одну систему команд, но имеют разный порядок байт, например ARM.
Итак, что такое битность процессора? Многие считают, что это битность шины данных, но это не так. Почему? В ранние переоды микроконтроллеров и микропроцессоров шина могла быть, например, 4-х битной, но передавала пакетами по 8 бит. Для программы казалось, что это 8-и битный режим, но это была иллюзия, как и сейчас. Например, в ARM SoC-ах часто применяют 128-и битную шину данных или инструкций.
Что такое сопроцессоры? Сопроцессоры являются элементами процессора или внешней микросхемой. Они позволяют исполнять инструкции, которые слишком громоздки для основной части процессора. Как яркий пример, сопроцессоры в MIPS для деления и умножения. Или например 387 для 80386, который добавлял поддержку чисел с плавающей запятой. А в MIPS сопроцессоров было много и они выполняли свои роли: контролировали прерывания, исключения и системные вызовы. Часто сопроцессоры имеют собственные инструкции и на системах, где этих инструкций нет, (пример ARM) эмулируют ее через Trap-ы (ловушки?). Несмотря на костыльность и маленькую производительность, они часто являются единственным выбором в микроконтроллерах.
Атомартность операций обеспечивает потоко-независимое исполнение за счет инструкций, которые выполняют несколько действий за один псевдотакт.
Вариант другого решения атомарность переферии. Например для установки ножки в STM32 в высокое и низкое состояние используется разные регистры, что позволяет иметь атомарность на уровне переферии.
Вы, навярняка, слышали о L1, L2, L3 и регистрах. Если коротко, процессор анализирует часть кода, чтобы предугадать прыжки и доступ в память и зараннее просит кеш получить эти данные из памяти. Кеш зачастую бывает прозрачным для программы, но бывают и исключения из этого правила. Например, в программных ядрах в ПЛИС используется програмный кеш.
И вы кончено слышали о такой вещи, как Cache Miss или промах по кешу. Это операция которая не была предусмотрена процессорам или процессор не успел закешировать эту часть памяти. Что достаточно часто является проблемой замедления доступа к памяти. Промах проходит незаметно для программы, но не останутся незаметными просадки в производительности.Так же переключения контекстов например при прерываниях тоже заставляет страдать кеш ибо небольшой код сбивает конвейер и кеш для собственных нужд.
В современных процессорах часто используется техника теневых регистров. Они позволяют переключаться между прерываниями и пользовательским кодом практически без задержек связанных с сохранением регистров.
Стек? Я видел Стек в .NET и в Java! Что же, Вы частично правы. Стек существует, но он никогда не был апаратным в большинства процессорах. Например в MIPS его по просту нет. Спросите КАК ТАК ТО?! Ответ прост. Стек это просто доступ к памяти которую не нужно резервировать (очень грубое определение). Стек используется для вызова функций, передачи аргументов, сохранения регистров для того чтобы востановить их после выполнения функции и т.д.
Спросите тогда что такое куча (Heap)? Куча это память размером намного больше чем стек (Стек обычно ~1MB). В хипе храниться все глобальное. Например все указатели полученные с помощю Malloc указывают на часть куча. А указатели хранятся в стеке или в регистрах. С помощью инструкций загрузки данных относительно регистра можно ускорить работу стека и других доступов к памяти по типу стека, поскольку не нужно постоянно использовать операции PUSH/POP, INC/DEC или ADDI, SUBI (добавить константу), чтобы получить данные глубже по стеку, а можно просто использовать доступ относительно стека с отрицательным смещением.
Не буду описывать регистры слишком подробно. Это мы затронем в практической статье.
В x86 регистров достаточно мало. В MIPS используется увеличенное количество регистров, а именно 31 ($0 имеет значение всегда равное нулю). В процессоре университета Беркли использовались регистровые окна, которые жестки ограничивали вложенность функций, при этом имея лучшую производительность. В других же, таких как AVR, ограничили использование регистров. Для примера: три 16-битных можно трактовать как шесть восьмибитных, где первые 16ть недоступны при некоторых операциях. Я считаю, что лучший метод был выбран MIPS-ом. Это мое сугубо личное мнение.
Что такое выравнивание? Оставлю-ка я этот вопрос вам 🙂
Это конец первой главы нулевой части. Вся серия будет крутиться вокруг темы создания собственного процессора. Собственной операционной системы. Собственного ассемблера. Собственного компилятора и много чего другого.
Нулевые части будут посвящены теории. Я сомневаюсь что доведу всю серию до победного конца, но попытка не пытка! )
RISC-архитектура процессора
RISC-архитектура — компьютер с уменьшенным набором инструкций. Является типом микропроцессорной архитектуры, которая использует небольшой оптимизированный набор инструкций в отличие от предшестувующих типов архитектур с расширенным набором алгоритмических данных. Термин RISC был придуман Дэвидом Паттерсоном из проекта Berkeley RISC.
Определение
Компьютер с ограниченным набором команд — это устройство, чья архитектура набора инструкций (ISA) имеет набор атрибутов, который позволяет ему иметь более низкие циклы на инструкцию (CPI), чем сложная команда, установленная на компьютер (CISC). Общая концепция RISC — это концепция компьютера, который содержит небольшой набор простых и общих алгоритмов, но не расширенный набор сложных и специализированных последовательностей. Другим распространенным признаком RISC является архитектура загрузки/хранения, где доступ к памяти осуществляется только с помощью определенных инструкций.
История и развитие
Первые проекты RISC пришли из IBM, Stanford и UC-Berkeley в 70-х и 80-х гг. ХХ века. IBM 801, Stanford MIPS и Berkeley RISC I и II были разработаны с аналогичной философией, которая стала известна как RISC. Некоторые особенности дизайна были характерны для большинства RISC-процессоров:
- Время выполнения одного цикла: процессоры имеют CPI — время на выполнение инструкции одного цикла. Это связано с оптимизацией каждой команды на CPU.
- Конвейерная обработка: технический алгоритм, который позволяет одновременное выполнение частей или этапов инструкций для более эффективного обработки инструкций.
- Большой перечень регистров: философия дизайна RISC обычно включает большее количество регистров для предотвращения чрезмерного количества взаимодействий с памятью.
Хотя ряд компьютеров 1960-х и 70-х годов являлись предшествующими моделями RISC, современная концепция относится к 1980-м годам. В частности, два проекта в Стэнфорде и Калифорнийском университете масштабируют эту концептуальную идею. Стэнфордский MIPS станет коммерчески успешной моделью, в то время как университет в Беркли дал название всей концепции, коммерциализированной как SPARC. Другим успехом этой эпохи были усилия IBM, которые в конечном итоге привели к Power Architecture. По мере развития этих направлений в конце 1980-х гг., и особенно в начале 1990-х гг., процветало множество подобных проектов, представляющих собой основную силу на рынке рабочих станций Unix, а также встроенные процессоры в лазерных принтерах, маршрутизаторах и аналогичных продуктах.
Плюсы и минусы архитектуры RISC
Простейший способ изучить преимущества и уязвимости архитектуры RISC — это сопоставить ее с предшествующей архитектурой CISC. Основная цель архитектуры CISC — завершить задачу за меньшее количество линий сборки. Это достигается за счет создания процессорного оборудования, способного понимать и выполнять ряд операций. Для этой конкретной задачи процессор CISC выпускается с конкретной инструкцией (MULT). При выполнении эта команда загружает два значения в отдельные регистры, умножает операнды в исполнительном модуле и затем сохраняет продукт в соответствующем регистре. Таким образом, вся задача умножения двух чисел может быть завершена одной инструкцией: MULT 2: 3, 5: 2. CISC и RISC-архитектура — предшествующее и последующее архитектурное решение.
MULT — это то, что известно как «сложная инструкция». Команда работает непосредственно в банках памяти компьютера и не требует, чтобы программист явно вызывал любые функции загрузки или сохранения. Она очень похожа на команду на языке более высокого уровня. Например, если мы допустим, что a представляет значение 2:3, а b представляет значение 5:2, то эта команда идентична выражению C a = a * b.
Одно из основных преимуществ этой системы заключается в том, что компилятор должен выполнить минимум работы, чтобы перевести формулировку языка высокого уровня в сборку. Поскольку длина кода относительно короткая, для хранения инструкций требуется очень небольшое ОЗУ. При сравнительном анализе CISC и RISC-архитектуры процессоров акцент ставится на реализации сложных инструкций непосредственно в аппаратном обеспечении.
Подход RISC
Процессоры RISC используют только элементарные инструкции, которые выполняются за один такт. Таким образом, описанная выше команда MULT может быть разделена на три отдельные команды: LOAD, которая перемещает данные из банка памяти в регистр PROD, который находит произведение двух операндов, расположенных внутри регистров, и STORE, который перемещает данные из регистра в банки памяти. Чтобы выполнить точный ряд шагов, описанных в подходе CISC, программисту необходимо будет закодировать четыре строки сборки:
LOAD A, 2:3.
LOAD B, 5:2.
PROD A, B.
STORE 2:3, А.
Изначально это может показаться гораздо менее эффективным способом завершения операции, поскольку существует больше строк кода и для хранения инструкций уровня сборки требуется больше ОЗУ. Компилятор также должен выполнить больше работы, чтобы преобразовать формулировку языка высокого уровня в код этой формы.
Сравнение CISC и RISC
Ниже представлены сравнительные данные CISC и RISC-архитектуры:
CISC:
- Акцент на аппаратном обеспечении.
- Включает многочасовые сложные инструкции.
- Небольшие размеры кода, высокие циклы в секунду.
- Транзисторы, используемые для хранения сложных инструкций.
RISC:
- Акцент на программном обеспечении.
- Сокращенная инструкция, не требующая большого количества времени.
- Низкие циклы в секунду, большие размеры кода.
- Тратит больше транзисторов на регистрах памяти.
Стратегия RISC вносит некоторые очень важные преимущества. Поскольку каждая команда требует выполнения только одного такта, вся программа будет выполняться примерно в такое же количество времени, что и многоцилиндровая команда MULT. Эти «сокращенные инструкции» RISC требуют меньше транзисторов аппаратного пространства, чем сложные инструкции, оставляя больше места для общих регистров. Поскольку все инструкции выполняются в единое время (например, один такт), возможна конвейерная обработка.
Характеристика процесса
Разделение инструкций LOAD и STORE фактически уменьшает объем работы, которую должен выполнить компьютер. После выполнения команды MULT в стиле CISC процессор автоматически стирает регистры. Если один из операндов необходимо использовать для другого вычисления, процессор должен перезагрузить данные из банка памяти в регистр. В RISC операнд останется в регистре, пока на нем не будет загружено другое значение.
Подход CISC пытается минимизировать количество инструкций для каждой программы, жертвуя количеством циклов на инструкцию. RISC же, наоборот, уменьшает количество циклов за счет инструкций для каждой программы.
Сложности коммерцеской реализации
Несмотря на преимущества обработки на основе RISC, прошли десятилетия прежде, чем чипы RISK были коммерчески востребованы. Во многом это было связано с отсутствием поддержки программного обеспечения.
Хотя линейка Power Macintosh от Apple, в которой использовались чипы на основе RISC и Windows NT, совместима с RISC, Windows 3.1 и Windows 95 были разработаны с учетом процессоров CISC. Многие компании не желали рисковать появляющейся технологией RISC. Без коммерческого интереса разработчики процессоров не смогли изготовить чипы RISC в достаточно больших объемах, чтобы сделать их цену конкурентоспособной.
Еще одним серьезным препятствием стало присутствие Intel. Несмотря на то, что их чипы CISC стали все более громоздкими и сложными в разработке, Intel обладала ресурсами для разработки мощных процессоров. Хотя чипы RISC могли превзойти усилия Intel в определенных областях, различия не были достаточно велики, чтобы убедить покупателей менять технологии.
Общее преимущество RISC
Сегодня Intel x86 является единственным чипом, который сохраняет архитектуру CISC. Это связано прежде всего с продвижением в других областях компьютерной техники. Цена ОЗУ резко снизилась. В 1977 году 1 МБ DRAM стоил около 5000 долларов. К 1994 году такой же объем памяти стоит всего 6 долларов США (с учетом инфляции). Технология компилятора также стала более сложной, так что использование RISC RAM и акцент на программное обеспечение стали идеальными.
Философия набора инструкций
Ошибочным пониманием определения RISK является идея того, что процедуры устраняются, что приводит к сокращенному набору алгоритмов. На протяжении многих лет процедуры RISC увеличивались, и в настоящее время многие из них имеют более широкий набор функций, чем CPU CISC.
Под термином «уменьшенный набор процедур» подразумевается описание того факта, что объем работы, выполняемый каждой инструкцией, сокращается (не более одного цикла памяти) сравнительно с усложненными процедурами CISC, которые требуют десятки циклов для выполнения одной команды. RISC-архитектура обычно имеет отдельные алгоритмы ввода-вывода и работы с данными.
Формат инструкции
Большинство архитектур RISC имеют инструкции с фиксированной длиной (обычно 32 бита) и простое кодирование, что значительно упрощает выборку, декодирование и выдачу логики. Одним из недостатков 32-разрядных инструкций является снижение плотности кода, что является неблагоприятным фактором для встроенных вычислений на рабочих станциях и серверах. Архитектуры RISC изначально были предназначены для обслуживания. Для решения этой проблемы несколько архитектур, таких как ARM, Power ISA, MIPS, RISC-V и Adipteva Epiphany, имеют необязательный короткий сокращенный формат инструкции или функцию сжатия команд. SH5 также следует этой схеме, хотя и развился в обратном направлении, добавив более длинные мультимедийные инструкции к оригинальной 16-битной кодировке.
Использование оборудования
Для любого заданного уровня общей производительности микросхема RISC, как правило, имеет гораздо меньше транзисторов, предназначенных для основной логики, которая первоначально позволяла дизайнерам увеличивать размер регистров и внутренний параллелизм.
Другие функции, которые обычно встречаются в архитектурах RISC:
- Средняя производительность процессора приближается к одной инструкции за цикл.
- Единый формат инструкции — используется одно слово с кодом операции в одних и тех же позициях для более простого декодирования.
- Все регистры общего назначения могут использоваться в качестве источника/назначения во всех инструкциях, упрощая разработку компилятора (регистры с плавающей запятой часто сохраняются отдельно).
- Простые режимы со сложной адресацией, выполняемые последовательностями команд.
- Несколько типов данных в аппаратном обеспечении (например, байтовая строка или BCD).
В RISC-конструкциях также представлена модель памяти Гарварда, где команды и данные концептуально разделены. Это означает, что изменение памяти, в которой хранится код, может не повлиять на инструкции, выполняемые процессором (поскольку ЦП имеет отдельный кэш команд и данных), до тех пор, пока не будет выдана специальная инструкция синхронизации. С другой стороны, это позволяет одновременно обращаться к кэшам, что часто повышает производительность.
Особенности RISC-архитектуры
На начальном этапе развития компьютерной индустрии программирование проводилось на языке ассемблера или машинного кода, что поощряло использование мощных и простых в использовании инструкций. Поэтому разработчики ЦП пытались проектировать алгоритмы, способные выполнять как можно большую работу. С появлением языков более высокого уровня архитекторы начали создавать специальные инструкции для непосредственного внедрения определенных центральных механизмов. Вторая общая цель заключалась в том, чтобы обеспечить все возможные режимы адресации для каждого алгоритма, известного как ортогональность, для облегчения реализации компилятора.
Отношение к тому времени заключалось в том, что дизайн аппаратного обеспечения был более зрелым, чем дизайн компилятора, поэтому сам по себе также является причиной внедрения частей функциональности в аппаратном или микрокоде, а не только в ограниченном памятью компиляторе (или в его сгенерированном коде). После появления RISC этот подход стал известен как сложные вычисления набора команд, или CISC.
У процессоров также было относительно мало регистров по нескольким причинам:
- Большое количество регистров подразумевает более длительное сохранение и восстановление содержимого в стеке машины и требует большого количества битов команд в качестве спецификаторов, что означает менее плотный код.
- Регистры CPU стоят дороже, чем внешние ячейки памяти.
- Ограниченность печатных плат или интегрированных микросхем.
Практическое применение
RISC-архитектура процессора теперь используются на большом спектре платформ: от смартфонов и планшетных ПК до некоторых из самых высокопродуктивных суперкомпьютеров, таких как компьютер K (лидер списка топ-500 в 2011 г.).
К началу XXI века большинство низкопрофильных и мобильных систем основывались на архитектуре RISC. Примеры:
- Архитектура ARM доминирует на рынке для маломощных и недорогих встроенных систем (200-1800 МГц в 2014 году). Она применяется в ряде большинства Android-систем, Apple iPhone и iPad, Microsoft Windows Phone (бывшая Windows Mobile), устройства RIM (topic.risc.архитектура), Nintendo Game Boy Advance, DS/3DS и Switch.
- Линия MIPS (в какой-то момент используется во многих компьютерах SGI ), а теперь — в PlayStation, PlayStation 2, Nintendo 64 (ipb.risc.архитектура), игровых консолях PlayStation Portable и шлюзах для жилых помещений, таких как Linksys WRT54G .
- Hitachi SuperH, использующийся в Sega Super 32X, Saturn и Dreamcast (viewtopic.php.risc.архитектура), теперь разработан и продан Renesas как Sh5.
- Atmel AVR используется в разных продуктовых линейках: от портативных контроллеров Xbox до автомобилей BMW .
- RISC-V (vbulletin.risc.архитектура), пятый Berkeley RISC ISA с открытым исходным кодом, с 32-разрядным адресным пространством, небольшим ядром целочисленного набора команд, экспериментальной «сжатой» ISA для плотности кода и предназначенной для стандартных и специальных расширений.
- Рабочие станции, серверы и суперкомпьютеры.
- MIPS (powered.by.smf.risc.архитектура), Silicon Graphics (в 2006 году прекратила создание систем на основе MIPS).
- SPARC, Oracle (ранее Sun Microsystems ) и Fujitsu (phorum.risc.архитектура).
- Архитектура IBM Power Architecture, применяемая в большинстве суперкомпьютеров IBM, серверах усредненного уровня и терминальных станциях.
- PA-RISC Hewlett-Packard (phpbb.risc.архитектура), также именуемый как HP-PA (прекращен в конце 2008 года).
- Alpha, используется в одноплатных компьютерах, рабочих станциях, серверах и суперкомпьютерах от Digital Equipment Corporation, Compaq и HP (прекращено с 2007 года).
- RISC-V (powered.by.phpbb.risc.архитектура), пятый Berkeley RISC ISA, с открытым исходным кодом, с 64 или 128-битными адресными пространствами и целым ядром, расширенным с плавающей точкой, атомизацией и векторной обработкой, и разработанный для расширения с инструкциями для сетей, ввода-вывода, обработки данных. 64-битный суперскалярный дизайн Rocket доступен для скачивания.
Сравнение с другими архитектурами
Некоторые процессоры были специально разработаны с очень небольшим набором инструкций, но эти конструкции значительно отличаются от традиционных RISC-архитектур, поэтому им были предоставлены другие данные, такие как минимальный набор команд (MISC) или транспортная инициированная архитектура (TTA).
Архитектуры RISC традиционно имели мало успехов на рынке настольных ПК и товарных серверов, где платформы на базе x86 остаются доминирующей архитектурой процессора. Однако это может измениться, поскольку процессоры на базе архитектуры ARM разрабатываются для систем с более высокой производительностью. Производители, включая Cavium, AMD и Qualcomm, выпустили серверные процессоры на базе архитектуры ARM. ARM также сотрудничала с Cray в 2017 году, чтобы создать суперкомпьютер на базе архитектуры ARM. Компания-лидер компьютерной индустрии Microsoft объявила, что в рамках партнерства с Qualcomm в 2017 году планируется поддержка ПК-версии Windows 10 на устройствах на базе Qualcomm Snapdragon. Эти устройства будут поддерживать программное обеспечение Win32 на базе x86 с помощью эмулятора процессора x86.
Тем не менее помимо настольной арены архитектура ARM RISC широко используется в смартфонах, планшетах и многих формах встроенного устройства. Также Intel Pentium Pro (P6) использует внутреннее RISC-процессорное ядро для своих процессоров.
В то время как начальные разработки RISC-архитектуры процессора значительно отличались от инновационных проектов CISC, к 2000 году самые высокопроизводительные процессоры в линейке RISC почти не отличаются от самых высокопроизводительных процессоров в линии CISC.
архитектура RISC и развитие индустрии в 1990-е годы — Ferra.ru
Источник изображения
В 1996 году было представлено следующее поколение процессоров DEC — Alpha 21264 (EV6). Чип получил несколько важных изменений по сравнению с предшествующими моделями. Например, он поддерживал внеочередное исполнение инструкций, что повлекло за собой полную реорганизацию ядра. Целочисленные блоки и блоки загрузки/сохранения были объединены в единый модуль Ebox, а блоки вычислений с плавающей запятой выделены в модуль Fbox. Помимо самих блоков, эти юниты содержали еще и файлы регистров. Структура кэш-памяти опять стала двухуровневой — она пришла на смену трехуровневой организации кэша в Alpha 21164. Кэш первого уровня сохранил разделение на память для инструкций и для данных. Объем каждой части составлял 64 Кбайт. Что касается кэш-памяти второго уровня, то ее объем мог составлять от 1 Мбайт до 16 Мбайт. Плюс процессор получил поддержку предсказания ветвлений. С течением времени выпускались все новые и новые версии процессоров Alpha 21264, в которых, прежде всего, наращивалась тактовая частота. Последней модификацией стал Alpha 21264E, который работал на частоте 1250 МГц.
Увы, но линейка процессоров Alpha 21264 стала последней в истории «независимой» DEC. В начале 1998 года DEC признали банкротом, и она была поглощена компанией Compaq.
Архитектура Intel P5
Процессоры с архитектурой RISC в своем большинстве заняли свою специализированную нишу, однако в настольных системах все равно продолжали использоваться кристаллы с архитектурой x86. Их развитие продолжалось, пусть и с некоторыми изменениями.
Несмотря на то, что Intel вышла на рынок RISC-процессоров со своими решениями i860 и i960, основную ставку в компании все же делали на x86-кристаллы. Следующим поколением «камней» стали всем известные Pentium на базе архитектуры P5, выпущенные в 1993 году.
Была проделана большая работа. Во-первых, P5 стала суперскалярной. Архитектура работала с помощью двух конвейеров, каждый из которых мог выполнять две операции за такт. Во-вторых, шина данных стала 64-битной, что позволило передавать вдвое больший объем данных за цикл. В-третьих, кэш-память данных и инструкций была разделена на два отдельных блока объемом 8 Кбайт каждый. Помимо этого, в процессор был добавлен блок предсказания ветвлений, а модуль вычислений с плавающей запятой стал более производительным.
Первые процессоры линейки Pentium работали на частотах 60 МГц или 66 МГц. При этом для их работы требовалось напряжение 5 В, поэтому они сильно грелись. Также первые «пни» прославились неправильной работой блока вычислений с плавающей запятой, который в некоторых случаях при выполнении деления чисел выдавал неверный результат. Поэтому вскоре Intel запустила в продажу процессоры с исправленной архитектурой P54C.
Недостатки RISC-V / Хабр
Изначально я написала этот документ несколько лет назад, будучи инженером по проверке ядра исполнения команд (execution core verification engineer) в ARM. Конечно, на моё мнение повлияла углублённая работа с исполнительными ядрами разных процессоров. Так что делайте на это скидку, пожалуйста: может, я слишком категорична.
Однако я по-прежнему считаю, что создатели RISC-V могли справиться гораздо лучше. С другой стороны, если бы я сегодня проектировала 32-или 64-разрядный процессор, то, вероятно, реализовала бы именно такую архитектуру, чтобы воспользоваться существующим инструментарием.
Статья изначально описывала набор команд RISC-V 2.0. Для версии 2.2 в ней сделаны некоторые обновления.
Набор команд RISC-V доведён до абсолютного минимума. Большое внимание уделяется минимизации числа инструкций, нормализации кодирования и т. д. Это стремление к минимализму привело к ложным ортогональностям (таким как повторное использование одной и той же инструкции для переходов, вызовов и возвратов) и обязательной многословности, что раздувает и размер, и количество инструкций.
Например, вот код C:
int readidx(int *p, size_t idx)
{ return p[idx]; }
Это простой случай индексирования массива, очень распространённая операция. Так выглядит компиляция для x86_64:
mov eax, [rdi+rsi*4]
ret
или ARM:
ldr r0, [r0, r1, lsl #2]
bx lr // return
Однако для RISC-V необходим такой код:
slli a1, a1, 2
add a0, a1, a1
lw a0, a0, 0
jalr r0, r1, 0 // return
Симплификация RISC-V упрощает декодер (т. е. фронтенд CPU) за счёт выполнения большего количества инструкций. Но масштабирование ширины конвейера — сложная проблема, в то время как декодирование слегка (или сильно) нерегулярных инструкций хорошо реализуется (основная трудность возникает, когда трудно определить длину инструкции: это особенно проявляется в наборе команд x86 с многочисленными префиксами).
Упрощение набора инструкций не следует доводить до предела. Сложение регистра и регистра со сдвигом регистровой памяти — несложная и очень распространённая инструкция в программах, а процессору очень легко её эффективно реализовать. Если процессор не способен реализовать инструкцию напрямую, то может относительно легко разбить её на составляющие; это гораздо более простая проблема, чем слияние последовательностей простых операций.
Мы должны отличать «сложные» специфические инструкции CISC-процессоров — усложнённые, редко используемые и малооэффективные инструкции — от «функциональных» инструкций, общих для процессоров CISC и RISC, которые объединяют небольшую последовательность операций. Последние используются часто и с высокой производительностью.
- Почти неограниченная расширяемость. Хотя это и является целью RISC-V, но это создаёт фрагментированную, несовместимую экосистему, которой придётся управлять с особой осторожностью
- Одна и та же инструкция (
JALR
) используется и для вызовов, и для возвратов и для косвенно-регистровых переходов (register-indirect branches), где требуется дополнительное декодирование для предсказания ветвей- Вызов:
Rd
=R1
- Возврат:
Rd
=R0
,Rs
=R1
- Косвенный переход:
Rd
=R0
,Rs
≠R1
- (Странный переход:
Rd
≠R0
,Rd
≠R1
)
- Вызов:
- Кодирование с переменной длиной поля записи не самосинхронизируется (такое часто встречается — например, аналогичная проблема у x86 и Thumb-2, — но это вызывает различные проблемы как с реализацией, так и с безопасностью, например, возвратно-ориентированное программирование, то есть атаки ROP)
- RV64I требует расширения знака для всех 32-разрядных значений. Это приводит к тому, что верхнюю половину 64-битных регистров становится невозможно использовать для хранения промежуточных результатов, что ведёт к ненужному специальному размещению верхней половины регистров. Более оптимально использовать расширение нулями (поскольку оно уменьшает число переключений и обычно его можно оптимизировать путём отслеживания «нулевого» бита, когда верхняя половина, как известно, равна нулю)
- Умножение опционально. Хотя быстрые блоки перемножения могут занимать довольно существенную площадь на крошечных кристаллах, но всегда можно использовать чуть более медленные схемы, которые активно используют существующий ALU для многократных циклов умножения.
- У
LR
/SC
строгое требование к поступательному продвижению для ограниченного подмножества применений. Хотя это ограничение довольно жёсткое, оно потенциально создаёт некоторые проблемы для небольших реализаций (особенно без кэша)- Это кажется заменой инструкции CAS, см. комментарий ниже
- Биты закрепления в памяти (sticky bits) FP и режим округления находятся в одном регистре. Это требует сериализации канала FP, если выполняется операция RMW для изменения режима округления
- Инструкции
FP
кодируются для 32, 64 и 128-битной точности, но не 16-битной (что значительно чаще встречается в аппаратном обеспечении, чем 128 бит)- Это можно легко исправить: код размерности
0b10
свободен - Обновление: в версии 2.2 появился десятичный заполнитель, но нет заполнителя половинной точности. Уму непостижимо.
- Это можно легко исправить: код размерности
- То, как значения FP представлены в файле регистра FP, не определено, но наблюдаемо (через load/store)
- Авторы эмуляторов вас возненавидят
- Миграция виртуальных машин может стать невозможной
- Обновление: версия 2.2 требует более широких значений NaN-boxing
- Отсутствуют коды условий, а вместо них используются инструкции compare-and-branch. Это не проблема сама по себе, но последствия неприятные:
- Уменьшение пространства кодирования в условных переходах из-за необходимости кодирования одного или двух спецификаторов регистров
- Нет условного выбора (полезно для очень непредсказуемых переходов)
- Нет сложения с переносом / вычитания с переносом или заимствованием
- (Обратите внимание, что это всё равно лучше, чем наборы команд, которые пишут флаги в регистр общего назначения, а затем переходят на полученные флаги)
- Кажется, что высокоточные счётчики (аппаратных циклов) требуются в непривилегированной ISA. На практике, предоставление их приложениям является отличным вектором для атак по сторонним каналам
- Умножение и деление являются частью одного и того же расширения, и кажется, что если одно реализовано, то и другое тоже должно быть. Умножение значительно проще, чем деление, и распространено на большинстве процессоров, а деление нет
- Нет атомарных инструкций в базовой архитектуре набора команд. Всё более распространёнными становятся многоядерные микроконтроллеры, так что атомарные инструкции типа LL/SC обходятся недорого (для минимальной реализации в рамках единого [многоядерного] процессора нужен всего 1 бит состояния процессора)
LR
/SC
находятся в том же расширении, что и более сложные атомарные инструкции, что ограничивает гибкость для небольших реализаций- Общие атомарные инструкции (не
LR
/SC
) не включают примитивCAS
- Смысл в том, чтобы избежать необходимости в инструкции, которая читает пять регистров (
Addr
,CmpHi:CmpLo
,SwapHi:SwapLo
), но это, вероятно, наложит меньше накладных расходов на реализацию, чем гарантированное продвижение вперёдLR
/SC
, которое предоставляется в качестве замены
- Смысл в том, чтобы избежать необходимости в инструкции, которая читает пять регистров (
- Предлагаются атомарные инструкции, которые работают на 32-разрядных и 64-разрядных величинах, но не 8-ми или 16-битных
- Для RV32I нет способа передать значение DP FP между целым числом и регистровым файлом FP, кроме как через память, то есть из 32-битных целочисленных регистров нельзя составить 64-битное число двойной точности с плавающей точкой, придётся сначала записать промежуточное значение в память и загрузить его в регистровый файл оттуда
- Например, у 32-битной инструкция
ADD
в RV32I и 64-битнойADD
в RVI64 одинаковые кодировки, а в RVI64 добавляется ещё и другая кодировкаADD.W
. Это ненужное усложнение для процессора, который реализует обе инструкции — было бы предпочтительнее вместо этого добавить новую 64-битную кодировку. - Нет инструкции
MOV
. Мнемокод командыMV
транслируется ассемблером в инструкциюMV rD, rS
—>ADDI rD, rS, 0
. Высокопроизводительные процессоры обычно и так оптимизируют инструкцииMOV
, широко задействуя при этом переупорядочивание команд. В качестве канонической формы командыMV
в RISC-V была выбрана инструкция с непосредственным 12-битовым операндом.- При отсутствии
MOV
инструкцияADD rD, rS, r0
фактически становится предпочтительнее каноническойMOV
, поскольку её проще декодировать, а операции с нулевым регисторм (r0) в CPU обычно оптимизированы
- При отсутствии
JAL
тратит 5 бит на кодирование регистра связи, который всегда равенR1
(илиR0
для переходов)- Это означает, что RV32I использует 21-битные смещения ветвей (branch displacement). Это недостаточно для больших приложений — например, веб-браузеров — без использования нескольких последовательностей команд и/или «островов ветвей» (branch islands)
- Это ухудшение по сравнению с версией 1.0 архитектуры команд!
- Несмотря на большие усилия на равномерное кодирование, инструкции load/store кодируются по-разному (меняются регистр и непосредственные поля)
- Видимо, ортогональность кодирования выходного регистра была предпочтительнее ортогональности кодирования двух сильно связанных инструкций. Этот выбор кажется немного странным, учитывая, что генерация адресов более критична по времени
- Нет команд загрузки из памяти со смещениями регистров (
Rbase
+Roffset
) или индексов (Rbase
+Rindex
<<Scale
). FENCE.I
подразумевает полную синхронизацию кэша инструкций со всеми предыдущими хранилищами, с ограждением (fenced) или без него. Реализациям нужно или очищать весь I$ на ограждении, или выискивать D$ и накопительный буфер (store buffer)- В RV32I чтение 64-битных счётчиков требует двукратного чтения верхней половины, сравнения и ветвления в случае переноса между нижней и верхней половиной во время операции чтения
- Обычно 32-разрядные ISA включают в себя инструкцию «чтение пары специальных регистров», чтобы избежать этой проблемы
- Нет архитектурно определённого пространства hint-кодирования, так чтобы инструкции из этого пространства не вызывали ошибку на старых процессорах (обрабатывались как
NOP
), но что-то делали на самых современных CPU- Типичные примеры чистых «хинтов NOP» — такие вещи, как spinlock yield
- На новых процессорах также реализованы более сложные хинты (с видимыми побочными эффектами на новых процессорах; например, инструкции проверки границ x86 кодируются в hint-пространстве, так что бинарники остаются обратно совместимыми)
RISC (процессоры) — это… Что такое RISC (процессоры)?
Характерные особенности RISC-процессоров:
- Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.
- Специализированные команды для операций с памятью — чтения или записи. Операции вида «прочитать-изменить-записать» отсутствуют. Любые операции «изменить» выполняются только над содержимым регистров (т.н. load-and-store архитектура).
- Большое количество регистров общего назначения (32 и более).
- Отсутствие поддержки операций вида «изменить» над укороченными типами данных — байт, 16битное слово. Так, например, система команд DEC Alpha содержала только операции над 64битными словами, и требовала разработки и последующего вызова процедур для выполнения операций над байтами, 16- и 32-битными словами.
- Отсутствие микропрограмм внутри самого процессора. То, что в CISC процессоре исполняется микропрограммами, в RISC процессоре исполняется как обыкновенный (хотя и помещенный в специальное хранилище) машинный код, не отличающийся принципиально от кода ядра ОС и приложений. Так, например, обработка отказов страниц в DEC Alpha и интерпретация таблиц страниц содержалась в так называемом PALCode (Privileged Architecture Library), помещенном в ПЗУ. Заменой PALCode можно было превратить процессор Alpha из 64битного в 32битный, а также изменить порядок байт в слове и формат входов таблиц страниц виртуальной памяти.
Архитектуры, обычно обсуждаемые в связи с RISC:
- Суперскалярные архитектуры (первоначально Sun SPARC, начиная с Pentium использованы в семействе x86). Распараллеливание исполнения команд между несколькими устройствами исполнения, причем решение о параллельном исполнении двух или более команд принимается аппаратурой процессора на этапе исполнения. Эффективное использование такой архитектуры требует специальной оптимизации машинного кода в компиляторе для генерации пар независимых (результат одной не является входом другой) команд.
- Архитектуры PA-RISC. VLIW-процессором в его классическом виде является
Иные архитектурные решения, типичные для RISC:
- Спекулятивное исполнение. При встрече с командой условного перехода процессор исполняет (или по крайней мере читает в кэш инструкций) сразу обе ветви, до тех пор, пока не окончится вычисление управляющего выражения перехода. Позволяет отказаться от простоев конвейера при условных переходах.
- Переименование регистров. Каждый регистр процессора на самом деле представляет собой несколько параллельных регистров, хранящих несколько версий значения. Используется для реализации спекулятивного исполнения.
Как оказалось в начале 90х годов, RISC-архитектуры позволяют получить большую производительность, чем CISC, за счет использования суперскалярного и VLIW подхода, а также за счет возможности серьезного повышения тактовой частоты DEC Alpha и за счет упрощения кристалла с высвобождением площади под кэш-память, могущую достигнуть огромных размеров. Также RISC-архитектуры позволили сильно снизить энергопотребление процессора за счет уменьшения числа транзисторов (ARM).
Первое время RISC-архитектуры с трудом принимались рынком из-за отсутствие программного обеспечения для них. Эта проблема была быстро решена переносом SunOS) на RISC архитектуры.
В настоящее время многие архитектуры процессоров являются RISC-подобными, к примеру, DEC Alpha, AVR, MIPS, PowerPC. Наиболее широко используемые в настольных компьютерах процессоры архитектуры CISC-процессорами, однако новые процессоры, начиная с Intel486DX, являются CISC-инструкции процессоров
С отказом компаний Apple и Sun от использования серии CISC-процессоров Motorola 68xxx (в пользу PowerPC у Apple и в пользу SPARC у Sun), приведшем к фактическому прекращению производства серии, а также с переводом внутренней архитектуры серии x86 на суперскалярную RISC-архитектуру, подавляющее большинство существующих процессоров используют архитектуру RISC. Позже Apple перешла на CISC. Также такие архитектуры как MIPS и DEC Alpha прекратили своё существование.[1][2]
См. также
Ссылки
RISC — это… Что такое RISC?
RISC (англ. restricted (reduced) instruction set computer[1][2] — компьютер с сокращённым набором команд) — архитектура процессора, в которой быстродействие увеличивается за счёт упрощения инструкций, чтобы их декодирование было более простым, а время выполнения — короче. Первые RISC-процессоры даже не имели инструкций умножения и деления. Это также облегчает повышение тактовой частоты и делает более эффективной суперскалярность (распараллеливание инструкций между несколькими исполнительными блоками).
Наборы инструкций в более ранних архитектурах для облегчения ручного написания программ на языках ассемблеров или прямо в машинных кодах, а также для упрощения реализации компиляторов, выполняли как можно больше работы. Нередко в наборы включались инструкции для прямой поддержки конструкций языков высокого уровня. Другая особенность этих наборов — большинство инструкций, как правило, допускали все возможные методы адресации (т. н. «ортогональность системы команд (англ.)») — к примеру, и операнды, и результат в арифметических операциях доступны не только в регистрах, но и через непосредственную адресацию, и прямо в памяти. Позднее такие архитектуры были названы CISC (англ. Complex instruction set computer).
Однако многие компиляторы не задействовали все возможности таких наборов инструкций, а на сложные методы адресации уходит много времени из-за дополнительных обращений к медленной памяти. Было показано, что такие функции лучше исполнять последовательностью более простых инструкций, если при этом процессор упрощается и в нём остаётся место для большего числа регистров, за счёт которых можно сократить количество обращений к памяти. В первых архитектурах, причисляемых к RISC, большинство инструкций для упрощения декодирования имеют одинаковую длину и похожую структуру, арифметические операции работают только с регистрами, а работа с памятью идёт через отдельные инструкции загрузки (load) и сохранения (store). Эти свойства и позволили лучше сбалансировать этапы конвейеризации, сделав конвейеры в RISC значительно более эффективными и позволив поднять тактовую частоту.
Философия RISC
В середине 1970-х разные исследователи (в частности, из IBM) показали, что большинство комбинаций инструкций и ортогональных методов адресации не использовались в большинстве программ, порождаемых компиляторами того времени. Также было обнаружено, что в некоторых архитектурах с микрокодной реализацией сложные операции зачастую были медленнее последовательности более простых операций, выполняющих те же действия. Это было вызвано, в частности, тем, что многие архитектуры разрабатывались в спешке и хорошо оптимизировался микрокод только тех инструкций, которые использовались чаще.[3]
Поскольку многие реальные программы тратят большинство своего времени на выполнение простых операций, многие исследователи решили сфокусироваться на том, чтобы сделать эти операции максимально быстрыми. Тактовая частота процессора ограничена временем, которое процессор тратит на выполнение наиболее медленных шагов в процессе обработки любой инструкции; уменьшение длительности таких шагов даёт общее повышение частоты, а также зачастую ускоряет выполнение и других инструкций за счёт более эффективной конвейеризации.[4] Фокусирование на простых инструкциях и ведёт к архитектуре RISC, цель которой — сделать инструкции настолько простыми, чтобы они легко конвейеризировались и тратили не более одного такта на каждом шаге конвейера на высоких частотах.
Позднее было отмечено, что наиболее значимая характеристика RISC в разделении инструкций для обработки данных и обращения к памяти — обращение к памяти идёт только через инструкции load и store, а все прочие инструкции ограничены внутренними регистрами. Это упростило архитектуру процессоров: позволило инструкциям иметь фиксированную длину, упростило конвейеры и изолировало логику, имеющую дело с задержками при доступе к памяти, только в двух инструкциях. В результате RISC-архитектуры стали называть также архитектурами load/store.[5]
Количество инструкций
Нередко слова «сокращённый набор команд» понимаются как минимизация количества инструкций в системе команд. В действительности, инструкций у многих RISC-процессоров больше, чем у CISC-процессоров.[6][7] Некоторые RISC-процессоры вроде транспьютеров фирмы INMOS (англ.) имеют наборы команд не меньше, чем, например, у CISC-процессоров IBM System/370; и наоборот — CISC-процессор DEC PDP-8 имеет только 8 основных и несколько расширенных инструкций.
На самом деле, термин «сокращённый» в названии описывает тот факт, что сокращён объём (и время) работы, выполняемый каждой отдельной инструкцией — как максимум один цикл доступа к памяти, — тогда как сложные инструкции CISC-процессоров могут требовать сотен циклов доступа к памяти для своего выполнения.[8]
Некоторые архитектуры, специально разработанные для минимизации количества инструкций, сильно отличаются от классических RISC-архитектур и получили другие названия: Minimal instruction set computer (MISC), Zero instruction set computer (ZISC), Ultimate RISC (также называемый OISC), Transport triggered architecture (TTA) и т. п.
Характерные особенности RISC-процессоров
- Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.
- Специализированные команды для операций с памятью — чтения или записи. Операции вида «прочитать-изменить-записать» отсутствуют. Любые операции «изменить» выполняются только над содержимым регистров (т. н. архитектура load-and-store).
- Большое количество регистров общего назначения (32 и более).
- Отсутствие поддержки операций вида «изменить» над укороченными типами данных — байт, 16-битное слово. Так, например, система команд DEC Alpha содержала только операции над 64-битными словами, и требовала разработки и последующего вызова процедур для выполнения операций над байтами, 16- и 32-битными словами.
- Отсутствие микропрограмм внутри самого процессора. То, что в CISC-процессоре исполняется микропрограммами, в RISC-процессоре исполняется как обыкновенный (хотя и помещённый в специальное хранилище) машинный код, не отличающийся принципиально от кода ядра ОС и приложений. Так, например, обработка отказов страниц в DEC Alpha и интерпретация таблиц страниц содержалась в так называемом PALCode (Privileged Architecture Library), помещённом в ПЗУ. Заменой PALCode можно было превратить процессор Alpha из 64-битного в 32-битный, а также изменить порядок байтов в слове и формат входов таблиц страниц виртуальной памяти.
Другие архитектуры
За годы после появления архитектуры RISC были реализованы и другие альтернативы — например, VLIW, MISC, OISC, массово-параллельная обработка, систолическая матрица (англ. Systolic array), переконфигурируемые вычисления (англ. Reconfigurable computing), потоковая архитектура (англ. Dataflow architecture).
- Суперскалярные архитектуры (первоначально — большие ЭВМ конца 1960-х годов, в микропроцессорах — Sun SPARC, начиная с Pentium использованы в семействе x86). Распараллеливание исполнения команд между несколькими устройствами исполнения, причём решение о параллельном исполнении двух или более команд принимается аппаратурой процессора на этапе исполнения. Эффективное использование такой архитектуры требует специальной оптимизации машинного кода в компиляторе для генерации пар независимых команд (когда результат одной команды не является аргументом другой).
- Архитектуры VLIW (very long instruction word — очень длинное слово команды). Отличаются от суперскалярной архитектуры тем, что решение о распараллеливании принимается не аппаратурой на этапе исполнения, а компилятором на этапе генерации кода. Команды очень длинны и содержат явные инструкции по распараллеливанию нескольких субкоманд на несколько устройств исполнения. Элементы архитектуры содержались в серии PA-RISC. VLIW-процессором в его классическом виде является Itanium. Разработка эффективного компилятора для VLIW является сложнейшей задачей. Преимущество VLIW перед суперскалярной архитектурой заключается в том, что компилятор может быть более развитым, нежели устройства управления процессора, и он способен хранить больше контекстной информации для принятия более верных решений по оптимизации.
Иные архитектурные решения, типичные для RISC
- Спекулятивное исполнение. При встрече с командой условного перехода процессор исполняет (или, по крайней мере, читает в кэш инструкций) сразу обе ветви до тех пор, пока не окончится вычисление управляющего выражения перехода. Позволяет отказаться от простоев конвейера при условных переходах.
- Переименование регистров. Каждый регистр процессора на самом деле представляет собой несколько параллельных регистров, хранящих несколько версий значения. Используется для реализации спекулятивного исполнения.
Начало развития RISC-архитектуры
Первая система, которая может быть названа RISC-системой, — суперкомпьютер CDC 6600, который был создан в 1964 году, за десять лет до появления соответствующего термина. CDC 6600 имел RISC-архитектуру всего с двумя режимами адресации («регистр+регистр» и «регистр+непосредственное значение») и 74 кодами команд (тогда как 8086 имел 400 кодов команд). В CDC 6600 было 11 конвейерных устройств арифметической и логической обработки, а также пять устройств загрузки и два устройства хранения. Память была многоблочной, поэтому все устройства загрузки-хранения могли работать одновременно. Базовая тактовая частота/частота выдачи команд была в 10 раз выше, чем время доступа к памяти. Джим Торнтон и Сеймур Крэй, разработчики CDC 6600, создали для него мощный процессор, позволявший быстро обрабатывать большие объёмы цифровых данных. Главный процессор поддерживался десятью простыми периферийными процессорами, выполнявшими операции ввода-вывода и другие функции ОС.[9] Позднее появилась шутка, что термин RISC на самом деле расшифровывается как «Really invented by Seymour Cray» («на самом деле придуман Сеймуром Крэем»).
Ещё одна ранняя RISC-машина — миникомпьютер Data General Nova, разработанный в 1968 году.
Первая попытка создать RISC-процессор на чипе была предпринята в IBM в 1975 году. Эта работа привела к созданию семейства процессоров IBM 801, которые широко использовались в различных устройствах IBM. 801-й в конце концов был выпущен в форме чипа под именем ROMP в 1981 году. ROMP расшифровывается как Research OPD (Office Product Division) Micro Processor, то есть «исследовательский микропроцессор», разработанный в департаменте офисных разработок. Как следует из названия, процессор был разработан для «мини»-задач, и когда в 1986 году IBM выпустила на его базе компьютер IBM RT-PC, он работал не слишком хорошо. Однако за выпуском 801-го процессора последовало несколько исследовательских проектов, в результате одного из которых появилась система POWER.
Однако наиболее известные RISC-системы были разработаны в рамках университетских исследовательских программ, финансировавшихся программой DARPA VLSI.[источник не указан 76 дней][уточнить]
Проект RISC в Университете Беркли был начат в 1980 году под руководством Дэвида Паттерсона и Карло Секвина. Исследования базировались на использовании конвейерной обработки и агрессивного использования техники регистрового окна. В обычном процессоре имеется небольшое количество регистров и программа может использовать любой регистр в любое время. В процессоре, использующем технологии регистрового окна, очень большое количество регистров (например, 128), но программы могут использовать ограниченное количество (например, только 8 в каждый момент времени).
Программа, ограниченная лишь восемью регистрами для каждой процедуры, может выполнять очень быстрые вызовы процедур: «окно» просто сдвигается к 8-регистровому блоку нужной процедуры, а при возврате из процедуры сдвигается обратно, к регистрам вызвавшей процедуры. (В обычном процессоре большинство процедур при вызове вынуждены сохранять значения некоторых регистров в стеке для того, чтобы пользоваться этими регистрами при исполнении процедуры. При возврате из процедуры значения регистров восстанавливаются из стека).
Проект RISC произвёл на свет процессор RISC-I в 1982 году. В нём было 44 420 транзисторов (для сравнения: в CISC-процессорах того времени их было около 100 тыс.). RISC-I имел всего 32 инструкции, но превосходил по скорости работы любой одночиповый процессор того времени. Через год, в 1983 году, был выпущен RISC-II, который состоял из 40 760 транзисторов, использовал 39 инструкций и работал в три раза быстрее RISC-I.
Практически в то же время, в 1981 году, Джон Хеннесси начал аналогичный проект, названный «MIPS-архитектура» в Стэнфордском университете. Создатель MIPS практически полностью сфокусировался на конвейерной обработке, попытавшись «выжать всё» из этой технологии. Конвейерная обработка использовалась и в других продуктах, некоторые идеи, реализованные в MIPS, позволили разработанному чипу работать значительно быстрее аналогов. Наиболее важным было требование выполнения любой из инструкций процессора за один такт. Это требование позволило конвейеру работать на гораздо бо́льших скоростях передачи данных и привело к значительному ускорению работы процессора. С другой стороны, исполнение этого требования имело негативный побочный эффект в виде удаления из набора инструкций таких полезных операций, как умножение или деление.
В первые годы попытки развития RISC-архитектуры были хорошо известны, однако оставались в рамках породивших их университетских исследовательских лабораторий. Многие в компьютерной индустрии считали, что преимущества RISC-процессоров не проявятся при использовании в реальных продуктах из-за низкой эффективности использования памяти в составных инструкциях. Однако с 1986 года исследовательские проекты RISC начали выпускать первые работающие продукты.
Последние годы
Как оказалось в начале 1990-х годов, RISC-архитектуры позволяют получить большую производительность, чем CISC, за счёт использования суперскалярного и VLIW-подхода, а также за счёт возможности серьёзного повышения тактовой частоты и упрощения кристалла с высвобождением площади под кэш, достигающий огромных ёмкостей. Также, RISC-архитектуры позволили сильно снизить энергопотребление процессора за счёт уменьшения числа транзисторов.
Первое время RISC-архитектуры с трудом принимались рынком из-за отсутствия программного обеспечения для них. Эта проблема была решена переносом UNIX-подобных операционных систем (SunOS) на RISC-архитектуры.
В настоящее время многие архитектуры процессоров являются RISC-подобными, к примеру, ARM, DEC Alpha, SPARC, AVR, MIPS, POWER и PowerPC. Наиболее широко используемые в настольных компьютерах процессоры архитектуры x86 ранее являлись CISC-процессорами, однако новые процессоры, начиная с Intel 486DX, являются CISC-процессорами с RISC-ядром[источник не указан 699 дней]. Они непосредственно перед исполнением преобразуют CISC-инструкции x86-процессоров в более простой набор внутренних инструкций RISC.
После того, как процессоры архитектуры x86 были переведены на суперскалярную RISC-архитектуру, можно сказать, что большинство существующих ныне процессоров основаны на архитектуре RISC.
См. также
Примечания
- ↑ Толковый словарь по вычислительным системам = Dictionary of Computing / Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского. — М.: Машиностроение, 1990. — 560 с. — 70 000 (доп,) экз. — ISBN 5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания)
- ↑ Reduced instruction set computing — неправильно.
- ↑ Примером является инструкция
INDEX
в архитектуре VAX, которая медленнее эквивалентной реализации, использующей более простые операции. См.: D. A. Patterson, D. R. Ditzel. The case for the reduced instruction set computing // SIGARCH Comput. Archit. News. — октябрь 1980. — В. 8, 6. — P. 25—33. — DOI:10.1145/641914.641917 - ↑ Andrew Schulman. Microprocessors From the Programmer’s Perspective // Dr. Dobb’s Journal. — 1 сентября 1990.
- ↑ Kevin Dowd. High Performance Computing. — O’Reilly & Associates, 1993.
- ↑ Jon «Hannibal» Stokes. RISC and CISC, Side by Side?. RISC vs. CISC: the Post-RISC Era. Ars Technica (август 1999). Проверено 11 июля 2010.
- ↑ Lloyd Borrett. RISC versus CISC. Australian Personal Computer (июнь 1991). Архивировано из первоисточника 24 августа 2011. Проверено 11 июля 2010.
- ↑ Sivarama P. Dandamudi. Chapter 3: RISC Principles // Guide to RISC Processors for Programmers and Engineers. — Springer New York, 2005. — P. 39—44. — ISBN 978-0-387-21017-9 (Print) ISBN 978-0-387-27446-1 (Online) DOI:10.1007/0-387-27446-4_3 — «the main goal was not to reduce the number of instructions, but the complexity»
- ↑ Grishman, Ralph. Assembly Language Programming for the Control Data 6000 Series. Algorithmics Press. 1974. P. 12
Ссылки
- RISC в каталоге ссылок Open Directory Project (dmoz).
Разница между архитектурами RISC и CISC и ее приложениями
Архитектура центрального процессора (ЦП) управляет способностью функционировать от «Архитектуры набора команд» до того места, где она была разработана. Архитектура ЦП — это вычисление с сокращенным набором команд (RISC) и вычисление со сложным набором инструкций (CISC). CISC может выполнять многоэтапные операции или режимы адресации в одном наборе команд. Это конструкция процессора, в которой одна инструкция выполняет несколько низкоуровневых действий.Например, хранение в памяти, загрузка из памяти и арифметическая операция. Вычисления с сокращенным набором команд — это стратегия проектирования центрального процессора, основанная на представлении о том, что базовый набор команд обеспечивает высокую производительность в сочетании с архитектурой микропроцессора, которая способна выполнять инструкции, используя несколько циклов микропроцессора на команду. В этой статье обсуждается разница между архитектурой RISC и CISC. Аппаратная часть Intel называется компьютером со сложным набором команд (CISC), а оборудование Apple — компьютером с сокращенным набором команд (RISC).
Разница между RISC и CISC
Разница между архитектурой RISC и CISC
Прежде чем обсуждать различия между архитектурой RISC и CISC, дайте нам знать о концепциях RISC и CISC
Что такое RISC?
Компьютер с сокращенным набором команд — это компьютер, который использует только простые команды, которые можно разделить на несколько инструкций, которые обеспечивают выполнение операций низкого уровня в пределах одного цикла CLK, поскольку его название предполагает «сокращенный набор команд».
Архитектура RISC
Термин RISC означает «компьютер с сокращенным набором команд». Это план проектирования ЦП, основанный на простых заказах и быстро действующий.
Архитектура RISC
Это небольшой или сокращенный набор инструкций. Здесь предполагается, что каждая инструкция предназначена для выполнения очень небольших работ. В этой машине наборы команд скромные и простые, что помогает в составлении более сложных команд. Каждая инструкция имеет одинаковую длину; они связаны вместе, чтобы сложные задачи выполнялись за одну операцию.Большинство команд выполняются за один машинный цикл. Эта конвейерная обработка — важный метод, используемый для ускорения RISC-машин.
Что такое CISC?
Компьютер со сложным набором команд — это компьютер, на котором отдельные инструкции могут выполнять множество низкоуровневых операций, таких как загрузка из памяти, арифметическая операция и хранилище в памяти, или выполняются с помощью многоступенчатых процессов или режимов адресации в отдельных инструкциях, как его название предполагает «Комплексный набор команд».
Архитектура CISC
Термин CISC означает «компьютер со сложным набором команд».Это план проектирования ЦП, основанный на отдельных командах, которые могут выполнять многоэтапные операции.
Архитектура CISC
Компьютеры CISC имеют небольшие программы. В нем огромное количество составных инструкций, выполнение которых требует много времени. Здесь единый набор инструкций защищен в несколько этапов; каждый набор инструкций содержит дополнительно более 300 отдельных инструкций. Максимальное количество команд выполняется за два-десять машинных циклов. В CISC не так-то просто реализовать конвейерную обработку инструкций.
Разница между архитектурой RISC и CISC
Разница между RISC и CISC
RISC | CISC |
1. RISC означает компьютер с сокращенным набором команд. | 1. CISC означает компьютер со сложным набором команд. |
2. Процессоры RISC имеют простые инструкции, занимающие примерно один такт. Средний такт на инструкцию (CPI) равен 1.5 | 2. Процессор CSIC имеет сложные инструкции, для выполнения которых требуется несколько тактов. Средний такт на инструкцию (CPI) находится в диапазоне от 2 до 15. |
3. Производительность оптимизирована с большим упором на программное обеспечение | 3. Производительность оптимизирована с большим упором на оборудование. |
4. Он не имеет блока памяти и использует отдельное оборудование для реализации инструкций. | 4. Он имеет блок памяти для реализации сложных инструкций. |
5. Имеет зашитый блок программирования. | 5. Имеет блок микропрограммирования. |
6. Набор команд сокращен, т. Е. Он содержит только несколько инструкций в наборе команд. Многие из этих инструкций очень примитивны. | 6. Набор команд содержит множество различных инструкций, которые можно использовать для сложных операций. |
7. Набор команд содержит множество различных инструкций, которые можно использовать для сложных операций. | 7. CISC имеет много различных режимов адресации и, таким образом, может использоваться для более эффективного представления операторов языка программирования более высокого уровня. |
8. Комплексные режимы адресации синтезированы с помощью программного обеспечения. | 8. CISC уже поддерживает сложные режимы адресации |
9. Имеется несколько наборов регистров | 9. Имеется только один набор регистров |
10. RISC-процессоры имеют высокую конвейерность | 10. Обычно они не конвейерные или менее конвейерные |
11. Сложность RISC заключается в компиляторе, который выполняет программу | 11. Сложность заключается в микропрограмме |
12. Время выполнения очень мало | 12. Время выполнения очень велико |
13. Расширение кода может быть проблемой | 13. Расширение кода не проблема |
14.Расшифровка инструкций проста. | 14. Декодирование инструкций сложное |
15. Не требует внешней памяти для вычислений | 15. Требуется внешняя память для вычислений |
16. Наиболее распространенными микропроцессорами RISC являются Alpha, ARC, ARM , AVR, MIPS, PA-RISC, PIC, Power Architecture и SPARC. | 16. Примерами процессоров CISC являются System / 360, VAX, PDP-11, семейство Motorola 68000, процессоры AMD и Intel x86. |
17. Архитектура RISC используется в высокопроизводительных приложениях, таких как обработка видео, телекоммуникации и обработка изображений. | 17. Архитектура CISC используется в низкоуровневых приложениях, таких как системы безопасности, домашняя автоматизация и т. Д. |
В этой статье обсуждаются концепции RISC, CISC и различия. Мы надеемся, что вы лучше понимаете эту концепцию. Кроме того, при любых сомнениях относительно этой концепции или реализации каких-либо электрических и электронных проектов, пожалуйста, оставьте свой отзыв, комментируя раздел комментариев ниже
.
процессоров RISC и CISC | Учебник по компьютерной архитектуре
В этом руководстве мы узнаем о процессоре RISC и процессоре CISC, а также о различиях между ними.
RISC-процессор
Он известен как компьютер с сокращенным набором команд. Это тип микропроцессора с ограниченным количеством инструкций. Они могут выполнять свои инструкции очень быстро, потому что инструкции очень маленькие и простые.
Для чипов
RISC требуется меньше транзисторов, что удешевляет их разработку и производство.В RISC набор инструкций содержит простые и базовые инструкции, из которых могут быть созданы более сложные инструкции. Большинство инструкций выполняются за один цикл, что позволяет процессору обрабатывать множество инструкций одновременно.
В данном случае инструкции основаны на регистрах, и передача данных происходит от регистра к регистру.
Процессор CISC
- Он известен как компьютер со сложной системой команд.
- Он был впервые разработан Intel.
- Содержит большое количество сложных инструкций.
- В данной инструкции регистр не основан.
- Инструкции не могут быть выполнены за один машинный цикл.
- Передача данных из памяти в память.
- Микропрограммируемый блок управления находится в CISC.
- Также у них есть переменные форматы команд.
Разница между CISC и RISC
Архитектурные характеристики | Компьютер с комплексным набором команд (CISC) | Компьютер с сокращенным набором команд (RISC) |
---|---|---|
Размер и формат инструкции | Большой набор инструкций с переменными форматами (16-64 бит на инструкцию). | Небольшой набор инструкций с фиксированным форматом (32 бита). |
Передача данных | Память в память. | Зарегистрируйтесь, чтобы зарегистрироваться. |
Управление процессором | Большинство микрокодирований используют управляющую память (ПЗУ), но современные CISC используют проводное управление. | В основном аппаратно без управляющей памяти. |
Тип инструкции | Не регистровая инструкция. | Инструкции на основе регистров. |
Доступ к памяти | Больше доступа к памяти. | Меньше доступа к памяти. |
Часы | Включает многочастотные часы. | Включает одиночные часы. |
Сущность инструкции | Инструкции сложны. | Инструкции сокращены и просты. |
.
Что такое архитектура RISC и CISC и их различия
Архитектура центрального процессора (ЦП) управляет способностью функционировать от «Архитектуры набора команд» до того места, где она была разработана. Архитектура ЦП — это вычисление с сокращенным набором команд (RISC) и вычисление со сложным набором инструкций (CISC). CISC может выполнять многоэтапные операции или режимы адресации в одном наборе команд. Это конструкция процессора, в которой одна инструкция выполняет несколько низкоуровневых действий.Например, хранение в памяти, загрузка из памяти и арифметическая операция. Вычисления с сокращенным набором команд — это стратегия проектирования центрального процессора, основанная на представлении о том, что базовый набор инструкций дает отличную производительность в сочетании с архитектурой микропроцессора, которая способна выполнять инструкции, используя несколько циклов микропроцессора на инструкцию. В этой статье обсуждается архитектура RISC и CISC с соответствующими схемами. Аппаратная часть Intel называется компьютером со сложным набором команд (CISC), а оборудование Apple — компьютером с сокращенным набором команд (RISC).
Что такое RISC и CISC?
Компьютер со сложным набором команд — это компьютер, на котором отдельные инструкции могут выполнять множество низкоуровневых операций, таких как загрузка из памяти, арифметическая операция и хранилище в памяти, или выполняются с помощью многоэтапных процессов или режимов адресации в отдельных инструкциях, как его назовите предложение «Комплексный набор команд».
Компьютер с сокращенным набором команд — это компьютер, который использует только простые команды, которые можно разделить на несколько инструкций, которые обеспечивают выполнение низкоуровневых операций в пределах одного цикла CLK, поскольку его название предполагает «Сокращенный набор команд».
Архитектура RISC
Термин RISC означает «компьютер с сокращенным набором команд».Это план проектирования ЦП, основанный на простых заказах и быстро действующий.
Это небольшой или сокращенный набор инструкций. Здесь предполагается, что каждая инструкция предназначена для выполнения очень небольших работ. В этой машине наборы команд скромные и простые, что помогает в составлении более сложных команд. Каждая инструкция примерно одинаковой длины; они связаны вместе, чтобы сложные задачи выполнялись за одну операцию. Большинство команд выполняются за один машинный цикл. Эта конвейерная обработка — важный метод, используемый для ускорения RISC-машин.
Архитектура RISC
Компьютер с сокращенным набором команд — это микропроцессор, предназначенный для одновременного выполнения нескольких инструкций. Основываясь на небольших командах, этим микросхемам требуется меньше транзисторов, что делает их разработку и производство недорогими. Особенности RISC включают следующие
- Требование декодирования меньше
- Мало типов данных в оборудовании
- Регистр общего назначения Идентичный
- Единый набор команд
- Узлы простой адресации
Кроме того, RISC упрощает процесс написания программы, позволяя программисту устранять ненужные коды и предотвращая трату циклов.
Архитектура CISC
Термин CISC означает «компьютер со сложным набором команд». Это план проектирования ЦП, основанный на отдельных командах, которые могут выполнять многоэтапные операции.
компьютеров CISC имеют небольшие программы. В нем огромное количество составных инструкций, выполнение которых требует много времени. Здесь единый набор инструкций защищен в несколько шагов; каждый набор инструкций содержит дополнительно более 300 отдельных инструкций. Максимальное количество команд выполняется за два-десять машинных циклов.В CISC не так-то просто реализовать конвейерную обработку инструкций.
Архитектура CISC
У машин CISC есть хорошие действия, основанные на обзоре программных компиляторов; поскольку целый ряд новаторских инструкций легко получить в одном наборе инструкций. Они создают составные инструкции в виде единого простого набора инструкций. Они достигают низкоуровневых процессов, что упрощает использование огромных узлов адресации и дополнительных типов данных в аппаратном обеспечении машины. Но CISC считается менее эффективным, чем RISC, из-за его неспособности устранить коды, которые приводят к потере циклов.Кроме того, микропроцессорные микросхемы трудны для понимания и программирования из-за сложности оборудования.
Сравнение RISC и CISC
RISC означает компьютер с сокращенным набором команд, тогда как CISC означает компьютер со сложным набором команд. Процессоры RISC имеют меньший набор инструкций с небольшим количеством узлов адресации. Процессоры CISC имеют больший набор инструкций с множеством узлов адресации.
RISC против CISC
Блок памяти
RISC не имеет блока памяти и использует отдельное оборудование для реализации инструкций.CISC имеет блок памяти для реализации сложных инструкций
Программа
RISC имеет аппаратный модуль программирования. CISC имеет блок микропрограммирования
Дизайн
RISC — это сложный компилятор. CISC — это простой дизайн компилятора
Расчеты
Расчеты
RISC выполняются быстрее и точнее. Расчет CISC медленный и точный
Расшифровка
RISC-декодирование инструкций простое.CISC-декодирование инструкций сложное
Время
Время выполнения в RISC намного меньше. Время выполнения в CISC очень велико.
Внешняя память
RISC не требует внешней памяти для вычислений. CISC требует внешней памяти для вычислений.
Трубопровод
RISC Pipelining работает правильно. CISC Pipelining работает некорректно.
Стоянка
RISC в основном сокращается в процессорах.Процессоры CISC часто останавливаются.
Расширение кода
Расширение кода может быть проблемой в RISC, тогда как в CISC расширение кода не проблема.
Дисковое пространство
Пространство сохраняется в RISC, тогда как в CISC пространство теряется. Лучшие примеры архитектуры набора команд CISC включают VAX, PDP-11, Motorola 68k и ваши настольные ПК на архитектуре Intel x86, тогда как лучшие примеры архитектуры RISC включают DEC Alpha, ARC, AMD 29k, Atmel AVR, Intel i860, Blackfin. , i960, Motorola 88000, MIPS, PA-RISC, Power, SPARC, SuperH и ARM.
Приложения RISC и CISC
RISC используется в высокопроизводительных приложениях, таких как обработка видео, телекоммуникации и обработка изображений. CISC используется в низкоуровневых приложениях, таких как системы безопасности, домашняя автоматизация и т. Д.
Из приведенного выше сравнения RISC и CISC, наконец, мы можем сделать вывод, что мы не можем провести различие между технологиями RISC и CISC, потому что обе подходят для точного применения. Сегодня дизайнеры RISC и CISC делают все возможное, чтобы получить преимущество в конкуренции.Мы надеемся, что вы лучше понимаете эту концепцию. Кроме того, любые сомнения относительно этой концепции или реализации каких-либо электрических и электронных проектов, пожалуйста, оставьте свой отзыв, комментируя в разделе комментариев ниже. Вот вам вопрос, в чем преимущества RISC и CISC?
.
RISC vs CISC — подробное объяснение различий между встроенной архитектурой RISC и CISC
Встроенная система является сердцем и ядром большинства электронных продуктов, доступных на рынке. Это реализация инженерной мысли, в которой аппаратное обеспечение сочетается с программным обеспечением. Мы окружены миром встроенных систем с мини-компьютерами в биометрических дверных замках, самолетами, автомобилями, кардиостимуляторами и т. Д. Эти ограниченные ресурсы, небольшие, умные и мощные системы помогают нам в наших повседневных задачах.
Когда-либо задумывался о том, как функционирует наше тело, нервная система, мозг и способность выполнять несколько задач. Если вы объедините все эти функции, вы получите приблизительное представление о встроенной биологической системе. Наш мозг скрывает сложные детали своего функционирования, которые происходят внутри него, но все же позволяет нам контролировать его с максимальным потенциалом. Такая же сложность касается процессора или контроллера, используемых во встроенных системах. Они скрывают сложные детали и предоставляют нам высокоуровневый интерфейс для работы.На уровне абстракции можно описать, как код для сложения двух чисел на языке программирования высокого уровня заставляет регистры в микросхемах обрабатывать биты и возвращать вывод пользователю.
Архитектура процессора
Центральный процессор, относящийся как к микропроцессору, так и к микроконтроллеру, выполняет определенные задачи с помощью блока управления (CU) и арифметико-логического блока (ALU) . Поскольку инструкции поступают из ОЗУ, ЦП действует с помощью двух вспомогательных модулей, создавая переменные и присваивая им значения и память.Очень важно знать, как ЦП выполняет все это действие с помощью своей архитектуры. Если вы хотите узнать больше о том, как работает микроконтроллер, вы можете прочитать эту основную статью о микроконтроллерах.
Каждый CPU имеет связанную с ним память для хранения программы и данных. Программа и данные работают с ЦП, чтобы получить результат. Программа предоставляет инструкции, а данные предоставляют информацию, над которой нужно работать. Для доступа к программе и данным ЦП использует шины, эти шины являются проводами, точнее, это следы проводов, которые вы, возможно, видели на печатных платах.За эти годы микроконтроллеры и микропроцессоры эволюционировали, адаптируя различные архитектуры, в зависимости от требований приложения или дизайна, выбор микроконтроллера зависит от типа используемой в нем архитектуры. Давайте посмотрим на популярные архитектуры.
Архитектура фон Неймана / Принстона
Способ, которым ЦП получает доступ к программе и данным, говорит об архитектуре ЦП. Раньше для доступа к программе и данным использовалась единая шина.Этот тип архитектуры известен как Архитектура фон Неймана или проще Принстонская архитектура . Единая шина для получения кода и данных означает, что они мешают друг другу, и замедляют скорость обработки ЦП , потому что каждый должен ждать, пока другой закончит выборку. Это ограничение также известно как условие узкого места фон-Неймана .
Архитектура Гарварда
Для ускорения процесса было предложено Harvard Architecture .В этой архитектуре присутствуют отдельные шины данных для данных и программы. Значит, эта архитектура предлагала использовать четыре автобуса
.
- Набор шин данных, передающих данные в ЦП и из него.
- Набор адресной шины для доступа к данным.
- Набор шин данных для переноса кода в CPU.
- Адресная шина для доступа к коду.
Использование отдельной адресной шины и шины данных означало низкое время выполнения для ЦП, но это происходит за счет сложности разработки архитектуры .Архитектура фон Неймана может показаться немного ленивой, но у нее есть преимущество в простоте дизайна.
Гарвардскую архитектуру
очень легко реализовать, когда ЦП и блоки памяти используют одно и то же пространство или ОЗУ и ПЗУ встроены (на кристалле) в блок обработки, например, в микроконтроллере, где расстояния указаны в микронах и миллиметрах. Однако ту же архитектуру трудно реализовать, если память, содержащая код, является внешней по отношению к процессору, например, в x86 IBM PC .Набор из отдельных проводов для данных и адреса на материнской плате сделает плату сложной и дорогой. Давайте разберемся с этим на примере процессора.
Процессору с 64-битной шиной данных и 32-битной шиной адреса потребуется около 100 шин (96 для шины данных и адреса и несколько других для сигналов управления) для реализации архитектуры Фон-Неймана. Та же самая структура, если она реализована с архитектурой Гарварда, будет стоить двухпроводных дорожек примерно в 200 с большим количеством выводов, выходящих из процессора.По той же причине мы не видим, чтобы чисто гарвардская архитектура реализовывалась для ПК и рабочих станций. Вместо этого используется модифицированная гарвардская архитектура , в которой иерархия памяти с кэш-памятью ЦП используется для разделения программы и данных. Иерархия памяти разделяет хранилище на основе иерархии времени отклика процессов.
Архитектура набора команд
Поскольку программа (код) загружается в память системы (ОЗУ), она загружается ЦП (относится как к микропроцессору, так и к микроконтроллеру) для обработки данных, это очень похоже на то, как мы даем инструкции, когда дрессируем собаку. для определенных действий и команд.По мере того, как эти инструкции обрабатываются, определенные транзисторы переходят с одного логического уровня на другой, чтобы это произошло. Таким образом, в основном с помощью инструкций человек-программист общается с процессором. Каждый ЦП имеет свой собственный набор инструкций, набор инструкций, основанный на его архитектуре и возможностях.
ЦП
понимает эти инструкции в сочетании нулей и единиц, которые также известны как код операции . Программисту действительно сложно запомнить комбинацию нулей и единиц для каждой инструкции, связанной с процессором.Чтобы упростить работу человека-программиста, нам предоставлены высокоуровневые интерфейсы этих инструкций, и компилятор преобразует их в форму нулей и единиц для обработки. Также в наборе команд каждого ЦП имеется ограниченное количество инструкций, которые он может понять.
Производительность ЦП
Вы, возможно, слышали термин тактовая частота процессора , связанный с производительностью центрального процессора. Процессоры обычно имеют тактовую частоту в МГц (мегагерцы) или ГГц (гигагерцы), например тактовая частота 25 ГГц.Число, связанное с тактовой частотой, показывает, сколько раз часы внутри ЦП тикают в циклах в секунду. Практичность тактовой частоты можно понять по тому факту, что инструкции выполняются на основе тактовых циклов ЦП, которые пропорциональны количеству программ, которые ЦП может запускать за раз.
Производительность CPU зависит от количества инструкций, которые записаны в программе, больше инструкций, больше времени, затрачиваемого CPU на их выполнение.Это также зависит от количества тактовых циклов, в которых выполняется каждая инструкция, для некоторых инструкций требуется больше тактов, чем для других, поэтому они отстают от производительности ЦП. Команды в программе и циклы, необходимые для выполнения каждой инструкции, обратно пропорциональны друг другу. Изменение одного повлияет на другое. Это момент, когда отрасль процессоров разделена.
Архитектура набора команд RISC и CISC
Как сказано выше, выполнение программы и производительность ЦП зависят от количества инструкций в программе, в которой инструкции предлагаются этому конкретному ЦП как часть набора команд, а второй фактор — это количество тактовых циклов. в котором выполняется каждая инструкция.На основе этих двух факторов в настоящее время доступны два набора инструкций. Самым ранним из них является Computing Set Instruction Set Computing (CISC) , а другим — Reduced Instruction Set Computing (RISC). Давайте подробно обсудим каждую из этих архитектур, чтобы понять разницу между RIC и CISC-архитектурой .
Вычисление сложного набора команд (CISC)
CISC означает сложные вычисления с набором команд.Основной целью CISC является сокращение количества инструкций , выполняемых программой, это достигается путем объединения множества простых инструкций, таких как режим адресации, загрузки и т. Д., И формирования единой сложной инструкции. Инструкция CISC включает в себя последовательность простых инструкций, а также некоторых специальных инструкций, выполнение которых занимает более одного тактового цикла. Инструкции CISC могут напрямую работать с памятью без вмешательства регистров, что означает, что они устраняют необходимость в некоторых основных инструкциях, таких как загрузка значений и потребность в памяти (RAM).Инструкции CISC уделяют больше внимания аппаратному обеспечению, чем программному обеспечению , что означает, что вместо того, чтобы загружать компиляторы, CISC использует транзисторы в качестве оборудования для декодирования и реализации инструкций. Однако, поскольку инструкция сложна и состоит из нескольких шагов, они выполняются за большее количество тактов.
Простая аналогия — это когда вас просят открыть книгу и прочитать 2 -ю страницу главы 3 .В этой серии упражнений вы выполняете несколько шагов, например, берете книгу из сумки, затем перетасовываете страницу к главе 3, затем переходите к 2 -й странице главы, а затем начинаете читать. Последовательность шагов, если объединить в одну инструкцию чтения страницы 44 (это 2 и номер страницы в главе 3 rd ), мы получим инструкцию CISC.
Вычисления с сокращенным набором команд (RISC)
Первый интегрированный чип был разработан Джеком Килби в 1958 году и представлял собой генератор, а в 1970-х годах Intel выпустила первый коммерческий микропроцессор.Хотя на старте процессоров CISC не было. Но с высокими требованиями к вычислениям архитектура CISC становилась все более сложной и трудной в обращении. Полная переработка архитектуры CISC, известная как RISC, была произведена Джоном Коуком из IBM . Таким образом, чтобы различать две архитектуры, были введены термины RISC и CISC .
RISC означает вычисления с сокращенным набором команд. Основным мотивом RISC было введение единообразия в размере и выполнении инструкций .Это было сделано путем введения простого набора инструкций, который может выполняться как одна инструкция за цикл, это делается путем разбиения сложной инструкции, такой как загрузка и сохранение, в разные инструкции, где каждая инструкция занимает примерно один тактовый цикл для выполнения. Архитектура RISC включает в себя простые инструкции того же размера, которые могут быть выполнены за один такт. RISC-машинам требуется больше ОЗУ, чем CISC для хранения значений при загрузке каждой инструкции в регистры.Выполнение одной инструкции за цикл дает машинам на основе RISC преимущество конвейерной обработки (конвейерная обработка — это процесс, в котором следующая инструкция загружается до выполнения первой инструкции, это увеличивает эффективность выполнения). В архитектуре RISC больше внимания уделяется программному обеспечению, чем аппаратному обеспечению , и требуется, чтобы одно было написано более эффективное программное обеспечение (компиляторы, коды) с меньшим количеством инструкций. Реализация RISC может показаться сложной из-за множества инструкций, но это оправдано размером инструкции и тем фактом, что каждая инструкция выполняется за один такт.
Простая аналогия, чтобы понять, когда нужно выполнять каждый шаг для чтения книги, находя книгу, затем находя страницу, затем главу и, наконец, начинать читать.
Сравнение архитектуры RISC и CISC
Когда мы, , сравниваем RISC и CISC , нет победителя между архитектурой RISC и CISC, все зависит от приложения и сценария использования. RISC подчеркивает эффективность, принимая во внимание количество циклов на инструкции, тогда как CISC подчеркивает эффективность за счет количества инструкций в программе.Для большей эффективности CISC зависит от нескольких строк кода, в то время как RISC сокращает время выполнения каждой инструкции. Честно говоря, невозможно сравнивать микроконтроллеры и микропроцессоры на основе этих двух архитектур на основе общих черт.
Если взять пример инструкции для умножения двух 8-битных чисел, процессору на основе CISC потребуется примерно 70-80 тактовых циклов, тогда как процессору на основе RISC потребуется примерно 30-40 тактовых циклов, что делает его в 2 раза быстрее, чем CISC. .Кроме того, поскольку процессору на основе CISC требуется больше тактовых циклов для выполнения конвейерной обработки инструкций, это гораздо более сложная задача по сравнению с обработкой за один цикл в процессорах на основе RISC.
Где используются архитектуры CISC и RISC?
На заре процессоров и контроллеров присутствовала только архитектура CISC , хотя официального названия CISC там не было. Но с появлением программного обеспечения, такого как компиляторы, архитектура на основе RISC начала развиваться.Intel с самого начала зависела от архитектуры CISC. Несколько компаний, которые были готовы пойти на риск в отношении RISC, были Apple, Atmel и т. Д. Через несколько лет CISC стали немного устаревшими и непопулярными из-за трудностей с улучшением. Однако Intel никогда не покидала CISC и продолжала разработку улучшений.
В настоящее время разница между архитектурой RISC и CISC очень мала. Устройства ARM, устройства Atmel на базе AVR, такие как Arduino, PIC и почти все производители смартфонов используют архитектуру RISC , поскольку они намного быстрее, потребляют меньше ресурсов и более энергоэффективны.Устройства, основанные исключительно на CISC, все еще существуют в контроллерах Intel серии x86 и 8051. Такие производители, как AMD, используют гибрид RISC и CISC из серии K5 поколения 5 -го поколения . С точки зрения приложений, CISC предпочтительнее для устройств автоматизации, тогда как RISC предпочтительнее для устройств обработки видео и изображений.
.