Чак Мур и его F21

MISC против RISC против CISC

MISC ( Компьютер с Минимальным Набором Команд ) - дальнейшее развитие идей команды Чака Мура, который закономерно полагает, что принцип "простоты", изначальный для RISC процессоров, слишком быстро отошёл на задний план. В пылу борьбы за максимальное быстродействие, RISC догнал и перегнал многие CISC процессоры по сложности. Между тем очевидны многие проблемы RISC архитектуры.

 а. RISC команды всё ещё медленны. Используется многоступенчатый конвейер для их выполнения. Однако всякий раз при ветвлении программы конвейер сбрасывается и заполняется заново. Большинство ухищрений по выделению новых ступеней конвейера и предсказанию ветвлений уже исчерпали себя.

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

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

 По мнению авторов этой концепции сокращение набора команд является эффективным шагом по повышению производительности. Они исследовали вопрос достижения высокой производительности с ограничением на максимальную простоту. Их цель - исследование, на сколько современная КМОП технология может уменьшить стоимость построения компьютера. Авторы MISC процессора пришли к выводу, что число команд должно быть в районе 32-х, и использовали для их кодировки 5-и разрядное поле команды. Отсюда в каждое 20-и разрядное слово MuP-21 или F21 помещается четыре команды, а в каждое 32-х разрядное слово P32, поместится шесть команд с запасом. Система команд MISC настолько проста, что поместилась на одной страничке.

  Микропроцессор F21
  Предварительная спецификация 4/97
  Central Processing Unit

Регистр   Имя                          Использование
-------   ---                          -------------
PC        Программный счетчик          наращивается последней инструкцией в слове, или 
                                        устанавливается при переходе, вызове, возврате.
A         Адресный регистр             доступ к памяти через @A, @A+, !A, !A+, 
                                        устанавливается A!, читается A
T         Вершина стека данных         все операции АЛУ используют T как обязательный операнд
                                      
S         Второй элемент стека данных  используется в некоторых операциях АЛУ

S2 // S11 стек данных                  циклический стек под T и S на 16 вложений 

R         Вершина стека возвратов      доступ к памяти через @R+, и !R+,  используется при 
                                        вызове, возврате, push и pop
R1 // R10 стек возвратов               циклический стек под R на 16 вложений, используется для
                                        вызова - возврата, или для временного хранения данных


  Код  Имя    Описание                               Forth ( with variable A )
  ---  ---    --------                               -----------------------
   00  else   безусловный переход                    ELSE
   01  T0     переход если T0-19 = false без drop    DUP IF
   02  call   PC+1 ->> R, переход                    :
   03  C0     переход если T20 = false               CARRY? IF
   06  ;      PC <<- R  (возврат из подпрограммы)    ;
   08  @R+    выборка по адресу R, увеличение R      R@ @ R> 1+ >R
   09  @A+    выборка по адресу A, увеличение A      A @ @ 1 A +!
   0A  #      выборка из PC+1, увеличение PC         LIT
   0B  @A     выборка по адресу A                    A @ @
   0C  !R+    сохранение по адресу R, увеличение R   R@ ! R> 1+ >R
   0D  !A+    сохранение по адресу A, увеличение A   A @ ! 1 A +!
   0F  !A     сохранение по адресу A                 A @ !
   10  com    дополнение T                           -1 XOR
   11  2*     сдвиг T, 0 в T0                        2*
   12  2/     сдвиг T, T20 в T19                     2/
   13  +*     сложение S с T если T0 = true          DUP 1 AND IF OVER + THEN
   14  -or    S исключающее-или T                    XOR
   15  and    S и T                                  AND
   17  +      сложение S с T                         +
   18  pop    выталкиваем R, вталкивая в T           R>
   19  A      вталкиваем A в T                       A @
   1A  dup    вталкиваем T в T                       DUP
   1B  over   вталкиваем S в T                       OVER
   1C  push   выталкиваем T, вталкивая в R           >R
   1D  A!     выталкиваем T в A                      A !
   1E  nop    задержка 2 нс                          NOP
   1F  drop   выталкиваем T                          DROP

Более сложные команды формируются как последовательность более простых.

 MuP21 - первый член семейства микропроцессоров, основанных на MISC принципах. Он доказывает, что всё ещё есть резерв для эффективного сокращения системы команд. Продолжая сокращать набор команд, микропроцессоры могут дальше упрощаться и повышать эффективность. Поразительно, что MuP21 имеет пиковое быстродействие 100 MIPS, используя устаревший 1.2 микрон КМОП технологический процесс. Уже появился новый кристалл F21 и готовится 32-х разрядный P32.

 Используется преимущество стекового процессора в том, что нет декодирования входных и выходного регистров в поле команды. Аппаратная простота MISC процессоров даёт большой выигрыш по сравнению с RISC и CISC процессорами в отношении производительность/стоимость и меньшую мощность потребления.

 Чак Мур долго опрашивал клиентов, какой глубины должны быть стеки, но получал неправильные ответы. Этот вопрос ставился много раз. Чак выбрал для F21 глубину 17/18 вложений, но говорит что есть резон сократить стеки до 8/12 вложений в новом P32.

 Предполагается что P32 будет выбирать в одной группе шесть инструкций и выполнять их за шесть тактов. Остаётся ещё два бита сверх шести инструкций. Один из них будет использован как бит возврата. Второй бит пока не определён, но есть много предложений по этому поводу.

 Это очень многообещающий проект ...