Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


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

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

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

  • регистры микропроцессора, например, 64-х разрядные с мнемоническим обозначением на ассемблере: RAX, RBX …; 32-х разрядные регистры EAX, EBX, ECX, EDX …; 16-ти разрядные регистры АХ, СХ … ; 8-ми разрядные регистры АН, AL и т.д.;

  • ячейки ПЗУ (постоянное запоминающее устройство: например, ячейка ПЗУ с адресом FFFF0h);

  • ячейки ОЗУ (динамическая память: например, ячейка памяти с адресом 2000h);

  • регистры контроллеров (расположенные в контроллерах внешних устройств и контроллерах системной платы: например, регистр с адресом 1F0 – регистр данных контроллера HDD).

Ниже (на примере RAX) показаныадресуемые части 64-х разрядных регистров процессоров поддерживающих 64-х битную архитектуру (рис. 1):

Рис. 1.

Все эти программно-доступные элементы имеют свои индивидуальные шестнадцатеричные или мнемонические адреса (например: 70, 0700h, FFFF0h, AX, EBX и др.), которые программист может указывать в командах процессору. Регистры, расположенные в контроллерах внешних устройств и контроллерах системной платы, указываются только в командах IN, OUT, INS, OUTS. Регистры микропроцессора указываются в командах ассемблера их мнемоническим обозначением EAX, EBX, … и т.д. Команды на ассемблере - это мнемоническое, удобное для человека, изображение команд микропроцессора в символьном виде. Например, команде микропроцессора EBFEh (1110 1011 1111 1110В ) однозначно соответствует запись той же команды на ассемблере JMP 100. Программы на ассемблере удобно набирать с помощью редактора (или программы «профотладчика»), а затем специальная программа-транслятор обрабатывает и заменяет каждую команду ассемблера соответствующей двоичной командой микропроцессора. В результате получаем команды программы, которую может выполнять микропроцессор.

При выполнении команд или аппаратных функций микропроцессор инициирует операции обмена по шине данных системного интерфейса. Обмен осуществляется между регистром процессора и программно-доступным элементом, находящимся вне процессора (с ячейкой памяти, ячейкой ПЗУ, регистром контроллера системной платы или регистром контроллера внешнего устройства).

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

 

Рис. 2.

Назначение разрядов регистра флагов:

- VM (бит 17) - обеспечивает режим виртуального 8086 в защищенном режиме;

- RF (бит 16) - флаг возобновления, временно прекращает отладку, возвращая процессор к нормальному выполнению программы;

- NT (бит 14) - вложенная задача, процессор использует этот флаг для управления последовательностью прерываемых и вызываемых задач;

- IOPL (биты 13-12) - уровень привилегий ввода-вывода, используется в защищенном режиме;

- OF (бит 11) - флаг переполнения, устанавливается, если операция привела к переносу (заему) в знаковый (самый старший) бит результата, но не привела к переносу (заему) из самого старшего бита, или наоборот;

- DF (бит 10) - флаг направления, показывает должны ли регистры ESI и EDI инкрементироваться или декрементироваться во время операций над строками. Если флаг сброшен они инкрементируются, иначе - декрементируются;

- IF (бит 9) - разрешение прерываний, очистка этого бита запрещает процессору реагировать на внешние маскируемые прерывания;

- TF (бит 8) - флаг ловушки, установка флага переводит процессор в пошаговый режим для отладки;

- SF (бит 7) - флаг знака, устанавливается если есть 1 в старшем бите результата;

- ZF (бит 6) - флаг нуля, устанавливается если все биты результата равны 0;

- AF (бит 4) - флаг вспомогательного переноса, используется для упрощения сложения и вычитания упакованных двоично-десятичных чисел. Независимо от длины операнда (8, 16 или 32 бита) флаг AF установлен, если операция привела к заему из бита 3 при вычитании или переносу из бита 3 при сложении, иначе он сброшен. Это связано с тем, что двоично-десятичные числа используют биты с 0 по 3 для представления десятичных цифр;

- PF (бит 2) - флаг четности, устанавливается если младшие восемь бит результата содержат четное число единиц (проверка на четность);

- CF (бит 0) - флаг переноса, устанавливается если операция привела к переносу из старшего бита при сложении или к заему в старший бит при вычитании.

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

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

При обращении к памяти процессор выдает на «шину адреса» системного интерфейса адрес ячейки памяти. Контроллер кэш-памяти, постоянно проверяет имеется ли копия содержимого ячейки памяти, к которой обращается процессор, в быстродействующей кэш-памяти и, если ответ положителен, фиксирует кэш-попадание, и разрешает считывание из кэш-памяти. Процессор принимает очередной пакет данных. Если ответ отрицательный, то контроллер кэш-памяти фиксирует кэш-промах и по адресу, выставленному процессором, организует считывание 32-х байтной строки из DRAM в кэш, после чего фиксирует кэш-попадание и разрешает считывание из кэш-памяти. В свободные циклы шины контроллер организует опережающую «подкачку» следующих смежных 32-х байтных строк из DRAM в кэш-память. Процент кэш-попаданий составляет 90-96%, что обуславливает высокую эффективность использования кэш-памяти.


Лицензия