Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Функциональная и структурная организация ЭВМ.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
950.78 Кб
Скачать

1.1. Арифметико-логическое устройство

Арифметико-логическое устройство (АЛУ) – часть микро­процессора, которая осуществляет арифметические и логические операции.

АЛУ обеспечивает выполнение основных операций по обработке информации. Основу АЛУ составляет сумматор с последовательно-параллельным переносом.

Сумматор – электрическая схема, используемая для сложения двоичных чисел.

Любую задачу компьютер разбивает на отдельные логические операции, производимые над двоичными числами, причем в одну секунду осуществляются сотни тысяч или миллионы таких операций. Сложение, вычитание, умножение и деление – элементарные операции, выполняемые АЛУ ЭВМ. Полный набор таких операций называют системой команд, а схемы их реализации составляют основу АЛУ. Помимо арифметического устройства, АЛУ включает и логическое устройство, предназначенное для операций, при осуществлении которых отсутствует перенос из разряда в разряд. Иногда эти операции называют «логическое И» «и логическое ИЛИ». Все операции в АЛУ производятся в регистрах – специально отведенных ячейках АЛУ. Время выполнения простейших операций определяется минимальным временем сложения двух операндов, находящихся в регистрах. В случае, если одно или оба слагаемых находятся не в регистрах, а в оперативном запоминающем устройстве (ОЗУ), учитывается также время пересылки слагаемых в регистры и время записи полученной суммы в ОЗУ. В большинстве современных микропроцессоров это время составляет от нескольких сотен наносекунд до нескольких микросекунд.

1.2. Устройство управления

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

Устройство управления содержит регистр команд, дешифратор команд и управляющее устройство, в состав которого входит управляющая память. Управляющая память содержит микропрограммы всех команд для данного МП.

На управляющее устройство поступают последовательности тактового генератора, сигнал готовности от ОЗУ, постоянного запоминающего устройства (ПЗУ) или устройств ввода-вывода (УВВ) к приему или передаче данных, сигнал запроса на прерывание от внешних устройств.

1.3. Основные принципы работы современных процессоров

История 32-разрядных процессоров Intel началась с процессора Intel386. Он воб­рал в себя все черты своих 16-разрядных предше­ственников 8086/88 и 80286 для обеспечения совместимости с громадным объемом программного обеспечения, существовавшего на мо­мент его появления. Однако в процессорах 80386 преодолено жесткое ограниче­ние на длину непрерывного сегмента памяти – 64 Кбайт.

Про­цессор может работать в одном из двух режимов: режим реальной адресации (Real Address Mode), в котором возможна адресация до 1 Мбайт физической памяти, и защищенный режим виртуальной адресации (Protected Virtual Address Mode), в котором процессор позво­ляет адресовать до 4 Гбайт физической памяти и до 64 Тбайт виртуальной памяти каждой задачи.

Эти процессоры имеют встро­енный блок управления памятью, который поддерживает механизмы сегментации и стра­ничной трансляции адресов (Paging). Процессоры обеспечивают четырех­уровне­вую систему защиты пространств памяти и ввода/вывода, а также переключение задач. Система команд расширена при сохранении всех команд 8086, 80286. Подробнее режимы процессора и механизм страничной организации памяти будут рассмотрены далее.

В архитектуру процессоров введены средства отладки и тести­рования.

В микроархитектуре процессоров пятого и шестого поколений – Pentium, Pen­tium Pro, Pentium MMX, Pentium II и Pentium III – существенное значение имеет реализация различных способов конвейеризации и распараллеливания вычисли­тельных процессов, а также других технологий, не свойственных процессорам прежних поколений.

Конвейеризация (pipelining) предполагает разбивку выполнения каждой инструк­ции на несколько этапов, причем каждый этап выполняется на своей ступени кон­вейера процессора. При выполнении инструкция продвигается по конвейеру по мере освобождения последующих ступеней. Таким образом, на конвейере одно­временно может обрабатываться несколько последовательных инструкций, и производительность процессора можно оценивать темпом выхода выполненных инструкций со всех его конвейеров. Для достижения максимальной производи­тельности процессора – обеспечения полной загрузки конвейеров с минимальным числом лишних штрафных циклов (penalty cycles) – программа должна состав­ляться с учетом архитектурных особенностей процессора. Конечно, и код, сгене­рированный обычным способом, будет исполняться на процессорах классов Pen­tium и Р6 достаточно быстро. Конвейер «классического» процессора Pentium имеет пять ступеней. Конвейеры процессоров с суперконвейерной архи­тектурой (superpipelined) имеют большее число ступеней, что позволяет упростить каждую из них и, следовательно, сократить время пребывания в них инструкций.

