Тема 5.4. Суперскалярная архитектура

Для каждого типа центрального процессора существует свой определенный набор команд, которые он может выполнять. Поскольку доступ к памяти для получения команды или данных занимает намного больше времени, чем выполнение команды, у всех центральных процессоров есть несколько собственных регистров для хранения основных переменных и промежуточных результатов. Соответственно набор команд содержит, как правило, команды на загрузку слова из памяти в регистр и на запоминание слова из регистра в памяти. Другие команды объединяют два операнда из регистров, памяти или из обоих этих мест для получения результата — например, складывают два слова и сохраняют результат в регистре или в памяти.

Для повышения производительности процессоров их разработчики давно отказались от простой модели извлечения, декодирования и выполнения одной команды за один цикл. Многие современные процессоры способны одновременно выполнять более одной команды. Например, у процессора могут быть отдельные блоки для выборки, декодирования и выполнения ко-манд, тогда во время выполнения команды и он сможет декодировать команду n+1 и осуществлять выборку команды n+2. Подобная организация работы называется конвейером. На рис. 26, а показан конвейер с тремя стадиями обработки. Обычно используются более длинные конвейеры. В большинстве конструкций конвейеров, как только команда выбрана и помещена в конвейер, она должна быть выполнена, даже если предыдущая выбранная команда была условным ветвлением. Для разработчиков компиляторов и операционных систем конвейеры — это сплошная головная боль, обнажающая перед ними все сложности исходной машины.

Более совершенной конструкцией, по сравнению с конвейерной, обладает суперскалярный процессор, показанный на рис. 26, б. Он имеет несколько исполнительных блоков: например, один — для целочисленной арифметики, другой — для арифметики чисел с плавающей точкой, а третий — для логических операций. Одновременно выбираются две и более команды, которые декодируются и помещаются в буфер хранения, в котором ожидают возможности своего выполнения. Как только исполнительный блок освобождается, он обращается к буферу хранения за командой, которую он может выполнить, и если такая команда имеется, он извлекает ее из буфера, а затем выполняет. В результате команды программы часто выполняются не в порядке их следования. При этом обеспечение совпадения конечного результата с тем, который получился бы при последовательном выполнении команд, возлагается в основном на аппаратуру. Однако, как мы увидим в дальнейшем, при этом подходе неприятные усложнения коснулись и операционной системы.

Рис. 36 Конвейер с тремя стадиями обработки


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: