Память

         

B.1. Энергозависимая и энергонезависимая память


ЭВМ первого поколения по элементной базе были крайне ненадежными. Так, среднее время работы до отказа для ЭВМ “ENIAC” составляла 30 минут. Скорость счета при этом была не сравнима со скоростью счета современных компьютеров. Поэтому требования к сохранению данных в памяти компьютера при отказе ЭВМ были строже, чем требования к быстродействию оперативной памяти. Вследствие этого в этих ЭВМ использовалась энергонезависимая память.

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

Рис. B.1. Диаграмма намагниченности ферритов.

Вследствие этого намагниченность этого сердечника меняется скачками (положение двоичного 0 или 1, смотри рисунок B.1.) Поэтому, собрав схему, показанную на рисунке B.2, практически собран простейший элемент памяти емкостью в 1 бит. Память на ферритовых сердечниках работала медленно и неэффективно: ведь на перемагничивание сердечника требовалось время и затрачивалось много электрической энергии. Поэтому с улучшением надежности элементной базы ЭВМ энергонезависимая память стала вытесняться энергозависимой — более быстрой, экономной и дешевой. Тем не менее, ученые разных стран по-прежнему ведут работы по поиску быстрой энергозависимой памяти, которая могла бы работать в ЭВМ для критически важных приложений, прежде всего военных.

Рис. B.2. Схема элемента памяти на ферритовых сердечниках.

B.2.1. Триггеры.


Триггером называют элемент на транзисторах, который может находиться в одном из двух устойчивых состояний (0 и 1), а по внешнему сигналу он способен менять состояние [Информатика в понятиях и терминах/М., Просвещение, 1991 г. — 208 с.: ил. — стр. 91]. Таким образом, триггер может служить ячейкой памяти, хранящей один бит информации. Любой триггер можно создать из трех основных логических элементов: И, ИЛИ, НЕ. Поэтому все, что относится к элементной базе логики, относится и к триггерам. Сама же память, основанная на триггерах, называется статической (SRAM)

B.2.2. Элементная база логики.


РТЛ —резистивно-транзисторная логика. Исторически является первой элеентной базой логики, работающей на ЭВМ второго поколения. Обладает большой рассеивающей мощностью (свыше 100 мВт на логический элемент). Не применялась уже в ЭВМ третьего поколения.
ТТЛ, или Т2Л —транзисторно-транзисторная логика. Реализована на биполярных транзисторах. Использовалась в интегральных схемах малой и средней степени интеграции. Обладает временем задержки сигнала в логическом элементе 10— нс, а потребляемая мощность на элемент —10 мВт ТТЛ-Шотки — это модификация ТТЛ с использованием диода Шотки. Обладает меньшим временем задержки (3 нс) и высокой рассеиваемой мощностью (20 мВт).
ИИЛ, или И2Л —интегральная инжекторная логика. Это разновидность ТТЛ, базовым элементом которой являются не биполярные транзисторы одного рода (pnp или npn), а горизонтально расположенного p+n+p транзистора и вертикально расположенного npn транзистора. Это позволяет создать высокую плотность элементов на БИС и СБИС. При этом потребляемая мощность равна 50 мкВт на элемент и время задержки сигнала —10 нс.
ЭСЛ —логические элементы с эмиттерными связями. Эта логика также построена на биполярных транзисторах. Время задержки в них —0,5 —2 нс, потребляемая мощность —25 —50 мВт.
Элементы на МДП (МОП) —транзисторах. Это схемы, в которых биполярные транзисторы заменены на полевые. Время задержки таких элементов составляет от 1 до 10 нс, потребляемая мощность —от 0,1 до 1,0 мВт.
CMOS) КМОП —логика (комплементарная логика.) В этой логике используются симметрично включенные n-МОП и p-МОП транзисторы. Потребляемая мощность в статическом режиме —50 мкВт, задержка —10 —50 нс.

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

B.2.3. SRAM. Замечания.


Из предыдущего раздела Вы узнали, что является элементной базой статического ОЗУ. Как Вы уже поняли, статическое ОЗУ — дорогой и неэкономичный вид ОЗУ. Поэтому его используют в основном для кэш-памяти, регистрах микропроцессорах и системах управления RDRAM (смотри раздел B.3.3.5).

B.2.4. DRAM. Что это такое?


Для того, чтобы удешевить оперативную память, в 90-х годах XX века вместо дорогого статического ОЗУ на триггерах стали использовать динамическое ОЗУ (DRAM). Принцип устройства DRAM следующий: система металл-диэлектрик-полупроводник способна работать как конденсатор. Как известно, конденсатор способен некоторое время “держать” на себе электрический заряд. Обозначив “заряженное” состояние как 1 и “незаряженное” как 0, мы получим ячейку памяти емкостью 1 бит. Поскольку заряд на конденсаторе рассеивается через некоторый промежуток времени (который зависит от качества материала и технологии его изготовления), то его необходимо периодически “подзаряжать” (регенерировать), считывая и вновь записывая в него данные. Из-за этого и возникло понятие “динамическая” для этого вида памяти.

За 10 лет, прошедших со времени создания первых микросхем DRAM, их развитие шло "семимильными" шагами по сравнению с SRAM. Эволюция DRAM рассматривается в следующем подразделе.

| |

 

B.2. SRAM и DRAM.


Полупроводниковая оперативная память в настоящее время делится на статическое ОЗУ (SRAM) и динамическое ОЗУ (DRAM). Прежде, чем объяснять разницу между ними, рассмотрим эволюцию полупроводниковой памяти за последние сорок лет.

B.3.1.1. DIP.


Рис. B.3.1. Модуль памяти DIP

DIP- корпус —это исторически самая древняя реализация DRAM. DIP-корпус соответствует стандарту IC. Обычно это маленький черный корпус из пластмассы, по обеим сторонам которого располагаются металлические контакты (см. рисунок B.3.1.).

Рис. B.3.2. Банк модулей памяти DIP

Микросхемы (по-другому, чипы) динамического ОЗУ устанавливаются так называемыми банками. Банки бывают на 64, 256 Кбайт, 1 и 4 Мбайт. Каждый банк состоит из девяти отдельных одинаковых чипов. Из них восемь чипов предназначены для хранения информации, а девятый чип служит для проверки четности остальных восьми микросхем этого банка.

Чипы памяти бывают одно и четырехразрядными, и иметь емкость 64 Кбит, 256 Кбит, 1 и 4 Мбит. Обозначение разновидностей микросхем памяти в DIP-корпусах показано в таблице [Р. Вебер, стр. 46—].

Следует отметить, что памятью с DIP-корпусами комплектовались персональные компьютеры с микропроцессорами i8086/88, i80286 и, частично, i80386SX/DX. Установка и замена этого вида памяти была нетривиальной задачей. Мало того, что приходилось подбирать чипы для банков памяти одинаковой разрядности и емкости. Приходилось прилагать усилия и смекалку, чтобы чипы правильно устанавливались в разъемы. К тому же необходимо было не разрушить контакты механически, не повредить их инструментом, статическим электричеством, грязью и т.п. Поэтому уже в компьютерах с процессором i80386DX эти микросхемы стали заменять памяти SIPP и SIMM.

