Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Дубинин Н.М. Организация ЭВМ и Систем - файл Глава 3.doc


Загрузка...
Дубинин Н.М. Организация ЭВМ и Систем
скачать (1177.9 kb.)

Доступные файлы (9):

Введение.doc24kb.10.03.2003 23:05скачать
Глава 1.doc439kb.27.11.2003 21:23скачать
Глава 2.doc868kb.27.11.2003 21:30скачать
Глава 3.doc1403kb.28.11.2003 12:28скачать
Глава 4.doc384kb.04.11.2003 20:36скачать
Глава 5.doc959kb.27.11.2003 21:52скачать
МАИ (серый).wmf
Оглавление.doc45kb.04.11.2003 20:41скачать
Титульный.doc62kb.28.11.2003 12:27скачать

Глава 3.doc

  1   2
Реклама MarketGid:
Загрузка...
Глава III. Организация памяти ЭВМ
1. Классификация и параметры запоминающих устройств
Запоминающие устройства (ЗУ) предназначены для записи, хранения и выдачи информации в ЭВМ. Они позволяют сохранять (фиксировать) данные, промежуточные вычисления, константы, коды команд. Фиксация предполагает запись информации в ЗУ, после чего она там хранится, а при необходимости по запросам извлекается или считывается, т.е. осуществляется чтение ЗУ. Сохраняемая в ЗУ информация кодируется в 2 СС одинарными, двойными, счетверенными словами или байтами. Каждый байт содержит 8 бит. Бит – наименьшая емкость двоичной памяти, способной хранить только «0» или «1». В слове можно разместить 2 байта, двойное слово содержит 4 байта, счетверенное – 8 байт. Все ЗУ разбивается на отдельные ячейки. Каждая ячейка имеет возможность (доступ) осуществлять запись, хранение и считывание информации величиной, равной ее разрядности, за одно обращение.

По способам поиска информации различают адресные и ассоциативные ЗУ. В адресных ЗУ каждая ячейка имеет свой номер – адрес, по которому осуществляется обращение к ней. В ассоциативных ЗУ поиск ячейки ведется по некоторым закодированным признакам – запросам, т.е. «по содержанию». Таким признаком может быть, например, содержание части разрядов любой ячейки, передаваемой в ЗУ как ключ для обнаружения тех ячеек, где он имеется [12]. Адресные ЗУ для поиска одной искомой ячейки используют дешифраторы. Ассоциативные осуществляют поиск по всему массиву ЗУ схемами сравнения.

По способу доступа к отдельным ячейкам ЗУ различают:

- с последовательным доступом, при котором информация как записывается, так и считывается последовательно (ЗУ на магнитных лентах, перфолентах, линиях задержки, CD-ROM);

- с циклическим доступом, при котором место чтения или записи периодически повторяется (НГМД, НЖМД, магнитные барабаны);

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

По способу хранения и возможности записи информации различают:

- ПЗУ – постоянные ЗУ с неизменяющейся в процессе всей эксплуатации информацией;

- ППЗУ – полупостоянные ЗУ с возможностью многократного перепрограммирования содержания ячеек;

- ОЗУ – оперативные ЗУ с обменом в режиме записи / считывания по запросу системной шины;

- СОЗУ – сверхоперативные ЗУ – регистровая память на триггерах с высоким быстродействием.

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

По внутренней организации ЗУ бывают:

- 2D – в 2 измерениях, когда массив памяти имеет N ячеек и адресных шин. Каждая ячейка возбуждается одной своей адресной шиной, а каждый разряд подключен к своей информационной шине;

- 3D – «куб памяти» – память в трех измерениях, в которой имеется по оси Х и Y адресные шины и два дешифратора DCX и DCY, каждый разряд представляет собой однобитный массив памяти, подключенный к своей информационной шине;

- 2.5 D – по структуре эта память является промежуточной между 2D и 3D, имеет один DCX, а число DCY равно числу разрядов. Каждый разряд размещается в своем массиве, подключенном к одной информационной шине.

Основными параметрами ЗУ является емкость, быстродействие и стоимость. Емкость ЗУ выражается в битах, байтах, килобайтах (Кб), мегабайтах (Мб), гигабайтах (Гб) и терабайтах (Тб). Быстродействие ЗУ определяется временем считывания данных в цикле чтения tЦЧ и временем передачи в цикле записи tЦЗ. В общем виде tЦЧ, tЦЗ можно вычислить по формулам:

tЦЗ = tП + tС + tЗ;

tЦЧ = tП + tЧ + tР,

где tП – время, затрачиваемое в ЗУ на поиск ячейки;

tС – время стирания предыдущей информации, если она может исказить записываемую;

tЗ – время записи данных в ячейку;

tЧ – время извлечения информации на ШД;

tР – время регенерации данных (подзарядка конденсаторов в DRAM).

Промежуток времени от начала обращения к ЗУ до момента появления нужной информации на ШД называется временем выборки и определяется по формуле:

tВ = tП + tЧ.

Быстродействие ЗУ измеряется в наносекундах (1нс = 10-9 с), микросекундах (1мкс = 10-6 с) или миллисекундах (1мс = 10-3 с). Стоимость ЗУ (С) чаще всего оценивается приведенной стоимостью (СП), которая определяется из выражения:

Сп = С / V (руб/бит).

Величина приведенной стоимости используется для выбора наиболее дешевой памяти, для комплектации или проектирования ЭВМ. Для новых ЗУ характерно постоянное увеличение быстродействия, емкости V и уменьшение СП.

^ 2. Постоянные и полупостоянные запоминающие устройства
Постоянные и полупостоянные ЗУ используются в ЭВМ как долговременная память для хранения констант, программ BIOS, POST, конфигурации ЭВМ и параметров устройств. ПЗУ и ППЗУ (флэш-память) могут строиться по структуре 2D емкостью до нескольких десятков Кб по схеме [1], показанной на рис. 3.1. При подаче двоичного кода физического адреса <ФА (1,n)> на ША и сигнала чтения дешифратором адреса DCA возбуждается одна из адресных (горизонтальных) шин Ai с номером i{1, 2,...,N}, равным адресу ячейки. Шина Ai «подключает» элементы памяти Эi1, Эi2, ..., ЭiR к информационным (вертикальным) шинам массива {Эi,j}. Если j й элемент памяти хранит «1», то он возбуждает вертикальную шину Dj и устанавливает в «1» j-й разряд информационного регистра RGИ (j) = 1. Если он хранит «0», то j-й разряд RGИ обнуляется. С появлением сигнала чтения W = 1 содержимое регистра передается на шину данных, т.е. выполняется микрооперация ШД (1,R) = RGИ (1,R).

RGИ

R

R

n

N

n

Э11

Э12

Э1R1

Э21

Э22

Э2R

ЭNR

ЭN2

ЭN1

n

W


Рис. 3.1. Схема ЗУ типа 2D
Режим чтения характерен для ПЗУ, элементы памяти которого не изменяют своего состояния в процессе эксплуатации и программируются один раз. Наиболее просто программирование можно осуществить распайкой диодов (рис. 3.2, а). Наличие диода VD1 между шинами Ai и Dj создает однонаправленную гальваническую связь от Ai к Dj и кодируется как «1» в j м разряде i-й ячейки. Отсутствие диода (разрыв связи) программируется как «0». Недостатком способа ручной распайки является значительная трудоемкость «программирования», и поэтому он уже нигде не применяется.

Для автоматизации «прошивки» ПЗУ используются элементы памяти, показанные на рис. 3.2, б, в.

Эти элементы при изготовлении ИС имеются на всех пересечениях адресных и информационных шин. В процессе программирования на адресной шине Ai и информационных шинах Dj последовательно устанавливается такое напряжение, когда пробивается и закорачивается один из стабилитронов (состояние логической «1») или сгорает, образуя разрыв, плавкая перемычка Rn (состояние «0»). Режим программирования путем пережигания плавких перемычек используется в ИС серии К 556 РТ, где, например, К 556 РТ5 имеет емкость 4096 бит с организацией NR = 512  8 и временем выборки 70 нс.


а б в г
Рис. 3.2. Элементы памяти ПЗУ и ППЗУ: а – диодное ПЗУ, б – ПЗУ на стабилитронах, в – ПЗУ с плавкими перемычками, г – ПЗУ на транзисторах

с изолированным затвором
Отличие ИС ППЗУ от ПЗУ заключается в том, что они позволяют изменять в процессе эксплуатации состояния элементов памяти от нескольких десятков до нескольких тысяч раз, а в новых БИС от 100 тысяч до 1 млн циклов перезаписи. Программирование осуществляется занесением объемного заряда электронов (-) в область плавающего затвора диэлектрика, находящуюся около изолированного затвора ИЗ. Этот процесс можно пояснить с помощью рис. 3.2, г.

При подаче высокого напряжения Е к p-n переходу стока (С) либо истока (И) происходит инжекция электронов в область плавающего затвора. После снятия потенциала Е этот заряд из-за отсутствия проводимости в диэлектрике остается длительное время и притягивает дырки, создавая проводящим слой между И-С. При отсутствии заряда связи между И-С не будет. Если после программирования все стоки транзисторов VT2 подключить к нулевому потенциалу (), то с возбуждением шины Ai транзисторы VT1 откроются и передадут состояние (потенциал) истока транзисторов VT2 (при наличии заряда на Dj будет «0», при отсутствии заряда – «1»).

Для повторного программирования ППЗУ стирание зарядов осуществляется либо электрически (ИС КР 558 РР), подачей высоких напряжений обратной полярности, либо ультрафиолетовым облучением диэлектрика ИС через кварцевую крышку в корпусе (ИС КР 573 РФ). Процесс электрического стирания вызывает значительный ток от утекания заряда из области плавающего затвора под действием повышенного обратного напряжения более 10 В. Чтобы кристалл не разогревался выше допустимой температуры, ток ограничивают уменьшая число одновременно стираемых ячеек. Основной причиной ограничения числа циклов перезаписи и уменьшения времени эксплуатации ППЗУ является аккумулируемый после каждой перезаписи износ плавающего затвора транзистора, который происходит от многократного воздействия повышенного напряжения более 10 В при стирании информации. При этом происходит нарушение оксидного слоя либо накопление электронов в плавающем затворе. Стирание информации выполняют в несколько циклов. При этом переходы И-С всех транзисторов VT2 становятся непроводящими и все ячейки содержат «1».

Перепрограммирование ИС ведется последовательно отдельно для каждой ячейки. Сначала передается ее адрес, затем передается код записываемых данных в RGИ (1, R). Затем возбуждается шина Е в разрядах, где кодируется «0», и пропускаются информационные разряды, где кодируются «1».

Так как накопление заряда идет медленно, запись осуществляется циклами. Длительность каждого цикла около 0.5 мс, число циклов (около 100) определяется необходимым временем занесения заряда в ИС. Принцип с ультрафиолетовым стиранием и электрической записью информации используется в ИС КР 573 РФ2 емкостью 2 Кб (N R = 2048  8 (бит)) с временем выборки 0.9 мкс, временем хранения заряда 104 час и возможностью до 10 раз перезаписи данных. Функционально ППЗУ (ПЗУ) представляет собой шифратор, который преобразует унитарный код с адресной шины в позиционный, подключаемый к информационной шине. В зависимости от способа объединения элементов памяти, показанных на рис. 3.2, г, шифратор может реализовываться на схемах И – НЕ или ИЛИ – НЕ (Dj = (А1х1j 2х2j V...V АNxNj), j=1, R; где хij – содержимое j-го разряда, i й ячейки). Схемы ИЛИ – НЕ обеспечивают высокое быстродействие, но имеют меньшую емкость, чем ППЗУ на И – НЕ.
^ 3. Оперативные запоминающие устройства
Для построения ОЗУ большой емкости используются элементы статической или динамической памяти, которые строятся на простейших элементах транзисторно-транзисторной логики (ТТЛ), инжекционной логики (И2Л), эмиттерносвязной логики (ЭСЛ) и других технологий [5].

В основе динамических ОЗУ (DRAM) используется заряд межэлектродных конденсаторов Cij емкостью менее 0.1 пФ и током заряда менее 10-10 А. Схема i-го разряда ячейки памяти динамического ОЗУ (DRAM) представлена на рис. 3.3. Для записи логической “1” в элемент памяти активизируются информационная шина Dj и адресная шина Аi. При этом униполярный (полевой) транзистор открывается и через него конденсатор Cij заряжается. При отсутствии открывающего напряжения на шине Аi транзистор закрыт, конденсатор Cij заряжен и хранит информацию. При подаче напряжения чтения на шину Аi транзистор VTij открывается и напряжение конденсатора Cij подается на шину Dj, и он разряжается. Ток разряда Cij усиливается и фиксируется в информационном регистре ОЗУ.

Dj

VTij

Cij

Ai

Рис. 3.3. Элемент динамического ОЗУ
Для устранения искажений информации в результате утечки заряда с конденсатора элементы памяти периодически, через 2 мс или более, в зависимости от типа ИС, необходимо перезаряжать в цикле регенерации. Преимуществом динамических ОЗУ является высокая степень интеграции элементов памяти и малая потребляемая мощность. Недостатком их является большое время доступа 50-70 нс по сравнению со статической памятью, где оно равно менее 15 нс.

Статическая оперативная память (SRAM) строится на быстродействующих биполярных транзисторах, например, двухэмиттерных транзисторах TTL (рис. 3.4). В режиме хранения информации между шинами Аx и Аy поддерживается минимальное напряжение (около 0.2 В), сохраняя один из транзисторов открытым (логический “0”), другой закрытым (логическая “1”). На обоих проводах информационной парафазной шины () устанавливается положительное напряжение, которое обеспечивает нулевой ток через эмиттеры Э2. Элемент памяти (ЭП) находится в пассивном режиме хранения информации с наименьшим уровнем потребления энергии.

Рис. 3.4. Элемент статического ОЗУ
В режиме чтения информации шины Аx и Аy возбуждаются и на них подаются потенциалы, обеспечивающие быстрое чтение разных токов, поступающих с эмиттеров Э2 на провода в усилитель чтения. В зависимости от величины токов в проводах, после их усиления триггер Т2 (см. рис. 3.5, а) информационного регистра ОЗУ устанавливается в “1” или “0”. При этом состояние ЭП не изменяется и он может быть переведен в режим хранения предыдущего состояния.

Для записи информации в бистабильный ЭП возбуждаются адресные шины Аx и Аy и соответствующий один провод или под действием управления с усилителя записи. Противоположный возбужденному проводу () транзистор VT1 (VT2) открывается, т.к. через его эмиттер Э2 протекает больший ток под действием большей разности потенциалов . ЭП переходит в устойчивое состояние: VT1 открыт, а VT2 закрыт.

На статических и динамических ЭП изготавливают ИС различной емкости и разрядности. На рис. 3.5, б приведена типичная ИС емкостью

N = 2L = mn (бит).

Массив ЭП состоит из n строк и m столбцов. Каждый ЭП хранит один бит информации.


а б
Рис. 3.5. Структура ИС ОЗУ: а – 1- битная схема ОЗУ, б – обобщенная схема ОЗУ
Адрес ЭП, участвующего в операции чтения /записи, определяется L-разрядным двоичным кодом, поступающим с шины адреса ША в регистр адреса RGA. Младшие l1 разряда адреса в режиме чтения или записи информации в ОЗУ с появлением сигнала выборки строки RAS поступают на дешифратор строк DCx. Старшие l2 разряда адреса с появлением сигнала выборки столбца CAS поступают на дешифратор столбцов DCy.

