Организация передачи данных в циклах шины

Циклы шины.

Структура портов ввода/вывода.

Порты ввода/вывода имеют 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 тактов).