Оперативная память компьютера реализована на основе динамической памяти.

В настоящее время используют следующие типы динамической памяти: DDR (double data rate – двойная скорость передачи данных), DDR 2 SDRAM (частота 400Мгц) и более быстрой GDDR 3. Скорость ее работы 750 Мб/с.

Статическая память (SRAM) выполнена на транзисторах, что обеспечивает практически бессрочное время хранения при низких энергетических затратах, является самой быстрой. Скорость ее работы – 6Гбт/с

Вместе с тем статическая память имеет существенные недостатки:

· при одинаковом объеме данных, ее размеры в четыре раза больше динамической памяти;

· статическая память более дорогая и более технологически сложная, нежели динамическая.

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

В настоящее время используют следующие типы статической памяти: QDR, QDR-II.

Энергонезависимая память не требует питания для хранения данных. К ней относится память только для считывания (ROM), программируемая память (PROM).

ROM – память хранит:

· программу первоначального тестирования компьютера;

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

· базовую систему ввода-вывода.

PROM – память хранит различные параметры конфигурации компьютера, например, количество и тип дисковых накопителей, тип видеоадаптера, наличие сопроцессора и некоторые другие данные. хранятся в так называемой CMOS-памяти. Микросхема CMOS-памяти также содержит обыкновенные электронные часы. Благодаря ним в любой момент можно узнать текущую дату и время. Чтобы при отключении питания компьютера содержимое CMOS-памяти не стиралось, и часы продолжали отсчитывать время, микросхема CMOS-памяти питается от специальной маленькой батарейки или аккумулятора, которые также находятся на системной плате. В энергонезависимой памяти используются элементы, находящиеся в одном из состояний: в состоянии «1» если пропускают ток, в состоянии «0» - если нет. Состояния ячейки устанавливаются с помощью устройств, называемых программаторами. Так микросхемы PROMпамяти на пересечении строк и столбцов имеют плавящиеся соединения, то есть изначально все ячейки находятся в единичном состоянии. Далее с помощью программатора прожигаются соединения, требующие нулевого значения.

В современных компьютерах внутренняя память выпускается в виде микросхем. Микросхемы памяти изготавливают из кремния по полупроводниковой технологии с высокой степенью интеграции элементов на кристалле (микросхемы памяти относятся к так называемым “регулярным” схемам, что позволяет сделать установку элементов памяти в кристалле (чипе) настолько плотной, что размеры элементов памяти становятся сопоставимыми с размерами отдельных атомов). Микросхема памяти размещается в корпусе. Сегодня наибольшей популярностью пользуется 168 контактный модуль – DIММ, каждый иг которых может вмещать до 2Гбт. Микросхемы совместно с вспомогательными элементами крепятся к карте – модулю памяти. Модули вставляются в специальные слоты расширения на материнской плате. На современных платах их обычно четыре, точнее две пары. Кроме разного количества контактов, модули имеют различное количество и расположение ключей. Ключом называют вырез в модуле памяти, который вместе с выступом в слоте расширения предотвращает неправильную установку модуля.

В зависимости от размера или форм-фактора различают такие виды модулей. SIMM, DIMM, SODIMM, RIMM, выпускаются в 72 (84, 144, 232)-контактном исполнении.

Увеличение объема ОЗУ обычно связано с установкой дополнительных микросхем, объемом 1 , 2 Гбт.

Все современные процессоры поддерживают работу с памятью в двухканальном режиме (т.е. компьютер может работать с двумя модулями памяти одновременно). Чтобы эта технология работала необходимо выполнить следующие требования:

· пара планок должна состоять из модулей одной емкости с одинаковыми характеристиками (вторая пара может иметь другие характеристики);

· модули памяти необходимо установить в симметричные слоты, т.е. если первый модуль установлен в первый слот первой пары, то второй доже быть установлен в первый слот второй пары;

· частота работы памяти должна быть максимальной, которую поддерживает системная плата.

 

Внешняя память

Внешняя памятьпредназначена для длительного хранения информации и является энергонезависимой памяти. Объем информации, хранящейся во внешней памяти, в 1000 превышает объем внутренней памяти. Устройства, предназначенные для внешней памяти, делятся на такие группы: дисководы гибких дисков, жестких дисков, оптические дисководы (DVD), устройства внешней флэш-памяти.

Гибкие и жесткие диски относятся к магнитным дискам. Объем жесткого диска от 200 Гбт. Для хранения информации на магнитных дисках используют специальные ферромагнитные вещества – ферромагнетики. Ферромагнетики намагничиваются с помощью магнита или электромагнита и сохраняют свое состояние. Магнитный шар имеет доменную структуру. Ориентация доменов сопоставляется с состоянием 0 или 1. В отличие от внутренней памяти, информация на магнитный диск записываются не по битам, а кодируются (длинная последовательность нулей или единиц создает магнитное поле и вносит ошибки при считывании).

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

Флэш-память имеет объем до 32 Гбт и выполнена на транзисторах с двумя изолированными затворами: управляющим (control) и плавающим (floating). Важной особенностью транзистора является способность удерживать электроны, то есть заряд. Также в ячейке имеются так называемые «сток» и «исток». При программировании между ними, вследствие воздействия положительного поля на управляющем затворе, создается канал — поток электронов. Некоторые из электронов, благодаря наличию большей энергии, преодолевают слой изолятора и попадают на плавающий затвор. На нем они могут храниться в течение нескольких лет. Определенный диапазон количества электронов (заряда) на плавающем затворе соответствует логической единице, а все, что больше его, — нулю. При чтении эти состояния распознаются путем измерения порогового напряжения транзистора. Для стирания информации на управляющий затвор подается высокое отрицательное напряжение, и электроны с плавающего затвора переходят (туннелируют) на исток. В технологиях различных производителей этот принцип работы может отличаться по способу подачи тока и чтению данных из ячейки.

В структуре флэш-памяти для хранения 1 бита информации задействуется только один элемент (транзистор), в то время как в энергозависимых типах памяти для этого требуется несколько транзисторов и конденсатор. Это позволяет существенно уменьшить размеры выпускаемых микросхем, упростить технологический процесс, а, следовательно, и снизить себестоимость. Но и один бит далеко не предел: Intel уже выпускает память StrataFlash, каждая ячейка которой может хранить по 2 бита информации. Кроме того, существуют пробные образцы, с 4-х и даже 9-и битными ячейками! В такой памяти используются технология многоуровневых ячеек. Они имеют обычную структуру, а отличие заключается в том, что заряд их делится на несколько уровней, каждому из которых в соответствие ставится определенная комбинация бит. Теоретически прочитать/записать можно и более 4-х бит, однако, на практике возникают проблемы с устранением шумов и с постепенной утечкой электронов при продолжительном хранении. К достоинствам флэш-памяти следует отнести: высокую плотность упаковки, энергонезависимое хранение, электрическое стирание и запись, невысокую стоимость. Емкость памяти 1, 2, 4 Гбт.

 

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

Ранее память была очень маленькой и для ее адресации использовались 2 байта (так называемое "слово"). Такой подход позволял адресовать 64 Кб памяти, и адресация была линейной - для указания адреса использовалось одно-единственное число. Позже, с усовершенствованием техники, производители поняли, что имеется возможность поддерживать большие объемы памяти, но для этого нужно сделать размер адреса больше. Для совместимости с уже написанным программным обеспечением было решено сделать так: адресация теперь двухкомпонентная (сегмент и смещение), каждая из которых 16-битная, а старые программы как использовали одну 16-битную компоненту и ничего не знают о сегментах, так и продолжают работать. Физический адрес в такой модели вычисляется так: 16 * <сегментный адрес> + <смещение>, таким образом, модель позволяла адресовать от 0 до 16 * 65 535 + 65 535 = 1 114 095, т. е. 1 114 096 байт, что чуть больше 1 Мб. Одно важное свойство сегментной адресации: один и тот же физический адрес можно представить различными комбинациями сегмент + смещение. При этом смещения могут указываться в процессорных командах как непосредственно, так и с помощью регистров, а сегменты непосредственно указываться не могут: для указания сегмента используются специальные 16-битные сегментные регистры. Поначалу их было 4: CS, DS, SS, ES (сегмент команд, сегмент данных, сегмент стека, дополнительный сегмент).

С появлением 32-битных процессоров необходимость в такой модели отпала и современные 32-битные программы, как правило, с сегментами и сегментными регистрами не работают вообще. Но благодаря принципу совместимости, которого придерживается Intel как "законодатель" архитектур, сегментную модель было решено модифицировать и оставить.

Сегментная часть адреса осталась 16-битной, а вот смещение стало 32-битным, а также все регистры, кроме сегментных, стали 32-битными. Изменился и принцип вычисления физического адреса: сегмент ни на что не умножается, просто есть специальная таблица, адрес и размер которой "знает" процессор, эта таблица содержит для каждого сегмента стартовый адрес. Так вот, само понятие "сегмент" теперь означает некоторую область данных, начинающуюся с произвольного 32-битного адреса и заканчивающуюся так же произвольным 32-битным адресом, а вышеупомянутая таблица хранит данные об этих сегментах - собственно стартовые адреса и размеры. Номер сегмента в этой таблице (нумерация начинается с нуля) называется селектором. Программист, указывая сегмент и смещение, на самом деле указывает селектор и смещение, а процессор, обращаясь. Следует оговориться: 32-битные процессоры имеют два режима работы - реальный и защищенный, и старая модель сегментации работает в реальном режиме процессора, а новая - в защищенном. Большинство современного ПО вообще не трогает сегментные регистры - операционная система дает им один-единственный сегмент, которые начинаются с нулевого адреса и заканчиваются 2^32 - 1 (таким образом охватывая всю возможную оперативную память) - и загружает этими данными регистры CS, DS, SS ES.

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

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

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

