Организация передачи данных в циклах шины
Циклы шины.
Структура портов ввода/вывода.
Порты ввода/вывода имеют 3 типа структур: 8-, 16-, 32-разрядные. ЦП поддерживает два базовых способа адресации к портам ВВ:
¨ по командам IN и OUT через отдельное адресное пространство ВВ, которое имеет две модификации:
n прямая адресация портов ВВ с помощью байта (номера порта ВВ), указываемого в команде, и допускает адреса в диапазоне от 0 до 255;
n косвенная регистровая адресация через регистр DX с отображением на адресное пространство ВВ 64 Кбайта (диапазон от 0 до 65535):
¨ с отображением на адресное пространство памяти, причем порты ВВ считаются адресами памяти и для доступа к портам применяется система команд общего назначения (без использования команд IN и OUT), а также обеспечивается защита памяти механизмом сегментации и страничной организации.
16-разрядные порты должны быть выровнены по четным адресам, чтобы все слова можно было передавать за один цикл шины, а 32-разрядные порты ВВ - по адресам, кратным четырем.
Для взаимодействия с 8-, 16- и 32-разрядными внешними устройствами имеется возможность задавать размер шины с помощью сигналов шинного интерфейса ЦП BS16# и BS8#. Размер шины задается в префиксе команды или в КОП.
Взаимодействие ЦП с внешними компонентами системы по отношению к ЦП реализуются с помощью циклов шины, которые образуют две основные группы:
Кодирование циклов шины:
1. Группа циклов передачи данных, в которую входят циклы: M/IO# D/C# W/R#
n предвыборки команд из памяти: 1 0 0
n считывание данных из памяти: 1 1 0
n считывание данных из подсистемы ввода/вывода: 0 1 0
n запись данных в память: 1 1 1
n запись данных в подсистему ввода/вывода. 0 1 1
2. Группа особых циклов шины, в которую входят циклы:
n подтверждение прерывания: 0 0 0
n четыре специальных цикла шины: 0 0 1
© останов (формирует код команда HLT);
© отключение (ЦП прекращает все операции по защите);
© очистка кэш-памяти (сброс битов достоверности внутренней кэш-памяти);
© обратная запись ("выгрузка") кэш-памяти и очистка (сброс битов достоверности внутренней кэш-памяти, достоверное состояние внешней кэш-памяти переписывается в ОП ("выгрузка") и сброс битов достоверности внешней кэш-памяти).
Тип цикла шины задается сигналами управления ШИ M/IO# (память/ввод-вывод -отличает адресное пространство памяти и устройств ВВ), D/C# (данные/управление -отличает циклы данных от всех остальных) иW/R# (запись/чтение -указывает на направление передачи данных). Комбинация 101 зарезервирована.
В циклах шины по шинам процессора пересылаются команды, операнды и другие данные (различная управляющая информация). Каждый элемент данных (байт, слово, двойное слово, строка и т.д.) идентифицируются адресом и сигналами разрешения байт к банкам памяти BE[i]#.
Передача данных осуществляется двумя основными способами:
1. С помощью непакетных циклов шины, которые подразделяются на:
n некэшируемые операции считывания или записи памяти или ВВ:
© одиночные передачи;
© многоцикловые последовательности;
n кэшируемые операции считыванияиз памяти (включая предвыборку команд):
© многоцикловые последовательности;
2. С помощью пакетных циклов шины, которые подразделяются на:
n для небольших размеров шины некэшируемые операции считывания из памяти или ВВ:
n кэшируемые операции считыванияиз памяти (включая предвыборку команд).
Непакетный цикл шины это такой цикл, в котором для доступа к одному элементу данных необходимо выполнить обращение к памяти или УВВ (режим без расслоения обращений).
Некэшируемые циклы шины - это такие циклы, когда считанные данные не поступают в кэш-память.
Одиночные передачи за цикл шины передают один элемент данных.
Многоцикловые последовательности представляют собой серию циклов одиночных передач данных, размещаемых в последовательных ячейках памяти (например, считывая 128-разрядные команды или 64-разрядные операнды с ПЗ).
Кэшируемые циклы шины служат для заполнения строки внутренней кэш-памяти процессора.
Пакетные циклы шины являются самым быстрым способом передачи данных и в одном цикле могут передавать до 16 байт. Используется при расслоении обращений доступа к памяти. Самый быстрый пакетный цикл требует 2 такта для обращения к памяти и первой передачи и по одному такту для всех последующих передач (5 тактов), а непакетные по два такта на каждую передачу (8 тактов). Пакетные циклы имеют ограничения: они могут передавать только выровненные строки по смежным адресам, кратным 16.
Непакетный цикл шины.
Минимальная длительность одного цикла шины составляет 2 такта (типа 2-2: 2 такта на чтение и 2 на запись) , однако за счет введения в цикл шины дополнительных тактов состояния ожидания длительностью цикла шины можно варьировать в широких пределах в зависимости от быстродействия памяти (типа k-m: k тактов на чтение и m тактов на запись). Такт состояния ожидания формируется автоматически при отсутствии в такте Т2 сигнала RDY# (RDY#=1), повторяя все действия, выполняемые в такте Т2 до прихода сигнала RDY#.
Назначение непакетных циклов:
© одиночных - для передачи одного элемента данных (формата байт, слово, двойное слово) за цикл шины по записи или считыванию, например, при сквозной записи в кэш-память;
© многоцикловые последовательности для передачи элемента данных, длина которого превышает установленную разрядность шины данных (например, при передаче не выровненных данных, 64-разрядных данных с ПЗ - 4 цикла для 16-разрядной шины и 2 цикла для 32-разрядной шины, 128-разрядных команд, 32-разрядных данных по 8/16-разрядной шине и т.д.). Отсюда, многоцикловая последовательность требует "указания" длины передаваемых данных, формируемой внутренними запросами процессора (КОП, тип данных) или внешними запросами системы памяти.
Кэшируемые многоцикловые последовательности используются для заполнения строк внутренней кэш-памяти при замещении за 4 цикла шины минимум по 2 такта на каждый цикл (8 тактов).