Устройство и принцип работы оперативной памяти. Логическая структура основной памяти. Каждая ячейка памяти имеет свой уникальный, т

  • 23.04.2019

микросхемы ОП

Память (memory) – функциональная часть ЭВМ, предназначенная для записи, хранения и выдачи информации.

Скачать презентацию «Характеристики памяти ПК»

Всю память ЭВМ можно разделить на:

  1. ОЗУ (оперативное запоминающее устройство)
  2. ПЗУ (постоянное запоминающее устройство)
  3. РОН (регистры общего назначения) внутренняя память процессора – его регистры.
  4. CMOS (Complement Metal Oxide Semiconductor – комплементарные пары метал-оксид-полупроводник указывает на технологию изготовления данной памяти) – память системных установок(конфигурации).
  5. ВЗУ (внешнее запоминающее устройство)
  6. Видеопамять – электронная память, размещенная на видеокарте, используется в качестве буфера для хранения кадров динамического изображения.

1,2,3,6 – электронная память, 5 – электромеханическая память.

Характеристики оперативной памяти

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

Дискретность – память состоит из битов (бит — элемент памяти, частица информации, хранит двоичный код 0 или 1. Слово бит произошло от англ. «binary digit» — двоичная цифра).

Бит – наименьшая частица памяти компьютера.

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

Память – это упорядоченная последовательность двоичных разрядов(бит). Эта последовательность делится на группы по 8 разрядов. Каждая такая группа образует байт памяти.

Следовательно «бит» и «байт» обозначают не только названия единиц измерения количества информации, но и структурные единицы памяти ЭВМ.
1Кб = 210 байт =1024б
1Мб = 210 Кбайт =1024Кб
1Гб = 1024Мб

Ячейка памяти – группа последовательных байтов внутренней памяти, вмещающая в себе информацию, доступную для обработки отдельной командой процессора.
Содержимое ячейки памяти называется машинным словом. Байты внутренней памяти пронумерованы. Нумерация начинается с 0.
Порядковый № байта называется адресом байта. Принцип адресуемости памяти заключается в том, что любая информация заносится в память и извлекается из нее по адресам, т.е. чтобы взять информацию из ячейки памяти или поместить ее туда, необходимо указать адрес этой ячейки. Адрес ячейки память равен адресу младшего байта, входящим в ячейку.
Адресация памяти начинается с 0. Адреса ячеек кратны количеству байтов в машинном слове.

Структура оперативной памяти


Оперативная память(ОП) (ОЗУ)

Из ОП ЦП берет исходные данные для обработки, в нее записываются полученные результаты. Название «оперативная» память получила потому что работает быстро.
Является энергозависимой, данные и программы сохраняются в ней только до тех пор, пока ПК включен, при выключении ПК содержимое ОП стирается.
ОЗУ предназначена для хранения текущей, быстроменяющейся информации и допускает изменение своего содержимого в ходе выполнения процессором вычислений.
Используется два основных типа оперативной памяти: статическая память (SRAM-Static RAM — КЭШ) и динамическая память (DRAM-Dynamic RAM — ОЗУ).
Эти две разновидности памяти различаются быстродействием и удельной плотностью (емкостью) хранимой информации.

Быстродействие памяти характеризуется двумя параметрами: временем доступа(access time) и длительностью цикла памяти (cycle time).
Эти величины, как правило, измеряются в наносекундах. Чем больше эти величины, тем больше быстродействие памяти.
Время доступа представляет собой промежуток времени между формированием запроса на чтение информации из памяти и моментом поступления из памяти запрошенного машинного слова (операнда).
Длительность цикла определяется минимальным допустимым временим между двумя последовательными обращениями к памяти.

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

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

ОП часто обозначают RAM (Random Access memory) – память с произвольным доступом (тип доступа к памяти при котором ячейки памяти пронумерованы, т.е. адресуемы и, следовательно, обращение к ним может производиться в произвольном порядке).

Термин «произвольный доступ» означает, что можно считать (записать) информацию в любой момент времени из любой ячейки.

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

От объема ОП, установленным на ПК напрямую зависит с каким ПО Вы сможете на нем работать. При недостатке ОП программы не запускаются, выдается сообщение: “Out of memory”, либо работают крайне медленно.

Чем больше ОП в ПК, тем лучше. При необходимости объем ОП можно нарастить (ограничивается параметрами ОП, поддерживаемой конкретной материнской платы, внимательно см.спецификацию к системной плате).


Распределение памяти в ПК (Разделы ОЗУ)

RAM устроена довольно сложно, она иерархична (многоэтажна). ОП разделяют на несколько типов. Деление это обусловлено историческими причинами.
Первые компьютеры были выполнены так, что они могли работать максимально с 640Кб памяти. Выделяют 4 вида памяти:

  • Стандартная (conventional memory area)
  • Верхняя (upper memory blocks(area))
  • Дополнительная (expanded memory specification)
  • Расширенная (extended memory specification)

Стандартная (conventional memory area) – базовая, первые 640 Кб, также его часто называют lower.
В мл. адреса этой памяти загружается ОС и драйверы устройств. Оставшуюся свободную часть памяти занимают пользовательские программы.
Резидентные программы так же остаются в этой памяти.

Верхняя (upper memory аrea) – 640Кб — 1Мб используется для хранения служебной информации: памяти видеоадаптера,BIOS.
Спец. драйвер Himem.sys позволяют загружать в свободные участки этой области резидентные программы и драйвера устройств.

High memory – первые 64 Кб после 1Мб. ОС MS DOS позволяет загрузить часть резидентной DOS в эту область, освобождая при этом существенную часть
базовой памяти для работы прикладных программ. Особенно это полезно для программ, использующих всю ОП. Используя спец. утилиты (для DOS emm386.exe)
в верхние разделы памяти можно загружать также и резидентные программы (команды LH для autoexec.bat и DEVICEHIGT для config.sys).

