210 likes | 502 Vues
Процессоры. Устройство центрального процессора Задачи процессора : вызов команд, определение их типа и выполнение. Основные компоненты : устройство управления, регистры и АЛУ, соединенные внутренними шинами. Команды можно поделить на два типа : регистр – память и регистр – регистр.
E N D
Процессоры Устройство центрального процессора Задачи процессора:вызов команд, определение их типа и выполнение. Основные компоненты: устройство управления, регистры и АЛУ, соединенные внутренними шинами. Команды можно поделить на два типа: регистр – память и регистр – регистр.
Цикл выполнения команды: A 1) вызов след. команды из памяти и перенос ее в регистр команд; 2) изменение значения счетчика команд (теперь он указывает на след. команду); 3) определение типа вызван. команды; 4) если команда использует слово из памяти, то определение его положения; 5) перенос слова, если нужно, в регистр; 6) выполнение команды; 7) к шагу 1. B Регистры A + B ВходнойрегистрАЛУ A B Входная шина АЛУ АЛУ Под циклом тракта данных обычно подразумевают выполнение одной команды типа регистр – регистр, когда значения из банка регистров загружаются на входные шины АЛУ. Затем над ними выполняется какая-либо арифметическая или логическая операция. И в конце полученный результат записывается назад в один из регистров. Выходной регистр АЛУ A + B Тракт данных в обычной фон-неймановской машине
Микропрограммирование“простые” и “сложные” команды Чем же микропрограммирование отличается от простого программирования в терминах машинного кода? Возьмем простую команду ассемблера add. Выполнение любой команды подразумевает прохождение трех стадий – выборка, дешифровка и собственно выполнение. Команда add имеет различное число форматов, например: Команда Код Сред. время (такты) add ax, 2 05 02 2 add eax, [ebx] 03 ModRM 7 add al, bl 02 ModRM 2 Второй из предложенных вариантов команды будет выполняться целых семь тактов. Это связано с тем, что второй операнд команды лежит в памяти. Для ее выполнения надо сначала передать порту работы с памятью адрес нужной ячейки. Затем дождаться считывания значения. После передать его в один из регистров. И только затем начать выполнение как обычно.
Таким образом под микропрограммированием мы будем подразумевать управление трактом данных. Каждая микроинструкция – это указание, что должен сделать тракт данных на его следующем цикле. Для чего это нужно? Вернемся к команде add.
Возьмем два ее варианта: add eax, ebx add bl, [ecx] Второй вариант можно отбросить, предложив пользователю использовать вместо него следующий набор команд: mov al, bl cbw cwde mov ebx, eax mov al, [ecx] cbw cwde add eax, ebx mov bl, al
Плюсы и минусы Оба подхода имеют право на жизнь! В первом случае мы получаем большой набор сложных команд, понятных пользователю и возможно быстрее выполняющихся, чем эквивалентный им набор команд во втором варианте. Но зато если взять простую команду, которая есть и в первом наборе и во втором, то мы получим уже плюсы второй схемы. Ведь из-за большого числа сложных команд, стадия дешифровки и выборки команд первой схемы значительно усложнилось. Как следствие – при второй схеме простая команда выполняется быстрее.
RISC и CISC В 70-е годы оба этих подхода получили воплощение в жизнь. Архитектура с минимальным набором простейших команд получила название RISC (Reduced Instruction Set Computer), а архитектура с большим набором сложных интерпретируемых команд – CISC (Complex Instruction Set Computer). Наиболее известные представители: RISC – Alpha, VAX, Sparc CISC – линейка x86 Хотя надо сделать маленькое отступление и сказать, что начиная с 486-го, процессоры фирмы Intel содержать ядро RISC, которое быстро выполняет простые команды, а сложные выполняются как обычно долго.
Особенности RISC и CISC RISC: • Отделение команд обработки от команд работы с памятью • Каждая команда выполняется небольшое кол-во времени (предпочтительно один такт) • Большое число регистров (32 или более) • Трехадресный формат команд • Маленькое число форматов команд и способов адресации
Особенности RISC и CISC CISC: • Маленькое число регистров (8 – 16) • Большое кол-во команд, в том числе сложных, выполняющихся за большое число тактов • Двухадресный формат команд • Большое число способов адресации и форматов команд • Наличие команд обработки типа регистр-память
Основные принципы разработки современных компьютеров • Все команды непосредственно выполняются аппаратным обеспечением (исключение составляют особо сложные команды, которые разбиваются на несколько частей и как следствие снижают скорость) • Компьютер одновременно начинает выполнение большого числа команд – параллелизм (некоторые команды даже могут выполняться не в том порядке, в котором они расположены) • Команды должны легко декодироваться • К памяти должны обращаться только команды загрузки и сохранения • Должно быть большое количество регистров
Параллелизм Параллелизм на уровне команд Параллелизм на уровне командосуществляется за счет выполнения сразу нескольких команд (или их частей) на одном процессоре одновременно
Конвейеры Основная проблема высокой скорости выполнения команд – их вызов из памяти! Архитектура с буфером выборки с упреждением В систему добавляют специальный набор регистров – буфер упреждения, в который команды вызывались из памяти заранее, до того как они будут нужны. Когда какая-либо команда становилась нужной, то она вызывалась не непосредственно из памяти, а из буфера. Основная идея – разделение команды на два этапа: выборка и выполнение.
Конвейеры Эта стратегия была более развита в конвейерной архитектуре. Теперь команды подразделяются не на два а на более этапов, каждая из которых выполняются определенной частью аппаратного обеспечения. Причем все эти части могут работать параллельно.
С1 С2 С3 С4 С5 Блок выборки команд Блок декодирования Блок выборки операндов Блок выполнения команд Блок возврата
Каков выигрыш? Пусть каждая стадия занимает dt нс, а конвейер содержит k стадий. Тогда время выполнения на простом компьютере будет: T1 = dt * k * n, где n – кол-во команд. На компьютере с конвейером мы получим другую формулу: T2 = dt * n + l, где l – время загрузки конвейера. При постоянной работе процессора n . Тогда перейдя к пределу мы получаем прирост производительности равный k. Но это идеальная модель!
Проблемы • Почти никогда не бывает, чтобы время выполнения каждой ступени конвейера было одинаковым. Зато частота синхронизации конвейера – единица постоянная. Отсюда следствие время выполнения любой из ступеней конвейера становится равным времени выполнения самой длительной из них. Таким образом, конвейер не только не увеличивает время выполнения одной инструкции, а даже уменьшает его. Кроме того, так как каждая ступень конвейера является отдельной аппаратной единицей, то возникает необходимость хранить промежуточный результат. Для этого используют так называемые регистровые станции, что, в свою очередь, замедляет выполнение одной инструкции на 5 – 10%. Вывод: конвейер хорош только при его постоянной загруженности!
Проблемы • Конфликты • Структурные конфликты – невозможно выполнение команд из-за неразделяемости ресурсов. Например: оперативная память предоставляет только один порт ввода-вывода. Но на стадиях С1 и C3 требуется обращение к ОП. Возникает конфликт. Одной из команд придется выждать один цикл синхронизации. • Конфликты по данным – результат работы одной команды нужен для работы другой. • Конфликты управления.
Суперскалярные системы Основная идея суперскалярных систем – это увеличение числа конвейеров. Например: у 486 процессора был один конвейер, а у Pentium – их уже два. С2 С3 С4 С5 С1 С2 С3 С4 С5