Министерство образования и науки РФ
НГТУ
Кафедра ВТ

Курсовая работа по дисциплине “Организация ЭВМ”
Разработка структуры гипотетической ЭВМ
Факультет: АВТ
Группа: АМ-109
Студент:
Преподаватель:
Новосибирск, 2004
Оглавление
Цели работы... 3
Исходные данные.. 3
Описание структуры ЭВМ... 4
Разработка структурной схемы центрального процессора.. 5
Операционный блок (ОБ) 6
Арифметико-логическое устройство. 6
Регистровый файл. 6
Сопроцессор плавающей точки (FPP) 6
Буферные регистры.. 6
Описание работы ОБ.. 6
Микропрограммное устройство управления (МУУ) 8
Описание работы МУУ.. 8
Система прерываний.. 10
Основная память ЭВМ... 11
Кэш-память.. 13
Организация ввода/вывода.. 14
Блок синхронизации.. 16
Таймер.. 16
Дисплей.. 16
Клавиатура.. 16
Схема начальной установки.. 17
Разрабатываемый блок и алгоритм: блок преобразования виртуальных адресов в физические.. 18
Описание работы разрабатываемого блока.. 18
Схема разрабатываемого блока.. 19
Заключение.. 22
Используемая литература.. 23
Цели работы
Целями курсового проектирования являются углубление и закрепление теоретических знаний студентов, приобретение навыков разработки узлов ЭВМ на структурном, функциональном и алгоритмическом уровнях.
Исходные данные
Общие исходные данные:
В состав разрабатываемой ЭВМ входят следующие блоки:
-центральный процессор (ЦП);
-микропрограммное устройство управления (МУУ);
-оперативная память (ОП);
-блок синхронизации (БС);
-система прерывания программ (СПП);
-таймер;
-система ввода-вывода (СВВ);
-монитор и клавиатура.
Основные параметры ЭВМ:
-адресность ЭВМ - двухадресная;
-длина команды - переменная.
-разрядность - не менее 16;
-ёмкость ОП - не менее 128 Кбайт.
Индивидуальные исходные данные:
структура ЭВМ – двухшинная;
сопроцессор – плавающей запятой (FPP);
система прерываний – цепочечная макро;
организация памяти – сегментно-страничная;
кэш – TLB;
система ввода/вывода – программно-управляемый ввод/вывод;
разрабатываемый блок – блок преобразования виртуальных адресов в физические.
Описание структуры ЭВМ
В разрабатываемой ЭВМ структура – двухшинная, это означает, что линии адреса и данных объединены в единую мультиплексируемую шину адреса/данных. Такая шина функционирует в режиме разделения времени, поскольку цикл шины разбит на временной интервал для передачи адреса и временной интервал для передачи данных. Мультиплексирование адресов и данных предполагает наличие мультиплексора на одном конце тракта пересылки информации и демультиплексора на его другом конце. Мультиплексоры и демультиплексоры играют роль коммутирующих устройств.
Мультиплексирование позволяет сократить общее число линий, но требует усложнения логики связи с шиной. Кроме того, оно ведет к потенциальному снижению производительности, поскольку исключает возможность параллельной передачи адресов и данных, что можно было бы использовать в транзакциях записи, одновременно выставляя на шину адреса – адрес, а на шину данных – записываемое слово. Примером применения мультиплексируемой шины адреса/данных может служить шина Futurebus+.
Не далее, как в прошлом семестре, одной из задач моего курсового проекта по дисциплине «Схемотехника» была разработка двухшинного интерфейса «процессор-память». Для этого я использовал буферные регистры со входом разрешения записи (загрузки) и выводом содержимого в шину адреса/данных. Управление регистрами происходит битами микрокоманд, т. е. ответственность за бесконфликтную передачу данных по данных и адреса возлагается на микропрограммы. По общей шине (при обращении к различным устройствам) вначале передается адрес, признаком чего служит наличие сигнала ALE (Address Latch Enable), который является битом микрокоманды.
На шину управления сигналы поступают из ЦП и блока синхронизации (БС). Из ЦП на шину управления идут сигналы обращения к памяти и определения направления передачи данных, с БС – системный синхросигнал. В БС также находится схема начальной установки и сброса. Схема начальной установки устанавливает в исходное состояние различные узлы ЭВМ после включения питания. В частности, отключает все выходные буферы устройств от системной магистрали во избежание конфликта и выхода их из строя, обнуляет системный таймер и запускает генератор тактовых импульсов (ГТИ) после того, как установится питание, а также сбрасывает секвенсор микрокоманд. При пуске системы выполняется тестирование по служебной программе, хранящейся в ПЗУ и инициализация контроллеров периферийных устройств.
Проектирование структуры заключается в определении состава микроЭВМ и способов взаимодействия, содержащихся в ней устройств. Структурная схема разрабатываемой ЭВМ приведена на рис.1.

Рис.1. Структурная схема ЭВМ
Разработка структурной схемы центрального процессора
Центральный процессор состоит из двух блоков: микропрограммного устройства управления (МУУ), и операционного блока (ОБ). Структурная схема ЦП изображена на рис.2.
Операционный блок включает в себя:
· арифметико-логическое устройство (АЛУ);
· регистровый файл;
· сопроцессор плавающей точки;
· интерфейсные элементы и элементы обвязки.
Архитектура данного ЦП характеризуется наличием конвейерной обработки, как команд, так и микрокоманд.

