Comments 10
На то, что индустрия отвернулась от MIPS и повернулась к ARM, повлияла и история о том, как MIPS стал судить стартап Lexra.
Интересно. Жадность опять погубила, оказывается?
Вся история - https://www.probell.com/lexra/
Путаница с архитектурами и микроархитектурами -- это вообще беда; очень многим лениво несколько буковок напечатать (а некоторые, наверное, и не видят разницы).
RISC упрощает "конвейеризацию", но не является необходимым условием. Скажем, такие типичные CISCи, как IBMовские мэйнфреймы от Системы 360 и до современных z/Architecture (хоть самой IBM, хоть некоторые наши ЕСки) благополучно использовали и используют что конвейер, что суперскалярность. В частности, на нашей последней действительно серийной машине -- ЕС-1130 -- простые команды "регистр-регистр" и "регистр-память" имели эффективное время выполнения 1 такт (160 нс, если правильно помню длительность -- всё ж, 30+ лет прошло), ну а "тяжёлые" команды выполнялись традиционным микропрограммным образом. Формально, кстати, там и простые команды были микропрограммными -- но их микропрограмма содержала всего одну микрокоманду.
Возможно, упадку RISCов поспособствовало и то, что появилась возможность впихнуть конвейер, а затем и суперскалярность на один кристалл и для CISCов, что в 1980-е было невозможно -- а соответственно, RISC лишился преимущества в скорости (по сути, в тактовой частоте), обусловленной однокристальной конструкцией.
Ну а сейчас ARMы идут вперёд за счёт мобильного сегмента -- думается, благодаря меньшему энергопотреблению на тот же объём работы. Плюс, здесь нет груза совместимости со 100500 приложениями под IA-32.
Ну а невыровненный доступ... IBM ввела его в Системе 370 за 10+ лет до появления MIPS (одно из расширений по сравнению с Системой 360). Она, случаем, ничего не нарушила?
появилась возможность впихнуть конвейер, а затем и суперскалярность на один кристалл и для CISCов
В смысле декодер? Так-то RISCи победили.
Там просто декодер недостаточно. Есть много другой возни - например exceptions должны быть precise, а не просто чтобы происходило исключение посреди инструкции и выход из обработчика исключения был бы не пойми куда
Нет, декодер -- вещь относительно небольшая, а для той же Системы 360 и иже с ней попроще будет, чем, скажем, для ARM (CISC -- это далеко не всегда ужас-ужас-ужас в кодировке, как на интеловских процах). Тут управление процессом обработки в целом. В первых RISCах, например, никаких умножений-делений не было -- они сложные, поэтому и были выброшены. (В ARMах, кстати, целочисленное умножение стало появляться лишь в версии ARMv4, и то не во всех вариантах, а деление -- лишь в современных микроконтроллерах, т.е. в архитектуре ARMv7-M).
В относительно ранних RISC-ах, например MIPS R3000 1988-го года, операции умножения и деления были, в форме инструкций запуска операции умножения или деления, с возможностью считать результаты операции через N тактов с помощью инструкций обмена с системным сопроцессором Cop0 (который был обязательной частью процессорного ядра):
https://ffhacktics.com/wiki/R3000_instruction_set#mult

Но, если я правильно Вас понял, здесь умножение-деление -- не обычные команды процессора, выполняемые в его собственных рамках, а "прибитые сбоку" в виде отдельного, пусть и обязательного устройства. Это мне напоминает ранние PDP-11, где умножения-деления (и многоразрядных сдвигов) как команд не было, но можно было подключить по обычной шине дополнительное "внешнее устройство" EAE -- расширитель арифметики. В него обычными MOVами записывались исходные данные, а потом считывался результат.
Нет, в его рамках. Cop0 хоть и называется "системным сопроцессором" но процессорное ядро без него не функционирует (например в нем стоят биты режима kernel/supervisor/user mode) и аппаратно он стоит в иерархиии модулей ядра, не через внешнюю шину. То же самое MDU (multiply-divide unit), он во всех мипсовских ядрах с незапамятных времен стоит параллельно ALU. Может в ранних университетских ядрах начала 1980-х было не так, но потом вот так - так оно было в конце 1980-х и так вошло в стандарт MIPS32 и MIPS64 еще в 1990-х.
На ютюбе вышло видео Сергея Сафонова Как Intel создал ARM, ARM похоронил MIPS, на очереди X86? Видео хорошее, в нем...