April 7th, 2007

with Cat The Cat

Еще про применение Хаскеля в моделировании аппаратуры.

Стековый процессор M17, очень хороший дизайн от Чака Мура (создателя Форта).

Цитата:
The ALU on the M17 is designed to generate all possible ALU functions simultaneously, only at the last moment selecting the correct function output for writing back to the X and/or Y registers. This technique allows the ALU delay to overlap the instruction decoding time, since once the instruction is decoded its only task is to select the correct ALU output from the functions already computed.
Такой стиль описания аппаратуры, когда сперва мы создаем все возможные результаты, а потом выбираем правильный, оказывается, весьма характерен для микропроцессоров, судя по небольшому опыту изучения исходных текстов.

Сейчас я описываю сортирующую машину, в которой есть вот такой фрагмент кода:
sortMachine ... = ...
	where
                ...
		-- Three variants of dispatch results.
		(leastElement:dispatchedOnlyLeast) = state
		biggestElement = last state
		dispatchedOnlyBiggest = init state
		dispatchedBoth = init dispatchedOnlyLeast
                ...
Любая из этих строчек может вызвать ошибку исполнения. Однако диспетчер сделан так, что выбирает правильный результат.

Как только я добрался до диспетчера, мне тут же M17 вспомнился, и Leon3 за компанию.