Внутренняя память компьютера

Внутренняя память компьютера

Виды оперативной памяти

Выше были выделены два основных вида памяти – оперативная и дисковая. Рассмотрим подробнее внутреннюю память компьютера, которая физически представлена модулями (микросхемами) оперативной (ОЗУ или RAM) и постоянной (ПЗУ или ROM) памяти.

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

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

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

 

Оперативная память выполнена обычно на микросхемах динамического типа с произвольной выборкой (DRAM – Dynamic Random Access Memory). Каждый бит такой памяти физически представляется в виде наличия (или отсутствия) заряда на конденсаторе, образованном в структуре полупроводникового кристалла.

В микросхемах статической памяти (SRAM – Static RAM) в качестве элементарной ячейки использует триггер (2 или более транзисторов) – бистабильный элемент (с двумя устойчивыми состояниями). Микросхемы статической памяти, изготовленные по КМДП (КМОП) технологии имеют во много раз меньшее потребление энергии, чем микросхемы динамической памяти и применяются в ПК с автономным питанием. Статическая память обладает более высоким быстродействием и используется, например, для организации кэш-памяти. Статическая память гораздо дороже динамической.

Постоянная память содержит информацию, которая не должна изменяться. Она обеспечивает режимы считывания и хранения информации. Микросхемы ПЗУ по способу занесения в них информации делятся на масочные однократно программируемые изготовителем и многократно программируемые изготовителем EPROM (Erasable PROM).

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

К EPROM с электрическим стиранием информации относятся и микросхемы флэш- (flash) памяти. Они отличаются высокой скоростью доступа и быстрым стиранием записанной информации. Данный тип памяти сегодня широко используется для хранения информации BIOS.

 

Элементы памяти для ПК конструктивно выполнены в виде отдельных микросхем в корпусах DIP (Dual Inline Package), либо в виде модулей памяти типа SIMM (Single Inline Memory Module), DIMM (Dual Inline Memory Module).

Современные системные платы оснащены разъемами для DIMM-модулей.

Модули памяти могут включать дополнительные разряды контроля четности.

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

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

Если кэш-память интегрирована на кристалле процессора, то ее называют кэш-памятью 1 уровня (Level-1). Когда кэш реализован в виде отдельных микросхем на системной плате, то говорят о кэше 2-го уровня (Level-2).

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

ROM BIOS и CMOS-RAM

Базовую систему ввода/вывода (BIOS – Basic Input Output System) можно рассматривать и как составную часть аппаратных средств и как один из программных модулей ОС. BIOS включает в себя набор программ ввода/вывода, благодаря которым ОС и прикладные программы могут взаимодействовать с различными внешними устройствами.

BIOS также содержит программу тестирования ПК при включении питания (POST – Power On Self Test) и программу загрузчика. Большинство современных видеоадаптеров и контроллеры накопителей имеют собственную систему BIOS, которая обычно дополняет системную.

Система BIOS обычно реализована в виде 1 – 2 микросхем, установленных на системной плате ПК. Известные производители BIOS: AMI, Award, Phoenix.

Под CMOS-RAM понимается "энергонезависимая" память (с аккумулятором), в котором хранится конфигурация ПК – размер и тип модулей ОЗУ, типы накопителей, время и т.п.

В системе BIOS имеется программа, называемая Setup, которая может изменять содержимое CMOS-памяти, т. е. задавать параметры конфигурации системы.

Адресное пространство персонального компьютера

Максимальный объем внутренней памяти для МП 8086/8088 составляет 1 Мбайт или 220 байт. Он определяется разрядностью адресной шины (20) и устройством центрального микропроцессора, позволяющим адресоваться в командах к 220 байт памяти.

В этом диапазоне адресов (или адресном пространстве) разработчики ПК предусмотрели память только для чтения (BIOS) и зарезервировали часть памяти для внутренних нужд компьютера. Общий объем зарезервированной памяти составляет 384 Кбайт.

