mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
* Update 06. RISC-V architecture.md * Update 02. Instruments.md * Update 03. Digital arithmetics.md * Update 04. Operations units.md * Update 05. Sequencial logic.md * Update 07. RISC-V programming.md * Update 08. Singlecycle processor.md * Update 09. Multicycle processor.md * Update 10. Pipeline processor.md * Update 11. Pipeline hazards.md * Update Lectures/02. Instruments.md * Update Lectures/04. Operations units.md --------- Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
60 lines
12 KiB
Markdown
60 lines
12 KiB
Markdown
# Лекция 4. Операционные устройства
|
||
|
||
На лекции говорили про операционные устройства, то есть устройства выполняющие операции над данными. На фоне этого затронули основной компромисс цифрового дизайна — повышение скорости работы требует увеличения аппаратных затрат.
|
||
|
||
Самый экономный способ расходования аппаратуры — это использование последовательных однобитных устройств (ОПБ — операционный блок), то есть таких, которые получают результат бит за битом. Следовательно, на расчёт *n*-битного числа потребуется *n* тактов.
|
||
|
||

|
||
|
||
Быстрой альтернативой, но требующей гораздо больших аппаратных затрат, являются параллельные операционные устройства, высчитывающие сразу весь результат.
|
||
|
||
Например, параллельный умножитель *k*-разрядных чисел, потребует использования *k*-1 *k*-разрядных сумматора.
|
||
|
||

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

|
||
|
||
Еще одной важной темой, которую мы затронули, были числа с фиксированной и плавающей запятой. Числа с фиксированной запятой фактически не отличаются от целых чисел. Их недостаток в том, что если после запятой оставить много знаков, то будет проблематично записать большое число. А если оставлять мало чисел после запятой, то наоборот. Проблему частично решают числа с плавающей точкой (запятой).
|
||
|
||
Общепринятым стандартом являются числа закодированные по стандарту IEEE754. 32-битный формат таких чисел называют float, а 64-битный называют — double. Такой формат является экспоненциальной записью двоичного числа и содержит три поля Sign (Знак, 1 — если число отрицательное), Exponent (Показатель степени) и Mantissa, а число представляется как мантисса умноженная на 2 в степени экспоненты. При этом экспонента сохраняется в смещённом формате, то есть из ее закодированного значения надо предварительно вычесть 127. Мантисса же записывается так, чтобы точка в числе стояла сразу после первой значащей цифры. При этом эта единица в поле Mantissa не записывается. Она называется подразумеваемой единицей.
|
||
|
||

|
||
|
||

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

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

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

|
||
|
||
Тема операционных устройств очень обширна и интересна. Чтобы повысить их производительность нужно прибегать к смекалке и хитрости, искать оригинальные математические решения. Сегодня такая задача часто возникает, например, при построении нейроускорителей выполняющих огромное количество операций сложения и умножения. К сожалению, подробный разбор существующих методов далеко выходит за рамки выделенного времени. Если тебя зацепило, в дополнительной литературе будут ссылочки.
|
||
|
||
## Основные материалы лекции
|
||
|
||
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/)! Но лучше это делать с компьютера или ноутбука. Развлекайся
|
||
|
||

|