В соответствии с двоичным кодом адреса каждый из дешифраторов возбуждает только одну выходную шину. На пересечении возбужденных шин Аx и Аy соответствующий ЭП подключается к внутренней информационной парафазной шине .

В режиме записи (W=0, CAS=0, RAS=0) УУ включает усилитель записи (УЗ) и подсоединяет его к шине . Одновременно к шине дешифраторами DCx и DCy подключается один ЭП, который УЗ устанавливается в устойчивое состояние, задаваемое триггером Т1. Триггер Т1 перед началом записи воспринимает один бит информации через коммутатор К с внешней шины данных ШД.

В режиме чтения (W=1, RAS=0, CAS=0) УУ отключает УЗ от шины и подключает к ней усилитель чтения (УЧ). Одновременно выход триггера ^ Т2 через К подсоединяется к ШД. В соответствии с кодом адреса усилителем чтения (УЧ) устанавливается состояние триггера Т2, соответствующее состоянию возбужденному ЭП дешифраторами DCx и DCy. В следующий момент времени информация с триггера Т2 передается на ШД.

При хранении информации (CAS=RAS=1) коммутатор К отключает от ШД ОЗУ. На всех шинах Аx, Аy, устанавливаются потенциалы, обеспечивающие пассивный режим сохранения состояний ЭП.
^ 4. Характеристики обмена и типы оперативной памяти
Оперативная память постоянно используется МП в процессе решения задач, предоставляя ему коды команд, данные и адреса операндов и устройств. Основными характеристиками ОЗУ является быстродействие и емкость памяти. Чем быстрее протекает обмен между ОЗУ и МП, тем скорее ЭВМ вычисляет. Этот обмен может происходить в цикле записи или цикле чтения данных. Цикл записи состоит из следующих микроопераций:

- передача адреса ячейки из МП по ША в регистр адреса ОЗУ (время выполнения микрооперации равно tA);

- передача операнда из МП по ШД в информационный регистр ОЗУ (tИ);

- дешифрация адреса в ОЗУ, возбуждение и стирание содержимого ячейки памяти (tД);

- запись из информационного регистра в ячейку памяти (tЗ).

ИС памяти обычно имеют меньшее число выводов, как показано в табл. 3.1, чем разрядность ШД или ША. Поэтому часто одни и те же адресные входы в них используются для передачи адресов строк в старшие разряды регистра адреса под управлением сигнала RAS (время tAR) и для передачи адресов столбцов элементов памяти в младшие разряды регистра адреса под управлением сигнала CAS (время tAC). В таких ИС n-разрядный физический адрес ФА (1, n) разбивается на адрес строки (страницы) АR (1, nR) и адрес столбца (ячейки внутри страницы) АС (1, nC) таким образом, чтобы выполнялось условие

ФА (1, n) = <<AR (1, nR)>, <AC (1, nC)>>.

Тогда передача двоичных кодов <АR (1, nR)> и <АС (1, nC)> осуществляется последовательно, т. е. путем мультиплексирования адресов строки и столбца.

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

tЦЗ = tAR + tAC + tД + tИ + tЗ.

и составлять длительность, с учетом ожидания выполнения более длительных из них, до 5 и более периодов (тактов) работы генератора, синхронизирующего обмен по ШД. Обычно коды <АR (1, nR)> и <АС (1, nC)> передаются по одной и той же шине, тогда tAR = tAC = tA. Сумма tД + tИ + tЗ уменьшается несколькими способами:

- передача данных и адреса выполняется параллельно по разным шинам (tИ = 0);

- используется режим чередования памяти, когда передача осуществляется поочередно в две ячейки памяти, находящиеся в разных ИС, что приводит к параллельному выполнению в двух ячейках микроопераций стирания и записи, тогда tД = 0 или tÇ = 0;

- осуществляется запись в несколько ближайших ячеек, т. е. используется способ разбивки памяти на страницы и режим пакетной или страничной передачи (tAC = 0 или tAR = 0);

- улучшается технология, с применением которой уменьшается время стирания и записи в динамических ОЗУ.

В идеальном случае при использовании всех способов параллельного выполнения микроопераций время, необходимое на запись в 4 ячейки памяти, может занимать 5 тактов работы генератора, что соответствует схеме: 2 – 1 – 1 – 1.

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

Цикл чтения включает микрооперации:

- передача из МП адреса ячейки памяти в регистр адреса ОЗУ;

- дешифрация адреса, возбуждение и чтение содержимого ячейки памяти в информационный регистр ОЗУ (tД1);

- передача данных по ШД в МП (tИ1);

- регенерация данных, т. е. восстановление искаженного в результате чтения содержимого ячейки путем записи в нее данных из информационного регистра (tЗ).

Время, затрачиваемое на цикл чтения, можно вычислить по формуле:

tЦЧ = tAR + tAC + tД1 + tИ1 + tЗ.

Обычно tД = tД1, а tИ = tИ1, и время, затрачиваемое на циклы чтения и записи при обмене одним операндом, в DRAM почти одинаковое. В SRAM отсутствует режим регенерации информации в цикле чтения (tЗ = 0) и стирание информации в цикле записи данных в ячейку (tД = 0). Наибольшее время, затрачиваемое на циклы чтения и записи информации, определяет быстродействие ИС ОЗУ, которое накладывает ограничение на частоту синхронизации системных шин ISA и PCI.

Емкость ОЗУ определяется типом ИС и их параметрами. ИС изготавливаются обычно в пластмассовых корпусах с выводами по обоим сторонам (DIP корпус) с небольшим числом выводов. Типы ИС могут отличаться друг от друга емкостью, разрядностью и другими показателями [18], приведенными в табл. 3.1.


Таблица 3.1

Типы ИС ОЗУ


Емкость V (бит)

Число ячеек (N)

Разрядность

(R)

Число

выводов

Обозначение

256 К

256 К

1

20

Х 1256, Х 0256

1 М

256 К

4

20

Х 4256, Х 1014

1 М

1 М

1

18

Х 1000, Х 1001,

Х 1010, Х 1024

4 М

1 М

4

20

ХХ 4400, ХХ 4401

4 М

4 М

1

18

ХХ 4100, ХХ 4101,

ХХ 4102


Общая емкость ИС ОЗУ определяется числом ячеек N, их разрядностью R и числом обособленных внутри массивов b элементов по формуле:

V = NRb (бит).

Каждый массив b стробируется (регенерируется) в ИС своим сигналом, используя один и тот же информационный регистр для обмена с ШД.

Для увеличения разрядности ячеек ОЗУ, равной разрядности ШД, ИС объединяют в блоки (банки), собирая их на отдельных миниплатах с ножевым разъемом (SIMM или DIMM) или штырьковым (SIP). Эти платы затем устанавливаются в слоты на материнской плате ЭВМ. На рис. 3.6, а показана схема банка ОЗУ, имеющего 8- разрядную ШД и один разряд для контроля информации на четность. Банк собран на 30 - контактном SIMM - модуле по байтной структуре на 9 ИС ОЗУ емкостью N  8 бит. Емкость банка соответствует ИС, блок-схема которой показана на рис. 3.6, б. Если nR = nC = 10, то

V = NRb = 2020  8  1 бит = 1 Mб.

Для обращения к банку адрес ячейки подается по ША дважды: сначала в первом такте передается <AR (1, 10)> и по сигналу RAS = 0 он запоминается старшими разрядами регистра адреса:

RGA (11, 19) = ША (1,10)  RAS.