Вся память свыше 1 Мб может быть рассмотрена как дополнительная(expanded) или как расширенная (extended ). В ОС менеджер памяти позволяет использовать память и как расширенную и как дополнительную, автоматически обеспечивая тот тип взаимодействия с данными, который нужен прикладным программам. Т.е. пользователю новых современных ПК (от Pentium) нет необходимости распределять память «в ручную», менеджер выделить память таким образом, как это требует прикладная программа.

Дополнительная(expanded) память – постраничная, т.е. ОП разбивается на страницы, каждой странице ставится в соответствие определенный адрес в основной памяти. При обращении к такому адресу EMM(expanded memory manager) драйвер расширенной памяти(менеджер памяти) позволяет компьютеру считать информацию с соответствующей страницы памяти.

Расширенная (extended) память построчной организации (Smartdrv — драйвер расширенной памяти) используется для создания временного логического диска (виртуального диска), как буфер обмена с жестким диском.


Распределение ОП в ПК с ОС MS-DOS

1Mб+ 64Кб High High Расширенная или дополнительная память
Резидентные программы и драйверы устройств
Часть ОС
1Mб Upper Верхняя память ПЗУ BIOS
Видеопамять (текстовый буфер)
Видеопамять (графический буфер)
640Кб Convertional Memory Area (base)Стандартная (базовая память) Свободная часть (command.com) транзитная часть
Свободная часть для программ пользователя
Command.com (резидентная часть)
Программы DOS, драйверы
Файлы io.sys msdos.sys
Данные для DOS и BIOS и другая служебная информация

Микросхемы ОП (модули ОП)

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

Внешний вид микросхем ОП: пластиковая полоска, на ней расположены кремневые «черепашки» – чипы-микросхемы (то есть используется полупроводниковая технология) и имеются «ножевые» контактные разъемы.

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

  1. временем доступа (быстродействием). Время доступа – промежуток времени, за который может быть записано (прочитано) содержимое ячейки памяти.
  2. емкостью (определяет количество ячеек (битов) в устройстве памяти).
  3. стоимостью.
  4. потребляемой мощностью (электропотреблением).

Существует 2 модуля памяти, отличающиеся формой, внутренней архитектурой, скоростью работы: SIMM и DIMM.
I. SIMM (SINGLE IN-LINE MEMORY MODULES) (SRAM)
бывают двух типов (отличающихся количеством контактов).

1. 30-контактные модули SIMM. Бывают 1 и 4 Мб. Практически сегодня исчезли из продажи для компьютеров 386, 286-процессором. Сегодня им нашлось интересное применение – в качестве ОП, устанавливаемой в некоторые звуковые платы, например, Greafive Sound Blaster 32 (AWE-32) Gravis UltraSound PnP. Однако новая карта AWE-64 уже содержит свои модули ОП, эта память не нужна.

2. 72-контактные SIMM (на 1, 4, 8, 16, 32, 64 Мб, редко 128 Мб). Внешний вид неизменный, а вот тип устанавливаемой на них памяти меняется (тип памяти указывается на микросхеме).

a) самый старый (редко сейчас встречающийся) – FPM DRAM (или просто DRAM – Dynamic Random Access Memory – динамическая ОП). Работала на 486 и первых Pentium.

b) модифицированный тип EDO DRAM (или EDO – Extended data output).

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

Пример необходимо 32 Мб => 2 модуля SIMM по 16 Мб.
необходимо 64 Мб => 4 модуля SIMM по 16 Мб или 2 модуля SIMM по 32Мб.

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


II. DIMM (SDRAM DUAL IN-LINE MEMORY MODULES).

Появился впервые у MMX- компьютеров, стал основой для PII., поэтому у PII редко бывают SIMM-разъемы. DIMM не обязательно должно быть четное число. Модули DIMM бывают емкостью 16, 32, 64, 128, 256, 512 Мб

  1. EDO SD RAM (Synchronous DRAM) – синхронизируемая динамическая ОП)
    SD RAM (SINGLE DATA RATE RANDOM ACCESS MEMORY).ЗУПВ с одинарной скоростью передачи данных, которая в зависимости от тактовой частоты называется памятью PC100 и PC133. Микросхема на 168 контактов, является сегодня самой «медленной» из семейства DIMM-модулей памяти, Время доступа = 10-20 наносекунд. Верхний предел ее тактовой частоты 133 МГц. И все же этот тип ОП вполне подходит для большинства офисных и
    домашних ПК. Пропускная способность 1Гб/с.
    SPD – это небольшая микросхема, установленная в модуле памяти SD RAM DIMM и содержащая подробную информацию о типе установленной памяти и некоторые другие устройства. РС133 SDRAM(Synchronous Dynamic Random Access Memory) самая быстрая из класса классической ОП. (были и РС66, РС100). Теперь это самый медленный тип ОЗУ. Физически представляет собой массив микроскопических конденсаторов, «упакованных» в микросхемы памяти. Логически каждый конденсатор есть не что иное, как элементарная однобитовая информационная ячейка с 2-мя состояниями: 0 – если конденсатор не заряжен, 1 – если заряжен. Эти ячейки объединяются в двумерную матрицу, где каждая ячейка адресуется номерами строки и столбца, на пересечении которых она находится. К микросхеме подводятся шины командная (передает команды, управляющие работой микросхем ОП), адресная (адреса строк и столбцов), и данных. Все три синхронизируются импульсами одной и той же частоты. (133). SDRAM – синхронная память и логика работы микросхем памяти этого типа жестко синхронизируется с тактовым сигналом. Например, контроллер памяти точно знает, в течение скольких тактов микросхемы памяти будут готовить запрошенные данные для передачи и на каком такте начнется собственно их передача. Сегодня данная микросхема встречается редко.
  2. Rambus (RD RAM) Двухканальная ОП (микросхема фирмы Intel). Direct Rambus – это новая шина памяти, в которой управление адресацией отделено от работы с данными. Система состоит из контроллера Direct Rambus, подсоединенного к одному или нескольким модулям Direct Rambus DRAM, которые называются RIMM, в отличии от обычных микросхем памяти, соединяемых параллельно, RIMM соединяются последовательно. Канал Direct Rambus включает двунаправленную шину данных и шину адреса, т.е. адреса памяти передаются одновременно с данными. Каждая микросхема RDRAM может содержать до 32 независимых банков, SD RAM – от 2 до 8. Свободно работает на высоких тактовых частотах.
    Микросхема на 184 контакта Микросхемы ОП с тактовой частотой от 600 до 800 МГц. Когда используется микросхема PC800 (частота синхронизации 400 МГц), пропускная способность шины «память-процессор» достигает 3,2 Гб/с. При использовании PC600 (300 МГц) этот параметр = 2,6 Гб/с.
    В свободные гнезда памяти Rambus необходимо устанавливать заглушки Continuity Rimm (CRIMM). Без них система не станет работать, поскольку модули в обоих каналах Rambus включаются каскадно, то есть тактовые и управляющие сигналы проходят через разъемы Rimm последовательно. Емкость ОЗУ может быть до 3 Гб.
    Обеспечивают значительное быстродействие при выполнении сложных приложений на ПК и рабочих станциях. Вопрос о быстродействии ОП сегодня очень спорный.
  3. DDR SDRAM (Double Data Rate) двойная скорость передачи данных – это по сути модификации обычной SDRAM и отличается от нее тем, что в ней запись и чтение данных происходят и по переднему и по заднему фронту тактового импульса. Поэтому за один такт по шине передается вдвое больше данных, и ее эффективная частота оказывается вдвое больше физической.
    2х канальная память DDR266 DDR333 и DDR400 и системы с ней не уступают памяти RDRAM. ОП с удвоенной скоростью передачи данных, а иначе называется PC200 и PC266 в зависимости от тактовой частоты системной шины. Не столь дорогая, чем (3) и явно способствует повышению быстродействия ПК в отличие от (2). В основном благодаря использованию этой памяти ПК на базе Athlon 1,2 Ггц обошел на многих тестах 1,5 Ггц Р-IV с памятью RD RAM.
    Сегодня, пока, покупатель не может просто выбрать желательный для него тип ОП, так как она связана с интегральной схемой на системной плате, а та с ЦП. Так, пока, Р-IV работает с набором ИС- 850 компании Intel и дорогостоящей памятью RD RAM. (В середине 2001 года планируется появление микросхем, совместимых с устройствами SD RAM и DDR). Если вы хотите приобрести Р-IV, то автоматически будете вынуждены приобрести и дорогую ОП. Наборы интегральных схем семейства Athlon используют ОП SD RAM и DDR, но не могут RD RAM.