Таким образом, при обращении к памяти используют три способа адресации:

· .линейную

· сегментную

· страничную

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

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

При страничной организации памяти физический адрес определяется по специальным таблицам.

 

Способы адресации можно классифицировать по следующим характеристикам

· наличию адресной информации в команде

· кратности обращения в оперативную память

· формированию адресов ячеек памяти

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

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

· непосредственная адресация

· прямая адресация

· косвенная адресация

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

При прямой адресации в адресном поле команды указан адрес операнда. Способ мало эффективен при адресации к памяти большой емкости. Используется в сочетании с другими методами. Наиболее эффективен при адресации регистровой памяти.

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

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

Доступ к памяти

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

Память магазинного типа образуется из последовательно соединенных регистров (рис. 8.1)

Если запись в регистровую структуру (рис.8.1,д) производится через один регистр, а считывание - через другой, то такая память является аналогом нии задержки и работает по принципу “первым вошел - первым вышел” (FIFO - first input, first output).

Если же запись и чтение осуществляются через один и тот же регистр (рис.5.2,6), такое устройство называется стековой памятью, работающей по принципу “первым вошел — последним вышел” (FILO - first input, last output). При записи числа в стековую память сначала содержимое стека сдвигается в сторону последнего, К-го регистра (если стек был полностью заполнен, то число из К-го регистра теряется), а затем число заносится в вершину стека -регистр 1. Чтение осуществляется тоже через вершину стека, после того как число из вершины прочитано, стек сдвигается в сторону регистра 1.

Рис. 11.1. Регистровая структура магазинного типа: а - типа FIFO; б - типа FILO

 

Стековая память получила широкое распространение. Для ее реализации в ЭВМ разработаны специальные микросхемы. Но часто работа стековой памяти эмулируется в основной памяти ЭВМ: с помощью программ операционной системы выделяется часть памяти под стек (в IBM PC для этой цели выделяется 64 Кбайта). Специальный регистр микропроцессора (указатель стека) постоянно хранит адрес ячейки ОП, выполняющей функции вершины стека. Чтение числа всегда производится из вершины стека, после чего указатель стека изменяется и указывает на очередную ячейку стековой памяти (т.е. фактически стек остается неподвижным, а перемещается вершина стека). При записи числа в стек сначала номер ячейки в указателе стека модифицируется так, чтобы он указывал на очередную свободную ячейку, после чего производится запись числа по этому адресу. Такая работа указателя стека позволяет реализовать принцип “первым вошел - последним вышел”. В стек может быть загружен в определенной последовательности ряд данных, которые впоследствии считываются из стека уже в обратном порядке, на этом свойстве построена система арифметических преобразований информации, известная под названием “логика Лукашевича”.

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

Виртуа́льная па́мять (англ. Virtual memory) — технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно работающими программами, организовав множество независимых адресных пространств, и обеспечить защиту памяти между разными приложениями. Также позволяет программисту использовать больше памяти, чем установлено в компьютере, за счет откачки неиспользуемых страниц на вторичное хранилище (см. Свопинг).

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

Применение механизма виртуальной памяти позволяет:

упростить адресацию памяти клиентским программным обеспечением;

рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);

изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).

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

 

Страничная память

В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфера ассоциативной трансляции. Если ему не удалось это сделать, то требуется обращение к таблице страниц (так называемый Page Walk), что может сделать либо сам процессор, либо операционная система (в зависимости от архитектуры)[1]. Если страница выгружена из оперативной памяти, то операционная система подкачивает страницу с жёсткого диска (см. свопинг). При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти (исключения существуют, однако они не касаются тех частей, которые отвечают за обработку аппаратных прерываний, работу с таблицей страниц и использование файла подкачки).

Сегментная организация виртуальной памяти

Механизм организации виртуальной памяти, при котором виртуальное пространство делится на части произвольного размера — сегменты. Этот механизм позволяет, к примеру, разбить данные процесса на логические блоки.[2] Для каждого сегмента, как и для страницы, могут быть назначены права доступа к нему пользователя и его процессов. При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре. Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.

 

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

 

 








Дата добавления: 2016-10-17; просмотров: 1811;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.021 сек.