Затем во втором такте передается адрес столбца, который стробируется импульсом CAS:

^ RGA (1, 10) = ША (1, 10) CAS.

При отсутствии сигнала записи W = 1 в следующих тактах содержимое 8 бит с информационных выходов D0  D7 передается по ШД в МП. Девятый информационный выход ИС D8 используется для контроля данных на четность и в некоторых банках отсутствует при высокой надежности ИС.

ОЗУ Nx1

A1

.

.

.

А10

W

CAS

RAS


D0

ОЗУ Nx1

A1

.

.

.

А10

W

CAS

RAS


D8

ОЗУ Nx1

A1

.

.

.

А10

W

CAS

RAS

D0
.

.

.
D7

D8


а б
Рис. 3.6. Схема наращивания разрядности ОЗУ: а – схема объединения 1- разрядных ИС в 8-разрядную шину данных, б – схема 8-разрядного ЗУ
С увеличением разрядности ШД 30 - контактные однобайтные блоки SIMM занимают много места для установки в слоты материнской платы и с появлением Pentium заменены на 72 - контактные 36-битовые модули (D0  D31) с байтной организацией и с контролем каждого байта на четность или на сдвоенные модули DIMM с 64 разрядной ШД. Модули SIMM обозначаются как 256 К  36, 512 К  36, 1 М  36, 2 М  36, 4 М  36, 8 М  36, 16 М  36, что соответствует емкости 1, 2, 4, 8, 16, 32 и 64 Мб.

Каждая ИС ОЗУ маркируется. Обычно, в соответствии с табл. 3.1, в ее обозначение включают наименование, разрядность, емкость и быстродействие в десятках нс. Например, маркировка ИС МК44256Р-8 означает: МК4 – память ОЗУ, 4 – четырехразрядная с N = 256 К, Р – корпус пластмассовый, 8 – быстродействие ИС, равное 80 нс.

В зависимости от технологии изготовления, структуры и способов увеличения быстродействия DRAM ИС ОЗУ в компьютерах в качестве системной памяти используются PM, FRM, EDO, BEDO, SDRAM [7,14]:

PM DRAM – динамическое ОЗУ со страничной выборкой (также регенерацией) содержимого ячеек в информационный статический регистр ИС при последовательной подаче адреса строки AR и сигнала RAS; адреса АС и сигнала CAS. PM позволяет после первого обмена осуществлять дополнительные передачи данных только с изменением младших адресов АС и повторением сигнала стробирования CAS.

FRM DRAM – быстрая PM, позволяет осуществлять, в отличие от PM DRAM, последующие передачи без повторения сигнала стробирования CAS: на ША выставляются лишь адреса столбцов.

EDO DRAM – динамическое ОЗУ со страничной выборкой и встроенным конвейером вывода – усовершенствованная технология PM DRAM. Данные в конвейере (буферном регистре вывода) запоминаются и поэтому процесс вывода не критичен к длительности и времени подачи сигнала CAS, выборка может быть сокращена на 1-2 такта за счет сокращения тактов ожидания и перекрываться во времени. Однако EDO не допускает чередования адресов AR, порождающих конфликты на ШД, общей для всех банков памяти обычных SIMM-модулей.

BEDO DRAM – пакетная EDO с длинной пакета при передаче в четыре двойных / счетверенных слова (Pentium). При доступе к ОЗУ формируется только стартовый адрес <AR>/<АС> в первом обращении. Дальнейшие <АС> - адреса генерирует встроенный в ИС счетчик. Преимуществом BEDO является возможность сцепления пакетов в конвейере в одной и той же странице и инкремента ФА следующего пакета. Внутренний конвейер BEDO при чтении отсрочивает вывод данных на один CAS-цикл в целом удлиняя первую передачу на два такта. Это позволяет осуществлять обмен пакетной передачи по схеме Х – 1 – 1 – 1 системных тактов (400 Мб/с на 64-разрядной ШД). Эффективность использования BEDO увеличивается с увеличением разрядности пакета.

SDRAM – синхронная динамическая память, которая работает по принципу, что и BEDO, но рассчитана на передачу от одного двойного слова до полной страницы. В основе SDRAM лежит трехступенчатая конвейерная архитектура с доступом к 2 блокам ИС с чередованием адресов. В конвейере используется быстродействующий буфер I/O, что позволяет увеличить частоту синхронизации до 200 МГц и обеспечить скорость обмена данными до 640 Мб/с по 64-разрядной ШД.

Системная память собирается из набора ИС на миниплатах, которые затем вставляются в разъемы ОЗУ и объединяются в банки. Обычно под банком понимаются миниплаты (СБИС) емкостью 2, 4, 8, 16 Мб с набором ИС и разрядностью, соответствующей ШД МП, имеющей свой один RAS-сигнал и несколько CAS-сигналов.

Различают S – SIMM и S – DIMM миниплаты с 1 общим сигналом RAS и D – SIMM и D – DIMM миниплаты с 2 независимыми сигналами RAS. Все S - и D - миниплаты имеют одинаковое число CAS сигналов. Если разрядность одной (нескольких) миниплаты соответствует разрядности ШД системной шины МП, то S – миниплаты будут образовывать один банк данных, а D – два банка.

С увеличением емкости памяти в одной ИС, для своевременной регенерации строки (время регенерации 15.6 мкс), разработчики разбивают память на отдельные массивы b с 1, 2, 4, 8 Кб регенерацией. Каждая такая ИС имеет по одному регистру адреса и информационному буферному регистру и не допускает одновременного обращения к нескольким массивам.

ЭВМ с процессорами Pentium, как правило, оснащаются EDO и SDRAM ОЗУ, устанавливаемыми в DIMM миниплатах. Для определения конфигурации и характеристик ОЗУ в миниплату впаивается ППЗУ EEPROM емкостью 256 байт. Информация с ППЗУ считывается BIOS для автоматической настройки режима обмена ОЗУ с системной шиной. Обмен осуществляется с коррекцией ошибок по способу ECC, для чего разрядность шины данных ОЗУ доведена до 80 бит. С увеличением частоты системной шины с 66 до 75 МГц и более все виды памяти DRAM достигают своего предела, кроме SDRAM с длительностью такта около 8 нс. SDRAM, хотя и имеет 5 тактов начальной стартовой передачи операнда, в последующих пакетных передачах 64-битные данные передаются за 1 такт. Для адресации пакетов в SDRAM используется счетчик с автоинкрементом адреса и специальный буферный регистр режимов. Пакет содержит данные из разных массивов длиной 2, 4, 8 слов или целую страницу. Режим обмена СБИС SDRAM, имеющий средства саморегенерации, можно перепрограммировать.

Маркировка СБИС ОЗУ SDRAM изготовителей ведущих фирм емкостью 64 Мбит с внутренней организацией V = NRb = 2 М  8  4 бит, соотношением разрядности строки / столбца равным nR / nC = 11 / 10, поддерживаемых чипсетами 430 TX, 430VX и 440 LX, приведена в табл. 3.2.

Таблица 3.2

Маркировка ОЗУ фирм изготовителей SDRAM


Fujitsu

Micron

NEC

Samsung

Siemens

Texas I

MB81

164842A

MT48

LC4M16A1

P D45

64841

KM4

8S8030(1)AT

HYB39S

64800

TMS6

64814


