Загрузка...

Шинный интерфейс


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

Пример конвейерного выполнения команд

Рис. 2.23. Пример конвейерного выполнения команд

По мере необходимости операционное устройство считывает байт из очере­ди и выполняет предписанную командой операцию. При многобайтовых коман­дах из очереди считываются и другие байты команды. В тех редких случаях, когда к моменту считывания очередь оказывается пустой, операционное устрой­ство ожидает выборку очередного командного слова, которую инициирует шинный интерфейс. Если команда требует обращения к памяти или порту ввода — вывода, операционное устройство запрашивает шинный интерфейс на выполнение необходимого цикла шины для передачи данных. Когда шинный интерфейс не занят выборкой команды, он удовлетворяет запрос немедленно; в противном случае операционное устройство ожидает завершения текущего цикла тины. Со своей стороны, шинный интерфейс приостанавливает выборку команд во время обмена данными между операционным устройством и памятью или портами ввода — вывода.

Буфер шины адреса/данных (БАД) содержит 16 двунаправленных управ­ляемых усилителей с тремя выходными состояниями и обеспечивает номи­нальную нагрузочную способность линий AD15—ADO.

Буфер шины адреса/состояния (БАС) содержит четыре однонаправленных усилителя с тремя выходными состояниями и обеспечивает номинальную на­грузочную способность линий A19/S6—A16/S3.

Сегментные регистры хранят базовые (начальные) адреса сегментов памя­ти: кодового сегмента CS, в котором содержится программа; стекового сегмен­та SS; сегмента данных DS; дополнительного сегмента ES, в котором обычно содержатся данные. Наличие сегментных регистров обусловлено разделением памяти на сегменты и используемым способом формирования адресов памяти. Хотя МП имеет 20-битовую шину физического адреса памяти, он оперирует 16-битовыми логическими адресами, состоящими из базового адреса сегмента и внутрисегментного смещения. Внутрисегментное смещение может быть вы­числено в соответствии с указанным в команде способом адресации, может находиться в формате команды или содержаться в общем регистре. Физический адрес формируется путем суммирования смещения и содержимого соответству­ющего сегментного регистра, которое дополняется четырьмя нулевыми младши­ми разрядами.

Сумматор адресов осуществляет вычисление 20-битовых физических адресов.

Указатель команд IP хранит смещение следующей команды в текущем кодовом сегменте, т. е. указывает на следующую по порядку команду. Он явля­ется аналогом стандартного программного счетчика с той лишь разницей, что его содержимое определяет адрес команды лишь в совокупности с содержимым регистра CS; если же CS заполнен нулями, аналогия становится полной. Моди­фикация IP осуществляется шинным интерфейсом так, что при обычной работе IP содержит смещение того командного слова, которое шинный интерфейс будет выбирать из памяти. Оно не совпадает со смещением очередной команды (находящейся в этот момент на выходе очереди команд), которую будет выпол­нять операционное устройство. Поэтому при запоминании содержимого IP в стеке, например при вызове подпрограмм, оно автоматически корректируется, чтобы адресовать следующую команду, которая будет выполняться. Эта осо­бенность является следствием опережающей выборки команд, реализованной в ВМ86. Непосредственный доступ к IP имеют команды передачи управления.

Загрузка...