Рис.2. Структурная схема ЦП
Операционный блок (ОБ)
Арифметико-логическое устройство
АЛУ представляет собой горизонтальную процессорную секцию, выполняющую следующие функции:
· выполнение арифметических операций;
· выполнение различных сдвиговых и логических операций;
· генерация адреса оперативной памяти;
Регистровый файл
Регистровый файл представляет собой регистровое запоминающее устройство с двусторонним доступом. Имеется два порта записи и два порта считывания для данных и четыре адресных порта. Пара адресных портов (один для записи и один для чтения) связана с соответствующей парой портов записи и чтения данных.
Сопроцессор плавающей точки (FPP)
Функции, выполняемые cопроцессором плавающей точки: арифметические операции над числами с плавающей точкой с нормализацией мантиссы и без нормализации. Выбором инструкций FPP управляет микрокоманда.
Буферные регистры
Буферные регистры имеют динамический вход тактирования, вход разрешения тактирования (загрузки) и тристабильный выход. По фронту 0,1 происходит захват данных (при активном сигнале разрешения загрузки) и удержание их в течение цикла. Если разрешена загрузка или вывод содержимого регистра адреса, то загрузка или вывод содержимого регистра данных запрещена, и, наоборот.
Описание работы ОБ
С началом нового цикла в регистр входных данных помещаются данные с шины и поступают на входную шину регистрового файла. Запись и чтение в регистровый файл производится по адресу, который берется, либо из соответствующего поля регистра команд, либо из Рг. МК. Выходная шина регистрового файла управляется из МК, чтобы можно было ее использовать для передачи константы из Рг. МК. Далее данные прочитанные из регистрового файла или константа из МК поступают на входы либо АЛУ, либо сопроцессора плавающей точки.
Возможны два варианта организации работы сопроцессора. В первом случае МПС и сопроцессор работают по очереди, выполняя каждый команды из своего набора, во втором случае сопроцессор и основной процессорный элемент работают параллельно. В таком случае существенно увеличиваются аппаратные затраты. Для сопроцессора необходимо собственное устройство управления и регистровый файл. Могут возникнуть задержки в вычислениях, если МПС будет работать с результатом, получаемым с сопроцессора. В практике, достаточно малую долю, от общего числа операций, занимают операции с плавающей точкой.
Я считаю наиболее приемлемым первый вариант взаимодействия процессорного элемента с FPP, так как на практике, достаточно малую долю, от общего числа операций, занимают операции с плавающей точкой. В этом случае достаточно одного, общего, устройства управления, которое, в зависимости от типа операции, приостанавливает один из процессорных элементов. Достаточно присутствие одного регистрового файла. Также становиться возможным использование общего регистра данных. Так как сопроцессор работает медленнее, необходимо существование дополнительной частоты тактирования.
Вывод данных из процессорных элементов производиться на локальную шину, из которой данные поступают на вход регистрового файла и регистра данных. Адреса могут формироваться только в ПЭ, поэтому адресный КЭШ подключен напрямую к выходу ПЭ.
Флаги, генерируемые процессорными элементами, поступают на вход тестирования внешних условий секвенсера микрокоманд.
На процессорные элементы данные поступают из соответствующих трактов регистрового файла. Управление процессорными элементами производится микропрограммой. Из микрокоманды поступают соответствующие биты на входы управления ПЭ. Также микрокомандой, в зависимости от типа операции, производиться приостановка одного из процессорных элементов (подача сигнала высокого уровня на вход «HOLD»), запрещение/разрешение вывода данных регистрам адреса и данных, запрещение/разрешение записи данных по тракту B регистрового файла. Микропрограмма управляет работой адресного КЭШа, разрешает/запрещает запись в таблицу сегментов или страниц. Также разрешает/запрещает преобразование виртуальных адресов в физические. Данная опция необходима, в случае, когда происходит обращение к периферийному устройству по полученному вектору прерывания. Потому что, после сложения вектора значения прерываний с содержимым базового регистра, получается физический адрес устройства.

Рис. 3. Структурная схема ОБ
Микропрограммное устройство управления (МУУ)
В качестве микропрограммного устройства управления взята типовая структура – конвейер I порядка с регистром микрокоманд. В соответствии с индивидуальными исходными данными, которые определяют требования к составу, элементной базе и разрядности, в состав микропрограммного устройства управления входят:
· Регистр команд;
· Преобразователь начального адреса;
· Секвенсер микрокоманд - K1804ВУ5;
· Микропрограммная память;
· Регистр микрокоманд.
Рассмотрим составные части МУУ.
Регистр команд (RG K) является буферным регистром (интерфейсным элементом). Он обеспечивает взаимодействие микропрограммного устройства управления с шиной данных DB.
Преобразователь начального адреса (ПНА) дешифрирует поступающий из регистра команд код операции в адрес соответствующей микрокоманды для секвенсера и представляет собой программируемое ПЗУ (PROM).
Секвенсер микрокоманд. Секция управления адресом программной памяти, предназначена для применения в составе устройств управления адресом программной памяти центральных процессоров микро-ЭВМ и других быстродействующих вычислительных устройств. Микросхема выполняет микрокоманды выбора адреса и содержит наращиваемый сумматор для вычисления адресов, внутренний стек для вложения подпрограмм и отдельную схему приращения для счетчика команд.
Функции, возлагаемые на секвенсор:
1. Адресация полного объема микропрограммной памяти. Согласно заданию, объем микропрограммной памяти должен составлять 2 Кслов.
2. Реализация типовых управляющих конструкций.
Микрокоманды выбора адреса, выполняемые секвенсером можно разделить на 5 групп: безусловные выборки, условные переходы (и к подпрограмме), условные возвраты из подпрограммы и смешанные микрокоманды.
Микропрограммная память (МПП) представляет собой параллельно включенные микросхем памяти EPROM.
Регистр микрокоманд (RG Mк) служит для хранения выбранной из МПП микрокоманды в течение такта ее выполнения.
Описание работы МУУ
С шины данных DB (она же шина адреса) в регистр команд считывается очередная команда. Код операции поступает на ПНА (память типа PROM), где с ним сопоставляется адрес из МПП, где находится соответствующая микрокоманда. Этот адрес передается на входную шину секвенсера. Секвенсер вырабатывает адрес следующей микрокоманды из МПП в зависимости от флагов генерируемых на выходе МПС по итогам исполнения текущей микрокоманды, прямого адреса перехода, инструкций или адреса микропрограммы из ПНА. Микрокоманда, выбранная из микропрограммной памяти секвенсером, загружается в регистр микрокоманд. По фронту синхросигнала текущая микрокоманда частично «отправляется» обратно (инструкции управления секвенсером), а остальные биты отправляются в операционный блок и в память.

