Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 27

Программа, написанная на языке ассемблера, точно так же, как программа написанная на любом другом языке программирования, выполняется не сама по себе, а в среде той или иной операционной системы. Операционная система выделяет область памяти для программы, загружает её, передаёт ей управление и отвечает на её запросы, обеспечивая тем самым взаимодействие с устройствами ввода-вывода, другими программами и прочими компонентами.

Самая простая операционная система для ЭВМ, основанных на процессорах семейства IA-32, — DOS. Она по сей день распространяется как сама по себе несколькими производителями, так и в виде части ОС Microsoft Windows.

DOS предоставляет программам полную свободу действий, никак не ограничивая их доступ к памяти и внешним устройствам, позволяя им самим управлять процессором и всеми остальными компонентами. По этой причине DOS достаточно удобен для изучения устройства ЭВМ.

Итак, чтобы программа выполнилась любой ОС, она должна быть скомпилирована в исполняемый файл. В DOS есть два формата исполняемых файлов: COM и EXE.

Файлы типа COM содержат только код программы без какой-либо дополнительной информации. Такая программа имеет только один сегмент, в котором размещаются код, данные и стек. Размер сегмента не может превышать 64 Кб.

Файлы типа EXE, помимо кода программы, содержат заголовок, где описывается размер файла, требуемый объём памяти, список команд в программе, использующих абсолютные адреса, и потому требующих настройки и другое. Программа типа EXE может иметь любое количество сегментов и любой размер. Формат EXE используется также для исполняемых файлов в различных вариантах расширителей DOS и Microsoft Windows, но с большими изменениями.

Кроме обычных исполняемых программ, DOS может загружать также драйверы — специальные программы, используемые для упрощения доступа к внешним устройствам.

Примечание. Несмотря на то, что программам типа COM принято давать расширение com, а программам типа EXE — exe, DOS не использует расширение для определения типа исполнимого модуля. Модуль считается имеющим тип EXE, если одновременно выполнены два условия:

—  первые два байта в файле — «MZ» или «ZM»;

—  длина файла больше порогового значения.

Пороговое значение отличается в разных версиях DOS.

При невыполнении хотя бы одного условия программа считается имеющей тип COM.


Раздел 2 Системы с параллельной обработкой данных

Параллельную обработку данных обычно разделяют на два типа: параллелизм на уровне команд и параллелизм на уровне процессоров. Граница между тем и другим весьма нечёткая, но к первому типу относят одновременное выполнение нескольких действий одним процессором, а ко второму — одновременную работу различных процессоров.

10. Параллелизм на уровне команд

10.1. Общие принципы

10.1.1. Конвейеры

10.1.2. Суперскалярная архитектура

10.1.3. Предсказание ветвлений

10.2. Микроархитектура процессоров семейства P6

10.2.1. Краткие характеристики

10.2.2. Блок выборки и декодирования

10.2.3. Блок исполнения

10.2.4. Блок возврата

[5, 9, 13]

10.1.  Общие принципы

10.1.1. Конвейеры

Первым препятствием повышению скорости выполнения команд является их вызов из памяти. Для преодоления этого препятствия было разработано средство для вызова команд из памяти заранее, чтобы они имелись в наличии в тот момент, когда будут необходимы. Эти команды помещаются в специальный набор регистров, называемый буфером выборки с упреждением. Таким образом, когда нужна команда, она вызывается прямо из буфера, находящегося внутри процессора, и нет необходимости ждать, пока она считается из ОЗУ. Эта идея использовалась ещё при разработке IBM Stretch, которая была сконструирована в 1959 году.

Процесс выборки с упреждением подразделяет выполнение команды на два этапа: выборку и собственно выполнение. Конвейеризация — это дальнейшее развитие той же идеи. Здесь выполнение команды подразделяется не на два, а большее количество этапов, каждый из которых выполняется определённым блоком процессора, причём все эти блоки могут работать параллельно.