Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы 11-20.docx
Скачиваний:
12
Добавлен:
20.11.2019
Размер:
39.54 Кб
Скачать
  1. Cisc и risc процессоры.

Одно из фундаментальных различий между процессорами разного типа находится на самом нижнем уровне: оно заключается в методе обработки процессором команд. В этом отношении процессоры можно разделить на два типа: с полным набором команд (CISC) и с ограниченным набором (RISC). Разница между ними видна уже из названий.

Чем различаются алгоритмы?

В микросхемах CISC множество низкоуровневых команд объединяют и одну для создания одного программного модуля, встроенного в управляющую логику микросхемы. Напротив, управляющая логика микросхем RISC функционирует на уровне отдельных команд. Благодаря различиям в конструкции, в микросхемах CISC обычно используется более обширная система Команд (набор команд, встроенных в логическое устройство микросхемы), чем в RISC. Именно поэтому при решении поставленной задачи в CISC каждая команда работает сама по себе, а в RISC можно комбинировать и подгонять различные команды для достижения требуемого результата. В некотором смысле это похоже на разницу между латинским алфавитом (позволяющим с помощью 26 букв написать любое слово на данном языке, хотя каждая буква мало что значит, пока не соединена с остальными буквами) и тысячами китайских иероглифов, каждый из которых представляет собой отдельное слово.

Система команд (instruction set) – это набор инструкций, встроенных в микросхему.

  1. Архитектура процессора. Многоконвейерность.

Поскольку на выполнение отдельной инструкции у процессора обычно уходит несколько тактов, логично было бы разделить выполнение любой команды на несколько этапов. Принцип конвейерной обработки подразумевает выполнение следующей команды по окончании первого этапа для предыдущей. Понятно, что в таком случае ресурсы процессора используются гораздо эффективнее. Подобный подход нашел применение еще в 80486 и Pentium, где конвейер насчитывал 5 стадий. 

Суперконвейерная обработка подразумевает деление каждой ступени обычного конвейера на несколько более мелких, каждая из которых выполняет меньше работы. Таким образом, задержка между поступлением сигналов на вход системы и появлением их на выходах (Propagation Delay) уменьшается еще сильнее. Это-то и позволяет в конечном итоге не сдерживать рост тактовых частот. Переход на более тонкий техпроцесс также способствует этому. Так, в погоне за все более высокими частотами конвейер Pentium III разросся до 10 ступеней.

  1. Архитектура процессора. Блок предсказания ветвлений.

В любой более-менее сложной программе присутствуют команды условного перехода: «Если некое условие истинно — перейти к исполнению одного участка кода, если нет — другого». До тех пор, пока не станет известно, какой участок кода после условного перехода окажется «актуальным» — его невозможно начать декодировать и исполнять (см. внеочередное исполнение). Для того чтобы как-то примирить концепцию внеочередного исполнения с командами условного перехода, предназначается специальный блок: блок предсказания ветвлений.Он пытается предсказать, на какой участок кода укажет команда условного перехода, ещё до того, как она будет исполнена. Процессором производятся вполне реальные действия: предсказанный участок кода загружается в кэш (если он там отсутствует), и даже начинается декодирование и выполнение его команд. Причём среди выполняемых команд также могут содержаться инструкции условного перехода, и их результаты тоже предсказываются, что порождает целую цепочку из пока не проверенных предсказаний! Разумеется, если блок предсказания ветвлений ошибся, вся проделанная в соответствии с его предсказаниями работа просто аннулируется.

Алгоритмы, по которым работает блок предсказания ветвлений, преимущественно просты. Чаще всего команда условного перехода встречается в циклах: некий счётчик принимает значение X, и после каждого прохождения цикла значение счётчика уменьшается на единицу. Соответственно, до тех пор, пока значение счётчика больше нуля — осуществляется переход на начало цикла, а после того, как он становится равным нулю — исполнение продолжается дальше. Блок предсказания ветвлений просто анализирует результат выполнения команды условного перехода, и считает, что если N раз подряд результатом стал переход на определённый адрес — то и в N+1 случае будет осуществлён переход туда же. Однако, несмотря на весь примитивизм, данная схема работает просто замечательно: например, в случае, если счётчик принимает значение 100, а «порог срабатывания» предсказателя ветвлений (N) равен двум переходам подряд на один и тот же адрес — легко заметить, что 97 переходов из 98 будут предсказаны правильно!

Разумеется, несмотря на достаточно высокую эффективность простых алгоритмов, механизмы предсказания ветвлений в современных CPU всё равно постоянно совершенствуются и усложняются — но тут уже речь идёт о борьбе за единицы процентов: например, за то, чтобы повысить эффективность работы блока предсказания ветвлений с 95 процентов до 97, или даже с 97% до 99...