Рис. 4. Структурная схема МУУ
Система прерываний
Система прерываний цепочечная на уровне макрокоманд.

Рис. 5. Структурная схема системы прерываний
При цепочечном методе для передачи запроса прерывания модули ввода/вывода совместно используют одну общую линию. Линия подтверждения последовательно проходит через все МВВ. Когда ЦП обнаруживает запрос прерывания, он посылает сигнал по линии подтверждения прерывания. Этот сигнал движется через цепочку модулей, пока не достигнет того, который выставил запрос. Запросивший модуль реагирует путем выдачи на шину данных (в нашем случае на шину адресов/данных) своего вектора прерывания. Вектор содержит либо адрес МВВ, либо какой-нибудь другой уникальный идентификатор, который ЦП интерпретирует как указатель на соответствующую программу обработки прерывания. Такой подход устраняет необходимость в предварительных действиях с целью определения источника запроса прерывания и реализуется он с помощью хранящейся в ОП таблицы векторов прерываний, где содержатся адреса программ обработки прерываний. Под таблицу отводится вполне определенная область памяти (начальный адрес задается неявно). Данная структура характерна более низкими затратами как аппаратных, так и программных средств на реализацию, но недостаток состоит в том, что приоритет устройства фиксирован и определяется порядком подключения, а также сигнал Interrupt Acknowledge (INTA) распространяется с некоторой временной задержкой. При обработке прерываний на макроуровне, запрос прерывания, если он поступил в течение макроцикла, а уж тем более микроцикла (от асинхронных устройств), обрабатывается по окончанию текущей микропрограммы. Плюс в том, что не требуется дополнительных аппаратных затрат на проверку запроса прерывания в течение микроцикла, а минус – это то, что не всегда удается обеспечить оперативность ответа устройству, запросившему прерывание.
Основная память ЭВМ
Память ЭВМ должна иметь в своём составе как оперативную (ОЗУ), так и постоянную (ПЗУ) память. В качестве ОЗУ выберем модуль динамической памяти (к примеру SIMM), а в качестве постоянного запоминающего устройства – EEPROM. Адресация памяти организована по общей шине A/D B. Тип памяти, к которой происходит обращение, определяется старшим адресным разрядом. Для выбора типа памяти используется дешифратор, на выходе которого формируются сигналы DRAMEN и EEPROMEN. Признаком обращения к памяти служит бит микрокоманды. При разработке памяти необходимо предусмотреть:
- память не должна замедлять работу ЭВМ (время выборки адреса не должно превышать длительность цикла ЦП);
- так как была выбрана динамическая память в качестве ОЗУ, то необходимо предусмотреть разработку контроллера DRAM, который будет в зависимости от значений соответствующих битов микрокоманд формировать сигналы управления ее работой; Контроллер динамической памяти построен на программируемой логической матрице, в которой заданы временные диаграммы работы модуля памяти.
- особое внимание нужно обратить на организацию памяти.
В задании к курсовому проекту указывается реализация сегментно-страничной организация памяти. Это говорит о том, что, в системе должны быть средства поддержки виртуальной памяти и мультипрограммного режима.
При страничной организации предполагается, что виртуальная память – это непрерывный массив со сквозной нумерацией слов, что не всегда является оптимальным. Обычно программа состоит из нескольких частей – кодовой, информационной и стековой. Так как заранее неизвестны длины этих составляющих, то удобно, чтобы при программировании каждая из них имела собственную нумерацию слов, отсчитываемых с нуля.
Решением этой проблемы служит сегментно-страничная организация памяти. В ней размер сегмента выбирается не произвольно, а задается кратным размеру страницы. Сегмент может содержать то или иное, но обязательно целое число страниц, даже если одна из страниц заполнена частично. Возникает определенная иерархия в организации доступа к данным, состоящая из трех ступеней: сегмент > страница > слово. Этой структуре соответствует иерархия таблиц, служащих для перевода виртуальных адресов в физические. В сегментной таблице программы перечисляются все сегменты данной программы с указанием начальных адресов страничной таблицы, относящихся к каждому сегменту. Количество страничных таблиц равно числу сегментов и любая из них определяет расположение каждой из страниц сегмента в памяти, которые могут располагаться не подряд – часть страниц может находиться в ОП, остальные – во внешней памяти. Структуру виртуального адреса и процесс преобразования его в физический адрес иллюстрирует рис.6.

