- •Пояснительная записка
- •Введение
- •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.2. Диапазон и погрешность представления чисел
Диапазон для чисел с фиксированной точкой:
от -231 до 231-1
Диапазон для чисел с плавающей точкой:
от -(1-2-23)2q до (1-2-23)2q
Максимальная абсолютная погрешность для чисел с фиксированной точкой постоянна и равна половине младшего разряда:
2-32
Максимальная абсолютная погрешность для чисел с плавающей точкой:
2-23 *2q, где q=27-1.
1.4.3. Форматы команд, данных и слова состояния процессора
Формат команд
Все команды, используемые в данном процессоре, имеют следующий формат:
31 27 |
26 25 |
24 16 |
15 8 |
7 0 |
КОП |
СА |
|
|
|
Imm
КОП - код операции
СА - способ адресации
Imm – непосредственное значение. Кодируется в команде, которая используется как число при непосредственной адресации или как адрес памяти при прямой адресации. Под Imm отводится 25 бит. 225 = 33554432 байт = 32 МБ. Это является достаточным для организации прямой адресации 16 МБ основной памяти.
Формат обрабатываемых данных:
Структура чисел с фиксированной точкой:
31 30 0
Знак |
Число |
Числа с плавающей точкой:
31 30 24 23 22 0
Знак |
Порядок |
Знак |
Мантисса |
В разрабатываемой ЭВМ возможны следующие способы адресации:
1. Прямая.
СА = 00, 01 24 0
Адрес |
В Imm адресный код, который прямо указывает на номер ячейки памяти, к которой происходит обращение.
2. Непосредственная.
СА = 10 24 0
Операнд |
В Imm в адресном поле непосредственно содержится операнд. Используется при выполнении арифметических операций, операций сравнения.
3. Косвенная.
СА = 11 24 0
REG |
В Imm адресный код команды в этом случае содержит нули.
Формат состояния процессора, регистр флагов, FR:
8 5 |
4 |
3 |
2 |
1 |
0 |
PID |
PF |
IF |
OF |
ZF |
SF |
Флаги анализируются и устанавливаются в ходе выполнения программы.
PID – номер текущего процесса;
PF – флаг режима работы процессора:
0 – системный режим;
1 - пользовательский режим.
IF – флаг обработки запросов на прерывание от внешних устройств:
1 – прерывания по входу INTR разрешены, выполняется проверка входа INTR;
0 – вход INTR не контролируется процессором.
OF – флаг переполнения. Отражает переполнение при сложении и вычитании знаковых чисел:
1 – результат не помещается в регистре (переполнение);
0 – результат заносится в регистре данных.
ZF – флаг нуля:
1 – результат нулевой;
0 – результат ненулевой.
SF – знак числа (итога вычисления). Копия знакового бита числа:
1 – соответствует отрицательному результату;
0 – соответствует положительному.
1.4.4. Организация виртуальной памяти
Пользователю предоставляется адресное пространство, соответствующее всему объему оперативной памяти. Логическое адресное пространство, получаемое при использовании сегментного и страничного способов адресации, называется виртуальным адресным пространством
В данном курсовом проекте используется страничный способ организации виртуальной памяти, заключающийся в том, что все множество адресов разделяются на блоки, или страницы размерностью 2n, с которыми в дальнейшем происходит работа.
Размер виртуального адресного пространства составляет 4Гбайт (4294967296 байт), поскольку разрядность 32 бит, а размер страницы составляет 8 Кбайт (8192 байт).
Отличие страничной адресации от сегментной состоит в том, что при страничном способе размер страницы зафиксирован независимо от объема выполняемых программ. При сегментной адресации вся память разбивается на некоторые сегменты, которые имеют различную длину, и эта длина определяется объемом программы и данных.
Так как предусмотрено два режима работы машины, виртуальное адресное пространство делится на два равных региона: SYS – системный и USER – пользовательский, на каждый выделяется 2Гбайт (2147483648 байт).
При простой страничной организации виртуальный адрес включает в себя номер страницы и смещение внутри нее.
Формат указателя виртуального адреса представлен в виде трех полей:
- в первом поле задается тип адресного пространства (SYS или USER)
- во втором поле указывается номер виртуальной страницы
- в третьем поле задается смещение описываемого объекта, относительно начала страницы.
31 |
30 13 |
12 0 |
R |
PgNum |
Offset |
R – номер региона
0 – системный регион;
1 - пользовательский регион.
PgNum – номер страницы
Offset – смещение
Так как размер виртуальной страницы 8192 байта, для записи смещения требуется 13 бит.
Формат указателя физического адреса представляется двумя полями, поля смещения (0-12) и поля номера страничного кадра (13-30).
Для предотвращения воздействия одних пользовательских программ на другие, каждой программе выделяется индивидуальное адресное пространство для выполнения и при прерывании сохраняется отдельный контекст процесса. В данном случае под процессом и программой понимается один объект.
В начале кванта времени предоставления процессора для выполнения процесса осуществляется переключение контекста, которое заключается в том, что контекст процессора сохраняется в заданных регистрах и процессор переходит к выполнению новой программы. По окончании кванта времени состояние процессора восстанавливается, и управление возвращается прерванному процессу.
Местоположение и размер, начальный адрес таблиц задаются в регистрах, которые обозначены как:
BRGT – регистр базового начального адреса глобальной таблицы страниц;
BRLT – регистр базового начального адреса локальной таблицы страниц.
В строке таблицы описания страниц, в соответствующих полях, указываются признаки, характеризующие страницу.
20 3 |
2 |
1 |
0 |
PgNum |
P |
W |
M |
Pgnum – номер страницы кадра;
P – признак размещения описания таблицы в ОЗУ:
1- находится в ОП,
0- находится на внешнем носителе (жесткий диск).
W – признак прав доступа к странице:
1 – страница доступна для записи,
0 – только для чтения.
M – признак модификации страницы
1 – в ходе выполнения программы страница была изменена,
0 – осталась неизменной.
Состав контекста при переключении между процессами:
IP – указатель адреса следующей команды;
FLAGS –регистр флагов;
Rr – источник данных;
Rd – приемник данных;
Акк – аккумулятор
GT – регистр начального адреса глобальной таблицы страниц;
LT – регистр начального адреса локальной таблицы страниц;
TOS – таблица описания страниц.
REG – регистр косвенной адресации;
SP – указатель на вершину стека;
Для сохранения контекста используется 10 регистров при выделении 4 байт на каждый. Общий объем памяти, выделяемый для сохранения всех регистров одного процесса, получается 40 байт (размер контекста одного процесса).
Разрядность адреса составляет 32 бит. Так как размер виртуальной страницы по условиям проекта 8192 байта, а для записи смещения требуется 13 бит, то номер страницы занимает 18 бит. Следовательно, число записей в одной таблице описания страниц равно 218 = 262144. Размер одной строки 3 байта (с 0 по 20 бит). Общий объем занимаемой памяти одной таблицей описания страниц равен:
262144*3 байта = 786432 байт = 768 КБ.
Определим, что на процесс будет выделяться 1МБ, в таком случае число страниц памяти, выделяемых процессу, будет равно 1МБ/8КБ = 128 страниц. И размер одной таблицы GT или LT будет равен 128 * 3 байт = 384 байт
Общий объем памяти необходимый обеспечить для страничной организации виртуальной памяти при наличии в операционной системе восьми пользовательских и одного системного процесса:
РазмерTOS * ЧислоPROC + РазмерKONT * ЧислоPROC + GT + LT*8
768 КБ * 9 + 40 байт * 9 + 384 байт +384 байт * 8 = 6912 КБ + 3816 байт ≈
≈ 6915,7266 КБ ≈ 6.75 Мб