spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Мне удалось избавиться от сравнения абсолютных величин мантисс в первом такте деления (путем дополнительного такта с пробным вычитанием) и от сравнения полноразрядной мантиссы с величиной -0.25; также мне удалось ликвидировать регистр inc2. Это делает алгоритм деления чуть ближе к аутентичному (close, but no cigar, still).

Тест АУ по-прежнему проходит, разумеется, но на тактовую частоту эти изменения повлияли негативно (в частности, раз стало меньше регистров, то увеличилась глубина логики на оставшихся). Несильно, конечно - всё равно больше 120 МГц, но вы мне скажите, имеет ли еще смысл возиться и коммитить, или оставим детям для развлечения?

Использованный в БЭСМ-6 алгоритм деления - двоичный SRT. Тест АУ не видит разницы между выбором 0 в качестве очередной цифры частного при значении остатка в диапазоне -0.25 < x < 0.25 (для строгого сравнения отрицательного числа нужны все разряды) и при -0.125 <= x < 0.25 (тут в обоих случаях достаточно сравнивать 3-4 старших бита мантиссы).

Upd: Проверка случайным тестом показывает, что есть разница между исходным и упрощенным сравнением, которая ухудшает сбалансированность округления, но, увы, тестом АУ не ловится. Так что оставляем как было до поры.

Date: 2019-04-16 11:02 pm (UTC)
vak: (Default)
From: [personal profile] vak
При синтезе mesm6_cpu.sv частота получается в районе 50-60 МГц. Можешь глянуть, где там затык?

Date: 2019-04-17 12:14 am (UTC)
vak: (Default)
From: [personal profile] vak
Спасибо!
Кажется, я вижу циклическую зависимость в комбинационной логике.
В этом всё дело.

assign Uaddr = Mi + (r_add ? Mr : Vaddr);

assign Mr = M[m_ra];

wire [14:0] m_ra = ... (sel_mr == `SEL_MR_UA) ? Uaddr : ...;

Команда J+M нехорошо сделана. Надо подумать.
Edited Date: 2019-04-17 12:19 am (UTC)

Date: 2019-04-17 04:35 am (UTC)
x86128: (Default)
From: [personal profile] x86128
Любопытно, но квартус тоже ругался на наличие циклической зависимости, но я значения не придал. Ввиду неопытности подумал, что такие зависимости всё равно разрываются Д-треиггерами по клоку. И в этом нет ничего страшного, кроме удлинения пути сигнала.

Date: 2019-04-17 01:26 am (UTC)
vak: (Default)
From: [personal profile] vak
Переделал, и кое-что даже упростилось.
Попробуй сейчас глянуть критический путь.

Date: 2019-04-17 05:44 am (UTC)
vak: (Default)
From: [personal profile] vak
Ага, совсем другое дело. Посмотрю, может ещё можно ускорить.

Я сделал c_active из соображения, что сбрасывать один бит легче, чем все пятнадцать. Но может быть это копеечная экономия.

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 02:15 pm
Powered by Dreamwidth Studios