Рис. 6. Преобразование адреса при сегментно-страничной организации памяти
Для получения физического адреса необходим доступ к сегментной и одной из страничных таблиц, поэтому преобразование адреса может занимать много времени.
Кэш-память
В задании оговорено, что кэш-память представляет собой TLB (буфер быстрого преобразования адреса). При каждом преобразовании виртуального адреса в физический результат заносится в TLB: физический адрес в память данных, а виртуальный – в память тегов. Таким образом, в TLB попадают результаты нескольких последних операций трансляции адресов. При каждом обращении к ОП преобразователь адресов сначала производит поиск в памяти тегов TLB номера требуемого сегмента, потом поиск требуемой страницы для заданного сегмента. При попадании адрес соответствующей физической страницы берется из памяти данных TLB. Если в TLB зафиксирован промах, то делается попытка сократить время преобразования путем исключения одного дополнительного обращения к ОП. Может оказаться, что страница, к которой происходит обращение, принадлежит сегменту предыдущего обращения к ОП. Для этого в ОП должны сохраняться номер сегмента и адрес начала его страничной таблицы для предыдущего обращения. Если совпадают номера сегментов текущего и предыдущего обращений, первый этап преобразования исключается, используется сохраненный адрес начала сегментной таблицы и выполняется только второй этап преобразования, т. е. производится только одно дополнительное обращение к ОП. Если номера сегментов не совпадут, то процедура преобразования адресов производится аналогично описанному в предыдущем пункте методу, после чего осуществляется запись найденных значений виртуального и физического адресов в TLB.
Дополнительные обращения к ОП сопровождаются занесением информации о текущей странице в кэш. Если в кэше не оказывается свободного регистра (строки), данные о новой странице записываются на место данных, которые дольше всего не использовались в процессе преобразования адресов.
Каждая запись содержит поля номера сегмента, номера страницы, четыре признака: V, R, M, A и поле физического адреса.
Структура TLB показана на рис.7.
Буфер преобразования адресов обычно реализуется в виде полностью ассоциативной или множественно-ассоциативной кэш-памяти с высокой степенью ассоциативности временем доступа, сопоставимым с аналогичными показателями для кэш-памяти первого уровня.

Рис.7. Структурная организация адресного кэша
Организация ввода/вывода
Наиболее простым методом управления вводом/выводом является программно-управляемый ввод/вывод, часто называемый также вводом/выводом с опросом. Здесь ввод/вывод происходит под полным контролем ЦП и реализуется специальной процедурой ввода/вывода. В этой процедуре ЦП с помощью команды ввода/вывода сообщает модулю ввода/вывода, а через него и внешнему устройству о предстоящей операции. Адрес модуля и ВУ, к которому производится обращение, указывается в адресной части команды ввода или вывода. Модуль исполняет затребованное действие, после чего устанавливает в единицу соответствующий бит в своем регистре состояния. Ничего другого, чтобы уведомить ЦП, модуль не предпринимает. Следовательно, для определения момента завершения операции или пересылки очередного элемента блока данных процессор должен периодически опрашивать и анализировать содержимое регистра состояния МВВ.
Иллюстрация процедуры программно-управляемого ввода блока данных с устройства ввода приведена на рис.8. Данные читаются пословно. Для каждого читаемого слова ЦП должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных МВВ, то есть доступно для скачивания.
Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного МВВ и конкретного ВУ. Существуют четыре типа команд ввода/вывода, которые может получить МВВ: управление, проверка, чтение и запись.
Команды управления используются для активизации ВУ и указания требуемой операции. Например, в устройство памяти на магнитной ленте может быть выдана команда перемотки или продвижения на одну запись. Для каждого типа ВУ характерны специфичные для него команды управления.
Команда проверки применяется для проверки различных ситуаций, возникающих в МВВ и ВУ в процессе ввода/вывода. С помощью таких команд ЦП способен выяснить, включено ли ВУ, готово ли оно к работе, завершена ли последняя операция ввода/вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния МВВ.
Команда чтения побуждает модуль получить элемент данных из ВУ и занести его в регистр данных. ЦП может получить этот элемент данных, запросив МВВ поместить его на шину данных (в нашем случае шину адресов/данных).
Команда записи заставляет модуль принять элемент данных (байт или слово) с общей шины и переслать его в регистр данных с последующей передачей в ВУ.
Если к МВВ подключено несколько внешних устройств, то в процедуре ввода/вывода нужно производить циклический опрос всех устройств, с которыми в данный момент производятся операции ввода/вывода.
Из блок-схемы (см. рис.8) явно виден недостаток данного метода ввода/вывода – неэффективное использование процессора из-за ожидания готовности очередной порции информации, в течение которого никаких иных полезных действий ЦП не выполняет. Кроме того, пересылка даже одного слова требует выполнения нескольких команд. ЦП должен тратить время на анализ битов состояния МВВ, запись в МВВ битов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно сказывается на эффективности ввода/вывода.
Главным аргументом в пользу программно-управляемого ввода/вывода является простота МВВ, поскольку основные функции по управлению ввода/вывода берет на себя процессор. Подключение новых ВУ устройств или отключение раннее подключенных реализуется без особых сложностей.

