[an error occurred while processing this directive]
А можно продолжить обсуждение "идеального процессора" Билла ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено CD_Eater 09 марта 2005 г. 03:30

1) Маленький вопрос. А почему стек растёт вверх, а не вниз ? В этом есть преимущества ?

2) Большой вопрос.
При описании системы инструкций процессора всегда прослеживается старание придать некоторую законченность и красоту, уложить инструкции оптимальным образом в "таблицу дизассемблера". При этом обычно говорят о количестве битов на номер регистра, на код инструкции, на код способа адресации. Обычно для экономии кодов инструкций оставляют несколько регистров с бОльшими возможностями (много способов адресации), а остальные - с урезанными возможностями. Получается разумный компромисс.

Но эта красота недолговечна. Вспомним 8086 (или ядро любого современного МК, напр., AVR). При первом же усложнении архитектуры вся эта конструция грубо ломается, и после уже не напоминает ни о какой оптимальности. Это происходит потому, что в таблице инструкций уже нет места для новых команд. Чаще всего это решается байтовым префиксом расширенного набора инструкций, после которого следует совсем другой набор инструкций, а предыдущие коды остаются главным образом для совместимости, тем не менее занимая драгоценное место в таблице. Как хочется устроить новую оптимизацию, "разрушив всё до основания, а затем...". Жаль, что это снова будет недолговечно. Замечу, что во всех последующих поколениях процессоров, тянущих первоначальную систему инструкций для совместимости, будет наблюдаться последствия ограничений, наложенных когда-то на использование регистров. (Грубо говоря, в Пентиуме интерфейс программиста по-прежнему ограничен 8 регистрами, как это было в далёком 8086, а в АВРах меня очень достаёт тот факт, что нельзя загрузить константу в половину регистров и т.п.). История всех "модификаций" будет хорошо видна, если постараться выписать правила построения кодов инструкций, они окажутся совсем не так логичны, как это должно быть (писал компилятор ассемблера для АВР, знаю, какая там каша намешана, хотя АВР прошёл сравнительно небольшой путь развития).

Как сделать так, чтобы апгрейды архитектуры не нарушали красоты и оптимальности, чтобы всё было гладко ? Может, есть какие идеи на этот счёт ? Нужна нестандартная мысль.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru