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

Тематический обзор 1 страница

Читайте также:
  1. A) Шырыш рельефінің бұзылысы 1 страница
  2. A) Шырыш рельефінің бұзылысы 2 страница
  3. A) Шырыш рельефінің бұзылысы 2 страница
  4. A) Шырыш рельефінің бұзылысы 3 страница
  5. A) Шырыш рельефінің бұзылысы 3 страница
  6. A) Шырыш рельефінің бұзылысы 4 страница
  7. A) Шырыш рельефінің бұзылысы 4 страница

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

 

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.


Дата добавления: 2015-07-08; просмотров: 149 | Нарушение авторских прав


Читайте в этой же книге: ТЕМАТИЧЕСКИЙ ОБЗОР 3 страница | ТЕМАТИЧЕСКИЙ ОБЗОР 4 страница | ТЕМАТИЧЕСКИЙ ОБЗОР 5 страница | ТЕМАТИЧЕСКИЙ ОБЗОР 6 страница | Адреса и прерывания последовательных портов | Общие сведения об интерфейсе RS–232C | ГЛОССАРИЙ |
<== предыдущая страница | следующая страница ==>
Базовая| ТЕМАТИЧЕСКИЙ ОБЗОР 2 страница

mybiblioteka.su - 2015-2024 год. (0.021 сек.)