Организация процессоров
Напомним, что эффективность конвейера будет тем выше, чем больше задач будет поступать на его вход (см. формулу 1.x).
Типичным примером конвейерных операционных устройств могут служить так называемые матричные умножители. Свое название они получили, во-первых, потому, что включают фактически матрицу операционных элементов (сумматоров), а во-вторых, поскольку одной из наиболее очевидных сфер их применения является умножение матриц.
Рассмотрим процесс умножения двух двоичных четырехразрядных положительных чисел:
a3 a2 a1 a0 b3 b2 b1 b0 + a3b0 a2b0 a1b0 a0b0 + a3b1 a2b1 a1b1 a0b1 + a3b2 a2b2 a1b2 a0b2
+ a3b3 a2b3 a1b3 a0b3
c7 c6 c5 c4 c3 c2 c1 c0 По косвенной схеме умножения на устройстве с одним сумматором и набором регистров для реализации этого умножения необходимо в общем случае выполнить 4 шага, на каждом их которых выполняется умножение A на очередной разряд bi , сложение A bi с текущей суммой частичных произведений и сдвиг новой полученной суммы на 1 разряд вправо. Таким образом, время на выполнение этого умножения можно приближенно оценить как : Tумн = 4(t + 4*tsm + tsh) , где t -задержка на 1 логическом вентиле (при умножении A на bi), 4tsm-задержка на сложение при использовании сумматора с последовательным переносом, tsm – задержка одноразрядного полного двоичного сумматора, которую можно принять равной 2t, tsh -задержка на 1 сдвиг, которую также можно приравнять 2t. Тогда время умножения = 44 t. С другой стороны, поскольку все произведения A bi в принципе можно рассчитать параллельно, сдвиги также можно задать жестко, а переносы при сложении можно учесть только при завершении сложения всех 4 слагаемых (частичных произведений), вместо того, чтобы рассчитывать их на каждом шаге, процесс умножения можно значительно ускорить, если реализовать схему матричного умножителя, представленную на рис.
|