Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСИС2_память ЭВМ_1.DOC
Скачиваний:
22
Добавлен:
21.03.2016
Размер:
153.6 Кб
Скачать

2.6. Постоянные запоминающие устройства

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

Выделяют два класса ПЗУ: ПЗУ, программируемые однократно (и записанную информацию невозможно изменить) - ROM, и перепрограммируемые ППЗУ (информация может быть стерта и ППЗУ перепрограммировано заново) PROM.

Наиболее распространено ПЗУ с плавкими вставками (рис.2.9а). При программировании, если в данный разряд нужно записать единицу, триод открывается и коллекторный ток испаряет плавкую вставку. При считывании при подаче адреса на вход ПЗУ, в этом разряде на шину j ничего не поступит. Вместо плавких вставок используют два встречно включенных диода (рис.2.9б); при программировании один из них пробивается в результате чего между шинами i и j возникает связь и возможна передача напряжения.

Элементы PROM используют обратимые явления обычно это заряд паразитной емкости полевых транзисторов (рис.2.9в). В исходном состоянии заряд на плавающем затворе отсутствует (небольшой пороговый потенциал), поэтому триод легко управляется небольшим напряжением на управляющем (селекторном) затворе: при считывании на селекторный затвор с дешифратора адреса по шине i подается отпирающие напряжение и на выходной шине j протекает ток.

i i i

+Е пл. затвор

сток

плавкая ис ток

вставка

j j +Е j

а) б) в)

Рис.2.9. Запоминающие элементы ПЗУ.

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

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

В настоящее время в качестве ППЗУ используется электрически управляемая память - флеш-память (относится к классу памяти EEPROM - electrical erasable programmable read-only memory - электрически стираемая постоянная память). Каждая ячейка флеш-памяти состоит из одного униполярного (полевого) транзистора (Гук328). Ячейки организованы в матрицу, разрядность данных внешнего интерфейса - 8 тлт 16бит. Стертые (чистые) ячейки содержат 1 во всех битах и при программировании нужные ячейки обнуляются (в единичное состояние ячейки переводятся только при стирании). Чтение ничем не отличается от чтения любой другой памяти, но запись флеш-памяти имеет некоторые особенности (Куз2). Запись данных производится использованием специального программного алгоритма. Кроме того, флеш-память состоит из блоков размером, в зависимости от изготовителя, от 4 до 256 кбайт. Чтобы обновить информацию в каком-либо блоке, этот блок должен быть полностью стерт до того, как новые данные могут быть в него записаны или запрограммированы. Флеш-память имеет время доступа при чтении 35-200нс; стирание - до 1с; запись байта - 10мкс (Гук329).

Учитывая этот фактор, флеш-память в режиме записи трудно рассматривать как устройство с произвольным доступом. В то же время операционные и файловые системы предполагают, что устройство массовой памяти имеет произвольный доступ как в режиме чтения, так и в режиме записи. В результате между операционной или файловой системой и устройствами флеш-памяти требуется дополнительный уровень программного обеспечения, называемый файловой системой для флеш-памяти (Flash File System, FFS). В настоящее время флеш-память усиленно развивается (уже идет третье поколение).

2.7. ЛОГИЧЕСКАЯ ОРГАНИЗАЦИЯ ОПЕРАТИВНОЙ ПАМЯТИ ПЭВМ

Сразу оговоримся, что сегментная организация памяти возникла исторически, когда память стала большой (по тому времени - 1 МБ), а 16-разрядная адресная шина материнской платы могла адресовать только 64кБ. Когда появились 32-разрядные адресные шины, то следуя политике разработчиков: старшие модели должны поддерживать ПО младших, - сегментную организацию решено было сохранить, но с произвольными адресацией и размерами сегментов.

Как правило память ПЭВМ имеет байтовую организацию. Каждый байт имеет собственный адрес, если ЭВМ шестнадцатиразрядная, то каждое слово занимает два байта памяти, при этом младший байт располагается по младшему адресу, который и является адресом слова (структурной единицы информации), а старший байт - по увеличенному на 1 (Пят-109). Чтение ведется по адресу слова, т.е. с адреса младшего байта, поэтому считываются байты в обратном порядке: (например, число 5А67 будет считано в виде 675А). При выдаче на дисплей это учитывается, а при снятии копии ОЗУ выдается так как записано.

Общий объем адресуемого пространства при ширине адресной шины 16 разрядов, что было у первых микропроцессоров (например, i8008), составляет 64КБ, что явно недостаточно. Для ее увеличения необходимо расширить адресную шину микропроцессоров, что и было сделано в более поздних разработках. Появившийся МП i8088, на котором были построены IBM PC XT, имел 20-разрядную ША, что позволяло адресовать уже 1МБ памяти. Однако, для обеспечения совместимости со старыми моделями, IBM использовала сегментирование адресного пространства на блоки (сегменты) по 64кБ. Адрес ячейки памяти в этом случае состоит из двух 16-ти разрядных слов, смещенных относительно друг друга на один шестнадцатеричный разряд (4 двоичных разряда). Одно из слов адреса образует сегментную часть (сегмент), определяющую расположение 64 килобайтного сегмента в памяти, другое слово - смещение (исполнительный адрес) - указывает адрес байта внутри сегмента. Физический адрес образуется сложением сегмента с учетом сдвига на 4 бита со смещением. Начало же сегмента (его базовый 20-битный адрес) однозначно определялся 16-битным номером сегмента , который преобразовывался в 20-битный дописыванием справа 4-х нулей.

Стандартная запись будет имеет вид: 5А67:256В (5А67 - 20-битный (с учетом приписываемых нулей) адрес начала сегмента, 256В - 16-битное смещение внутри сегмента -Пят111).

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

  • СS - зона программ (адресует сегменты, где хранятся программы);

  • DS - зона данных (адресует сегменты, где хранятся основные данные);

  • ES - дополнительная зона данных;

  • SS - зона стеков.

Большую часть времени сегментные регистры остаются неизменными, в то время как смещение адреса изменяется постоянно. Любое изменение содержимого регистров замедляет работу машин.

Начиная с 80386 благодаря увеличению разрядности шины адреса и адресных регистров МП до 32 бит, стала возможной работа с “плоской памятью”, не разделяемой на сегменты, допускающей адресацию до 232=4ГБ. Чтобы сохранить преемственность и совместимость с программным обеспечением ранних моделей ввели два режима работы МП: реальный и защищенный. В реальном режиме дополнительные линии шины адреса блокируются и сохраняется сегментирование памяти по 64кБ; в защищенном режиме реализуется либо “плоская память”, либо сохраняется сегментирование, но с сегментами увеличенного объема (Пят-110). В этом случае сегментные регистры не суммируются со смещением, а содержат информацию о сегментах (подробнее это будет рассмотрено ниже в гл.4).

Итак, в реальном режиме мегабайтное адресное - пространство ПЭВМ было разбито фирмой IBM на две части. Прежде всего, была выделена пользовательская зона в 640кБ с адресами до А000:0000 (увеличение доступной памяти в 10 раз тогда казалось просто фантастическим - отсюда, вероятно, и появилась цифра 640кБ - Борз-71). Эта память в IBM-совместимых ПК обычно называется стандартной (conventional memory). Программы, написанные в DOS могут работать только в этой зоне памяти. Начальные адреса (около 2кБ - Айден,78) этой памяти заняты таблицей векторов прерываний с адресами сервисных программ (около 1кБ), зоной данных BIOS (800кБ) и ядром ОС. (Напомню, что вектор прерываний - это адрес первой команды программы обработки прерываний, например запись в ОЗУ Е84Е9А01, соответствует фактическому адресу расположения программы 019А:4ЕЕ8).

Оставшиеся 384кБ были зарезервированы для системного использования (там расположена видеопамять (128кБ) BIOS, ROM для дополнительных адаптеров и т.п. - 256кБ) - рис.2.10 (Айден 5.19, Борз.72). Эту область обычно называют “памятью в верхних адресах” (UMA - upper memory area). В видеопамять процессор помещает периодически данные, предназначенные для отображения, а монитор непрерывно считывает их для вывода на экран (Айден,79). Современные видеокарты поставляются со своей видеопамятью (для хранения изображений; от 0,5 до 4МБ), но соответствующие программы обращаются к ней через “окно” 64кБ в UMA, начинающееся с адресов А000:0000 или В000:0000. При этом в специальном индексном регистре указывается, на какие 64кБ видеопамяти отображаются данные в “окне” (как мы увидим ниже, так же работает дополнительная память).

В последнем сегменте UMA располагается часть BIOS, в частности, информация о конфигурации ПК. Между видеобуфером и системным ROМ выделяется окно 64кБ для организации дополнительной памяти.

Кстати, представление адреса сегментом и смещением позволяет адресовать при 20 адресных линиях до FFFF:000F ячеек памяти, что больше 1МБ на целых 64кБ. Этот блок адресного пространства назван НМА (high memory area) и интересен тем, что в отличие от остальной памяти, превышающей 1МБ, доступен в реальном режиме работы МП (Айден,82).

Для дальнейшего увеличения объема памяти при ограничении на ширину адресной шины применяются следующие приемы:

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

  • отображения дополнительной памяти на зону в адресном пространстве (как это было в случае видеопамяти) - EMS (expanded memory specification) (Айд 80, Борз.72). Как уже говорилось в UMA выделено свободное окно 64кБ, поделенное на 4 страницы по 16кБ. На это окно с помощью специального драйвера (EMM - expanded memory manager, например, EMM386.SYS или XMA2EMS.SYS -Пят-111) отображаются любые 16-килобайтные участки (страницы) из физической дополнительной памяти, устанавливаемой в ПК. Память может иметь емкость до 32МБ. При этом в IBM 386 и выше дополнительная память специально не вставляется, а эмулируется драйвером программно в расширенной памяти XMS. Естественно, это необходимо только при выполнении соответствующих программ, нуждающихся в дополнительной памяти. Драйверы входят в стандартные поставки MSDOS и Windows.

Программа, нуждающаяся в дополнительной памяти, запрашивает выделение области, указав ее размер в 16-килобайтных страницах. В ответ ей сообщается диспетчером (драйвером EMS) номер дескриптора EMS (EMS handler), по которому программа в дальнейшем будет ссылаться на выделенную ей область, а диспетчер назначает отображение (т.е. производит переадресацию) этой выделенной страницы на выбранную физическую страницу в области UMA (Гук67).После этого любые обращения процессора к физической странице, расположенной в пределах первого мегабайта, будут в действительности работать со страницей в дополнительной памяти без переключения в защищенный режим.

  • расширение адресной шины - XMS (eXtended memory specification) (Айден 83, Рош 75). Уже в 286-х РС МП, имея 24-разрядную ША и может адресовать 16МБ памяти, а 386-е - до 4ГБ. Область памяти выше 1МБ называется расширенной, но для ее использования МП должен перейти на работу в защищенном режиме (Борз-73). Т.е. у микропроцессоров вводится дополнительный режим: при работе в реальном режиме эмулируются младшие модели и блокируются все линии адреса, большие 20-й; в защищенном режиме эти линии становятся доступными В этом случае разделенная на страницы расширенная память отображается в HMA (см. выше) и становится доступной (однако ХМS используется только для хранения данных). Если 386/486 позволяют это сделать достаточно просто, то у 286 это сделать сложно.

Т.к. MS DOS не поддерживает защищенный режим МП, то чтобы иметь доступ к этой памяти из программ DOS, нужен драйвер, с помощью которого данные будут пересылаться в расширенную память из стандартной и обратно (тогда она фактически будет являться дополнительной памятью). Наиболее популярен драйвер HIMEN.SYS, который способен работать с шиной адреса, имеющей до 32 линий (Пят-112). Спецификация XMS позволяет программам реального режима использовать под данные дополнительную память, непосредственно им не доступную, копируя в нее и из нее данные доступных областей первого мегабайта. Такие ОС, как OS/2, UNIX, Windows, поддерживающие защищенный режим, могут работать со всеми ресурсами расширенной памяти (Айден,478).

Как видно, спецификации EMS и XMS отличаются по принципу действия: в EMS осуществляется отображение (страничная переадресация) памяти; в XMS - копирование блоков данных (Гук68).