В режиме пакетной передачи четырех двоичных слов быстродействие обмена для различных типов ОЗУ может характеризоваться на частоте 66 МГц следующим образом: SRAM (линейный кэш-2) – 3 - 2 - 2 - 2; динамическая память FPM – 5 - 3 - 3 - 3; EDO – 5 - 2 - 2 - 2, BEDO и SDRAM – 5 - 1 - 1 - 1. Эти соотношения показывают, что для быстрой обработки данных с применением BEDO и SDRAM становятся эффективным в составе ЭВМ только тыльный кэш-2.
5. Кэш-память
Под кэш-памятью (кэш) понимается буферное оперативное, более высокого быстродействия, чем основное ОЗУ, запоминающее устройство, имеющее в своем составе схему быстрого поиска информации. Различают кэш первого уровня (L1), или внутренний, и второго уровня (L2), или внешний, подключаемый к шине процессора. Внутренний кэш работает с быстродействием МП, внешний – синхронно с устройствами шины процессора. Внутренний кэш является буфером между регистрами МП и ОЗУ. Если имеется внешний кэш, то он является буфером между внутренним кэш и ОЗУ. Кэш-2 может быть линейным, подключаемым к одной системной шине МП, или тыльным, выполняющим обмен по двум шинам, одна из которых осуществляет связь с МП на более высокой частоте, чем другая процессорная с ОЗУ. Иногда ЭВМ имеет в составе и кэш-3, которая является буфером между кэш-2 и ОЗУ. Емкость памяти внутреннего кэш определяется типом МП (8, 16 Кб и более), а память внешнего кэш может наращиваться при использовании Windows 95 до 512 Кб или до 2 Мб с 32 разрядными ОС, как OS/2, Windows NT и UNIX. Кэш строится на элементах SRAM с временем доступа 4.5 – 12 нс и схемах сравнения, и поэтому ощутимо дороже динамических ОЗУ.

Для обмена информацией между кэш и ОЗУ используют 3 способа:

- со сквозной записью;

- со сквозной буферной записью;

- с обратной записью.

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

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

Для повышения быстродействия поиска информации в кэш используется ассоциативная [10] или адресно-ассоциативная [7] адресация. При ассоциативной адресации в качестве признака поиска (ключа, тэга) используется весь физический адрес. При адресно-ассоциативной адресации старшие разряды физического разряда используются для тэга, а младшие являются адресом ячейки внутри множества адресуемых ячеек. На рис. 3.7 приведена структура ассоциативной памяти. Физический адрес (ФА) с ША в виде, например, кода 01110 подается как тэг на схемы сравнения D1  DN+1. Наличие идентичности тэга с содержимым ячейки блока тэга (БТ) (например, с номером 0) включает соответствующую схему сравнения, выходной сигнал которой становится равен 1. Выходной сигнал 1 схемы сравнения (1 с D1) коммутирует соответствующую строку массива (0) на шину данных (ШД). Недостатками схемы являются значительные затраты памяти, требуемые для построения блока тэгов, и многочисленные поразрядные схемы сравнения.

Число схем сравнения обычно равно числу строк. Преимущество – высокое быстродействие поиска из-за отсутствия дешифратора адреса.

Снизить аппаратные затраты можно при помощи способа адресно-ассоциативной адресации (кэш прямого отображения), показанной на рис. 3.8. Кэш содержит массив данных из 0, 1 ..., N множеств. Каждое множество состоит из 0, 1, ..., (-1) строк (ячеек).

В такой структуре кэш младшие разряды (смещение в команде или странице) используются для определения номера множества БТ с помощью DCA и номера строки с помощью дешифратора строк (DCC). Сигнал с одного из выходов DCA, равный 1, подключает тэг, обслуживающий множество, к схеме сравнения D1, на другие входы которой подаются старшие k разрядов ключа физического адреса с ША.

Рис. 3.7. Ассоциативный кэш
При срабатывании D1 происходит коммутация содержимого возбужденной строки соответствующего множества массива на ШД. На схеме 3.8 строка -1 множества 1 передается на шину данных, т.к. в подключенном DCA множестве 1 тэг равен старшим разрядам ФА и выход DCC -1 равен 1. Недостатком такого кэша является невозможность одновременного размещения информации из ячеек, имеющих разные тэги и одинаковое смещение в разрядах k+1, , n ФА. Чтобы исключить этот недостаток, на практике используют несколько множеств (направлений) и соответствующее им число блоков тэгов и схем сравнения.

На рис. 3.9 приведена структура кэш i486 [21], выполненная по схеме четырех направлений 0, 1, 2, 3. Каждое направление содержит множество из 128 строк размерностью по 16 байт. Запись в кэш осуществляется через буферные регистры интерфейса процессора. Для этого из МП в ОЗУ по ША передается адрес младшей ячейки в строке и осуществляется ее чтение в буфер интерфейса через шину (ШД) процессора, затем трижды выполняется инкремент адреса A(31,2) + 1 и трижды – чтение выше адресуемых ячеек. По окончании такой пакетной передачи содержимое буферного регистра записывается в строку множества, объявляемую недостоверной. Номер строки множества определяет адрес А(10,4), направление вычисляется в блоке LRU. По адресу А(10,4) и направлению, указанному блоком LRU, в блок тэгов записывается А(31,11) – старшие 21 бит физического адреса данных. Так как информация читается 32-битными ячейками по адресам, где А(1,0) = 00, то МП поддерживает при чтении только выровненные данные. Для повышения быстродействия чтения пакетный обмен производится по 16 байт.



Рис. 3.8. Кэш прямого отображения
Чтение из кэш осуществляется по физическому адресу ФА(31,0), поступающему из устройства сегментации или страничного преобразования по ША. Он позволяет извлекать информацию с точностью до байта, используя дешифратор строки DCC, на вход которого подаются младшие четыре бита адреса ФА(3,0). При попадании, когда выход DCA подключает строки БТ к схемам сравнения D1  D4, под действием одного из сигналов а, б, в, г строка одного из направлений массива передается в буферный регистр, из которого, с использованием DCC, требуемый байт (слово, двойное слово) передается на внутреннюю ШД процессора. Часто строка из буферного регистра передаётся как 16-байтный код в устройство предвыборки команд, минуя ВШД. При промахе, если не срабатываети одна из схем сравнения D1  D4, МП включает режим чтения внешнего кэш или ОЗУ по данному ФА.

Рис. 3.9. Внутренний кэш i486
Блок LRU содержит память также из 128 строк, по 7 бит в строке. Три бита каждой строки LRU B0, B1, B2 служат для определения правила замены Lij j-й строки i-го направления при записи в кэш. Эти биты изменяются в одной из соответствующих строк при каждой записи или попадании в кэш следующим образом:

- если при чтении было обращение к строке L0j или L1j, то B0j = 0;

- если данные извлекались из L0j, L1j и оказались в L0j, то B1j = 1, а если из L1j, то B1j = 0;

- если данные извлекались (записывались) из L2j, L3j и оказались в L2j, то B2j = 1, а если из L3j, B2j = 0.

Состояния <B0, B1, B2> используются в алгоритме псевдо-LRU для определения номера направления и замены данных при промахе или опережающей выборке: <B0, B1, B2> = <0, 0, Х> заменяется строка L0; <0, 1, Х> – L1; <1, Х, 0> – L2, <1, Х, 1> – L3, где Х  {0, 1}.

Четыре оставшиеся бита памяти строки LRU используются для определения достоверности данных, хранимых в кэш. При очистке кэш или сбросе МП все биты достоверности устанавливаются в 0. При промахе и новой записи бит, соответствующий направлению и строке, устанавливается в 1. При вычислениях МП может объявить часть строк недостоверными и соответствующие биты B3-B6 LRU установить в 0. Эти недостоверные строки впоследствии используются в первую очередь для записи новых данных в кэш. Если все биты B3-B6 = 1, то замена данных в кэш определяется в соответствии с состоянием <B0, B1, B2>. Если данные в кэш становятся частично достоверными, то соответствующие биты достоверности не устанавливаются в 1.
^ 6. Логическая организация памяти
Компьютеры PC и XT могут работать с памятью до 1 Мб (с адресами от 0 до 1 М - 1), а AT с МП 286 – до 16 Мб; более поздние модели – до 4 Гб, а ЭВМ с Pentium Pro и Pentium II/III/4 – до 64 Гб. Диапазон адресов определяется размерностью адресной шины МП. Более интенсивно во всех моделях используется память с младшими адресами, которая отводится для размещения ядра DOS, связи с внешними устройствами, стандартных программ тестирования и организации I/O. Чтобы исключить ошибочное использование начальной памяти, она распределяется по назначению на основании стандартов IBM и Intel. Карта логической организации памяти, представляющая собой ее распределение без учета физической сущности, представлена на рис. 3.10. Она распределена на области: стандартную CM, верхнюю UMA, расширенную EM и дополнительную EpM.

