Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSA.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.27 Mб
Скачать

Скалярные и векторные процессоры

SISD – Single Instruction, Single Data (скалярный). Обработка одного элемента данных за инструкцию.

SIMD - Single Instruction, Multiple Data (векторный). Обработка массива или вектора данных разом.

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

Многие современные микропроцессоры имеют векторные и потоковые расширения. Так, SSE – векторное расширение (streaming SIMD extension) процессоров Intel начиная с Pentium III. SSE, как правило, включает 8 128-битных регистра и набор инструкций, работающих со скалярными и упакованными типами данных. Также, часто используют вспомогательные векторные сопроцессоры (ускорители, видеокарты).

Конвейеры

Главным препятствием быстрого выполнения команд является необходимость их вызова из оперативной памяти. Можно вызывать их заранее и хранить в специальном наборе регистров (сейчас для этих целей используют кэш). В 1959 году впервые эта идея была использована в компьютерах Streatch. Такой набор регистров был назван буфером выборки с упреждением. При выборке с упреждением, выполнение команды выполнялось за два шага: Сначала вызов команды, затем – её исполнение. Идея конвейера еще больше продвинула эту идею.

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

  2. Все аппаратные компоненты работают параллельно

Пусть стандартная частота обработки данных процессором равна N. Поскольку теперь обработка разбита на M примерно одинаковых подфункций, каждая из них выполняется быстрее общей большой функции в M раз. Тогда, процессор может работать на частоте N*M (в M раз быстрее), при том, что на каждом такте все подфункции выполняются параллельно, и время их работы не превышает времени работы каждой из них. Так как при этом выполняются все M функций, общее число производимых операций в секунду – N*M*M (частота получения результатов по-прежнему N*M). Рассмотрим пятиступенчатый конвейер (применявшийся, в частности, в Pentium).

  1. I F (Instruction Fetch) – вызывает программу из памяти и помещает её в буфер для хранения.

  2. ID (Instruction Decode) – декодирование команды, определение её типа и типа операндов.

  3. MEM (Memory Access) – определение местоположения операндов и вызов их из регистров и/или памяти.

  4. EX (Execute) – выполнение команды.

  5. WB (Register Write Back) – запись результата обратно в нужный регистр.

Конфликты

При работе конвейера возникают конфликты – такие ситуации в конвейерной обработке, которые препятствуют выполнению очередной команды в предназначенном для нее такте. Конфликты делят на три группы:

  1. Структурные

  2. По управлению

  3. По данным

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

  1. Не полностью конвейерная структура процессора, при которой некоторые ступени отдельных команд выполняются более одного такта. В этом случае команда на некоторой стадии не может быть выполнена, потому что не была выполнена предыдущая. Для синхронизации такой ситуации процессор вводи одну или несколько пустых команд (NOP).

  2. Недостаточное дублирование некоторых ресурсов. Типичный пример – доступ к запоминающим устройствам, когда операнды и команды находятся на одном запоминающем устройстве. В этом случае различные команды в одном и том же такте обращаются к памяти на считывание команды, выборку операндов и запись данных.

Такие конфликты вносят задержку в работу конвейера. Образуемый при этом «пузырь» должен пройти от места своего возникновения до конца конвейера.

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

Конфликты по данным возникают в случае, когда выполнение одной команды зависит от результатов выполнения предыдущей команды. Существуют несколько типов конфликтов: RAW, WAR и WAW.

  1. Конфликты типа RAW (Read after Write). Возникают, если следующая команда читает значение, записанное предыдущей. В случае пятиступенчатого конвейера, чтение осуществляется на 3 такте – таким образом, предыдущая команда будет находится еще на 4м, и не успеет осуществить запись (которая производится на 5м). В результате, следующая команда прочитает устаревшее значение. Конфликты этого типа обусловлены именно конвейерной организацией обработки данных.

  2. Конфликты WAR возникают, когда следующая команда пытается записать результат в приемник до того, как он будет прочитан предыдущей командой. Такое возникает при неупорядоченном выполнении команд.

  3. Конфликты WAW – конфликт, когда запись в один и тот же приемник ведется в неправильном порядке, таким образом, последний записанный результат будет неверным.

Устранение конфликтов по данным типов WAR и WAW достигается путем отказа от неупорядоченного выполнения команд (а чаще всего - путем введения буфера восстановления последовательности команд).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]