Вы находитесь на странице: 1из 55

Внутренняя память

В зависимости от выполняемых функций, всю внутреннюю


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

множество типов энерго-независимой памяти: ROM, PROM,


EPROM, EEPROM, Flash Memory, которые различаются
способом построения запоминающих ячеек, и сферами
применения. Запись информации в энергонезависимую па-
мять, называется программированием.
Внутренняя память
По возможности программирования различают:
• Микросхемы, программируемые при изготовлении
(масочные ПЗУ, ROM).
• Микросхемы, программируемые однократно после
изготовления. Они называются программируемыми
(прожигаемыми) ПЗУ или PROM (Programmable ROM). Эти
микросхемы программируются на специальных устройствах
— программаторах.
• Микросхемы, стираемые и программируемые многократно
(репрограммируемые) РПЗУ или EPROM (Erasable PROM).

Запоминающие ячейки энергонезависимой памяти обычно


позволяют записывать только нули (реже — только единицы)
в предварительно стертые (чистые) ячейки. Однократно
программируемые микросхемы позволяют изменять только
исходное (после изготовления) состояние ячеек
.
Внутренняя память
Стирание ячеек выполняется либо для всей микросхемы,
либо для определенного блока, либо для одной ячейки (байта)
и приводит все биты стираемой области в одно состояние
(обычно в единичное). Процедура стирания занимает время
существенно большее, чем время записи. В зависимости от
способа стирания различают:
• микросхемы, стираемые ультрафиолетовым облучением —
их обычно называют просто EPROM (Erasable PROM —
стираемые мик-росхемы);
• электрически стираемые микросхемы EEPROM (Electrical
Erasable или ЭСПЗУ), в том числе и флэш-память.
Энергонезависимая память применяется для хранения
неизменяемой информации — системного программного
обеспечения, - BIOS, таблиц знакогенераторов графических
адаптеров и т.п.
Внутренняя память
Эта информация является ключевой для функционирования
системы, поэтому весьма важна ее сохранность и
предотвращение несанкционированного изменения.
Энергонезависимую память, запись в которую производят при
регулярной работе, называют NVRAM (Non-Volatile Random
Access Memory). Это название подчеркивает возможность
произвольной смены информации не только во всей ее
области, но и в отдельной ячейке или небольшом блоке.
Постоянная память — ROM, PROM, EPROM.
Масочные постоянные запоминающие устройства — ПЗУ
или ROM имеют самое высокое быстродействие, но не
позволяют модифицировать записанную в них информацию.
Однократно программируемые ППЗУ или PROM имеют
аналогичные параметры. Благодаря возможности их
программирования изготовителем оборудования, они находят
более широкое применение для хранения кодов BIOS и в
графических адаптерах.
Внутренняя память

Структура ПЗУ
Внутренняя память
Микросхемы EPROM тоже программируются на
программаторах, но относительно простой интерфейс записи
позволяет их программировать и непосредственно в
устройстве при подключении внешнего программатора.
Стирание таких микросхем осуществляется
ультрафиолетовым облучением в течение нескольких минут.
• Стирание информации происходит сразу для всей
микросхемы под воздействием облучения и занимает
несколько минут. Стертые ячейки имеют единичные значения
всех бит.
• Запись может производиться в любую часть микросхемы
побайтно. В пределах байта можно маскировать запись
отдельных бит, устанавливая им единичные значения данных.
Внутренняя память
Память с электрическим стиранием (EEPROM) и
флэш-память.
Стирание микросхем постоянной памяти возможно и
электрическим способом. Однако этот процесс требует
значительного расхода энергии, который выражается в
необходимости приложения относительно высокого
напряжения стирания и длительности импульса стирания
Кроме того, перед записью информации в ячейку обычно
требуется предварительное стирание, тоже достаточно
длительное.
Микросхемы EEPROM относительно небольшого объема
широко применяются в качестве энергонезависимой памяти
конфигурирования различных адаптеров. Современн
EEPROM имеют более сложную внутреннюю структуру, в
которую входит управляющий автомат, что, позволяет
упростить внешний интерфейс, делая возможным их
непосредственное подключение к микропроцессорной шине.
Внутренняя память
К классу EEPROM относится и флэш-память,
использующая особую технологию построения
запоминающих ячеек на базе полевых транзисторов.
Наиболее известны типы флэш-па-мяти, запоминающие
транзисторы в которых подключены к разрядным шинам,
соответственно, параллельно и последовательно.
Первый тип имеет относительно большие размеры ячеек и
быстрый произвольный доступ, что позволяет выполнять
программы непосредственно из этой памяти. Второй тип
имеет меньшие размеры ячеек и быстрый последовательный
доступ, что дает возможность реализовывать флэш-диски.
Для флэш-памяти характерна матричная организация, такая
же, как и для других видов полупроводниковой памяти.
Разрядность данных для микросхем составляет 1-2 байта.
Операция чтения из флэш-памяти выполняется как в
обычных ЗУ с произвольным доступом. Однако процедура
записи сохраняет в себе особенности ПЗУ.
Внутренняя память
Перед записью данных ячейки, в которые будет произво-
диться запись, должны быть очищены. Стирание заключается
в переводе элементов памяти в состояние единицы и
возможно только сразу для целого блока ячеек. Ячейки
группируются в блоки, допускающие независимое стирание.
Стирание информации происходит достаточно долго.
Выборочное стирание невозможно. В процессе записи
информации соответствующие элементы памяти переключа-
ются в нулевое состояние.
Так же, как и в ПЗУ, без стирания можно записать нули в
уже запрограммированные ячейки. Фактически при операции
записи производится два действия: запись и считывание, но
управление этими операциями производится внутренним
автоматом и "прозрачно" для процессора.
Внутренняя память
Разбиение адресного пространства микросхемы флэш-
памяти на блоки бывает двух видов: симметричное и
асимметричное.
В первом случае, называемом также Flash File, все блоки
(стирание в пределах каждого из которых производится
только для всего блока сразу) имеют одинаковый размер,
например. Количество блоков зависит от емкости
микросхемы.
В случае асимметричной архитектуры, называемой
иначе Boot Block, микросхемы памяти имеют однобайтную
или же переключаемую разрядность 8/16 бит. Один из
блоков, на которые разбито адресное пространство
микросхемы, дополнительно разбивается на меньшие блоки.
Этот блок имеет дополнительные аппаратные средства
защиты от модификации и предназначается для хранения
жизненно важных данных, не изменяемых при
запланированных моди-фикациях остальных областей.
Внутренняя память
Эти микросхемы специально предназначены для хранения
системного программного обеспечения (BIOS), а
привилегированный блок (Boot Block) хранит минимальный
загрузчик, позволяющий загрузить систему и выполнить
утилиту программирова-ния основного блока флэш-памяти.
Основной блок и блоки параметров по защите равноправны.
Выделение больших блоков параметров позволяет хранить в
них часто сменяемую информацию
Внутренняя память

Шина Управления

Dev

RAM CPU IO Controllers Dev

Dev

Шина Адреса

Шина Данных

Структура шинной организации компьютера


Внутренняя память
Физическая организация оперативной памяти
Оперативную память называют также RAM (Random Access
Memory). Так обозначают оперативную память, подчеркивая
ее отличие от ROM.
В настоящее время для реализации ОЗУ используют
микросхемы динамической памяти (DRAM — Dynamic RAM).
Такое название связано с особенностями организации
хранения информации.
Ячейка стандартного динамического ОЗУ представляет собой
конденсатор, хранящий электрический заряд. Как известно,
конденсаторы могут самопроизвольно разряжаться, что
приводит к потере информации. Чтобы этого не происходило,
информацию нужно постоянно обновлять. Так работают
практически все типы оперативной памяти
Внутренняя память
Обычно ячейки памяти конфигурируются в матрицу строк
и столбцов. Полный адрес ячейки данных, содержащий один
бит информации, делится на два компонента: адрес строки
(row address) и адрес столбца (column address).
Внутренняя память
Для передачи на микросхему памяти адреса строки служит
сигнал RAS (Row Address Strobe), а для столбца — сигнал CAS
(Column Address Strobe). При чтении данных на входы
микросхемы поступает сигнал OE (Output Enabled), а затем
подается адрес строки и сигнал RAS. Адрес ячейки поступает
по адресным линиям A0− An на дешифратор Считанная со всей
строки информация помещается в буфер ввода/вывода. После
сигнала RAS, с незначительной задержкой, на входы памяти
подается код адреса столбца, сопровождаемый сигналом CAS.
Это значит, что каждая шина столбца соединяется с ячейкой
памяти выбранной строки. Данные выбираются из буфера
ввода/вывода и поступают на выход памяти в соответствии с
адресом столбца.
Время доступа к блоку DRAM определяется в первую
очередь временем чтения (разряд конденсатора) и регенерации
(заряд конденсатора).
Внутренняя память

