- •Пояснительная записка
- •1.4.2. Диапазон и погрешность представления чисел
- •1.4.3. Форматы команд, данных и слова состояния процессора
- •1.4.4. Организация виртуальной памяти
- •1.4.5. Способы организации ввода-вывода информации
- •1.4.6. Способ оценки производительности эвм
- •1.4.7. Приращение производительности эвм
- •2.2. Функциональная модель эвм
- •2.3. Алгоритм функционирования эвм
- •2.4. Средства управления прерываниями
- •2.5. Организация виртуальной памяти
- •Алгоритм работы виртуальной памяти
- •2.6. Оценка производительности эвм
- •3. Модификация созданной эвм
- •3.1. Возможности повышения производительности эвм
- •3.2. Организация конвейерной обработки команд
- •3.3. Расчет прироста производительности эвм
- •4. Тестовая задача
- •4.1. Алгоритм и программа для тестирования эвм
- •4.2. Моделирование процесса выполнения программы
- •5. Программирование ввода и вывода
- •5.1. Пример использования системных функций для ввода
- •5.2. Общие сведения об интерфейсе Win32 api
3.2. Организация конвейерной обработки команд
При конвейеризации очередность команд, заданная программистом при написании программы, нарушается. Исполнения команд (текущей i-й и i+1-й) перекрываются во времени и возникают зависимости операций, запускаемых i+1 и i+2 командами от результатов i-й команды. Эти зависимости вызывают помехи для выполнения команд. При конвейеризации необходимо обнаружить и устранить помехи.
С целью анализа возможности перекрытия команд целесообразно создать таблицу занятости для моделирования бесконвейерной структуры ЭВМ, используемой для выполнения команд. В структуре ЭВМ используется не расслоенная память RAM и бесконвейерное CPU. Когда функционирует память, то CPU простаивает и наоборот. В таблице занятости будет две ступени: RAM и CPU.
t
RAM
CPU
DECODE ENDOP
ADD 24 такта EADDR EXEC
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
X |
X |
|
|
|
X |
X |
|
|
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
X |
|
|
X |
X |
X |
|
|
X |
X |
X |
X |
X |
OFETCH
WR21 такт
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
X |
X |
|
|
|
|
X |
X |
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
X |
|
|
X |
X |
X |
X |
|
|
X |
JMP 11 тактов
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
JSпереход выполняется 12 тактов
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
X |
JSпереход не выполняется 11 тактов
X |
X |
X |
X |
X |
X |
X |
|
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
READ 21 такт
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
X |
X |
|
|
|
X |
X |
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
X |
|
|
X |
X |
X |
|
|
X |
X |
CLI 11 тактов EXEC
IFETCH Decode ENDOP
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
|
IRET 12 тактов EXEC CHANGE IP
IFETCH Decode ENDOP
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
| |
X |
|
|
|
|
|
|
|
X |
X |
X |
X |
Одним из путей уменьшения времени выполнения команд является совмещение операций. Используем метод простой предварительной выборки команды. Когда текущая команда выполняет последнюю часть своей работы в CPU, то можно выбирать очередную команду. При рассмотрении схемы выполнения ADD можно увидеть возможность одновременного выполнения (перекрытия) двух команд без столкновений.