Рис.8. Программно-упраляемый ввод данных
Блок синхронизации
Блок синхронизации (БС) предназначен для обеспечения синхронной работы всех узлов ЭВМ. В его задачи входит генерация синхропоследовательностей заданной формы и длительности для ЦП, таймера, контроллеров, ОП и других устройств, входящих в состав ЭВМ.
В качестве основы для построения БС необходимо использовать микропрограммируемый тактовый генератор, позволяющий реализовать переменную длительность такта для ЦП, что позволит несколько повысить его производительность.
Блок синхронизации строится по стандартной схеме с кварцевой стабилизацией частоты. В нем вырабатывается сигналы, синхронизирующие работу всех устройств ЭВМ (за исключением монитора) и обмен информацией между ними.
Таймер
Большинство микроЭВМ содержит источник реального времени - часы и таймер. Таймер предназначен для деления машинного времени на временные интервалы для эффективного использования процессора при работе с периферийными устройствами. Он обеспечивает совместную работу ЦП и ПУ в реальном масштабе времени, осуществляя разбиения машинного времени на равные интервалы времени. С помощью таймера можно задавать определённые промежутки времени, по истечении которых происходит прерывание. Особенное применение прерываний таймера основанное на независимости работы микросхемы от процессора - регенерация оперативных запоминающих устройств, т. е. например каждые... мс таймер выдаёт запрос на прерывание наивысшего приоритета, по наступлению которого производится регенерация памяти
Дисплей
Дисплей служит для представления итоговых данных, для постоянного наблюдения за различными действиями вычислительной машины.
Дисплей, как и всякое другое периферийное устройство подключается через контроллер (видеоадаптер) к системной шине.
Также следует отметить, что монитор является пассивным устройством, которое не выдает данные и управляющие сигналы, а просто отображает динамически изменяющуюся информацию. Это достаточно сложное устройство, которое содержит собственную память. Контроллер также способен преобразовывать данные, работая независимо от ЦП.
Клавиатура
Клавиатура является одним из основных устройств ввода, обеспечивающих общение пользователя с ЭВМ. Она содержит контроллер клавиатуры, который воспринимает каждое нажатие на клавишу и выдает последовательный скан-код. Скан-код представляет собой идентификационный номер, присвоенный каждой клавише.
При поступлении скан-кода из порта вызывается прерывание клавиатуры, приоритетность которого выше всех остальных периферийных устройств. Процессор моментально прекращает обработку текущей операции и выполняет процедуру, анализирующую скан-код, который может содержать управляющий код, например: "Ctrl - Alt - Delete" (прерывание от клавиатуры должно обрабатываться на микро уровне).
Для того, чтобы ЦП успевал обрабатывать все нажатия клавиш, контроллер клавиатуры должен иметь буфер FIFO.
Рис. 9. Схема подключения монитора Рис. 10. Схема подключения клавиатуры
Схема начальной установки
При включении питания необходимо выполнить сброс секвенсора микрокоманд (установить адрес первой микрокоманды по нулевому адресу) путем подачи сигнала
на вход сброса
секвенсора. Также требуется удерживать сигнал сброса в течении 2-3 тактов (в это время процессор выполняет первую микрокоманду).

Рис. 12. Схема начальной установки
Разрабатываемый блок и алгоритм: блок преобразования виртуальных адресов в физические
Описание работы разрабатываемого блока
Кэш-память содержит модули ОЗУ (SRAM). В каждой ячейке имеются разряды для хранения кода Tag, который отображает старшую часть адреса ячейки-оригинала, разряды смещения и разряды-признаки (V - признак истинности информации в ячейке).
Если процессор установил на шине адрес некоторой ячейки ОЗУ и признак чтения, то дальнейшие события развиваются так.
1. С помощью разрядов адреса выбирается один из модулей и одна из ячеек кэш-памяти.
2. С помощью компаратора сравниваются старшие разряды поступившего из
процессора адреса с соответствующими разрядами, считанными из кэша. Если совпадение не зарегистрировано, то это означает, что копия затребованной ячейки ОЗУ в кэш-памяти отсутствует. Если произошло совпадение кодов на входах компаратора, то вырабатывается сигнал, разрешающий вывод содержимого регистра адреса на шину.
3. Если сигнал, вырабатываемый компаратором = 1, то процессор получает требуемые
данные, а признак R кэш-памяти устанавливается в 1 и свидетельствует о том, что было обращение к странице кэш-памяти. Эта информация используется в алгоритме замещения страниц для выбора той из них, которую можно наиболее безболезненно удалить, чтобы освободить место для новой.
4. Если старшие разряды адресов не совпадают, то разряд R остается без изменения, схема
управления осуществляет выбор из ОЗУ слова по адресу, определяемому определенными разрядами адреса. Считанное из ОЗУ слово должно быть записано в кэш-память. Адрес ячейки известен - он определяется разрядами кода, установленного процессором на шине. Чтобы определить, в какой блок следует записать считанное слово, анализируется разряд R выбранной ячейки кэш-памяти. В зависимости от его состояния определяется более устаревшая информация, которая затем заменяется новой, после чего состояние разряда R инвертируется. Если и в ОЗУ нет такой страницы, то генерируется сигнал сбоя и опрерационная система предпринимает действия по загрузке страницы с диска в ОП, которая сопровождается записью в соответствующую строку странично-сегментной таблицы (указывается номер сегмента и номер страницы, куда была загружена виртуальная страница). Далее страница копируется в кэш-память.
При записи код записывается в ячейку кэш-памяти. В разрядах Tag ячейки выбранного блока запоминается группа разрядов адреса, поступившего из процессора, признак V устанавливается в 1 и слово посылается в процессор. На этом операция чтения с попутным созданием новой копии завершается.
В исходном состоянии, после включения напряжения питания или после работы канала прямого доступа в память, все признаки V устанавливаются схемой управления в 0, при этом совпадения кодов на входах компараторов считаются недействительными.
Схема разрабатываемого блока

Рис. 13. Схема блока преобразования виртуальных адресов
Адресный кэш представляет собой сверхоперативную память небольшого размера, предназначенную для хранения информации, необходимой для преобразования виртуальных адресов в физические.
При каждом преобразовании номера виртуальной страницы в номер физической страницы результат заносится в TLB. Таким образом, в TLB попадают результаты нескольких последних операций трансляции адресов. При каждом обращении к ОП преобразователь адресов сначала производит поиск в памяти TLB номера требуемой виртуальной страницы. При попадании адрес соответствующей физической страницы берется из памяти данных TLB. Если в TLB зафиксирован промах, то процедура преобразования адресов производится с помощью страничной таблицы, после чего осуществляется запись новой пары «номер виртуальной страницы — номер физический страницы» в TLB.
Для сокращения аппаратных затрат будем применять кэш-память с прямым размещением. Адрес от процессора делится на три части. Младшие разряды (смещение) определяют положение слова в странице. Средние позволяют выбрать одну из строк кэш-памяти. Оставшиеся старшие образуют тег. По адресу строки производится считывание. Полученный тэг сравнивается со старшими разрядами адреса и, если есть совпадение и если признак присутствия страница в ОП установлен, вырабатывается сигнал hit выдачи информации. Структура кэш-памяти приведена на рис. 7.
Тег (28..21) | P (20) | Номер страницы (19..0) |
Рис. 8. Структура кеш-памяти.
Выберем размер кэша как 4Кх29.