Область стандартной памяти [15] СМ во всех компьютерах отводится под DOS и рабочие программы TSR с данными, которые обрабатываются МП. В последних моделях эта область наиболее динамичная. При многозадачном V-режиме она постоянно обновляется, и поэтому для повышения быстродействия такая память построена на элементах с малым временем чтения (DRAM и SRAM).

Область в верхних адресах UMA емкостью 384 Кб зарезервирована для системного использования самой ЭВМ. Первая часть UMA (128 Кб) отводится под видеопамять (VM), которая предназначена для вывода оперативной информации на дисплей. В зависимости от типа монитора и видеоадаптера она используется не полностью для EGA, MDA, CGA с фиксированными адресами соответственно 640K, 704K, 736K или же используется в полном объеме для VGA и SVGA. Область видеопамяти обычно реализуется на ОЗУ типа VRAM с высоким быстродействием, которая работает с памятью видеоплаты емкостью до 2 Мб и более.

Средняя область UMA зарезервирована в ЭВМ под стандартные программы-драйверы I/O и обмена между контроллерами или адаптерами с использованием системной шины. Так как драйверы MDA и CGA вшиты в схему системной платы, то они не требуют адресного пространства. Другие адаптеры, такие как EGA, VGA и SVGA, используют адресуемую память емкостью 16, 32, 64 Кб соответственно, начиная с адреса C0000 или C4000. Эта память отводится под ПЗУ (ROM), в которой размещается BIOS дисплеев.

Рис. 3.10. Карта распределения памяти
Под ROM BIOS контроллеров жестких дисков отведена область НЖМД с начальным адресом C8000. Контроллеры НЖМД 10 и 20 Мб XT использовали адресное пространство C8000-C9FFF, но контроллеры IDE ATA эту область не используют, т.к. их драйверы являются частью системной BIOS. Контроллеры EIDI и SCSI используют память емкостью 16 Кб в диапазоне адресов C8000-CBFFF.

Память в диапазоне адресов CA000-CFFFF в средней области UMA может быть свободной. Во всех компьютерах свободным является адресное пространство D0000-DFFFF (окно EMS). Окно емкостью в 4 страницы по 16 Кб, расширяемое в сторону младших адресов, может быть использовано для работы в стандарте LIM/EMS с дополнительной памятью EpM емкостью до 32 Мб при инсталлированном драйвере, таком как EMM386.EXE. В эту свободную область могут последовательно перегружаться до 2 048 логических страниц при наличии соответствующей дополнительной памяти. Адресами средней области могут пользоваться также сетевые адаптеры в области сегментов C000 и D000, для чего используют ОЗУ на системной плате емкостью до 16 Кб.

Последняя (третья) часть UMA выделена под системную BIOS. Программы системной BIOS обслуживают команды МП и играют роль драйверов различных устройств компьютера. Так как эти программы используются с момента включения питания, то они закодированы в ИС ПЗУ на системной плате. В их составе:

- POST – программа тестирования исправности НЖМД, ОЗУ, клавиатуры и системной платы;

- системный загрузчик – программа передачи файлов DOS с НЖМД или НГМД в начальные адреса ОЗУ и передачи управления;

- стандартные программы-драйверы обмена с любыми блоками, подключаемыми к системной шине.

Под системную BIOS отводится память 128 Кб в диапазоне E0000-FFFFF, которая почти полностью используется в последних моделях ЭВМ. Для повышения быстродействия при выполнении команд часть программ BIOS в процессе работы может перегружаться из медленного ПЗУ в ОЗУ с более высоким быстродействием. Существует еще одна область верхней памяти (HMA), которая может быть использована в реальном режиме процессорами 286 и выше при инсталлированном драйвере HIMEM.SYS. Эта область имеет размер 64 Кб (без 16 байт) и размещается в диапазоне адресов FFFF:0010-FFFF:FFFF. Известно, что МП 88/86 при вычислении адреса ячейки памяти выше 1 М осуществляют заворачивание адреса (сложение по mod220). Для процессора 286 этого не произойдет, т.к. он может включить адресную шину A0  A20 вместо A0  A19, как у МП 88/86. Управление включением A20 выполняется через бит порта 64h контроллера клавиатуры 8042. Область HMA является частью расширенной памяти (ЕМ), доступной в R-режиме.

Расширенная область памяти ЕМ может быть использована только в P- или V-режимах в соответствии с правилами спецификации XMS. Размер этой памяти определяется автоматически программами системной BIOS. Эта память наращивается от 1 Мб в сторону больших адресов. В настоящее время в Pentium II/III/4 линейное адресное пространство ограничено 64 Г = 236, где для обращения к любому байту из этой области требуется 36-битный двоичный код.

^ 7. Сегментация памяти
Для эффективного распределения памяти в микропроцессорах 8086/88 была введена сегментация. Под сегментом в них принята область 64К смежных ячеек в любом месте адресного пространства от 0 до FFFFF. Для вычисления адреса используются четыре 16-разрядных регистра: кода CS, стека SS, данных DS, дополнительных данных ES. В этих регистрах для программы задаются базовые физические адреса начала сегмента. Так как шина адреса в 8086/88 20-разрядная, а ШД и сегментные регистры 16-разрядные, то принято, что 4 младших бита любого базового адреса равны 0. Поэтому базовые адреса указывают на границу параграфа (область памяти по 16 смежных байта, начиная с нулевого адреса) и используются для вычисления адреса по схеме, изображенной на рис. 3.11.

В зависимости от типа команды, который определяется полем кода операции (КОП), устройство управления (УУ) для вычисления адреса команды или операнда в памяти привлекает один из соответствующих сегментных регистров CS, SS, DS или ES. Содержимое этих регистров подается в 16 старших разрядов сумматора (передача со сдвигом на 4 разряда влево – L4), а к 16 младшим разрядам сумматора подключается "смещение". При этом вычисление адреса в сумматоре происходит по модулю 220 (перенос из старшего разряда отбрасывается, т.е. осуществляется заворачивание адреса) по одной из формул:

<ФА (19,0)> = [L4[CS)] + [IP],

<ФА (19,0)> = [L4(SS)] + [SP],

<ФА (19,0)> = [L4(DS или ES)] + [EA],

где: <ФА (19,0)> – двоичный 20-разрядный код, передаваемый на шину адреса; IP, SP – содержимое счетчика команд и указателя стека соответственно; ЕА – смещение, располагаемое в поле команды, которое вычисляется по схеме рис. 1.5 для 16-битной адресации 8086, 286 без- масштабирования и защиты нарушения, где в качестве базы массива используется только РОН ВХ или ВР, индексов SI или DI.

На рис. 3.11 в качестве примера рассмотрено вычисление адреса 49F62h операнда через адрес: сегмент : смещение = 49А6:0502, при обработке его командой (обращение по умолчанию к DS) со смещением в поле команды 0502h. В регистре DS хранится базовый адрес сегмента данных 49A6h, в котором 4 младших нулевых бита адреса не представлены. К недостаткам сегментной адресации в 8086 можно отнести: отсутствие контроля и защиты данных от неправильного использования сегментов; возможность обращения к несуществующей физической памяти.

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

FFFFF

49F62

Рис. 3.11. Схема вычисления адреса в МП 8086
В i486, Pentium под сегментом понимается защищенная область линейного адресного пространства. Все пространство разбито на 16 383 сегмента, а их адреса и характеристики (атрибуты) занесены в дескрипторные таблицы GDT, IDT, LDT. Глобальная дескрипторная таблица GDT и дескрипторная таблица прерываний IDT создаются операционной системой для всех задач, фигурирующих в системе, а локальная таблица LDT может быть создана системным программистом для своих прикладных задач. Элементами этих таблиц являются дескрипторы размером в 8 байт с содержанием полей, приведенным на рис. 3.12.


Рис. 3.12. Дескриптор сегмента
Дескриптор содержит:

- линейный базовый адрес сегмента Вс (31,0) в полях, соответствующих разрядам (63,56) и (39,16);

- размер сегмента (предел) Рс (19,0), который находится в разрядах (51,48) и (15,0);

- байт прав доступа AR в разрядах (47,40).

Атрибуты дескриптора имеют следующее назначение:

- А – бит доступа, устанавливается в "1" операционной системой при обращении к сегменту, используется в свопинге;

- Тип – 3 бита определяют назначение сегмента и допустимые в нем операции: <000> – сегмент "0" - предназначен для данных и только считывания, 1 (<001>) - сегмент данных для записи и считывания, 2 – стек для считывания, 3 – стек для записи и считывания, 4-6 – сегмент кода, 7 – <111> подчиненный сегмент кода с разрешением выполнения и считывания. Операция выполнения предполагает использование считанного сегмента как команды, а считывания – как данных, причем запись в любой сегмент кода запрещена;

- S – системный. При S = 0 дескриптор описывает системный объект;

- DPL – двухбитное поле, определяет привилегии от 0 до 3 (код <11> – наименьший уровень);

- Р – присутствие (Р = 1 – сегмент находится в физически доступной памяти).

Бит дескриптора ^ U используется при необходимости пользователем, бит Х зарезервирован (Х = 0). Бит D = 1 команда работает с 32-битными данными. Бит G является битом гранулярности. При G = 0 предел измеряется в байтах, при G = l предел измеряется в страницах Рс  4К.

Число дескрипторов в таблицах IDT и GDT может достигать величины 8192, а наибольший размер любой таблицы = 8  8192 = 64 Кб. Эта величина максимальной размерности таблицы требует включения смещения 16 бит, которое хранится как предел в соответствующих программно-доступных регистрах GDTR и IDTR, и теневом – (LDTR). Элементы в дескрипторных таблицах размещаются последовательно по 8 байт и для их поиска достаточно задать 13-разрядный индекс. Индекс сегмента передается в старшие разряды 16-битного селектора сегмента. В 2 младших бита (0,1) RPL селектора заносится код привилегий, а третьему биту Т1 присваивается 1, если селектор обращается к LDT и 0 – при обращении к GDT. Перед выполнением команды используемый ею дескриптор должен быть определен, а его селектор занесен в один из регистров CS, SS, DS, ES, FS, GS. В процессе распределения памяти операционная система заносит ЛА в регистры GDTR и IDTR: в младшие 32 бита базовые адреса таблиц, а в старшие 16 разрядов – размер этих таблиц, которые не изменяются при постоянном числе задач, фигурирующих в компьютере.

Изменить организацию сегментов системный программист может для своих прикладных задач с помощью таблицы LDT. В этой таблице он создает дескрипторы сегментов, доступ к которым осуществляется теми же селекторами в регистрах CS, ..., GS, но у которых бит Т1 установлен в 1. При этом дескрипторы LDT автоматически с загрузкой селекторов считываются в теневые регистры (CS), ..., (GS) с использованием базы теневого регистра (LDTR). База и предел в 48-разрядный теневой регистр (LDTR) передается из GDT, в которой размещается по индексу селектора регистра LDTR специальный дескриптор.

На рис. 3.13 показан процесс вычисления линейного адреса в устройстве сегментации i486. Он осуществляется следующим образом. Перед началом решения задачи операционной системой формируются таблицы GDT и IDT и их адреса загружаются в регистры GDTR и IDTR. При необходимости специальными командами программист заносит селекторы в сегментные регистры CS, ..., GS, а системной программой устанавливает селектор в LDTR для чтения созданной им локальной дескрипторной таблицы. В пользовательской программе очередная команда обрабатывается устройством предвыборки команд. В соответствии с кодом операции (КОП) для выполнения команды, операнд которой находится в памяти, к ней подключается один из сегментных регистров CS, ..., GS и соответствующий ему теневой регистр (CS), ..., (GS). Базовый адрес теневого регистра и эффективный адрес (ЕА) в соответствии с типом команды суммируются в SM по модулю 232 по схеме рис. 3.13. В результате определяется линейный адрес операнда. Процессор, используя атрибуты дескриптора, пределы регистров таблиц, контролирует права доступа к сегменту и правильность выполнения команды.


Рис. 3.13. Схема вычисления адреса в устройстве сегментации
При отсутствии нарушений (см. рис. 1.5) линейный адрес передается на адресную шину (через устройство страничного преобразования в Р-режиме) ША для извлечения операнда из кэш-памяти или ОЗУ.

При определении нарушений в i486 задействуется регистр IDTR с таблицей прерывания IDT и программа формирования соответствующих инструкций.

Рассмотренная схема вычисления адреса позволяет обращаться к сегментам, распределенным в любой области линейного пространства от 0 до 4Г-1, с точностью до байта, т.к. базовый адрес сегмента Вс может иметь любой 32-разрядный код. Величина сегмента при G = 0 составляет не более одного Мб, а при G = 1 охватывает всю область линейного пространства. Смещение в команде определяет расстояние от базового адреса до ячейки в сторону увеличения адресов в сегментах данных и кода.

В сегментах стека используется принцип записи "последним пришел, первым обслужился". Базовый адрес вместе с максимальной величиной ESP/SP (низ стека) ограничивают сегмент сверху. При каждой записи указатель стека декрементируется, а при считывании инкрементируется. Если бит D и G дескриптора = 1, то используется ESP и обмен идет 32-разрядными словами, тогда низ стека устанавливается адресом Вс+4Г-1. При D=0 в стековых операциях участвует SP и SS, где хранится Вс. Тогда низ стека устанавливается адресом SS : FFFFh. При обращении к ячейкам стека допустимы все смещения, которые больше предела, но меньше максимального размера, а при обращении к ячейкам сегментов кода и данных все смещения меньше предела.

На рис. 3.14. показаны незаштрихованные рабочие области для сегментов кода и данных (а) и сегмента стека (б), имеющие D = 0, одинаковую базу Вс и предел 2FFFh.


а б
Рис. 3.14. Рабочие области сегментов: а – рабочие области для сегментов кода и данных, б – рабочие области для сегмента стека

^ 8. Страничная организация памяти
В P- и V-режимах МП 386 и выше могут поддерживать (с помощью внутреннего менеджера памяти MMU и операционной системы) страничную адресацию. При ней память 4 Гб разбивается на 1 М страниц емкостью по 4 Кб каждая. Тогда физический адрес байта вычисляется как

<ФА (31,0)> = <<АС(19,0)>, < Асм(11,0)>>, где

Ас(19,0) – 20-разрядный адрес страницы, от 0 до FFFFFh (01М-1), который передается в старшие разряды ША(31,12);

Асм(11,0) – 12-разрядный адрес смещения внутри страницы, который передается в младшие разряды шины адреса ША(11,0).