Скалярным называют процессор с единственным конвейером, к этому типу отно­сятся все процессоры Intel до 486 включительно. Суперскалярный (superscalar) процессор имеет более одного (Pentium – два) конвейера, способных обрабаты­вать инструкции параллельно. Pentium является двухпотоковым процессором (имеет два конвейера), Pentium Pro – трехпотоковым.

Переименование регистров (register renaming) позволяет обойти архитектурное ограничение на возможность параллельного исполнения инструкций (доступно всего восемь общих регистров). Процессоры с переименованием регистров фак­тически имеют более восьми общих регистров, и при записи промежуточных ре­зультатов устанавливается соответствие логических имен и физических регист­ров. Таким образом, одновременно могут исполняться несколько инструкций, ссылающихся на одно и то же логическое имя регистра, если, конечно, между ними нет фактических зависимостей по данным.

Продвижение данных (data forwarding) подразумевает начало исполнения инст­рукции до готовности всех операндов. При этом выполняются все возможные действия, и декодированная инструкция с одним операндом помещается в испол­нительное устройство, где дожидается готовности второго операнда, выходящего с другого конвейера.

Предсказание переходов (branch prediction) позволяет продолжать выборку и деко­дирование потока инструкций после выборки инструкции ветвления (условного перехода), не дожидаясь проверки самого условия. В процессорах прежних поко­лений инструкция перехода приостанавливала конвейер (выборку инструкций) до исполнения собственно перехода, на чем, естественно, терялась производи­тельность. Предсказание переходов направляет поток выборки и декодирования по одной из ветвей. Статический метод предсказания работает по схеме, заложен­ной в процессор, считая, что переходы по одним условиям, вероятнее всего, про­изойдут, а по другим – нет. Динамическое предсказание опирается на предысто­рию вычислительного процесса – для каждого конкретного случая перехода накапливается статистика поведения, и переход предсказывается, основываясь именно на ней.

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

Исполнение с изменением последовательности инструкций (out-of-order execution), свойственное RISC-архитектуре, теперь реализуется и для процессоров х86. При этом изменяется порядок внутренних манипуляций данными, а внешние (шин­ные) операции ввода/вывода и записи в память выполняются, конечно же, в по­рядке, предписанном програм­мным кодом. Однако эта способность процессора в наибольшей степени может блокироваться несовершенством программного кода (особенно 16-битных приложений), если он генерируется без учета возможности изменения порядка.

Технология Intel MMX улучшает компрессию/декомпрессию видео, работу с изображениями, шифрование и обработку сигналов ввода/вывода – т.е. все мультимедиа-операции, операции связи и сетевые взаимодействия. Основа MMX расширения процессорного ядра заключается в технологии обработки множественных данных в одной инструкции (Single Instruction Multiple Data - SIMD). Сегодняшние мультимедийные и коммуникационные приложения часто используют повторные циклы, выполнение которых, при использовании в менее чем 10% программных кодов, отнимает до 90% процессорного времени. Процесс SIMD (один поток команд и множество потоков данных) дает возможность одной инструкции исполнять одну и ту же функцию с различными данными и их частями. SIMD позволяет чипу уменьшить количество циклов с интенсивными вычислениями, характерными для обработки видео, аудио, графической информации и анимации.

Технологии MMX и SIMD требуют добавления все новых и новых инструкций (уже сейчас их 57 для MMX и 70 – для SIMD в Pentium III), обеспечивающих оптимальное выполнение алгоритмических задач. А при добавлении новых инструкций необходима переработка компи­ляторов всех языков программирования для введения и поддержки соответствующих инструкций и технологий. Конкуренты Intel предлагают альтернативные решения, при которых требуется минимальное число новых инструкций или вообще не требуется переработка компиляторов, а повышение производительности процессоров и скорости выполнения программ и вычислений достигается за счет внутренней оптимизации процессорного ядра. Так, технология 3D Now (AMD) позволяет производить две операции с плавающей точкой вместо одной у Pentium, а число новых инструкций около 30 при относительно равной стоимости. Дальнейшее увеличение числа инструкций при каждом введении новых технологий обработки данных может привести Intel к тому, что микропроцессоры станут очень «тяжелыми» и перегруженными объемом поддерживаемых инструкций, а компилирующие системы для них (например от Microsoft) – еще тяжелее и неповоротливее, чем в настоящее время, а все нарастающая тактовая частота и произво­дительность процессора будет «съедаться» непомерно большими программными продуктами, так что эффективность нововведений может оказаться невысокой.

