[an error occurred while processing this directive]
|
Я не согласный. Зачем же в крайности, что если кратность длины 1 бит, то и инструкции однобитные должны быть. Пусть код операции имеет какую-то там вполне детерминированную длину. Пусть 7 или 8 бит. Дальше к коду операции надо прицепить информацию об источниках, приемнике, коду операции сдвигателя, еще какие нибудь там поля, например за расширение знака отвечающие или за насыщение.
Вот взять к примеру обычные арифметические команды (пересылка туда входит с кодом АЛУ "нет операции"). Если проанализировать какое-то множество программ, то выясняется такая вещь - например сдвигатель нужен только при небольшом количестве операций. А код сдвига занимает допустим 5 бит. Так с целью уменьшения длины кода (и, следовательно, экономии ОЗУ) логично сделать две разновидности инструкций - одна с кодом сдвига, вторая без него. Ну а раз код сдвига занимает 5 бит - то зачем к "безсдвиговой" инструкции добавлять поле допустим из 8-ми или аж 16-ти бит? Если хватит и 5 бит.
Или одноместные операции. Им ведь не нужно 16 бит в коде инструкции. Зачем их делать тогда 16-битными. Или, тем более, 32-х. В общем моя идея такая - проанализировав какое-то количество ассемблерно-писанных программ на предмет статистики использования тех или иных инструкций выработать наиболее оптимальное кодирование, дающее компромис между длиной кода и сложностью реализации декодера инструкций. Ну что-то отдаленно навроде Хаффмана, который оптимальный по его определению, но с поправками на то, чтобы его мог легко разобрать декодер. И все это с целью уменьшения кол-ва ОЗУ на борту, и, главное, максимального уменьшения ширины шины fetch'а инструкций, и, как следствие, уменьшения ширины шины самого ОЗУ.
E-mail: info@telesys.ru