Так возникло ограничение максимального объема базовой или стандартной памяти для МП 8086/8088- 640 Кбайт.

Память в диапазоне адресов 640-1024 Кбайт называется областью старшей (верхней) памяти (UMB – Upper Memory Block). В этой области находится память видеоадаптера и область ROM BIOS. Кроме того, в ней остаются свободные участки ("дыры") оперативной памяти.

Вначале 80-х годов фирмы-производители оборудования для ПК стали выпускать платы расширения памяти. Доступ к этой памяти осуществляется через специальную программу-драйвер управления памятью (EMM – Expanded Memory Manager). В старшей памяти (384 Кбайт) выделяется окно размером 64 Кбайт, в котором отображаются произвольные 4 "страницы" по 16 Кбайт из всего объема памяти на плате расширения. В обращении к драйверу программа номера страниц, которые следует отобразить в окне. Поэтому название этой памяти – "отображаемая память" (expanded memory).

Микропроцессоры 80286 и выше могут непосредственно работать с оперативной памятью более 1 Мбайт в специальном защищенном режиме (protected mode). Они также могут работать и в обычном режиме, совместимом с микропроцессором 8086 (real mode).

В защищенном режиме микропроцессор 80286 может обращаться к 16 Мбайт (224 байт) памяти, а микропроцессоры 80386 и старше – к 4 Гбайт (232 байт). В ПК с этими микропроцессорами часть памяти сверх 1 Мбайт называется дополнительной памятью (extended memory).

Способ доступа к дополнительной памяти был унифицирован в стандарте XMS 3.0 (Extended Memory Specification). Он предусматривает выделение области высокой памяти (HMA – High Memory Area) в адресах 1024 – 1088 Кбайт и собственно XMS-память в адресном пространстве выше 1088 Кбайт. Микропроцессоры 80386 и выше могут эмулировать EMS-память, используя XMS-память.

Программы управления памятью

Драйвер дополнительной памяти HIMEM.SYS обеспечивает стандарт XMS для доступа к расширенной и верхней памяти в микропроцессорах 80286 и выше. Задается в файле CONFIG.SYS командной строкой DEVICE=HIMEM.SYS. Чтобы загрузить ядро ДОС в высокую память необходимо добавить команду DOS=HIGH.

Драйвер отображаемой памяти ЕММ386.ЕХЕ для микропроцессоров 80386 и выше использует XMS-память для эмуляции EMS-памяти, а также обеспечивает DOS-программам доступ к старшим адресам памяти (UMB). Задается в файле CONFIG.SYS командной строкой DEVICE=EMM386.EXE RAM. Дополнительная настройка доступа к верхней памяти обеспечиваются строкой DOS=UMB. После этого можно загружать резидентную программу DOS в верхнюю память по команде LH (LoadHigh). Например, LH KEYRUS.COM.

Микропроцессор персонального компьютера его программная модель

Микропроцессор (МП) – это полупроводниковый кристалл или комплект кристаллов, на которых реализован центральный процессор компьютера.

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

В ПК применяются следующие МП: 8086, 8088, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium II, III, IV производства фирмы Intel и их аналоги 5х86, К5, К6 фирм AMD, IBM, CYRIX,

Все эти МП различных фирм совместимы по системе команд и контактным выводам (в соответствующих поколениях МП).

На системной плате МП, как правило, устанавливается в специальный разъем (Socket) и при необходимости легко заменяется другим МП такой же марки или его аналог. Целью замены может быть повышение производительности (тактовой частоты) либо надежности работы, устранение неисправности.

При установке МП с другой тактовой частотой или другого типа с помощью перемычек (Jumpers) на системной плате устанавливают соответствующие настройки (её режимы работы).

 

МП характеризуется:

быстродействием (тактовой частотой)

длиной слова (внутренней и внешней)

архитектурой

набором команд

 

Архитектуру МП определяют регистры, стеки, систему адресации, средства ввода/вывода, типы обрабатываемых данных.

Типы данных представляют собой базовые информационные объекты, манипулирование которыми осуществляется системой команд: обычно это бит, полубайт (4 бита), байт (8 бит), слово (16 бит) и двойное слово (32 бита).

Слово определяется, как правило, числом двоичных разрядов, поступающих по шине данных МП.

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

 

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

Первый МП был изготовлен фирмой Intel на четырёх кристаллах (ЦП, ПЗУ, ОЗУ и сдвиговый регистр) в 1971 г.. Его характеристики: шина данных – 4 бит; адресуемая память – 4,5 Кбит, 45 команд.

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

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

Программная модель МП Intel 8086 (отечественный аналог – КР1810ВМ86) включает:

16-разрядное арифметико-логическое устройство;

четырнадцать 16-разрядных регистров;

адресное пространство памяти размером 1 Мбайт (220 байт);

адресное пространство ввода/вывода размером 64 Кбайт (216 байт).

 

Для программиста ячейки памяти и порты ввода/вывода доступны, как 8/16-битные элементы (байты и слова).

Слово образуют 2 любых байта с последовательными адресами: младший байт слова является байтом с меньшим адресом, старший – с большим адресом.

Процессор поддерживает два способа адресации устройств ввода/вывода:

через отдельное адресное пространство ввода/вывода

через (с отображением на) адресное пространство памяти.

Системы с отображением на адресное пространство ввода/вывода имеют адреса в диапазоне от 0 до 64 Кбайт.

Адресация порта осуществляется с помощью регистра DX или прямо с помощью байта, закодированного в команде (непосредственная, прямая адресация). Прямая адресация портов ввода/вывода допустима только для адресов в диапазоне 0…255.

Регистры

МП 8086 имеет четырнадцать 16-разрядных регистров, которые используются для управления исполнением команд, адресации и выполнения арифметических операций. Регистры подразделяются на группы.

Регистры общего назначения (РОН) являются основными рабочими регистрами программ. Это регистры AX, BX, CX, DX.

Их отличают то, что к ним можно адресоваться как отдельным словом, так и однобайтным словом. Например, АХ: старший байт АН, младший байт AL.

Регистр АХ – аккумулятор, который используется во всех операциях ввода/вывода, в операциях со строками и в арифметических операциях.

Регистр ВХ – базовый регистр, единственный из РОН, используемый в индексной адресации. Он также используется в вычислениях.

Регистр DX – регистр данных. Используется в операциях ввода/вы­вода, а также в операциях умножения и деления больших чисел (совместно с АХ).

Любой из РОН может использоваться для сложения или вычитания 8 или 16-разрядных величин.

Регистр указателя команд (IP – Instruction Pointer) используется для выборки очередной команды с целью её выполнения.

Регистр флагов (Flags) содержит следующие биты, которые отражают состояние компьютера и признаки выполнения машинных команд.

Бит 11 OF (Overflow Flag) – переполнение – равен 1, если объём результата превышает размер ячейки назначения.

Бит 10 DF (Direction Flag) – направления – устанавливается 1 для автоматического декремента в командах обработки строк (0 – для инкремента).

Бит 9 IF (Trace Flag) – разрешения прерывания – если 1, то прерывания разрешены, а если 0, то распознаются т.н. "немаскируемые " прерывания.

Бит 8 TF (Trace Flag) – флаг трассировки. Если = 1, то процессор переходит в состояние программного прерывания INT3 после выполнения каждой команды.

Бит 7 SF (Sign Flag) – признак знака. = 1 – для отрицательных чисел результата и = 0 для положительных.

Бит 6 ZF (Zero Flag) – признак нуля. =1, если результат равен нулю.

Бит 4 AF (Auxiliary Flag) – дополнительный признак переноса. Устанавливается в 1 во время выполнения команд десятичного сложения (и вычитания) при необходимости переноса или заёма между полубайтами.

Бит 2 PF (Parity Flag) – признак четности – равен 1, если результат имеет чётное число единиц.

Бит 0 CF (Carry Flag) – признак переноса – равен 1, если имеет место перенос или заём из старшего бита результата. Он используется для выполнения операций сложения (вычитания) над числами длиной в несколько слов, которые сопряжены переносом из слова в слово.

Регистры указателя SP и BP используются для обращения к данным в стеке.

Регистр SP (Stack Pointer) – указатель стека. Он используется для временного хранения адресов и иногда данных. Адресует стек.

Регистр BP (Base Pointer) – указатель базы. Он обеспечивает ссылки на параметры (адрес, данные), передаваемые через стек.

Стек – это линейный список, записи в котором выбираются, вставляются и удаляются с одного конца, называемого вершиной стека. Это обеспечивает доступ к записям по принципу "магазина": последний вошел, первый вышел (LIFO – Last In First Out).

Индексные регистры SI и DI используются для адресации (а также для выполнения операций сложения и вычитания). Регистр SI (Source Index) – индекс источника и регистр DI (Destination Index) – индекс приемника используются в некоторых операциях со строками или символами.

Регистры сегмента: CS, DS, SS, ES.

Сегментом называется область памяти, которая начинается на границе параграфа, т.е. в любой точке, адрес которой кратен 16. Регистр сегмента содержит адрес его начала (базовый адрес). В программе все адреса заложены относительно начала сегмента, и они определяются как смещение (offset) от начала компонента.

Существуют сегменты:

кода – содержит машинные команды; адресуется регистром CS совместно с IP.

данных – содержит данные, т.е. константы, переменные и рабочие области программы; адресуется регистром DS.

стека – содержит передаваемые в МП параметры и адреса возврата в точку вызова МП; адресуется регистром SS совместно с SP.

дополнительных данных; адресуется регистром ES.

Способы адресации и команды микропроцессора

Адреса ячеек памяти. В МП 8086 шина адреса состоит из 20 линий, следовательно он может адресовать 220 байт. Однако размерности регистров, с помощью которых они адресуются, ограничены 16 битами. Поэтому при формировании адреса из двух частей (сегмента и смещения) для его вычисления внутри сегмента используется формула:

EA=AS*16+A0

где AS – адрес начала сегмента (т.е. содержит содержимое одного из регистров CS, SS, DS, ES)

А0 – смещение относительно начала сегмента (содержимое регистра IP, SP или смещение адреса переменной, расположенной в сегменте данных).

Для записи адреса используется форма AS:A0 например, запись 400:20 определяет следующий логический адрес:

EA=400L*16+20h=4000L+20h=4020h

Это равнозначно 401:10, 402:0 и т.д.

Т.к. в программах начальный адрес сегмента всегда определяется содержимым одного из сегментных регистров, то в некоторых случаях адреса записываются в виде, например, DS:10. в этом случае адрес составляет текущее значение регистра сегмента данных и смещение в 10h байт от начала сегмента. В случае косвенной адресации возможна запись адреса, например, в виде SS:BP. Т.е. содержимое SS определяет компоненту AS, регистре BP – компоненту А0 адреса). Если при определении адреса в программе используется только часть А0, с AS остаётся неизменной, то адрес называется ближним (near address), если используется и А0 и AS, то адрес называется дальним (far address).

В MS-DOS адресное пространство памяти имеет несколько выделенных областей. Это вектора прерываний (начинаются с 0:0, длиной 1 Кбайт), системная область (начинается с 40:0), область видеопамяти (графическая с А000:0, текстовая с В000:0).

Команды микропроцессора

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

Исходя из логики их выполнения команд разбиты на следующие группы:

  1. Пересылки данных;
  2. Арифметические;
  3. Сдвига;
  4. Логические;
  5. Передачи управления;
  6. Ввода/вывода;
  7. Работы со строками;
  8. Дополнительные.

Способы адресации

Под адресацией данных в МП подразумеваются способы описания соответствующих адресов хранения операндов, которые можно применять в командах.

