Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
arkhitektura.docx
Скачиваний:
50
Добавлен:
12.01.2020
Размер:
216.72 Кб
Скачать

21. Внутренняя энергонезависимая память.

  1. Внутренняя энергонезависимая память.

Хранит записанные данные и при отсутствии питающего напряжения. Основным режимом работы такой памяти является считывание данных. Запись информации, называемая программированием или «прошивкой», обычно значительно сложнее. Отсюда название – ПЗУ или ROM.

По возможностям программирования различают

- программируемые при изготовлении – масочные ПЗУ или ROM;

- программируемые однократно ППЗУ или PROM;

- программируемые многократно РПЗУ или EPROM в качестве них используется и флэш-память (память с электрическим стиранием).

ПЗУ используются для хранения неизменяемой информации, например, для хранения базовой системы ввода-вывода (BIOS), особенно удобна флэш-память, она позволяет прямо с «дискеты» обновлять BIOS. Флэш-память также используется в качестве внешней памяти. Быстродействие у ПЗУ меньше, чем у оперативной памяти, поэтому для увеличения быстродействия содержимое ПЗУ копируется в ОЗУ, эта копия, называемая теневой памятью ПЗУ, в последствии и используется.

22. Аппаратно-программные методы ускорения обработки данных. Распараллеливание операции

Аппаратные методы ускорения обработки данных

Ключевыми методами являются распараллеливание операций, кэширование памяти и расширение системы команд.

Распараллеливание операций

Выделяют конвейерную и суперскалярную технологии.

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

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

  1. Нарушение последовательности выполнения команд (из-за условных переходов).

  2. Зависимость данных различных команд (когда одним из операндов одной инструкции является результат более ранней инструкции, которая еще не завершилась).

Если эти ситуации случаются, происходят остановы конвейера, вследствие чего, он очищается и начинает заполняться заново. То есть недовыполненные инструкции начинают выполняться заново. И чем длинней конвейер, тем больше теряется производительности (инструкции надо пройти все стадии конвейера, чтобы быть выполненной). Поэтому ищется компромиссная длина конвейера, когда выигрыш от распараллеливания все еще превышает потери из-за останова. В микроархитектуре процессоров PIII AMD K8 конвейер имеет 10-12 стадии, в микроархитектуре процессоров P4 число стадий увеличено до 20 (гиперконвейерная микроархитектура). В новых процессорах Intel Core Duo конвейер вновь небольшой (10-12 стадий).

Основными методами борьбы с остановами конвейера являются:

  1. Предсказание условных переходов с последующим декодированием команд, находящихся в предсказанной ветви (branch prediction).

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

2. Спекулятивное исполнение (speculative execution). Идея идет дальше – инструкции предсказанной ветви не только декодируются, но и исполняются до проверки условия перехода. Если предсказание сбывается, то работа оказывается не напрасной. Если же предсказание не сбывается – то приходится выполнять совсем другие инструкции.

Эти два метода призваны решать первую проблему – проблему условных переходов.

Другая проблема зависимости данных может решаться исполнением с изменением последовательности инструкции (out-of-order execution)

К примеру, имеется следующая последовательность команд:

1) A = B + C

2) K = A + M

3) Z = X + Y

Для выполнения второй команды необходимо дождаться результата первой. Так как третья команда совершенно независима от первой и второй, то намного выгоднее выполнять эти команды в следующем порядке:

1) A = B + С

2) Z = X + Y

3) K = A + M

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

Соседние файлы в предмете Архитектура информационных систем