- •Пояснительная записка к курсовому проекту по дисциплине
- •Введение
- •1. Техническое задание
- •1.1. Область применения
- •1.2. Индивидуальное задание и литературные источники
- •1.3. Метод конвейеризации
- •1.4. Технические требования
- •1.4.1. Перечень команд
- •1.4.2. Диапазон и максимальная абсолютная погрешность данных
- •1.4.5. Способы организации ввода/вывода информации
- •1.4.6. Способ оценки производительности эвм
- •1.4.7. Требуемое значение приращения производительности эвм, которое должно быть получено в результате модификации первоначально созданной эвм
- •1.5. Способ тестирования создаваемой эвм
- •1.6. Способ взаимодействия программ пользователя с внешними устройствами
- •1.7. Задача и требования к прикладной программе, которая иллюстрирует возможности взаимодействия с внешними устройствами по вводу и выводу
- •1.8. Интерфейс Win32 api
- •2. Структура и алгоритм функционирования эвм классической модели
- •2.1. Вводные замечания
- •2.2. Функциональная модель эвм
- •2.3. Алгоритм функционирования эвм
- •2.4. Средства управления прерываниями
- •2.5. Организация виртуальной памяти
- •2.6. Оценка производительности эвм
- •3. Модификация созданной эвм
- •3.1. Возможности повышения производительности эвм
- •3.2. Организация конвейерной обработки команд
- •3.3. Расчет прироста производительности эвм
- •4. Описание тестовой задачи
- •4.1. Описание программы (исходной и объектной)
- •Моделирование процесса выполнения программы
- •5. Программирование ввода и вывода.
- •5.1. Пример использования для ввода/вывода системных функций.
- •5.2 Общие сведенья об интерфейсе Win32 api.
- •Заключение.
2.4. Средства управления прерываниями
Каждый раз перед выполнением очередной команды CPU производит проверку наличия запроса прерывания INTR. При наличии запроса прерывания останавливается выполнение основной программы и происходит переход к выше приведенному алгоритму. Выясняется, разрешены ли прерывания (анализ состояния разряда IF регистра флагов). Если разрешены, то процессором выдается сигнал INTA в контроллер прерываний для получения номера вектора прерывания. В стеке сохраняется содержимое регистра флагов и счетчика команд, чтобы был возможен возврат к выполнению основной программы. Затем выставляется запрет прерываний (IF=0). По номеру прерывания в таблице векторов определяется адрес обработчика прерывания. По этому адресу находится начало программы обработки прерывания. По окончании работы этой программы из стека извлекается содержимое регистра флагов и счетчика команд, происходит возврат к основной программе.
Контроллер необходим для слежения за соблюдением приоритетов прерываний, а также для присвоения номера каждой линии запроса.
Контроллер прерываний содержит регистр номера прерывания. При поступлении запроса на прерывание контроллер сравнивает приоритет текущего выполняемого кода и отбрасывает запрос на прерывание с меньшим или равным приоритетом. Старшая часть номера запроса может быть задана программно.
Алгоритм функционирования CPU при обработке запроса прерывания
Да
2.5. Организация виртуальной памяти
Применение виртуальной памяти позволяет не задумываться, в какой области памяти находится программа; выяснить, где хранится та или иная часть программы: в оперативной памяти или внешнем запоминающем устройстве.
В случае использования страничной организации виртуальной памяти преобразование виртуального адреса в физический происходит следующим образом. Виртуальный адрес, сгенерированный программой, разбивается на две части: номер страницы и смещение. В таблице страниц ищется запись, соответствующая нужной странице. Если страница присутствует в оперативной памяти, ее физический адрес берется из таблицы. Если же страница в оперативной памяти отсутствует, то генерируется исключение, обработчик которого определяет местонахождение страницы во внешней памяти и загружает её, возможно вытесняя при этом одну из находящихся в ОЗУ. Процессор не может определить положение нужной страницы во внешней памяти, эта задача лежит на обработчике прерывания. При замещении страницы в оперативной памяти необходимо проверить, не модифицирована ли она, и при необходимости сохранить замещаемую страницу в файле подкачки.
Разрядность адреса составляет 32 бит. Величина страницы принимается равной 8Кбайт, т.е. смещение задается в поле длиной 13бит. Номер страницы занимает 19ит, следовательно, число записей в ТС равно 219=524288 (2 МБ)
2.6. Оценка производительности эвм
Определим время выполнения команд в классической модели и пути уменьшения этого времени. Для оценки времени выполнения команд в качестве единицы времени используется такт.
Таблица распределения времени:
Название ступени (действия на ГСА) |
Тип команды | ||||||||
ADD |
WRITE |
JMP |
JS (да/нет) |
CMP |
READ |
MOVREG |
PUSH |
POP | |
IFETCH (выборка команды) |
8 |
8 |
8 |
8/8 |
8 |
8 |
8 |
8 |
8 |
DECODE (декодирование команды) |
1 |
1 |
1 |
1/1 |
1 |
1 |
1 |
1 |
1 |
TEST (проверка условия) |
- |
- |
- |
1/1 |
- |
- |
- |
- |
- |
EADDR (создание исполнительного адреса) |
3 |
3 |
3 |
3/0 |
3 |
6 |
-
|
-
|
-
|
OFETCH (выборка операнда) |
4 |
- |
4 |
4/0 |
4 |
4 |
- |
- |
4 |
EXEC (исполнение) |
3+1 |
1 |
- |
- |
3 |
1 |
1 |
1+1 |
1+1 |
CHANGE IP (изменить IP) |
- |
- |
1 |
1/0 |
- |
- |
- |
- |
- |
STORE (сохранение) |
- |
4 |
- |
- |
- |
- |
- |
4 |
- |
ENDOP (завершение) |
1 |
1 |
0 |
0/1 |
1 |
1 |
1 |
1 |
1 |
Итого: |
21 |
18 |
17 |
18/11 |
20 |
18 |
11 |
16 |
16 |
Доли затрат времени для каждой команды:
-
Тип команд
Доля общего времени
выполнения, %
ADD
30
READ
20
WRITE
10
JMP
3
Условный переход выполняемый
5
Условный переход невыполняемый
3
INT
3
PUSH
4
POP
4
CALL
4
SUB
6
CMP
8
=100
Для оценки производительности работы ЭВМ определим среднее время, затрачиваемое на выполнение одной команды. При расчете среднего времени используется не арифметическое среднее, а взвешенное арифметическое среднее. При вычислении этой величины для каждой команды задается множитель, учитывающий частоту использования команды. Этот множитель, для каждого вида команд, приведён в п. 1.4.6.
0.34*21=7.14 (для ADD)
0.1*18=1.8 (для WRITE)
0.21*18= 3.78 (для READ)
0.06*18= 1.08 (Условный переход выполняющийся)
0.02*11= 0.22 (Условный переход не выполняющийся)
0.08*20= 1.6 (для CMP)
0.03*17= 0.51 (для JMP)
0.06*11= 0.66 (для MOVREG)
0.03*26= 0.78 (для INT)
0.04*16= 0.64 (для PUSH)
0.04*16= 0.64 (для POP)
_____________________________
Итого: 18.85 такта.
В среднем ≈ 19 тактов требуется для выполнения одной команды.
Если частота генератора тактовых импульсов будет 19 МГц, то производительность составит 1 миллион операций в секунду.