Files
APS/Lectures/04. Operations units.md
Andrei Solodovnikov 688ea46d68 Исправление пунктуационных и орфографических ошибок
В основном вставка пропущенных запятых и удаление лишнего пробела из
союза "а также", но были и другие ошибки и опечатки.
2024-01-11 11:44:44 +03:00

60 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лекция 4. Операционные устройства
На лекции говорили про операционные устройства, то есть устройства выполняющие операции над данными. На фоне этого затронули основной компромисс цифрового дизайна — повышение скорости работы требует увеличения аппаратных затрат.
Самый экономный способ расходования аппаратуры — это использование последовательных однобитных устройств (ОПБ — операционный блок), то есть таких, которые получают результат бит за битом. Следовательно, на расчёт *n*-битного числа потребуется *n* тактов.
![../.pic/Lectures/04.%20Operations%20units/fig_01.png](../.pic/Lectures/04.%20Operations%20units/fig_01.png)
Быстрой альтернативой, но требующей гораздо больших аппаратных затрат, является параллельные операционные устройства, высчитывающие сразу весь результат.
Например, параллельный умножитель *k*-разрядных чисел, потребует использования *k*-1 *k*-разрядных сумматора.
![../.pic/Lectures/04.%20Operations%20units/fig_02.jpg](../.pic/Lectures/04.%20Operations%20units/fig_02.jpg)
При реализации последовательного умножения можно обойтись одним (*k* * 2)-разрядным сумматором, и даже меньше, если последовательно вычислять частные суммы произведения.
![../.pic/Lectures/04.%20Operations%20units/fig_03.png](../.pic/Lectures/04.%20Operations%20units/fig_03.png)
Еще одной важной темой, которую мы затронули, пыли числа с фиксированной и плавающей запятой. Числа с фиксированной запятой фактически не отличаются от целых чисел. Их недостаток в том, что если после запятой оставить много знаков, то будет проблематично записать большое число. А если оставлять мало чисел после запятой, то наоборот. Проблему частично решают числа с плавающей точкой (запятой).
Общепринятым стандартом являются числа закодированные по стандарту IEEE754. 32-битный формат таких чисел называют float, а 64-битный называют — double. Такой формат является экспоненциальной записью двоичного числа и содержит три поля Sign (Знак, 1 — если число отрицательное), Exponent (Показатель степени) и Mantissa, а число представляется как мантисса умноженная на 2 в степени экспоненты. При этом экспонента сохраняется в смещённом формате, то есть из ее закодированного значения надо предварительно вычесть 127. Мантисса же записывается так, чтобы точка в числе стояла сразу после первой значащей цифры. При этом эта единица в поле Mantissa не записывается. Она называется подразумеваемой единицей.
![../.pic/Lectures/04.%20Operations%20units/fig_04.png](../.pic/Lectures/04.%20Operations%20units/fig_04.png)
![../.pic/Lectures/04.%20Operations%20units/fig_05.png](../.pic/Lectures/04.%20Operations%20units/fig_05.png)
В примере выше закодировано число 228. Числа, закодированные в таком формате, описывают не любые числа, а значит представляются с определенной погрешностью. Вдобавок, реализация аппаратных сумматоров, умножителей и делителей в формате с плавающей точкой, требует существенных аппаратных затрат, так как требуют определенное количество подготовительных операций, включающих в себя: сравнение экспонент, приведение мантисс к одному порядку, округлению, корректировке результата, а также управления всем этим процессом. Ниже приводится пример сумматора/вычитателя чисел с плавающей точкой.
![../.pic/Lectures/04.%20Operations%20units/fig_06.png](../.pic/Lectures/04.%20Operations%20units/fig_06.png)
Альтернативой неидеального стандарта IEEE754, является, возможно, чуть менее неидеальный, появившейся относительно недавно, стандарт posit, в котором используется дополнительное поле режима, имеющего переменную длину.
![../.pic/Lectures/04.%20Operations%20units/fig_07.png](../.pic/Lectures/04.%20Operations%20units/fig_07.png)
Согласно проведённому автором стандарта исследованию, числа закодированные posit имеют больший динамический диапазон, более равномерное распределение и обладают меньшим количеством неиспользуемых кодов.
![../.pic/Lectures/04.%20Operations%20units/fig_08.png](../.pic/Lectures/04.%20Operations%20units/fig_08.png)
Тема операционных устройств очень обширна и интересна. Чтобы повысить их производительность нужно прибегать к смекалке и хитрости, искать оригинальные математические решения. Сегодня такая задача часто возникает, например, при построении нейроускорителей выполняющих огромное количество операций сложения и умножения. К сожалению, подробный разбор существующих методов далеко выходит за рамки выделенного времени. Если тебя зацепило, в дополнительной литературе будут ссылочки.
## Основные материалы лекции
1. [Ссылка](https://www.youtube.com/watch?v=7YQWjSkhquI) на видеозапись лекции
2. Понятно, наглядно и доступно про умножение и деление целых беззнаковых чисел [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — параграфы 5.2.6, 5.2.7]
3. Наглядно про представление и сложение чисел с фиксированной и плавающей запятой (стандарт *IEEE754*) [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — параграф 5.3]
4. Про вспомогательные системы счисления, переполнение при операциях со знаковыми числами и про умножение и деление знаковых чисел с фиксированной и с плавающей запятой. Автор суховат. Написать можно было бы доступней, но написано так, как написано. Если внимательно читать, то все понятно [***Орлов и Цилькер***. *Организация ЭВМ и систем* — Глава 5. начиная с параграфа 'Вспомогательные системы счисления' и до конца Главы останавливаясь на интересующих темах]
## Дополнительные материалы к лекции для саморазвития
1. Что касается различных оригинальных методов реализации цифровой арифметики (сложение, деление) со знаком и плавающей запятой, это находится там же где и 3 источник в основных материалах к лекции [***Орлов и Цилькер***. *Организация ЭВМ и систем* — Глава 5. начиная с параграфа 'Вспомогательные системы счисления' и до конца Главы]
2. Про стандарт posit можно почитать в статье со средне-хорошим переводом на [хабре](https://habr.com/ru/post/465723/) или сразу в [оригинале](http://www.johngustafson.net/pdfs/BeatingFloatingPoint.pdf)
3. Есть отличная книга по цифровой операционным устройствам [Digital arithmetic](https://www.sciencedirect.com/book/9781558607989/digital-arithmetic). Она на английском языке. Для ознакомления в образовательных целях ее можно найти в облаке в разделе Литература → Дополнительно
## Популярные материалы
1. [Наглядно](https://cse512-19s.github.io/FP-Well-Rounded/) про распределения чисел в кодировке *posit* на числовой прямой (круге вообще-то) на разных интервалах и масштабах
2. Есть [потрясающий сайт](http://nandgame.com/). *Частично* на русском. Построенный в игровой форме симулятор сборки процессора. Игрок постепенно, выполняя задания с подсказками от простого к сложному, собирает процессор. При желании не обязательно игру проходить сразу полностью, можно это делать по мере изучения материала, для подкрепления, так сказать. Игра очень наглядна, а у тебя, возможно, есть друг, который сюда не заглядывает и делает все в последний момент. Наглядная **игра** ему не помешает. Давай, не ломайся, кинь ему ссылочку на сайт, он поиграет, разберется, а ты, наверняка, пройдешь больше, сможешь потом ходить и с видом борзой уточки говорить: «а я больше тебя прошел :Р». Короче, скорее [заглядывай внутрь](http://nandgame.com/)! Но лучше это делать с компьютера или ноутбука. Развлекайся
![../.pic/Lectures/04.%20Operations%20units/fig_09.jpg](../.pic/Lectures/04.%20Operations%20units/fig_09.jpg)