Модуль памяти Kingston DDR PC3200

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

Часто ее называют ROM (Read Only Memory) – память только для чтения. В постоянной памяти хранятся программы для проверки оборудования компьютера, инициирования загрузки ОС и выполнение базовых
функций по обслуживанию устройств ПК. Часто содержимое постоянной памяти называют BIOS(Basic Input Output System) – базовая система ввода/вывода.
BIOS – это система контроля и управления устройствами, подключёнными к ПК (жёсткий диск, ОП, часы, календарь). Это часть программного обеспечения ПК, поддерживающая управление адаптерами
внешних устройств, экранные операции, тестирование, начальную загрузку и установку OS. BIOS находится на материнской плате (отдельная микросхема с автономным питанием от батарейки в ПК).

На сегодняшних ПК BIOS можно перезаписывать.BIOS сегодня может сам определять новые устройства, подключённые к ПК (стандарт PnP — Plug-And-Play) включи и работай.
Управление устройствами осуществляется через механизм прерываний.


Прерывания могут быть:

  • аппаратные (инициируются аппаратными средствами),
  • логические (инициируются микропроцессором – нестандартные ситуации в работе микропроцессора),
  • программные (инициируются каким-либо программным обеспечением).

При включении ПК автоматически загружается и выполняется спец.программа POST(Power-On Self-Test) из состава BIOS.

Эта программа производит самопроверку и тестирование при загрузке:

  • проверка переключателей и CMOS-памяти на системной (материнской) плате (определение оборудования, которое подключено к ПК),
  • тестирование ОЗУ,
  • выполнение действий по загрузке OС (загрузка в ОЗУ и запуск Блока Начальной Загрузки OС),
  • выполняет другие специфические действия по подготовке ПК и дополнительно-го оборудования к работе.


BIOS

Является своеобразной программной оболочкой вокруг аппаратных средств ПК (самого нижнего уровня), реализуя доступ к аппаратным средствам ПК через механизм прерываний.
CMOS-память – ПЗУ (с возможностью модификации), где содержится некоторая настроченная информация по конфигурации ДАННОГО ПК и некоторого дополнительного оборудования. Обладает низким электропотреблением. Питается от аккуммуляторной батарейки.
«Вход» в редактирование CMOS-памяти, как правило, по нажатию клавиши DELETE (DEL) (на клавиатуре) сразу после включения ПК в процессе работы POST-программы (загрузка программы Setup).

  • системные часы,
  • информация по результатам диагностики POST-программы,
  • информация по наличию и типу FDD,
  • информация по наличию и типу HDD,
  • размер ОЗУ,
  • наличие дополнительного оборудования.

За последнюю неделю дважды объяснял людям как организована работа с памятью в х86, с целью чтобы не объяснять в третий раз написал эту статью.

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

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

Так ладно, хватит о печальном, переходим к делу.
Рассмотрим адресное пространство программного режима 32 битного процессора (для 64 бит все по аналогии)
Адресное пространство этого режима будет состоять из 2^32 ячеек памяти пронумерованных от 0 и до 2^32-1.
Программист работает с этой памятью, если ему нужно определить переменную, он просто говорит ячейка памяти с адресом таким-то будет содержать такой-то тип данных, при этом сам програмист может и не знать какой номер у этой ячейки он просто напишет что-то вроде:
int data = 10;
компьютер поймет это так: нужно взять какую-то ячейку с номером стопицот и поместить в нее цело число 10. При том про адрес ячейки 18894 вы и не узнаете, он от вас будет скрыт.

Все бы хорошо, но возникает вопрос, а как компьютер ищет эту ячейку памяти, ведь память у нас может быть разная:
3 уровень кэша
2 уровень кэша
1 уровень кэша
основная память
жесткий диск

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

