SISD (Single Instruction, Single Data)

SISD (англ. Single Instruction Single Data) или ОКОД - архитектура компьютера, в которой один процессор выполняет один поток команд, оперируя одним потоком данных.

Принцип работы

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

Классическим примером однопроцессорной архитектуры является архитектура фон Неймана со строго последовательным выполнением команд: процессор по очереди выбирает команды программы и также по очереди обрабатывает данные (программа и данные хранятся в единственной последовательно адресуемой памяти).

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

При работе такой системы в мультипрограммном режиме, когда совместно решаются несколько задач (программы и исходные данные по каждой из них хранятся в оперативной памяти), обеспечивается параллельная работа устройств системы, происходит разделение времени и оборудования между совместно выполняемыми программами.[1]

Но в каждый данный момент операционное устройство (АЛУ), поскольку оно является единственным, занимается обработкой информации по какой-то одной команде, т. е. одновременное преобразование информации в АЛУ по нескольким командам, принадлежащим разным участкам одной и той же программы или разным программам, невозможно. Основная масса современных ЭВМ функционирует в соответствии с принципом фон Неймана и имеет архитектуру класса SISD. Данная архитектура породила CISC, RISC и архитектуру с суперскалярной обработкой.

Архитектура CISC

Компьютеры с CISC (Complex Instruction Set Computer - Комплекс с набором команд) архитектурой имеют комплексную (полную) систему команд, под управлением которой выполняются всевозможные операции типа «память-память», «память-регистр», «регистр-память», «регистр-регистр». Данная архитектура характеризуется:

  • Большим числом команд (более 200);
  • Переменной длиной команд (от 1 до 11 байт);
  • Значительным числом способов адресации и форматов команд;
  • Сложностью команд и многотактностью их выполнения;
  • Наличием микропрограммного управления, что снижает быстродействие и усложняет процессор.

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

Большинство современных компьютеров типа IBM PC относятся к CISC архитектуре, например, компьютеры с микропроцессорами 8080, 80486, 80586 (товарная марка Pentium). Это наиболее распространённая архитектура современных настольных, серверных и мобильных процессоров построена по архитектуре Intel x86 (или х86-64 в случае 64-разрядных процессоров).

Процессор Motorola 6800

Формально, все х86-процессоры являлись CISC-процессорами, однако новые процессоры, начиная с Intel486DX, являются CISC-процессорами с RISC-ядром.[2] Они непосредственно перед исполнением преобразуют CISC-инструкции процессоров x86 в более простой набор внутренних инструкций RISC. В микропроцессор встраивается аппаратный транслятор, превращающий команды x86 в команды внутреннего RISC-процессора. При этом одна команда x86 может порождать несколько RISC-команд (в случае процессоров типа P6 — до 4-х RISC команд в большинстве случаев). Исполнение команд происходит на суперскалярном конвейере одновременно по несколько штук. Процессору с архитектурой CISC приходится иметь дело с более сложными инструкциями неодинаковой длины. Выполнение одиночной CISC-инструкции может происходить быстрее, однако обрабатывать несколько таких инструкций параллельно сложнее.

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

Недостатки CISC:

  • Высокая стоимость аппаратной части;
  • Сложности с распараллеливанием вычислений.

Методика построения системы команд CISC противоположна другой методике — RISC. Различие этих концепций состоит в методах программирования, а не в реальной архитектуре процессора. Практически все современные процессоры эмулируют наборы команд как RISC-, так и CISC-типа.

Архитектура RISC

RISC (Reduced Instruction Set Computing) —вычисления с сокращённым набором команд. Аббревиатура RISC появилась в середине 80-х годов XX века, когда ученые из Беркли сообщили о создании "компьютера с ограниченным набором команд". С тех пор остальные компьютеры стали называться CISC (complication instruction set computer – компьютеры со сложным (расширенным) набором команд.)

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

Первые RISС-процессоры были разработаны в начале 1980-х годов в Стэнфордском и Калифорнийском университетах США. Они выполняли небольшой (50 − 100) набор команд, тогда как обычные CISC (Сomplex Instruction Set computer) выполняли 100—200.[3]

RISC-процессоры характеризуются следующими особенностями:

