Глава 4
Архитектура ПК
I поколение ЭВМ (1945-1954 гг.). Появились процессоры, состоящие из двух частей: арифметико-логического устройства и управляющего устройства. Появились ОЗУ, устройства ввода вывода. Машины первого поколения были основаны на лампах, программы писались на Assembler'е.
II поколение (1954-1964 гг.). Машины работали на транзисторах. Использовались языки Fortran, Algol, Cobol. Появились первые операционные системы.
III поколение (1965-1970 гг.). Стали использоваться интегральные схемы. Появились мини-ЭВМ. Появилось совместимое программное обеспечение и пакеты прикладных программ.
IV поколение (1970-1984 гг.). Появились большие и сверхбольшие интегральные схемы. В это же время появляются микропроцессоры, развивается супер-ЭВМ.
V поколение (микропроцессорное) В 1976 году фирма INTEL разработала i 8086: регистры 16 бит, адресная шина 20 бит, поэтому i 8086 мог адресовать 1 Мб оперативной памяти. В 1982 году был создан i 80286. Этот процессор мог работать в двух режимах: реальном и защищенном, поддерживал многозадачность и виртуальную память. Адресная шина 24 бита - 16 Мб оперативной памяти. В 1985 году появился i 80386: регистры 32 бита, режим страничной адресации. Потом появился i 80486: параллельная обработка информации. В 1993 году появился Pentium: 2 конвейера, шина данных 64 бит.
Архитектура, с точки зрения пользователя - совокупность основных характеристик, таких как система команд, организация памяти, система адресации, операции ввода-вывода. С точки зрения разработчика вычислительных систем,
архитектура - принцип действия конфигурации, взаимное соединение основных логических узлов. В современных компьютерах используется архитектура
Фон Неймана.
Основной принцип этой архитектуры - вычислительная система состоит из двух частей: линейно-адресуемой памяти, ячейки которой хранят команды и элементы данных и процессора, который выполняет команды.Основные принципы архитектуры Фон Неймана:
Принцип хранимой программы, программа и ее данные находятся в одном адресном пространстве в оперативной памяти.
Принцип микропрограммирования.
В состав процессора входит блок микропрограммного управления. Этот блок для каждой машинной команды имеет набор действий - сигналов, который надо скооперировать для физического выполнения команды.
Принцип линейного пространства памяти. Совокупность ячеек памяти, которым последовательно присваиваются имена и адреса.
Принцип последовательного выполнения команд. Процессор выбирает команды из памяти последовательно. Для изменения прямолинейного порядка программы необходимо использовать команды условного и безусловного перехода.
Данные и команды не различаются. И данные и команды хранятся в двоичном виде. Процессор воспринимает содержимое памяти как команды. если вместо команд попадутся данные, то произойдет ошибка, поэтому важно четко разделять пространство данных и команд.
Безразличие к целевому назначению данных. Процессору все равно какую логическую нагрузку несут обрабатываемые данные.
Программа пишется на языке высокого уровня или Assembler'е и затем переводится на машинный язык с помощью программы-транслятора. Программа представляет собой последовательность машинных команд. Каждая команда состоит из кода команды и может содержать операнды (обрабатываемые данные). Операндами могут быть непосредственно данные, адреса в оперативной памяти, имена регистров и т. д.. При запуске программы системный загрузчик COMMAND.COM загружает программу в оперативную память, после чего процессор начинает ее исполнение.
Процессор состоит из двух частей:
-Шинного интерфейса
-Операционного устройства
Шинный интерфейс выбирает данные и команды из памяти. Он же записывает результаты в оперативную память. Операционная часть процессора состоит из двух частей: арифметико-логического устройства (АЛУ) и устройства управления (УУ). АЛУ выполняет арифметические и логические операции. УУ управляет порядком выборки команд и данных и записи результатов. В процессоре находятся регистры. Регистр - небольшая (32 бита), но очень быстродействующая область памяти. К регистрам, в отличии от ячеек оперативной памяти, обращаются не по адресам, а по именам. Все вычисления и выборка команд производятся только с помощью регистров, причем за некоторыми командами закреплены определенные регистры.
Особенности архитектуры процессоров i 80486 и семейства Pentium
Суперскалярная архитектура
Конвейер - специальное устройство, которое разбивает выполнение команды на несколько этапов:
Выборка команд из памяти и оперативной памяти.
Декодирование команды (разбиение на микрокоманды).
Генерация адреса, при которой определяются адреса операндов в памяти.
Выполнение команды с помощью АЛУ
Запись результата.
Конвейер позволяет ускорить работу процессора, так как команда переходит из устройства выборки в устройство декодирования, и в устройство выборки можно поместить новую команду. В результате одновременно на конвейере может находиться 5 команд. Процессоры, имеющие 1 конвейер (i 80486), называются скалярными, а 2 и более (Pentium - 2 конвейера, семейство P6 (Pentium Pro/II/III) - 3 конвейера) - суперскалярными.
Особенности архитектуры процессоров семейства P6
Раздельное кэширование кода и данных
Кэширование - способ увеличения быстродействия системы, за счет хранения данных и команд в кэше (очень быстрой памяти), находящемся внутри процессора. Pentium содержит 2 блока кэш-памяти первого уровня (L 1) по 8 Кб: один для данных, другой для команд. Данные в кэш первого (L 1) поступают из кэша второго уровня (L 2) по 64-битной шине.
Предсказание правильного адреса перехода
Переход - запланированное изменение последовательного выполнения программы, обычно в каждых 6-8 командах содержится 1 команда перехода. Поэтому через каждые 6-8 команд приходится очищать конвейер и заполнять его заново. Поэтому в архитектуру Pentium'а был введен блок предсказания перехода. Имеется буфер меток перехода, который хранит информацию о последних 256 переходах. Блок предсказания перехода предполагает, что пройденная ветвь будет пройдена снова, соответствующая команда загружается на конвейер. Правильность предсказаний составляет 80%.
Динамический анализ потока данных
Проводится анализ зависимости команд от данных и регистров, для того чтобы оптимизировать поток команд. Главное - максимальная загрузка конвейера, ради этого нарушается порядок выполнения команд. Однако сбоев в выполнении программы не происходит, так как логика исполнения программы будет сохранена.
Интеллектуальное исполнение
Обозначает способность процессора выполнять неупорядоченные команды, а затем восстанавливать исходный порядок команд. Все промежуточные команды хранятся во временных регистрах, блок удаления и восстановления постоянно просматривает буфер команд, ищет те, которые уже выполнены и не имеют связи с другими командами. Такие команды удаляются, а сформированные ими данные помещаются в оперативную память или регистры, в том порядке, который предусмотрен программой.
Порядок работы конвейера в процессорах семейства P6
Устройство шинного интерфейса посылает запросы оперативной памяти по системной шине.
Считываемые данные помещаются в кэш второго уровня (L 2).
Из кэша второго уровня (L 2) данные поступают в кэш данных первого уровня (L 1), а команды в кэш команд первого уровня (L 1).
Запросы шинному интерфейсу на операнды команд посылаются устройством связи с памятью и буфером переупорядочивания запросов памяти. Устройство связи с памятью определяет какие операнды необходимы, а буфер переупорядочивания запросов памяти ищет их сначала в кэше данных первого уровня (L 1), затем в кэше второго уровня (L 2), а затем заставляет шинный интерфейс формировать запрос к оперативной памяти.
Устройство выборки команд извлекает из кэша команд первого уровня (L 1) 32-байтную строку.
Если среди выбранных команд встретилась команда перехода, то посылается запрос блоку вычисления адреса следующей команды. В этом блоке из команды считывается адрес перехода, и такой адрес ищется в буфере меток перехода. В буфере меток перехода хранится информация о последних 256 переходах.
Если метка не найдена, тогда загружающиеся из памяти команды последовательно идут по конвейеру, пока команда перехода не дойдет до исполнительного устройства. Исполнительное устройство выполняет эту команду и определяет правильно ли была выполнена команда. Если да, то команда продолжает выполняться; если нет, то адрес перехода записывается в буфер меток перехода, конвейер очищается и загружается команда соответствующая адресу перехода.
Если метка найдена в буфере меток перехода, предполагается, что пройденная ветвь будет пройдена снова, и загружается команда по адресу перехода. После выполнения команды перехода исполнительным устройством правильность перехода подтверждается или нет.
Из устройства выборки команд команда попадает в устройство декодирования.
В устройстве декодирования находится 3 декодера. Простые команды преобразуются в одну микрокоманду, а сложные в 2-4. Информация о преобразовании команд в микрокоманды хранится в устройстве командного управления. После декодирования микрокоманды могут выполняться в произвольном порядке и могут обращаться к одним и тем же регистрам. Во избежание конфликта используется набор из 40 временных регистров.
Микрокоманды поступают в таблицу регистровых алиасов, где микрокомандам присваивается информация о соответствующих временных регистрах.
Микрокоманды помещаются в буфер переупорядоченных команд.
Буфер микрокоманд готовых к исполнению.
Буфер микрокоманд готовых к исполнению просматривает буфер переупорядоченных команд и ищет готовые микрокоманды и посылает их в исполнительное устройство. Результаты выполнения команд снова помещаются в блок переупорядоченных команд.
Команды выполняются с помощью пяти исполнительных устройств. Целочисленное устройство кроме вычислений определяет правильность перехода.
Блок удаления и восстановления просматривает блок переупорядоченных команд, находит выполненные команды и удаляет их.
Удаленные микрокоманды восстанавливаются в исходном порядке и результаты вычисления записываются в регистры и оперативную память.