spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
После переписывания дорогих команд сборки, разборки и сдвига в многотактный вид и исправления нормализации вправо инвертированных мантисс (прибавлять младший бит инверсии можно по ходу нормализации, и в окончательном суммировании РМРу участвовать больше не нужно) всё стало гораздо компактнее:


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


Коммит будет сегодня вечером.

Date: 2019-04-09 06:54 pm (UTC)
vak: (Default)
From: [personal profile] vak
Печально мне стало смотреть, как операция сдвига тратит десятки тактов. Переделал на сдвиг на четыре бита за такт. Медленную версию можно включить дефайном SLOW_SHIFT. Можешь глянуть, насколько больше лутов синтезируется?

Date: 2019-04-09 07:59 pm (UTC)
vak: (Default)
From: [personal profile] vak
То есть четырёхбитный сдвиг увеличивает размер АУ на 17%. Ну может и ничего, учитывая популярность сдвигов в софте.

На маленькой платке 7680 лутов с флипфлопами. Вроде мы укладываемся.

Date: 2019-04-09 08:28 pm (UTC)
vak: (Default)
From: [personal profile] vak
На плате DE10-Lite с чипом Altera Max10 аж 50 тысяч логических элементов (лутов с флипфлопами). Если разводить свою плату для МЭСМ-6, имеет смысл ставить Max10. Уместимся в 8K логических элементов - будет дешевле.

Вот наличие и цена Max10 (25 штук) в корпусе QFT144 на mouser.com в зависимости от количества логических элементов:

10M08 - $13.97
10M16 - $27.29
10M25 - $31.61
10M40 - $43.39
10M50 - $48.46

Date: 2019-04-09 08:01 pm (UTC)
vak: (Default)
From: [personal profile] vak
Десять уровней это плохо, на частоте скажется. Имеет смысл переделать на потактовую обработку.

Date: 2019-04-10 04:58 am (UTC)
vak: (Default)
From: [personal profile] vak
Интересно, где же такой длинный путь набежал.

Date: 2019-04-10 07:01 am (UTC)
vak: (Default)
From: [personal profile] vak
Давай clz тоже на такты разобъём.
Скажем, четыре разряда на такт.

Date: 2019-04-10 01:48 pm (UTC)
x86128: (Default)
From: [personal profile] x86128
Подскажите, а из какой книги черпать вот эти вот хитро оптимизированные алгоритмы?

Date: 2019-04-10 06:43 pm (UTC)
x86128: (Default)
From: [personal profile] x86128
Да я имел ввиду чтото наподобие такого https://www.amazon.com/Implementation-Arithmetic-Functions-Electrical-Engineering/dp/9401784388

Либо общая теория без привязки к FPGA или ASIC есть на примете.

Date: 2019-04-10 08:40 pm (UTC)
vak: (Default)
From: [personal profile] vak
Неплохая книжка. Надо такую добыть.

Ещё вот это могу посоветовать, но она для более серьёзных случаев: https://www.amazon.com/Digital-Arithmetic-Kaufmann-Computer-Architecture/dp/1558607986/

Date: 2019-04-10 08:36 pm (UTC)
vak: (Default)
From: [personal profile] vak
Сделал: ввёл дополнительное состояние STATE_ADD_B. Теперь ACX и ANX выполняются за три такта. Стало ли лучше?

Кстати, Altera не умеет синтезировать $countones().

Date: 2019-04-10 11:41 pm (UTC)
vak: (Default)
From: [personal profile] vak
Получается, слегка ускоренный сдвиг требует 40 лутов и 46 регистров. Ну и пусть, не жалко.

120 мегагерц это неплохо. Я надеялся получить в районе сотни.

Я поправлю a_mux как у тебя, и добавлю функцию countones().
Edited Date: 2019-04-11 12:08 am (UTC)

Date: 2019-04-11 12:15 am (UTC)
vak: (Default)
From: [personal profile] vak
Переименовал tmp в rail.
Не так глаз режет.

Date: 2019-04-11 02:44 am (UTC)
vak: (Default)
From: [personal profile] vak
В арифмометрах рельсой называли планку, по которой плашки с цифрами туда-сюда ездили.

Мне кажется, ускорение сдвигов того стоит.

Date: 2019-04-11 05:52 pm (UTC)
vak: (Default)
From: [personal profile] vak
А как тебе вольфрамальфа помогает это видеть?

Теперь к 60-летию. :)

Date: 2019-04-11 06:56 pm (UTC)
vak: (Default)
From: [personal profile] vak
Ну ты серьёзно к делу подходишь! :)

Глянем тест АУ, благо имеется файл трассировки. Всего выполнено 1178071 машинных команд, из них 78169 сдвигов. Это 6.6%, немало. Сдвиг вообще довольно популярная операция была, насколько мне подсказывает память и интуиция.

Date: 2019-04-11 07:00 pm (UTC)
vak: (Default)
From: [personal profile] vak
Может быть тест АУ слишком специальная задача. Посчитаем количество сдвигов в тесте hello.pas. Всего команд 1063, из них 53 сдвига, то есть 4.0%.

Date: 2019-04-11 09:06 pm (UTC)
vak: (Default)
From: [personal profile] vak
Умеет ли он синтезировать для семейства Altera Max 10? Интересно бы скорость прикинуть.

https://www.intel.com/content/www/us/en/products/programmable/fpga/max-10.html

У Max10конфигурационная память прямо на основном кристалле, поэтому он несколько удобнее по жизни.

Date: 2019-04-12 06:29 am (UTC)
vak: (Default)
From: [personal profile] vak
Синтезировал на скорую руку АУ через Altera Quartus для Max10. Получается 123-135 МГц (при 85°C-0°C соответственно).

Размер логики:
Total combinational functions: 3290
Dedicated logic registers: 211

Profile

Сообщество любителей БЭСМ-6

January 2026

S M T W T F S
    123
45678910
11121314151617
18192021222324
2526272829 3031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 3rd, 2026 04:34 pm
Powered by Dreamwidth Studios