Курс лекций «Организация ЭВМ и систем»: Методическое пособие, страница 19

Память ОЗУ1 организована в виде 16 локальных страниц с номерами 00002, 00012, …, 11112.  Каждая страница содержит 16К 32-разрядных ячеек.  На вход ОЗУ1 поступает 18-разрядный адрес: старшие 4 разряда поступают из поля L выбранной страницы (при совпадении) ячейки АЗУ и определяют номер одной из 16 локальных страниц; 14 младших разрядов – из поля M регистра логического адреса, где они определяют адрес ячейки в пределах выбранной страницы.  Память ОЗУ1 подключается к магистрали через связи H только в том случае, когда Q = 1, т.е. при условии, что в АЗУ выбрана (по сравнению) одна из 16 ячеек.  Память ОЗУ2 организована в виде 256К 32-разрядных ячеек и содержит таблицу соответствия логических страниц физическим.  Инвертор формирует на своем выходе сигнал 1 в том случае, когда  ни в одной из 16 ячеек АЗУ не произошло совпадения 18-разрядного входного слова N с 18-разряднам словом S.  Сигнал передается по управляющей шине магистрали в процессор микроЭВМ, оповещая его об отсутствии нужной страницы.

Предположим, что процессор микроЭВМ обратился к памяти по некоторому 32-разрядному адресу.  Пусть N = x, M = z, где x и z – некоторые конкретные коды.  Этот адрес запоминается в регистре логического адреса, после чего производится пуск АЗУ для выяснения вопрос: находится ли страница, логический номер которой x, в буферной памяти ОЗУ1.

Предположим сначала, что этот вопрос решен положительно, т.е. предыстория системы такова, что в буферной памяти ОЗУ1 уже помещена нужная страница.  Если это так, то одна из записей АЗУ должна отражать этот факт.  Поэтому пуск АЗУ приведет, во-первых, к выдаче сигнала Q = 1, который подключит ОЗУ1 к магистрали по связям H, и, во-вторых, к выдачу кода в старшие адресные линии ОЗУ1.  После этого производится пуск ОЗУ1, что приводит к выбору нужной ячейки памяти z на странице, локальный номер которой равен выданному коду, что и требовалось.  Содержимое этой ячейки либо обновляется (при записи), либо выдается на шину данных (при чтении).  До тех пор, пока нужная страница находится в ОЗУ1, доступ к ячейке производится с той же скоростью, что и доступ к ячейке “обычного” ОЗУ.  Время срабатывания АЗУ не учитываем т.к. ОЗУ1 может, не дожидаясь результата работы “на всякий случай” проводить дешифрацию младших разрядов адреса, которые внутри ОЗУ1 могут рассматриваться как старшие разряды.

Предположим теперь, что в ОЗУ1 нет нужной страницы.  Это означает, что ни одна из 16 ячеек АЗУ не содержит в поле S код x.  Поэтому при обращении к АЗУ будет сформирован сигнал Q = 0 и ОЗУ1 вследствие разрыва связей H окажется изолированным от магистрали, хотя в процессор микроЭВМ и будет послан ответный сигнал (чтобы не было зависания).  Пройдя через инвертор, сигнал отсутствия совпадения поступает в процессор микроЭВМ, вызывая прерывание выполнения программы в связи с отсутствием нужной страницы в ОЗУ1.  Процессор временно откладывает текущее задание и переходит к выполнению прерывающей программы.  Задача этой программы – отыскать, где находится физическая страница, соответствующая коду x, и ввести эту страницу в ОЗУ1, сделав соответствующую пометку в АЗУ.  Эта страница вводится на свободное место в ОЗУ1, а если такого нет – не место той страницы, которая дольше всего не использовалась.

Отыскание номера физической страницы, соответствующей данной логической странице,  производится следующим образом.  Процессор считывает содержимое программно-доступного регистра логического адреса, выделяет из полученного 32-разрядного кода поле N (в котором записан код x) и использует его в качестве младших разрядов адреса при обращении к ОЗУ2, в котором хранится таблица соответствия логических номеров страниц местам их хранения на внешних носителях.  Обратившись к ячейке ОЗУ2, процессор получит в ответ некоторый 32-разрядный код Y, который является указателем физической страницы.  В этом коде содержится информация о том, где находится эта страница.