B.3.1.2. SIPP (SIP) —модули памяти.


Рис. B.3.3. Модуль памяти SIPP

Одной из незаслуженно забытых конструкций модулей памяти являются SIPP-модули. Эти модули представляют собой маленькие платы с несколькими напаянными микросхемами DRAM.

SIPP является сокращением слов Single Inline Package. SIPP-модули соединяются с системной платой с помощью контактных штырьков. Под контактной колодкой находятся 30 маленьких штырьков (смотри рисунок B.3.3.), которые вставляются в соответствующую панель системной платы ([Вебер,] стр. 49—).

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

B.3.2.1. Сравнение SIMM-модулей.


SIMM-модули в своем развитии прошли два этапа. Первыми представителями SIMM-модулей были 30-пиновые SIMM FPM DRAM. Их максимальная частота работы — 29 МГц. Стандартным же временем доступа к памяти считалось 70 нс. Эти модули уже с трудом работали на компьютерах с микропроцессорами i80486DX2, и были вытеснены сначала 72-пиновыми FPM DRAM, а затем EDO RAM.

Модуль памяти SIMM (72pin)

SIMM EDO RAM имеют только 72 пина и могут работать на частоте до 50 МГц. Этими модулями памяти оснащались компьютеры с процессорами Intel 80486DX2/DX4, Intel Pentium, Pentium Pro и Pentium MMX, а также AMD 80586 и K5. Эти модули устанавливались на платах с чипсетом Intel 440TX, 440EX, 440LX, 450NX; VIA Apollo MVP 3/4, Pro/Pro+; ALI Alladin 4/4+/V/PRO II, ALI Alladin TNT2.

