Skip to content

Latest commit

 

History

History
59 lines (33 loc) · 12 KB

04. Operations units.md

File metadata and controls

59 lines (33 loc) · 12 KB

Лекция 4. Операционные устройства

На лекции говорили про операционные устройства, то есть устройства выполняющие операции над данными. На фоне этого затронули основной компромисс цифрового дизайна — повышение скорости работы требует увеличения аппаратных затрат.

Самый экономный способ расходования аппаратуры — это использование последовательных однобитных устройств (ОПБ — операционный блок), то есть таких, которые получают результат бит за битом. Следовательно, на расчёт n-битного числа потребуется n тактов.

../.pic/Lectures/04.%20Operations%20units/fig_01.png

Быстрой альтернативой, но требующей гораздо больших аппаратных затрат, является параллельные операционные устройства, высчитывающие сразу весь результат.

Например, параллельный умножитель k-разрядных чисел, потребует использования k-1 k-разрядных сумматора.

../.pic/Lectures/04.%20Operations%20units/fig_02.jpg

При реализации последовательного умножения можно обойтись одним (k * 2)-разрядным сумматором, и даже меньше, если последовательно вычислять частные суммы произведения.

../.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_05.png

В примере выше закодировано число 228. Числа, закодированные в таком формате, описывают не любые числа, а значит представляются с определенной погрешностью. Вдобавок, реализация аппаратных сумматоров, умножителей и делителей в формате с плавающей точкой, требует существенных аппаратных затрат, так как требуют определенное количество подготовительных операций, включающих в себя: сравнение экспонент, приведение мантисс к одному порядку, округлению, корректировке результата, а также управления всем этим процессом. Ниже приводится пример сумматора/вычитателя чисел с плавающей точкой.

../.pic/Lectures/04.%20Operations%20units/fig_06.png

Альтернативой неидеального стандарта IEEE754, является, возможно, чуть менее неидеальный, появившейся относительно недавно, стандарт posit, в котором используется дополнительное поле режима, имеющего переменную длину.

../.pic/Lectures/04.%20Operations%20units/fig_07.png

Согласно проведённому автором стандарта исследованию, числа закодированные posit имеют больший динамический диапазон, более равномерное распределение и обладают меньшим количеством неиспользуемых кодов.

../.pic/Lectures/04.%20Operations%20units/fig_08.png

Тема операционных устройств очень обширна и интересна. Чтобы повысить их производительность нужно прибегать к смекалке и хитрости, искать оригинальные математические решения. Сегодня такая задача часто возникает, например, при построении нейроускорителей выполняющих огромное количество операций сложения и умножения. К сожалению, подробный разбор существующих методов далеко выходит за рамки выделенного времени. Если тебя зацепило, в дополнительной литературе будут ссылочки.

Основные материалы лекции

  1. Ссылка на видеозапись лекции
  2. Понятно, наглядно и доступно про умножение и деление целых беззнаковых чисел [Харрис и Харрис. Цифровая схемотехника и архитектура компьютера — параграфы 5.2.6, 5.2.7]
  3. Наглядно про представление и сложение чисел с фиксированной и плавающей запятой (стандарт IEEE754) [Харрис и Харрис. Цифровая схемотехника и архитектура компьютера — параграф 5.3]
  4. Про вспомогательные системы счисления, переполнение при операциях со знаковыми числами и про умножение и деление знаковых чисел с фиксированной и с плавающей запятой. Автор суховат. Написать можно было бы доступней, но написано так, как написано. Если внимательно читать, то все понятно [Орлов и Цилькер. Организация ЭВМ и систем — Глава 5. начиная с параграфа 'Вспомогательные системы счисления' и до конца Главы останавливаясь на интересующих темах]

Дополнительные материалы к лекции для саморазвития

  1. Что касается различных оригинальных методов реализации цифровой арифметики (сложение, деление) со знаком и плавающей запятой, это находится там же где и 3 источник в основных материалах к лекции [Орлов и Цилькер. Организация ЭВМ и систем — Глава 5. начиная с параграфа 'Вспомогательные системы счисления' и до конца Главы]
  2. Про стандарт posit можно почитать в статье со средне-хорошим переводом на хабре или сразу в оригинале
  3. Есть отличная книга по цифровой операционным устройствам Digital arithmetic. Она на английском языке. Для ознакомления в образовательных целях ее можно найти в облаке в разделе Литература → Дополнительно

Популярные материалы

  1. Наглядно про распределения чисел в кодировке posit на числовой прямой (круге вообще-то) на разных интервалах и масштабах
  2. Есть потрясающий сайт. Частично на русском. Построенный в игровой форме симулятор сборки процессора. Игрок постепенно, выполняя задания с подсказками от простого к сложному, собирает процессор. При желании не обязательно игру проходить сразу полностью, можно это делать по мере изучения материала, для подкрепления, так сказать. Игра очень наглядна, а у тебя, возможно, есть друг, который сюда не заглядывает и делает все в последний момент. Наглядная игра ему не помешает. Давай, не ломайся, кинь ему ссылочку на сайт, он поиграет, разберется, а ты, наверняка, пройдешь больше, сможешь потом ходить и с видом борзой уточки говорить: «а я больше тебя прошел :Р». Короче, скорее заглядывай внутрь! Но лучше это делать с компьютера или ноутбука. Развлекайся

../.pic/Lectures/04.%20Operations%20units/fig_09.jpg