Т.к. информация хранится в виде заряда конденсатора, то для


того, чтобы считать записанную в ячейке информацию,
требуется считывающий усилитель, подключенный к каждой
общей шине столбца динамической памяти.
При считывании информация в ячейках разрушается, поэтому
считанная информация перезаписывается: выходы регистра
строки снова соединяются с общими шинами столбцов памяти.
Если ячейка имела заряд, то она снова будет заряжена еще до
завершения цикла чтения. На ячейки, которые не имели заряда,
напряжение не подается.
При выполнении записи в память, подается строб WE (Write
Enable), и информация поступает на соответствующую шину
столбца не из буфера, а с входа памяти в соответствии с адресом
столбца. Таким образом, прохождение данных при записи
задается комбинацией сигналов, определяющих адрес столбца и
строки, а также сигналом разрешения записи данных в память
Внутренняя память

Чаще всего доступ к ячейкам памяти происходит не


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

К тому же, чем больше слов пересылается за один раз (так


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

Страничный режим использует тот факт, что каждый


поступающий в процессор байт находится вблизи от уже
считанного из ОЗУ и логически связан с ним. Следовательно,
повторения сигнала RAS можно избежать, если адрес строки
лежит в пределах одной страницы, то есть адрес строки
неизменен. При организации работы страничного режима,
память делится на страницы, обычно размером 16 Кб. Микро-
схемы памяти, реализующие страничный режим, получили
название PM (Page Mode). Широкое распространение
получили модернизированные модули PM — FPM (Fast Page
Mode)
Внутренняя память

Структура модуля FPM


В микросхемах данного типа сигнал CAS используется и для
адресации столбца, и для указания времени, в течение которого
будет выполняться считывание данных.
Внутренняя память
Следующим способом, повышающим быстродействие
RAM, является пакетный режим. Суть его в том, что при
обращении к ячейке с каким-либо адресом, автоматически
генерируется пакет данных, включающий как эту, так и
несколько последующих ячеек. В результате при обращении
к ним, память сразу же, без задержек, готова выдать
требующуюся информацию. Размер пакета обычно состоит
из 32 или 64 бит.
Чередование или расслоение банков. Этот способ
устраняет следующий недостаток, присущий обычным
модулям памяти.
В случае если два последовательных обращения к памяти
происходят к одним и тем же микросхемам, то второе запро-
шенное слово будет получено только через время, равное
полному циклу памяти.
Внутренняя память
Решение проблемы заключается в разбиении памяти на
отдельные области (банки). Тогда при последовательном
доступе одно слово будет выдаваться первым банком,
следующим банком — второе и т.д. К тому моменту, когда
снова нужно будет обратиться к первому банку, пройдет
полный цикл, и он будет готов выдать данные без задержки.
Следующим способом повышения быстродействия стало создание
микросхем, работающих синхронно с центральным процессором.
Раньше производились только асинхронные микросхемы DRAM, то
есть такие, работа которых не синхронизирована с частотой работы
системной шины. Асинхронные элементы имеют только
информационные входы и срабатывают непосредственно после
изменения сигнала на входах. Сигнал на выходе появляется через
некоторое время.
Все рассмотренные выше элементы памяти работают асинхронно с
тактовой частотой системной шины.
Внутренняя память
У них для передачи данных из памяти в CPU необходимо подтверждение связи
между CPU и контроллером памяти.
Процесс чтения данных организован следующим образом. Центральный
процессор сообщает контроллеру памяти, с помощью соответствующего
сигнала, что ему необходимы данные, располагающиеся по конкретному
адресу. Далее осуществляется цикл чтения данных из оперативной памяти.
Когда данные прочитаны и находятся на выходных линиях DRAM, контроллер
памяти посылает процессору сигнал готовности, и только тогда данные
поступают на CPU. Если данные еще не готовы, то процессор вынужден
осуществлять холостые циклы (Weitstate) в ожидании данных.
Для срабатывания синхронных элементов смены сигналов на входах
недостаточно. Необходим дополнительный тактирующий сигнал, который
подается на соответствующий вход. В качестве такого сигнала выбран тактовый
сигнал системной шины. Этот сигнал задает частоту смены информации в
определенные моменты времени. В эти же моменты обновляется информация
на выходах элементов. Таким образом, процессы записи и считывания
информации в память строго привязаны к тактам CPU или шины.
Внутренняя память
В SDRAM используются четыре банка. Пакетно-конвейерный режим повышает
эффективность расслоения банков: практически всегда контроллер ОЗУ производит обращение
по смежным адресам, независимо от желания процессора.
Совместное использование синхронизации работы, расслоения банков и пакетно-конвейерного
режима способствует значительному ускорению работы системы памяти.

PD— сигнал Power


Down,
S— сигнал Suspend,
R— сигнал Refresh,
DQM— сигнал
управления
буферами
ввода/вывода,
A0 - A11— адресные
линии,
B0 - B1— линии
выбора банка.
Внутренняя память
Второе поколение элементов памяти SDRAM получило
название DDR SDRAM (Double Date Rate— удвоенная
передача данных). При использовании микросхем DDR
SDRAM данные считываются как по фронту, так и по спаду
тактового сигнала системной шины. Таким образом, за время
одного цикла выполняются два обращения к данным. Для
синхронизации пересылки данных наряду с тактовым сигна-
лом используется дополнительный сигнал DQS, поступающий
параллельно с данными.
Другая модификация данной памяти является двухканальной,
что позволяет в четыре раза повысить скорость передачи
данных по сравнению с обычной SDRAM
Логическая организация оперативной памяти
До сих пор в архитектуре IBM PC совместимых компьютеров на базе процессоров Intel
поддерживаются решения принятые на заре их существования. Эти решения принимались
исходя из ограниченности адресного пространства, которое составляло тогда всего 1мб.
Шина адреса была 20 — разрядной, процессор был 16 разрядный. Таким образом программе,
работающей на этом процессоре было доступно напрямую в рамках линейной адресации только
216 байт, т. е. 64 Кб.
Для того, чтобы иметь доступ к всему адресному пространству в архитектуру процессора
включили поддержку модели «сегмент — смещение». В рамках этой модели физический адрес
ФА на 20 разрядной шине адреса вычислялся автоматически так
ФА = Номер_сегмента *4 + Смещение
Логическая организация оперативной памяти
Однако распределение адресного пространства в 1 Мб
было сделано так:
• Conventional Memory (стандартная память)-640 Кб.
• UMA (Upper Memory Area) — верхняя память-384 Кб.
• HMA (High Memory Area) — высокая память-64 Кб.
• XMS (Extended Memory) — расширенная память. В этой
области может располагаться эмулируемая память (EMS-
Expanded Memory, фактически отображаемая через блоки
UMA).

XMS —
появилась для
поддержки
расширения
адресного
пространства
больше 1 Мб
Логическая организация оперативной памяти
Стандартная память (Conventional Memory, Base
Memory) начинается с нулевого адреса и занимает 640 Кб.
В пределах этой памяти выше уровня 640 Кб были
зарезервированы 384 Кб для выполнения внутренних
функций.
В Conventional Memory начиная с нулевого адреса
Предусмотрено место для:
 Таблицы векторов прерываний - 1024 байта, начиная с

нулевого адреса. Само название говорит, что речь идет о


таблице (состоящей из 256 элементов по 4 байта), в
которой находятся вектора прерываний — адреса
сервисных программ, входящих в состав операционной
системы и BIOS.

После таблицы векторов место для области данных
BIOS - 768 байт расположена за таблицей прерываний.
Здесь размещены, например, счетчик таймера, буфер
клавиатуры и другая внутренняя информация.
Логическая организация оперативной памяти
 Далее в стандартной оперативной памяти расположено ядро
операционной системы. Ядро DOS не имеет постоянного
адреса памяти. Его местоположение и размер памяти,
занимаемой им, зависит от версии операционной системы.
Впрочем, имеется возможность оптимизировать стандартную
память, поместив ядро операционной системы в другие
области памяти.
 Остальное пространство до адреса A0000 принадлежит
только программам и данным.
Conventional Memory
Адрес А0000
Программы и данные

Ядро ДОС
Данные BIOS 768 б
Таблица векторов прерываний 1024 б Адрес 00000
Логическая организация оперативной памяти
Верхняя память (UMA, Upper Memory Area). Следующая
за первыми 640 Кб область памяти по характеру загружаемой
в нее информации может быть названа "аппаратной". Эта
информация служит для сопряжения прикладных программ с
различными картами расширений, установленными в PC. Она
располагается по адресам от A0000 до FFFFF (от 640 Кб до 1
Мб), ее размер составляет 384 Кб.
Рассматриваемая область памяти не однородна. В UMA
могут размещаться ROM BIOS, а также модули постоянной и
оперативной памяти (виртуально), конструктивно
расположенные на картах расширения. Логически верхняя
память делится на блоки. Среди этих блоков некоторые
являются зарезервированными (пользователь не может их
использовать), а другие свободны.
Логическая организация оперативной памяти
Свободные блоки называют UMB (Upper Memory Block),
так как они находятся в верхней памяти. Например область
памяти графической карты занимает 128 Кб. Конструктивно
она располагается на видеокарте, а логически помещена в
адресное пространство PC. В памяти видеокарты хранится
изображение. Соответствующая программа обращается к
нему через "окно" размером 64 Кб.
Выше адреса C8000 находятся несколько свободных
блоков, которые могут быть использованы различным
образом.
В последних 64 Кб UMA т.е выше адреса F0000
располагается ROM BIOS.
Отметим, что в верхней памяти UMA имеются "дырки",
которые представляют собой свободную память,
самостоятельно не идентифицируемую системой. Пустуют,
как правило, область расширения системного ROM BIOS или
часть области под дополнительные модули ROM.
Логическая организация оперативной памяти
Высокая память (HMA, High Memory Area). Первый блок
величиной 64 Кб непосредственно выше границ 1 Мб
оперативной памяти обозначают как НМА. Своему существо-
ванию эта область целиком обязана несколько "ущербной"
эмуляции процессора 8088 процессором 80286.
Вся стандартная память, помимо того, что может быть
представлена в виде 16 неперекрываемых блоков размером 64
Кб каждый (0-F), также может быть представлена и в виде
перекрываемых 64-Кб областей, называемых сегментами.
Максимальный полный адрес в виде сегмент: смещение, по
которому может обратиться процессор i8088 — это
FFFF:000Fh (20 адресных линий). При увеличении этого
значения хотя бы на единицу произойдет циклический
перенос, и значение адреса станет 0000:0000.Для CPU 80286 и
выше в общем случае этого не случится, так как адресная шина
этих процессоров больше 20 разрядов, но адрес памяти при этом
превысит 1Мб.
Логическая организация оперативной памяти
Таким образом, PC с CPU не ниже 80286 в реальном режиме
может адресовать дополнительно практически целый сегмент
размером 64 Кб минус 16 байт.
Расширенная память (XMS, Extended Memory). Последний
тип памяти. В ней можно сформировать память согласно
спецификации EMS и разместить данные.
Следует отметить, что подобная фрагментация,
фактически являющаяся анахронизмом, сохраняется в силу
декларированной поддержки старого программного
обеспечения новыми моделями PC, хотя в настоящее время
наметился негласный отход от этой поддержки.

OС Windows, работающие на современных процессорах


такое разделение эмулируют программно при реализации
«командной строки». Вообще все они работают с памятью в
линейном режиме.
Кэширование оперативной памяти
Оперативная память, используемая в вычислительных
системах, реализуется на микросхемах динамической памяти,
обладающих относительно низким быстродействием.
С другой стороны, микросхемы статической памяти SRAM
по быстродействию приближаются к быстродействию
процессоров и могут работать с ним практически синхронно,
не внося в обмен существенных задержек.
Реализация основной памяти как статической не
оправдана ни экономически, ни технически. Разумным
компромиссом для повышения скорости является включение
в тракт обмена между процессором и основной памятью
дополнительного относительно небольшого, но
быстродействующего накапливающего буфера. Это
известный в технике прием, позволяющий согласовывать
работу устройств с разным быстродействием.
Кэширование оперативной памяти
Этот буфер называется кэш-памятью (cache) и реализуется
на основе статической па-мяти SRAM. Использование для
обмена с памятью кэш-буфера называется кэшированием
памяти.
Cache controller

CPU Cache DRAM

С точки зрения выполнения программ этот кэш


"прозрачен", так как не представляет собой адресуемую часть
памяти и работает так, что при обменах с основной памятью,
его присутствие можно обнаружить только на аппаратном
уровне. Этот буфер хранит копию блоков информации из
основной памяти, к которым с большой вероятностью будет в
ближайшее время происходить обращение. Кэш не может
хранить копию всей основной памяти, поскольку его объем
относительно невелик.
Кэширование оперативной памяти
Он хранит ограниченное количество блоков данных и список
их текущего соответствия областям основной памяти.
Кэшироваться может не вся память доступная процессору, а
только ее часть. Управляет работой кэш-памяти так
называемый кэш-контроллер, входящий в тот или иной чипсет.
При каждом обращении к
кэшируемой памяти кэш-
контроллер с помощью
каталога проверяет, находится
ли действительная копия
затребованных данных в кэш-
буфере. Если она там есть, то
этот случай называется кэш-
попаданием (cache hit), и
обращение за данными идет
только к кэш-памяти.
Кэширование оперативной памяти
Если действительная копия данных отсутствует, то это случай
кэш-промаха (cache miss), и обращение за данными
происходит к основной памяти. В соответствии с алгоритмом
кэширования этот блок, считанный из основной памяти,
заместит один из блоков кэш.
Алгоритм кэширования определяет условия и порядок
действий по замещению данных в кэш на данные из памяти. От
эффективности этого алгоритма зависит относительное
количество кэш-попаданий и, следовательно, эффективность
использования кэш-памяти.
Существуют два подхода к замещению блоков в кэш-памяти.
В первом - обращение к основной памяти начинается
одновременно с поиском в каталоге, и в случае кэш-попадания,
прерывается. Архитектура кэш, поддерживающая этот поиск,
называется одновременной (архитектура Look Aside). В этом
случае кэш работает быстро, но, за счет постоянного
обращения к основной памяти увеличивается
энергопотребление.
Кэширование оперативной памяти
При втором подходе обращение к основной памяти
происходит только после обнаружения кэш-промаха. Это
архитектура сквозного поиска (Look Through). В этом случае
теряется, по крайней мере, такт процессора, но снижается
энергопотребление.
Эффективность работы кэш зависит от соотношения объемов
основной и кэш-памяти. Чем больше относительный объем
кэш- памяти, тем меньше промахов и больше быстродействие
системы процессор-память. Однако в силу экономических, а
так же и технических соображений размер кэш не может быть
слишком большим.
Поэтому в современных системах применяют двойную
буферизацию, разделяя кэш на два уровня. Кэш первого уровня
(L1 Cache) имеет небольшой объем, работает на внутренней
тактовой частоте процессора и встраивается непосредственно в
процессор.
Кэширование оперативной памяти
Первичный кэш, как правило, состоит из двух буферов,
причем один применяется для кэширования команд, а
другой для кэширования данных. Такое разделение
повышает эффективность работы конвейера команд
процессора.
Кэш второго уровня (L2 Cache) размещается вне
процессора и работает на внешней тактовой частоте
процессора. При такой двойной буферизации, когда
происходит промах для первичного кэш, поиск
продолжается во вторичном кэш, а не в медленной основной
памяти. Если имеет место попадание во вторичный кэш, то
из него считываются информация в процессор, а затем
происходит замещение строки первичного кэш информацией
из вторичного. В случае промаха информация считывается
из памяти, а затем ей замещается, соответствующие строки
первичного и вторичного кэш.
Кэширование оперативной памяти
При этом возможно упреждающее чтение блока
информации, которая вероятно скоро может понадобиться
процессору, во вторичный кэш. Такое упреждающее чтение
не затрагивает операций процессора при обработке
первичного кэш и может выполняться параллельно с ними.
В современных процессорах Intel вторичный кэш
размещается в одном корпусе с процессором и работает уже
на внутренней частоте процессора. Кроме того, в
современных системах на материнских платах может
располагаться дополнительный кэш третьего уровня (L3
Cache).
Контроллер кэш должен обеспечивать согласованность
(когерентность) данных кэш-памяти обоих уровней с
данными в основной памяти. Обращение к этим данным
может производить не только процессор, но и любое другое
активное устройство (bus master), управляющее обменом по
системной шине.
Кэширование оперативной памяти

Контроллер кэш обеспечивает обмен, как с памятью, так и с


процессором только пакетом, то есть строкой
фиксированной, для данной архитектуры длины.
Строка предназначена для хранения копии блока основной
памяти, размер которого совпадает с длиной строки кэш. В
кэш-каталоге хранится информация об адресе
скопированного из основной памяти блока, а также флаги
состояния строки.
Строка может быть действительной (valid), то есть она в
данный момент времени достоверно отображает
соответствующий ей блок основной памяти, или
недействительной (invalid)— в этом случае она не
отображает никакого блока и может быть использована для
копирования.
Информация о том, какой именно блок основной памяти
соответствует действительной строке, а также флаги ее
Кэширование оперативной памяти
состояния называется тэгом (tag). Эта информация хранится в
специальной памяти тэгов (tag RAM), называемой также кэш-
каталогом.
В операциях обмена с основной памятью участвует вся
строка целиком, в этом случае кэш называется
несекторируемым. Для лучшего согласования с механизмами
доступа к основной памяти длина строки кэш совпадает с
объемом, передаваемых за один пакетный цикл, данных. Для
процессора Pentium эта величина равна 32 байтам.
Возможен вариант секторированной (sectored) организации
кэш-памяти В этом случае одна строка содержит несколько
смежных ячеек или секторов, размер которых соответствует
размеру минимального пакета обмена. При этом в кэш-
каталоге для каждой строки должны хранится флаги
действительности для всех секторов данной строки.
Кэширование оперативной памяти
Секторирование позволяет экономить память, необходимую
для хранения каталога при увеличении объема кэш, так как под
тэг отводится несколько большее количество бит и, выгоднее
использовать дополнительные биты действительности, чем
увеличивать количество эле-ментов каталога.
Обычно строки кэш выделяются для отображения только при
операциях чтения из основной памяти. Запись блока, не
имеющего копии в кэш-памяти, всегда производится в
основную память.
Поведение кэш-контроллера при реализации операций записи
в основную память, когда копия блока памяти находится в
какой либо строке кэш, называется политикой записи.
Различают сквозную (WT — write through) и обратную (WB
— write back) политики записи
Кэширование оперативной памяти
Алгоритм сквозной записи WT выполняет каждую операцию
записи, попадающей в кэшированный блок одновременно и в
строку кэш, и в основную память.
В этом алгоритме в каждой операции записи процессору
приходится ждать момента окончания записи в медленную
основную память.
Алгоритм прост в реализации и легко позволяет достичь
целостности данных, поскольку копии данных в кэш и блоке в
основной памяти всегда совпадают. В этом случае отпадает
необходимость хранения флагов действительности, так как
любая строка всегда полностью соответствует отображаемому
блоку памяти, который однозначно идентифицируется
значением тэга в кэш-каталоге. Однако за эту простоту
приходится расплачиваться низкой эффективностью кэш при
операциях записи.
Кэширование оперативной памяти

Алгоритм обратной записи WB позволяет уменьшить


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

Существуют три возможных архитектуры реализации кэш-


памяти, отличающиеся по способу установления взаимного
соответствия между строками кэш и блоками в основной
памяти. Они называются:
 кэш прямого отображения (direct-mapped cache);


наборно-ассоциативный кэш (set-associative cache);
 полностью ассоциативный кэш (fully associative cache)

Кэш прямого отображения


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

Кэш, объемом 256 Кб


с размером строки 32
байта. Объем
кэшируемой памяти
64 Мб.
Кэширование оперативной памяти
Кэшируемая основная память условно разбивается на
страницы, размер которых совпадает с размером кэш-памяти.
Каждая страница основной памяти также условно разбивается
на строки, размер которых совпадает с размером строки кэш.
Каждая строка кэш-памяти может отображать только
соответствующую ей строку из любой страницы основной
памяти.
Поскольку объем основной памяти существенно больше
объёма кэш, то на каждую строку кэш может претендовать
множество соответствующих ей строк основной памяти,
находящихся на разных страницах. Одна строка кэш в
определенный момент времени может содержать копию
только одной соответствующей ей строки из множества
страниц основной памяти.
Номер строки в кэш памяти называется индексом строки.
Номер страницы в основной памяти называется тэгом.
Кэширование оперативной памяти
Информация о том, какому именно тэгу (номеру страницы)
соответствует в данный момент строка кэш, хранится в
связанной с данной строкой ячейке специальной памяти тэгов
(tag RAM).
По адресу ячейки в основной памяти, определяется тэг и
индекс. Младшие биты этого адреса задают смещение байта в
условной строке основной памяти. Средние биты адреса
представляют собой индекс, а старшие — ее тэг.
Память тэгов обязательно должна иметь количество ячеек,
равное количеству строк кэш, а ее разрядность должна быть
достаточной, для хранения значений тэгов, а также флагов
действительности и модификации.
Пусть имеем кэш, объемом 256 Кб с размером строки 32
байта, а объем кэшируемой памяти составляет 64 Мб. Тогда
такой кэш содержит 256К/ 32 = 8K строк. При этом основная
память условно будет разбита на 256 страниц, содержащих по
8К строк каждая.
Кэширование оперативной памяти
В кэш - каталоге хранятся также бит признака
действительности V и бит признака модифицированности
данных M.
В начале обращения к памяти за данными контроллер
сначала считывает ячейку каталога с заданным индексом и
сравнивает значение тэга в этой ячейке со старшими битами
адреса памяти и анализирует признак действительности. Если
окажется, что требуемый блок не находится в кэш (кэш-
промах), то контроллер генерирует обращение к основной
памяти. В случае кэш-попадания запрос обслуживается кэш
памятью.
В случае промаха, после считывания из основной памяти
новые данные помещаются в соответствующую строку кэш,
если она "чистая". Тэг этой строки записывается в кэш-
каталог и устанавливается признак действительности данных.
При этом в кэш-память переписывается вся строка целиком, а
признак действительности относится ко всей строке.
Кэширование оперативной памяти
Если контроллер кэш реализует упреждающее чтение, то в
последующие свободные циклы шины, обновится и
следующая за ней строка, при условии, что она также является
"чистой". Такая организация обмена, позволяет осуществить
пакетный цикл чтения из кэш через границу строки.
Изменение данных в оперативной памяти может
производиться контроллером в соответствии с алгоритмами
либо сквозной, либо обратной записи.
Кэш прямого отображения имеет серьезный недостаток.
Пусть в ходе выполнения программы процессору требуются
данные, находящиеся в памяти смещенные друг относительно
друга на величину, кратную размеру страницы, то есть
строки, находящиеся на разных страницах, но имеющие один
и тот же индекс.
В этом случае очередное обращение будет замещать строки,
считанные в предыдущем и требующиеся в следующем
обращении.
Кэширование оперативной памяти
При этом кэш все время будет работать в режиме кэш-
промаха, его работа будет интенсивна, но бесполезна (cache
trashing).
С этим недостатком можно бороться, увеличивая размер кэш
прямого отображения, но это дает незначительный эффект в
многозадачных системах, поскольку разные задачи могут
претендовать на одни и те же строки кэш.
Архитектура прямого отображения применяется, как правило,
для кэш второго уровня.
Наборно-ассоциативный кэш
Он позволяет каждому блоку кэшируемой памяти
отображаться на одну из нескольких строк кэш-памяти,
объединенных в набор . Эту архитектуру можно рассматривать
как несколько параллельно и согласованно работающих
каналов кэш прямого отображения, в которой контроллер
принимает решение о том, в какую из строк набора надо
помещать очередной блок данных из памяти.
Кэширование оперативной памяти
В самом простом случае набор состоит из двух строк, и
блок из памяти может помещаться в одну из них. Этот кэш
должен содержать два банка тэгов, а кэш-каталог должен
состоять из двух частей.
Первая часть каталога связана с первым банком тэгов, а
вторая со вторым банком. Кроме того, в кэш-каталоге
дополнительно должен быть признак, определяющий, какая
строка из набора подлежит замещению.
Номер набора (индекс), на который может отображаться
затребованная строка оперативной памяти, определяется
средней частью адреса. Старшая часть адреса (тэг)
записывается в ячейку одного из двух банков тэгов этого
набора. Строка набора, отображающая требуемый блок,
определяется сравнением тэгов, выполняемым параллельно
для всех каналов кэш.
Кэширование оперативной памяти

Наборно-ассоциативный
кэш
Кэширование оперативной памяти
В случае кэш-промаха обычно замещается та строка из набора,
последнее обращение к которой было раньше. Этот алгоритм
замещения наиболее старой строки из набора называется LRU
(Last Recently Used) и реализуется с помощью
соответствующего признака.
Этот признак требует одного бита в случае набора из двух
строк и нескольких бит, если количество строк в наборе
больше двух. При относительно большом количестве строк в
наборе возможно применение алгоритма замещения типа FIFO
или даже случайного выбора.
Наборно-ассоциативная архитектура применяется как для
первичного, так и для вторичного кэш.

Полностью ассоциативный кэш


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

Вам также может понравиться