Студопедия — ТЕМАТИЧЕСКИЙ ОБЗОР
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ТЕМАТИЧЕСКИЙ ОБЗОР






(Жирным шрифтом выделены новые понятия, которые необходимо усвоить. Знание этих понятий будет проверяться при тестировании)

 

1. Процессор

 

Под архитектурой процессора понимается его программная модель, то есть про­граммно-видимые свойства.

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

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

В состав микропроцессора (МП) входят арифметико-логическое устройство (АЛУ), устройство управления (УУ) и группа регистров (рис. 1).

Рис. 1. Состав микропроцессора

 

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 инструкций одновременно по мере их поступления в оптимизированной последовательности – т.е. спекулятивно. Это обеспечивает максимальную загруженность процессора и увеличивает скорость исполнения программы. Поскольку выполнение инструкций происходит на основе предсказания ветвлений, результаты сохраняются как «спекулятивные» – промежуточные с возможным отвержением из-за нарушения последовательности инструкций – промахов в предсказании. На конечном этапе порядок инструкций и результатов их выполнения восстанавливается до первоначального.

 

1.4. Регистры процессора

 

Регистр – разновидность ОЗУ, встроенного в микропроцессор.

Рассмотрим состав и назначение регистров на примере микро­процессоров фирмы Intel.

Процессоры х86 имеют регистры, подразделяющиеся на следующие категории:

· регистры общего назначения (общие регистры данных и адресов);

· указатель команд (инструкций);

· регистры сегментов;

· регистр флагов;

· управляющие регистры;

· системные адресные регистры;

· регистры отладки;

· регистры тестирования;

· модельно-специфические (зависящие от конкретной модели процессора) регистры.

На рис. 2 изображены основные регистры 32-разрядных процессоров. Они будут подробно рассмотрены ниже.

Рис. 2. Основные регистры 32-разрядных процессоров

 

1.4.1. Регистры общего назначения

 

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

Разрядность регистра – количество битов, которые может хранить регистр.

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

Регистр AX называют также накопителем (аккумулятором). Этот регистр всегда используется в операциях умножения или деления и является также одним из тех регистров, который можно использовать для наиболее эффективных операций (арифметических, логических или операций перемещения данных). Младшие 8 битов регистра AX называются также регистром AL (Low), а старшие 8 битов - регистром AH (High). Это может оказаться удобным при работе с данными размером в байт. Таким образом, регистр AX можно использовать, как два отдельных регистра.

Регистр BX может использоваться для ссылки на ячейку памяти (указатель), т.е. 16-битовое значение, записанное в BX, может использоваться в качестве части адреса ячейки памяти, к которой производится обращение. По умолчанию, когда BX используется в качестве указателя на ячейку памяти, он ссылается на нее относительно сегментного регистра DS. Регистр BX может интерпретироваться, как два восьмибитовых регистра - BH и BL.

Специализация регистра CX - использование в качестве счетчика при выполнении циклов. Уменьшение значения счетчика и цикл - это часто используемый элемент программы, поэтому в процессоре 8086 используется специальная команда для того, чтобы циклы выполнялись быстрее и были более компактными. Эта команда называется LOOP. Инструкция LOOP вычитает 1 из CX и выполняет переход, если содержимое регистра CX не равно 0. Регистр CX можно интерпре­тировать, как два 8-разрядных регистра - CH и CL.

Регистр DX - это единственный регистр, который может исполь­зоваться в качестве указателя адреса ввода-вывода в командах IN и OUT. Фактически, кроме использования регистра DX нет другого способа адресоваться к портам ввода-вывода с 256 по 65535.

Другие уникальные качества регистра DX относятся к операциям деления и умножения. Когда вы делите 32-битовое делимое на 16-битовый делитель, старшие 16 битов делимого должны быть помещены в регистр DX (младшие 16 битов делимого должны быть помещены в регистр AX). После выполнения деления остаток также сохраняется в регистре DX (частное от деления будет записано в AX). Аналогично, когда вы перемножаете два 16-битовых сомножителя, старшие 16 битов произведения сохраняются в DX (младшие 16 битов записываются в регистр AX). Регистр DX можно интерпретировать как два 8-разрядных регистра - DH и DL.

Как и регистр BX, регистр SI может использоваться как указатель на ячейку памяти. Особенно полезно использовать регистр SI для ссылки на память в строковых командах процессора 8086, которые не только изменяют содержимое по адресу памяти, на который указывает SI, но к SI также добавляется или вычитается 1. Это может оказаться очень эффективным при организации доступа к последовательным ячейкам памяти (например, к строке текста). Кроме того, можно сделать так, что строковые команды будут автоматически определенное число раз повторять свои действия, так что отдельная команда может выполнить сотни, а иногда и тысячи действий.

Регистр DI очень похож на регистр SI в том плане, что его можно использовать в качестве указателя ячейки памяти. При использовании его в строковых командах регистр DI несколько отличается от регистра SI. В то время как SI всегда используется в строковых командах как указатель на исходную ячейку памяти (источник), DI всегда служит указателем на целевую ячейку памяти (приемник). Кроме того, в строковых командах регистр SI обычно адресуется к памяти относительно сегментного регистра DS, в то время как DI всегда адресуется к памяти относительно сегментного регистра ES. Когда SI и DI используются в качестве указателей на ячейки памяти в других командах (не строковых), то они всегда адресуются к памяти относительно регистра DS.

Как и регистры BX, SI и DI, регистр BP, называемый базовым регистром, также может использоваться в качестве указателя на ячейку памяти, но здесь есть некоторые отличия. Регистры BX, SI и DI обычно ссылаются на память относительно сегментного регистра DS (или, в случае использования в строковых командах регистра DI, относительно сегментного регистра ES), а регистр BP адресуется к памяти относительно регистра SS (сегментный регистр стека). Регистр BP создан для обеспечения работы с параметрами процедур, локальными пере­менными и в других случаях, когда требуется адресация к памяти с использованием стека.

Регистр SP называется также указателем стека. Это «наименее общий» из регистров общего назначения, поскольку он практически всегда используется для специальной цели - обеспечения стека.

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

В стеке используется порядок запоминания байтов – «первый вошел – последний вышел». То есть последнее сохраненное в стеке значение будет первым значением, которое вы получите при чтении из стека.

Регистр SP в каждый момент времени указывает на вершину стека. Вершина стека - это то место, в котором в стеке сохраняется следующее помещенное туда значение. Действие, состоящее в занесении значений в стек, называют также «заталкиванием» (pushing) в стек (для этого используется команда PUSH). Аналогично, действие, состоящее в извлечении (выборке) значений из стека, называют также «вытал­киванием» (popping) из стека (для этого используется команда POP).

Хотя процессор 8086 и позволяет записывать значения в SP или складывать и вычитать хранящиеся в регистре SP значения (как это можно делать с обычными регистрами общего назначения), вам не следует к этому прибегать, если вы в точности не знаете, что делаете. Если вы изменяете SP, то изменяется расположение вершины стека, что быстро может привести к неприятностям, так как занесение данных в стек и извлечение их из него не является единственным способом использования стека. Стек используется всякий раз, когда вы вызываете или возвращаетесь из подпрограммы (процедуры или функции). Кроме того, стек используют некоторые системные программы (такие, как драйвер клавиатуры или системный таймер), когда они прерывают процессор 8086, чтобы выполнить свои функции. Все это означает, что стек может в любой момент потребоваться. Если вы измените SP, то правильное значение стека может оказаться недоступным, когда он потребуется системным программам. Можно свободно выполнять операции занесения в стек и извлечения из него, вызовы и возвраты управления, но не следует изменять значения регистра SP непо­средственно. Любой из других семи регистров общего назначения можно изменять в любой момент.

В 32-разрядных процессорах все регистры расширены до 32 бит и к прежнему обозна­чению их имен добавилась приставка Е (Extended – расширенный). Отсутствие приставки в имени означает ссылку на младшие 16 бит расширенных регистров. Инструкции, которые прежде адресовались к 16-разрядным регистрам, теперь могут адресоваться и к 32-разрядным расширенным при том же коде операции. Как и в 8086, возможно независимое обращение к младшему и старшему байтам регистров АХ, BX, CX и DX.

 

1.4.2.Указатель команд

 

В регистре IP (указатель команд) содержится адрес команды, которая должна быть выполнена следующей. Когда выполняется одна команда, указатель команд перемещается таким образом, чтобы указывать на адрес памяти, по которому хранится следующая команда. Обычно следующей выполняемой командой является команда, хранимая по следующему адресу памяти, но некоторые команды, такие как вызовы или переходы, могут привести к тому, что в указатель команд будет загружено новое значение. Таким образом будет выполнен переход на другой участок программы. Значение счетчика команд нельзя прочитать или записать непосредственно. Загрузить в указатель команд новое значение может только специальная команда перехода.

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

 

1.4.3. Сегментные регистры

 

Основной предпосылкой сегментации памяти является следующее: процессор 8086 может адресоваться к 1 мегабайту памяти. Для адресации ко всем ячейкам адресного пространства в 1 мегабайт необходимы 20-разрядные сегментные регистры, однако процессор 8086 использует только 16-разрядные указатели на ячейки памяти. Поэтому в процессоре 8086 применяется двухступенчатая схема адресации. Каждый 16-разрядный указатель памяти или смещение комбинируется с содержимым 16-разрядного сегментного регистра для формирования 20-разрядного адреса памяти.

Адрес состоит из двух 16-разрядных чисел, разделенных двоеточием, где первое число представляет номер сегмента, а второе – байт внутри него. Сегменты и смещения комбинируются следующим образом: значение сегмента сдвигается влево на 4 (т.е. умножается на 16), а затем складывается со смещением. Все команды и режимы адресации процессора 8086 по умолчанию работают относительно того или иного сегментного регистра, хотя в некоторых командах можно явно указать, что нужно использовать желаемый сегментный регистр.

Использование сегментов процессора 8086 приводит к некоторым интересным моментам. Один из них состоит в том, что только блок памяти размером в 64К в любой момент может адресоваться через сегментный регистр, так как 64К - это максимальный объем памяти, к которой можно адресоваться с помощью 16-битового смещения. При работе с большим (более 64К) объемом памяти и значение сегментного регистра, и смещение придется часто изменять.

Вторая особенность использования сегментов состоит в том, что каждая ячейка памяти адресуется через многие возможные сочетания «сегмент:смещение». Например, адрес памяти 100h адресуется с помощью следующих значений «сегмент:смещение»: 0:100h, 1:F0h, 2:E0h и т.д., так как при вычислении всех этих пар «сегмент:смещение» получается значение адреса 100h.

Аналогично регистрам общего назначения каждый сегментный регистр играет свою, конкретную роль. Регистр CS указывает на код программы, DS указывает на данные, SS - на стек, ES - на дополни­тельный сегмент данных, который может использоваться так, как это необходимо. Рассмотрим сегментные регистры более подробно.

Регистр CS указывает на начало блока памяти объемом 64К, или сегмент кода, в котором находится следующая выполняемая команда. Следующая команда, которую нужно выполнить, находится по смещению, определяемому в сегменте кода регистром IP, т.е. на нее указывает адрес (в форме «сегмент: смещение») CS:IP. Процессор 8086 никогда не может извлечь команду из сегмента, отличного от того, который определяется регистром CS.

Регистр CS можно изменять с помощью многих команд, включая отдельные команды перехода, вызовы и возвраты управления. Ни при каких обстоятельствах регистр CS нельзя загрузить непосредственно.

Регистр DS указывает на начало сегмента данных, которые представляет собой блок памяти объемом 64К, в котором находится большинство размещенных в памяти операндов. Обычно для ссылки на адреса памяти используются смещения, предполагающие использование регистров BX, SI или DI. В основном сегмент данных представляет собой то, о чем говорит его название: как правило, это сегмент, в котором находится текущий набор данных.

Регистр ES указывает на начало блока памяти объемом 64К, который называется дополнительным сегментом. Как и подразумевает его название, дополнительный сегмент не служит для какой-то конкретной цели, но доступен тогда, когда в нем возникает необходимость. Иногда сегмент ES используется для выделения дополнительного блока памяти объемом 64К для данных. Однако доступ к памяти в дополнительном сегменте менее эффективен, чем доступ к памяти в сегменте данных.

Особенно полезен дополнительный сегмент, когда используются строковые команды. Все строковые команды, которые выполняют запись в память, используют в качестве адреса, по которому нужно выполнить запись, пару регистров ES:DI. Это означает, что регистр ES особенно полезен при использовании его в качестве целевого сегмента при копировании блоков, сравнении строк, просмотре памяти и очистке блоков памяти.

 

