Реклама:

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

Обычно за раз передается одно слово. При использовании кэш-памяти желательно сразу вызывать всю строку кэш-памяти (то есть 16 последовательных 32-разрядных слов). Однако часто передача блоками может быть более эффективна, чем такая последовательная передача информации. Когда начинается чтение блока, задающее устройство сообщает подчиненному устройству, сколько слов нужно передать (например, помещая общее число слов на информационные линии в период Tt). Вместо того чтобы выдать в ответ одно слово, задающее устройство выдает одно слово в течение каждого цикла до тех пор, пока не будет передано требуемое количество слов. На рис. 3.39 изображена такая же схема, как и на рис. 3.35, только с дополнительным сигналом BLOCK, который указывает, что запрашивается передача блока. В данном примере считывание блока из 4 слов занимает 6 циклов вместо 12.

Принципы работы шины

Рис. 3.39. Передача блока данных

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

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

Еще один важный цикл шины - цикл обработки прерываний. Когда центральный процессор командует устройству ввода-вывода выполнить какое-то действие, он ожидает прерывания после завершения работы. Для сигнала прерывания нужна шина.

Поскольку может сложиться ситуация, когда несколько устройств одновременно захотят выполнить прерывание, здесь имеют место те же проблемы разрешения конфликтных ситуаций, что и в обычных циклах шины. Чтобы избежать таких проблем, нужно каждому устройству приписать определенный приоритет и для распределения приоритетов поддерживать централизованный арбитраж. Существует стандартный контроллер прерываний, который широко используется. В компьютерах IBM PC и последующих моделях для этого служит микросхема Intel 8259А. Она изображена на рис. 3.40.

Принципы работы шины

Рис. 3.40. Контроллер прерываний 8259А

До восьми контроллеров ввода-вывода могут быть непосредственно связаны с восемью входами IRx (Interrupt Request - запрос прерывания) микросхемы 8259А. Когда любое из этих устройств решит выполнить прерывание, оно запускает свою линию входа. Если активизируется один или несколько входов, контроллер 8259А выдает сигнал INT (INTerrupt - прерывание), который подается на соответствующий вход центрального процессора. Если центральный процессор способен обработать прерывание, он посылает микросхеме 8259А импульс через вывод INTA (INTerrupt Acknowledge - подтверждение прерывания). В этот момент микросхема 8259А должна определить, на какой именно вход поступил сигнал прерывания. Для этого она помещает номер входа на информационную шину. Эта операция требует особого цикла шины. Центральный процессор использует этот номер для обращения к таблице указателей, которую называют таблицей векторов прерываний, чтобы найти адрес процедуры обработки этого прерывания.

Микросхема 8259А содержит несколько регистров, которые центральный процессор может считывать и записывать, используя обычные циклы шины и выводы RD (ReaD - чтение), WR (WRite - запись), CS (Chip Select - выбор элемента памяти) и АО. Когда программное обеспечение обработало прерывание и готово получить следующее, оно записывает специальный код в один из регистров, который вызывает сброс сигнала INT микросхемой 8259А, если не появляется другое прерывание. Регистры также могут записываться для того, чтобы перевести микросхему 8259А в один из нескольких режимов, и для выполнения некоторых других функций.

При наличии более 8 устройств ввода-вывода микросхемы 8259А могут соединяться каскадом. В самой экстремальной ситуации все 8 входов могут быть связаны с выходами еще 8 микросхем 8259А, соединяя до 64 устройств ввода-вывода в двухступенчатую систему прерывания. Микросхема 8259А содержит несколько выводов для каскадного соединения, но мы их опустили ради простоты.

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

Арбитраж шины || Оглавление || Примеры центральных процессоров