[image]

RISCoCISC

 
SE Татарин #19.03.2024 12:18
+
-
edit
 

Татарин

координатор
★★★★★
Предлагается процессор-потомок ужа с ежом, наследующий наилучшие черты архитектур.

Идея такая: берём классический минимальный набор команд RISC и отводим в нём некоторое кодовое пространство под спецкоманды. Минимальный набор команд RISC постоянен и интерпретируется напрямую железным декодером, с ним всё ясно, с ним всё как обычно.

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

Главный вопрос "как быть со спецрегистрами, которые ломают идеологию RISC и уничтожают эффективную конвееризацию?" решается очень просто: изменение спецрегистра и выборка нового нужного набора команд из полного возможны только при создании потока/процесса и состояние регистра.
Карта является неизменяемыми в пределах потока, поэтому при работе конвеера не нужно учитывать возможность их изменения.
Ессно, карта лениво (как кеш, при первой выборке) копируется в спецрегистры декодера.

Переключение контекста при этом, разумеется, удорожается, но не так уж и намного: пусть у нас 256 спецкоманд, каждой соотвествует 16-битный регистр (это только код операции, так что это огромное пространство), получается 512 байт памяти, которые ещё и можно грузить из дескриптора в регистры лениво, по мере надобности.

Формат "кастомной" команды стандартизирован и содержит явное указание на количество и тип операндов.

...

Нафига всё это нужно? Впихать в компактный набор команд сложные высокофункциональные конструкции и сэкономить шину памяти на выборке команд, повысить общую скорость работы, и одновременно упростить декодер. Команды-то могут сколь угодно сложные, но "работа" декодера сводится практически к разыменованию и получению из кода команды указателя на микрокод. Никаких префиксов, длина команды фиксирована, всё просто предсказуемо.
В то же время пространство для расширения набора команд практически неограничено без потери обратной совместимости (что для RISC-подобных часто представляет сложности).
   122.0.0.0122.0.0.0
RU pokos #20.03.2024 10:15  @Татарин#19.03.2024 12:18
+
-
edit
 

pokos

аксакал

Татарин> Предлагается процессор-потомок ужа с ежом, наследующий наилучшие черты архитектур.

Опоздал ты, брат, лет на 20-25. Проклятущая Интел начала это со своего ненавистного 486-го. Теперь оно у них (и не только у них) в полный рост уже.
   68.068.0

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru