Что означает RISC и CISC? / Хабр
Многие говорят, что разница между RISC и CISC стала несущественной. Так ли это? И если нет, то в чем разница между современными RISC и CISC процессорами?
Компания Apple выпустила процессор Apple Silicon M1, который произвел фурор. Теперь вы можете задаться вопросом, чем он отличается от процессоров Intel и AMD? Вероятно, вы слышали, что M1 — процессор с архитектурой ARM, а ARM — это RISC, в отличие от Intel и AMD.
Если вы читали про разницу между микропроцессорами RISC и CISC, то вы знаете, что множество людей утверждают об отсутствии практической разницы между ними в современном мире. Но так ли это на самом деле?
Хорошо, сейчас вы немного запутались и хотите исчерпывающих ответов. Эта статья — отличное начало.
Я разобрал сотни комментариев по этой теме и столько же написал в ответ. Некоторые из них были от инженеров, которые причастны к созданию этих микропроцессоров.
Я начну с базовых вещей, которые необходимо понять, прежде чем начать отвечать на интересующие вопросы о разнице RISC и CISC.
Вот темы, которые будут рассмотрены в данной статье:
- Что такое микропроцессор?
- Что такое архитектура набора команд (ISA)?
- Зачем выбирать ISA?
- В чем разница между наборами команд RISC и CISC?
- Философия CISC.
- Философия RISC.
- Конвейеризация.
- Архитектура Load / Store.
- Сжатый набор инструкций.
- Микрокод и микрокоманды.
- Чем отличаются микрокоманды от инструкции RISC?
- Гипертрединг (аппаратные потоки).
- Действительно ли стоит различать RISC и CISC?
Я использую данные темы в заголовках, поэтому вы можете читать только про то, что вам интересно.
Что такое микропроцессор?
Давайте сначала разберемся что такое микропроцессор. Вероятно, у вас уже есть предположения, иначе вы не открыли бы эту статью.
В общем случае процессор — это мозг компьютера. Он читает инструкции из памяти, которые указывают, что делать компьютеру. Инструкции — это просто числа, которые интерпретируются специальным образом.
В памяти нет ничего, что позволяло бы отличить обычное число от инструкции. Поэтому разработчики операционных систем должны быть уверены, что инструкции и данные лежат там, где процессор ожидает их найти.
Микропроцессоры (CPU) выполняют очень простые операции. Вот пример нескольких инструкций, которые выполняет процессор:
load r1, 150 load r2, 200 add r1, r2 store r1, 310
Это человекочитаемая форма того, что должно быть просто списком чисел для компьютера. Например, load r1, 150 в обычном RISC микропроцессоре представляется в виде 32-битного числа. Это значит, что число представлено 32 символами, каждый из которых 0 или 1.
load в первой строчке перемещает содержимое ячейки памяти 150 в регистр r1. Оперативная память компьютера (RAM) — это хранилище миллиардов чисел. Каждое число хранится по своему адресу, и так микропроцессор получает доступ к правильному числу.
Упрощенная диаграмма операций в микропроцессоре. Инструкции помещаются в регистр инструкций, где происходит декодирование. Декодер активирует нужные части процессора и операция выполняется.
Далее вы можете заинтересоваться, что такое регистр. Эта концепция достаточно старая. Старые механические кассовые аппараты были основаны на этой концепции. В те времена регистр был чем-то вроде механического приспособления, в котором хранилось число, с которым вы хотели работать. Часто в таких аппаратах был аккумуляторный регистр, в который вы могли добавлять числа, а регистр сохранял сумму.
Арифметический калькулятор Феликс. Русский механический калькулятор. Внизу виден аккумуляторный регистр, сохранявший до тринадцати десятичных знаков. Наверху — входной регистр, вмещающий пять знаков. Слева внизу — счетный регистр.
Ваши электронные калькуляторы работают по такому же принципу. Чаще всего на дисплее отображается содержимое аккумуляторного регистра, а вы выполняете действия, которые влияют на его содержимое.
Аналогичное справедливо для микропроцессора. В нем есть множество регистров, которым даны имена — например, A, B, C или r1, r2, r3, r4 и так далее. Инструкции микропроцессора обычно производят операции над этими регистрами.
В нашем примере add r1, r2 складывает содержимое
В конце мы сохраняем полученный результат в оперативной памяти в ячейке с адресом 310 с помощью команды store r1, 310.
Что такое архитектура набора команд (ISA)?
Как вы можете представить, количество инструкций, которые понимает процессор, ограничено. Если вы знакомы с программированием, вы знаете, что можно определять собственные функции. Так вот, машинные команды не имеют такой возможности.
Существует фиксированное количество команд, которые понимает процессор. И вы как программист не можете его расширить.
В мире представлено множество различных микропроцессоров, и они не используют одинаковый набор команд. Иными словами, они интерпретируют числа в инструкции по-разному.
Одна архитектура микропроцессора трактует число 501012 как add r10, r12, а другая архитектура — как load r10, 12. Комбинация инструкций, которые понимает процессор, и регистров, которые ему доступны, называется архитектурой набора команды (Instruction Set Architecture, ISA).
Микропроцессоры, например, Intel и AMD, используют архитектуру набора команд x86. А микропроцессоры, например, A12, A13, A14 от Apple, понимают набор команд ARM. Теперь в список ARM-процессоров можно включить M1.
Это те микропроцессоры, которые мы называем Apple Silicon. Они используют архитектуру набора команд ARM, как и множество других микропроцессоров телефонов и планшетов. Даже игровые приставки, такие как Nintendo и самый быстрый суперкомпьютер, используют набор команд ARM.
Набор команд x86 и ARM не является взаимозаменяемым. Программа компилируется под определенный набор команд, если, конечно, это не JavaScript, Java, C# или что-то подобное. В этом случае программа компилируется в байт-код, который похож на набор команд для несуществующего процессора. Для запуска такого кода требуется Just-In-Time компилятор или интерпретатор, который транслирует байт-код в инструкции, понятные для микропроцессора в вашем компьютере.
Это значит, что большинство программ, доступных на Mac, не будут запускаться на Mac с M1. Программы рассчитаны на набор инструкций x86. Чтобы решить эту проблему, программы перекомпилируются с использованием нового набора инструкций. У Apple есть козырь в рукаве, который называется Rosetta 2. Это решение позволяет транслировать инструкции x86 в инструкции ARM.
Почему произошел переход на совершенно другой набор команд?
Закономерный вопрос. Зачем использовать новый набор команд для Mac? Почему Apple не могла использовать набор команд x86 в микропроцессорах Apple Silicon? Так бы отпала необходимость в перекомпиляции или трансляции с помощью Rosetta 2.
Что ж. Архитектура набора команд сильно влияет на архитектуру процессора. Использование определенной архитектуры набора команд может усложнить или упростить задачу по созданию высокопроизводительного или энергоэффективного процессора.
Второй важный момент заключается в лицензировании. Apple не может свободно создавать свои процессоры с набором команд x86. Это часть интеллектуальной собственности Intel, а Intel не хочет конкурентов. Для сравнения, компания ARM не производит собственных микропроцессоров. Они занимаются проектированием архитектуры набора команд и предоставляют эталонные образцы микропроцессоров, которые ее реализуют.
Таким образом, ARM делает то, что вы хотите. Этого хочет и Apple. Они хотят создавать собственные решения для компьютеров со специализированным оборудованием для машинного обучения, криптографии и распознавания лиц.
Разработка началась со смартфонов и планшетов. Эти устройства слишком маленькие и не позволяют сделать множество чипов на одной большой материнской плате. Вместо этого необходимо уместить буквально все в один чип, который содержит микропроцессор, графический ускоритель, оперативную память и другое специализированное оборудование.
Материнская плата ПК, где графический ускоритель, сетевая карта и модули памяти подключаются через разъемы. Она слишком большая для планшетов и смартфонов, которые используют систему на кристалле.
Сейчас этот тренд наблюдается в ноутбуках, а чуть позже придет и к настольным ПК. Тесная интеграция оборудования дает повышенную производительность. Также негибкая система лицензирования x86 — еще один минус.
Но давайте не будем отходить в сторону от главной темы. Архитектуры набора команд обычно следуют разным основополагающим философиям. Набор команд x86 — это то, что мы называем архитектурой CISC, в то время как архитектура ARM следует принципам RISC. В этом заключается основное различие.
Инструкции CISC могут быть любой длины. Максимальная теоретическая длина инструкции x86 может быть бесконечной, но на практике не превышает 15 байт. Инструкции RISC имеют ограниченную длину.
В чем разница между набором команд RISC и CISC?
Аббревиатура CISC обозначает Complex Instruction Set Computer, а RISC — Reduced Instruction Set Computer.
Сегодня объяснить разницу между этими наборами команд сложнее, чем во время их появления, так как в процессе развития они заимствовали идеи друг у друга. Более того, проводилась маркетинговая кампания по размытию границ между ними.
Минуем маркетинговую дезинформацию
Пол ДеМоне (Paul DeMone) написал статью в 2000 году, которая дает некоторое представление о существовавшем тогда маркетинговом давлении.
В 1987 году лучшим среди x86 был процессор Intel 386DX, а среди RISC — MIPS R2000.
Несмотря на то, что процессор Intel имеет вдвое больше транзисторов (275 000 против 115 000 у MIPS) и вдвое больше кэш-памяти, процессор x86 проигрывает во всех тестах производительности.
Оба процессора работают на частоте 16 МГц, но RISC-процессор показывал результаты в 2-4 раза лучше.
Поэтому неудивительно, что в начале 90-х распространилась идея, что процессоры RISC значительно производительнее.
У Intel возникли проблемы с восприятием на рынке. Им было сложно убедить инвесторов и покупателей в том, что процессоры на устаревшей архитектуре CISC могут быть лучше процессоров RISC.
Так Intel стала позиционировать свои процессоры как RISC с простым декодером, который превращал команды CISC в команды RISC.
Таким образом, Intel выставила себя в очень привлекательном виде. Компания заявляла, что покупатель получает технологически совершенные процессоры RISC, которые понимают знакомый многим набор команд x86.
Давайте проясним один момент. Внутри процессора x86 нет RISC-составляющей. Это просто маркетинговый ход. Боб Колвеллс (Bob Colwells), один из создателей Intel Pentium Pro с RISC-составляющей, сам говорил об этом.
Теперь вы знаете, как эта ложь распространилась по интернету, — да, Intel сделала удачный маркетинговый ход. Он сработал, потому что в нем есть доля правды. Но чтобы действительно понять разницу между RISC и CISC, вам нужно избавиться от этого мифа.
Мысль о том, что внутри CISC-процессора может быть RISC, только запутает вас.
Философия CISC
Давайте поговорим о том, что из себя представляют RISC и CISC. И то, и другое — философия того, как нужно проектировать процессоры.
Взглянем на философию CISC. Эту философию сложно определить, так как микросхемы, которые мы определяем как CISC, очень разнообразны. Однако в них можно выделить общие закономерности.
В конце 1970, когда началась разработка CISC-процессоров, память была очень дорогой. Компиляторы тоже были плохие, а люди писали на ассемблере.
Так как память была дорогой, люди искали способ минимизировать использование памяти. Одно из таких решений — использовать сложные инструкции процессора, которые делают много действий.
Это также помогло программистам на ассемблере, так как они смогли писать более простые программы, ведь всегда найдется инструкция, которая выполняет то, что нужно.
Через некоторое время это стало сложным. Проектирование декодеров для таких команд стало существенной проблемой. Изначально ее решили с помощью микрокода.
В программировании повторяющийся код выносится в отдельные подпрограммы (функции), которые можно вызывать множество раз.
Идея микрокода очень близка к этому. Для каждой инструкции из набора создается подпрограмма, которая состоит из простых инструкций и хранится в специальной памяти внутри микропроцессора.
Таким образом, процессор содержит небольшой набор простых инструкций. На их основе можно создать множество сложных инструкций из набора команд с помощью добавления подпрограмм в микрокод.
Микрокод хранится в ROM-памяти (Read-Only Memory, только для чтения), которая значительно дешевле оперативной памяти. Следовательно, уменьшение использования оперативной памяти через увеличение использования постоянной памяти — выгодный компромисс.
Какое-то время все выглядело очень хорошо. Но со временем начались проблемы, связанные с подпрограммами в микрокоде. В них появились ошибки. Исправление ошибки в микрокоде в разы сложнее, чем в обычной программе. Нельзя получить доступ к этому коду и протестировать его как обычную программу.
Разработчики стали думать, что существует другой, более простой способ справиться с этими трудностями.
Философия RISC
Оперативная память стала дешеветь, компиляторы стали лучше, а большинство разработчиков перестало писать на ассемблере.
Эти технологические изменения спровоцировали появление философии RISC.
Сперва люди анализировали программы и заметили, что большинство сложных инструкций CISC не используются большинством программистов.
Разработчики компиляторов затруднялись в выборе правильной сложной инструкции. Вместо этого они предпочли использовать комбинацию нескольких простых инструкций для решения проблемы.
Вы можете сказать, что здесь применимо правило 80/20: примерно 80% времени тратится на выполнение 20% инструкций.
Идея RISC заключается в замене сложных инструкций на комбинацию простых. Так не придется заниматься сложной отладкой микрокода. Вместо этого разработчики компилятора будут решать возникающие проблемы.
Есть разногласия в том, как понимать слово «сокращенный» (reduced) в аббревиатуре RISC. Люди думают, что сокращено количество инструкций. Но более правильная интерпретация — это уменьшение сложности команд.
RISC-код может быть непростым для человека. Много лет назад я совершил ошибку, когда решил, что самостоятельное написание ассемблерного кода для PowerPC (архитектура IBM RISC с огромным количеством инструкций) сэкономит мое время. Это принесло мне множество лишней работы и разочарований.
Одним из аргументов RISC было то, что люди перестали писать ассемблерный код, поэтому необходимо создать набор инструкций, удобный для компиляторов. Архитектура RISC оптимизирована для компиляторов, но не для людей.
Хотя есть некоторые наборы команд RISC, при использовании которых людям кажется, что они просты для изучения. С другой стороны, при использовании RISC часто нужно писать больше команд, чем в случае CISC.
Конвейеризация: инновация RISC
Еще одна основная идея RISC — это конвейеризация. Для объяснения я проведу небольшую аналогию.
Представьте процесс покупки в продуктовом магазине. Хотя этот процесс отличается от страны к стране, я расскажу на примере родной Норвегии. Действия на кассе можно разделить на несколько шагов.
- Переместить покупки на конвейерную ленту и отсканировать штрих-коды на них.
- Использовать платежный терминал для оплаты.
- Положить оплаченное в сумку.
Хорошее векторное изображение, созданное на pch. vector (источник: www.freepik.com)
Если такое происходит без конвейеризации, то следующий покупать сможет переместить вещи на ленту только после того, как текущий покупатель заберет свои покупки. Аналогичное поведение изначально встречалось в CISC-процессорах, в которых по умолчанию нет конвейеризации.
Это неэффективно, так как следующий покупатель может начать использовать ленту, пока предыдущий кладет товар в сумку. Более того, даже платежный терминал можно использовать, пока человек собирает покупки. Получается, что ресурсы используются неэффективно.
Представим, что каждое действие занимает фиксированный промежуток времени или один такт. Это значит, что обслуживание одного покупателя занимает три такта. Таким образом, за девять тактов будут обслужены три покупателя.
Подключим конвейеризацию к данному процессу. Как только я начну работать с платежным терминалом, следующий за мной покупатель начнет выкладывать продукты на ленту.
Как только я начну складывать продукты в сумку, следующий покупатель начнет работу с платежным терминалом. При этом третий покупатель начнет выкладывать покупки из корзины.
В результате каждый такт кто-то будет завершать упаковку своих покупок и выходить из магазина. Таким образом, за девять тактов можно обслужить шесть покупателей. С течением времени благодаря конвейеризации мы приблизимся к скорости обслуживания «один покупатель за такт», а это почти девятикратный прирост.
Мы можем сказать, что работа с кассой занимает три такта, но пропускная способность кассы — один покупатель в такт.
В терминологии микропроцессоров это значит, что одна инструкция выполняется три такта, но средняя пропускная способность — одна инструкция в такт.
В этом примере я сделал предположение, что обработка каждого этапа занимает одинаковое количество времени. Иными словами, перенос продуктов из корзины на ленту занимает столько же времени, сколько оплата покупок.
Если время каждого этапа сильно варьируется, то это работает не так хорошо. Например, если кто-то взял очень много продуктов и долго выкладывает их на ленту, то зона с платежным терминалом и упаковкой продуктов будет простаивать. Это негативно влияет на эффективность схемы.
Проектировщики RISC прекрасно это понимали, поэтому попытались стандартизировать время выполнения каждой инструкции. Они разделены на этапы, каждый из которых выполняется примерно одинаковое количество времени. Таким образом, ресурсы внутри микропроцессора используются по максимуму.
Если рассмотреть ARM RISC-процессор, то мы обнаружим пятиступенчатый конвейер инструкций.
- (Fetch) Извлечение инструкции из памяти и увеличение счетчика команд, чтобы извлечь следующую инструкцию в следующем такте.
- (Decode) Декодирование инструкции — определение, что эта инструкция делает. То есть активация необходимых для выполнения этой инструкции частей микропроцессора.
- (Execute) Выполнение включает использование арифметико-логического устройства (АЛУ) или совершение сдвиговых операций.
- (Memory) Доступ к памяти, если необходимо. Это то, что делает инструкция load.
- (Write Back) Запись результатов в соответствующий регистр.
Инструкции ARM состоят из секций, каждая из которых работает с одним из этих этапов, а выполнение этапа обычно занимает один такт. То есть инструкции ARM очень удобно конвейеризировать.
Более того, каждая инструкция имеет одинаковый размер, то есть этап Fetch знает, где будет располагаться следующая инструкция, и ему не нужно проводить декодирование.
С инструкциями CISC все не так просто. Они могут быть разной длины. То есть без декодирования фрагмента инструкции нельзя узнать ее размер и где располагается следующая инструкция.
Вторая проблема CISC — сложность инструкций. Многократный доступ к памяти и выполнение множества вещей не позволяют легко разделить инструкцию CISC на отдельные части, которые можно выполнять поэтапно.
Конвейеризация — это особенность, которая позволила первым RISC-процессорам на голову обогнать своих конкурентов в тестах производительности.
Складской робот как аналогия для конвейеризации. Использовалась в одной из моих новых статей.
В качестве альтернативного объяснения конвейеризации я написал историю, построенную на аналогии со складским роботом: Why Pipeline a Microprocessor?
Архитектура Load / Store
Чтобы количество тактов, необходимых для каждой инструкции, было примерно одинаковым и удобным для конвейеризации, набор инструкций RISC четко отделяет загрузку из памяти и сохранение в память от остальных инструкций.
Например, в CISC может существовать инструкция, которая загружает данные из памяти, производит сложение, умножение, что-нибудь еще и записывает результат обратно в память.
В мире RISC такого быть не может. Операции типа сложения, сдвига и умножения выполняются только с регистрами. Они не имеют доступа к памяти.
Это очень важный момент для конвейеризации. Иначе инструкции в конвейере могут зависеть друг от друга.
Большое количество регистров
Большая проблема для RISC — это упрощение инструкций, что ведет к увеличению их количества. Больше инструкций требуют больше памяти — недорогой, но медленной. Если программа RISC потребляет больше памяти, чем программа CISC, то она будет медленнее, так как процессор будет постоянно ждать медленного чтения из памяти.
Проектировщики RISC сделали несколько наблюдений, которые позволили решить эту проблему. Они заметили, что множество инструкций перемещают данные между памятью и регистрами, чтобы подготовиться к выполнению. Имея большое количество регистров, они смогли сократить количество обращений к памяти.
Это потребовало улучшений в компиляторах. Компиляторы должны хорошо анализировать программы, чтобы понимать, когда переменные можно хранить в регистре, а когда их стоит записать в память. Работа с множеством регистров стала важной задачей для компиляторов, позволяющей ускорить работу на RISC-процессорах.
Инструкции в RISC проще. В них нет большого количества разных режимов адресации, поэтому, например, среди 32-битных команд есть больше бит, чтобы указать номер регистра.
Это очень важно. В процессоре с легкостью могут разместиться сотни регистров. Это не так сложно и не требует большого количества транзисторов. Проблема заключается в недостатке бит, указывающих адрес регистра. Так, например, в x86 есть только 3 бита для указания регистра. Это дает нам всего 23 = 8 регистров. Процессоры RISC экономят биты из-за меньшего количества способов адресации. Таким образом, для адресации используется 5 бит, что дает 25 = 32 регистра. Очевидно, что это пример и значения могут отличаться, но тенденция сохраняется.
Сжатый набор инструкций
Сжатый набор инструкций — это относительно новая идея для мира RISC, созданная для решения проблемы большого потребления памяти, с которой не сталкиваются CISC-процессоры.
Поскольку эта идея нова, то ARM пришлось модернизировать ее под существующую архитектуру. А вот современный RISC-V специально проектировался под сжатый набор инструкций и потому поддерживает их с самого начала.
Это несколько переработанная идея CISC, так как CISC инструкции могут быть как очень короткими, так и очень длинными.
Процессоры RISC не могут добавить короткие инструкции, так как это усложняет работу конвейеров. Вместо этого проектировщики решили использовать сжатые инструкции.
Это означает, что подмножество наиболее часто используемых 32-битных инструкций помещается в 16-битные инструкции. Таким образом, когда процессор выбирает инструкцию, он может выбрать две инструкции.
Так, например, в RISC-V есть специальный «флаг», который обозначает, сжатая это инструкция или нет. Если инструкция сжатая, то она будет разобрана в две отдельные 32-битные инструкции.
Это интересный момент, так как вся остальная часть микропроцессора работает как обычно. На вход подаются привычные однородные 32-битные инструкции, и все остальное работает предсказуемо.
Следовательно, сжатые инструкции не добавляют никаких новых инструкций. Использование этой функции в значительной степени зависит от умных сборщиков и компиляторов. Сжатая инструкция использует меньше битов и, следовательно, не может выполнять все вариации того, что может делать обычная 32-битная инструкция.
Более того, сжатая инструкция имеет доступ только к 8 наиболее используемым регистрам, а не ко всем 32. Также я не смогу загрузить константы с большим числом или с большим адресом в памяти.
Таким образом, компилятор или сборщик должен решить, стоит ли упаковывать конкретную пару инструкций вместе или нет. Сборщик должен искать возможности для выполнения сжатия.
Хотя это все выглядит как CISC, это не он. Большая часть микропроцессора, конвейер команд и прочее используют 32-битные инструкции.
В ARM вам даже нужно переключать режим для выполнения сжатых инструкций. Сжатый набор инструкций на ARM называется Thumb. Это тоже сильно отличается от CISC. Вы не будете инициировать изменение режима для выполнения одной короткой инструкции.
Сжатые наборы инструкций изменили положение дел. Некоторые варианты RISC используют меньше байт, чем те же программы на x86.
Большие кэши
Кэши — это специальная форма очень быстрой памяти, которая располагается на микросхеме процессора. Они занимают дорогостоящую кремниевую площадь, необходимую процессору, поэтому есть ограничения по размеру кэшей.
Идея кэширования заключается в том, что большинство программ запускают небольшую часть себя гораздо чаще, чем остальную часть. Часто небольшие части программы повторяются бесчисленное количество раз, например, в случае циклов.
Следовательно, если поместить наиболее часто используемые части программы в кэш, то можно добиться значительного прироста скорости.
Это была ранняя стратегия RISC, когда программы для RISC занимали больше места, чем программы для CISC. Поскольку процессоры RISC были проще, для их реализации требовалось меньше транзисторов. Это оставляло больше кремниевой площади, которую можно было потратить на другие вещи, например, для кэшей.
Таким образом, имея большие кэши, процессоры RISC компенсировали то, что их программы больше, чем программы CISC.
Однако со сжатием инструкций это уже не так.
CISC наносит ответный удар — микрооперации
Конечно, CISC не сидел сложа руки и не ждал, когда RISC его повергнет. Intel и AMD разработали собственные стратегии по эмуляции хороших решений RISC.
В частности, они искали способ конвейеризации инструкций, который никогда не работал с традиционными инструкциями CISC.
Было принято решение сделать внутренности CISC-процессора более RISC-похожими. Способ, которым это было достигнуто, — разбиение CISC-инструкции на более простые, названные микрооперациями.
Микрооперации, как инструкции RISC, легко конвейеризировать, потому что у них меньше зависимостей между друг другом и они выполняются за предсказуемое количество тактов.
Мое иллюстрированное руководство по микрооперациям: What the Heck is a Micro-Operation?
В чем различие микроопераций и микрокода?
Микрокод — это маленькие программы в ROM-памяти, которые выполняются для имитации сложной инструкции. В отличие от микроопераций их нельзя конвейеризировать. Они не созданы для этого.
На самом деле микрокод и микрооперации существуют бок о бок. В процессоре, который использует микрооперации, программы микрокода будут использоваться для генерации серии микроопераций, которые помещаются в конвейер для последующего выполнения.
Имейте в виду, что микрокод в традиционном CISC-процессоре должен производить декодирование и выполнение. По мере выполнения микрокод берет под свой контроль различные ресурсы процессора, такие как АЛУ, регистры и так далее.
В современных CISC микрокод выполнит работу быстрее, потому что не использует ресурсов процессора. Он используется просто для генерации последовательности микроопераций.
Как микрооперации отличаются от RISC-инструкций
Это самое распространенное заблуждение. Люди думают, что микрооперации — это то же самое, что и RISC-инструкции. Но это не так.
Инструкции RISC существуют на уровне набора команд. Это то, с чем работают компиляторы. Они думают о том, что вы хотите сделать, а мы пытаемся оптимизировать это.
Инструкции прибывают из памяти, обычно из высокоскоростного кэша. Далее они входят в декодер, который разбивает каждую инструкцию на одну или несколько микроопераций. Хотя они выполняют меньше одной инструкции, они значительно больше.
Микрооперация — это нечто совершенно иное. Микрооперации, как правило, большие. Они могут быть больше 100 бит. Неважно, насколько они большие, потому что они существуют временно. Это различает их от инструкций RISC, которые составляют программы и могут занимать гигабайты памяти. Инструкции не могут быть сколь угодно большими.
Микрооперации специфичны для каждой модели процессора. Каждый бит указывает часть процессора, которую необходимо включить или выключить при исполнении.
В общем случае нет необходимости в декодировании, если можно сделать большую инструкцию. Каждый бит отвечает за определенный ресурс в процессоре.
Таким образом, разные процессоры с одинаковым набором команд будут иметь разные микрокоды.
Фактически многие высокопроизводительные RISC-процессоры превращают инструкции в микрооперации. Это потому что микрооперации даже проще, чем инструкции RISC. Но использование микроопераций не является обязательным. Процессор ARM с меньшей производительностью может не использовать микрооперации, а процессор с более высокой производительностью и теми же инструкциями может использовать.
Преимущество RISC существует до сих пор. Набор инструкций CISC не проектировался для конвейеризации. Следовательно, разбиение этих инструкций на микрооперации — сложная задача, которая не всегда решается эффективно. Перевод инструкций RISC в микрооперации обычно бывает более простым.
Фактически некоторые RISC-процессоры используют микрокод для некоторых инструкций, как CISC-процессоры. Одним из таких примеров является сохранение и восстановление состояния регистров при вызове подпрограмм. Когда одна программа переходит к другой подпрограмме для выполнения задачи, эта подпрограмма будет использовать некоторые регистры для локальных вычислений. Код, вызывающий подпрограмму, не хочет, чтобы его данные в регистрах изменялись случайным образом, поэтому он должен их сохранить в памяти.
Это настолько частое явление, что добавление конкретной инструкции для сохранения нескольких регистров в память было слишком заманчивым. В противном случае эти инструкции могут съесть много памяти. Поскольку это предполагает многократный доступ к памяти, имеет смысл добавить это как программу микрокода.
Однако не все RISC процессоры делают это. Например, RISC-V пытается быть более «чистым» и не имеет специальной инструкции для этого. Команды RISC-V оптимизированы для конвейеризации. Более строгое следование философии RISC делает конвейеризацию более эффективной.
Гипертрединг (аппаратные потоки)
Еще один трюк, который используется CISC, — это гипертрединг.
Напомню, что микрооперации непростые. Конвейер команд не будет заполнен полностью на постоянной основе, как у RISC.
Поэтому используется трюк под названием гипертрединг. Процессор CISC берет несколько потоков инструкций. Каждый поток инструкций разбивается на части и конвертируется в микрооперации.
Поскольку этот процесс несовершенен, вы получите ряд пробелов в конвейере. Но, имея дополнительный поток инструкций, вы можете поместить в эти промежутки другие микрооперации и таким образом заполнить конвейер.
Эта стратегия актуальна и для RISC-процессоров, потому что не каждая инструкция может исполняться каждый такт. Доступ к памяти, например, занимает больше времени. Аналогично для сохранения и восстановления регистров с помощью сложной инструкции, которую предоставляют некоторые RISC-процессоры. В коде также есть переходы, которые вызывают пробелы в конвейере.
Следовательно, более продвинутые и производительные процессоры RISC, такие как IBM POWER, тоже будут использовать аппаратные потоки.
В моем понимании трюк с гипертредингом более выгоден для процессоров CISC. Создание микроопераций — менее идеальный процесс, и он создает больше пробелов в конвейере, следовательно, гипертрединг дает больший прирост производительности.
Если ваш конвейер всегда заполнен, то от гипертрединга/аппаратных потоков нет никакой пользы.
Аппаратные потоки могут представлять угрозу безопасности. Intel столкнулась с проблемами безопасности, потому что один поток инструкций может влиять на другой. Я не знаю подробностей, но некоторые производители предпочитают отключать аппаратные потоки по этой причине.
Как правило, аппаратные потоки дают примерно 20% прирост производительности. То есть процессор с 5 ядрами и гипертредингом будет приблизительно похож на процессор с 6 ядрами без него. Но данное значение зависит во многом от архитектуры процессора.
В любом случае, это одна из причин, почему ряд производителей высокопроизводительных чипов ARM, таких как Ampere, выпускают 80-ядерный процессор без гипертрединга. Более того, я не уверен, что хоть какой-то процессор ARM использует аппаратные потоки.
Процессор Ampere используется в дата-центрах, где важна безопасность.
Действительно ли стоит различать RISC и CISC?
Да, в основе лежат принципиально разные философии. Это не так важно для высокопроизводительных чипов, поскольку у них такое же большое количество транзисторов и сложность разделения инструкций x86 затмевается всем остальным.
Однако эти чипы выглядит по-разному, и к ним необходим разный подход.
Некоторые характеристики RISC больше не имеют особого смысла. Наборы инструкций RISC не обязательно малы. Хотя это во многом зависит от того, как вы считаете.
Взгляд на RISC-V может дать хорошее представление о разнице. RISC-V основан на идее адаптировать создание конкретных микросхем с возможностью выбирать, какие расширения набора команд будут использоваться.
Тем не менее, все еще существует минимальный набор основных инструкций, и это очень похоже на RISC:
- фиксированный размер инструкции;
- инструкции разработаны для использования определенных частей процессора и оптимизированы для конвейерной обработки;
- архитектура Load/Store. Большинство инструкций работают с регистрами. Работа с памятью производится в основном с помощью специальных инструкций, созданных исключительно для этого;
- множество регистров, чтобы избежать частого доступа к памяти.
Для сравнения, инструкции CISC могут быть переменной длины. Люди могут спорить, что микрооперации — это стиль RISC, но микрокод — это деталь реализации, близкая к аппаратной.
Одна из ключевых идей RISC — переложить тяжелую работу на компилятор. Это все еще так. Компилятор не может преобразовать микрооперации для оптимального выполнения.
Время наиболее критично при выполнении микроопераций, чем при компиляции. Это очевидное преимущество, которое позволяет передовым компиляторам перестраивать код вместо того, чтобы полагаться на драгоценный кремний.
Хотя процессоры RISC с годами получили более специализированные инструкции, например, для векторной обработки, у них по-прежнему нет сложности с множеством режимов доступа к памяти как у CISC.
Источники и дополнительное чтение
Источники для этой статья я указывал в предыдущей статье.
Также отмечу следующие источники:
- RISC vs. CISC Still Matters от Paul DeMone.
- Instruction Set Architecture.
- RISC.
- Intel 8086.
- On ARM Performance от Xavier Tobin.
- RISC-V compressed instruction set format.
- Видеопрезентация того, как хорошо работает сжатый набор инструкций в RISC-V.
- Классическая конвейеризация RISC. Более подробно рассказывается о том, как наборы инструкций RISC разработаны для работы с конвейерами. Что делается на каждом этапе и так далее.
- Status Register. Я не обсуждал эту тему, но мне интересно узнать больше о компромиссах для различных версий RISC и конвейерной обработки. Многие процессоры RISC, например, не имеют «флагов» состояния для арифметических операций, только «флаг» общего назначения.
- Why Is Apple’s M1 Chip So Fast?
- Learn Assembly Programming the Fun Way
- Random Facts About ARM, x86, RISC-V, AVR and MIPS Microprocessors
Это может быть RISC, CISC или и то и другое | Computerworld Россия
RISC против CISC, поставщики Unix против Intel. Когда-то это было серьезное соперничество, по накалу страстей не уступавшее сегодняшней битве между Netscape Communications и Microsoft. Сегодня «процессор сам по себе
утратил былую актуальность», считает Джон Олтсик, аналитик компании Forrester Research. Для менеджеров информационных систем выбор теперь чаще основан на программном обеспечении и операционной системе. Однако микропроцессорная архитектура по-прежнему играет весомую роль в таких областях, как масштабируемость для приложений с высоким уровнем требований, и здесь преимущество по-прежнему остается за RISC.
Сегодня проблемы серверных кристаллов куда более расплывчаты. Computerworld попросил нескольких промышленных аналитиков помочь прояснить эти проблемы и тем самым облегчить процесс принятия решений о покупке той или иной аппаратуры. «Года два назад вы покупали продукцию Intel из-за ее цены, а RISC-процессоры из-за их производительности. Сегодня Intel ликвидировала эту брешь в производительности», — говорит Джим Гарден из компании Technology Business Research. По его словам, покупатели теперь должны сосредоточивать усилия на прикладном программном обеспечении и операционной системе. Им следует уделять внимание микропроцессорной скорости как таковой.
Два подхода
Вычислительная архитектура с сокращенным набором машинных команд (RISC) реализует метод компьютерной обработки, использующий правило 80/20, по которому в 80% работы центрального процессора используется только часть общего набора команд микропроцессора. Создатели RISC-процессоров взяли этот уменьшенный, упрощенный набор команд и объединили его с такими технологиями, как конвейерная обработка, которые позволяют микропроцессору выполнять множество команд за один процессорный цикл. В результате получился процессор, который имеет лучшую производительность для большинства приложений и теоретически стоит меньше, поскольку сам он небольшой и его производство обходится дешевле.
В список основных поставщиков RISC-систем входят компании Hewlett-Packard (PA-RISC), Sun Microsystems Computers (SPARC), Digital Equipment (Alpha), Silicon Graphics — модуль MIPS (R210000) и союз IBM и Motorola (PowerPC).
С другой стороны, семейства Pentium и Pentium Pro компании Intel продолжают реализацию более традиционной вычислительной архитектуры с полным набором машинных команд (CISC). CISC-процессоры содержат в сотни раз больше команд, чем RISC-процессоры, и используют от 8 до 12 способов адресации памяти по сравнению с 2-3 способами в RISC. Однако технические различия между RISC и CISC в последние годы становятся все менее четкими, особенно в том, что касается общей производительности систем. И CISC-, и RISC-системы, например, показывают в тестах обработки транзакций близкие результаты — от 5000 до 8000 транзакций в минуту, в зависимости от особенностей конфигурации. Для некоторых типов задач CISC-системы могут превзойти RISC. Два года назад это было бы неслыханно.
Одна архитектура заимствует хорошие идеи у другой. RISC-процессоры определялись как микропроцессоры с количеством команд меньше 128, сейчас же они имеют 200 команд — сравните с набором из 300 и более команд в CISC. Сегодня CISC-процессоры используют конвейеризацию и суперкамерные технологии. Оба лагеря применяют большую кэш-память для повышения производительности.
Лежащий в основе системы микропроцессор по-прежнему играет определяющую роль при выборе сервера, однако покупателей теперь интересует не только техническая архитектура процессора. Основное внимание уделяется смежным проблемам: производительности приложений, масштабируемости, цене, доступности программного обеспечения, адресному пространству памяти и дизайну подсистем.
Ниже рассматриваются обе категории, дается обзор микропроцессорных архитектур, и анализируются пути решения этих проблем. В плане масштабируемости RISC-системы раньше обладали явным преимуществом благодаря поддержке симметричной многопроцессорности (SMP). Для организаций, которым нужны SMP-серверы среднего и высокого уровня, системы на базе RISC остаются наиболее предпочтительным выбором.
Однако преимущества RISC в основном обусловлены использованием операционной системы Unix, а не какими-либо характерными особенностями RISC-процессора.
Проблема SMP-систем в том, как операционная система распределяет работу между множеством процессоров. И здесь Intel приходится ждать, пока поставщики ОС не справятся с этой задачей. В настоящее время тандем RISC/Unix в этой области пользуется преимуществом.
По словам Гардена, серверы CISC/Intel, оснащенные операционной системой Windows NT производства Microsoft, могут без проблем поддерживать четыре процессора и даже доводить их число до шести для SMP-систем младшего класса. Как сообщает Джонатан Энис, аналитик компании Illuminata, для систем высокого уровня с массовым параллелизмом, где операционная система в любом случае настраивается на аппаратную архитектуру, компании NCR, Data General, Unisys, Sequent Computer Systems и другие предлагают большие серверы с параллельной обработкой на базе Intel, на которых работают различные реализации Unix. Серверы с параллельной обработкой на базе Intel имеют десятки и даже сотни процессоров.
«Масштабируемость больше не является преградой для CISC/Intel», — говорит Джонатан Энис. Выбор масштабируемости зависит от того, какое масштабирование вы хотите выполнить. CISC подойдет, если вы намерены перейти к сложным системам с массовым параллелизмом, в которых десятки, если не сотни процессоров. Но в менее сложных SMP-системах, с числом процессоров от четырех до шести, предпочтительнее иметь RISC.
Производительность приложений
Сегодня разница в производительности между RISC и CISC наиболее очевидна в вычислениях с плавающей точкой, где на микропроцессор падает большая математическая нагрузка. Высокая производительность RISC в вычислениях с плавающей точкой используется в финансово-торговых системах и сложных инженерных приложениях. Однако для большинства приложений бизнес-серверов высокой производительности вычислений с плавающей точкой не требуется. Им нужна производительность усложненных вычислений. «Процессор Intel Pentium по уровню производительности усложненных вычислений вполне конкурентоспособен», — говорит Рич Партридж, научный аналитик компании B. H. Brown Associates. Целые вычисления работают с целыми числами, для представления которых требуется меньшее число бит. Следовательно, они требуют меньше процессорных действий. Большинство бизнес-приложений, которые обеспечивают число заказанных изделий или вычисляют количество товаров на складе, используют главным образом усложненные вычисления.
В многопроцессорных системах производительность процессора вызывает меньше проблем. При объединении множества процессоров в бизнес-сервере, именуемом Falcon важнейшими факторами, влияющими на производительность, являются способ распределения системой работы между процессорами и то, как система справляется с узкими местами, а отнюдь не скорость отдельных процессоров. В этой области выбор процессора определяется «природой» ваших приложений. Если в них преобладают целочисленные вычисления, стоит выбрать CISC. Если у вас много приложений, требующих обширных вычислений с плавающей точкой, предпочтение следует отдать RISC.
Стоимость
В индустрии микропроцессоров фактор стоимости преобладает над технологией. Например, альянс Apple Computer/IBM/Motorola с помощью процессора RISC PowerPC намеревалось достичь такой же экономии, как и Intel. Идею не удалось реализовать, поэтому PowerPC остается дорогим процессором по сравнению с процессором Intel.
Серьезной проблемой становится жизнеспособность продукта в будущем, а не соотношение цена/производительность. «PowerPC отстал на отрезке цена/производительность. Время для них ушло», — отмечает Энис. «Я не уверен, что есть основания продолжать это дело. Если Apple примет процессор Intel, это будет конец для PowerPC», — считает Гарден. Тем, кто покупает серверы с PowerPC, нужно убедиться, что их поставщик и процессор будут жизнеспособными в течение срока существования продукта.
Тем временем Intel продолжает прикладывать усилия к тому, чтобы повысить производительность процессоров и при этом обеспечить товарный уровень цен. Организации, которым нужно наилучшее соотношение цена/производительность для бизнес-серверов младшего и среднего класса, выберут CISC/Intel. В этом секторе рынка RISC устроит только тех, кому нужна производительность вычислений с плавающей точкой или максимальный уровень масштабируемости SMP (а здесь RISC сильнее), либо тех, кто просто предпочитает RISC-реализации Unix.
Конструкция подсистем
Сегодняшний бизнес-сервер — это сложная система, состоящая из множества взаимосвязанных частей. Процессор — лишь одна из таких частей и не обязательно самая важная. В среде бизнес-сервера дисковый ввод/вывод, память, кэш, коммуникационная шина и коммутаторы — все это имеет большое значение, равно как и операционная система, промежуточное ПО и система управления базой данных. Когда используется множество процессоров, конструкция и реализация этих подсистем критичны для ликвидации узких мест, которые могут свести к нулю любые преимущества производительности ЦПУ.
С Pentium Pro Intel предлагает поставщикам не только процессоры, но целые четырехпроцессорные SMP-подсистемы. Из этих подсистем, как из строительных блоков, поставщики начинают создавать бизнес-серверы младшего класса с SMP на базе процессоров Pentium Pro по вполне приемлемым ценам. RISC- и CISC-системы обеспечивают сопоставимое качество интеграции. Различие только в цене. По словам Эниса, поставщиков систем на базе Intel намного больше, а их цены гораздо ниже. В системах старшего класса архитектура и интеграция подсистем становятся значительным фактором дифференциации между поставщиками.
Доступность программного обеспечения
«Прежде всего выбирайте прикладное ПО. Это поможет вам принять решение относительно операционной системы. Затем выбирайте платформу, на которой она будет работать», — советует Энис.
Последовав этому совету, вы, скорее всего, остановитесь на RISC, если пользуетесь ОС Unix, — как считает Олтсик, — поскольку именно здесь сосредоточены усилия основных поставщиков Unix. Такие ведущие поставщики Unix-систем, как Sun (Solaris), HP (HP-UX) и IBM (AIX), — используют RISC-процессоры. Если вы приобретаете Windows NT, у вас есть возможность выбрать процессор Intel или Alpha компании Digital. «Однако 90% NT-серверов используют Intel», — говорит Олтсик. Те покупатели NT, которые предпочли RISC-процессор Alpha, обычно работают с приложениями с большой вычислительной нагрузкой. «Шумное явление Windows NT в 1994 году несколько затруднило процесс выбора процессоров», — вспоминает Энис. Основные поставщики приложений, такие как SAP AG, переносят свои продукты на Windows NT, которая поднимает CISC/Intel на уровень общецелевого бизнес-сервера среднего класса.
Адресное пространство памяти
С появлением приложений классов хранилищ данных и добычи данных выбор между RISC и CISC, возможно, будет определяться 64-разрядной обработкой, для которой в настоящее время требуется RISC. CISC-процессоры 32-разрядные, но Intel сообщает о разработке 64-разрядного процессора, хотя пока это дело будущего. Выбор между RISC и CISC зависит от того, какой объем памяти вам необходим. В 64-разрядном процессоре адресное пространство памяти составляет 15 эксабайт (эксабайт больше мегабайта в 100 в четвертой степени раз).
Объем адресного пространства памяти в 32-разрядных процессорах составляет 4 Гбайт. Intel «выжимает» из своего процессора 64-гигабитное адресное пространство, используя нестандартные расширения микропроцессорной архитектуры, но операционные системы, работающие на Intel, еще не могут даже близко подойти к таким размерам адресации. По словам Эниса, даже самые большие 64-разрядные RISC-системы в общем случае обеспечивают только от 10 до 12 Гбайт памяти.
Если вы работаете с сложными приложениями баз данных или добычи данных, наличие 64-разрядного адресного пространства и 64-разрядных данных может обеспечить значительные преимущества в производительности. «64-разрядные процессоры позволяют вам использовать больше памяти, делая доступ к данным в 100 раз быстрее», — объясняет Олтсик.
Добавление в RISC-систему гигабайт памяти в результате приводит к дорогому серверу, но даже для критичных приложений, которым необходимо стократное повышение производительности, лучшего выбора, видимо, не существует.
Основные выводы
Используйте RISC/Unix для высокоскоростных серверов с интенсивной вычислительной нагрузкой, для 64-разрядного адресного пространства памяти и для SMP-масштабируемости.
С другой стороны, системы старшего класса с массовым параллелизмом переходят к CISC/Intel. Для среднего уровня выбирается RISC или CISC с ОС Unix или Windows NT. Системы младшего класса безраздельно принадлежат Intel.
С практической точки зрения, большинство пользователей выберут ту операционную систему, Unix или NT, с которой они чувствуют себя комфортно, и тот частный диалект Unix, который они использовали раньше. Если эти решения приняты, то выбор процессора осуществится сам собой.
Intel агитирует независимых поставщиков поддержать MMX
Как сообщили представители компании Intel, первые три месяца производства мультимедиа-процессоров MMX завершатся выпуском ориентированного на MMX программного обеспечения. Это ПО должно быть создано независимыми производителями.
«Уже создано 15-20 приложений, — отметил Стив Кони, менеджер по программе процессоров Pentium группы настольных систем компании Intel. — Это игровые, справочные, деловые приложения и средства обучения».
Деловые приложения будут включать в себя коммуникационное программное обеспечение, ориентированное на MMX, такое как ProShare VideoPhone самой Intel и Juggler компании Purespeech.
Juggler позволит ПК читать и реферировать сообщения электронной почты, а также воспроизводить голосовые сообщения по телефону. Выпуск этого ПО запланирован на первый квартал 1997 года. Juggler будет работать на ПК под Windows 95, с оперативной памятью емкостью 16 Мбайт, процессором Pentium с функциями MMX и модемом с поддержкой голосовой почты. Стоимость продукта составит 149 долл.
Хотя большая часть мультимедиа-приложений первого поколения предназначена для домашних пользователей, руководство Intel ожидает ко второму кварталу следующего года бурный рост объема выпуска бизнес-приложений, особенно распознавания речи и для работы с изображениями. Intel не жалеет средств для быстрого распространения MMX-приложений.
Предполагается, что первые версии таких приложений от независимых поставщиков программного обеспечения появятся в неанглоязычных странах Европы и Азии, в том числе Японии и Китае.
Приложения, соответствующие спецификациям набора операторов MMX, обеспечат увеличение производительности систем, работающих на процессорах Pentium MMX, более чем на 60% по сравнению с версиями, не ориентированными на MMX, работающими на системах Pentium с той же тактовой частотой.
В январе Intel представит свои первые процессоры Pentium MMX, имеющие тактовую частоту до 200 МГц, как для настольных систем, так и для мобильных компьютеров.
Некоторые производители, в том числе Acer America, Digital Equipment, IBM и NEC Technologies, продемонстрировали прототипы систем MMX, которые планируется реализовать, как только Intel представит свои процессоры.
В феврале, вслед за январским выпуском Pentium MMX, Intel намерена представить следующее поколение мультимедиа-процессоров Pentium Pro, получивших название Klamath.
Первый Klamath с тактовой частотой 233 МГц будет поставляться на процессорной плате с кэш-памятью 2 уровня емкостью 512 Кбайт.
Первые системы Pentium Pro/MMX будут предназначены для корпоративного рынка, но вскоре появятся и в высокоуровневых домашних офисах.
— Терхо УимоненЧто день грядущий нам готовит
Большинство RISC-процессоров будут 64-разрядными
- В ближайшие 18-24 месяца появление 64-разрядного микропроцессора CISC/Intel не ожидается
- CISC/Intel по-прежнему будет задавать тон в соотношении цена/производительность
- RISC сосредоточит основное внимание на производительности для систем старшего класса
- PowerPC будет переналаживаться и усовершенствоваться для систем старшего класса, что приведет к появлению разнообразных, настроенных на пользовательские нужды вариантов PowerPC
- Неуклонное повышение производительности процессоров благодаря постоянным техническим усовершенствованиям, однако резких прорывов в производительности не ожидается.
Ведущие RISC -системы
Разделение рынка между пятью основными поставщиками RISC-систем в соответствии с данными International Data Corp. (перечислены в алфавитном порядке):
Digital Equipment
www. dec.com
Линия продуктов: серия Alpha (различные модели поддерживают комбинации Unix, Windows NT и OpenVMS компании HP)
Hewlett-Packard
www.hp.com
Линии продуктов: серия HP9000 (на базе HP-UX) и серия HP3000 (ОС HP MPX/IX)
IBM
www.ibm.com
Линии продуктов: RS/6000 (IBM AIX) и AS/400 Advanced (на базе OS/400)
Silicon Graphics
www.sgi.com
Линии продуктов: Origin, Challenge, Power Challenge (на базе SGI Irix)
Sun Microsystems Computer
www.sun.com
Линии продуктов: семейство Sun SPARC server (на базе Sun Solaris)
Что означает RISC и CISC?
Многие говорят, что разница между RISC и CISC стала несущественной. Так ли это? И если нет, то в чем разница между современными RISC и CISC процессорами?
Компания Apple выпустила процессор Apple Silicon M1, который произвел фурор. Теперь вы можете задаться вопросом, чем он отличается от процессоров Intel и AMD? Вероятно, вы слышали, что M1 — процессор с архитектурой ARM, а ARM — это RISC, в отличие от Intel и AMD.
Если вы читали про разницу между микропроцессорами RISC и CISC, то вы знаете, что множество людей утверждают об отсутствии практической разницы между ними в современном мире. Но так ли это на самом деле?
Хорошо, сейчас вы немного запутались и хотите исчерпывающих ответов. Эта статья — отличное начало.
Я разобрал сотни комментариев по этой теме и столько же написал в ответ. Некоторые из них были от инженеров, которые причастны к созданию этих микропроцессоров.
Я начну с базовых вещей, которые необходимо понять, прежде чем начать отвечать на интересующие вопросы о разнице RISC и CISC.
Вот темы, которые будут рассмотрены в данной статье:
- Что такое микропроцессор?
- Что такое архитектура набора команд (ISA)?
- Зачем выбирать ISA?
- В чем разница между наборами команд RISC и CISC?
- Философия CISC.
- Философия RISC.
- Конвейеризация.
- Архитектура Load / Store.
- Сжатый набор инструкций.
- Микрокод и микрокоманды.
- Чем отличаются микрокоманды от инструкции RISC?
- Гипертрединг (аппаратные потоки).
- Действительно ли стоит различать RISC и CISC?
Я использую данные темы в заголовках, поэтому вы можете читать только про то, что вам интересно.
Что такое микропроцессор?
Давайте сначала разберемся что такое микропроцессор. Вероятно, у вас уже есть предположения, иначе вы не открыли бы эту статью.
В общем случае процессор — это мозг компьютера. Он читает инструкции из памяти, которые указывают, что делать компьютеру. Инструкции — это просто числа, которые интерпретируются специальным образом.
В памяти нет ничего, что позволяло бы отличить обычное число от инструкции. Поэтому разработчики операционных систем должны быть уверены, что инструкции и данные лежат там, где процессор ожидает их найти.
Микропроцессоры (CPU) выполняют очень простые операции. Вот пример нескольких инструкций, которые выполняет процессор:
load r1, 150 load r2, 200 add r1, r2 store r1, 310
Это человекочитаемая форма того, что должно быть просто списком чисел для компьютера. Например, load r1, 150 в обычном RISC микропроцессоре представляется в виде 32-битного числа. Это значит, что число представлено 32 символами, каждый из которых 0 или 1.
load в первой строчке перемещает содержимое ячейки памяти 150 в регистр r1. Оперативная память компьютера (RAM) — это хранилище миллиардов чисел. Каждое число хранится по своему адресу, и так микропроцессор получает доступ к правильному числу.
Упрощенная диаграмма операций в микропроцессоре. Инструкции помещаются в регистр инструкций, где происходит декодирование. Декодер активирует нужные части процессора и операция выполняется.
Далее вы можете заинтересоваться, что такое регистр. Эта концепция достаточно старая. Старые механические кассовые аппараты были основаны на этой концепции. В те времена регистр был чем-то вроде механического приспособления, в котором хранилось число, с которым вы хотели работать. Часто в таких аппаратах был аккумуляторный регистр, в который вы могли добавлять числа, а регистр сохранял сумму.
Арифметический калькулятор Феликс. Русский механический калькулятор. Внизу виден аккумуляторный регистр, сохранявший до тринадцати десятичных знаков. Наверху — входной регистр, вмещающий пять знаков. Слева внизу — счетный регистр.
Ваши электронные калькуляторы работают по такому же принципу. Чаще всего на дисплее отображается содержимое аккумуляторного регистра, а вы выполняете действия, которые влияют на его содержимое.
Аналогичное справедливо для микропроцессора. В нем есть множество регистров, которым даны имена — например, A, B, C или r1, r2, r3, r4 и так далее. Инструкции микропроцессора обычно производят операции над этими регистрами.
В нашем примере add r1, r2 складывает содержимое r1 и r2 и полученный результат записывает в r1.
В конце мы сохраняем полученный результат в оперативной памяти в ячейке с адресом 310 с помощью команды store r1, 310.
Что такое архитектура набора команд (ISA)?
Как вы можете представить, количество инструкций, которые понимает процессор, ограничено. Если вы знакомы с программированием, вы знаете, что можно определять собственные функции. Так вот, машинные команды не имеют такой возможности.
Существует фиксированное количество команд, которые понимает процессор. И вы как программист не можете его расширить.
В мире представлено множество различных микропроцессоров, и они не используют одинаковый набор команд. Иными словами, они интерпретируют числа в инструкции по-разному.
Одна архитектура микропроцессора трактует число 501012 как add r10, r12, а другая архитектура — как load r10, 12. Комбинация инструкций, которые понимает процессор, и регистров, которые ему доступны, называется архитектурой набора команды (Instruction Set Architecture, ISA).
Микропроцессоры, например, Intel и AMD, используют архитектуру набора команд x86. А микропроцессоры, например, A12, A13, A14 от Apple, понимают набор команд ARM. Теперь в список ARM-процессоров можно включить M1.
Это те микропроцессоры, которые мы называем Apple Silicon. Они используют архитектуру набора команд ARM, как и множество других микропроцессоров телефонов и планшетов. Даже игровые приставки, такие как Nintendo и самый быстрый суперкомпьютер, используют набор команд ARM.
Набор команд x86 и ARM не является взаимозаменяемым. Программа компилируется под определенный набор команд, если, конечно, это не JavaScript, Java, C# или что-то подобное. В этом случае программа компилируется в байт-код, который похож на набор команд для несуществующего процессора. Для запуска такого кода требуется Just-In-Time компилятор или интерпретатор, который транслирует байт-код в инструкции, понятные для микропроцессора в вашем компьютере.
Это значит, что большинство программ, доступных на Mac, не будут запускаться на Mac с M1. Программы рассчитаны на набор инструкций x86. Чтобы решить эту проблему, программы перекомпилируются с использованием нового набора инструкций. У Apple есть козырь в рукаве, который называется Rosetta 2. Это решение позволяет транслировать инструкции x86 в инструкции ARM.
Почему произошел переход на совершенно другой набор команд?
Закономерный вопрос. Зачем использовать новый набор команд для Mac? Почему Apple не могла использовать набор команд x86 в микропроцессорах Apple Silicon? Так бы отпала необходимость в перекомпиляции или трансляции с помощью Rosetta 2.
Что ж. Архитектура набора команд сильно влияет на архитектуру процессора. Использование определенной архитектуры набора команд может усложнить или упростить задачу по созданию высокопроизводительного или энергоэффективного процессора.
Второй важный момент заключается в лицензировании. Apple не может свободно создавать свои процессоры с набором команд x86. Это часть интеллектуальной собственности Intel, а Intel не хочет конкурентов. Для сравнения, компания ARM не производит собственных микропроцессоров. Они занимаются проектированием архитектуры набора команд и предоставляют эталонные образцы микропроцессоров, которые ее реализуют.
Таким образом, ARM делает то, что вы хотите. Этого хочет и Apple. Они хотят создавать собственные решения для компьютеров со специализированным оборудованием для машинного обучения, криптографии и распознавания лиц. Если вы используете x86, то вам придется делать это на внешних чипах. Из соображений эффективности Apple хочет сделать все на одной большой интегральной схеме, то есть на том, что мы называем системой на кристалле (System-On-a-Chip, SoC).
Разработка началась со смартфонов и планшетов. Эти устройства слишком маленькие и не позволяют сделать множество чипов на одной большой материнской плате. Вместо этого необходимо уместить буквально все в один чип, который содержит микропроцессор, графический ускоритель, оперативную память и другое специализированное оборудование.
Материнская плата ПК, где графический ускоритель, сетевая карта и модули памяти подключаются через разъемы. Она слишком большая для планшетов и смартфонов, которые используют систему на кристалле.
Сейчас этот тренд наблюдается в ноутбуках, а чуть позже придет и к настольным ПК. Тесная интеграция оборудования дает повышенную производительность. Также негибкая система лицензирования x86 — еще один минус.
Но давайте не будем отходить в сторону от главной темы. Архитектуры набора команд обычно следуют разным основополагающим философиям. Набор команд x86 — это то, что мы называем архитектурой CISC, в то время как архитектура ARM следует принципам RISC. В этом заключается большая разница.
Инструкции CISC могут быть любой длины. Максимальная теоретическая длина инструкции x86 может быть бесконечной, но на практике не превышает 15 байт. Инструкции RISC имеют ограниченную длину.
В чем разница между набором команд RISC и CISC?
Аббревиатура CISC обозначает Complex Instruction Set Computer, а RISC — Reduced Instruction Set Computer.
Сегодня объяснить разницу между этими наборами команд сложнее, чем во время их появления, так как в процессе развития они заимствовали идеи друг у друга. Более того, проводилась маркетинговая кампания по размытию границ между ними.
Минуем маркетинговую дезинформацию
Пол ДеМоне (Paul DeMone) написал статью в 2000 году, которая дает некоторое представление о существовавшем тогда маркетинговом давлении.
В 1987 году лучшим среди x86 был процессор Intel 386DX, а среди RISC — MIPS R2000.
Несмотря на то, что процессор Intel имеет вдвое больше транзисторов (275 000 против 115 000 у MIPS) и вдвое больше кэш-памяти, процессор x86 проигрывает во всех тестах производительности.
Оба процессора работают на частоте 16 МГц, но RISC-процессор показывал результаты в 2-4 раза лучше.
Поэтому неудивительно, что в начале 90-х распространилась идея, что процессоры RISC значительно производительнее.
У Intel возникли проблемы с восприятием на рынке. Им было сложно убедить инвесторов и покупателей в том, что процессоры на устаревшей архитектуре CISC могут быть лучше процессоров RISC.
Так Intel стала позиционировать свои процессоры как RISC с простым декодером, который превращал команды CISC в команды RISC.
Таким образом, Intel выставила себя в очень привлекательном виде. Компания заявляла, что покупатель получает технологически совершенные процессоры RISC, которые понимают знакомый многим набор команд x86.
Давайте проясним один момент. Внутри процессора x86 нет RISC-составляющей. Это просто маркетинговый ход. Боб Колвеллс (Bob Colwells), один из создателей Intel Pentium Pro с RISC-составляющей, сам говорил об этом.
Теперь вы знаете, как эта ложь распространилась по интернету, — да, Intel сделала удачный маркетинговый ход. Он сработал, потому что в нем есть доля правды. Но чтобы действительно понять разницу между RISC и CISC, вам нужно избавиться от этого мифа.
Мысль о том, что внутри CISC-процессора может быть RISC, только запутает вас.
Философия CISC
Давайте поговорим о том, что из себя представляют RISC и CISC. И то, и другое — философия того, как нужно проектировать процессоры.
Взглянем на философию CISC. Эту философию сложно определить, так как микросхемы, которые мы определяем как CISC, очень разнообразны. Однако в них можно выделить общие закономерности.
В конце 1970, когда началась разработка CISC-процессоров, память была очень дорогой. Компиляторы тоже были плохие, а люди писали на ассемблере.
Так как память была дорогой, люди искали способ минимизировать использование памяти. Одно из таких решений — использовать сложные инструкции процессора, которые делают много действий.
Это также помогло программистам на ассемблере, так как они смогли писать более простые программы, ведь всегда найдется инструкция, которая выполняет то, что нужно.
Через некоторое время это стало сложным. Проектирование декодеров для таких команд стало существенной проблемой. Изначально ее решили с помощью микрокода.
В программировании повторяющийся код выносится в отдельные подпрограммы (функции), которые можно вызывать множество раз.
Идея микрокода очень близка к этому. Для каждой инструкции из набора создается подпрограмма, которая состоит из простых инструкций и хранится в специальной памяти внутри микропроцессора.
Таким образом, процессор содержит небольшой набор простых инструкций. На их основе можно создать множество сложных инструкций из набора команд с помощью добавления подпрограмм в микрокод.
Микрокод хранится в ROM-памяти (Read-Only Memory, только для чтения), которая значительно дешевле оперативной памяти. Следовательно, уменьшение использования оперативной памяти через увеличение использования постоянной памяти — выгодный компромисс.
Какое-то время все выглядело очень хорошо. Но со временем начались проблемы, связанные с подпрограммами в микрокоде. В них появились ошибки. Исправление ошибки в микрокоде в разы сложнее, чем в обычной программы. Нельзя получить доступ к этому коду и протестировать его как обычную программу.
Разработчики стали думать, что существует другой, более простой способ справиться с этими трудностями.
Философия RISC
Оперативная память стала дешеветь, компиляторы стали лучше, а большинство разработчиков перестало писать на ассемблере.
Эти технологические изменения спровоцировали появление философии RISC.
Сперва люди анализировали программы и заметили, что большинство сложных инструкций CISC не используются большинством программистов.
Разработчики компиляторов затруднялись в выборе правильной сложной инструкции. Вместо этого они предпочли использовать комбинацию нескольких простых инструкций для решения проблемы.
Вы можете сказать, что здесь применимо правило 80/20: примерно 80% времени тратится на выполнение 20% инструкций.
Идея RISC заключается в замене сложных инструкций на комбинацию простых. Так не придется заниматься сложной отладкой микрокода. Вместо этого разработчики компилятора будут решать возникающие проблемы.
Есть разногласия в том, как понимать слово «сокращенный» (reduced) в аббревиатуре RISC. Люди думают, что сокращено количество инструкций. Но более правильная интерпретация — это уменьшение сложности команд.
RISC-код может быть непростым для человека. Много лет назад я совершил ошибку, когда решил, что самостоятельное написание ассемблерного кода для PowerPC (архитектура IBM RISC с огромным количеством инструкций) сэкономит мое время. Это принесло мне множество лишней работы и разочарований.
Одним из аргументов RISC было то, что люди перестали писать ассемблерный код, поэтому необходимо создать набор инструкций, удобный для компиляторов. Архитектура RISC оптимизирована для компиляторов, но не для людей.
Хотя есть некоторые наборы команд RISC, при использовании которых людям кажется, что они просты для изучения. С другой стороны, при использовании RISC часто нужно писать больше команд, чем в случае CISC.
Конвейеризация: инновация RISC
Еще одна основная идея RISC — это конвейеризация. Для объяснения я проведу небольшую аналогию.
Представьте процесс покупки в продуктовом магазине. Хотя этот процесс отличается от страны к стране, я расскажу на примере родной Норвегии. Действия на кассе можно разделить на несколько шагов.
- Переместить покупки на конвейерную ленту и отсканировать штрих-коды на них.
- Использовать платежный терминал для оплаты.
- Положить оплаченное в сумку.
Хорошее векторное изображение, созданное на pch.vector (источник: www.freepik.com)
Если такое происходит без конвейеризации, то следующий покупать сможет переместить вещи на ленту только после того, как текущий покупатель заберет свои покупки. Аналогичное поведение изначально встречалось в CISC-процессорах, в которых по умолчанию нет конвейеризации.
Это неэффективно, так как следующий покупатель может начать использовать ленту, пока предыдущий кладет товар в сумку. Более того, даже платежный терминал можно использовать, пока человек собирает покупки. Получается, что ресурсы используются неэффективно.
Представим, что каждое действие занимает фиксированный промежуток времени или один такт. Это значит, что обслуживание одного покупателя занимает три такта. Таким образом, за девять тактов будут обслужены три покупателя.
Подключим конвейеризацию к данному процессу. Как только я начну работать с платежным терминалом, следующий за мной покупатель начнет выкладывать продукты на лету.
Как только я начну складывать продукты в сумку, следующий покупатель начнет работу с платежным терминалом. При этом третий покупатель начнет выкладывать покупки из корзины.
В результате каждый такт кто-то будет завершать упаковку своих покупок и выходить из магазина. Таким образом, за девять тактов можно обслужить шесть покупателей. С течением времени благодаря конвейеризации мы приблизимся к скорости обслуживания «один покупатель за такт», а это почти девятикратный прирост.
Мы можем сказать, что работа с кассой занимает три такта, но пропускная способность кассы — один покупатель в такт.
В терминологии микропроцессоров это значит, что одна инструкция выполняется три такта, но средняя пропускная способность — одна инструкция в такт.
В этом примере я сделал предположение, что обработка каждого этапа занимает одинаковое количество времени. Иными словами, перенос продуктов из корзины на ленту занимает столько же времени, сколько оплата покупок.
Если время каждого этапа сильно варьируется, то это работает не так хорошо. Например, если кто-то взял очень много продуктов и долго выкладывает их на ленту, то зона с платежным терминалом и упаковкой продуктов будет простаивать. Это негативно влияет на эффективность схемы.
Проектировщики RISC прекрасно это понимали, поэтому попытались стандартизировать время выполнения каждой инструкции. Они разделены на этапы, каждый из которых выполняется примерно одинаковое количество времени. Таким образом, ресурсы внутри микропроцессора используются по максимуму.
Если рассмотреть ARM RISC-процессор, то мы обнаружим пятиступенчатый конвейер инструкций.
- (Fetch) Извлечение инструкции из памяти и увеличение счетчика команд, чтобы извлечь следующую инструкцию в следующем такте.
- (Decode) Декодирование инструкции — определение, что эта инструкция делает. То есть активация необходимых для выполнения этой инструкции частей микропроцессора.
- (Execute) Выполнение включает использование арифметико-логического устройства (АЛУ) или совершение сдвиговых операций.
- (Memory) Доступ к памяти, если необходимо. Это то, что делает инструкция load.
- (Write Back) Запись результатов в соответствующий регистр.
Инструкции ARM состоят из секций, каждая из которых работает с одним из этих этапов, а выполнение этапа обычно занимает один такт. То есть инструкции ARM очень удобно конвейеризировать.
Более того, каждая инструкция имеет одинаковый размер, то есть этап Fetch знает, где будет располагаться следующая инструкция, и ему не нужно проводить декодирование.
С инструкциями CISC все не так просто. Они могут быть разной длины. То есть без декодирования фрагмента инструкции нельзя узнать ее размер и где располагается следующая инструкция.
Вторая проблема CISC — сложность инструкций. Многократный доступ к памяти и выполнение множества вещей не позволяют легко разделить инструкцию CISC на отдельные части, которые можно выполнять поэтапно.
Конвейеризация — это особенность, которая позволила первым RISC-процессорам на голову обогнать своих конкурентов в тестах производительности.
Складской робот как аналогия для конвейеризации. Использовалась в одной из моих новых статей.
В качестве альтернативного объяснения конвейеризации я написал историю, построенную на аналогии со складским роботом: Why Pipeline a Microprocessor?
Архитектура Load / Store
Чтобы количество тактов, необходимых для каждой инструкции, было примерно одинаковым и удобным для конвейеризации, набор инструкций RISC четко отделяет загрузку из памяти и сохранение в память от остальных инструкций.
Например, в CISC может существовать инструкция, которая загружает данные из памяти, производит сложение, умножение, что-нибудь еще и записывает результат обратно в память.
В мире RISC такого быть не может. Операции типа сложения, сдвига и умножения выполняются только с регистрами. Они не имеют доступа к памяти.
Это очень важный момент для конвейеризации. Иначе инструкции в конвейере могут зависеть друг от друга.
Большое количество регистров
Большая проблема для RISC — это упрощение инструкций, что ведет к увеличению их количества. Больше инструкций требуют больше памяти — недорогой, но медленной. Если программа RISC потребляет больше памяти, чем программа CISC, то она будет медленнее, так как процессор будет постоянно ждать медленного чтения из памяти.
Проектировщики RISC сделали несколько замечаний, которые позволили решить эту проблему. Они заметили, что множество инструкций перемещают данные между памятью и регистрами, чтобы подготовиться к выполнению. Имея большое количество регистров, они смогли сократить количество обращений к памяти.
Это потребовало улучшений в компиляторах. Компиляторы должны хорошо анализировать программы, чтобы понимать, когда переменные можно хранить в регистре, а когда их стоит записать в память. Работа с множеством регистров стала важной задачей для компиляторов, позволяющей ускорить работу на RISC-процессорах.
Инструкции в RISC проще. В них нет большого количества разных режимов адресации, поэтому, например, среди 32-битных команд есть больше бит, чтобы указать номер регистра.
Это очень важно. В процессоре с легкостью могут разместиться сотни регистров. Это не так сложно и не требует большого количества транзисторов. Проблема заключается в недостатке бит, указывающих адрес регистра. Так, например, в x86 есть только 3 бита для указания регистра. Это дает нам всего 23 = 8 регистров. Процессоры RISC экономят биты из-за меньшего количества способов адресации. Таким образом, для адресации используется 5 бит, что дает 25 = 32 регистра. Очевидно, что это пример и значения могут отличаться, но тенденция сохраняется.
Сжатый набор инструкций
Сжатый набор инструкций — это относительно новая идея для мира RISC, созданная для решения проблемы большого потребления памяти, с которой не сталкиваются CISC-процессоры.
Поскольку эта идея нова, то ARM пришлось модернизировать ее под существующую архитектуру. А вот современный RISC-V специально проектировался под сжатый набор инструкций и потому поддерживает их с самого начала.
Это несколько переработанная идея CISC, так как CISC инструкции могут быть как очень короткими, так и очень длинными.
Процессоры RISC не могут добавить короткие инструкции, так как это усложняет работу конвейеров. Вместо этого проектировщики решили использовать сжатые инструкции.
Это означает, что подмножество наиболее часто используемых 32-битных инструкций помещается в 16-битные инструкции. Таким образом, когда процессор выбирает инструкцию, он может выбрать две инструкции.
Так, например, в RISC-V есть специальный «флаг», который обозначает, сжатая это инструкция или нет. Если инструкция сжатая, то она будет разобрана в две отдельные 32-битные инструкции.
Это интересный момент, так как вся остальная часть микропроцессора работает как обычно. На вход подаются привычные однородные 32-битные инструкции, и все остальное работает предсказуемо.
Следовательно, сжатые инструкции не добавляют никаких новых инструкций. Использование этой функции в значительной степени зависит от умных сборщиков и компиляторов. Сжатая инструкция использует меньше битов и, следовательно, не может выполнять все вариации того, что может делать обычная 32-битная инструкция.
Более того, сжатая инструкция имеет доступ только к 8 наиболее используемым регистрам, а не ко всем 32. Также я не смогу загрузить константы с большим числом или с большим адресом в памяти.
Таким образом, компилятор или сборщик должен решить, стоит ли упаковывать конкретную пару инструкций вместе или нет. Сборщик должен искать возможности для выполнения сжатия.
Хотя это все выглядит как CISC, это не он. Большая часть микропроцессора, конвейер команд и прочее используют 32-битные инструкции.
В ARM вам даже нужно переключать режим для выполнения сжатых инструкций. Сжатый набор инструкций на ARM называется Thumb. Это тоже сильно отличается от CISC. Вы не будете инициировать изменение режима для выполнения одной короткой инструкции.
Сжатые наборы инструкций изменили положение дел. Некоторые варианты RISC используют меньше байт, чем те же программы на x86.
Большие кэши
Кэши — это специальная форма очень быстрой памяти, которая располагается на микросхеме процессора. Они занимают дорогостоящую кремниевую площадь, необходимую процессору, поэтому есть ограничения по размеру кэшей.
Идея кэширования заключается в том, что большинство программ запускают небольшую часть себя гораздо чаще, чем остальную часть. Часто небольшие части программы повторяются бесчисленное количество раз, например, в случае циклов.
Следовательно, если поместить наиболее часто используемые части программы в кэш, то можно добиться значительного прироста скорости.
Это была ранняя стратегия RISC, когда программы для RISC занимали больше места, чем программы для CISC. Поскольку процессоры RISC были проще, для их реализации требовалось меньше транзисторов. Это оставляло больше кремниевой площади, которую можно было потратить на другие вещи, например, для кэшей.
Таким образом, имея большие кэши, процессоры RISC компенсировали то, что их программы больше, чем программы RISC.
Однако со сжатием инструкций это уже не так.
CISC наносит ответный удар — микрооперации
Конечно, CISC не сидел сложа руки и не ждал, когда RISC его повергнет. Intel и AMD разработали собственные стратегии по эмуляции хороших решений RISC.
В частности, они искали способ конвейеризации инструкций, который никогда не работал с традиционными инструкциями CISC.
Было принято решение сделать внутренности CISC-процессора более RISC-похожими. Способ, которым это было достигнуто, — разбиение CISC-инструкции на более простые, названные микрооперациями.
Микрооперации, как инструкции RISC, легко конвейеризировать, потому что у них меньше зависимостей между друг другом и они выполняются за предсказуемое количество тактов.
Мое иллюстрированное руководство по микрооперациям: What the Heck is a Micro-Operation?
В чем различие микроопераций и микрокода?
Микрокод — это маленькие программы в ROM-памяти, которые выполняются для имитации сложной инструкции. В отличие от микроопераций их нельзя конвейеризировать. Они не созданы для этого.
На самом деле микрокод и микрооперации существуют бок о бок. В процессоре, который использует микрооперации, программы микрокода будут использоваться для генерации серии микроопераций, которые помещаются в конвейер для последующего выполнения.
Имейте в виду, что микрокод в традиционном CISC-процессоре должен производить декодирование и выполнение. По мере выполнения микрокод берет под свой контроль различные ресурсы процессора, такие как АЛУ, регистры и так далее.
В современных CISC микрокод выполнит работу быстрее, потому что не использует ресурсов процессора. Он используется просто для генерации последовательности микроопераций.
Как микрооперации отличаются от RISC-инструкций
Это самое распространенное заблуждение. Люди думают, что микрооперации — это то же самое, что и RISC-инструкции. Но это не так.
Инструкции RISC существуют на уровне набора команд. Это то, с чем работают компиляторы. Они думают о том, что вы хотите сделать, а мы пытаемся оптимизировать это.
Инструкции прибывают из памяти, обычно из высокоскоростного кэша. Далее они входят в декодер, который разбивает каждую инструкцию на одну или несколько микроопераций. Хотя они выполняют меньше одной инструкции, они значительно больше.
Микрооперация — это нечто совершенно иное. Микрооперации, как правило, большие. Они могут быть больше 100 бит. Неважно, насколько они большие, потому что они существуют временно. Это различает их от инструкций RISC, которые составляют программы и могут занимать гигабайты памяти. Инструкции не могут быть сколь угодно большими.
Микрооперации специфичны для каждой модели процессора. Каждый бит указывает часть процессора, которую необходимо включить или выключить при исполнении.
В общем случае нет необходимости в декодировании, если можно сделать большую инструкцию. Каждый бит отвечает за определенный ресурс в процессоре.
Таким образом, разные процессоры с одинаковым набором команд будут иметь разные микрокоды.
Фактически многие высокопроизводительные RISC-процессоры превращают инструкции в микрооперации. Это потому что микрооперации даже проще, чем инструкции RISC. Но использование микроопераций не является обязательным. Процессор ARM с меньшей производительностью может не использовать микрооперации, а процесс с более высокой производительностью и теми же инструкциями может использовать.
Преимущество RISC существует до сих пор. Набор инструкций CISC не проектировался для конвейеризации. Следовательно, разбиение этих инструкций на микрооперации — сложная задача, которая не всегда решается эффективно. Перевод инструкций RISC в микрооперации обычно бывает более простым.
Фактически некоторые RISC-процессоры используют микрокод для некоторых инструкций, как CISC-процессоры. Одним из таких примеров является сохранение и восстановление состояния регистров при вызове подпрограмм. Когда одна программа переходит к другой подпрограмме для выполнения задачи, эта подпрограмма будет использовать некоторые регистры для локальных вычислений. Код, вызывающий подпрограмму, не хочет, чтобы его данные в регистрах изменялись случайным образом, поэтому он должен их сохранить в памяти.
Это настолько частое явление, что добавление конкретной инструкции для сохранения нескольких регистров в память было слишком заманчивым. В противном случае эти инструкции могут съесть много памяти. Поскольку это предполагает многократный доступ к памяти, имеет смысл добавить это как программу микрокода.
Однако не все RISC процессоры делают это. Например, RISC-V пытается быть более «чистым» и не имеет специальной инструкции для этого. Команды RISC-V оптимизированы для конвейеризации. Более строгое следование философии RISC делает конвейеризацию более эффективной.
Гипертрединг (аппаратные потоки)
Еще один трюк, которая используется CISC, — это гипертрединг.
Напомню, что микрооперации непростые. Конвейер команд не будет заполнен полностью на постоянной основе, как у RISC.
Поэтому используется трюк под названием гипертрединг. Процессор CISC берет несколько потоков инструкций. Каждый поток инструкций разбивается на части и конвертируется в микрооперации.
Поскольку этот процесс несовершенен, вы получите ряд пробелов в конвейере. Но, имея дополнительный поток инструкций, вы можете поместить в эти промежутки другие микрооперации и таким образом заполнить конвейер.
Эта стратегия актуальна и для RISC-процессоров, потому что не каждая инструкция может исполняться каждый такт. Доступ к памяти, например, занимает больше времени. Аналогично для сохранения и восстановления регистров с помощью сложной инструкции, которую предоставляют некоторые RISC-процессоры. В коде также есть переходы, которые вызывают пробелы в конвейере.
Следовательно, более продвинутые и производительные процессоры RISC, такие как IBM POWER, тоже будут использовать аппаратные потоки.
В моем понимании трюк с гипертредингом более выгоден для процессоров CISC. Создание микроопераций — менее идеальный процесс, и он создает больше пробелов в конвейере, следовательно, гипертрединг дает больший прирост производительности.
Если ваш конвейер всегда заполнен, то от гипертрединга/аппаратных потоков нет никакой пользы.
Аппаратные потоки могут представлять угрозу безопасности. Intel столкнулась с проблемами безопасности, потому что один поток инструкций может влиять на другой. Я не знаю подробностей, но некоторые производители предпочитают отключать аппаратные потоки по этой причине.
Как правило, аппаратные потоки дают примерно 20% прирост производительности. То есть процессор с 5 ядрами и гипертредингом будет приблизительно похож на процессор с 6 ядрами без него. Но данное значение зависит во многом от архитектуры процессора.
В любом случае, это одна из причин, почему ряд производителей высокопроизводительных чипов ARM, таких как Ampere, выпускают 80-ядерный процессор без гипертрединга. Более того, я не уверен, что хоть какой-то процессор ARM использует аппаратные потоки.
Процессор Ampere используется в дата-центрах, где важна безопасность.
Действительно ли стоит различать RISC и CISC?
Да, в основе лежат принципиально разные философии. Это не так важно для высокопроизводительных чипов, поскольку у них такое же большое количество транзисторов и сложность разделения инструкций x86 затмевается всем остальным.
Однако эти чипы выглядит по-разному, и к ним необходим разный подход.
Некоторые характеристики RISC больше не имеют особого смысла. Наборы инструкций RISC не обязательно малы. Хотя это во многом зависит от того, как вы считаете.
Взгляд на RISC-V может дать хорошее представление о разнице. RISC-V основан на идее адаптировать создание конкретных микросхем с возможностью выбирать, какие расширения набора команд будут использоваться.
Тем не менее, все еще существует минимальный набор основных инструкций, и это очень похоже на RISC:
- фиксированный размер инструкции;
- инструкции разработаны для использования определенных частей процессора и оптимизированы для конвейерной обработки;
- архитектура Load/Store. Большинство инструкций работают с регистрами. Работа с памятью производится в основном с помощью специальных инструкций, созданных исключительно для этого;
- множество регистров, чтобы избежать частого доступа к памяти.
Для сравнения, инструкции CISC могут быть переменной длины. Люди могут спорить, что микрооперации — это стиль RISC, но микрокод — это деталь реализации, близкая к аппаратной.
Одна из ключевых идей RISC — переложить тяжелую работу на компилятор. Это все еще так. Компилятор не может преобразовать микрооперации для оптимального выполнения.
Время наиболее критично при выполнении микроопераций, чем при компиляции. Это очевидное преимущество, которое позволяет передовым компиляторам перестраивать код вместо того, чтобы полагаться на драгоценный кремний.
Хотя процессоры RISC с годами получили более специализированные инструкции, например, для векторной обратки, у них по-прежнему нет сложности с множеством режимов доступа к памяти как у CISC.
Источники и дополнительное чтение
Источники для этой статья я указывал в предыдущей статье.
Также отмечу следующие источники:
- RISC vs. CISC Still Matters от Paul DeMone.
- Instruction Set Architecture.
- RISC.
- Intel 8086.
- On ARM Performance от Xavier Tobin.
- RISC-V compressed instruction set format.
- Видеопрезентация того, как хорошо работает сжатый набор инструкций в RISC-V.
- Классическая конвейеризация RISC. Более подробно рассказывается о том, как наборы инструкций RISC разработаны для работы с конвейерами. Что делается на каждом этапе и так далее.
- Status Register. Я не обсуждал эту тему, но мне интересно узнать больше о компромиссах для различных версий RISC и конвейерной обработки. Многие процессоры RISC, например, не имеют «флагов» состояния для арифметических операций, только «флаг» общего назначения.
- Why Is Apple’s M1 Chip So Fast?
- Learn Assembly Programming the Fun Way
- Random Facts About ARM, x86, RISC-V, AVR and MIPS Microprocessors
Технические различия между ARM (RISC) и x86 (CISC)
Эта статья взята из:https://www.cnblogs.com/bitter/p/4023176.html
RISC и CISC, эта пара врагов, с момента своего рождения постоянно находились в затруднительном положении. По сей день, после многих лет развития, эти двое открыли пространство в своих областях и проникли друг в друга. RISC фокусируется на высокой производительности, высоком коэффициенте энергопотребления, небольшом размере и мобильных устройствах, CISC фокусируется на настольных, высокопроизводительных и гражданских рынках. Теперь представителем RISC является ARM, а представителем CISC — x86, с которым мы знакомы. Итак, в чем их технические отличия? Какие технические разногласия привели к такой большой разнице между ними?
Появление наборов инструкций
Чтобы прояснить разницу между RISC и CISC, то есть популярными сегодня ARM и x86, нам нужно немного продвинуться вперед и наблюдать некоторые вещи в начале рождения компьютера, чтобы мы могли четко понять набор инструкций, простоту и сложность Отношения между.
Примеры машинного языка | |
Машинный язык | смысл |
0000,0000,000000010000 | Представляет НАГРУЗКУ A, 16 |
0000,0001,000000000001 | Представляет НАГРУЗКУ B, 1 |
0001,0001,000000010000 | Представляет МАГАЗИН B, 16 |
0001,0001,000000000001 | Представляет МАГАЗИН B, 1 |
Сегодня студенты так счастливы изучать компьютер! Сегодня существует большое количество визуальных методов работы и различные зрелые языки программирования, которые близки к естественным языкам. На этих языках написано множество библиотек для выполнения этих фиксированных и сложных задач. Вам совсем не составит труда изучить и использовать этот «счастливый» компьютер — обратите внимание, что по сравнению с пользователями компьютеров в 1970-х годах он действительно намного лучше.
Старые компьютеры используют бумажную ленту для ввода и вывода, что крайне неэффективно.
В конце 1970-х годов, хотя появление компьютеров принесло различные удобства, они также принесли различные неудобства. Первый — это программирование. В то время не существовало высокоуровневого, близкого к естественному языку языка программирования с полной логикой, как сегодня, но для написания команд использовался машинный язык самого низкого уровня.
Машинный язык и более поздний язык ассемблера были неудобными в использовании, плохой читабельностью и сложными в обслуживании. Кроме того, наиболее важным моментом является то, что эти языки относительно «тупые». Если вы хотите вычислить некоторые немного сложные операции, такие как умножение, деление, тригонометрические функции, исчисление, уравнения и т. Д., Вам необходимо переписать программу для каждого вычисления (в В эпоху пробивки бумажной ленты для ввода данных не было удобной функции «вставить + копировать»).
Поэтому люди придумали способ написать набор стандартных программ для некоторых из наиболее часто используемых инструкций, таких как интегрирование, дифференцирование, умножение и деление, и оставить интерфейс для ввода данных. Это может значительно снизить сложность программирования, повысить эффективность программирования и упростить его использование. Как только эта идея была предложена, она была признана многими людьми в отрасли, и каждый дал этой идее название «набор инструкций».
Набор инструкций содержит большое количество базовых вычислений и используется людьми шаблонным и модульным способом. Для программного обеспечения появление наборов команд, несомненно, значительно повысило эффективность программирования. В то же время, благодаря наличию модульных инструкций, эффективность работы программного обеспечения также была улучшена. Что касается аппаратного обеспечения, эффективность выделенных модулей всегда выше, чем у модулей общего назначения, поэтому появление наборов команд также открыло новую дверь для улучшения производительности аппаратного обеспечения ЦП.
Сложный или обтекаемый?
После рождения набора команд производители процессоров, включая Intel, начали организовывать и стандартизировать эти наборы команд. Intel начала добавлять большое количество наборов инструкций в свой самый успешный процессор 8086 для повышения эффективности вычислений и повышения производительности процессора. В то же время тихо прорастает и другая мысль.
Чтобы быть совместимой с процессором 8086, Intel всегда должна использовать набор команд x86 CISC.
В отрасли есть известная «теорема 8020», которую можно применять по-разному: например, 80% людей в компании будут обычными сотрудниками, а 20% талантов могут стать лидерами; 80% того, что эти лидеры делают каждый день, не являются срочными или Не важно, 20% — это самый срочный и важный контент и т. Д. «Теорема 8020» резюмирует большую часть содержания социального развития. Хотя это не так точно, этого достаточно, чтобы показать, что большая часть содержания часто неэффективна, и основная часть из 20%, которая наиболее заслуживает внимания, часто представляет собой следующий абзац:
Набор команд ЦП представляет собой набор различных функций. Причина рождения набора инструкций заключается в том, что люди хотят быть более эффективными при написании программного обеспечения, а также он отвечает требованиям стандартизации и модульности при разработке вещей. Однако во всех наборах инструкций, после анализа людей и статистики, только 20% наборов инструкций будет использоваться в 80% случаев, а подавляющее большинство из 80% наборов инструкций должно появиться только в 20% случаев.
Эффективность процессоров RISC очень высока. Вообще говоря, коэффициент энергопотребления очень хороший, но инструкции сложнее, особенно программа больше. На картинке показан интерфейс процессора IBM Power 7, классического высокопроизводительного RISC-процессора.
Смысл здесь очень ясен. Если ЦП поддерживает все наборы инструкций, то 20% из них будут вызываться часто, а 80% из них часто простаивают и ничего не делают, по крайней мере, 80% времени. В эпоху, когда транзисторы ЦП были «маленькими деньгами», такой подход был серьезной тратой транзисторов. В этих условиях профессор Джон Хеннесси, бывший президент Стэнфордского университета, член Американской академии наук, Инженерной академии и Академии искусств и наук, и Дэвид Паттерсон, профессор компьютерных наук Калифорнийского университета в Беркли, предложили Более простой набор инструкций называется сокращенным набором инструкций, полное название — вычисление сокращенного набора инструкций, или сокращенно RISC. Традиционный большой и полный набор инструкций также получил официальное название, названное Computing Set Instruction Set Computing, или CISC.
Преимущество RISC в том, что количество инструкций и методов адресации было улучшено, что значительно снижает сложность проектирования, компилятор более эффективен и степень параллельного выполнения инструкций выше. В то же время ЦП производства RISC меньше по размеру, меньше по энергопотреблению, а по производительности и энергопотреблению выше. Однако RISC не лишен недостатков. Например, RISC CPU более эффективен для 20% обычно используемых наборов инструкций, а для некоторых редко используемых или сложных инструкций он завершается в сочетании нескольких часто используемых инструкций, и эффективность вычислений очевидна. упадок. Для программного обеспечения объем программы RISC больше, чем CISC, а сложность немного выше. А из-за оптимизированного набора команд производительность первого процессора RISC явно не так хороша, как у CISC того же периода, хотя он меньше и потребляет меньше энергии.
Сегодняшний процессор: x86 и ARM
Хотя с принципиальной точки зрения RISC и CISC можно охарактеризовать как колодезную воду, не нарушающую речную воду. Однако в процессе разработки RISC и CISC они извлекли уроки из сильных сторон друг друга, и у каждого из них есть свои преимущества.
Для CISC сам набор инструкций будет продолжать развиваться вместе с вычислительными требованиями, и он определенно будет расти. CISC продолжает развиваться, и количество транзисторов в его реальных процессорах будет бесконтрольно увеличиваться, а соотношение производительности и мощности и экономичность трудно удовлетворить. С точки зрения проектирования длина набора инструкций CISC не фиксирована, время выполнения не фиксировано, а конструкция сложна.Трудно найти эффективный общий путь проектирования для завершения выполнения инструкций. Кроме того, из-за разницы в скорости между процессором CISC и памятью кэш становится все более важным. Это также означает, что сам ЦП должен быть более оптимизированным и эффективным, а сэкономленное пространство необходимо использовать для размещения все более важных уровней кэша.
Чтобы решить эти проблемы, современные процессоры CISC начали серьезно изучать идеи RISC. Проблема с CISC состоит в том, что набор инструкций сложен и изменяем, и, очевидно, невозможно разработать отдельную аппаратную оптимизацию для каждой инструкции. Итак, ты можешь передумать? Выбор наиболее часто используемых наборов инструкций и их последующая оптимизация может значительно повысить эффективность; что касается менее часто используемых инструкций, они могут быть завершены комбинацией нескольких базовых инструкций — это идея RISC. Разница в том, что RISC позволяет реализовать идею на уровне инструкций, а CISC реализует эту идею на аппаратном уровне.
Процессор Intel Nehalem можно охарактеризовать как x86, разработанный на основе идей RISC.
В качестве примера возьмем процессор Intel Nehalem или AMD K10. Прежде всего, эти процессоры x86 внутренне используют «микрокоманды». Так называемые микрокоманды представляют собой некоторые базовые инструкции. Большинство инструкций CISC можно разделить на несколько простых и фиксированных микрокоманд. Во-вторых, внутри ЦП создается «блок перевода», который обычно выполняется блоком декодирования. В процессе работы ЦП принимает инструкцию x86, а затем блок декодирования разбирает полученную более сложную инструкцию X86 на одну или несколько микрокоманд. Например, Nehalem разработал 3 простых блока декодирования и 1 комплексный блок декодирования, которые могут декодировать и «преобразовывать» инструкции x86 в от 1 до 4 микрокоманд.
В-третьих, ЦП произведет достаточную оптимизацию для этих микрокоманд, чтобы его эффективность и скорость выполнения достигли удовлетворительного уровня. Конечно, в процессе декодирования не все инструкции x86 будут обрабатываться одинаково. Наиболее часто используемые инструкции, такие как mov, push, call, cmp, add и т. Д., Будут сфокусированы, приоритизированы и ускорены.Нечасто используемые инструкции либо разделяются на общие инструкции, либо входят в обычный цикл для обработки. Хотя эффективность имеет значение, учитывая малую вероятность использования, такая конструкция вполне приемлема. В процессе декодирования и обработки микрокоманд: как выполнять команды x86 более эффективно и результативно; как выражать и запускать микрокоманды; взаимосвязь между микрокомандами и инструкциями x86 и какие микрокоманды являются наиболее часто используемыми и приоритетными инструкциями, Станьте основным контентом, который больше всего влияет на производительность процессора.
Будущий ARM Cortex A-50 — это типичный продукт высокопроизводительных процессоров.
После внедрения идей RISC и новаторского дизайна процессоров x86, современные процессоры CISC могут в основном решать проблемы сложных инструкций CISC, большого размера и чрезмерного потребления транзисторов. По мнению производителей, ядро декодирования и конвейера хорошо спроектированного процессора x86 может выдержать несколько поколений разработки без отставания. Производители могут постоянно настраивать и развертывать ядра, которые были разработаны в процессе разработки, а также вносить изменения в конфигурацию кеша и шины для повышения производительности.
CISC позаимствовал идеи RISC и дал себе новую жизнь. Условно говоря, RISC также может учиться у CISC, но не слишком многому. Команда RISC проста и относительно фиксирована, а обработка выполняется быстро. В конструкции можно использовать более длинный конвейер для достижения высокой частоты и, в конечном итоге, повышения производительности. Но основная проблема RISC заключается в том, что набор инструкций прост. Поэтому при работе с некоторыми более сложными приложениями общее количество инструкций, которые необходимо прочитать памяти, занимает больше времени. В некоторых случаях низкая производительность также является недостатком RISC. Таким образом, при разработке RISC RISC постепенно внедряет идею CISC. Например, добавление некоторых новых наборов инструкций в соответствии со временем, дальнейшая оптимизация внутренней архитектуры и изменение рабочего цикла на нерегулярный цикл. С развитием RISC количество инструкций постепенно увеличивалось, а важные функции, такие как вычисления с плавающей запятой, становились все более мощными. Возьмем, к примеру, ARM. Он не только постепенно увеличивает производительность вычислений с плавающей запятой и добавляет специальные инструкции с плавающей запятой, но и планирует разработать высокопроизводительные процессоры ARM на существующей основе, чтобы в будущем улучшить реакцию на рыночные изменения, особенно для процессоров x86. Возможность соревноваться.
Будущие процессоры будут иметь более низкое энергопотребление и более высокую производительность.
Судя по текущим разработкам ЦП, будь то ARM или x86, будь то CISC или RISC, помимо консолидации собственных преимуществ производительности и повышения производительности продукта, он также активно вбирает характеристики продуктов друг друга, учится на сильных сторонах друг друга и надеется совершить прорыв. В любом случае будущие процессоры определенно движутся в направлении высокой производительности и низкого энергопотребления. Нынешняя волна мобильных вычислений пришла, и конкуренция становится все более жесткой. Но в конечном итоге это конкуренция соотношения производительности и мощности, и тот, кто сможет обеспечить высокую производительность при низком энергопотреблении, имеет надежду на успех. У будущих процессоров будет более низкое энергопотребление и более высокая производительность.
Презентация по информатике Сравнение CISC и RISC архитектур процессора доклад, проект
Сравнение CISC и RISC архитектур процессоров
Оглавление
1. Описание CISC архитектуры.
2. Описания RISC архитектуры.
3. Сравнение CISC и RISC архитектур.
4. Вывод.
CISC
Исторически первые микропроцессоры, появившиеся в 70-х годах XX века, имели относительно простую систему команд, что объяснялось небольшими возможностями интегральной схемотехники. По мере увеличения степени интеграции ИМС разработчики МП старались расширять систему команд и делать команды более функциональными, «семантически нагруженными».
CISC
Это объяснялось, в частности, двумя моментами – во-первых, требованиями экономить память для размещения программ, оставлять больше памяти под данные и т.д., а во-вторых – возможностью реализовать внутри кристалла процессора сложные инструкции быстрее, чем при их программной реализации. В результате появились процессоры с большими наборами команд, причем команды эти также зачастую являлись достаточно сложными. В последствии эти МП назвали CISC.
CISC
CISC ( Complex instruction set computing, или . complex instruction set computer — компьютер с полным набором команд) — концепция проектирования процессоров, которая характеризуется следующим набором свойств:
нефиксированное значение длины команды;
арифметические действия кодируются в одной команде;
небольшое число регистров, каждый из которых выполняет строго определённую функцию.
Недостатки CISC
Наряду с отмеченными преимуществами процессоры CISC обладали и рядом недостатков, в частности – команды оказывались сильно неравнозначными по времени выполнения (разное количество тактов), плохо конвейеризовывались, требовали сложного (и длительного) декодирования и выполнения. Для повышения производительности стали использовать жесткую логику управления, что отразилось на регулярности и сложности кристаллов (нерегулярные кристаллы менее технологичны при изготовлении). На кристалле оставалось мало места для РОН и КЭШ.
История CISC
Типичными представителями являются большинство процессоров семейства x86.
Например :
Intel 8008, Intel 80286, Motorola 68k
Что такое RISC?
RISC (Reduced Instruction Set Computer) – архитектура процессора с сокращённым набором инструкций. Начало исследований в данной области положено компанией IBM в 1975 году. Правда фактически, RISC подобная архитектура была создана Сеймуром Крэйем в 1964 году и опробована в суперкомпьютере CDC 6600.
RISC
«Сокращённый набор команд» вовсе не означает, что процессор имеет малое количество инструкций. Это значит лишь то, что инструкции разделены на действия, результаты которых могут быть вычислены за определённый период времени (обычно один такт).
Особенности RISC
1. Любая операция должна выполняться за один такт, вне зависимости от ее типа.
2. Система команд должна содержать минимальное количество наиболее часто используемых простейших инструкций одинаковой длины.
3. Операции обработки данных реализуются только в формате «регистр-регистр» (операнды выбираются из оперативных регистров процессора, и результат операции записывается также в регистр; а обмен между оперативными регистрами и памятью выполняется только с помощью команд чтения/записи).
4. Состав системы команд должен быть «удобен» для компиляции операторов языков высокого уровня .
RISC
Новая архитектура была создана для устранения недостатков CISC архитектуры, но не получила популярности в то время из-за унификации стандарта Intelx86 и всех программ выпущенных в то время под CISC процессоры (точнее нежелания их переписывать заново, ведь этот процесс — затратный).
RISC
Вычислительным ядрам больше не нужно было обращаться к более медленной ОЗУ для занесения и считывания результатов. Эти цели теперь выполняют регистры общего назначения, а к оперативной памяти обращение идёт только в процессе чтения начальных данных и вывода результатов вычислений. Поддерживается маршрут «регистр-регистр».
RISC
Основной проблемой по реализации RISC архитектуры являлась недостаточная поддержка со стороны софта и программного обеспечения. Но с появлением поддержки UNIX Linux подобных систем, эта проблема практически решилась.
RISC
Самыми известными и успешными представителями архитектуры RISC являются ARM от разработчика ARM Holdings. Процессоры с данной архитектурой, применяемые в абсолютном большинстве мобильных устройств и даже серверных системах, благодаря очень низкому энергопотреблению и тепловыделению.
RISC
На данный момент, RISC – архитектура является одной самых распространённых в мире, имея более 40% мирового рынка. Данный результат в основном благодаря ARM архитектуре и то, что в современных мобильных устройствах используются именно процессоры ARM (в абсолютном большинстве).
RISC
CDC 6600 — прародитель идеи RISC процессоров на которых сейчас работает большинство электроники : от холодильников до iPhone.
Сравнение CISC и RISC
Появление полноценной RISC архитектуры на процессорах, позволило упростить конструкцию вычислительных ядер; уменьшить стоимость, площадь и при этом увеличить количество регистров общего назначения; унифицировать команды для вычислительных ядер и сравнять время выполнения всех команд, что также позволило воплотить в жизнь конвейерную обработку инструкций (реализация сложных инструкций из результатов более простых).
Сравнение CISC и RISC
Начиная с Intel 486DX все x86 процессоры имеют внутреннее ядро RISC, остался только преобразователь и дополнительные конвейеры, который на входе преобразует CISC инструкции в RISC, а на выходе обратно в CISC. Это необходимо из-за особенностей архитектуры х86, но иногда тормозит работу процессора и увеличивается количество транзисторов, площадь и тепловыделение в сравнении с полноценными RISC процессорами.
Сравнение CISC и RISC
Сравнение CISC и RISC
Сегодня разница в производительности между RISC и CISC наиболее очевидна в вычислениях с плавающей точкой, где на микропроцессор падает большая математическая нагрузка. Высокая производительность RISC в вычислениях с плавающей точкой используется в финансово-торговых системах и сложных инженерных приложениях. Однако для большинства приложений высокой производительности вычислений с плавающей точкой не требуется.
Сравнение CISC и RISC
В процессоры с х86 архитектурой встраивается аппаратный двусторонний “переводчик”, превращающий команды x86 в команды внутреннего RISC-процессора. Одна команда x86 может производить несколько RISC-команд. Исполнение команд происходит на суперскалярном конвейере по несколько штук и в несколько потоков одновременно.
Сравнение CISC и RISC
Сравнение CISC и RISC
Такие эмуляции потребовались для увеличения скорости обработки CISC-команд, ведь практически любой CISC-процессор уступает RISC-процессору по количеству выполняемых операций в секунду, и по затрачиваемому энергопотреблению на одну и ту же операцию.
Вывод
Отсюда следует вывод, что х86 архитектура, основанная на CISC постепенно исчерпывает себя и немного тормозит развитие вычислительных способностей современных систем. К тому же, CISC процессоры сложны в проектировании и дороги в производстве + имеют проблемы с полноценным распараллеливанием вычислений (приходится постоянно оптимизировать программы).
Архитектура системы команд. Классификация процессоров (CISC и RISC)
Архитектура системы команд. Классификация процессоров (CISC и RISC)Технические характеристики аппаратных платформ
Процессоры
Основные архитектурные понятия
Архитектура системы команд. Классификация процессоров (CISC и RISC)
Термин «архитектура системы» часто употребляется как в узком, так и в широком смысле этого слова. В узком смысле под архитектурой понимается архитектура набора команд. Архитектура набора команд служит границей между аппаратурой и программным обеспечением и представляет ту часть системы, которая видна программисту или разработчику компиляторов. Следует отметить, что это наиболее частое употребление этого термина. В широком смысле архитектура охватывает понятие организации системы, включающее такие высокоуровневые аспекты разработки компьютера как систему памяти, структуру системной шины, организацию ввода/вывода и т.п.
Двумя основными архитектурами набора команд, используемыми компьютерной промышленностью на современном этапе развития вычислительной техники являются архитектуры CISC и RISC. Основоположником CISC-архитектуры можно считать компанию IBM с ее базовой архитектурой /360, ядро которой используется с1964 года и дошло до наших дней, например, в таких современных мейнфреймах как IBM ES/9000.
Лидером в разработке микропроцессоров c полным набором команд (CISC — Complete Instruction Set Computer) считается компания Intel со своей серией x86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокомпьютеров. Для CISC-процессоров характерно: сравнительно небольшое число регистров общего назначения; большое количество машинных команд, некоторые из которых нагружены семантически аналогично операторам высокоуровневых языков программирования и выполняются за много тактов; большое количество методов адресации; большое количество форматов команд различной разрядности; преобладание двухадресного формата команд; наличие команд обработки типа регистр-память.
Основой архитектуры современных рабочих станций и серверов обычно является архитектура компьютера с сокращенным набором команд (RISC — Reduced Instruction Set Computer), хотя последнее время на рынке появляются рабочие станции и сервера на базе CISC-архитектур. Зачатки этой архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др. ) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитектуры С. Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако окончательно понятие RISC в современном его понимании сформировалось на базе трех исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета.
Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д.Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. В 1981году Дж.Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки.
Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд использовались команды фиксированной длины и фиксированного формата.
Среди других особенностей RISC-архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC-процессорах реализуются от 32 до 128 или большее число регистров по сравнению с 8 — 16 регистрами в CISC-архитектурах), что позволяет большему объему данных храниться в регистрах на процессорном кристалле большее время и упрощает работу компилятора по распределению регистров под переменные. Для обработки, как правило, используются трехадресные команды, что помимо упрощения дешифрации дает возможность сохранять большее число переменных в регистрах без их последующей перезагрузки.
Ко времени завершения университетских проектов (1983-1984 гг.) обозначился также прорыв в технологии изготовления сверхбольших интегральных схем. Простота архитектуры и ее эффективность, подтвержденная этими проектами, вызвали большой интерес в компьютерной индустрии и с 1986 года началась активная промышленная реализация архитектуры RISC. К настоящему времени эта архитектура прочно занимает лидирующие позиции на мировом компьютерном рынке рабочих станций и серверов.
Развитие архитектуры RISC в значительной степени определялось прогрессом в области создания оптимизирующих компиляторов. Именно современная техника компиляции позволяет эффективно использовать преимущества большего регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности, обычно применяемой в процессорах RISC: реализацию задержанных переходов и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.
Хотя в настоящее время большинство процессоров, имеющих архитектуру CISC или RISC являются суперскалярными, традиционно архитектуры называются их старыми названиями, хотя грань между ними практически стёрта.
В разработках Pentium компании Intel (имеется в виду Pentium 1,2,3,4 и процессор следующего поколения P6), а также ее последователей-конкурентов (AMD, Cyrix, и др.) широко используются идеи, реализованные в RISC-микропроцессорах. Сложность архитектуры и системы команд x86 уже не является главным фактором, ограничивающим производительность процессоров на ее основе.
Методы адресации и типы данных
Методы адресации
В машинах к регистрами общего назначения метод (или режим) адресации объектов, с которыми манипулирует команда, может задавать константу, регистр или ячейку памяти. Для обращения к ячейке памяти процессор прежде всего должен вычислить действительный или эффективный адрес памяти, который определяется заданным в команде методом адресации.
На рисунке 1 представлены все основные методы адресации операндов, которые реализованы в компьютерах, рассмотренных в настоящем обзоре. Адресация непосредственных данных и литеральных констант обычно рассматривается как один из методов адресации памяти (хотя значения данных, к которым в этом случае производятся обращения, являются частью самой команды и обрабатываются в общем потоке команд). Адресация регистров, как правило, рассматривается отдельно. В данном разделе методы адресации, связанные со счетчиком команд (адресация относительно счетчика команд) рассматриваются отдельно. Этот вид адресации используется главным образом для определения программных адресов в командах передачи управления.
На рисунке 1 на примере команды сложения (Add) приведены наиболее употребительные названия методов адресации, хотя при описании архитектуры в документации разные производители используют разные названия для этих методов. На этом рисунке знак «<—» используется для обозначения оператора присваивания, а буква М обозначает память (Memory). Таким образом, M[R1] обозначает содержимое ячейки памяти, адрес которой определяется содержимым регистра R1.
Метод адресации | Пример команды | Смысл команды метода | Использование | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Регистровая | Add R4,R3 | R4<—R4+R5 | Требуемое значение в регистре | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Непосредственная или литеральная | Add R4,#3 | R4<—R4+3 | Для задания констант | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Базовая со смещением | Add R4,100(R1) | R4<—R4+M[100+R1] | Для обращения к локальным переменным | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Косвенная регистровая | Add R4,(R1) | R4<—R4+M[R1] | Для обращения по указателю или вычисленному адресу | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Индексная | Add R3,(R1+R2) | R3<—R3+M[R1+R2] | Иногда полезна при работе с массивами: R1 — база, R3 — индекс | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Прямая или | Add R1,(1000) | R1<—R1+M[1000] | Иногда полезна для обращения к статическим данным | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Косвенная | Add R1,@(R3) | R1<—R1+M[M[R3]] | Если R3-адрес указателя p, то выбирается значение по этому указателю | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Автоинкрементная | Add R1,(R2)+ | R1<—R1+M[R2] | Полезна для прохода в цикле по массиву с шагом: R2 — начало массива | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Автодекрементная | Add R1,(R2)- | R2<—R2-d | Аналогична предыдущей | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Базовая индексная со смещением и масштабированием | Add R1,100(R2)[R3] | R1<—R1+M[100]+R2+R3*d | Для индексации массивов |
Рис. 1. Методы адресации
Использование сложных методов адресации позволяет существенно сократить количество команд в программе, но при этом значительно увеличивается сложность аппаратуры. Возникает вопрос, а как часто эти методы адресации используются в реальных программах? На рисунке 2 представлены результаты измерений частоты использования различных методов адресации на примере трех популярных программ (компилятора с языка Си GCC, текстового редактора TeX и САПР Spice), выполненных на компьютере VAX.
Из этого рисунка видно, что непосредственная адресация и базовая со смещением доминируют.
При этом основной вопрос, который возникает для метода базовой адресации со смещением, связан с длиной (разрядностью) смещения. Выбор длины смещения в конечном счете определяет длину команды. Результаты измерений показали, что в подавляющем большинстве случаев длина смещения не превышает 16 разрядов.
Рис. 2. Частота использования различных методов адресации на программах TeX, Spice, GCC
Этот же вопрос важен и для непосредственной адресации. Непосредственная адресация используется при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры. Результаты анализа статистики показывают, что в подавляющем числе случаев 16 разрядов оказывается вполне достаточно (хотя для вычисления адресов намного реже используются и более длинные константы).
Важным вопросом построения любой системы команд является оптимальное кодирование команд. Оно определяется количеством регистров и применяемых методов адресации, а также сложностью аппаратуры, необходимой для декодирования. Именно поэтому в современных RISC-архитектурах используются достаточно простые методы адресации, позволяющие резко упростить декодирование команд. Более сложные и редко встречающиеся в реальных программах методы адресации реализуются с помощью дополнительных команд, что вообще говоря приводит к увеличению размера программного кода. Однако такое увеличение длины программы с лихвой окупается возможностью простого увеличения тактовой частоты RISC-процессоров.
Типы команд
Команды традиционного машинного уровня можно разделить на несколько типов, которые показаны на рисунке 3.
Тип операции | Примеры | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Арифметические и логические | Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое умножение и т.д. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пересылки данных | Операции загрузки/записи | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Управление потоком команд | Безусловные и условные переходы, вызовы процедур и возвраты | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Системные операции | Системные вызовы, команды управления виртуальной памятью и т.д. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Операции с плавающей | Операции сложения, вычитания, умножения и деления над вещественными числами | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Десятичные операции | Десятичное сложение, умножение, преобразование форматов и т. д. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Операции над строками | Пересылки, сравнения и поиск строк |
Рис. 3. Основные типы команд
Команды управления потоком команд
В английском языке для указания команд безусловного перехода, как правило, используется термин jump, а для команд условного перехода — термин branch, хотя разные поставщики необязательно придерживаются этой терминологии. Например компания Intel использует термин jump и для условных, и для безусловных переходов. Можно выделить четыре основных типа команд для управления потоком команд: условные переходы, безусловные переходы, вызовы процедур и возвраты из процедур.
Частота использования этих команд по статистике примерно следующая. В программах доминируют команды условного перехода. Среди указанных команд управления на разных программах частота их использования колеблется от 66 до 78%. Следующие по частоте использования — команды безусловного перехода (от 12 до 18%). Частота переходов на выполнение процедур и возврата из них составляет от 10 до 16%.
При этом примерно 90% команд безусловного перехода выполняются относительно счетчика команд. Для команд перехода адрес перехода должен быть всегда заранее известным. Это не относится к адресам возврата, которые не известны во время компиляции программы и должны определяться во время ее работы. Наиболее простой способ определения адреса перехода заключается в указании его положения относительно текущего значения счетчика команд (с помощью смещения в команде), и такие переходы называются переходами относительно счетчика команд. Преимуществом такого метода адресации является то, что адреса переходов, как правило, расположены недалеко от текущего адреса выполняемой команды и указание относительно текущего значения счетчика команд требует небольшого количества бит в смещении. Кроме того, использование адресации относительно счетчика команд позволяет программе выполняться в любом месте памяти, независимо от того, куда она была загружена. То есть этот метод адресации позволяет автоматически создавать перемещаемые программы.
Реализация возвратов и переходов по косвенному адресу, в которых адрес не известен во время компиляции программы, требует методов адресации, отличных от адресации относительно счетчика команд. В этом случае адрес перехода должен определяться динамически во время работы программы. Наиболее простой способ заключается в указании регистра для хранения адреса возврата, либо для перехода может разрешаться любой метод адресации для вычисления адреса перехода.
Одним из ключевых вопросов реализации команд перехода состоит в том, насколько далеко целевой адрес перехода находится от самой команды перехода? И на этот вопрос статистика использования команд дает ответ: в подавляющем большинстве случаев переход идет в пределах 3 — 7 команд относительно команды перехода, причем в 75% случаев выполняются переходы в направлении увеличения адреса, т.е. вперед по программе.
Поскольку большинство команд управления потоком команд составляют команды условного перехода, важным вопросом реализации архитектуры является определение условий перехода. Для этого используются три различных подхода. При первом из них в архитектуре процессора предусматривается специальный регистр, разряды которого соответствуют определенным кодам условий. Команды условного перехода проверяют эти условия в процессе своего выполнения. Преимуществом такого подхода является то, что иногда установка кода условия и переход по нему могут быть выполнены без дополнительных потерь времени, что, впрочем, бывает достаточно редко. А недостатками такого подхода является то, что, во-первых, появляются новые состояния машины, за которыми необходимо следить (упрятывать при прерывании и восстанавливать при возврате из него). Во-вторых, и что очень важно для современных высокоскоростных конвейерных архитектур, коды условий ограничивают порядок выполнения команд в потоке, поскольку их основное назначение заключается в передаче кода условия команде условного перехода.
Второй метод заключается в простом использовании произвольного регистра (возможно одного выделенного) общего назначения. В этом случае выполняется проверка состояния этого регистра, в который предварительно помещается результат операции сравнения. Недостатком этого подхода является необходимость выделения в программе для анализа кодов условий специального регистра.
Третий метод предполагает объединение команды сравнения и перехода в одной команде. Недостатком такого подхода является то, что эта объединенная команда довольно сложна для реализации (в одной команде надо указать и тип условия, и константу для сравнения и адрес перехода). Поэтому в таких машинах часто используется компромиссный вариант, когда для некоторых кодов условий используются такие команды, например, для сравнения с нулем, а для более сложных условий используется регистр условий. Часто для анализа результатов команд сравнения для целочисленных операций и для операций с плавающей точкой используется разная техника, хотя это можно объяснить и тем, что в программах количество переходов по условиям выполнения операций с плавающей точкой значительно меньше общего количества переходов, определяемых результатами работы целочисленной арифметики.
Одним из наиболее заметных свойств большинства программ является преобладание в них сравнений на условие равно/неравно и сравнений с нулем. Поэтому в ряде архитектур такие команды выделяются в отдельный поднабор, особенно при использовании команд типа «сравнить и перейти».
Говорят, что переход выполняется, если истинным является условие, которое проверяет команда условного перехода. В этом случае выполняется переход на адрес, заданный командой перехода. Поэтому все команды безусловного перехода всегда выполняемые. По статистике оказывается, что переходы назад по программе в большинстве случаев используются для организации циклов, причем примерно 60% из них составляют выполняемые переходы. В общем случае поведение команд условного перехода зависит от конкретной прикладной программы, однако иногда сказывается и зависимость от компилятора. Такие зависимости от компилятора возникают вследствие изменений потока управления, выполняемого оптимизирующими компиляторами для ускорения выполнения циклов.
Вызовы процедур и возвраты предполагают передачу управления и возможно сохранение некоторого состояния. Как минимум, необходимо уметь где-то сохранять адрес возврата. Некоторые архитектуры предлагают аппаратные механизмы для сохранения состояния регистров, в других случаях предполагается вставка в программу команд самим компилятором. Имеются два основных вида соглашений относительно сохранения состояния регистров. Сохранение вызывающей (caller saving) программой означает, что вызывающая процедура должна сохранять свои регистры, которые она хочет использовать после возврата в нее. Сохранение вызванной процедурой предполагает, что вызванная процедура должна сохранить регистры, которые она собирается использовать. Имеются случаи, когда должно использоваться сохранение вызывающей процедурой для обеспечения доступа к глобальным переменным, которые должны быть доступны для обеих процедур.
Типы и размеры операндов
Имеется два альтернативных метода определения типа операнда. В первом из них тип операнда может задаваться кодом операции в команде. Это наиболее употребительный способ задания типа операнда. Второй метод предполагает указание типа операнда с помощью тега, который хранится вместе с данными и интерпретируется аппаратурой во время выполнения операций над данными. Этот метод использовался, например, в машинах фирмы Burroughs, но в настоящее время он практически не применяется и все современные процессоры пользуются первым методом.
Обычно тип операнда (например, целый, вещественный с одинарной точностью или символ) определяет и его размер. Однако часто процессоры работают с целыми числами длиною 8, 16, 32 или 64 бит. Как правило целые числа представляются в дополнительном коде. Для задания символов (1 байт = 8 бит) в машинах компании IBM используется код EBCDIC, но в машинах других производителей почти повсеместно применяется кодировка ASCII. Еще до сравнительно недавнего времени (10 лет назад) каждый производитель процессоров пользовался своим собственным представлением вещественных чисел (чисел с плавающей точкой). Однако за последние несколько лет ситуация изменилась. Большинство поставщиков процессоров в настоящее время для представления вещественных чисел с одинарной и двойной точностью придерживаются стандарта IEEE 754.
В некоторых процессорах используются двоично кодированные десятичные числа, которые представляются в в упакованном и неупакованном форматах. Упакованный формат предполагает, что для кодирования цифр 0-9 используются 4 разряда и что две десятичные цифры упаковываются в каждый байт. В неупакованном формате байт содержит одну десятичную цифру, которая обычно изображается в символьном коде ASCII.
В большинстве процессоров, кроме того, реализуются операции над цепочками (строками) бит, байт, слов и двойных слов.
| ||||||||||||||||||
Разница между процессорами RISC и CISC | Set 2
Посмотреть обсуждение
Улучшить статью
Сохранить статью
- Уровень сложности: Hard
- Последнее обновление: 13 янв, 2022
Посмотреть обсуждение
Улучшить статью
Сохранить статью
Микропроцессор представляет собой процессор на одном кристалле. Это интегральная схема, которая выполняет основные функции процессора компьютера. Это многоцелевой программируемый кремниевый чип, созданный с использованием технологии Metal Oxide Semiconductor (MOS), которая управляется часами и основана на регистрах. Он принимает двоичные данные в качестве входных данных и обеспечивает выходные данные после их обработки в соответствии со спецификацией инструкций, хранящихся в памяти. Эти микропроцессоры способны обрабатывать 128 бит за раз со скоростью один миллиард инструкций в секунду.
Характеристики микропроцессора:
- Набор инструкций –
Набор полных инструкций, которые выполняет микропроцессор, называется набором инструкций. - Длина слова —
Количество битов, обрабатываемых в одной инструкции, называется размером слова или размером слова. Чем больше размер слова, тем больше вычислительная мощность процессора. - Системная тактовая частота —
Тактовая частота определяет, насколько быстро процессор может выполнять одну инструкцию. Темп микропроцессора контролируется системными часами. Тактовые частоты обычно измеряются в миллионах циклов в секунду (МГц) и тысячах миллионов циклов в секунду (ГГц). Тактовая частота считается очень важным аспектом прогнозирования производительности процессора.
Классификация микропроцессоров:
Помимо классификации, основанной на длине слова, классификация также основана на архитектуре, т.е. наборе инструкций микропроцессора. Они подразделяются на RISC и CISC.
- RISC:
Расшифровывается как «Компьютер с сокращенным набором инструкций». Это тип архитектуры микропроцессора, в котором используется небольшой набор инструкций одинаковой длины. Это простые инструкции, которые обычно выполняются за один такт. Чипы RISC относительно просты в разработке и недороги. Недостаток этой схемы заключается в том, что компьютер должен многократно выполнять простые операции для выполнения более крупной программы, имеющей большое количество операций обработки.
Примеры: SPARC, POWER PC и т. д. - CISC:
Это сокращение от Complex Instruction Set Computer. Эти процессоры предлагают пользователям сотни инструкций переменного размера. Архитектура CISC включает в себя полный набор схем специального назначения, которые выполняют эти инструкции на очень высокой скорости. Эти инструкции взаимодействуют с памятью, используя сложные режимы адресации. Процессоры CISC уменьшают размер программы и, следовательно, для выполнения программы требуется меньшее количество циклов памяти. Это увеличивает общую скорость выполнения.
Примеры: Архитектура Intel, AMD - EPIC:
Расшифровывается как явно параллельные вычисления с инструкциями. В архитектуре объединены лучшие черты процессоров RISC и CISC. Он реализует параллельную обработку инструкций вместо использования инструкций фиксированной длины. Работа процессоров EPIC поддерживается за счет использования набора сложных инструкций, содержащих как базовые инструкции, так и информацию о выполнении параллельных инструкций. Это существенно повышает эффективность этих процессоров.
Ниже приведены некоторые различия между RISC и CISC:
CISC | RISC |
---|---|
Архитектура содержит большое количество инструкций. | Присутствует очень мало инструкций. Количество инструкций обычно меньше 100. |
Некоторые инструкции с длительным временем выполнения. К ним относятся инструкции, которые копируют весь блок из одной части памяти в другую, и другие, которые копируют несколько регистров в память и из памяти. | Нет инструкций с большим временем выполнения из-за очень простого набора инструкций. Некоторые ранние RISC-машины даже не имели инструкции целочисленного умножения, что требовало от компиляторов реализации умножения как последовательности сложений. |
Кодирование инструкций переменной длины. Пример: Размер инструкции IA32 может варьироваться от 1 до 15 байт. | Используются кодировки фиксированной длины инструкций. Пример: В IA32 обычно все инструкции кодируются 4 байтами. |
Для указания операндов поддерживаются несколько форматов. Спецификатор операнда памяти может иметь множество различных комбинаций регистра смещения, основания и индекса. | Поддерживаются простые форматы адресации. Допускается только базовая адресация и адресация смещения. |
CISC поддерживает массив. | RISC не поддерживает массив. |
Арифметические и логические операции могут применяться как к операндам памяти, так и к регистрам. | Арифметические и логические операции используют только регистровые операнды. Ссылки на память разрешены только при загрузке и сохранении инструкций, т. е. при чтении из памяти в регистр и записи из регистра в память соответственно. |
Программы реализации скрыты от программ машинного уровня. ISA обеспечивает чистую абстракцию между программами и тем, как они выполняются. | Программы реализации, открытые для программ машинного уровня. Немногие машины RISC не позволяют выполнять определенные последовательности команд. |
Используются коды состояния. | Коды состояния не используются. |
Стек используется для аргументов процедуры и адресов возврата. | Регистры используются для аргументов процедуры и адресов возврата. Ссылки на память можно избежать с помощью некоторых процедур. |
См. набор 1: RISC и CISC
Архитектуры RISC и CISC: какая из них лучше?
Скотт Торнтон
Компьютер с сокращенным набором команд (RISC) — это тип или категория процессора или Архитектура набора инструкций (ISA). В широком смысле ISA — это среда, посредством которой процессор взаимодействует с человеком-программистом (хотя между процессором и программистом есть несколько других формально определенных слоев). Инструкция — это команда, данная процессору для выполнения действия. Набор инструкций — это весь набор инструкций для данного процессора, а термин «архитектура» подразумевает определенный способ построения системы, из которой состоит процессор.
RISC обычно относится к упрощенной версии своего предшественника, компьютера с комплексным набором инструкций (CISC). На заре процессоров не было формальной идентификации, известной как CISC, но с тех пор этот термин был придуман для обозначения их отличия от архитектуры RISC. Некоторые примеры архитектуры набора инструкций микропроцессора (ISA) CISC включают Motorola 68000 (68K), DEC VAX, PDP-11, несколько поколений Intel x86 и 8051.
Примеры процессоров с архитектурой RISC включают MIPS, PowerPC , AVR от Atmel, процессоры Microchip PIC, процессоры Arm, RISC-V и все современные микропроцессоры имеют по крайней мере некоторые элементы RISC. Переход от 8- и 16-разрядных к 32-разрядным архитектурам, по сути, вызвал потребность в RISC-архитектурах. Тем не менее, потребовалось десятилетие, прежде чем RISC-архитектуры начали завоевывать популярность, в основном из-за отсутствия программного обеспечения, которое могло бы работать на RISC-архитектурах. Intel также оказала влияние, поскольку у нее были средства для продолжения использования архитектуры CISC, и она не обнаружила необходимости перепроектировать с нуля. Архитектура MIPS была одной из первых ISA RISC и широко использовалась для обучения архитектуре RISC.
Немного истории
Первый интегрированный чип был разработан в 1958 году Джеком Килби. Микропроцессоры были представлены в 1970-х годах, первый коммерческий процессор был выпущен корпорацией Intel. К началу 1980-х годов была представлена RISC-архитектура. Дизайн RISC возник как полная модернизация, потому что архитектура CISC становилась все более сложной. Большинство считает Джона Кока из IBM автором концепции RISC. История говорит нам, что для того, чтобы получить более быстрый компьютер, произошли некоторые серьезные изменения в архитектуре микропроцессора, которые стали RISC, включая единый формат для инструкций и легко конвейерные инструкции. (Конвейерная обработка означает, что процессор начинает выполнение следующей инструкции до завершения текущей инструкции.)В 70-х память была дорогой, поэтому в центре внимания были небольшие программы.
В чем разница между RISC и CISC?
Если коротко, то RISC воспринимается многими как улучшение по сравнению с CISC. Не существует лучшей архитектуры, поскольку разные архитектуры могут быть просто лучше в одних сценариях, но менее идеальными в других. Машины на базе RISC выполняют одну инструкцию за такт. Машины CISC могут иметь специальные инструкции, а также инструкции, для выполнения которых требуется более одного цикла. Это означает, что одна и та же инструкция, выполняемая в архитектуре CISC, может потребовать выполнения нескольких инструкций на машине RISC. Архитектуре RISC потребуется больше рабочей (ОЗУ) памяти, чем CISC, для хранения значений, поскольку она загружает каждую инструкцию, выполняет ее, а затем загружает следующую.
Архитектура CISC может выполнять одну, хотя и более сложную инструкцию, которая выполняет те же самые операции одновременно, непосредственно в памяти. Таким образом, RISC-архитектура требует больше оперативной памяти, но всегда выполняет одну инструкцию за такт для предсказуемой обработки, что хорошо для конвейерной обработки. Одно из основных различий между RISC и CISC заключается в том, что RISC делает упор на эффективность в циклах на инструкцию, а CISC подчеркивает эффективность в инструкциях на программу. Быстрый процессор зависит от того, сколько времени требуется для выполнения каждого тактового цикла, сколько циклов требуется для выполнения инструкций и количества инструкций в каждой программе. RISC делает акцент на больших размерах программного кода (из-за меньшего набора инструкций, поэтому несколько последовательных шагов могут равняться одному шагу в CISC).
В RISC ISA предпочтение отдается программному обеспечению, а не аппаратному. Набор инструкций RISC требует написания более эффективного программного обеспечения (например, компиляторов или кода) с меньшим количеством инструкций. CISC ISA используют больше транзисторов в аппаратном обеспечении для реализации большего количества инструкций, а также более сложных инструкций.
RISC требует больше оперативной памяти, тогда как CISC делает упор на меньший размер кода и в целом использует меньше оперативной памяти, чем RISC. Однако сегодня многие микропроцессоры содержат сочетание RISC- и CISC-подобных атрибутов, например, CISC-подобный ISA, который обрабатывает инструкции, как если бы они были строкой инструкций RISC-типа.
Некоторые основные различия между архитектурами CISC и RISC перечислены в таблице 1.
Таблица 1: Таблица некоторых различий между архитектурами набора инструкций (ISA) CISC и RISC.
Рубрики: Embedded, FAQ, Featured, RISC-V Tagged With: basics, FAQ
Разница между RISC и CISC
следующий → ← предыдущая RISC-процессорRISC расшифровывается как Computer Processor с сокращенным набором инструкций, микропроцессорная архитектура с простым набором и настраиваемым набором инструкций. Он создан для минимизации времени выполнения инструкций за счет оптимизации и ограничения количества инструкций. Это означает, что для каждого командного цикла требуется только один тактовый цикл, и каждый цикл содержит три параметра: выборка, декодирование и выполнение. Процессор RISC также используется для выполнения различных сложных инструкций путем объединения их в более простые. Для чипов RISC требуется несколько транзисторов, что удешевляет разработку и сокращает время выполнения инструкций. Примерами процессоров RISC являются процессоры SUN SPARC, PowerPC, Microchip PIC, RISC-V. Преимущества процессора RISC
Недостатки процессора RISC
Архитектура RISCЭто специально адаптированный набор инструкций, используемый в портативных устройствах из-за надежности системы, таких как Apple iPod, мобильные/смартфоны, Nintendo DS, Особенности процессора RISCНекоторые важные особенности процессоров RISC:
Процессор CISCCISC расшифровывается как Complex Instruction Set Computer , разработанный Intel. Он имеет большой набор сложных инструкций, которые варьируются от простых до очень сложных и специализированных на уровне языка ассемблера, выполнение которых занимает много времени. Итак, CISC подходит к сокращению количества инструкций в каждой программе и игнорированию количества циклов на инструкцию. Особое внимание уделяется созданию сложных инструкций непосредственно в аппаратном обеспечении, потому что аппаратное обеспечение всегда работает быстрее, чем программное обеспечение. Однако микросхемы CISC относительно медленнее по сравнению с микросхемами RISC, но используют меньше инструкций, чем RISC. Примерами процессоров CISC являются VAX, AMD, Intel x86 и System/360. Характеристики процессора CISCНиже приведены основные характеристики процессора RISC:
Архитектура процессоров CISCАрхитектура CISC помогает сократить программный код, встраивая несколько операций в каждую программную инструкцию, что делает процессор CISC более сложным. Компьютер на основе архитектуры CISC предназначен для снижения затрат на память, поскольку для больших программ или инструкций требуется большой объем памяти для хранения данных, что увеличивает требования к памяти, а большой набор памяти увеличивает стоимость памяти, что делает их более дорогими. Преимущества процессоров CISC
Недостатки процессоров CISC
Разница между процессорами RISC и CISC
Следующая темаРазница между ← предыдущая следующий → |
Архитектура RISC и CISC: что лучше?
Сегодня многие говорят, что разница между компьютерными процессорами RISC и CISC незначительна и что их производительность практически одинакова. Но так ли это на самом деле? Реальность такова, что между ними по-прежнему много различий, и это может сделать один более подходящим для другого для определенных приложений.
В этом посте мы рассмотрим некоторые основы микропроцессоров, прежде чем углубиться в более глубокие вопросы о RISC и CISC.
Что такое микропроцессор?
RISC и CISC являются примерами различных конструкций компьютерных микропроцессоров. Микропроцессор, известный как центральный процессор (ЦП), является мозгом компьютера. Он считывает из памяти инструкции, которые сообщают компьютеру, что делать. Микропроцессоры используют эти инструкции для выполнения очень простых задач, таких как базовая логика, управление и операции ввода/вывода, которые указаны создателями операционной системы.
RISC, что является аббревиатурой от «Компьютер с сокращенным набором инструкций», и CISC, сокращение от «Компьютер со сложным набором инструкций», относятся к категории процессора или, точнее, к архитектуре набора инструкций (ISA). ISA — это особый способ взаимодействия процессора с человеком-программистом. Самые ранние компьютеры имели архитектуру CISC, но в 1980-х годах архитектура RISC была разработана для преодоления растущей сложности процессоров CISC.
Подход CISC
Основная идея процессоров CISC заключается в том, что одна инструкция может использоваться для выполнения всех операций загрузки, оценки и сохранения. Цель подхода CISC состоит в том, чтобы свести к минимуму количество инструкций на программу. Однако это увеличивает количество циклов на инструкцию.
Подход RISC
Основная цель процессоров RISC — упростить аппаратное обеспечение за счет использования набора инструкций, состоящего из нескольких основных шагов для загрузки, оценки и сохранения операций. Дело не в меньшем количестве инструкций, а в том, как эти инструкции используются. Это уменьшает количество циклов на инструкцию, но происходит за счет увеличения количества инструкций на программу.
В чем разница между RISC и CISC?
Цель архитектуры RISC и CISC — повысить производительность процессора, но они пытаются достичь этой цели разными способами. Вообще говоря, RISC рассматривается многими как улучшение по сравнению с CISC. Аргумент в пользу RISC вместо CISC заключается в том, что менее сложный набор инструкций делает разработку ЦП проще, дешевле и быстрее.
Основное различие между архитектурой RISC и CISC заключается в том, что машины на основе RISC выполняют одну инструкцию за такт. В процессоре CISC каждая инструкция выполняет так много действий, что для ее выполнения требуется несколько тактов. В процессоре RISC каждая инструкция также имеет фиксированный размер памяти, что облегчает их декодирование и выполнение. В машине CISC инструкции могут быть переменной длины, что увеличивает время обработки.
На первый взгляд основные различия между архитектурой RISC и CISC следующие:
RISC | ЦИСК |
Акцент на программное обеспечение | Акцент на аппаратное обеспечение |
Небольшое количество инструкций фиксированной длины | Большое количество инструкций |
Простые, стандартизированные инструкции | Сложные инструкции переменной длины |
Инструкции за один такт | Инструкции могут занимать несколько тактов |
Интенсивное использование оперативной памяти | Более эффективное использование оперативной памяти |
Низкое число циклов в секунду при больших размерах кода | Маленький размер кода с большим количеством циклов в секунду |
Что такое RISC-V?
Теперь у нас есть понимание различий между архитектурой RISC и CISC, давайте усложним ситуацию, представив RISC-V. Электронная промышленность, кажется, сходит с ума по RISC-V (произносится как «риск-пять»), но почему?
RISC-V, как и RISC и CISC, представляет собой архитектуру набора инструкций (ISA). Однако это открытая и бесплатная ISA. Это означает, что каждый может внести свой вклад в его развитие, и его использование не стоит ни копейки. Это важно, потому что позволяет небольшим производителям устройств создавать оборудование без уплаты лицензионных отчислений.
RICS-V был разработан, чтобы иметь небольшую фиксированную ISA вместе с модульными фиксированными стандартными расширениями, которые хорошо работают с большей частью кода. Это оставляет достаточно места для расширений для конкретных приложений, позволяющих создавать собственные процессоры для конкретных рабочих нагрузок.
Преимущества RICS-V по сравнению с традиционной архитектурой RICS и CISC включают:
1. Гибкость . Возможность настройки процессора позволяет инженерам настраивать наборы микросхем, чтобы они были большими, маленькими, мощными или легкими, в зависимости от конкретных требований. устройства.
2. Инновации — Компании могут реализовать минимальный набор инструкций и использовать пользовательские расширения и определенные расширения для создания процессоров для передовых инструментов.
3. Снижение затрат и ускорение вывода на рынок — Повторное использование интеллектуальной собственности с открытым исходным кодом помогает снизить стоимость разработки и позволяет компаниям быстрее выводить свои разработки на рынок.
RISC, CISC или RISC V: что лучше?
Короткий ответ: ни одна архитектура не лучше другой. Каждый из них имеет свои преимущества и препятствия, которые делают их более подходящими для определенных сценариев. Ключ в том, чтобы сопоставить эти преимущества и препятствия с предполагаемым приложением, чтобы найти наиболее подходящую для вас архитектуру набора инструкций.
—Выберите категорию — NewsInsightsЧитать далее
6 советов по профилю LinkedIn для соискателей в сфере электроники
Прочтите наше руководство по созданию профиля LinkedIn, который заметят рекрутеры и менеджеры по найму в сфере электроники по всем правильным причинам.
Читать далее
Встречные предложения — почему кандидаты их принимают?
Мы обсудим, почему некоторые кандидаты принимают встречные предложения, и рассмотрим некоторые шаги, которые работодатели могут предпринять, чтобы избежать ситуации со встречными предложениями.
Читать далее
Что такое технология 5G и как она изменит мир?
Мы рассмотрим, что такое 5G, объясним, как он работает, и изучим реальные преимущества технологии беспроводной сотовой связи пятого поколения.
Читать далее
Как назначить собеседование для должностей в области электроники
Мы рассмотрим некоторые основы рабочих заданий на собеседовании и предлагаем пять моментов, которые следует учитывать при назначении заданий на должности в области электроники.
Читать далее
Каким будет будущее машиностроения после Covid?
От вновь обретенной скорости до духа сотрудничества — вот некоторые из изменений, которые мы можем ожидать в машиностроительной отрасли после пандемии.
Читать далее
Архитектура RISC и CISC: что лучше?
Мы рассмотрим различия между архитектурой RISC и CISC, изучим преимущества каждой из них и обсудим новую ISA на блоке, RISC-V с открытым исходным кодом.
Читать далее
Каково значение нитрида галлия для электронной промышленности?
Нитрид галлия, или GaN, называют кремнием будущего. Но что это за материал и почему он вызывает такой ажиотаж в области электроники?
Читать далее
Используйте визу h2-B для привлечения специалистов в области электроники в США
Вы изо всех сил пытаетесь найти профессионалов в области электроники, чтобы заполнить пробелы в навыках в вашем бизнесе в США? Вот как виза h2-B может помочь вам найти талантливых кандидатов, которые вам нужны.
Читать далее
Используйте синюю карту ЕС для найма профессионалов в области электроники со всего мира
Пытаетесь нанять квалифицированных специалистов по электронике для вашей фирмы в ЕС? Вот как могут помочь Голубая карта ЕС и набор специалистов PER.
Читать далее
Как правильно проводить видеоинтервью
Поскольку видеоинтервью стали нормой в секторах электроники, импульсных источников питания, ИБП и полупроводников, мы предлагаем наши советы, которые помогут вам добиться успеха.
Читать далее
Станьте спонсором Skilled Worker, чтобы получить доступ к более крупным кадровым резервам
Мы обсуждаем критерии приемлемости для того, чтобы стать спонсором Skilled Worker, изучаем процесс подачи заявки и смотрим на преимущества, которые может принести использование широкой сети.
Читать далее
Состояние набора персонала в области электроники и полупроводников — Q2 2021
После более успешного, чем ожидалось, первого квартала, приятной новостью для кандидатов является то, что второй квартал на рынке найма в области электроники и полупроводников демонстрирует хорошие результаты.
Разница между процессорами RISC и CISC
Автор: Мэтью Мартин
ЧасыОбновлено
Ключевая разница между процессором RISC и CISC
- В RISC набор инструкций уменьшен, и большинство этих инструкций очень примитивны, тогда как в CISC набор инструкций очень велик, что позволяет использовать его для сложных операций. Время выполнения компьютера
- RISC очень меньше, тогда как время выполнения компьютера CISC очень велико.
- Расширение кода RISC может создать проблему, в то время как расширение кода CISC не является проблемой.
- В RISC декодирование инструкций простое, тогда как в CISC декодирование инструкций сложное.
- RISC не требует внешней памяти для вычислений, а CISC требует внешней памяти для вычислений.
- RISC имеет несколько наборов регистров, в то время как CISC имеет только один набор регистров.
RISC против CISC
Что такое RISC?
RISC предназначен для выполнения меньшего количества типов компьютерных инструкций. Следовательно, он может работать на более высокой скорости. Полная форма RISC — это компьютеры с сокращенным набором команд. Это микропроцессор, предназначенный для выполнения меньшего количества компьютерных инструкций, чтобы он мог работать на более высокой скорости. Наборы инструкций RISC
содержат менее 100 инструкций и используют фиксированный формат инструкций. В этом методе используется несколько простых режимов адресации, использующих инструкцию на основе регистров. В этом механизме разработки компилятора LOAD/STORE — единственные отдельные инструкции для доступа к памяти.
Что такое CISC?
CISC был разработан, чтобы упростить разработку компиляторов. Полная форма CISC — компьютер с комплексным набором инструкций. Это легко программируемые чипы, позволяющие эффективно использовать память.
CISC устраняет необходимость генерации машинных инструкций для процессора. Например, вместо компилятора, написания длинных машинных инструкций для вычисления расстояния квадратного корня, процессор CISC предлагает для этого встроенную возможность.
Многие из первых вычислительных машин были запрограммированы на языке ассемблера. Компьютерная память была медленной и дорогой. CISC обычно применялся в таких больших компьютерах, как PDP-11 и система DEC.
RISC и CISC — ключевые отличия
Вот важные различия между CISC и RISC
CISC | РИСК |
---|---|
Имеет блок микропрограммирования. | Он имеет запрограммированный блок программирования. |
Набор инструкций содержит различные инструкции, которые можно использовать для сложных операций. | Набор инструкций сокращен, и большинство этих инструкций очень примитивны. |
Производительность оптимизирована с упором на аппаратное обеспечение. | Производительность оптимизирована с упором на программное обеспечение |
Только одиночный набор регистров | Присутствует несколько наборов регистров |
В основном они менее конвейерные или не конвейерные | Процессоры этого типа высококонвейерные |
Время выполнения очень велико | Время выполнения очень мало |
Расширение кода не проблема. | Расширение кода может создать проблему. |
Расшифровка инструкций сложная. | Расшифровка инструкций проста. |
Для вычислений требуется внешняя память | Не требует внешней памяти для расчетов |
Примерами процессоров CISC являются процессоры System/360, VAX, AMD и Intel x86. | Распространенными микропроцессорами RISC являются ARC, Alpha, ARC, ARM, AVR, PA-RISC и SPARC. |
Инструкции могут занимать несколько тактов | Один цикл для каждой инструкции |
Более эффективное использование оперативной памяти, чем RISC | Интенсивное использование ОЗУ (может вызвать узкие места, если ОЗУ ограничено) |
Простые стандартные инструкции | Сложные инструкции и инструкции переменной длины |
Небольшое количество инструкций фиксированной длины | Большое количество инструкций |
Ограниченные режимы адресации | Составные режимы адресации |
Важными приложениями являются системы безопасности, домашняя автоматизация. | Важные приложения: Смартфоны, КПК. |
Различные форматы (16-64 бита для каждой инструкции). | фиксированный (32-битный) формат |
Единый кэш для инструкций и данных. | Отдельный кэш данных и инструкций. |
Характеристики CISC
Вот важные характеристики CISC
Для поддержки нескольких режимов адресации необходима одна инструкция.
- Большое количество инструкций.
- Логика декодирования инструкций будет сложной.
- Инструкции для специальных задач, которые используются нечасто.
- Большое разнообразие режимов адресации
- Предлагает форматы инструкций переменной длины.
- Размер инструкции превышает одно слово.
- Для выполнения инструкции может потребоваться более одного такта.
- Меньшее количество регистров общего назначения, так как операция выполняется в самой памяти.
- Различные конструкции CISC настроены с двумя специальными регистрами для указателя стека для управления прерываниями
Характеристики RISC
Вот важная характеристика RICS:
- Упрощенное декодирование инструкций
- Количество регистров общего назначения.
- Простые режимы адресации
- Меньше типов данных.
- Можно построить трубопровод
- Одна инструкция за цикл
- Операции между регистрами
- Простой формат инструкций
- Выполнение инструкции будет быстрее
- Небольшие программы
CISC Преимущества
Вот плюсы/преимущества CISC
- В CISC легко добавлять новые команды в чип без необходимости изменения структуры набора инструкций
- Эта архитектура позволяет эффективно использовать основную память
- Компилятор не должен быть очень сложным, как в случае с CISC. Наборы инструкций могут быть написаны так, чтобы соответствовать структурам языков высокого уровня.
Преимущества RISC
Преимущества/преимущества RISC
- Сложные и эффективные машинные инструкции.
- Предлагает расширенные возможности адресации для управления памятью.
- Относительно мало регистров по сравнению с процессорами RISC
- Это поможет вам сократить набор инструкций.