Инструменты пользователя

Инструменты сайта


examination:asm:question4

Вопрос №4. Оперативная и внешняя память, регистры.

Оперативная память

Оперативная память - энергозависимая память, которая хранит данные во время работы ЭВМ, является достаточно быстрым типом памяти, но имеет меньшие объемы по сравнению с внешней памятью, к оперативной памяти можно отнести модули оперативной памяти в компьютере

Физическая память, к которой процессор имеет доступ по шине адреса, называется оперативной памятью (или оперативным запоминающим устройством — ОЗУ). На самом нижнем уровне память компьютера можно рассматривать как массив битов. Один бит может хранить значение 0 или 1. Для физической реализации битов и работы с ними идеально подходят логические схемы. Но процессору неудобно работать с памятью на уровне битов, поэтому реально ОЗУ организовано как последовательность ячеек — байтов. Один байт состоит из восьми битов. Каждому байту соответствует свой уникальный адрес (его номер), называемый физическим. Диапазон значений физических адресов зависит от разрядности шины адреса процессора. Для i486 и Pentium он находится в пределах от 0 до 232 - 1 (4 Гбайт). Для процессоров Pentium Pro/II/III/IV этот диапазон шире — от 0 до 236 - 1 (64 Гбайт).

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

• компактность хранения адреса в машинной команде;

• гибкость механизма адресации;

• защиту адресных пространств задач в многозадачной системе;

• поддержку виртуальной памяти.

Внешняя память

Внешняя память- к внешней памяти можно отнести:

• Жесткие диски

• Оптические накопители (CD,DVD)

• Магнитные накопители (Дискеты)

• Флеш накопители

К характеристикам можно отнести:

• Емкость

• Скорость чтения\записи

• Тип подключения • Стоимость

• Размеры

• Надежность

Жесткие диски можно охарактеризовать более подробно, у каждого жесткого диска есть определенное количество параметров:

• Число поверхностей — определяет количество физических дисков, нанизанных на ось.

• Число цилиндров — определяет, сколько дорожек будет располагаться на одной поверхности.

• Число секторов — общее число секторов на всех дорожках всех поверхностей накопителя.

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

• Время перехода от одной дорожки к другой обычно составляет от 3.5 до 5 миллисекунд, а у самых быстрых моделей может быть от 0.6 до 1 миллисекунды. Этот показатель является одним из определяющих быстродействие накопителя, т.к. именно переход с дорожки на дорожку является самым длительным процессом в серии процессов произвольного чтения/записи на дисковом устройстве.

• Скорость передачи данных, называемая также пропускной способностью, определяет скорость, с которой данные считываются или записываются на диск после того, как головки займут необходимое положение. Измеряется в мегабайтах в секунду (MBps) или мегабитах в секунду (Mbps) и является характеристикой контроллера и интерфейса.

Кэш-Память

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

Регистры

Программные регистры

Регистрами называют участки высокоскоростной памяти, расположенные внутри ЦПУ и предназначенные для оперативного хранения данных и быстрого доступа к ним со стороны внутренних компонентов процессора. Например, при выполнении оптимизации циклов программы по скорости, переменные, к которым выполняется доступ внутри цикла, располагают в регистрах процессора, а не в памяти.

На рис. 2.10 изображена структура основных программных регистров (program execution registers) процессора семейства IA-32 и их названия, определенные специалистами фирмы Intel. Существует 8 регистров общего назначения, 6 сегментных регистров, регистр состояния процессора, или регистр флагов (ЕFLAGS), и регистр указателя команд (EIP).

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

К некоторым 16-разрядным регистрам можно обращаться как к двум 8-разрядным регистрам. Например, регистр ЕАХ является 32-разрядным, однако его младшие 16-разрядов находятся в регистре АХ. Старшие 8-разрядов регистра АХ находятся в регистре АН, а младшие 8-разрядов — в регистре AL.