Рис.9. Функциональная схема адресного кэша
I.2 Алгоритм работы TLB.
Сигнал ACE – разрешение работы адресного кэша. Если установлен низкий уровень, то на шину AB работает адресный выход процессора ADDR, где должен быть установлен физический адрес, если установлен высокий уровень – разрешен выход с кэша, а процессор устанавливает виртуальный адрес на вход ADDR.
С помощью разрядов 12-23 адреса выбирается одна из 4К ячеек кэш-памяти, в которой содержится тег, бит присутствия P и адрес физической страницы.
С помощью 8-разрядного компаратора сравниваются старшие разряды адреса поступившего из процессора по входу ADDR с тэгом из кэш-памяти. Если совпадение зарегистрировано, и бит присутствия P установлен, то в зависимости от сигнала ACE открывается выходной буфер, и полученный номер физической страницы и младшие разряды с ADDR попадают на адресную шину.
Если страница отсутствует в КЭШе или в ОП, то возбуждается сигнал прерывания ACPERR. Обработчику прерывания необходимо, если надо, подгрузить страницу в ОП и записать в кэш-память новые тэг (старшие разряды входа ADDR), физическую страницу (старшие разряды с шины DB) и бит присутствия P (со входа ACP). Запись осуществляется при низком уровне на входе #ACW.
В исходном состоянии, после включения напряжения питания, все признаки P устанавливаются схемой управления в 0.
Заключение
В процессе проделанной работы были получены навыки разработки структуры гипотетической микроЭВМ. Рассмотрен формат системных шин, взаимодействие между различными периферийными устройствами и ЦПУ: обработка прерываний, формирование физического адреса устройства. Предусмотрена возможность расширения оперативной памяти. Реализована сегментно-страничной организации ОП. В деталях рассмотрена работа блока преобразования виртуальных адресов в физические. Решена проблема взаимодействия основного процессорного элемента и сопроцессора плавающей точки.
Используемая литература:
1. , Орлов ЭВМ и систем: Учебник для вузов. – Спб.: Питер, 2004 – 668 с.: ил.
2. Угрюмов схемотехника. – Спб.: БХВ-Петербург, 2002. – 528 с.: ил.
3. Мик Дж., Брик Дж. Проектирование микропроцессорных устройств с разрядно – модульной организацией. В 2-х книгах: пер. с англ. – М.: Мир 1984. – 478 с.
4. Конспект лекций по предмету «Организация ЭВМ».
Лектор – , 2004.
5. Конспект лекций по предмету «Схемотехника».
Лектор – , 2003.
1. Разрабатываемый блок – КЭШ.
Кэш-память обычно реализуется как ассоциативная память, в которой для каждой единицы памяти хранятся дополнительные сведения, называемые тэгом или признаком. Когда в ассоциативную память подается адрес, с ним одновременно сравниваются все тэги. Если один из тэгов равен поданному адресу, производится обращение к той единице памяти, которая ассоциирована с тэгом. Такая ситуация называется попаданием в кэш-память (cache hit). Если же равенства не обнаруживается, кэш-память сигнализирует о промахе (cache miss). В случае промаха требуется выполнить цикл шины для обращения к основной памяти.
Для повышения эффективности внутренней кэш-памяти она распределяется блоками по 16 байт, называемых строками кэш-памяти (cache line). Обычно во внешней кэш-памяти не используются строки, меньшие строк внутренней кэш-памяти.
Кэш-память процессора не поддерживает частично заполненных строк, поэтому кэширование даже одного двойного слова требует считывания четырех двойных слов. Такой механизм привел бы к неэффективному использованию кэш-памяти, если бы не тот факт, что процессор редко обращается к произвольным ячейкам памяти. В течение короткого временного отрезка процессор обычно обращается к небольшому числу областей в памяти, например, сегменту кода или стека, но по многим соседним адресам в этих областях.
Для упрощения аппаратной реализации строки кэш-памяти можно отобразить только на выравненные 16-байтные блоки основной памяти. (Выравненный 16-байтный блок начинается по адресу, в котором четыре младших бита равны 0). Когда выбирается новая строка кэш-памяти, процессор загружает в нее блок из основной памяти. Такая операция называется заполнением строки кэш-памяти (cache line full). Распределенные строки кэш-памяти называются достоверными (valid), а нераспределенные строки - недостоверными (invalid).
Есть два основных способа реализации кэширования - со сквозной записью (write-through) и с обратной записью (write-back). При считывании оба способа кэширования работают аналогично. В операции записи кэширование со сквозной записью обновляет кэш-память и основную память, а кэширование с обратной записью обновляет только кэш-память. Кэширование с обратной записью модифицирует основную память, когда выполняются операции отложенной записи. Такие операции инициируются, когда необходимо освободить строки кэш-памяти, например при выборке новых строк в уже заполненной кэш-памяти. Операции обратной записи также инициируются механизмом поддержания согласованности кэш-памяти.
Внутренняя кэш-память процессора реализована по способу сквозной записи. Ее можно использовать с внешней кэш-памятью, в которой применяется любой способ записи или их комбинация.
Адресный cache преобразует линейный адрес в физический, поэтому он работает только с двадцатью старшими битами каждого из них; младшие 12 бит (образующие смещение в сегменте) в линейном и физических адресах одни и те же.
4.1 Структура кэш-памяти.
Кэш-память представляет собой четырехнаправленную ассоциативную по множеству память. Это значит, что блок данных из конкретной ячейки основной памяти может храниться в любой из четырех ячеек кэш-памяти. Ассоциация по четырем направлениям является компромисом между скоростью кэш-памяти с прямым отображением при попаданиях и высоким коэффициентом попаданий полностью ассоциативной кэш-памяти. Реализованная в процессоре кэш-память обеспечивает быстрый поиск данных и высокий процент попаданий.
Кэш-память состоит из трех блоков (рис.4): блока данных, блока тегов и блока достоверности и LRU.
В блоке данных имеются восемь множеств по четыре элемента в каждом. Элемент данных содержит 20 старших бит физического адреса. Их можно считать базовым адресом сегмента, в котором младшие 12 бит содержат нули.
Блок достоверности, атрибутов и тэгов. Тэг содержит старшие 17 бит линейного адреса. В операции преобразования адреса процессор использует биты 12, 13 и 14 для выбора одного из восьми множеств, а затем проверяет соответствие четырех тэгов этого множества старшим 17 битам линейного адреса. Если среди тэгов выбранного множества обнаруживается равенство и нужный бит достоверности содержит 1, то происходит преобразование линейного адреса путем замены его старших 20 бит на 20 бит элемента данных, где обнаружено равенство.
Для каждого множества предусмотрено три бита LRU; они следят за использованием данных в множестве и проверяются, когда требуется новый элемент, а ни один из элементов в множестве не является недостоверным. Применяется алгоритм замены псевдо-LRU.
|
4.2 Регистры проверки адресного кэш.
Для проверки предназначены два регистра, показанные на рисунке 5. Регистр TR6 служит регистром команды, а регистр TR7 - регистром данных. Обращение к этим регистрам обеспечивается с помощью команд MOV, которые определены в R - и P-режимах. Регистры проверки относятся к привилегированным ресурсам процессора; в P-режиме обращающиеся к ним команды MOV можно выполнить только на уровне привилегий 0, т. е. наиболее привилегированном. Попытка считать из регистров проверки или записать в них на другом уровне вызывает особый случай общей защиты.
|
Рис. 5
Регистр команды TR6 содержит команду и тэг адреса:
C - бит команды. Имеются две команды для проверки адресного кэш: запись в элемент и поиск в буфере. Чтобы записать в элемент cache необходимо передать в регистр TR6 двойное слово со сброшенным в 0 битом С. Чтобы осуществить поиск (считывание), в регистр TR6 передается двойное слово с установленным в 1 битом С. Операции в кэш инициируются записью в регистр TR6.
Линейный адрес - при записи для этого линейного адреса выделяется элемент кэш; остальное содержимое элемента определяется значением в регистре TR7 и значением, только что записанным в регистр TR6. При поиске производится опрос с этим значением; если соответствие (равенство) обнаружено в одном и только одном элементе, остальные поля регистров TR6 и TR7 загружаются из найденного элемента.
V (достоверность) - этот бит показывает, что элемент кэш содержит достоверные данные. Элементы кэш, в которые не загружены элементы таблиц страниц, имеют бит V=0. При записи в регистр CR3 все биты V сбрасываются, что эквивалентно опустошению или очистке кэш. После модификации таблиц страниц кэш необходимо очищать, так как иначе в преобразовании адреса могут участвовать устаревшие данные.
D, D# - бит D и его дополнение. U, U# - бит U/S и его дополнение.
W, W# - бит R/W и его дополнение.
Эти биты доступны в прямой и инверсной форме для большей гибкости при поиске в кэш. Смысл этих пар бит приведен в таблице
Бит | Бит # | Влияние на поиск | Влияние на запись |
0 | 0 | Не сравнивать | Не определено |
0 | 1 | Сравнивать, если бит 0 | Сбросить бит |
1 | 0 | Сравнивать, если бит 1 | Установить бит |
1 | 1 | Сравнивать, если бит 0 или 1 | Не определено |
Регистр данных TR7 содержит данные, считанные из кэш, или подлежащие записи в кэш.
Физический адрес - это поле данных кэш. При записи это значение помещается в элемент кэш, выделенный линейному адресу из регистра TR6. При поиске (считывании) поле данных (физический адрес) из кэш в это поле.
PCD - соответствует биту PCD элемента таблицы страниц.
PWT - соответствует биту PWT элемента таблицы страниц.
LRU - при считывании содержит биты, используемые в алгоритме псевдо-LRU замены. Сообщаются значения этих бит до поиска в кэш. Поиск с попаданием и запись в кэш могут изменить эти биты.
PL - при записи в кэш установленный в 1 бит PL вызывает использование поля REP регистра TR7 для выбора того, в какой из четырех блоков (направлений) кэш производится загрузка. Если бит PL=0, для выбора блока применяется внутренний указатель. Управление этим указателем осуществляется по алгоритму псевдо-LRU. При поиске в кэш (считывании) бит PL показывает, возникло ли при считывании попадание (PL=1) или промах (PL=0).
REP - при записи в cache определяет, в какой из четырех блоков (направлений) производится запись. При считывании из кэш с битом PL=1 поле REP сообщает, в каком из четырех ассоциативных блоков найден тэг; если бит PL=0, содержимое поля REP не определено.
4.3 Операции проверки.
Для записи в элемент кэш производятся следующие операции:
Передать в регистр TR7 двойное слово, которое содержит требуемый физический адрес, а также значения PCD, PWT, PL и REP. Если бит PL=1, поле REP выбирает, в который помещается элемент. Если PL=0, применяется внутренний указатель.
Передать в регистр TR6 двойное слово, которое содержит соответствующий линейный адрес и значения бит V, D, U, и W. Бит C должен быть сброшен в 0.
Не разрешается записывать в буфер дублирующие тэги, так как результаты окажутся неопределенными.
Для поиска (считывания) элемента кэш выполняются такие операции:
Передать в регистр TR6 двойное слово, содержащее нужные линейный адрес и атрибуты. Бит С должен быть установлен в 1.
Считать из регистра TR7. Если бит PL=1, то остальные поля регистра содержат информацию из элемента cache. При нулевом состоянии бита PL остальные поля регистра TR7, кроме поля LRU, не определены.
При проверке бит V действует как дополнительный бит адреса. Обычно для запроса поиска бит V должен быть установлен в 1, поэтому неинициализированные тэги не сравниваются. Поиски с битом V=0 оказываются непредсказуемыми, если имеются неинициализированные тэги.
Память
Рассмотрим подробнее принцип формирования физического адреса для основной памяти:

