- •Пояснительная записка к курсовому проекту по дисциплине
- •Введение
- •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.
- •Заключение.
3.3. Расчет прироста производительности эвм
18.85 - 15.25 = 3.6
1% - 0.1885
X% - 3.6
X=3.6/0.1885=19.09 (%)
Производительность повысилась на 19%
4. Описание тестовой задачи
4.1. Описание программы (исходной и объектной)
Задание: Исходно имеется массив Nдвоичных чисел. Требуется выделить элементы массива, обладающие следующими свойствами: двоичные числа массива меньше 7, но больше 3. Обнулить выделенные элементы и посчитать количество нулей.
Адрес ОЗУ |
Обозначение команды на Ассемблере |
Объектный код |
Комментарии |
0100 |
READ [Iadd] |
000100 10 00000100 00000000 00001100 |
Читаем текущий Эл-т массива |
0102 |
JZ 0112 |
000010 00 00000001 00000001 00000010 |
Если=0, перех. к увел. Кол-ва нулей |
0104 |
CMD ogr1 |
011000 00 00000100 00000001 00000000 |
Сравниваем с 3 |
0106 |
JZ 0116 |
000010 00 00000001 00000001 00000110 |
Если ZF=0 (Эл-т массива=3)переходим к след. эл-ту |
0108 |
JS 0112 |
000001 00 00000001 00000001 00000010 |
Если SF=0 (Эл-т массива>3) переходим дальше |
010A |
JMP 0116 |
000101 00 00000001 00000001 00000110 |
Иначе – переходим к след. эл-ту |
010C |
CMP ogr2 |
000111 00 00000100 00000001 00000010 |
Сравниваем с 7 |
010E |
JZ 0116 |
000010 00 00000001 00000001 00000110 |
Если ZF=0 (Эл-т массива=7)переходим к след. эл-ту |
0110 |
JS 0112 |
000010 00 00000001 00000001 00000010 |
Если SF=0 (Эл-т массива<7) переходим к увеличению кол-ва нулей |
0112 |
JMP 0116 |
000010 00 00000001 00000001 00000110 |
Иначе – переходим к след. эл-ту |
0114 |
WR @0 |
000011 01 00000000 00000000 00000000 |
Записываем в тек. эл-т 0 |
0116 |
UVE con |
011100 00 00000100 00000001 00000110 |
увел. кол-ва нулей |
0118 |
UME Iadd |
011110 00 00000100 00000000 00001110 |
Уменьшаем тек. Адрес на 1 |
011A |
UME Iadd |
011110 00 00000100 00000000 00001110 |
Уменьшаем тек. Адрес на 1 |
011C |
UME I |
011110 00 00000100 00000001 00000010 |
Уменьшаем счётчик на 1 |
011E |
JZ 0100 |
000010 00 00000001 00000000 00000000 |
Если счётчик =0, конец программы |
0120 |
HLT |
000000 00 00000000 00000000 00000000 |
Остановка процесса |
0400 |
A0 |
Элементы массива |
6 |
0402 |
A1 |
25 | |
0404 |
A2 |
3 | |
0406 |
A3 |
8 | |
0408 |
A4 |
7 | |
040A |
A5 |
19 | |
040C |
A6 |
1 | |
040E |
Iadd |
Текущий адрес(16-ричный) |
040C |
0410 |
Ogr1 |
Ограничение снизу |
3 |
0412 |
Ogr2 |
Ограничение сверху |
7 |
0412 |
I |
счётчик |
7 |
0414 |
col |
кол-во элементов |
7 |
0416 |
con |
Кол-во нулей |
0 |
Моделирование процесса выполнения программы
Моделирование заключается в описании последовательности микроопераций, выполняемых функциональными блоками ЭВМ, при интерпретации инструкций ЭВМ, составляющих объектную программу и результатов, получаемых с помощью этих микроопераций. А также в описании последовательности проверок признаков, характеризующих результат действия микроопераций и позволяющих осуществлять выбор очерёдности микроопераций. Моделированию подвергаются следующие инструкции: READ [Iadd], JZ.
READ[Iadd]:
Проверка Tп. Тп=1
Проверка условия INTR=1. Прерывание не произошло (INTR=0)
Выборка очередной команды из основной памяти
Запись адреса текущей инструкции в регистр адреса (RA=IP)
Запрос содержимого ячейки из памяти (сигналы V3 и V4)
Ожидание готовности памяти (проверка условия ReadyRAM=1)
Копирование инструкции из регистра RD в RI
Проверка кода операции. Код выбранной операции соответствует коду операции READ
Вычисление исполнительного адреса операнда в основной памяти
Проверка типа адресации. Способ адресации – косвенная.
Содержимое регистра R0 записывается в регистр адреса
Выборка операнда из памяти
Проверка необходимости выборки (при косвенной адресации выборка необходима)
Запрос содержимого ячейки из памяти (сигналы V3 и V4)
Ожидание готовности памяти (проверка условия ReadyRAM=1)
Перемещение операнда из RD в аккумулятор
Увеличение значения регистра адреса команды
JZ (переход выполняется):
Проверка Tп. Тп=1
Проверка условия INTR= =1. Прерывание не произошло (INTR=0)
Выборка очередной команды из основной памяти
Запись адреса текущей инструкции в регистр адреса (RA=IP)
Запрос содержимого ячейки из памяти (сигналы V3 и V4)
Ожидание готовности памяти (проверка условия ReadyRAM=1)
Копирование инструкции из регистра RD в RI
Проверка кода операции. Код выбранной операции соответствует коду операции JZ
Проверка флага нуля (Z). Он равен единице
Запись в регистр IP нового адреса команды
JZ (переход не выполняется):
Проверка Tп. Тп=1
Проверка условия INTR= =1. Прерывание не произошло (INTR=0)
Выборка очередной команды из основной памяти
Запись адреса текущей инструкции в регистр адреса (RA=IP)
Запрос содержимого ячейки из памяти (сигналы V3 и V4)
Ожидание готовности памяти (проверка условия ReadyRAM=1)
Копирование инструкции из регистра RD в RI
Проверка кода операции. Код выбранной операции соответствует коду операции JZ
Проверка флага нуля (Z). Он равен нулю
Содержимое регистра IP увеличивается на 4