Основные способы описания операндов:

  1. Операнды-регистры
  2. Непосредственные операнды
  3. Операнды в памяти

 

Регистровая адресация. Операнды (источники и приемники) – это внутренние регистры МП: AX, BX, CX, DX, SP, BP, SI, DI, а в операциях пересылки – дополнительные сегментные регистры. Пример: MOV AH, BH.

Непосредственная адресация. Операнды – это константы, непосредственно задаваемые в команде МП (байты, слова, двойные слова). Пример: MOV AH, –2.

 

Адресация ячеек памяти. При вычислении адреса в памяти используются две составляющие – сегмент и смещение относительно его начала. Пример: MOV W1, 31h.

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

При косвенной адресации смещение соответствующего операнда в сегменте содержится в одном из регистров МП. Пример: MOV [BX], AL. Косвенная адресация позволяет легко организовывать доступ к сложным элементам данных, например, для обеспечения доступа к массиву данных. Для обозначения косвенной адресации название регистра заключают в квадратные скобки (BX – регистровая адресация, а [BX] – косвенная). Обычно в качестве регистра косвенной адресации используются [BX], [SI], [DI], [BP]. Для [BX], [SI], [DI] неявно подразумевается сегмент DS, а для [BP] – сегмент SS.

Косвенная адресация по базе означает, что исполнительный адрес вычисляется как сумма содержимого соответствующего регистра и некоторой константы. Этот способ адресации используется для доступа к полям структуры, начальный адрес которой задается в регистре, а смещение соответствующего поля – константой, записанной непосредственно в команде (используются базовые регистры [BX], [BP] с соответствующими сегментами DS, SS).

Прямая индексная адресация эквивалентна косвенной по базе. При этом используются регистры SI, DI и соответствующий DS сегмент. Примеры:

MOV X3[DI], 0        (то же самое: MOV [X3+DI], 0);

MOV X3[BX][DX+2], AH (Х3 – адрес массива).

Адресация по базе с индексированием. В этом случае исполнительный адрес определяется как сумма трех составляющих: содержимого двух регистров и константы, задаваемой непосредственно в команде. База – ВХ, BP, Индекс – SI, DI.

[BX+SI], [BX+DI] – с сегментом DS.

[BP+SI], [BP+DI] – с сегментом SS.

В общем случае при использовании косвенной адресации исполнительный адрес можно представить как EA = [регистр базы] + [индексный регистр] + константа. Любая из этих компонент может отсутствовать.

 

Команды пересылки данных имеют общий формат с двумя операндами – источником и приемником: MOV <приемник>, <источник>

Примеры:

MOV AH, BH

MOV AH, BX

MOV AX, -2

MOV DL, B1  , где В1 – адрес ячейки

Команда XCHG <оп.1>, <оп.2> – обмен операндов используется для любых РОН и переменных в памяти, кроме 2-х ячеек памяти.

Примеры арифметических команд

ADD <приемник>, <источник>

ADC <приемник>, <источник>

INC <приемник>

SUB <приемник>, <источник>

SBB <приемник>, <источник>

DEC <приемник>

MUL <источник>

IMUL <источник>

DIV <источник>

IDIV <источник>

 

Примеры команд сдвига

SAL <операнд>, <величина>

SAR <операнд>, <величина>

SHL <операнд>, <величина>

SHR <операнд>, <величина>

 

Примеры логических команд

AND

OR

XOR

NOT

 

Примеры команд передачи управления

перехода JMP, JZ, JNZ, JCXZ;

цикла LOOP;

вызова подпрограммы и возврата из нее CALL, RET;

вызова прерывания и возврата из него INT, IRET.

 

Примеры дополнительных команд

работы со стеком: PUSH, POP;

установки и очистки флагов STC, CLC;

холостого хода NOP.

 

Примеры команд ввода/вывода

IN ..<аккумулятор>, <адрес>

OUT..<адрес>, <аккумулятор>

 

Примеры команд работы со строками

MOVS

CMPS

OUTS