Архитектура х86 поддерживает стек.

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

Push operand
помещает операнд в стек

Pop operand
изымает из вершины стека значение и помещает его в свой операнд

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

Теперь кратко рассмотрим что такое регистры.
Это ячейки памяти в самом процессоре. Это самый быстрый и самый дорогой тип памяти, когда процессор совершает какие-то операции со значением или с памятью, он берет эти значения непосредственно из регистров.
В процессоре есть несколько наборов логик, каждая из которых имеет свои машинные коды и свои наборы регистров.
Basic program registers (Основные программные регистры) Эти регистры используются всеми программами с их помощью выполняется обработка целочисленных данных.
Floating Point Unit registers (FPU) Эти регистры работают с данными представленными в формате с плавающей точкой.
Еще есть MMX и XMM registers эти регистры используются тогда, когда вам надо выполнить одну инструкцию над большим количеством операндов.

Рассмотрим подробнее основные программные регистры. К ним относятся восемь 32 битных регистров общего назначения: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP
Для того чтобы поместить в регистр данные, или для того чтобы изъять из регистра в ячейку памяти данные используется команда mov:

Mov eax, 10
загружает число 10 в регистр eax.

Mov data, ebx
копирует число, содержащееся в регистре ebx в ячейку памяти data.

Регистр ESP содержит адрес вершины стека.
Кроме регистров общего назначения, к основным программным регистрам относят шесть 16битных сегментных регистров: CS, DS, SS, ES, FS, GS, EFLAGS, EIP
EFLAGS показывает биты, так называемые флаги, которые отражают состояние процессора или характеризуют ход выполнения предыдущих команд.
В регистре EIP содержится адрес следующей команды, которая будет выполнятся процессором.
Я не буду расписывать регистры FPU, так как они нам не понадобятся. Итак наше небольшое отступление про регистры и стек закончилось переходим обратно к организации памяти.

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

Логический адрес --> Линейный (виртуальный)--> Физический
Все линейное адресное пространство разбито на сегменты. Адресное пространство каждого процесса имеет по крайней мере три сегмента:
Сегмент кода. (содержит команды из нашей программы, которые будут исполнятся.)
Сегмент данных. (Содержит данные, то бишь переменные)
Сегмент стека, про который я писал выше.


Линейный адрес вычисляется по формуле:
линейный адрес=Базовый адрес сегмента(на картинке это начало сегмента) + смещение
Сегмент кода
Базовый адрес сегмента кода берется из регистра CS. Значение смещения для сегмента кода берется из регистра EIP, в котором хранится адрес инструкции, после исполнения которой, значение EIP увеличивается на размер этой команды. Если команда занимает 4 байта, то значение EIP увеличивается на 4 байта и будет указывать уже на следующую инструкцию. Все это делается автоматически без участия программиста.
Сегментов кода может быть несколько в нашей памяти. В нашем случае он один.
Сегмент данных
Данные загружаются в регистры DS, ES, FS, GS
Это значит что сегментов данных может быть до 4х. На нашей картинке он один.
Смещение внутри сегмента данных задается как операнд команды. По дефолту используется сегмент на который указывает регистр DS. Для того чтобы войти в другой сегмент надо это непосредственно указать в команде префикса замены сегмента.
Сегмент стека
Используемый сегмент стека задается значением регистра SS.
Смещение внутри этого сегмента представлено регистром ESP, который указывает на вершину стека, как вы помните.
Сегменты в памяти могут друг друга перекрывать, мало того базовый адрес всех сегментов может совпадать например в нуле. Такой вырожденный случай называется линейным представлением памяти. В современных системах, память как правило так организована.

Теперь рассмотрим определение базовых адресов сегмента, я писал что они содержаться в регистрах SS, DS, CS, но это не совсем так, в них содержится некий 16 битный селектор, который указывает на некий дескриптор сегментов, в котором уже хранится необходимый адрес.


Так выглядит селектор, в тринадцати его битах содержится индекс дескриптора в таблице дескрипторов. Не хитро посчитать будет что 2^13 = 8192 это максимальное количество дескрипторов в таблице.
Вообще дескрипторных таблиц бывает два вида GDT и LDT Первая называется глобальная таблица дескрипторов, она в системе всегда только одна, ее начальный адрес, точнее адрес ее нулевого дескриптора хранится в 48 битном системном регистре GDTR. И с момента старта системы не меняется и в свопе не принимает участия.
А вот значения дескрипторов могут меняться. Если в селекторе бит TI равен нулю, тогда процессор просто идет в GDT ищет по индексу нужный дескриптор с помощью которого осуществляет доступ к этому сегменту.
Пока все просто было, но если TI равен 1 тогда это означает что использоваться будет LDT. Таблиц этих много, но использоваться в данный момент будет та селектор которой загружен в системный регистр LDTR, который в отличии от GDTR может меняться.
Индекс селектора указывает на дескриптор, который указывает уже не на базовый адрес сегмента, а на память в котором хранится локальная таблица дескрипторов, точнее ее нулевой элемент. Ну а дальше все так же как и с GDT. Таким образом во время работы локальные таблицы могут создаваться и уничтожаться по мере необходимости. LDT не могут содержать дескрипторы на другие LDT.
Итак мы знаем как процессор добирается до дескриптора, а что содержится в этом дескрипторе посмотрим на картинке:

Дескрипторы состоит из 8 байт.
Биты с 15-39 и 56-63 содержат линейный базовый адрес описываемым данным дескриптором сегмента. Напомню нашу формулу для нахождения линейного адреса:

линейный адрес = базовый адрес + смещение
С помощью такой нехитрой операции процессор может обращаться по нужному адресу линейной памяти.
Рассмотрим другие биты дескриптора, очень важным является Segment Limit или предел, он имеет 20битное значение от 0-15 и 48-51 бит. Предел задает размер сегмента. Для сегментов данных и кода доступными являются все адреса, расположенные в интервале:
[база; база+предел)
В зависимости от 55 G-бита(гранулярити), предел может измеряться в байтах при нулевом значении бита и тогда максимальный предел составит 1 мб, или в значении 1, предел измеряется страницами, каждая из которых равна 4кб. и максимальный размер такого сегмента будет 4Гб.
Для сегмента стека предел будет в интервале:
(база+предел; вершина]
Кстати интересно почему база и предел так рвано располагаются в дескрипторе. Дело в том что процессоры х86 развивались эволюционно и во времена 286х дескрипторы были по 8 бит всего, при этом старшие 2 байта были зарезервированы, ну а в последующих моделях процессоров с увеличением разрядности дескрипторы тоже выросли, но для сохранения обратной совместимости пришлось оставить структуру как есть.
Значение адреса «вершина» зависит от 54го D бита, если он равен 0, тогда вершина равна 0xFFF(64кб-1), если D бит равен 1, тогда вершина равна 0xFFFFFFFF (4Гб-1)
С 41-43 бит кодируется тип сегмента.
000 - сегмент данных, только считывание
001 - сегмент данных, считывание и запись
010 - сегмент стека, только считывание
011 - сегмент стека, считывание и запись
100 - сегмент кода, только выполнение
101- сегмент кода, считывание и выполнение
110 - подчиненный сегмент кода, только выполнение
111 - подчиненный сегмент кода, только выполнение и считывание

44 S бит если равен 1 тогда дескриптор описывает реальный сегмент оперативной памяти, иначе значение S бита равно 0.

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

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

входные, выходные промежуточные данные, обрабатываемые процессором.

Структура оперативной памяти

Оперативная память состоит из ячеек, в каждой из которых может находиться единица информации – машинное слово. Каждая ячейка имеет две характеристики: адрес и содержимое. Через регистр адреса микропроцессора можно обратиться к любой ячейке памяти.

Сегментная модель памяти

Когда-то давно, на заре рождения компьютерной техники, оперативная память была очень маленькой и для ее адресации использовались 2 байта (так называемое «слово»). Такой подход позволял адресовать 64 Кб памяти, и адресация была линейной - для указания адреса использовалось одно-единственное число. Позже, с усовершенствованием техники, производители поняли, что имеется возможность поддерживать большие объемы памяти, но для этого нужно сделать размер адреса больше. Для совместимости с уже написанным программным обеспечением было решено сделать так: адресация теперь двухкомпонентная (сегмент и смещение) , каждая из которых 16-битная, а старые программы как использовали одну 16-битную компоненту и ничего не знают о сегментах, так и продолжают работать


Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО
Логическое строение оперативной памяти

Адресное пространство – это набор адресов, который может формировать процессор. Зачем? Хороший вопрос. Дело в том, что каждая ячейка памяти имеет адрес. И что бы считать (или записать) хранимую в ней информацию, надобно к ней обратится по ее адресу. Адреса делятся на виртуальные (логические) и физические. Физические адреса – это реальные адреса реальных ячеек памяти. Программам глубоко параллельно до таких адресов, так как они оперируют символьными именами, которые затем транслятором преобразовываются в виртуальные адреса. Потом виртуальные адреса преобразовываются в физические.



Логические адреса представляются в шестнадцатеричной форме и состоят из двух частей. Логически оперативная память разделена на сегменты. Так вот первая часть логического адреса – начало сегмента, а вторая – смещение от этого начала (сегмент, смещение)

Логическое строение делится на 5 зон:

1. Conventional memory – основная память;

Начинается с адреса 00000 (0000:0000) и до 90000 (9000:0000). Это занимает 640 Кбайт. В эту область грузится в первую очередь таблица векторов прерываний, начиная с 00000 и занимает 1 Кбайт, далее следуют данные из BIOS (счетчик таймера, буфер клавиатуры и т. д.), а затем уж всякие 16 разрядные программы DOS (для них 640 Кбайт – барьер, за который могут выскочить только 32 разрядные программы). На данные BIOS’а отводится 768 байт.
2. UMA (Upper Memory Area) – верхняя память;

Начинается с адреса А0000 и до FFFFF. Занимает она 384 Кбайт. Сюда грузится информация, связанная с аппаратной частью компьютера. UMA можно разделить на 3 части по 128 Кбайт. Первая часть (от А0000 до BFFFF) предназначена для видеопамяти. В следующую часть (от C0000 до DFFFF) грузятся программы BIOS адаптеров. Последняя часть (от E0000 до FFFFF) зарезервирована для системной BIOS. Дело в том, что последние 128 Кбайт не полностью используются. В большинстве случаев под BIOS задействованы только последние 64 Кбайт. Свободная же часть UMB управляется драйвером EMM386.EXE и используется для нужд операционной системы.
3. HMA (High Memory Area) – область верхней памяти;

Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО
История появления области HMA тянется аж к 80286 процессору, а точнее к ошибке в его схеме. Я уже говорил, что процессоры 8086 и 8087 имели 20 разрядную адресную шину, работали в реальном режиме и могли максимально обратится по адресу FFFFF (FFFF:000F). А вот 80286 процессор имел уже 24 разрядную шину адреса, работал в реальном и защищенном режимах и мог адресовать до 16 Мбайт памяти.
4. XMS (eXtended Memory Specification) – дополнительная память;

Что бы работать в XMS используя DOS, для процессоров был разработан еще один режим – виртуальный. DOS не может переплюнуть барьер в 640 Кбайт, виртуальный режим позволяет разбить дополнительную память на части по

1 Мбайту. В каждую часть грузится по программе DOS и там они варятся в реальном режиме но уже не мешая друг другу выполнятся одновременно. 32 разрядным приложениям на барьер в 640 Кбайт все равно. XMS отвечает за перевод режимов процессора драйвер EMM386.EXE, а за организацию самой области – HIMEM.SYS. Посмотреть, что творится у Вас в XMS можно с помощью SysInfo из набора Norton Utilities.
5. EMS (Expanded Memory Specification) – расширенная память;

Находится эта область в верхней памяти и занимает порядка 64 Кбайт. Использовалась она лишь в старых компах с оперативной памятью до

1 Мбайта. В силу своей спецификации это достаточно медленная область. Дело в том, что расширенная память – это один из многих коммутируемых сегментов. После того, как сегмент заполнится, происходит смена использованного сегмента новым. Но работать можно только с одним сегментом, а это, Вы сами должны понимать, не совсем хорошо, удобно и быстро. Как правило первый сегмент EMS находится по адресу D000.

Логическое строение оперативной памяти в графическом виде.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО

4. DRAM – Dynamic Random Access Memory

DRAM - это очень старый тип микросхем оперативной памяти, который сейчас уже давно не применяется. По другому DRAM – это динамическая память с произвольным порядком выборки. Минимальной единицей информации при хранении или передаче данных в компьютере является бит. Каждый бит может быть в двух состояниях: включен (да, 1) или выключен (нет, 0). Любой объем информации в конечном итоге состоит из включенных и выключенных битов. Таким образом, что бы сохранить или передать какой либо объем данных, необходимо сохранить или передать каждый бит, не зависимо от его состояния, этих данных.


Для хранения битов информации в оперативной памяти есть ячейки. Ячейки состоят из конденсаторов и транзисторов. Вот примерная и упрощенная схема ячейки DRAM:

Каждая ячейка способна хранить только один бит. Если конденсатор ячейки заряжен, то это означает, что бит включен, если разряжен – выключен. Если необходимо запомнить один байт данных, то понадобится 8 ячеек (1 байт = 8 битам). Ячейки расположены в матрицах и каждая из них имеет свой адрес, состоящий из номера строки и номера столбца.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО

Теперь рассмотрим, как происходит чтение. Сначала на все входы подается сигнал RAS (Row Address Strobe) – это адрес строки. После этого, все данные из этой строки записываются в буфер. Затем на регистр подается сигнал CAS (Column Address Strobe) – это сигнал столбца и происходит выбор бита с соответствующим адресом. Этот бит и подается на выход. Но во время считывания данные в ячейках считанной строки разрушаются и их необходимо перезаписать взяв из буфера.

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

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

Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО

Это означает, что за один раз будет считан не один бит, а несколько. Если параллельно расположено 8 матриц, то сразу считан будет один байт. Это называется разрядностью. Количество линий, по которым будут передаваться данные от (или на) параллельных матриц, определяется разрядностью шины ввода/вывода микросхемы.
Говоря о работе DRAM необходимо учитывать один момент. Все заключается в том, что конденсаторы не могут бесконечно долго хранить заряд и он в конце концов «стекает», Поэтому конденсаторы необходимо перезаряжать. Операция перезарядки называется Refresh или регенерацией. Происходит эта операция примерно каждые 2 мс и порой занимает до 10 % (а то и больше) рабочего времени процессора.

Важнейшей характеристикой DRAM является быстродействие, а проще говоря продолжительность цикла + время задержки + время доступа, где продолжительность цикла – время, затраченное на передачу данных, время задержки – начальная установка адреса строки и столбца, а время доступа – время поиска самой ячейки. Измеряется эта фигня в наносекундах (одна миллиардная доля секунды). Современные микросхемы памяти имеют быстродействие ниже 10 мс.

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


Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО

А теперь поняв как работает оперативная память, разберемся, зачем же она вообще нужна. После процессора, оперативную память можно считать самым быстродействующим устройством. Поэтому основной обмен данными и происходит между этими двумя девайсами. Вся информация в персональном компьютере хранится на жестком диске. При включении компа в ОЗУ (Оперативное Запоминающее Устройство) с винта записываются драйвера, специальные программы и элементы операционной системы. Затем туда будут записаны те программы – приложения, которые Вы будете запускать. При закрытии этих программ они будут стерты из ОЗУ. Данные, записанные в оперативной памяти, передаются в CPU (Central Processing Unit), там обрабатываются и записываются обратно. И так постоянно: дали команду процессору взять биты по таким то адресам, как то их там обработать и вернуть на место или записать на новое – он так и сделал.

Все это хорошо, до тех пор, пока ячеек ОЗУ хватает. А если нет? Тогда в работу вступает файл подкачки. Этот файл расположен на жестком диске и туда записывается все, что не влезает в ячейки оперативной памяти. Поскольку быстродействие винта значительно ниже ОЗУ, то работа файла подкачки сильно замедляет работу системы. Кроме этого, это снижает долговечность самого жесткого диска.

Увеличение объема памяти не приводит к увеличению ее быстродействия. Изменение объема памяти ни как не повлияет на ее работу. А вот если рассматривать работу системы, то тут дело другое. В том случае, если Вам хватает объема оперативной памяти, то увеличение объема не приведет к увеличению скорости работы системы. Если же ячеек ОЗУ не хватает, то увеличение их количества (проще говоря добавление новой или замене старой на новую с большим объемом линейки памяти) приведет к ускорению работы системы.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО

Изм.
Лист
№ докум.
Подпись
Дата
Лист
ППП ПИ 23.00.00 ТО
Интернет ресурсы

http://nikesina.ucoz.ru/

http://www.whatis.ru/

http://wiki.mvtom.ru/

http://www.teryra.com/

http://smartronix.ru/

http://allrefs.net/

http://sonikelf.ru/

http://beginpc.ru/

Список литературы

Практическое руководство системного администратора. (2012)

Эндрю Таненбаум, Тодд Остин - Архитектура компьютера (2013)

Адресация операндов в командах программы может быть:

l непосредственной;

l косвенной;

l ассоциативной;

l неявной.

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

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

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

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

Неявная адресация - адреса операнда в команде не указано, но он подразумевается кодом операции.

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

Относительная адресация

Абсолютный (A инд) адрес формируется как сумма адресов исполнительного (Aисп) и сегментного (A сегм):

A абс = A сегм + A исп.