По этой формуле вычисляется виртуальный (virtual – фактический) адрес любого байта данных, размещенных по страницам. Причем номер страницы занимает старшие разряды шины адреса; адреса страниц выровнены по границе, т.е. младшие 12 разрядов номера страницы равны нулю, и поэтому номера новых страниц следуют с шагом 212 (4К) в линейном адресном пространстве 4Г. Если программа занимает память под свой код и данные с числом страниц и их номерами, не выходящими за емкость ОЗУ, собранного на ИС, вычисление адреса <АС(19,0)>, <Асм(11,0)> совпадает с обычным способом прямой адресации к физической памяти основного ОЗУ и приводит лишь к снижению быстродействия обмена. В данном случае эффективным будет режим запрета страничного преобразования.

Однако в том случае, если программа работает с виртуальными адресами из верхней области линейного адресного пространства, превышающей емкость ОЗУ, следует:

- размещать информацию по страницам;

- необходимые страницы в процессе работы последовательно переписывать с диска в ОЗУ;

- виртуальные адреса страниц Ас(19,0) преобразовывать в адреса страниц (кадров) реальной физической памяти ОЗУ Ас*(19,0). Преобразование Ас(19,0)Ас*(19,0) может быть осуществлено при помощи косвенной адресации, когда каждому адресу Ас(19,0) ставится в соответствие адрес ячейки памяти, где хранится Ас*(19,0). Если в 20 разрядах таких ячеек размещать реальный адрес страницы, а в других – дополнительную информацию о странице, то каждый элемент этой таблицы (дескриптор) может занимать 4 байта. Тогда при числе страниц 1М емкость памяти, требуемая под таблицу преобразования, может достигать 4 Мб. В мультизадачной среде таких таблиц может потребоваться несколько. Тогда таблицы сами могут занять всю область ОЗУ, что недопустимо.

В процессорах МП 386 и выше используется более гибкое двухэтапное преобразование Ас(19,0)Ас*(19,0) с помощью таблиц PDE и PTEI (I = 0  1023), которое позволяет намного уменьшить емкость памяти косвенной адресации. Вычисление адреса операнда ФА (31,0) в ОЗУ по линейному адресу ЛА(31,0) осуществляется поэтапно по следующему правилу:

ФА (31,0) = <<PTEI L (31,12)>, <ЛА (11,0)>>, где

PTEI L (31,0) = M1 (<PDE I (31,12)>, <ЛА (21,12)>),

PDE I (31,0) = M2 (<CR3 (31,12)>, <ЛА (31,22)>)

На первом этапе, как показано на рис. 3.15, в МП извлекается содержимое ячейки памяти М2 (дескриптор таблицы PDE), где в 20 старших разрядах хранится базовый адрес таблицы PTEI с физическими адресами страниц. Содержимое М2 извлекается из ОЗУ по ШД (31,0) по адресу ША (31,0) = <<CR3 (31,12)>, <ЛA (31,22)>>, где старшие 20 разрядов являются базовым ФА каталога базовых адресов таблиц страниц PDE и располагаются в регистре CR3, а 10 младших разрядов ЛА (31,22) определяют смещение I в каталоге. Базовый ФА <CR3 (31,12)> таблицы PDE заносится в регистр PDBR операционной системой при включении режима страничного преобразования. Он не изменяется при решении задач.

Рис. 3.15. Схема вычисления ФА при страничной адресации
На втором этапе содержимое 20 старших разрядов М2 используется при определении базового адреса таблицы <PTEI (31,0)>, которое передается в старшие разряды ША, а к 10 младшим разрядам ША подключается содержимое <ЛА 21,12>. По этому ФА извлекается элемент PTEIL (L-й дескриптор таблицы PTEI). Элемент PTEIL является ячейкой М1, где в 20 старших разрядах хранится ФА страницы А*С (19,0). Для извлечения операнда из ОЗУ в старшие разряды ША подается физический адрес страницы <А*С (19,0)> = <PTEIL (31,12)>, а в младшие – смещение внутри страницы <АСМ (11,0)> = <ЛА (11,0)>.

Смещение внутри страницы не подвержено преобразованию, и 12 его разрядов используются для определения ФА данных или кода внутри страничного кадра подключаясь к 12 разрядам внутренней шины адреса ША(11,0).

Дескрипторы таблиц PDE и PTE имеют одинаковую структуру вида:


31 12

9







6

5

4

3

2

1

0

ФА страничного кадра

Дос

0

0

D

A

PCD

PWT

U/S

R/W

P


Разряды этих дескрипторов имеют следующее назначение:

- P – бит присутствия, при P = 1 страница загружена в ОЗУ;

- R/W – бит чтения/записи, при R/W = 1 страница допускает операции чтение/запись, а при R/W = 0 – только чтение;

- U/S – пользователь/супервизор. При U/S = 0 страница с привилегиями супервизора, а при U/S = 1 – уровень пользователя;

- PWT – запрет сквозной записи страницы. При PWT = 1 осуществляется сквозная запись, а при PWT = 0 – способ с обратной записью;

- PCD – запрет кэширования страницы. При PCD = 1 кэширование страницы запрещено, в остальных случаях – кэширование по циклам;

- A – бит обращения. A устанавливается в 1, когда МП обращается к странице для записи/считывания;

- D – Dirty (грязный) бит. При записи новых данных в страницу DOS устанавливает его в 1;

- Дос при страничной организации не используется, программно доступен;

- ФА – 20-битное поле физического адреса таблицы PTE или страничного кадра задачи.

При преобразовании линейного адреса в ФА МП проверяет в первую очередь бит P, если P = 0, то осуществляется свопинг (загрузка с НЖМД нужной страницы в ОЗУ) в следующей последовательности:

- освобождение одного из страничных кадров ОЗУ и, при D = 1, пересылка его на диск;

- DOS копирует нужную страницу в ОЗУ с диска в страничный кадр, начиная с ФА освободившейся памяти в 4 Кб;

- загрузка 20-битного адреса ФА в соответствующий дескриптор PTE и установка в нем P = 1, а также, при необходимости, установка/сброс остальных флагов;

- перезагрузка буфера TLB;

- рестарт команды, инициировавшей свопинг.

К преимуществам страничной адресации относится возможность использования всей области линейного пространства.

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

- обмен страницами, которые могут быть не полностью заполнены информацией;

- снижение производительности из-за свопинга и операций преобразования адреса;

- сложность контроля со стороны пользователя за динамическим распределением памяти;

- потеря части ОЗУ на размещение таблиц PDE и PTE.

Двухэтапное преобразование уменьшает быстродействие вычисления адреса из-за дополнительного обмена с ОЗУ, и поэтому для повышения производительности используется ассоциативный буфер преобразования (TLB). Для того чтобы уменьшить время вычисления адреса страничного кадра Ас*(19,0) при страничной адресации, необходимые элементы таблиц PDE и PTE размещают в ассоциативном КЭШ-буфере преобразования (TLB), который хранит часть нужных дескрипторов и уменьшает число обращений к ОЗУ. На рис. 3.16 представлена структура буфера TLB, используемого устройством страничного преобразования i486. Он по содержанию и принципу работы имеет много общего с внутренним кэш. Блок данных TLB, состоящий из 4 множеств по 8 строк, емкостью по 20 бит каждое множество, используется для хранения физических адресов страничных кадров, которые заносятся непосредственно из ОЗУ при каждой загрузке PDBR. Блок LRU определяет, какие физические адреса (строки) можно заменить на новые при отсутствии их в TLB. 21-битные строки блоков тэгов (БТ) используются для хранения 17 старших разрядов виртуального адреса Ас (19,3), 3 бит атрибутов Ат и 1 бита V достоверности строки. Строки БТ имеют вид:


20




16 3 0

V

AT

Ac (19,3)
  1   2



Скачать файл (1177.9 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru