CirciterЦитата:
Извиняйте, если глупость скажу.
Думаю он ещё неготов чтобы воспринять результаты.
e2e4Можем поговорить. Только чувствую вы не в теме.
Цитата:
С другой стороны, слишком длинные команды сильно усложняют декодер команд, и, соответственно, выполняются медленнее.
Как раз таки длинные команды быстрее. А поводу декодера там и там можно сделать простой декодер. Вот только чтобы по скорости угнаться декодер простых команд надо будет усложнять.
Цитата:
Но давайте рассмотрим некоторый "среднестатистический" микропроцессор, одинаково хороший (и плохой) для всех возможных задач, ну, скажем, центральный микропроцессор для бытового ПК.
Давай остановимся на этой фразе.
(Оффтоп)
Изначально микроконтроллеру выполнял одну функцию управления одним периферийным устройством.
Потом появился ЦП который выполнял множество функций. Поэтому и требования к нему широкие. Так как современный компьютер не мыслим без мультимедиа. Если раньше достаточно было обработки текста и звука, то сейчас процессор занимается обработкой фото и видео материалов и без этого не мыслим ПК. Зайдите на любой сайт и вы увидите анимированные смайлы, флешь банеры. Или целые видео ролики.
Но это ещё не придел на будущих компьютерах будет востребована симуляция или обработка видео процессов со скоростью в 1000 раз больше реального времени.
Так вот ЦП давно является специализированным.
Современный ЦП не мыслим без параллельного выполнения команд.
Так как ЦП является процессором общего назначения то от него требуется выполнять разные команды: сложение, умножение, деление, комплексное умножение, копирование блоков памяти. Так вот чтобы эти команды работали быстро нужно специальные блоки. Но тогда встаёт идея задействовать неиспользуемые блоки. Отсюда и возникают сложные команды. Которые разбиваются на простые составляющие. А за счёт параллельности операции выполняются быстрее.
Но сложные команды занимают большой объем памяти. К примеру в первых ARM команды были 32-битные. И как следствие команда читалась целиком одним блоком. Но если посчитать, то зачастую нет алгоритмов которые могли бы загрузить все блоки. Поэтому команды были еще упрощены, до 16-бит.
Это легко понять если вы начнёте делать VM.
Но это не всё зачастую ЦП требуется обрабатывать мультимедийные данные и поэтому для ускорения требуется чтобы вычислительных блоков способных выполнять одну простую операцию было много. Отсюда решение одна команда много данных.
И так далее.