Особенности процессора Intel Pentium 4

Intel Pentium 4 – это первый процессор в семействе 32-битных процессоров седьмого поколения от Intel.

Несмотря на то что Intel Pentium 4 является процессором с архитектурой IA-32, характерной для 32-разрядных процессоров, последняя сильно отличается от архитектуры процессоров семейства P6 и даже получила специальное название – NetBurst.

Рассмотрим основные новшества, появившиеся в NetBurst.

Hyper-Pipelined Technology. Суть технологии Hyper-Pipelined (гиперконвейер) заключается в том, что Intel Pentium 4 имеет очень длинный конвейер, состоящий из 20 стадий. Для сравнения: конвейер у процессоров семейства P6 состоит всего из 10 стадий.

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

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

В Intel Pentium 4 интегрирован более совершенный механизм предсказания переходов. Количество ошибочно предсказанных переходов у него в среднем на 33% меньше, чем у процессоров с архитектурой P6.

Execution Trace Cache. Execution Trace Cache – это название и одновременно способ реализации кэша инструкций в архитектуре NetBurst. Смысловое содержание этого термина можно перевести как «кэш трассировки выполняемых микроопераций».

В Execution Trace Cache хранятся микрооперации, которые были получены в результате декодирования входного потока инструкций исполняемого кода и готовы для передачи на выполнение конвейеру. Емкость Execution Trace Cache составляет 12 Кбайт.

Execution Trace Cache устроен таким образом, что вместе с кодом каждой микрооперации в нем хранятся результаты выполнения ветвей кода для этой микрооперации – в той же строке кэша (cache line), что и сама микрооперация. Это позволяет легко и своевременно выявлять микрооперации, которые никогда не будут выполнены, и быстро удалять их из кэша инструкций, а также оперативно «вычищать» Execution Trace Cache от «лишних» микроопераций в случае обнаружения ошибочно предсказанного перехода. Последнее обстоятельство особенно важно, так как позволяет сократить общее время реинициализации конвейера после его остановки в результате выполнения перехода, который был «угадан» неправильно.

Rapid Execution Engine. Так, в архитектуре NetBurst назван блок выполнения арифметико-логических операций. Конструктив Rapid Execution Engine довольно оригинален: во-первых, он состоит из двух АЛУ-модулей, работающих параллельно; во-вторых, рабочая тактовая частота этих АЛУ-модулей в два раза выше тактовой частоты процессора – это достигается за счет регистрации как переднего, так и заднего фронта задающего тактового сигнала. Таким образом, каждый АЛУ-модуль способен выполнить до двух целочисленных операций за один рабочий такт процессора, а весь Rapid Execution Engine в целом – до четырех таких операций.

Advanced Dynamic Execution. Advanced Dynamic Execution – это обобщенное название механизма динамического выполнения команд, используемого в NetBurst. Аналогичный механизм используется в процессорах семейства P6, однако, в Intel Pentium 4 он улучшен.

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

Технология множественного предсказания ветвлений предсказывает прохождение программы по нескольким ветвям, процессор может предвидеть разделение потока инструкций, что дает возможность с 90%-ной точностью предсказать, в какой области памяти можно найти следующие инструкции. Это оказывается возможным, поскольку в процессе исполнения инструкции процессор просматривает программу на несколько шагов вперед. Технология анализа потока данных позволяет проанализировать код и составить график, т.е. новую оптимальную последовательность исполнения инструкций, независимо от порядка их следования в тексте программы. Спекулятивное выполнение повышает скорость выполнения за счет выполнения до 5 инструкций одновременно по мере их поступления в оптимизированной последовательности – т.е. спекулятивно. Это обеспечивает максимальную загруженность процессора и увеличивает скорость исполнения программы. Поскольку выполнение инструкций происходит на основе предсказания ветвлений, результаты сохраняются как «спекулятивные» – промежуточные с возможным отвержением из-за нарушения последовательности инструкций – промахов в предсказании. На конечном этапе порядок инструкций и результатов их выполнения восстанавливается до первоначального.