2.8. ОРГАНИЗАЦИЯ КЭШ-ПАМЯТИ.

Функционально КЭШ-память предназначена для согласования быстродействия МП и сравнительно медленной, но дешевой динамической ОЗУ (Cache - запас, склад). Т.е. с помощью технологии обработки, использующей КЭШ-память найден определенный компромисс между стоимостью и производительностью системы. Эта КЭШ получила название внешней или КЭШ второго уровня и имеет емкость 128 -512 кБ (чаще -256кБ). Обычно она выполняется на отдельных микросхемах.

Появление МП, работающих на очень высоких частотах (100МГц и более), значительно (в несколько раз) превышающих системную частоту (486, Pentium, Over drive и др.) потребовало введения КЭШ-памяти внутрь МП для согласования внутренних устройств МП с шиной (внутренняя КЭШ или КЭШ первого уровня; 8-16кБ).

Кэширование используется также для согласования работы дисков с системной шиной (КЭШ винчестера; 128-256кБ).

Так как же работает эта память?

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

А). КЭШ прямого отображения. В этом случае адрес памяти полностью определяет используемую строку КЭШа. Строке соответствует несколько блоков из разных областей ОЗУ, а содержимое какого из них находится в КЭШе в данный момент определяется старшими разрядами адреса - тегом (tag - ярлычок, этикетка). Допустим процессор хочет прочитать 2 байта информации, хранимой в ОЗУ с адреса 0010001100. Для КЭШа он разбивается на три части. Младшие 3 разряда выбирают байт в КЭШ-строке (рис.2.11); средние 3 разряда определяют строку, а старшие - тег, который также хранится в строке. Если тег строки совпадает с тегом в адресе, то информация есть в КЭШе и может быть считана, в противном случае идет обращение к ОЗУ, т.к. необходимой информации в КЭШе нет и необходима замена строки. Этот вид КЭШ-памяти используется в 386-х с контроллером i82385).

Достоинство - простота: требуется только одна операция сравнения для тегов; недостаток - не ясно. Что делать, если два часто используемых блока ОЗУ будут претендовать на одну и ту же строку.

Б). Ассоциативная КЭШ-память.

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

В). Наборно-ассоциативная структура КЭШ-памяти.

В Этом случае несколько строк (2-8) объединяются в наборы, определяемые средними битами адреса (рис.2.13). Сравнение тегов производится только для строк, входящих в набор. Этот вариант применяется в 486-х, Pentium и др. При этом у Pentium раздельные КЭШи для команд и данных, что позволяет легче оптимизировать их параметры.

КЭШ-память работает под управлением собственного контроллера. Используются следующие методы записи:

а. Метод сквозной записи (write through). Этот метод предполагает обязательную запись информации и в КЭШ и в основное ОЗУ (через КЭШ), т.е. на каждую операцию модификации информации требуется 2 операции записи, что замедляет работу ПК и увеличивает загрузку шины. Но зато в ОЗУ всегда правильная (последняя) информация. Для сглаживания указанных недостатков используется буферизация.

б. Метод обратной записи (write back). В этом случае, если в КЭШе есть адрес приемника информации, то запись производится только в КЭШ (если его нет, то информация записывается непосредственно в ОЗУ). Содержимое основной памяти обновляется только тогда, когда необходимо обновить строку КЭШа (при этом в ОЗУ записывается полный старый блок, а в КЭШ - требуемый блок из ОЗУ). Это намного уменьшает загрузку шины и используется у 486-х и Pentium.

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

В КЭШ-памяти используются БИС со статическими запоминающими элементами (15-20нс) на 8кБ (по 8бит) и 32кБ (по 8 бит) - Айден,73. БИС КЭШа занимают специальные панельки на материнской плате (на 386, например, их 9 штук - 8 для БИС, хранящих информацию и 1 для БИС, хранящих теги. Если используются 8-килобайтные БИС, то объем такого КЭШа будет 64кБ, а при применении 32кБ - 256кБ. При этом величина установленной памяти сообщается процессору соответствующей установкой переключателей.