В табл. 2.1 показаны особенности обращения к другим регистрам общего назначения, которые мы условно назвали основными.

К оставшимся регистрам общего назначения, которые не указаны в табл. 2.1, можно обращаться либо как к 32-разрядным, либо как к 16 разрядным регистрам, как показано в табл. 2.2. Они не поддерживают возможность обращения к младшим и старшим байтам своей 16-разрядной части, как это было при рассмотрении примера с регистром ЕАХ. 16-разрядные части этих регистров обычно используются только при написании программ для реального режима адресации.

Особенности использования регистров. При выполнении команд процессором часть регистров общего назначения имеют особое значение.

• Содержимое регистра ЕАХ автоматически используется при выполнении команд умножения и деления. Поскольку этот регистр обычно связан с выполнением арифметических команд, его часто называют расширенным регистром аккумулятора (extended accumulator).

• Регистр ЕСХ автоматически используется процессором в качестве счетчика цикла.

• С помощью регистра ESP происходит обращение к данным, хранящимся в стеке. Стек — это системная область памяти, обращение к которой осуществляется по принципу «последним записали, первым взяли». Этот регистр обычно никогда не используется для выполнения обычных арифметических операций и команд пересылки данных. Его часто называют расширенным регистром указателя стека (extended stack pointer).

• Регистры ЕSI и ЕDI обычно используют для команд высокоскоростной пересылки данных из одного участка памяти в другой. Поэтому их иногда называют расширенными индексными регистрами источника и получателя данных (extended source index и extended destination index).

• Регистр EВР обычно используется в языках программирования высокого уровня для обращения к параметрам функции и для ссылок на локальные переменные, размещенные в стеке. Он не должен использоваться для выполнения обычных арифметических операций или для перемещения данных, за исключением случаев применения особых методик программирования опытными программистами. Его часто называют расширенным регистром указателя стекового фрейма (extended frame pointer).

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

кода (CS), в них хранятся только команды процессора, т.е. машинный код программы;

данных (DS, ES, FS и GS), в них хранятся области памяти, выделяемые под переменные программы и под данные;

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

Регистр указателя команд. В регистре EIP, который также называют регистром указателя команд, хранится адрес следующей выполняемой команды. В процессоре есть несколько команд, которые влияют на содержимое этого регистра. Изменение адреса, хранящегося в регистре ЕIP, вызывает передачу управления на новый участок программы.

Регистр флагов EFLAGS. Каждый бит этого регистра отвечает либо за особенности выполнения некоторых команд ЦПУ, либо отражает результат выполнения команд блоком АЛУ процессора. Для анализа битов этого регистра предусмотрены специальные команды процессора.

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

Флаги состояния. Эти флаги отражают результат выполнения арифметической или логической команды ЦПУ. Их название, описание и сокращенное обозначение приведены ниже.

Флаг переноса (Сапу flag, или CF) устанавливается, если при выполнении беззнаковой арифметической операции получается число, разрядность которого превышает разрядность выделенного для него поля результата.

Флаг переполнения (Overflow flag, или OF) устанавливается, если при выполнении арифметической операции со знаком получается число, разрядность которого превышает разрядность выделенного для него поля результата.

Флаг знака (Sign flag, или SF) устанавливается, если при выполнении арифметической или логической операции получается отрицательное число (т.е. старший бит результата равен 1).

Флаг нуля (Zero flag, или ZF) устанавливается, если при выполнении арифметической или логической операции получается число, равное нулю (т.е. все биты результата равны 0).

Флаг служебного переноса (Auxiliary Carry, или AF) устанавливается, если при выполнении арифметической операции с 8-разрядным операндом происходит перенос из третьего бита в четвертый.

Флаг четности (Parity flag, или PF) устанавливается в случае, если в результате выполнения арифметической или логической операции получается число, содержащее четное количество единичных битов.

examination/asm/question4.txt · Последние изменения: 2014/01/15 08:13 (внешнее изменение)