В настоящее время SIMM-модули, как 30-pin, так и 72-pin не удовлетворяют по своим характеристикам требованиям новых шин и процессоров. Поэтому они все активнее заменяются модулями DIMM [Евгений Калугин Типы памяти.//”Подводная лодка”, январь 2000 —стр. 166—.]

B.3.2.2. Причины повышения скорости работы EDO RAM.


Не смотря на небольшие конструктивные различия, и FPM, и EDO RAM делаются по одной и той же технологии, поэтому скорость работы должна быть одна и та же. Действительно, и FPM, и EDO RAM имеют одинаковое время считывания первой ячейки — 60—70 нс. Однако в EDO RAM применен метод считывания последовательных ячеек. При обращении к EDO RAM активизируется не только первая, но и последующие ячейки в цепочке. Поэтому, имея то же время при обращении к одной ячейке, EDO RAM обращается к следующим ячейкам в цепочке значительно быстрее. Поскольку обращение к последовательно следующим друг за другом областям памяти происходит чаще, чем к ее различным участкам (если отсутствует фрагментация памяти), то выигрыш в суммарной скорости обращения к памяти значителен. Однако даже для EDO RAM существует предел частоты, на которой она может работать. Несмотря ни на какие ухищрения, модули SIMM не могут работать на частоте локальной шины PCI, превышающей 66 МГц. С появлением в 1996 году процессора Intel Pentium II и чипсета Intel 4 0BX частота локальной шины возросла до 100 МГц, что заставило производителей динамического ОЗУ перейти на другие технологии, прежде всего DIMM SDRAM.

| |

 

B.3.2. SIMM-модули.


Рис. B.3.4. Модуль памяти SIMM (30pin)

Аббревиатура SIMM расшифровывается как Single Inline Memory Module (Модуль памяти с однорядным расположением выводов.) Он включает в себя все то, что для DIP называлось банком (смотри подраздел B.3.1.1.)

Модули SIMM могут иметь объем 256 Кбайт, 1, 2, 4, 8, 16 и 32 Мбайт. Соединение SIMM-модулей с системной платой осуществляется с помощью колодок (см. рисунок B.3.5.)

Рис. B.3.5. Установка модуля памяти SIMM

Модуль вставляется в пластмассовую колодку под углом 70 градусов, а потом зажимается пластмассовым держателем. При этом плата встает вертикально. Специальные вырезы на модуле памяти не позволит поставить их неправильным образом ([Вебер,] стр. 47—.)

Модули SIMM для соединения с системной платой имеют не штырьки, а позолоченные полоски (так называемые pin, пины).

B.3.3.1. SDRAM.


Рис. B.3.6. Модуль памяти SDRAM

Аббревиатура SDRAM расшифровывается как Synchronic DRAM (динамическое ОЗУ с синхронным интерфейсом). Этим они отличаются от FPM и EDO DRAM, работающих по асинхронному интерфейсу.

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

Другое преимущество синхронного интерфейса —это то, что системные часы задают временные границы, необходимые DRAM. Это исключает необходимость наличия множества стробирующих импульсов, обязательных для асинхронного интерфейса. Это, во-первых, уменьшает трафик по локальной шине (нет “лишних” сигналов), а во-вторых, позволяет упростить операции ввода-вывода (в операциях пересылки центральный процессор либо контроллер DMA уже не должен выделять полезную информацию среди служебных стробирующих импульсов и битов четности). В-третьих, все операции ввода/вывода на локальной шине стали управляться одними и теми же синхроимпульсами, что само по себе хорошо.

Хотя SDRAM появилась уже давно, использование ее тормозилось высокой (на 33%) ценой по сравнению с EDO RAM. “Звездный час” SDRAM настал в 1997 году, после появления чипсета 440BX, работающего на частоте 100 МГц. Вследствие этого доля рынка SDRAM за год выросла в два раза (с 25% в 1997 году до 50% в 1998 году.)

В настоящее время выпускаются модули SDRAM, работающие на частотах 100 и 133 МГц. Также разработаны SDRAM на частоты 143 МГц и выше.

B.3.3.2. ESDRAM.


Следующим оригинальным решением, увеличившим частоту работы SDRAM, явилось создание кэша SRAM на самом модуле динамического ОЗУ. Так появилась спецификация Enhanced SDRAM

(ESDRAM). Это позволило поднять частоту работы модуля до 200 МГц. Назначение кэша на модуле точно такое же, что и кэш второго уровня процессора — хранение наиболее часто используемых данных.

B.3.3.3. SDRAM II.


Рис. B.3.7. Модуль памяти DDR DRAM (SDRAM II)

Спецификация SDRAM II (или DDR SDRAM) не имеет полной совместимости с SDRAM. Эта спецификация позволяет увеличить частоту работы SDRAM за счет работы на обеих границах тактового сигнала, то есть на подъеме и спаде. Однако SDRAM

II использует тот же 168-ми контактный разъем DIMM.

B.3.3.4. SLDRAM.


Как и SDRAM II, эта спецификация использует обе границы тактового сигнала и имеет в себе SRAM. Однако благодаря протоколу SynchLink Interface эта память способна работать на частоте до 400 МГц.

B.3.3.5. Память от Rambus (RDRAM, RIMM).


Рис. B.3.8. Модуль памяти RDRAM (RIMM)

RDRAM представляет собой спецификацию, созданную и запатентованную фирмой Rambus, Inc. За счет использования обоих границ сигнала достигается частота работы памяти в 800 МГц.

Подсистема памяти Direct Rambus включает в себя следующие компоненты [Евгений Калугин. Типы памяти.//”Подводная лодка”, январь 2000 г., стр. 166—.]: Direct Rambus Controller. Direct Rambus Channel. Direct Rambus Connector. Direct Rambus RIMM(tm). Direct Rambus DRAMs.

Рассмотрим эти компоненты поподробнее:

1. Контроллер Direct Rambus — это главная шина подсистемы памяти. Он помещается на чипе логики, как и PC-чипсет, микропроцессор, графический контроллер. Физически можно поместить до четырех Direct Rambus—контроллеров на одном чипе логики. Контроллер — это интерфейс между чипом логики и памятью Rambus, и в его обязанности входит генерация запросов, управление потоком данных, и ряд других функций.

2. Direct Rambus Channel создает электрические соединения между Rambus Controller и чипами Direct RIMM. Работа канала основана на 30-ти сигналах, составляющих высокоскоростную шину. Эта шина работает на частоте 400 МГц и, за счет передачи данных на обеих границах тактового сигнала, позволяет передавать данные на 800 МГц. Два канала данных (шириной в байт каждый) позволяет получать пиковую пропускную способность в 1,6 Гбайт/с. Канал соответствует форм-фактору SDRAM.

3. Разъем Direct Rambus — это разъем со 168 контактами. Контакты расположены на двух сторонах модуля, по 84 с каждой стороны. Разъем представляет собой низкоиндуктивный интерфейс между каналом на модуле RIMM и каналом на материнской плате.

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

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

Модули RIMM имеют размеры, сходные с геометрическими размерами SDRAM DIMMs. Модули RIMM поддерживают SPD, которые используются на DIMM'ах SDRAM. В отличие от SDRAM DIMM, Direct Rambus может содержать любое целое число чипов Direct RDRAM (до максимально возможного).

Один канал Direct Rambus максимум может поддерживать 32 чипа DRDRAM. На материнской плате может использоваться до трех RIMM модулей. Используются 64 Мбит, 128 Мбит и 256 Мбит устройства.

Чтобы расширить память сверх 32-х устройств, могут использоваться два чипа повторителя. С одним повторителем канал может поддерживать 64 устройства с 6-ю RIMM модулями, а с двумя — 128 устройств на 12 модулях.

5. Чипы DRDRAM. Чипы DRDRAM составляют часть подсистемы Rambus, запоминающие данные. Все устройства в системе электрически расположены в канале между контроллером и терминатором. Устройства Direct Rambus могут только отвечать на запросы контроллера, который делает их шину подчиненной или отвечающей. Устройства включают в себя статическое и динамическое ОЗУ.

| |

 

B.3.3.DIMM


Аббревиатура DIMM расшифровывается как Dual Inline Memory Module (Модуль памяти с двойным расположением выводов). В модуле DIMM имеется 168 контактов, которые расположены с двух сторон платы и разделены изолятором. Также изменились и разъемы для DIMM-модулей.

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

В следующих подразделах рассмотрим типы DRAM, имеющие разъем DIMM.

Конструктивные особенности.


Динамическое ОЗУ со времени своего появления прошло несколько стадий роста, и процесс ее совершенствования не останавливается. За свою десятилетнюю историю DRAM меняла свой вид несколько раз. Вначале микросхемы динамического ОЗУ производились в DIP-корпусах. Затем их сменили модули, состоящие из нескольких микросхем: SIPP, SIMM и, наконец, DIMM и RIMM. Рассмотрим эти разновидности поподробнее.

Полупроводниковая память.


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

Преимуществами же полупроводниковой памяти перед ее заменителями являются: малая рассеиваемая мощность; высокое быстродействие; компактность.

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

| |

 

Оперативное запоминающее устройство является, пожалуй,


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

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


Кроме оперативной памяти, под термином "память" мы будем подразумевать постоянную и CMOS - память.

К постоянной памяти относят постоянное запоминающее устройство, ПЗУ (в англоязычной литературе - Read Only Memory, ROM, что дословно перводится как "память только для чтения"), перепрограммируемое ПЗУ, ППЗУ (в англоязычной литературе – Programmable Read Only Memory, PROM), и флэш-память (flash memory). Название ПЗУ говорит само за себя. Информация в ПЗУ записывается на заводе-изготовителе микросхем памяти, и в дальнейшем изменить ее значение нельзя. В ПЗУ хранится критически важная для компьютера информация, которая не зависит от выбора операционной системы. Программируемое ПЗУ отличается от обычного тем, что информация на этой микросхеме может стираться специальными методами (например, лучами ультрафиолета), после чего пользователь может повторно записать на нее информацию. Эту информацию будетневозможно удалить до следующей операции стирания информации.



C.2. Флэш-память.


Особо следует рассказать о флэш-памяти. Flash по-английски – это "вспышка, проблеск". Флэш-память является энергонезависимой памятью, (как и ПЗУ и ППЗУ). При выключении компьютера ее содержимое сохраняется. Однако содержимое flash-памяти можнр многократно перезаписывать, не вынимая ее из компьютера (в отличие от ППЗУ). Запись происходит медленнее, чем считывание, и осуществляется импульсами повышенного напряжения. Вследcтвие этого, а также из-за ее стоимости, флэш память не заменит микросхемы ОЗУ.

C.3. CMOS-память.


CMOS-память – энергозависимая, перезаписываемая память, которая при своей работе , однако, почти не потребляет энергии. CMOS переводится как complementary metal oxode semiconductor – "комплиментарный металл - оксид - полупроводниковый". Достоинства этой памяти – низкое потребление энергии, высокое быстродействие. В CMOS - памяти компьютера находятся важные для его работы настройки, которые пользователь может менять для оптимизации работы компьютера. Питается эта память от небольшого аккумулятора, встроенного в материнскую плату.

C.4.1. Потеря данных в CMOS.


Компьютеры с ISA шиной (содержащие процессоры вплоть до i80286), имели минимум настроек. Часто они вполне нормально работали в своей основной конфигурации.

Ситуация изменилась после появления на компьютерах памяти более чем 16 Мбайт, ШВУ контроллеров и PCI-шины. Как выяснилось, в большинстве случаев стандартная настройка материнской платы стала неприменимой. Для сохранения настроек пользователя их стали хранить в CMOS-памяти.

Иногда содержимое CMOS-памяти разрушается. Это возможно в следующих случаях: Воздействие вируса. При своей работе вирус может специально внедряться в CMOS-память, чтобы обеспечиватиь лучшие условия для его распространения либо специально вывести компьютер из строя. Неисправность аккумулятора. В некоторых случаях аккумулятор CMOS-памяти может разряжаться (от времени или короткого замыкания на плате.) В этом случаесодержимое CMOS может разрушиться не сразу, а по прошествии двух - трех суток. Скачок напряжения при работе с CMOS. В этом случае последствия непредсказуемы. Установка пароля на загрузку. Иногда пользователь для защиты от несанкционированного доступа устанавливает "пароль на загрузку". Если он потом забудет пароль, то для запуска компьютера будет необходим сброс параметров CMOS-памяти путем короткого замыкания ее аккумулятора.

Для восстановления параметров CMOS-памяти после ее сброса существуют опции "стандартной" и безопасной" настройки этой памяти на материнской плате. Пользователю в этом случае придется восстанавливать не все, а только часть параметров. Опции "стандартной" и "безопасной" настройки хранятся в ПЗУ и изменить их невозможно!

C.4.2. Потеря данных в flash-памяти.


Потеря данных в flash-памяти возможна по тем же причинам, что и в CMOS-памяти. Однако для флэш-памяти нет возможности вернуться к первоначальным установкам! В связи с этим потеря информации в флэш-памяти может быть непоправимой.

... В 1998 году автор узнал о новом черезвычайно опасном вирусе –"Чернобыль". Опасность заключалась в его действии – ровно в годовщину аварии на Чернобыльской АЭС этот вирус портил содержимое флэш-памяти и наиболее важной ее части – BIOS. В результате компьютер не мог вообще осуществлять операции ввода-вывода, в том числе и загрузку операционных систем. CMOS-память же оставалась в полном порядке! Поскольку микросхема с BIOS обычно была припаяна к материнской плате, приходилось выкидывать всю материнскую плату.

Автору известен только один способ 100% гарантии избежать действия этого вируса – аппаратно запретить перзапись флэш-памяти. Дело в том, что новые версии этого вируса размножаются лавинообразно, и нет гарантии, что он сработает именно в эту дату.

| |

 

C.4. Недостатки перезаписываемой памяти.


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

D.1. Область ПЗУ


Системная область занимает следующие 384 Кбайт адресного пространства. Распределение адресов в этой области в наибольшей степени зависит от фирмы-производителя и модели компьютера. Эта область впервые выделилась в компьютерах на основе процессора 8088. В них эта область содержала видеопамять, BIOS, дополнительный BIOS и, кроме того, содержала внутренний интерпретатор с языка Бейсик. В начале видеопамять 000С:0000 – 000С:FFFFh (размером 64 Кбайт). Затем видеопамять возросла до 128 Кбайт (EGA- VGA режимы высокого разрешения), и стала занимать пространства адресов с 000А:00000h до 000B:FFFFh. Соответственно область BIOS сдвинулась в пространстве адресов 000E:0000h – 000F:FFFFh. В настоящее время и SVGA-видеокарты в режиме высокого разрешения видеопамять в RAM (системной области оперативной памяти) занимает те же 128 Кбайт , а доступ к остальной части видеопамяти (размер которой может превышать 4 мегабайта), осуществляется постранично. Управление постраничным выделением памяти (по 128 Кбайт каждая страница) осуществляется с помощью ПЗУ на самой видеоплате.

Область памяти с адресами 000С:0000h – 000D:FFFFh занимает либо страница дополнительной (expanded) LIM-памяти, либо дополнительное ПЗУ (BIOS) пользователя. Это ПЗУ позволяет превратить обычный офисныйый компьютер в специализированную ЭВМ. В современных компьютерах эта область содержит ПЗУ USB (Universal Serial Bus), поэтому для дополнительной памяти надо выделять другие адреса.

Уже у компьютеров серии PC/AT системное ПЗУ было расширено до 64 Кбайт, и в частности, за счет исключения интерпретатора с языка Бейсик. Важно отметить, что в последних 16 байтах области системной памяти (которая занимает пространство адресов с 000Е:0000h по 000F:FFFFh) находится стартовый адрес микропроцессора при включении питания и который не должен быть переопределен ни в коем случае.

Конечно, для современных компьютеров размеры системного ПЗУ в 64 Кбайта (и даже в 128 Кбайт!) уже недостаточно, поскольку число различных подключаемых к компьютеру устройств велико. Поэтому большинство устройств содержат собственные ПЗУ (BIOS) прямо на самой плате-контроллере , а доступ к нему осуществляется с помощью устройств прямого доступа к памяти (DMA). Задача системного BIOS – переправлять сигналы операционной системы в ПЗУ периферийного устройства на обработку, и корректно возвратить обратно полученный ответ. Именно поэтому разделение системного адресного пространства на области весьма условно.

| |

 

D.2.1. Базовая память.


Со времен микропроцессора 8088 здесь находятся все исполняемые программы, в том числе и операционная система. Эта преемственность сохранилась до сих пор. В самом начале этой области находится: Таблица векторов прерываний. Она всегда находится в диапазоне адресов 0000:0000h - 0000:0400h (первый килобайт памяти). Таблица определяет адреса прерываний - готовых процедур операционной системы, которые компьютер вызывает для выполнения определенной задачи. Программы прерываний стандартизованы для всех операционных систем фирмы Microsoft. Файл надстройки над системой BIOS - файл IO.SYS. В этом файле находятся программы-прерывания ввода/вывода, специфичные для операционной системы Microsoft. Система обработки прерывания (Int 21h) системы MS-DOS - файл MSDOS.SYS

Примечание: эта часть отсутствует в операционных системах Windows. Она целиком помещается в файле IO.SYS. Стеки операционной системы MS-DOS. Эти стеки используются исключительно программами - прерываниями операционной системы. Число стеков варьируется в MS-DOS в пределах от 8-ми до 64-х, а их размер - от 32-х до 512-ти байт. Стеки устанавливаются командой STACKS в файле Config.sys. Системное окружение. Здесь расположены переменные окружения операционной системы (задаваемые командами SET, PATH, Prompt, Lastdrive и некоторыми другими.) Размер системного окружения задается в опциях команды SHELL файла Config.sys. Буфера ввода/вывода дисковых накопителей. Число буферов ввода/вывода задается командой Buffers файла Config.sys. На каждый буфер выделяется по 532 байта. Дескрипторы открытых файлов. На каждый дескриптор отводится 64 байта. Число дескрипторов устанавливается командой FILESфайла Config.sys. Драйверы, запускаемые командой Device файла Config.sys. Среди них могут быть драйверы расширенной памяти Himem.sys, дополнительной памяти Emm386.exe, а также совмещенный драйвер Quemm386.sys. Резидентные программы, загружаемые в память командой Install файла Config.sys. Резидентная часть командного процессора Command.com. Резидентные программы, загружаемые из файла Autoexec.bat и командной строки.

Вся остальная базовая память доступна для программ MS-DOS.

Общий объем базовой памяти, занятой


Общий объем базовой памяти, занятой системными программами, не должен превышать 256 Кбайт, а рекомендуемый максимальный размер этой области - 128 Кбайт. Только при свободном объеме 512 Кбайт большинство программ DOS будут чувствовать себя комфортно. Конечно, любой драйвер подключенного к компьютеру устройства, любая запущенная резидентная программа забирает под свои нужды определенную часть памяти, и лимит в 128 Кбайт может быть достигнут очень быстро. Чтобы избежать этого, возможны два сценария: (Для MS-DOS версий 5.0 и выше.) Загрузить большинство резидентных программ и драйверов, а также часть основных файлов MS-DOS в верхнюю и старшую память. (Для всех операционных систем.) Создать несколько конфигураций из файлов Config.sys и Autoexec.bat (или им подобных), содержащих необходимый минимальный набор драйверов и резидентных программ, и переключаться между конфигурациями путем перезагрузки компьютеров. Любой из сценариев имеет свои достоинства и недостатки. Поэтому выбор любого сценария либо их комбинации должен решаться индивидуально.

D.2.3.1. Зоны в расширенной памяти.


Не вся область расширенной памяти доступна для выполнения программ. В этой области памяти находится зона теневого BIOS (Shadow RAM) и зона микропроцессора Weitec.

D.2.3.2. Зона теневого BIOS.


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

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

Зона теневого BIOS расположена по адресам памяти 00FE:0000h - 00FF:FFFFh. При этом зона системного BIOS расположена в первых 64 Кбайт этой области. Остальное пространство используется для теневого BIOS плат расширения. Весьма нежелательно, чтобы эта область памяти рагментировалась.

D.2.3.3. Зона микропроцессора Weitek.


Микропроцессор Abacus фирмы Weitek спроектирован так, что он обменивается данными с центральным процессором через расширенную память. Для обмена данными используется диапазон адресов C000:0000h - C000:FFFFh. Центральный процессор просто пересылает данные в эту область, а затем считывает из нее готовые результаты.

При использовании микропроцессора Abacus часто возникает конфликт между ним и драйверами расширенной и дополнительной памяти. Чтобы избежать его, мало прописать в BIOS использование этого микропроцессора. Необходимо также установит опции поддержки микропроцессора Weitek в драйверах.

Примечание: стандартные драйверы расширенной и дополнительной памяти MS-DOS поддерживают этот микропроцессор начиная с версии DOS 6.0.

| |

 

D.2. Распределение (карта) памяти шиноцентричных Intel-совместимых компьютерах.


В августе 1981 года фирма IBM выпустила свой первый персональный компьютер, основанный на микропроцессоре Intel 8088. Этот процессор способен был адресовать 1 Мбайт оперативной памяти, которой, как тогда казалось, персональным компьютерам хватит надолго. В связи с этим проблеме распределения памяти уделили меньше внимания, чем другим проблемам. С легкой руки компании Microsoft это распределение памяти "укоренилось" в мире и стало стандартом де-факто для всех Intel-совместимых компьютеров.

В памяти Intel-совместимых компьютеров можно выделить три зоны памяти: Базовая (Conventional) память - первые 640 Кбайт памяти с адресами 0000:0000h - 0009:FFFFh. Старшая (Upper) память - следующие 384 Кбайта (адреса 000A:0000h - 000F:FFFFh). Расширенная (Extended) - вся остальная память. Она начинается с адреса 0010:0000h. Максимальное значение адреса - FFFF:FFFFh.

Рассмотрим эти три зоны по-подробнее.

D.3.1. Адресация старших и младших байт в адресе.


Рис. D.3.1

В Intel - совместимых компьютерах младшие байты располагаются в ячейках памяти с большими номерами (смотри рисунок D.3.1.) В отличие же от них в компьютерах Apple Macintosh старшие байты располагаются в ячейках памяти с меньшими номерами (рис. D.3.2.) Как и в Intel - совместимых компьютерах, выборка элементов осуществляется начиная со старшего байта.

Рис. D.3.2

D.3.2. Формирование логического (линейного) адреса.


В отличие от Intel - совместимых компьютеров, компьютеры Apple не используют сегментную организацию памяти. Микропроцессор фирмы Motorola, используемый в компьютерах Apple Macintosh, используют непрерывную логическую адресацию памяти.

Примечание:логическим адресом в процессорах Motorola называется линейный адрес.

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

D.3.3. Карта памяти компьютера Apple Macintosh.


В отличие от компьютеров фирмы Intel, системная область ПЗУ находится в начале адресного пространства оперативной памяти изанимает адреса 0000:0000h - 0000:3FFFh. Кроме ПЗУ, по адресам 0000:0000h - 0000:03FFh находится таблица векторов прерывания операционной системы.

| |

 

D.3. Распределение памяти в компьютерах Apple Macintosh.


Хотя компьютеры Apple Macintosh являются шиноцентричными, у них много отличий от Intel -- совместимых компьютеров. Это не удивительно -- обе архитектуры разрабатывались независимо друг от друга разными фирмами. Ниже будет описано различие в адресации памяти у этих архитектур.

Дескрипторная таблица прерываний (IDT).


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

E.0.1. Базовые адреса и формирование линейных адресов.


Базовые адреса содержатся в сегментных регистрах микропроцессоров i8086/88 и в регистрах селекторов сегментов в микропроцессорах x86 (смотри VOLIII(6), "Классификация регистров для сегментации и страничной организации памяти".) Эти регистры шестнадцатиразрядные. Однако образующийся в результате сложения базового и эффективного адреса линейный адрес является 20-ти разрядным. Схема формирования 20-тиразрядного адреса из базового и эффективного показана на рисунке E.0.

Рис. E.0. Образование линейного адреса в микропроцессорах i8086/88 и реальном режиме работы микропроцессоров x86.

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

Примечание: Это справедливо для микропроцессоров i8086/88. В защищенном режиме работы микропроцессоров значение в сегментном регистре не имеет прямой взаимосвязи с реальным адресом в памяти. Кроме того, сомо понятие "параграф" там не используется.

Следует отметить, что в микропроцессоре i8086 максимальное значение физического адреса составляет FFFFFh (или 1Мбайт - 1 байт). Однако величина максимального значения линейного адреса (сумма максимальных значений базового и эффективного адресов) равна:

(E.1.)

Таким образом максимальный линейный адрес имеет размер 1,062 Мбайт (то есть на 64 Кбайт больше, чем адресное пространство в 1 Мбайт). Поэтому в микропроцессорах i8086/88 происходит "заворачивание" адреса вокруг границы сегмента. (то есть физический адрес (формула E.1.) будет иметь значение 0FFEFh). В микропроцессоре i80286, в резульате ошибки разработчиков, такого заворачивания нет (смотри раздел Верхняя память). В микропроцессорах i80386 и выше это "заворачивание" можно включить, а можно и выключить, Для включения "заворачивания" необходима аппаратная блокировка линии A20 (A20=0) с помощью порта контроллера клавиатуры. Его состоянием можно управлять программно. Смотри также разделы, посвященные опчиям драйвера Himem.sys.

E.0.2. Особенности сегментации памяти в микропроцессоре i8086 (итоги).


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

| |

 

E.0. Сегментная организация памяти


В микропроцессорах i8086/88 сегментация памяти осуществляется простым способом. Все адресное пространство в 1 Мбайт разбивается на несколько (от 16 до 65536) смежных блоков памяти. Каждый такой блок может иметь размер от 16 байт до 64 Кбайт и выравнивается на шестнадцатибайтной границе. Блок памяти длиной в 16 байт и выравненный на 16-ти байтной границе называется параграфом. Для обращения к любому адресу в памяти необходимо знать его физический адрес, который в микропроцессорах i8086/88 и реальном режиме работы микропроцессоров x86 совпадает с его линейным адресом.

В общем случае для формирования линейного адреса необходимо знать базу (Base, Segment) и смещение (Offset) этого адреса. В микропроцессорах i8086/88 оба компонента линейного адреса являются шестнадцатиричными.

Для микропроцессоров x86 в реальном режиме работы смещение (Offset) является одновременно эффективным адресом. Эффективные адреса формируются в Intel-совместимых микропроцессорах с помощью регистров данных (смотри VOLIII(6), "Системные регистры центрального процессора".) Эффективный адрес формируется следующим образом.: к восьми или шестнадцатиразрядному смещению в программе добавляется 16-ти разрядное содержимое базового регистра и 16-ти разрядное содержимое индексного регистра. (смотри VOLIII(6) "Классификация регистров данных").

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

2. Обычно в базовом регистре содержится начальный адрес блока извлекаемых данных, а в индексном регистре -- длина извлекаемой записи, умноженная на порядковый номер (от 0 до N-1) записи.

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

Примечание: Необходимые сочетания индексных, базовых регистров и разрядности смещения не произвольны, а резервируются фирмой Intel в своих разработках. Подробнее о формировании эффективных адресов смотри [В,С. Петрухин,, стр. 103-106 для реального режима, стр. 110-114 для защищенного режима].

E.1.1. Дескрипторные таблицы.


В системах на базе процессоров x86 допускается создание почти любого числа сегментов - необходимо только наличие соответствующего дескриптора. Все дескрипторы имеют длину 8 байт и хранятся в специальной области ОЗУ, называемой дескрипторной таблицей (descriptor table). Порядок размещения дескрипторов произволен, а максимальное число дескрипторов - 8192. Таким образом максимальный размер дескрипторной таблицы - 64 Кбайт.

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

E.1.2. Селекторы.


Отправной точкой входа в дескриптор является селектор. Полный формат регистра селектора приведен на рисунке E.1.

Рис. E.1. Формат селектора микропроцессора x86.

Двухбитное поле RPL привлекается для контроля привилегий в механизме защиты.

Бит индикации таблицы TI показывает. из какой дескрипторной таблицы выбирается дескриптор: (TI=0 - GDT, TI=1 - LDT). Старшие 13 бит определяют нужный дескриптор в дескрипторной таблице.

E.1.3. Формирование линейного адреса.


Формирование линейного адреса в микропроцессоре x86 показано на рисунке E.2.

Рис. E.2. Формирование линейного адреса в защищенном режиме микропроцессора x86.

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

E.1.4.Формат дескрипторной таблицы.


E.3. Формат дескрипторной таблицы.

На рисунке E.3. приведен формат дескрипторов в дескрипторных таблицах. Подробнее смотри [??? Григорьев и Обнинск.] На них обозначены:

E.4. Формат локальной дескрипторной таблицы.

Базовый адрес (32-х битный) - базовый адрес сегмента. Именно этот адрес сформирует процессор при нулевом смещении.

Предел (20-битный). Определяет размер сегмента в байтах.

Бит присутствия (P) установлен в состояние 1, когда он находится (присутствует) в физической памяти.

Двухбитное поле привилегий (DPL) определяет уровень привилегий сегмента. Существуют четыре уровня привилегий: от 0 до 3.

Бит S (системный, сегмент) всегда установлен в 1, если этот объект в дескрипторной таблице является сегментом. В случае S=0 данный объект может являться, а может и не являться сегментом памяти.

Бит гранулярности G. При бите гранулярности G = 0 предел сегмента измеряется в байтах, а при G = 1 - в страницах по 4 Кбайт.

Бит D - размер по умолчанию. Он определяет, какая из размерностей для данных (16 или 32 бита) применяется для операндов процессора. При D=0 процессор интерпретирует содержимое сегмента кода как 16-ти битный код процессора i80286, а при D=1 - как 32-х битный код процессора i80486 и старше. Использование бита D - самый простой способ переключения между 16-ти и 32-х битными приложениями.

Бит A - доступа и обращения. Этот бит процессор автоматически устанавливает в состояние 1, когда происходит обращение к сегменту в физической памяти, описываемым данным дескриптором. Он предназначен для предотвращения свопинга сегмента на диск в момент обращения к нему.

Бит X зарезервирован корпорацией Intel для своих будущих разработок. Он должен всегда равняться 0.

Бит U может быть использован программистом для своих целей.

Трехбитное поле ТИП используется для указания целевого использования сегмента. Его значения:

000b - сегмент данных, разрешено только считывание.

001b - сегмент данных, разрешено считывание и запись.

010b - сегмент стека, разрешено только считывание (не используется в практике.)

011b - сегмент стека, разрешено чтение и запись.

100b - сегмент кода, разрешено только выполнение.

101b - сегмент кода, разрешено выполнение и считывание.

110b - подчиненный сегмент кода, разрешено только выполнение.

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

| |

 

E.1. Сегментация памяти в защищенном режиме.


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

При всем этом у системного программиста имеется больше возможностей по управлению сегментацией памяти. Так, уже в микропроцессоре i80386 сняты ограничения на размер сегмента. Он может иметь значение от 1 байта до 4 Гбайт. В нем также сняты ограничения на местоположение границы сегмента. Граница сегмента больше не привязана к границе параграфа, да и само понятие "параграф" к защищенному режиму работы микропроцессора не применяется. Программист в описании сегмента сам определяет уровни привилегий и тип используемого сегмента.

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

1. Возможен переход от сегмента к сегменту, имеющих один и тот же уровень привилегий.

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

3. Если необходимо перейти к сегменту кода, имеющий более высокий уровень привилегий, необходимо использовать вентиль.

E.2.1. Структура страниц.


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

Границы сегментов и страниц могут не совпадать. Однако желательно, для повышения производительности системы, выравнивать границы сегментов на границы страничного кадра.

В отличие от сегмента, для страниц есть только два уровня привилегий: пользовательский (User) и супервизора (Supervisor). Пользовательский уровень привилегий соответствует уровню 3 для сегмента, а уровень супервизора - уровням привилегий сегмента 0, 1 и 2.

E.2.2. Формирование адреса при страниvчном преобразовании.


Рис. E.5. Страничная организация памяти.

В процессе страничного преобразования старшие 20 бит 32-х битного линейного адреса заменяются новым значением - номером физической страницы. Младшие же 12 бит линейного адреса определяют положение байта внутри страницы и остаются неизменными.

Для уменьшения размера таблицы страниц в микропроцессорах x86 предусмотрена двухуровневая схема преобразования адреса. Основой страничного преобразования служит регистр управления CR3, содержащий 20-ти битный физический базовый адрес каталога страниц текущей задачи. Предполагается, что каталог выровнен по границе страничного кадра, постоянно находится в памяти и не участвует в свопинге.

Корневая страница, называемая каталогом страниц, содержит 1024 32-х битных дескриптора, называемых элементами каталога страниц PDE (Page Directory Entry). Каждый из них адресует подчиненную таблицу страниц. Каждая из этих таблиц содержит 1024 32-х битных дескриптора, называемая элементами таблицы страниц. PTE (Page Table Entry). Каждый PTE содержит адрес страничного кадра в физической памяти.

Собственно преобразование линейных адресов в физические состоит из следующих действий:

- Старшие 10 бит 31 - 22 линейного адреса, дополненные двумя младшими нулями, служат индексом PDE.

- Средние 10 бит 21 - 12 линейного адреса, дополненные двумя младшими нулями, индексируют таблицу страниц PTE. Элемент PTE содержит 20-битный базовый адрес страничного кадра в физической памяти.

Этот базовый адрес из элемента PTE объединяется с младшими 12-ю битами линейного адреса, образуя 32-х битный физический адрес. Пояснение - смотри рисунок E.6.

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

| |

 

E.2. Страничная организация памяти. Виртуальная память.


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

Управление страничным разбиением памяти обычно возлагается на специальную микросхему MMU (Memory Managment Unit - устройство управления памятью). В микропроцессоре i80486 и выше это устройство встроено в процессор.

Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса (в данном случае линейного) в физический. В страничном преобразовании базовым объектом памяти является блок фиксированного размера, называемый страницей (page). Размер страницы - 4 Кбайт.

E.3. Особенности страничной организации памяти в микропроцессоре Motorola MC68030.


В микропроцессор MC68030, в отличие от микропроцессора Motorola MC68020, добавлено устройство управления памятью (Memory Management Unit, MMU). Для поддержки MMU дополнительно введены регистры CRP, SRP, TCR, TTR0, TTR1 и MMUSR, доступ к которым открыт только в режиме супервизора. Данное устройство предназначено для преобразования логического адреса микропроцессора в физический адрес байта, слова или двойного слова, размещенной на определенной странице в ОЗУ.

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

Рис. E.6

Поле PS логического адреса определяет относительный адрес (смещение) требуемого байта или слова в таблице. Обращение к этой таблице осуществляется с использованием нескольких промежуточных уровней трансляций: A, B, C, D, определяемые полями логического адреса DA, DB, DC, DD и FC. Кроме того, логический адрес может содержать не транслируемые биты IS, игнорируемые MMU. На рисунке E.7. показан пример трансляции адреса с использованием трех уровней: FC, A и B.

Рис. E.7.

Микропроцессор допускает использование страниц размером 256, 512, 1К, 2К,4К, 8К, 16К и 32К, поэтому поле PS содержит от восьми до 15 разрядов. Максимальное число разрядов каждого из полей может достигать 15 - при этом общее число разрядов всех полей логического адреса должно быть равным 32. При нарушении этого условия подается прерывание (особая ситуация) на микропроцессор.

Рис. E.11.

Управление разбиением логического адреса на страницы задается 32-х разрядным регистром управления трансляциями TCR. Его значения:

E=1 разрешение трансляции адреса MMU.

SRE = 0 CRP используется и в режиме пользователя, и в режиме супервизора.

SRE = 1 CRP используется в режиме пользователя, а SRP - в режиме супервизора.

FLC = 1 разрешение использования верхнего уровня FLC.

FLC = 0 верхним уровнем трансляции назначается уровень A.

IS, TIA, TIB, TIC, TID 4-х битовые поля, задающие число разрядов в полях IS, DA, DB, DC и DD соответственно.

PS поле разряда страниц:

1000 256

1001 512

1010 1К

1011 2К

1100 4К

1101 8К

1110 16К

1111 32К.

| |

 

E.4.1. Четырехуровневая система привилегий в микропроцессорах с архитектурой x86.


Процессоры x86 поддерживают четыре уровня привилегий для сегментов программ и данных. Уровень 0 самый привилегированный, уровень 3 наименее привилегированный. Корпорация Intel рекомендует процессам занимать следующие уровни привилегий:

0 - ядро операционной системы;

1 - операционная система;

2 - системы программирования и базы данных;

3 - прикладные (пользовательские) программы.

На каждом уровне привилегий проверяется: Может ли программа выполнить указанную подпрограмму? К данным каких программ может обратиться та или иная программа? Имеет ли программа право передавать управлению внешнему процессу и какому именно?

Рассмотрим накладываемые ограничения:

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

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

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

E.4.2.1. Подчиненные сегменты кода.


Предположим [В.Л. Григорьев, - т. 1 стр. 111] в системе имеется сегмент кода для преобразования двоичных целых чисел в коды ASCII. Ее должны использовать программы со всеми уровнями привилегий. Чтобы ее можно было вызвать из ядра операционной системы, она должна иметь уровень привилегий 0. Для того же, чтобы указать, что данный сегмент должен использоваться программами с другими уровнями привилегий, необходимо установит бит 2 (C - Conforming) в байте прав доступа AR дескриптора сегментов.

На подчиненные сегменты накладываются следующие ограничения:

1. Подчиненные сегменты не должны использовать привилегированные команды.

2. "Подчиненная" процедура должна иметь достаточные привилегии для обращения к своему параметру и возвращения результата.

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

4. В подчиненных сегментах не разрешается передавать управление другим подчиненным сегментам.

Подчиненные сегменты кода широко используются при создании разделяемых библиотек.

E.4.2.2. Шлюзы вызова.


Шлюзы вызова применяются для фактического изменения уровней привилегий. Другое название шлюза – "вентиль".

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

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

Вообще при обращении через шлюз происходит генерация сегмента состояния задачи, после чего происходит переключение (вызов) на новую задачу как на новый процесс! Поэтому использование шлюза является более сложным способом вызова подпрограммы с другим уровнем привилегий. Подробнее об использовании шлюзов смотри [В.Л. Григорьев.].

| |

 

E.4.2. Передача управления между уровнями привилегий.


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

E.4. Уровни защиты.


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

Простейшие уровни привилегий, реализованные в ЭВМ 60-х годов - это работа в режимах пользователя (User) и системы, или супервизора (Supervisor). Эта двухуровневая модель хорошо зарекомендовала себя в системах, когда одна большая ЭВМ (операционная система, процесс и т.п.) обслуживала нескольких равноправных пользователей. Двухуровневая система привилегий работает на компьютерах Apple Macintosh вплоть до настоящего времени и в микропроцессорах x86 при страничной организации памяти.

С появлением современных технологий работы вычислительной техники (технологии Клиент-сервер, "тонкие" клиенты, Jini и т.п.) двух уровней привилегий стало не хватать. Предвосхищая эту проблему, фирма Intel предложила в своем процессоре i80386 четырехуровневую систему привилегий на уровне сегмента.

Глобальная дескрипторная таблица (GDT).


Главной общесистемной таблицей дескрипторов является именно эта системная таблица. Таблицу GDT "коллективно используют" все задачи. Для определения начального адреса GDT предназначен специальный регистр микропроцессора - GDTR. Наличие GDT в системе обязательно при работе микропроцессора x86 в защищенном режиме.

Локальная дескрипторная таблица (LDT).


Для каждой задачи в дополнение к таблице GDT можно построить свою, локальную дескрипторную таблицу. Она определяет сегменты, доступные только этой, конкретной задаче. Эти таблицы не являются обязательными, создаются по мере надобности, и хранятся в сегментах программы, на которых есть ссылка в GDT. Локальные таблицы используют 16-ти битный селектор, что упрощает манипуляцию с сегментами. Локальные дескрипторные таблицы могут участвовать в свопинге памяти, как и обычные сегменты.

Что делать, если память не устанавливается и не работает?


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

Примечание: как правило, скорость работы памяти должна быть не ниже, чем это требуется по схеме. Если на плате уже были установлены микросхемы памяти, проверьте их совместимость с новыми микросхемами по следующим параметрам: скорость работы; присутствие/отсутствие контроля четности; совместимость банков; совместимость форм-фактора; совместимость ключей.

Если микросхемы не совместимы, обменяйте старые микросхемы на новые. Если это микросхемы SDRAM, проверьте правильность (совпадение) ключей и спецификаций. Если они не совпадают - выберите нужный тип микросхем. Для SIPP и SIMM -модулей; проверьте, парные ли у Вас микросхемы (т.е. два одинаковых банка памяти)? Если нет - докупите парный модуль с микросхемами или обменяйте несовпадающий модуль на парный. Для RIMM-модулей: проверьте, все ли отсеки для памяти заполнены? Если нет - докупите модули RIMM или continuity - модули.

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

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

| |

 

F.1. Для чего может быть понадобиться дополнительная память?


В таблице F.I. представлены минимальные, рекомендуемые и максимальные требования к памяти для различных операционных систем. Данные получены обобщением опыта многих системных администраторов г. Саратова. Максимальное значение ОЗУ - объем памяти, сверх которого повышение скорости работы компьютера не наблюдается.

Таблица F.I.
ОСМин.Рек.Макс.
MS-DOS 3.30256K640K640K
MS-DOS 6.22640K4Mb8Mb
MS-DOS + Win 3.112Mb8Mb16Mb
Win 958Mb16Mb64Mb
Win NT 3.514Mb8Mb24Mb
Win NT 4.016Mb24Mb64Mb
Win 9816Mb48Mb128Mb
Win 2000 Prof32Mb128Mb 256Mb
Win 2000 Serv128Mb256Mb-?
OS/28Mb16Mb64Mb
Linux16Mb64Mb128Mb

Примечание: Microsoft Windows 98 может работать и при том же объеме памяти, что и Microsoft Windows 95, однако тогда для свопинга памяти необходимо иметь втрое большее свободное дисковое пространство (начиная от 128 Мбайт.)

Исходя из этой таблицы необходимо выбирать объем оперативной памяти для операционной системы.

Так, если Вы устанавливаете новую операционную систему на старый компьютер, ориентируйтесь на левый столбец. Покупая новый компьютер, ориентируйтесь на средний столбец. Правый же столбец удержит Вас от "глупой" затеи: покупки новой памяти вместо ее оптимизации.

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

| |

 

F.2. На что следует обращать внимание при покупке памяти.


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

Таблица F.II.
Соответствие типа разъемов памяти типу машины или чипсета.
Машина/чипсетDIPSIPPSIMMDIMM
IBM PC, PC/XT+---
IBM PC AT/286++--
PC AT/386/486-+30 pin-
IBM PS/2, PS/1--30 pin-
Intel 440TX, 440EX,
440LX, 450NX
--72 pin EDOSDRAM
Intel 440ZX,
440BX, 440GX
---SDRAM
VIA Apollo MVP3/4--72 pin EDOSDRAM,
DDRDRAM
VIA Apollo Pro/Pro+--72 pin EDOSDRAM
ALI Alladin
4/4+/V/PROII
--72 pin EDOSDRAM
Intel 810---SDRAM (PC100)
Intel 820---SDRAM, RDRAM
Intel 840---SDRAM (PC100),
RDRAM

В данной таблице приведены соответствия наиболее распространенных типов микросхем памяти для широко распространенных чипсетов. По этой таблице Вы быстро определите нужный Вам тип микросхем.

Далее загляните в корпус компьютера. Здесь необходимо посмотреть следующее: Число гнезд для микросхем памяти указанного типа. Тип микросхем уже установленной памяти.

Так Вы узнаете, нужно ли Вам докупать память или менять ее целиком. Затем в описании для материнской платы узнайте, какое должно быть время доступа к памяти и должен ли присутствовать контроль четности. Контроль четности используется в модулях DIP, SIPP, и 30-pin SIMM для проверки правильности своих операций чтения/записи. Как правило, в документации к материнской плате указывается, поддерживает ли она контроль четности.

При выборе микросхем памяти смотрите, чтобы скорость ее работы была не ниже номинала. В противном случае у Вас может "сгореть" либо микросхема памяти, либо сама материнская плата. Также нежелательно ставить разные типы памяти (например, EDO DRAM и SDRAM) или память с разным временем доступа на одну машину.

Модернизируя память с разъемами DIP, SIPP и SIMM, учтите, что эта память устанавливается банками (наборами). В банке DIP-памяти 9 микросхем, в банках же SIPP и SIMM - по два модуля. При установке RIMM-модулей внимательно смотрите, чтобы все слоты микросхем памяти были заполнены либо RDRAM-модулями, либо continuity-модулями.

Если Вы используете какую-либо разновидность DIMM, обратите внимание на вырезки по бокам ("ключи"). Дело в том, что все разновидности DIMM имеют одинаковое (168) число контактов и форм-фактор, и различаются только ключами. В принципе в гнездо DIMM можно вставить и не поддерживаемую материнской платой микросхему SDRAM, но последствия могут быть плачевными. Поэтому автор еще раз повторяет: посмотрите соответствие ключей на микросхеме и плате при покупке памяти.

F.3. Обозначение микросхем памяти.


При маркировке микросхем SDRAM, удовлетворяющих спецификации PC100, применяют следующие обозначения:

PC100R-abc-def

где R - (может отсутствовать) указывает, что это регистровый модуль.

a - CAS Latency.

b - tRCD (в циклах) Указывает минимальное время между сигналами RAS и CAS.

c- tRP (в циклах). Указывает минимальное время между командами.

d - tAC (время доступа) в нс.

e - ревизия SPD, используемая в DIMM'е.

f - 0.

Для модуля памяти PC133 маркировка должна быть следующей:

PC133m-abc-dde-f

где m - тип модуля (U - небуферизированный).

a, b, c, e и f - смотри описание PC100.

dd - tAC без десятичной точки, в нс. (Например, 54 обозначает время доступа 5,4 нс.)

F. Общие рекомендации по выбору памяти.


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

НАСТРОЙКА ПАМЯТИ


Версия 1.00 - 0000 beta 0003
05.99 - 10.99

Автор: Инженер АСУ



Оглавление


Введение

1. Вводная часть.

2.1. Введение

3.1. Введение

3.2. Советы в выборе опций драйвера EMM386.EXE

4. Совмещенный драйвер расширенной и дополнительной памяти Quemm386.sys

5.1. Введение

5.8.1. Директива Buffers
5.8.2. Директива FCBS
5.8.3. Директива Files
5.8.4. Использование кэша диска MS-DOS

5.11. Этап 9а. Оптимизация памяти программой Optimize фирмы Quarterdeck

"Каждый мужчина имеет право на лево..."
Николай Фоменко

Предлагаемый текст является одной из


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