Оптимизации АЛУ
Apr. 8th, 2019 12:37 pmПосле переписывания дорогих команд сборки, разборки и сдвига в многотактный вид и исправления нормализации вправо инвертированных мантисс (прибавлять младший бит инверсии можно по ходу нормализации, и в окончательном суммировании РМРу участвовать больше не нужно) всё стало гораздо компактнее:
Коммит будет сегодня вечером.
There are 31 levels of combinational cells
2-input LUTs: 309
3-input LUTs: 231
4-input LUTs: 228
5-input LUTs: 375
6-input LUTs: 726
Total LUT area: 1869
State : 204
(FF) : 204
CARRY4 : 132
DSP : 6
Коммит будет сегодня вечером.
no subject
Date: 2019-04-09 06:23 am (UTC)В БЭСМ-6 хитрость: умножение на 2 разряда делается за полтакта благодаря тому, что есть защелки по обоим фронтам тактового сигнала, поэтому произведение двигается вправо на 4 разряда за такт (в формулах АУ это видно). Но нам спешить особо некуда, можно и по 2 разряда за такт.
Кстати, сейчас флаг sticky правильно отражает необходимость округления для сложения, и сравнение rmr с нулем в STATE_ROUND нужно только для умножения. Когда умножение будет делаться пошагово, можно будет устанавливать sticky по ходу дела.
В скрипте для сложения есть ошибка: округление нужно делать, если в процессе нормализации вправо РМР когда-либо был ненулевым, даже если в конце концов все единицы из него уехали.