- •Пояснительная записка
- •Введение
- •1. Техническое задание
- •1.1. Область применения
- •1.2. Индивидуальное задание и литературные источники
- •1.3. Метод конвейеризации
- •1.4. Технические требования
- •1.4.1. Команды эвм
- •1.4.2. Диапазон и погрешность представления чисел
- •1.4.3. Форматы команд, данных и слова состояния процессора
- •1.4.4. Организация виртуальной памяти
- •1.4.5. Способы организации ввода/вывода информации
- •1.4.6. Способ оценки производительности эвм
- •1.4.7. Приращение производительности эвм
- •1.5. Способ тестирования эвм
- •1.6. Взаимодействие программ пользователя с внешними устройствами
- •1.7. Демонстрация возможностей взаимодействия cpu с внешними устройствами
- •1.8. Интерфейс Win32 api
- •2. Структура и алгоритм функционирования эвм классической модели
- •2.1. Вводные замечания
- •2.2. Функциональная модель эвм
- •2.3. Алгоритм функционирования эвм
- •2.4. Средства управления прерываниями
- •2.5. Организация виртуальной памяти
- •2.6. Оценка производительности эвм
- •3. Модификация созданной эвм
- •3.1. Возможности повышения производительности эвм
- •3.2. Организация конвейерной обработки команд
- •Inc 23 такта
- •Iret 12 тактов
- •3.3. Расчет прироста производительности эвм
- •4. Тестовая задача
- •4.1. Алгоритм и программа для тестирования эвм
- •4.2. Моделирование процесса выполнения программы
- •5. Программирование ввода и вывода
- •5.1. Пример использования системных функций для ввода
- •5.2. Общие сведения об интерфейсе Win32 api
- •Заключение
1.4.5. Способы организации ввода/вывода информации
Существует 3 способа организации системы ввода/вывода информации.
1. Прямой доступ к памяти.
Используется канал прямого доступа к памяти, по которому массивы данных передаются непосредственно между периферийным устройством и ОЗУ, минуя микропроцессор. Это позволяет достичь наибольшей скорости передачи, но требует специального контроллера прямого доступа к памяти, который берет на себя управление данным процессом.
2. Использование прерываний.
Устройство сообщает о своей готовности с помощью прерывания. Сохраняется текущее состояние процессора и производится прерывание. По окончании передачи данных состояние процессора восстанавливается, и управление возвращается основной программе. В данном случае процессом передачи данных управляет сам процессор.
3. Программной проверки готовности.
Программа циклически опрашивает порт ввода/вывода, когда флаг готовности принимает значение «1» - производится обмен с внешним устройством.
В проектируемой ЭВМ предполагается использовать программную проверку готовности и ввод/вывод по прерыванию.
1.4.6. Способ оценки производительности эвм
Для оценки производительности работы ЭВМ необходимо вычислить время, затрачиваемое на выполнение некоторой обобщенной команды. Для вычисления величины времени выполнения обобщенной команды используется формула, определяющая величину взвешенного арифметического среднего, которая позволяет учесть частоту использования каждой команды в заданной смеси команд.
X=,где
Xi – время (такты) выполнения команды i-го типа в заданной смеси команд;
Ci – дробная величина (доля). Характеризует частоту использования команды i-го типа в заданной смеси команд. При этом .
1.4.7. Приращение производительности эвм
В проекте для оптимизации работы ЭВМ будет использоваться метод конвейерной обработки команд: в каждый момент времени на конвейерном процессоре обрабатывается несколько команд, причем все они находятся на разных стадиях обработки. В результате такой модификации первоначально спроектированной ЭВМ ожидается прирост производительности на 10 %.
1.5. Способ тестирования эвм
Тестирование создаваемой ЭВМ будет осуществлено методом моделирования процесса выполнения программы. Моделирование заключается в описании последовательности микроопераций, выполняемых функциональными блоками ЭВМ при интерпретации машинных инструкций, составляющих объектную программу и результатов, получаемых с помощью микроопераций. А также в описании последовательности проверок признаков, характеризующих результат микроопераций и позволяющих осуществлять выбор очередной микрооперации. Объектная программа создается для решения следующей задачи:
«В исходном линейном массиве из N чисел требуется выделить элементы массива, имеющие четное значение суммы двоичных цифр, и переместить выделенные числа в новый массив».
1.6. Взаимодействие программ пользователя с внешними устройствами
Нужно обеспечить взаимодействие программ пользователя с внешними устройствами, используя функции BIOS, DOS, язык C.
Программы пользователя взаимодействуют с внешними устройствами с помощью специальных функций языка высокого уровня (Си). В программе используются стандартные функции ввода-вывода для работы с клавиатурой:
Int getch (void) – ввод символа без буферизации и без отображения
Int getche (void) – ввод символа без буферизации, но с отображением
Int getchar (void) – ввод символа с буферизацией и с отображением
Int scanf (const char*format, …) – ввод форматизированных данных из стандартного входного потока
Int printf (const char*format, …) – форматированный вывод
Int putchar (char c) – вывод символа с буферизации и с отображением
Int bioskey (int cmd) – ввод двухбайтового кода символа без буферизации и отображения
Int86(0x21, &in, &out) – вызов программного прерывания DOS
Int86(0x10, &in, &out) – вызов программного прерывания BIOS