Архитектура компьютеров Лекция 7. Коды Хэмминга. Подсистема ввода-вывода А. М. Пеленицын apel@sfedu.ru Южный федеральный университет Институт математики, механики и компьютерных наук им. И. И. Воровича Кафедра информатики и вычислительного эксперимента Весна 2016 А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 1 / 20 Коды Хэмминга Минимальное кодовое расстояние d, (количество исправляемых ошибок t) Код 3-кратного повторения: k = 1, n = 3, d = 3 110 Код проверки чётности: k = 2, n = 3, d = 2 110 111 010 111 010 011 011 101 101 100 100 000 А. М. Пеленицын (Мехмат ЮФУ) 001 000 Коды Хэмминга. Подсистема I/O 001 Весна 2016 3 / 20 Коды Хэмминга Коды Хэмминга I I Идея: добавить ряд битов проверки чётности, по корректности которых после передачи установить позицию ошибки (if any). (7, 4, 3)-код Хэмминга (n = 7, k = 4, d = 3): p1 d1 d2 d4 p2 I d3 p3 (2r − 1, 2r − r − 1)-код Хэмминга: I I I позиции кодового слова нумеруются с 1; инфо-биты вписываются подряд в позиции кодового слова, пропуская позиции 2i−1 , 1 6 i 6 r; i-й бит проверки чётности (1 6 i 6 r) вписывается на 2i−1 -ю позицию кодового слова и контролирует чётность инфо-битов в позициях, номер которых содержит i-ый бит равный 1. А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 4 / 20 Коды Хэмминга Формулы для (7, 4)-кода Хэмминга (часть 1) Структура кодового слова c Пусть исходное сообщение обозначается d = (d1 , d2 , d3 , d4 ), а биты проверки чётности — pi , тогда: c = (p1 , p2 , d1 , p3 , d2 , d3 , d4 ). Формулы для pi через ci 1. p1 = c3 + c5 + c7 , потому что 3 = 11, 5 = 101, 7 = 111; 2. p2 = c3 + c6 + c7 , потому что 3 = 11, 6 = 110, 7 = 111; 3. p3 = c5 + c6 + c7 , потому что 5 = 101, 6 = 110, 7 = 111. А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 5 / 20 Коды Хэмминга Формулы для (7, 4)-кода Хэмминга (часть 2) Формулы для pi через di В приведённых формулах для pi можно заменить ci на биты исходного сообщения di , используя указанную выше структуру кодового слова c: 1. p1 = d1 + d2 + d4 , 2. p2 = d1 + d3 + d4 , 3. p3 = d2 + d3 + d4 . Итоговая формула для кодового слова c = (d1 + d2 + d4 , d1 + d3 + d4 , d1 , d2 + d3 + d4 , d2 , d3 , d4 ). Замечание: вектор c получен из вектора d как результат линейного преобразования. А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 6 / 20 Коды Хэмминга Проверочная матрица (7, 4)-кода Хэмминга Крестики превращаются в единички Составим таблицу: какие биты проверки чётности отвечают за какие биты кодового слова. На основе этой таблицы запишем проверочную матрицу H. p1 p1 p2 p3 p2 d1 x x x x p3 d2 d3 d4 x x x x x x x x 1 H := 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 Основное свойство проверочной матрицы Пусть v — принятое по каналу слово, которое отличается от кодового слова c (7, 4)-кода Хэмминга не более, чем в одной позиции, тогда вектор (он называется синдромом) s = Hv даёт двоичную запись номера этой позиции. Если s = 0, то v = c. А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 7 / 20 Ввод-вывод Логическая организация I/O Роль контроллера I для устройства: тайминг, контроль; I для процессора: декодирование команд, пересылка данных, отчёт о статусе, распознавание адреса, буферизация, контроль ошибок. А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 9 / 20 Ввод-вывод Логическая структура контроллера Interface to system bus Interface to external device Data External device interface logic Data registers Data lines Status/control registers Status Control • • • Address lines I/O logic Control lines А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Data External device interface logic Status Control Весна 2016 10 / 20 Ввод-вывод Стили взаимодействия с I/O C участием процессора Без прерываний С прерываниями Программируемый I/0 I/O на основе П. Без участия процессора А. М. Пеленицын (Мехмат ЮФУ) Прямой доступ в память Коды Хэмминга. Подсистема I/O Весна 2016 11 / 20 I/O с точки зрения процессора (чтение, 3 стиля) Issue read command to I/O module CPU Read status of I/O module I/O Not ready Check Status Issue read command to I/O module I/O Read status of I/O module CPU Check status Error condition Ready No CPU I/O Do something else Interrupt I/O CPU Error condition Ready Read word from I/O module I/O Write word into memory CPU Done? Yes Next instruction (a) Programmed I/O CPU Memory No Read word from I/O module I/O Write word into memory CPU Done? Yes Next instruction (b) Interrupt-Driven I/O CPU Memory CPU DMA Issue read block command Do something to I/O module else Read status of DMA module Interrupt DMA Next instruction (c) Direct Memory Access CPU Ввод-вывод I/O с точки зрения программиста I Доступ через «порты» (Port-Mapped I/O) Пример: инструкции IN/OUT в x86. I Через память (Memory Mapped I/O, MMIO) Пример: «обычный» MOV. I Программные прерывания Пример: INT в x86. (Другие типы прерываний: аппаратные, исключения.) А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 13 / 20 Системные шины Эволюция шин на ПК I ISA (Industry Standard Architecture) @ IBM PC, 1981; I EISA для 32-разрядных IBM-совместимых компьютеров, 1988; I PCI, 1992; I PCIe (Express), 2004. А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 15 / 20 Системные шины Устройство типичного ПК 1990-х А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 16 / 20 Системные шины Звёздная топология PCIe CPU Memory Root complex PCIe endpoint PCIe endpoint А. М. Пеленицын (Мехмат ЮФУ) Switch PCIe bridge to PCI/PCI-X PCIe endpoint Legacy endpoint PCI/PCI-X Коды Хэмминга. Подсистема I/O Весна 2016 17 / 20 Системные шины Дорожки (lane) PCIe А. М. Пеленицын (Мехмат ЮФУ) Коды Хэмминга. Подсистема I/O Весна 2016 18 / 20 Системные шины Слоты PCIe и PCI • PCIe ×4, • PCIe ×16, А. М. Пеленицын (Мехмат ЮФУ) • PCIe ×1, • PCIe ×16, Коды Хэмминга. Подсистема I/O • PCI (32-bit) Весна 2016 19 / 20 Системные шины Intel motherboard architecture 4 Series (до 2008 г.) А. М. Пеленицын (Мехмат ЮФУ) 5+ Series (после 2008 г.) Коды Хэмминга. Подсистема I/O Весна 2016 20 / 20