RISC и CISC
RISC и CISC — это названия двух контрастирующих философий наборов команд: компьютеры с сокращенным набором команд (RISC) предпочитают небольшие наборы простых, единообразных инструкций типа «регистр-регистр», в то время как компьютеры со сложным набором команд (CISC) предлагают множество мощных инструкций переменной длины, которые выполняют больше работы за одну инструкцию.
Definition
RISC (компьютер с сокращенным набором команд) — это философия проектирования, подчеркивающая небольшой набор простых инструкций фиксированного формата, выполняемых в модели загрузки-хранения; CISC (компьютер со сложным набором команд) подчеркивает больший набор более мощных, часто переменной длины инструкций, включая операции типа «память-память».
Scope
Эта тема охватывает две философии дизайна и их компромиссы: простоту и регулярность инструкций против их богатства и плотности кода, дисциплину загрузки-хранения (load-store) RISC, преимущества конвейеризации простых инструкций, а также то, как современные высокопроизводительные реализации CISC преобразуют сложные инструкции во внутренние RISC-подобные микрооперации. Она исключает детали битового кодирования (форматы и кодирование инструкций) и детали реализации конвейера (конвейеризация и конфликты).
Core questions
- Какие цели проектирования мотивируют сокращение набора команд до простых, единообразных операций?
- Как дисциплина загрузки-хранения отличает RISC от CISC?
- Почему простые, регулярные инструкции легче поддаются конвейеризации?
- Как современные процессоры x86 совмещают набор команд CISC с RISC-подобным внутренним исполнением?
Key concepts
- сокращенный набор команд
- сложный набор команд
- архитектура загрузки-хранения
- инструкции фиксированной и переменной длины
- микрооперации
- совместное проектирование компилятора и аппаратного обеспечения
- плотность кода
Key theories
- Аргумент RISC
- Паттерсон и Дитцель утверждали, что небольшой набор простых инструкций, быстро выполняемых и эффективно конвейеризуемых при хорошей поддержке компилятора, может превзойти сложные наборы команд, чьи сложные инструкции редко используются и трудно реализуются быстро.
Mechanisms
Конструкции RISC сохраняют инструкции простыми, фиксированной длины и типа «регистр-регистр», с отдельными инструкциями загрузки и сохранения для памяти; такая регулярность делает декодирование и конвейеризацию простыми. Конструкции CISC предоставляют сложные инструкции переменной длины, которые могут напрямую обращаться к памяти и выполнять многошаговые операции. Современные реализации CISC декодируют сложные инструкции в последовательности более простых внутренних микроопераций, которые затем выполняются RISC-подобным ядром.
Clinical relevance
Различие RISC/CISC сформировало доминирующие вычислительные платформы: ARM и RISC-V воплощают принципы RISC и лидируют на рынках мобильных устройств, встраиваемых систем, а также все чаще на рынках серверов и ноутбуков, в то время как x86 (архитектура CISC с RISC-подобной внутренней структурой) долгое время доминировала на ПК и серверах. Дискуссия влияет на текущий выбор в отношении энергоэффективности, производительности и программных экосистем.
History
Концепция RISC выросла из исследований IBM 801 и проектов Berkeley RISC и Stanford MIPS начала 1980-х годов, сформулированных в статье Паттерсона и Дитцеля 1980 года. Идеи RISC распространились через коммерческие разработки, такие как SPARC, MIPS, PowerPC и ARM. Тем временем x86 выжила, приняв внутренние RISC-подобные микрооперации, а открытая архитектура RISC-V возобновила импульс для чистого RISC-дизайна.
Debates
- Имеет ли по-прежнему значение различие между RISC и CISC?
- Поскольку современные чипы CISC внутренне выполняются как RISC-подобные микрооперации, и оба лагеря используют конвейеризацию и кэширование, некоторые утверждают, что первоначальное различие исчезло; другие же считают, что регулярность набора команд по-прежнему влияет на эффективность декодирования, энергопотребление и верификацию.
Key figures
- David A. Patterson
- David R. Ditzel
- John L. Hennessy
- John Cocke
Related topics
Seminal works
- patterson1980risc
- hennessy2019
- patterson2020
Frequently asked questions
- Всегда ли RISC быстрее, чем CISC?
- Не обязательно. Простота RISC облегчает конвейеризацию и высокие тактовые частоты, но инструкция CISC может выполнять больше работы за одну инструкцию. На практике высокопроизводительные процессоры CISC преобразуют инструкции в RISC-подобные операции, поэтому реальная производительность зависит от всей микроархитектуры, а не только от метки ISA.
- Почему ARM и RISC-V называются архитектурами RISC?
- Обе используют небольшие наборы простых, в основном фиксированной длины инструкций с моделью памяти загрузки-хранения и небольшим количеством режимов адресации — определяющие черты философии RISC, — что делает их эффективными в реализации и хорошо подходящими для энергоэффективных и высокопроизводительных разработок.