A сегм - 20-битовый начальный адрес сегмента , который является увеличенным в 16 раз (сдвинутым на 4 бита влево) 16-битовым адресом сегмента A" сегм, хранящемся в одном из 16-битовых сегментных регистров. Начальный адрес сегмента в таком варианте всегда кратен 16 байтам, и он может быть полностью идентифицирован значением A" сегм (сегмент всегда состоит из целого числа параграфов, а параграф равен 16, то есть:

A сегм = 16 · A" сегм = A" сегм 0000.

16-битовый исполнительный адрес может в ПК представлять собой сумму 3-х адресов:

A исп = A смещ [+A баз ][+A инд ]

l A смещ - 16-битовый адрес смещения относительно начала сегмента (или относительно базы, если есть A баз);



l A баз - 16-битовый адрес смещения базы адреса операнда относительно начала сегмента;

l A инд - адрес индекса (или просто индекс) - дополнительная составляющая адреса операнда, использующаяся часто при программировании циклических процессов с массивами и таблицами. Индекс должен быть непосредственно задан в соответствующем регистре МПП.

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

A абс данных = A сегм + A исп = A сегм + A смещ [+A баз ][+A инд ]

A сегм = 16 A" сегм, A" сегм берется из регистра DS по умолчанию или из регистра ES, если это указано в программе. A баз и A инд берутся, соответственно, из регистров BX и индексных (SI или DI), а A смещ в явном или неявном виде указываются в программе.

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

A абс команд = A сегм + A исп = A сегм + A смещ

A" сегм берется из регистра CS, а A смещ - из регистра IP.

Стековая адресация

В стековой памяти (стеке) доступ к ячейкам памяти не произвольный, а по принципу «последний записанный операнд первым считывается» (FILO).

A абс стека = A сегм + + A смещ

16-битовый адрес сегмента A" сегм берется из регистра SS, смещения относительно начала сегмента стека автоматически считываются из регистров BP (смещение базы стека - A баз) и SP (смещение активной ячейки стека, в которую записывается или из которой считывается информация, - «вершины стека» относительно базы - A смещ).

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

Вопросы для самопроверки

1. Сформулируйте основные свойства алгоритма.

2. Рассмотрите способы записи алгоритма.

3. Приведите и поясните типовой состав машинных команд.

4. Рассмотрите возможные структуры машинных команд.

5. Поясните назначение системного и прикладного программного обеспечения.

6. Назовите основные режимы работы компьютеров и дайте им краткую характеристику.

7. Что такое прерывания работы программы и каково их назначение?

8. Назовите и поясните виды прерываний.

9. Рассмотрите последовательность действий машины при выполнении прерывания.

10. Назовите виды и особенности адресации ячеек памяти в ПК.

11. Напишите формулу для расчета абсолютного адреса данных.

12. Какие регистры микропроцессорной памяти используются для адресации данных?

13. Напишите формулу для расчета абсолютного адреса команды программы.

14. Какие регистры микропроцессорной памяти используются для адресации команд программы?

15. Напишите формулу для расчета адреса стека.

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


Глава 19.Элементы программирования на языке Ассемблер

После изучения главы студент должен знать:

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

· -основные компоненты языка;

· -основные команды, директивы, модификаторы;

· -адресацию регистров МПП и ячеек памяти в ассемблере;

· -программирование процедур вывода информации на дисплей и ввода информации с клавиатуры;

· -структуру ассемблерной программы;

· -процедуры формирования программы формата EXE;

· -назначение, команды и варианты использования отладчика программ Debug.

Пользователь компьютера, равно как и прикладной программист, программы составляет, как правило, на машинно-независимом алгоритмическом языке высокого уровня (Basic, Pascal, FORTRAN, C, PROLOG и др.), однако иметь представление об основах программирования и на машинно-ориентированных языках грамотному пользователю весьма полезно для:

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

l возможности просмотра и корректировки исполняемых программ с расширениями EXE и COM, компилированных с любых языков высокого уровня, в случае утраты исходных программ (вызвав указанные программы в отладчик программ DEBUG и деассемблировав их, можно получить их отображение на языке Ассемблера);

l составления программ решения наиболее ответственных задач (машинная программа, подготовленная на машинно-ориентированном языке, обычно эффективнее (короче и быстрее на 30–60%) программ, полученных в результате трансляции с языков высокого уровня) и для реализации процедур, включаемых в основную программу в виде отдельных фрагментов в том случае, если они не могут быть реализованы ни на используемом языке высокого уровня.

Основные компоненты языка ассемблер

Алфавит языка

Алфавит языка составляют символы ASCII:

l буквы от А до Z (или от а до z, строчные и прописные буквы в ассемблере не различаются);

l цифры от 0 до 9;

l специальные символы: @, $, ?, ., _,–, +, *, ", “, ; ,: и др.

Из букв, цифр и символов: @, $, ?, .,_ формируются:

l простые сообщения: имена (идентификаторы) процедур (подпрограмм), переменных, директив, команд (метки), значения констант и переменных;

l составные сообщения: команды (операторы);

l директивы (псевдооператоры);

l модификаторы (операции).

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

Константы (числа и строки)

Только целые числа

Различают:

l двоичные числа; заканчиваются буквой В;

l десятичные числа; без специального окончания или заканчиваются буквой D;

l шестнадцатеричные числа; заканчиваются буквой Н.

Для обозначения цифр 10, 11, 12, 13, 14, 15 в шестнадцатеричной системе счисления используются, соответственно, буквы A, B, C, D, E, F; но начинаться шестнадцатеричные числа должны обязательно с цифры, например: выражение F19Н - не число, а идентификатор, правильно число надо записать так: 0F19Н.

Запись отрицательных чисел:

l десятичные числа записываются обычным образом, просто со знаком: –32, –32D;

l двоичные числа записываются только в дополнительном модифицированном коде: –32D ® 11.100000B, –19D ® 11.01101B;

l шестнадцатеричные числа записываются только в дополнительном коде:

l –32D выглядит как 1.E0H, –119D - как 1.89H.

Строки (литералы)

Строки символов: включают в себя любые буквы, цифры и символы, но заключаются в кавычки: "ПК IBM PC с микропроцессором Pentium D ".

Команды (операторы)

Формат команды:

[Метка [:]] КОП [Операнд] [,Операнд] [;Комментарий].

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

КОП (Код ОПератора) - мнемокод команды (состоит из 2–6 букв). Может быть до 256 различных кодов (в ассемблере IBM PC их число изменяется в зависимости от типа МП).

Операнд - явно заданный адрес (прямой или косвенный); имя метки, переменной; само значение переменной; ассоциативный признак. Количество необходимых в команде операндов ассемблер узнает по КОП. В большинстве двухадресных команд присутствуют операнды приемника (dst - destination) и источника (src - source); источник не изменяет своего содержания, в приемнике 1-е число, участвующее в операции, заменяется результатом.

Министерство образования и науки нижегородской области

Государственное бюджетное образовательное учреждение

среднего профессионального образования

«Борский Губернский колледж»

Специальность 230701 Прикладная информатика (по отраслям)

Реферат

На тему: Структура оперативной памяти.

По дисциплине: Операционные системы и среды.

Выполнил:

студент гр. ИТ-41

Родов А.Е.

Проверил:

Марков А.В.

Городской округ города Бор

Введение

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

1. Структура оперативной памяти

Оперативная память состоит из ячеек, в каждой из которых может находиться единица информации – машинное слово. Каждая ячейка имеет две характеристики: адрес и содержимое. Через регистр адреса микропроцессора можно обратиться к любой ячейке памяти.

2. Сегментная модель памяти

Когда-то давно, на заре рождения компьютерной техники, оперативная память была очень маленькой и для ее адресации использовались 2 байта (так называемое «слово»). Такой подход позволял адресовать 64 Кб памяти, и адресация была линейной – для указания адреса использовалось одно-единственное число. Позже, с усовершенствованием техники, производители поняли, что имеется возможность поддерживать большие объемы памяти, но для этого нужно сделать размер адреса больше. Для совместимости с уже написанным программным обеспечением было решено сделать так: адресация теперь двухкомпонентная (сегмент и смещение) , каждая из которых 16-битная, а старые программы как использовали одну 16-битную компоненту и ничего не знают о сегментах, так и продолжают работать


4. DRAM – Dynamic Random Access Memory

DRAM – это очень старый тип микросхем оперативной памяти, который сейчас уже давно не применяется. По другому DRAM – это динамическая память с произвольным порядком выборки. Минимальной единицей информации при хранении или передаче данных в компьютере является бит. Каждый бит может быть в двух состояниях: включен (да, 1) или выключен (нет, 0). Любой объем информации в конечном итоге состоит из включенных и выключенных битов. Таким образом, что бы сохранить или передать какой либо объем данных, необходимо сохранить или передать каждый бит, не зависимо от его состояния, этих данных.

Для хранения битов информации в оперативной памяти есть ячейки. Ячейки состоят из конденсаторов и транзисторов. Вот примерная и упрощенная схема ячейки DRAM:

Каждая ячейка способна хранить только один бит. Если конденсатор ячейки заряжен, то это означает, что бит включен, если разряжен – выключен. Если необходимо запомнить один байт данных, то понадобится 8 ячеек (1 байт = 8 битам). Ячейки расположены в матрицах и каждая из них имеет свой адрес, состоящий из номера строки и номера столбца.

Теперь рассмотрим, как происходит чтение. Сначала на все входы подается сигнал RAS (Row Address Strobe) – это адрес строки. После этого, все данные из этой строки записываются в буфер. Затем на регистр подается сигнал CAS (Column Address Strobe) – это сигнал столбца и происходит выбор бита с соответствующим адресом. Этот бит и подается на выход. Но во время считывания данные в ячейках считанной строки разрушаются и их необходимо перезаписать взяв из буфера.

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

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

Это означает, что за один раз будет считан не один бит, а несколько. Если параллельно расположено 8 матриц, то сразу считан будет один байт. Это называется разрядностью. Количество линий, по которым будут передаваться данные от (или на) параллельных матриц, определяется разрядностью шины ввода/вывода микросхемы.
Говоря о работе DRAM необходимо учитывать один момент. Все заключается в том, что конденсаторы не могут бесконечно долго хранить заряд и он в конце концов «стекает», Поэтому конденсаторы необходимо перезаряжать. Операция перезарядки называется Refresh или регенерацией. Происходит эта операция примерно каждые 2 мс и порой занимает до 10 % (а то и больше) рабочего времени процессора.

Важнейшей характеристикой DRAM является быстродействие, а проще говоря продолжительность цикла + время задержки + время доступа, где продолжительность цикла – время, затраченное на передачу данных, время задержки – начальная установка адреса строки и столбца, а время доступа – время поиска самой ячейки. Измеряется эта фигня в наносекундах (одна миллиардная доля секунды). Современные микросхемы памяти имеют быстродействие ниже 10 мс.

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

А теперь поняв как работает оперативная память, разберемся, зачем же она вообще нужна. После процессора, оперативную память можно считать самым быстродействующим устройством. Поэтому основной обмен данными и происходит между этими двумя девайсами. Вся информация в персональном компьютере хранится на жестком диске. При включении компа в ОЗУ (Оперативное Запоминающее Устройство) с винта записываются драйвера, специальные программы и элементы операционной системы. Затем туда будут записаны те программы – приложения, которые Вы будете запускать. При закрытии этих программ они будут стерты из ОЗУ. Данные, записанные в оперативной памяти, передаются в CPU (Central Processing Unit), там обрабатываются и записываются обратно. И так постоянно: дали команду процессору взять биты по таким то адресам, как то их там обработать и вернуть на место или записать на новое – он так и сделал.

Все это хорошо, до тех пор, пока ячеек ОЗУ хватает. А если нет? Тогда в работу вступает файл подкачки. Этот файл расположен на жестком диске и туда записывается все, что не влезает в ячейки оперативной памяти. Поскольку быстродействие винта значительно ниже ОЗУ, то работа файла подкачки сильно замедляет работу системы. Кроме этого, это снижает долговечность самого жесткого диска.

Увеличение объема памяти не приводит к увеличению ее быстродействия. Изменение объема памяти ни как не повлияет на ее работу. А вот если рассматривать работу системы, то тут дело другое. В том случае, если Вам хватает объема оперативной памяти, то увеличение объема не приведет к увеличению скорости работы системы. Если же ячеек ОЗУ не хватает, то увеличение их количества (проще говоря добавление новой или замене старой на новую с большим объемом линейки памяти) приведет к ускорению работы системы.