Рис. 6. Схема преобразования виртуального адреса
Сегментные и страничные таблицы находятся в ОП, а в программной таблице нет необходимости, так как для каждой активной в данный момент программы управляющий регистр должен хранить начальный адрес и длину соответствующей сегментной таблицы, а также номер программы.
Процесс преобразования адресов представлен на рис. 6. В общем случае преобразование адреса происходит в два этапа и требует двух дополнительных обращений к ОП (минус этого метода):
1. Начальный адрес сегментной таблицы, установленный в управляющем регистре, суммируется с номером сегмента из виртуального адреса. В результате образуется адрес, по которому из ОП считывается строка сегментной таблицы, содержащая адрес начала и длину страничной таблицы для данного сегмента.
2. Полученный адрес начала страничной таблицы суммируется с номером страницы из виртуального адреса, при этом образуется адрес, по которому из ОП считывается строка страничной таблицы, содержащая номер искомой физической страницы. Если эта страница оказывается в ОП, то в старшие разряды регистра физического адреса передается ее номер, а в младшие заносится номер байта из регистра виртуального адреса. Формирование физического адреса на этом завершается.
Выполняется запрошенное программой обращение к ОП.
Кэш
Адресный кэш представляет собой сверхоперативную память небольшого размера, предназначенную для хранения информации, необходимой для преобразования виртуальных адресов в физические. Как уже отмечалось ранее, при сегментной организации памяти, процедура обращения к памяти состоит в преобразовании виртуального адреса в физический при помощи (с использованием) таблицы сегментов. И каждое такое обращение к памяти предполагает участие сегментной таблицы, которая может располагаться в памяти, что является нецелесообразным (увеличивается время обращения). Для ускорения преобразования адресов может быть использована сверхоперативная память, куда и предается из ОП сегментная таблица активной программы. Это существенно ускоряет процедуру обращения ЦП к памяти. Таким образом в ЭВМ и может быть использован адресный КЭШ.
Выберем размер кэша как 4Кх29, а адресное пространство 220=1М слово.
![]() |
|
|
|
Рис.5. Основные информационные цепи считывания данных из кэш-памяти
Кэш-память содержит блок ОЗУ (SRAM). В блоке имеются разряды для хранения кода Tag, который отображает старшую часть адреса ячейки-оригинала, разряды A, в которых содержится 20-разрядов адреса ОЗУ, и разряд V - признак истинности информации в ячейке блока.
Когда процессор установил виртуальный адрес:
1. С помощью разрядов 20-31 адреса выбирается одна из 4К ячеек кэш-памяти, в которой содержится начальный физический адрес сегмента. На выходы накопителя кэш-памяти поступает информация, а именно коды Tag, биты V, а также данные A.
2. С помощью 8-разрядного компаратора сравниваются старшие разряды адреса поступившего из процессора с соответствующими разрядами, считанными из блока. Если совпадение не зарегистрировано, то это означает, что затребованный адрес сегмента в кэш-памяти отсутствует. Если произошло совпадение кодов, то вырабатывается сигнал Hit=1.
3. Данные A (начальный физический адрес сегмента) поступают на сумматор, где они складываются со смещением в сегменте (разряды 0-20 в виртуальном адресе). На выходе получается физический адрес ячейки в ОЗУ.
4. Если Hit=0, то схема управления осуществляет выбор из ОЗУ из сегментной таблицы начальный физический адрес запрашиваемого сегмента. Считанное из ОЗУ слово должно быть записано в кэш-память. Адрес сегментной таблицы может быть фиксирован. Чтобы определить, в какой блок следует записать считанное слово, анализируется разряд V всех ячеек кэш-памяти. В зависимости от его состояния определяется более устаревшая информация, которая затем заменяется новой.
При записи 20-разрядный начальный физический адрес сегмента записывается в разряды A соответствующей ячейки. В разрядах Tag запоминается группа разрядов 32-39 адреса, поступившего из процессора, признак V устанавливается в 1.
В исходном состоянии, после включения напряжения питания, все признаки V устанавливаются схемой управления в 0.
Процесс обращения ЦП к кэшу осуществляется следующим образом. После выставления виртуального адреса на шину, процессор подает сигнал WORK, говорящий кэшу о том, что можно начинать поиск. После чего процессор тестирует сигнал HIT, выставляемый кэшем в случае удачного обращения. Если сигнал HIT активен, то ЦП начинает цикл обращения к памяти. В случае если требуемого дескриптора в кэше нет, то процессор обращается непосредственно к таблице дескрипторов в памяти через базовые регистры. После чего искомый дескриптор заносится в кэш на место дескриптора, к которому обращение было раньше всех (алгоритм замещения LRU). Для определения редко используемого дескриптора, в кэше каждому блоку соответствует бит активности. После того, как требуемый дескриптор занесен в кэш, процессор повторяет команду, вызвавшую неудачное обращение к кэшу.
Адресный кэш позволяет значительно ускорить процедуру обращения ЦП к памяти, так как в случае удачного обращения к кэшу нет необходимости обращаться к таблице дескрипторов. В случае передачи данных или работы с периферийными устройствами преобразования не происходит.