1.4.4. Регистр состояния микропроцессора Intel 8086

 

16-разрядный регистр состояния FLAGS содержит всю необходимую информацию о состоянии процессора 8086 и результатах выполнения последней команды.

Битовые флаги:

OF - флаг переполнения;

DF - флаг направления;

IF - флаг прерывания;

TF - флаг трассировки;

SF - флаг знака;

ZF - флаг нуля;

AF - флаг дополнительного переноса;

PF - флаг четности;

CF - флаг переноса;

Флаг переполнения OF сигнализирует о переполнении, возникшем в результате сложения или вычитания.

Флаг направления DF определяет порядок сканирования цепочек байтов или слов в соответствующих командах: от меньших адресов к большим (DF = 0) или наоборот (DF = 1).

Флаг прерывания IF определяет реакцию процессора на запросы внешних прерываний по входу INT. Если IF = 0, запросы прерываний игнорируются (говорят также, что прерывания запрещены или замаскированы), а если IF = 1, процессор распознает запросы на прерывания и реагирует на них соответствующим образом. Состояние флага IF не влияет на восприятие внешних немаскируемых прерываний по входу NMI, а также внутренних (программных) прерываний.

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

Флаг знака SF повторяет значение старшего бита результата, который при использовании дополнительного кода соответствует знаку числа.

Флаг нуля ZF сигнализирует о получении нулевого результата операции.

Флаг вспомогательного переноса AF фиксирует перенос (заем) из младшей тетрады в старшую 8- или 16-битного результата. Он необходим только для команд десятичной арифметики.

Флаг четности (паритета) PF фиксирует наличие четного числа единиц в младших 8 разрядах результата операции. Этот флаг предназначен для контроля правильности передачи данных.

Флаг CF фиксирует значение переноса (заема), возникающего при сложении или вычитании байтов или слов, а также значение выдвигаемого бита при сдвиге операнда.

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

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

Для 32-разрядных процессоров регистр флагов EFLAGS также расширен до 32 бит. Биты 0-15, опреде­ленные для 8086 и 80286, имеют прежнее назначение. Ряд флагов добавился с появлением процессоров 4-го и 5-го поколений.

 

1.4.5. Управляющие регистры

 

Управляющие регистры (Control Registers) CRO, CR1, CR2, CR3 хранят признаки состояния процессора, общие для всех задач. Этих регистров в процессорах 8086/88 не было.

Регистр CRO обеспечивает общее управление режимами работы процессора. На­значение некоторых бит регистра CRO:

· РЕ - разрешение защиты. Установка этого флага инструк­цией переводит процессор в защищенный режим.

· МP - мониторинг сопроцессора.

· ЕМ - эмуляция сопроцессора. Установка этого флага позволяет прозрач­но осуществлять его программную эмуляцию.

· TS - флаг переключения задач, устанавливается автоматически при переключении задач.

· ЕТ - индикатор поддержки инструкций математического со­процессора.

· PG - включение механизма страничной переадресации памяти.

Регистр CR1 не используется.

Регистр CR2 хранит 32-битный линейный адрес, по которому был получен последний отказ страницы памяти.

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

Регистр CR4 (присутствует в процессорах Pentium и выше) содержит биты разре­шения архитектурных расширений.

 

1.4.6. Прочие регистры

 

Системные адресные регистры предназначены для ссылок на сегменты и таблицы в защищенном режиме.

Регистры отладки (Debug Register) предназначены для задания и управления от­ладочными точками останова.

Состав регистров тестирования (Test Register) варьируется в зависимости от типа процессора. Процессоры 80386 имели только два регистра, предназначенных для тестирования кэша страничной переадресации, для процессора 486 состав регистров расширен.

Модельно-специфические регистры MSR (Model-Specific Registers) предназначены для управления расширениями отладки, мониторингом производительности, машинным контролем, кэшированием областей физической памяти и другими функциями. Их назначение привя­зывается к архитектуре конкретного процессо­ра, состав меняется от модели к модели.

 

1.5. Представление команд в ЭВМ

 

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

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







Дата добавления: 2015-08-18; просмотров: 494. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

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

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

Studopedia.info - Студопедия - 2014-2024 год . (0.014 сек.) русская версия | украинская версия