- •1. Вычислительный цикл процессора.
- •2. Вентили и логические элементы.
- •3. Понятие архитектуры и микроархитектуры. Классификация вычислительных средств по архитектуре (классификация Флинна).
- •4. Микропроцессор (мп). Состав и основные функции. Процессоры risc и cisc.
- •5. Архитектура ia-32. Режимы работы процессора.
- •6. Архитектура ia-32. Особенности представления информации.
- •7. Архитектура ia-32. Регистры общего назначения и сегментные регистры.
- •8. Архитектура ia-32. Регистры смещений и регистр флагов.
- •9. Архитектура ia-32. Организация памяти.
- •10. Архитектура ia-32. Организация прерываний.
- •11. Ассемблер. Области применения. Достоинства и недостатки.
- •12. Ассемблер. Структура программы. Модель памяти small.
- •13. Ассемблер. Основные типы предложений.
- •14. Ассемблер. Описание сегмента данных.
- •15. Ассемблер. Способы адресации памяти.
- •16. Ассемблер. Команды пересылки данных. Арифметические команды
- •17. Ассемблер. Команды переходов. Процедуры.
- •18. Ассемблер. Команды управления циклами. Команды прерывания.
- •19. Запоминающие устройства. Иерархичная организация памяти. Основные показатели быстродействия системы памяти.
- •20. Физические основы работы внутренней памяти. Энергозависимая память.
- •21. Внутренняя энергонезависимая память.
- •22. Аппаратно-программные методы ускорения обработки данных. Распараллеливание операции
- •23. Аппаратно-программные методы ускорения обработки данных. Кэширование памяти.
- •24. Кэш прямого отображения. Наборно-ассоциативный и ассоциативный кэш.
- •25. Микроархитектурные особенности процессоров x86 I-V поколений.
- •26. Микроархитектурные особенности процессоров x86 VI поколений.
- •27. Микроархитектура NetBurst и Intel Core.
- •28. Архитектура ia-64.
21. Внутренняя энергонезависимая память.
-
Внутренняя энергонезависимая память.
Хранит записанные данные и при отсутствии питающего напряжения. Основным режимом работы такой памяти является считывание данных. Запись информации, называемая программированием или «прошивкой», обычно значительно сложнее. Отсюда название – ПЗУ или ROM.
По возможностям программирования различают
- программируемые при изготовлении – масочные ПЗУ или ROM;
- программируемые однократно ППЗУ или PROM;
- программируемые многократно РПЗУ или EPROM в качестве них используется и флэш-память (память с электрическим стиранием).
ПЗУ используются для хранения неизменяемой информации, например, для хранения базовой системы ввода-вывода (BIOS), особенно удобна флэш-память, она позволяет прямо с «дискеты» обновлять BIOS. Флэш-память также используется в качестве внешней памяти. Быстродействие у ПЗУ меньше, чем у оперативной памяти, поэтому для увеличения быстродействия содержимое ПЗУ копируется в ОЗУ, эта копия, называемая теневой памятью ПЗУ, в последствии и используется.
22. Аппаратно-программные методы ускорения обработки данных. Распараллеливание операции
Аппаратные методы ускорения обработки данных
Ключевыми методами являются распараллеливание операций, кэширование памяти и расширение системы команд.
Распараллеливание операций
Выделяют конвейерную и суперскалярную технологии.
Конвейеризация позволяет организовать параллельную обработку нескольких инструкций в одном исполнительном блоке (временное распараллеливание), а суперскалярная технология по нескольким исполнительным блокам (конвейерам).
При конвейеризации выполнение каждой инструкции разбивается на несколько этапов. Например, выборка очередной команды, ее декодирование, вычисление физический адресов операндов, загрузка их в исполнительные блоки, собственно, выполнение команды, запись полученных результатов. Каждый этап выполняется на своей ступени конвейера за один такт. Если длина конвейера n то одновременно могут выполняться n инструкций, и результат выполнения очередной инструкции выдается в каждый такт. Чем длинней конвейер, тем меньшая часть работы выполняется за время одного такта, и тем проще уменьшить время одного такта, то есть повысить тактовую частоту. Это бы увеличивало и производительность, если бы конвейер был всегда полностью загружен. Однако не всегда это удается по двум основным причинам:
-
Нарушение последовательности выполнения команд (из-за условных переходов).
-
Зависимость данных различных команд (когда одним из операндов одной инструкции является результат более ранней инструкции, которая еще не завершилась).
Если эти ситуации случаются, происходят остановы конвейера, вследствие чего, он очищается и начинает заполняться заново. То есть недовыполненные инструкции начинают выполняться заново. И чем длинней конвейер, тем больше теряется производительности (инструкции надо пройти все стадии конвейера, чтобы быть выполненной). Поэтому ищется компромиссная длина конвейера, когда выигрыш от распараллеливания все еще превышает потери из-за останова. В микроархитектуре процессоров PIII AMD K8 конвейер имеет 10-12 стадии, в микроархитектуре процессоров P4 число стадий увеличено до 20 (гиперконвейерная микроархитектура). В новых процессорах Intel Core Duo конвейер вновь небольшой (10-12 стадий).
Основными методами борьбы с остановами конвейера являются:
-
Предсказание условных переходов с последующим декодированием команд, находящихся в предсказанной ветви (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
В этом и заключается идея исполнения с изменением последовательности инструкций – процессор изменяет порядок инструкций, заданный программистом так, чтобы конвейер работал эффективнее. При этом, конечно, изменяется порядок только внутренних микроопераций процессора, внешние же (шинные) операции ввода-вывода, конечно же, выполняются в порядке, предписанным программным кодом.