Процессор System/370. Средства отсчета времени
Есть следующие средства отсчета времени: 1) интервальный таймер находиться в постоянно распределенной области ОП по адресу 80 и занимает 32 бита, из которых используются только 24. Из содержимого 23го бита каждую 1/300 секунды вычитается 1. Когда значение становиться равно 0, формируется запрос на внешнее прерывание. Поскольку интервальный таймер находиться в ОП, для обращения к нему отдельных команд не предусмотрено Интервальный таймер был единственным средством отсчета времени в архитектуре IBM System/360 2) часы двойное слово, обновляющееся каждую микросекунду. К содержимому разряда 51 прибавляется 1. (в зависимости от процессора) Для чтения и изменения показания предусмотрены специальные команды. При этом изменение значения часов происходит только в том случае, если оператор нажал соответствующую кнопку на пульте. Запросов на прерывания часы не формируют. Полный цикл работы составляет более 143 лет. Началом отсчета времени в VM является 01.01.1900 3) компаратор двойное слово, обновление не происходит. Значение компаратора постоянно сравнивается со значением часов, при совпадении значений формируется запрос на внешнее прерывание Для чтения и изменения значения компаратора предусмотрены соответствующие команды. Выполняет функции аналогичные будильнику 4) Программный таймер двойное слово. Каждую микросекунду из разряда 51 вычитается 1. При обнулении происходит запрос на внешнее прерывание. Чтение и изменение значения также через специальные команды. Обновление программного таймера происходит одновременно с обновлением часов ДПА доступно программе если процессор находиться в режиме расширенного управления В своей работе ДПА использует информацию из управляющих регистров 0 и 1 УР0 +---+----+---+----+---+ | X | PS | X | SS | X | +---+----+---+----+---+ 8 9 11 12 PS: 0 -> размер страницы 2КБ PS: 1 -> размер страницы 4КБ SS: 0 -> размер сегмента 64КБ SS: 1 -> размер сегмента 1МБ УР1 +-------------------------+--------------------------------+---+ | длина таблицы сегментов | адрес начала таблицы сегментов | X | +-------------------------+--------------------------------+---+ 0 7 8 24 25 Формат записи таблицы сегментов Одна запись на сегмент +-------+---+-------+---+---+ | длина | 0 | адрес | 0 | i | +-------+---+-------+---+---+ 0 3 4 7 8 28 29 30 31 Формат записи таблицы страниц |-------+---+-------| | адрес | i | 0 ... | |-------+---+-------| 0 15 Данная страница начинается с указанного адреса инд инд инд УР1 сегм стр байта +----+-------+-----+ +-------+-------+-----+ | | | | | o | o | o | +----+---+---+-----+ +---+---+---+---+--+--+ | | | | V | | | --+-- | | +---------------------+ ( X )<-------------------------------------+ | | --+-- | | | ТСГ | | | +---+--+--------+--+--+ | | | | | | | | | | | +------>+---+--+--------+--+--+ ----- | | | | | o----+--+--+------>( X )<----+ | +---+--+--------+--+--+ --+-- | | | | | | | | | +---+--+--------+--+--+ | ТСТ | | | | | | | | +-----------+---+--+ | +---+--+--------+--+--+ | | | | | V | | | | | | +---->+-----------+---+--+ +----+----+ +---+--+--------+--+--+ | o-----+---+--+---->| | | таблица сегментов +-----------+---+--+ +----+----+ | | | | реальный адрес +-----------+---+--+ | | | | +-----------+---+--+ таблица страниц Логический адрес представляет собой совокупность индекса сегмента, индекса страницы и индекса байта. Разделение логического адреса на индексы производить в соответствии со значениями PS и SS УР0. Если размер страницы равен 2КБ, то граница между индексом страницы и индексом байта должна проходить так, чтобы индекс байта составлял 11 разрядов. Если размер страницы равен 4КБ, индекс байта должен содержать 12 разрядов Если размер сегмента равен 1МБ, индекс сегмента состоит из 4х разрядов. Если размер сегмента равен 64КБ, индекс сегмента содержит 8 разрядов. Каждый из индексов является целым числом Последовательность действий 1) из УР1 извлекается адрес таблицы сегментов, а индекс сегмента логического адреса используется как номер строки ТСГ 2) из найденной строки извлекается адрес ТСТ, а индекс страницы логического адреса используется как номер строки ТСТ 3) из найденной строки ТСТ извлекается адрес начала страницы в реальной памяти, к нему добавляется индекс байта и в результате получается реальный адрес Примерно по такой схеме работают процессоры всех архитектур ДПА работает с адресами При выполнении ДПА 1) особый случай использования сегмента индекс сегмента превышает длину ТСТ или значение бита доступности говорит о недоступности сегмента 2) для страниц аналогично В результате обработки этого программного прерывания ОС должна сделать сегменты или страницы доступными Смена значения адреса таблицы сегментов УР1 приводит к тому, что те же самые логические адреса будут преобразовываться уже в другие реальные адреса. Обычно говорят, что адрес таблицы сегментов определяет конкретное адресное пространство, в котором управляется программа. Буфер быстрой переадресации (ББП) составная часть ДПА ББП предназначен для запоминания исходных данных и результатов ДПА. В качестве исходных данных запоминаются индексы сегментов и индексы страниц, в качестве результатов запоминается адрес начала реальной страницы (реальный адрес начала страницы). Прежде чем выполнить преобразование, процессор всегда пытается найти готовый результат, сохраненный в буфере. Если результат найден, к нему конкатенацией добавляется адрес байта Во избежание получения неверных результатов преобразования ББП должен быть очищен в следующих ситуациях: 1) смена значений в УР1 2) какой либо сегмент в таблицу сегментов становиться недоступным 3) какая либо страница становиться недоступной Очистка ББП является единственной операцией применяемой к буферу ББП не обязательная часть Размер ББП определяется ка компромисс между двумя требованиями: 1) Объем данных не был слишком велик, а поиск не приводил к слишком медленному получению результату 2) Переполнение ББП не происходило слишком часто При нахождении оптимального размера ББП должна быть проанализированы программы, которые в последующем будут выполняться на ЭВМ Частота переключения контекста количество команд, которые успевают выполниться между переключением контекста
7. Процессор System/370. Динамическое преобразование адресов.