Процессор MIPS R3000
  1. Из них удалены сложные (типа двоичного умножения) и редко используемые инструкции.
  2. Все инструкции имеют одну длину. При этом уменьшается сложность устройства управления процессора и увеличивается скорость дешифрации команд.
  3. Отсутствуют инструкции, работающие с памятью напрямую (типа команд "память - память", "регистр - память"). Возможна только загрузка данных из памяти в регистр и наоборот, из регистра в память. Соответственно на порядок увеличивается число регистров.
  4. Отсутствуют операции работы со стеком.
  5. Одна инструкция выполняет только одну операцию с памятью — чтение или запись. Операции вида "прочитать-изменить-записать" отсутствуют.
  6. Большое количество регистров общего назначения (32 и более).
  7. Простые способы адресации,
  8. Возможно использования конвейера и параллельных вычислений. АЛУ, например, одновременно может работать с 2-мя 32-х разрядными, 4-мя 16-ти разрядными, и 8-мью 8-ми разрядными числами. Смысл же конвейера – в накоплении последовательно выполняемых команд программы (т.н. линейных участков) в буфере для их ускоренного дешифрования и выполнения.
  9. Почти все операции осуществляются за один такт микропроцессора.
  10. Благодаря этим нововведениям тактовая частота RISC-процессоров (при прочих равных условиях) выше.

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

В настоящее время многие архитектуры процессоров являются RISC-подобными, к примеру, ARM, DEC Alpha, SPARC, AVR, MIPS, POWER и PowerPC. Наиболее широко используемые в настольных компьютерах процессоры архитектуры x86 ранее являлись CISC-процессорами, однако новые процессоры непосредственно перед исполнением преобразуют CISC-инструкции процессоров x86 в более простой набор внутренних инструкций RISC.

Суперскалярная обработка

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

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

Еще одной разновидностью однопотоковой архитектуры является суперскалярная обработка. Смысл этого термина заключается в том, что в аппаратуру процессора закладываются средства, позволяющие одновременно выполнять две или более скалярные операции, т.е. команды обработки пары чисел. Суперскалярная архитектура базируется на многофункциональном параллелизме и позволяет увеличить производительность компьютера пропорционально числу одновременно выполняемых операций. Существует 2 способа реализации суперскалярной обработки[4]:

  • Аппаратная реализация суперскалярной обработки применяется как в CISC, так и в RISC - процессорах и заключается в чисто аппаратном механизме выборки из буфера инструкций (или кэша инструкций) несвязанных команд и параллельном запуске их на исполнение. Этот метод хорош тем, что он «прозрачен» для программиста, составление программ для подобных процессоров не требует никаких специальных усилий, ответственность за параллельное выполнение операций возлагается в основном на аппаратные средства.
Процессор архитектуры VLIW: Intel Itanium
  • VLIW (Very long instruction word — «очень длинная машинная команда») — архитектура процессоров с несколькими вычислительными устройствами. Характеризуется тем, что одна инструкция процессора содержит несколько операций, которые должны выполняться параллельно. То есть, уже на этапе подготовки программы компилятор группирует несвязанные операции в пакеты, содержимое которых строго соответствует структуре процессора. Например, если процессор содержит функционально независимые устройства (сложения, умножения, сдвига и деления), то максимум, что компилятор может «уложить» в один пакет - это четыре разнотипные операции; (сложение, умножение, сдвиг и деление). Сформированные пакеты операций преобразуются компилятором в командные слова, которые по сравнению с обычными инструкциями выглядят очень большими.

В суперскалярных процессорах также есть несколько вычислительных модулей, но задача распределения между ними работы решается аппаратно. Это сильно усложняет дизайн процессора, и может быть чревато ошибками. В процессорах VLIW задача распределения решается во время компиляции и в инструкциях явно указано, какое вычислительное устройство должно выполнять какую команду. VLIW можно считать логическим продолжением идеологии RISC, расширяющей её на архитектуры с несколькими вычислительными модулями. Так же, как в RISC, в инструкции явно указывается, что именно должен делать каждый модуль процессора. Из-за этого длина инструкции может достигать 128 или даже 256 бит.

Свойства VLIW:

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

Примечания

  1. Материал из электронного ресурса - SISD-компьютеры - Режим доступа[1]
  2. Материал из электронного ресурса - Архитектура процессоров - Режим доступа[2]
  3. Материал из электронного ресурса - Современное развитие микропроцессорной техники - Режим доступа[3]
  4. Материал из электронного ресурса - Суперскалярный параллелизм - Режим доступа[4]