Компьютер со сложным набором команд
Было предложено объединить эту статью в статью «Компьютер с сокращенным набором команд» . ( Обсудить ) Предлагается с декабря 2023 г. |
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2020 г. ) |
Компьютер со сложным набором команд ( CISC / ˈ s ɪ s k / ) — это компьютерная архитектура , в которой отдельные инструкции могут выполнять несколько операций низкого уровня (таких как загрузка из памяти , арифметическая операция и сохранение памяти) или способны многошаговых операций или режимов адресации в рамках отдельных инструкций. [ нужна ссылка ] Этот термин был придуман задним числом в отличие от компьютера с сокращенным набором команд (RISC). [1] и поэтому стал своего рода общим термином для всего, что не является RISC, [ нужна ссылка ] где типичная дифференцирующая характеристика [ сомнительно – обсудить ] Дело в том, что в большинстве RISC-проектов почти для всех инструкций используется одинаковая длина и строго отдельные инструкции загрузки и сохранения.
Примеры архитектур CISC включают в себя сложные мэйнфреймы и упрощенные микроконтроллеры, в которых операции загрузки и сохранения памяти не отделены от арифметических инструкций. [ нужна ссылка ] Конкретными архитектурами набора команд, которые задним числом были помечены CISC, являются архитектуры от System/360 до z/Architecture , PDP-11 и VAX и многие другие. Хорошо известные микропроцессоры и микроконтроллеры, которые во многих научных публикациях также обозначаются как CISC. [ нужна ссылка ] включают семейства Motorola 6800 , 6809 и 68000 ; семейство Intel 8080 , iAPX 432 и x86 ; семейства Zilog Z80 , Z8 и Z8000 ; семейство National Semiconductor NS320xx ; семейство MOS Technology 6502 ; семейство Intel 8051 ; и другие.
Некоторые авторы рассматривают некоторые конструкции как пограничные случаи. [ ВОЗ? ] Например, Microchip Technology PIC в одних кругах обозначается как RISC, а в других — CISC.
Поощрения и льготы
[ редактировать ]До того, как философия RISC стала известной, многие компьютерные архитекторы пытались преодолеть так называемый семантический разрыв , то есть разработать наборы команд, которые напрямую поддерживают конструкции программирования высокого уровня, такие как вызовы процедур, управление циклом и сложные режимы адресации , позволяя структурировать данные. и доступ к массиву должен быть объединен в отдельные инструкции. Инструкции также обычно тщательно кодируются для дальнейшего повышения плотности кода. Компактность таких наборов команд приводит к меньшим размерам программ и меньшему количеству обращений к основной памяти (которые часто были медленными), что в то время (начало 1960-х годов и позднее) приводило к огромной экономии затрат на компьютерную память и дисковое пространство, поскольку а также более быстрое исполнение. Это также означало хорошую производительность программирования даже на языке ассемблера , поскольку языки высокого уровня, такие как Фортран или Алгол, не всегда были доступны или уместны. Действительно, микропроцессоры этой категории иногда все еще программируются на языке ассемблера для определенных типов критически важных приложений. [ нужна ссылка ]
Новые инструкции
[ редактировать ]В 1970-х годах анализ языков высокого уровня показал, что компиляторы создали соответствующий сложный машинный язык. Было установлено, что новые инструкции могут улучшить производительность. Были добавлены некоторые инструкции, которые никогда не предназначались для использования на языке ассемблера, но хорошо подходят для компилируемых языков высокого уровня. Компиляторы были обновлены, чтобы использовать эти инструкции. Преимущества семантически насыщенных инструкций с компактными кодировками можно увидеть и в современных процессорах, особенно в высокопроизводительном сегменте, где кэши являются центральным компонентом (в отличие от большинства встроенных систем ). Это связано с тем, что эта быстрая, но сложная и дорогая память по своей природе ограничена в размере, что делает компактный код полезным. Конечно, основная причина, по которой они необходимы, заключается в том, что основная память (т. е. динамическая оперативная память сегодня) остается медленной по сравнению с (высокопроизводительным) ядром ЦП.
Проблемы дизайна
[ редактировать ]Хотя во многих проектах была достигнута цель повышения производительности при меньших затратах, а также была возможность выражать конструкции языка высокого уровня с помощью меньшего количества инструкций, было замечено, что это не всегда так. Например, младшие версии сложных архитектур (т. е. с использованием меньшего количества оборудования) могут привести к ситуациям, когда можно улучшить производительность, не используя сложную инструкцию (например, вызов процедуры или инструкцию ввода), а вместо этого используя последовательность более простых команд. инструкции.
Одной из причин этого было то, что архитекторы ( разработчики микрокода ) иногда «перепроектировали» инструкции языка ассемблера, включая функции, которые не могли быть эффективно реализованы на имеющемся базовом оборудовании. Например, могут быть «побочные эффекты» (помимо обычных флагов), такие как установка регистра или ячейки памяти, которая, возможно, редко использовалась; если бы это делалось через обычные (недублированные) внутренние шины или даже через внешнюю шину, это каждый раз требовало бы дополнительных циклов и, таким образом, было бы совершенно неэффективно.
Даже в сбалансированных высокопроизводительных конструкциях инструкции с высоким уровнем кодирования и (относительно) высокого уровня могут быть сложными для декодирования и эффективного выполнения в рамках ограниченного транзисторного бюджета. Поэтому такие архитектуры требовали большой работы со стороны разработчика процессора в тех случаях, когда более простое, но (обычно) более медленное решение, основанное на таблицах декодирования и/или секвенировании микрокода, не подходит. В то время, когда ресурс транзисторов и других компонентов был ограничен, это также оставляло меньше компонентов и меньше возможностей для других типов оптимизации производительности.
Идея RISC
[ редактировать ]Схема, выполняющая действия, определенные микрокодом во многих (но не во всех) CISC-процессорах, сама по себе является процессором, который во многом напоминает по структуре очень ранние конструкции ЦП. В начале 1970-х годов это породило идеи вернуться к более простым конструкциям процессоров, чтобы сделать более возможным обойтись без ( тогда относительно больших и дорогих) таблиц ПЗУ и/или структур PLA для секвенирования и/или декодирования.
Ранний (задним числом) с маркировкой процессор RISC ( IBM 801 – Исследовательский центр Уотсона компании IBM , середина 1970-х годов) представлял собой простую машину с плотной конвейеризацией, первоначально предназначенную для использования в качестве внутреннего ядра микрокода или механизма в конструкциях CISC. [ нужна ссылка ] но также стал процессором, который представил идею RISC несколько более широкой аудитории. Простота и регулярность видимого набора команд облегчили бы реализацию перекрывающихся стадий процессора ( конвейерную обработку ) на уровне машинного кода (т. е. на уровне, видимом компиляторами). Однако конвейеризация на этом уровне уже использовалась в некоторых высокопроизводительных «суперкомпьютерах» CISC, чтобы сократить время цикла команд (несмотря на сложности реализации в рамках ограниченного количества компонентов и сложности проводки, возможной в то время). С другой стороны, внутреннее выполнение микрокода в процессорах CISC может быть более или менее конвейерным в зависимости от конкретной конструкции и, следовательно, более или менее похоже на базовую структуру процессоров RISC.
Суперкомпьютер CDC 6600 , впервые выпущенный в 1965 году, также задним числом обозначался как RISC. [2] [3] Он имел архитектуру загрузки-сохранения, которая позволяла одновременно выполнять до пяти загрузок и двух сохранений под контролем программиста. У него также было несколько функциональных блоков, которые могли работать одновременно.
Суперскаляр
[ редактировать ]В более современном контексте сложное кодирование переменной длины, используемое некоторыми типичными архитектурами CISC, усложняет, но все же осуществимо, построение суперскалярной реализации модели программирования CISC непосредственное ; с правильным порядком исходный суперскаляр Pentium и суперскаляр с неправильным порядком Cyrix 6x86 являются хорошо известными примерами этого. Частый доступ к памяти для операндов типичной CISC-машины может ограничивать параллелизм на уровне инструкций, который можно извлечь из кода, хотя это в значительной степени опосредовано быстрыми структурами кэша, используемыми в современных конструкциях, а также другими мерами. Из-за компактных и семантически богатых инструкций средний объем работы, выполняемой на единицу машинного кода (т.е. на байт или бит), выше для CISC, чем для RISC-процессора, что может дать ему значительное преимущество в современной реализации на основе кэша. .
Транзисторы для логики, PLA и микрокода больше не являются дефицитными ресурсами; только большие высокоскоростные кэш-памяти сегодня ограничены максимальным количеством транзисторов. Несмотря на сложность, количество транзисторов в CISC-декодерах не растет экспоненциально, как общее количество транзисторов на процессор (большинство из которых обычно используются для кэшей). Вместе с более совершенными инструментами и усовершенствованными технологиями это привело к новым реализациям проектов с высокой степенью кодирования и переменной длины без ограничений загрузки и хранения (т. е. без RISC). Это регулирует повторные реализации старых архитектур, таких как вездесущая x86 (см. ниже), а также новые конструкции микроконтроллеров для встраиваемых систем и аналогичные области применения. Суперскалярная сложность в случае современного x86 была решена путем преобразования инструкций в одну или несколько микроопераций и динамического выполнения этих микроопераций, т.е. косвенного и динамического суперскалярного выполнения; Pentium Pro и AMD K5 являются ранними примерами этого. Это позволяет разместить довольно простую суперскалярную конструкцию после (довольно сложных) декодеров (и буферов), давая, так сказать, лучшее из обоих миров во многих отношениях. Эта техника также используется в Микропроцессоры IBM z196 и более поздних версий z/Architecture .
Условия CISC и RISC
[ редактировать ]Эта статья , возможно, содержит оригинальные исследования . ( Ноябрь 2023 г. ) |
Термины CISC и RISC стали менее значимыми по мере дальнейшего развития конструкций и реализаций CISC и RISC. Первые реализации x86 с высокой (или жесткой) конвейеризацией, модели 486 от Intel , AMD , Cyrix и IBM , поддерживали все инструкции, которые выполняли их предшественники, но достигали максимальной эффективности только на довольно простом подмножестве x86, которое было лишь немногим больше, чем типичный набор команд RISC (т. е. без типичных ограничений загрузки-хранения RISC ). [ нужна ссылка ] Поколение Intel P5 Pentium было суперскалярной версией этих принципов. Однако современные процессоры x86 также (обычно) декодируют и разделяют инструкции на динамические последовательности микроопераций с внутренней буферизацией , что помогает выполнять большее подмножество инструкций конвейерным (перекрывающимся) способом и облегчает более сложное извлечение параллелизма из кода. поток, для еще более высокой производительности.
Вопреки популярным упрощениям (присутствующим также в некоторых академических текстах), не все CISC имеют микрокодирование или имеют «сложные» инструкции. [ нужна ссылка ] Поскольку CISC стал универсальным термином, означающим все, что не является архитектурой загрузки-хранения (RISC), не количество инструкций и не сложность реализации или инструкций определяют CISC, а то, что арифметические инструкции также выполняют работу с памятью. доступы. [ нужна ссылка ] [4] [ не удалось пройти проверку ] По сравнению с небольшим 8-битным CISC-процессором команда RISC с плавающей запятой является сложной. CISC даже не требует сложных режимов адресации; 32- или 64-битные процессоры RISC вполне могут иметь более сложные режимы адресации, чем небольшие 8-битные процессоры CISC.
PDP -10 , PDP-8 , Intel 80386 , Intel 4004 , Motorola 68000 , System z мэйнфрейм , Burroughs B5000 , VAX , Zilog Z80000 и MOS Technology 6502 — все они сильно различаются по количеству. размеры и форматы инструкций, количество, типы и размеры регистров, а также доступные типы данных. Некоторые имеют аппаратную поддержку таких операций, как сканирование подстроки, арифметика BCD произвольной точности или трансцендентные функции , тогда как другие имеют только 8-битное сложение и вычитание. Но все они относятся к категории CISC. [ нужна ссылка ] . потому что у них есть инструкции «загрузка-работа», которые загружают и/или сохраняют содержимое памяти в тех же инструкциях, которые выполняют фактические вычисления. Например, PDP-8, имеющий только 8 инструкций фиксированной длины и вообще не имеющий микрокода, является CISC из-за того, как работают инструкции, PowerPC, который имеет более 230 инструкций (больше, чем некоторые VAX), и сложные внутренние компоненты, такие как регистр переименование и буфер переупорядочения — это RISC, тогда как Minimal CISC имеет 8 инструкций, но это явно CISC, поскольку он сочетает доступ к памяти и вычисления в одних и тех же инструкциях.
См. также
[ редактировать ]- Компьютер с сокращенным набором команд
- Компьютер с одним набором команд
- Компьютер с нулевым набором команд
- ВЛИВ
- Микрокод
- Сравнение архитектур наборов команд
Ссылки
[ редактировать ]- ^ Паттерсон, Вашингтон ; Дитцель, доктор медицинских наук (октябрь 1980 г.). «Дело о компьютере с сокращенным набором команд». SIGARCH Новости компьютерной архитектуры . 8 (6). АКМ : 25–33. дои : 10.1145/641914.641917 . S2CID 12034303 .
- ^ «История компьютеров: аппаратная архитектура серии CDC 6000» . Музей Ваальсдорп . 23 июля 2023 г. . Проверено 19 января 2024 г.
- ^ Энтони, Себастьян (10 апреля 2012 г.). «История суперкомпьютеров» . ЭкстримТех . Проверено 19 января 2024 г.
- ^ Хеннесси, Джон ; Паттерсон, Дэвид . Компьютерная архитектура: количественный подход (PDF) . Архивировано (PDF) из оригинала 14 июня 2023 г. Проверено 13 июня 2023 г.
Общие ссылки
[ редактировать ]- Таненбаум, Эндрю С. (2006) Структурированная компьютерная организация, пятое издание , Pearson Education, Inc. Аппер-Сэддл-Ривер, Нью-Джерси.
Дальнейшее чтение
[ редактировать ]- Мано, М. Моррис. Архитектура компьютерных систем (3-е изд.). ISBN 978-0131755635 .