В чем состоит различие между адресным пространством процессора и объемом оперативной памяти
Суровый реальный мир и компромиссы
Реальные ЭВМ не используют в чистом виде ни одну из описанных выше архитектур. Хотя существовали и ЭВМ полностью им соответствующие. Архитектура реальных ЭВМ это некий компромисс. Но прежде чем двигаться дальше нам нужно кратко остановиться на понятии адресного пространства.
Архитектура фон Неймана
Хранит и программу, и данные, в единой памяти. Это выглядит привлекательно, так как позволяет эффективно использовать память небольшого объема. У нас небольшая программа, которая обрабатывает большие объемы данных? Нет никаких проблем, главное, что бы суммарный размер программы и данных мог поместиться в память. Большая программа требующая мало данных? Тоже все просто.
Кроме того, мы можем заполнить область памяти данными и потом передать ей управление. Или использовать коды команд как данные, возможно, изменяя их.
Архитектура фон Неймана вполне естественна для универсальных ЭВМ, ведь в этом случае неизвестно, что именно потребуется программе и какое будет соотношение объема кода программы и данных. Мы можем легко загрузить новую программу и данные в память и начать выполнение.
Однако, и минусов хватает. Самый большой плюс, лежащий в основе архитектуры, является и самым большим минусом. Представьте, что по какой то причине программа записала часть данных в область команд. Это приведет к неработоспособности программы, если управление будет передано этой измененной области. Или к остановке ЭВМ (когда то давно это называлось АВОСТ - аварийный останов).
Второй, менее очевидный минус, невозможность одновременного считывания очередной команды и операнда, или считывания команды и записи результата. Доступ к памяти может быть только последовательным.
Процессор
Технически известный как центральный процессор или ЦП, процессор представляет собой электронную схему, которая выполняет определенные инструкции программы, выполняя такие операции, как основные арифметические, логические, управляющие и ввод / вывод (ввод / вывод). Кто-то может даже сказать, что это «мозг» компьютера.
Сегодня современные ЦП - это микропроцессоры, которые находятся на одной микросхеме (интегральной схеме). Это то, что мы используем в наших компьютерах, ноутбуках, мобильных телефонах, планшетах и других электронных устройствах. Теперь у нас также есть многоядерные процессоры, которые технически являются одиночными процессорами, мощность которых равна мощности двух или более процессоров. Это просто говорит о том, что производители, инженеры и разработчики постоянно находят способы ускорить работу наших процессоров, чтобы предоставить пользователям более быстрые компьютеры.
Три основных операции процессора
- Получить - Извлекает инструкцию из памяти программы (обычно с жестких дисков)
- Декодировать - Преобразует инструкцию, которая затем будет преобразована в сигналы, управляющие другими частями ЦП.
- Выполнить - Выполнение декодируемых действий. Он может состоять из одного действия или последовательности действий.
Примечание. Скорость процессора измеряется по тактовой частоте, кэш-памяти и количеству ядер. (Четырехъядерный процессор с тактовой частотой 4,0 ГГц, с кэш-памятью 8 МБ 4)
Архитектура и адресные пространства микроконтроллеров
Ну вот мы и добрались до микроконтроллеров. Путь был длинным и не простым, зато сейчас будет гораздо легче.
При этом доступ к памяти программ как к данным имеют далеко не все микроконтроллеры. В некоторых случаях такой доступ организован как к внешнему устройству, в некоторых моделях через виртуальное адресное пространство. При этом, через виртуальное адресное пространство не всегда можно производить запись в память программ, даже используя специальные методы доступа.
В большинстве микроконтроллеров адресное пространство регистров процессора объединено (включено) в адресное пространство данных. Так же, во многих контроллерах с отдельным адресным пространством ввода-вывода оно частично, или полностью, может включаться в пространство данных. Более подробно я это буду рассматривать когда доберемся до организации памяти (не архитектуры).
Некоторые микроконтроллеры позволяют организовывать виртуальное адресное пространство. Как это выглядит для микроконтроллеров PIC Microchip можно посмотреть в статье, ссылку на которую я давал выше. А вот для STM8 я приведу упрощенный вид виртуального адресного пространства
Упрощенный вид виртуального адресного пространства микроконтроллеров STM8. Серым цветом показаны не используемые участки адресного пространства. Иллюстрация моя
Упрощенный вид виртуального адресного пространства микроконтроллеров STM8. Серым цветом показаны не используемые участки адресного пространства. Иллюстрация моя
STM8 я выбрал из-за возможности показать, как может выглядеть полное (виртуальное) адресное пространство микроконтроллера в самом общем случае, который однако реализован на практике.
Практически все микроконтроллеры позволяют адресовать памяти больше, чем ее физически реализовано в микросхеме. В некоторых случаях, например, для MCS-51, имеется возможность подключать к микроконтроллеру внешнюю память программ и/или данных. Это усложняет применение микроконтроллера, так как появляется мультиплексирование, о чем я кратко расскажу отдельно. Зато появляется возможность снять некоторые ограничения по доступному объему памяти.
Сразу скажу, что вряд ли многие из вас (если вообще кто либо) столкнется с микроконтроллерами семейства MCS-51, да еще и с внешней памятью. Поэтому MCS-51 я буду уделять мало внимания, а про мультиплексирование упомяну только в данной статье, да еще при рассмотрении, что такое шины и какие они бывают.
Для нас, во всяком случае, на данном этапе, не имеет значения, как именно физически реализована память и внешняя она, или внутренняя. Особенности страничной, банковой, и прочих видов памяти я буду рассматривать отдельно, когда для этого придет время.
RAM против процессора
В чем разница между ОЗУ и процессором? Хотя оба могут иметь одну и ту же цель ускорения компьютеров, их различия настолько значительны, что планирование сборки одного или просто обновления одного требует значительного понимания обоих.
Как вы думаете, какой из двух, ОЗУ и процессора, сильнее влияет на скорость вашего компьютера? Если вы ответили RAM, вы правы, но если вы ответили на последнее, вы также правы. Так как же это возможно?
ОЗУ - это место, где хранится информация, которую необходимо вычислить и обработать. При запуске вашего компьютера он получит данные с вашего жесткого диска, которые содержат файлы, необходимые для вашей операционной системы. После этого информация будет считана и переведена в исполнение вашим процессором. Вы можете спросить: «Так почему бы не получить его прямо с жесткого диска»? Просто потому, что ОЗУ и процессор имеют особые отношения, которые заставляют их действовать и координировать свои действия намного быстрее, чем процессор и жесткий диск. Это потому, что они связаны прямой линией, что делает их отношения более надежными, чем отношения жесткого диска.
Что касается их скорости, то в то время как оперативная память измеряется размером ее хранилища, процессор измеряется тем, сколько циклов в секунду он может выполнять. Здесь возникают сложности при построении вашей системы. Скорость процессора зависит от его оперативной памяти, поэтому, допустим, у вас процессор с тактовой частотой 2,0 ГГц и 4 ГБ оперативной памяти. Лучшим выбором будет модернизация процессора. Зачем? Просто потому, что оперативная память используется не полностью при тактовой частоте процессора всего 2,0 ГГц. Ваш процессор может только рассчитывать и не справится с объемом памяти, который предоставляет ваша оперативная память. Даже если у вас 16 ГБ ОЗУ, пространство этой памяти не будет заполнено информацией из-за скорости вашего процессора. Это то, что мы называем узкое место. Оперативная память и процессор идут рука об руку и должны быть хорошо сбалансированы.
По своей цене оперативная память намного дешевле процессора. Оперативная память низкого уровня будет стоить вам всего около 12 долларов США с 2 ГБ памяти, в то время как процессор низкого уровня будет стоить вам вдвое - около 24 долларов США с двухъядерным процессором 3,4. С другой стороны, высокопроизводительная оперативная память будет стоить вам около 60 долларов США с 16 ГБ памяти, а высокопроизводительный процессор, вероятно, будет стоить вам около 350 долларов США с четырехъядерным процессором 4,00 ГГц.
Примечание. Скорость процессора измеряется не только его тактовой частотой, но также его кеш-памятью и количеством ядер. ОЗУ также измеряется не только по размеру, но и по типу, времени доступа.
Оперативная память – это основная память, на работу с которой ориентирован процессор, точнее программа, выполняемая процессором. Это адресная память.
В большинстве ЭВМ оперативная память энергозависимая. Это означает, что при выключении питания информация в оперативной памяти не сохраняется. Для сохранения информации при выключении питания содержимое оперативной памяти переписывают в энергонезависимую память, например на основе записи на магнитную поверхность. Это вторичная (внешняя) память на магнитных дисках (память прямого доступа) или на магнитных лентах (архивная память).
Множество адресов, которые могут использоваться в командах процессора, составляют его адресное пространство.
Здесь применяются различные термины – адресное пространство процессора, адресное пространство математической памяти, адресное пространство программы.
Адресное пространство процессора определяется разрядностью ЭВМ по заданию адреса. Процессоры, использующие 32-разрядные адреса, имеют адресное пространство равное 2 32 (4 Гб).
Но это не значит, что адресное пространство оперативной памяти должно соответствовать адресному пространству процессора.
Современные ЭВМ ориентированы на работу с "наращиваемым" объемом физической памяти. Это означает, что:
· адресное пространство процессора и физической памяти могут не совпадать,
· размещение программы и данных в физической памяти может не совпадать с их размещением по адресам в адресном пространстве процессора,
· прикладные программы вместо прямой адресации физической памяти используют обращение к некоторой модели (отображению) памяти,
· обращение к физической памяти производится при помощи диспетчера памяти, согласующего модель математической памяти с динамикой распределения программ и данных в физической памяти.
Диспетчер памяти может быть реализован программно или схемно-программно. В последнем случае говорят о реализации виртуальной памяти.
Размер адресного пространство процессора определяется разрядностью адресных шин, которая ограничена разрядностью процессора. Это случай плоской модели математической памяти.
Для снятия этого ограничения некоторые процессоры, например МП Intel, допускают использование множества адресных пространств. В этих случаях говорят о структурированной (сегментированной) математической памяти.
Использование сегментированной памяти увеличивает адресное пространство процессора, но усложняет адресацию. В сегментированной памяти адреса операндов и команд задаются вектором: указанием используемого сегмента (например, через базовый адрес сегмента в линейной памяти) и адреса в сегменте. Но, так как оперативная память остается не сегментированной (линейной), требуется пересчет сегментированного адреса в линейный адрес. Эта процедура называется трансляциейсегментов.
МП Intel в реальном (16-разрядном) режиме поддерживает 2 4 сегментов, и при 64 Кбайт в сегменте адресное пространство процессора составляет
2 20 = 1 Мбайт, а в защищенном (32-разрядном) режиме – 2 14 сегментов по
4 Гбайт (гигабайт) в сегменте, что обеспечивает 64 Тбайт (терабайт) адресного пространства.
Многие процессоры могут оперировать с несколькими плоскими или сегментированными пространствами адресов:
· пространством адресов оперативной памяти,
· пространством адресов регистров устройств ввода/вывода (портов).
Физически это различные системы памяти, но во многих архитектурах для доступа к ним используется единая система адресации ячеек памяти. В этих структурах обращение к портам по записи и чтению производится обычными командами обращения к памяти. При этом портам обычно приписываются адреса в старшем диапазоне.
В архитектуре МП Intel используются два независимых адресных пространства: портов и ячеек памяти.
Если ввод/вывод отображен на адреса портов, то в состав команд процессора вводят команды ввода IN и вывода OUT. Для ЭВМ IBM PC эти команды имеют вид:
где: al - аккумулятор, используется в качестве буфера для передаваемых данных,
dx - РОН, используется для задания номера порта.
Если номер порта не превышает 255, то возможно использование команд ввода/вывода в формате:
где: al - аккумулятор, используется в качестве буфера для передаваемых данных, RD - номер порта.
Вопросы для самопроверки:
1. Параметр процессора, определяющий максимальный размер адресного пространства.
2. Сегментированная память.
3. Положительные моменты использования сегментированной памяти.
4. Отрицательные моменты использования сегментированной памяти.
5. Максимальный размер сегмента в МП IA-16.
6. Размер максимального адресного пространства линейной памяти в МП IA-16.
7. Размер адресного пространства устройств ввода/вывода (портов).
8. Команды обращения к портам в МП IA-16.
Предыдущая статья цикла " Микроконтроллеры для начитающих. Часть 4. Очень кратко о микропрограммах " была факультативной. Однако, теперь мы еще на шаг приблизимся к практическому использованию микроконтроллеров. Пусть и упрощенно, схематически, но мы теперь представляем, как устроен процессор микроконтроллера. Пришло время подключать его к остальным узлам управляющей микроЭВМ микроконтроллера.
При слове архитектура большинство людей вспоминает о дворцах и зданиях, строительстве, возникает ассоциация со словом зодчий. Это правильно, но термин архитектура применим не только к строительству. Фактически, архитектура обозначает основные принципы использованные при проектировании и создании чего-либо.
Применительно к ЭВМ, под архитектурой обычно называют совокупность основных принципов, идей, подходов, методов, которые использовались при ее проектировании. Чаще всего входит в понятие архитектура ЭВМ входят:
- Организация памяти. Это количество различных типов памяти, их организация, способы подключения к процессору, особенности работы памяти.
- Система команд. Обратите внимание, я не сказал набор команд, я сказал система команд. В наборе команд ЭВМ(точнее, процессора) некоторые команды могут отсутствовать, могут включаться дополнительные команды, но подход к формированию системы команд остается неизменным. Набор команд это подмножество системы команд. Сюда входит адресность команд (количество операндов), режимы адресации операндов, тонкости выполнения (количество циклов, возможно, переменное), типы выполняемых операций, возможность расширения.
- Подсистема ввода-вывода. Способы подключения и адресации внешних (периферийных). Сюда же относится и наличие (и организация) канала прямого доступа к памяти ЭВМ.
- Возможность построения многопроцессорных комплексов. Одновременная работа нескольких процессоров в составе ЭВМ далеко не так проста, как может показаться. Причем и с точки зрения программиста.
- Механические параметры. Да, как ни странным это кажется. Наверное все знают платы расширения устанавливаемые в настольные ПК или в гнезда PCMCIA. Были и определенные требования к размерам ТЭЗ (типовой элемент замены), так назывались платы устанавливаемые в стойки больших ЭВМ (ЕС, СМ). Механические параметры далеко не всегда входят в понятие архитектуры, но иногда такое встречается.
Подробно архитектуру рассматривать мы не будем, для наших целей в этом нет смысла. Но некоторые аспекты для нас очень важны. И начнем мы с архитектуры памяти, точнее, с того, как память подключается к процессору (или наоборот).
Адресное пространство
Под адресным пространством мы будем понимать логически единую совокупность адресуемых ячеек памяти . Звучит туманно? Не волнуйтесь, сейчас все станет понятно. Давайте начнем разбираться с более знакомой всем универсальной ЭВМ (в виде ПК, например).
Из каких областей памяти обычно состоит программа? Во первых, собственно код (команды) программы. Во вторых, область данных. Причем можно выделить область инициализированных данных, которые получают определенные значения перед началом выполнения программы, и не инициализированных данных, значения которых не определены до момента явного присвоения. В третьих, область стека, где хранятся адреса возвратов из подпрограмм и временные данные. В четвертых, динамически выделяемая область памяти.
Совокупность этих областей памяти программы, или задачи, называется адресным пространством задачи. Выглядит это, примерно, так
Для процессоров 80х86 области памяти обычно называют сегментами. В рамках своего адресного пространства программа может как угодно распоряжаться памятью. Но выход за пределы адресного пространства запрещен (обычно, операционной системой). Видно, что адресное пространство задачи занимает часть, в общем случае, все имеющейся памяти ЭВМ.
Совокупность сегментов, показанных на иллюстрации выше, логически единая , так все эти области памяти относятся к одной и той же программе. Причем не требуется, в общем случае, такого смежного размещения областей памяти программы в физической памяти ЭВМ. Может быть, например, такое расположение
Пример отображения адресного пространства задачи на физическую память ЭВМ. Серым цветом отмечены не используемые области памяти. Иллюстрация моя
Пример отображения адресного пространства задачи на физическую память ЭВМ. Серым цветом отмечены не используемые области памяти. Иллюстрация моя
Такое отображение выполняется аппаратно специальными блоками управления памятью, которые могут входить как в состав процессора, так и в состав памяти. При этом адреса памяти используемые в программе называют логическими, а адреса физической памяти ЭВМ физическими. Я не буду углубляться в тему преобразования адресов и управления памятью, это очень обширная и интересная тема, но нам достаточно такого упрощенного представления.
Команды и данные не обязательно занимают все доступное адресное пространство программы. Если реальная потребность программы меньше, чем ей выделено памяти, то часть адресов остается неиспользованной. Доступное адресное пространство задачи может быть меньше, чем ее потребности в памяти. В этом случае приходится использовать методы организации виртуальной памяти, если это возможно. Виртуальную память я так же не буду рассматривать.
Адресные пространства могут полностью изолированными, могут частично перекрываться, могут полностью совпадать, одно из пространств может быть подмножеством другого. С точки зрения математики можно рассматривать адресные пространства как некий вид множеств (множества ячеек памяти) с почти всеми применимыми к множествам операциями.
В рамках приведенного ранее примера с адресным пространством задачи можно показать пример частичного перекрытия
Но какое это отношение имеет к микроконтроллерам? Самое прямое! И сейчас это станет видно.
"Чистые архитектуры" идеального мира
Наиболее известны две архитектуры подключения памяти к процессору. Первая, знакомая всем по IBM PC совместимым ЭВМ (точнее, микропроцессорам 80x86), архитектура фон Неймана . Вторая, менее известная, но более важная для нас, как станет видно в дальнейшем, Гарвардская архитектура .
Как видно, основное различие здесь в использовании памяти.
Заключение
На сегодня, пожалуй, достаточно. Мы впервые затронули вопросы имеющие практическое значение для применения микроконтроллеров. И впервые я коснулся некоторых особенностей отдельных семейств микроконтроллеров.
Все изложенное в статье имеет самое непосредственное отношение к разработке программ для микроконтроллеров. Этого еще не достаточно, что бы начать разработку программ, но обойтись без понимания архитектуры памяти ЭВМ невозможно.
Возможно, что то осталось для вас не совсем понятным, несколько туманным, возможно даже не нужным. Не совсем понятное станет проясняться в дальнейших статьях. А не нужного в статьях нет. И это тоже станет понятно в дальнейшем. Есть не обязательное, но такие статьи я сразу помечаю как факультативные.
В следующей статье мы продолжим знакомиться с архитектурой памяти, точнее, с тонкостями ее реализации. До новых встреч.
Не следует думать, что термины "адресное пространство" и "оперативная память" эквивалентны. Адресное пространство - это просто набор адресов, которые умеет формировать процессор; совсем не обязательно все эти адреса отвечают реально существующим ячейкам памяти. В зависимости от модификации персонального компьютера и состава его периферийного оборудования, распределение адресного пространства может несколько различаться. Тем не менее, размещение основных компонентов системы довольно строго унифицировано. Типичная схема использования адресного пространства компьютера приведена на рис. 1.5. Значения адресов на этом рисунке, как и повсюду дальше в книге, даны в шестнадцатеричной системе счисления.
Рис. 1.5. Типичное распределение адресного пространства.
Первые 640 Кб адресного пространства с адресами от 00000h до 9FFFFh (и, соответственно, с сегментными адресами от 0000h до 9FFFh) отводятся под основную оперативную память, которую еще называют стандартной (conventional). Начальный килобайт оперативной памяти занят векторами прерываний, которые обеспечивают работу системы прерываний компьютера, и включает 256 векторов по 4 байта каждый. Вслед за векторами прерываний располагается так называемая область данных BIOS, которая занимает всего 256 байт, начиная с сегментного адреса 40h. Сама BIOS (от Basic In-Out System, базовая система ввода-вывода) является частью операционной системы, хранящейся в постоянном запоминающем устройстве. Это запоминающее устройство (ПЗУ BIOS) располагается на системной плате компьютера и является, таким образом, примером встроенного, или "зашитого" программного обеспечения. В функции BIOS входит тестирование компьютера при его включении, загрузка в оперативную память собственно операционной системы MS-DOS, хранящейся на магнитных дисках, а также управление штатной аппаратурой компьютера - клавиатурой, экраном, дисками и прочим. В области данных BIOS хранятся разнообразные данные, используемые программами BIOS в своей работе. Так, здесь размещаются:
- входной буфер клавиатуры, куда поступают коды нажимаемых пользователем клавиш;
- адреса видеоадаптера, а также последовательных и параллельных портов;
- данные, характеризующие текущее состояние видеосистемы (форма курсора и его текущее положение на экране, видеорежим, используемая видеостраница и проч.);
- ячейки для отсчета текущего времени и т.д.
Область данных BIOS заполняется информацией в процессе начальной загрузки компьютера, а затем динамически модифицируется системой по мере необходимости. Многие прикладные программы, особенно, написанные на языке ассемблера, обращаются к этой области с целью чтения или модификации содержащихся в них данных. С некоторыми ячейками области данных BIOS мы столкнемся при рассмотрении примеров конкретных программ.
В области памяти, начиная с адреса 500h, располагается собственно операционная система MS-DOS, которая обычно занимает несколько десятков Кбайт. Программы MS-DOS, как и другие системные составляющие (векторы прерываний, область данных BIOS) записываются в память автоматически в процессе начальной загрузки компьютера.
Вся оставшаяся память до границы 640 Кб свободна для загрузки любых системных или прикладных программ. Как правило, в начале сеанса в память загружают резидентные программы (русификатор, антивирусные программы). При наличии резидентных программ объем свободной памяти уменьшается.
Оставшиеся 384 Кб адресного пространства между границами 640 Кб и 1 Мб, называемые старшей, или верхней (upper) памятью, первоначально были предназначены для размещения постоянных запоминающих устройств (ПЗУ). Практически под ПЗУ занята только небольшая часть адресов, а остальные используются в других целях.
Часть адресного пространства старшей памяти отводится для адресации к графическому и текстовому видеобуферам графического адаптера. Графический адаптер представляет собой отдельную микросхему или даже отдельную плату, в состав которой входит собственное запоминающее устройство (видеопамять). Это запоминающее устройство не имеет никакого отношения к оперативной памяти компьютера, однако, его схемы управления настроены на диапазоны адресов A0000h. AFFFFh и B8000h. BFFFFh, входящих в общее с памятью адресное пространство процессора. Поэтому любая программа может обратиться по этим адресам и, например, записать данные в видеобуфер, что приведет к появлению на экране некоторого изображения. Если видеосистема находится в текстовом режиме, а запись осуществляется по адресам текстового видеобуфера, на экране появятся изображения тех или иных символов (букв, цифр, различных знаков). Если же перевести видеосистему в графический режим, и записывать данные в графический видеобуфер, то на экране появятся отдельные точки или линии. Можно также прочитать текущее содержимое ячеек видеобуфера.
В самом конце адресного пространства, в области адресов F0000h. FFFFFh, располагается ПЗУ BIOS - постоянное запоминающее устройство, о котором уже говорилось выше.
Часть адресного пространства, начиная с адреса C0000h, отводится еще под одно ПЗУ - так называемое ПЗУ расширений BIOS для обслуживания графических адаптеров и дисков.
В состав компьютера, наряду со стандартной памятью (640 Кб), входит еще расширенная (extended) память, максимальный объем которой может доходить до 4 Гбайт. Эта память располагается за пределами первого мегабайта адресного пространства и начинается с адреса 100000h. Реально на машине может быть установлен не полный объем расширенной памяти, а лишь несколько десятков Мбайт или даже меньше.
Поскольку функционирование расширенной памяти подчиняется "спецификации расширенной памяти" (Extended Memory Specification, сокращенно XMS), то и саму память часто называют XMS-памятью. Как уже отмечалось выше, доступ к расширенной памяти осуществляется в защищенном режиме, поэтому для MS-DOS, работающей только в реальном режиме, расширенная память недоступна. Однако в современные версии MS-DOS включается драйвер HIMEM.SYS, поддерживающий расширенную память, т.е. позволяющий ее использовать, хотя и ограниченным образом. Конкретно в расширенной памяти можно разместить электронные диски (с помощью драйвера RAMDRIVE.SYS) или дисковые кэш-буферы (с помощью драйвера SMARTDRV.SYS).
Первые 64 Кб расширенной памяти, точнее, 64 Кб - 16 с адресами от 100000h до 10FFEFh, носят специальное название область старшей памяти (High Memory Area, HMA). Эта область замечательна тем, что хотя она находится за пределами первого мегабайта, к ней можно обратиться в реальном режиме работы микропроцессора, если определить сегмент, начинающийся в самом конце мегабайтного адресного пространства, с сегментного адреса FFFFh, и разрешить использование адресной линии А20. Первые 16 байт этого сегмента заняты ПЗУ, область же со смещениями 0010h. FFFFh можно, в принципе, использовать под программы и данные. MS-DOS позволяет загружать в HMA (директивой файла CONFIG.SYS DOS=HIGH) значительную часть самой себя, в результате чего занятая системой область стандартной памяти существенно уменьшается. Старшую память обслуживает тот же драйвер HIMEM.SYS, поэтому загрузка DOS в HMA возможна, только если установлен драйвер HIMEM.SYS.
Как видно из приведенного выше рисунка, часть адресного пространства верхней памяти, не занятая расширениями BIOS и видеобуферами, оказывается свободной. Эти свободные участки можно использовать для адресации к расширенной памяти (конечно, не ко всей, а лишь к той ее части, объем которой совпадает с общим объемом свободных адресов старшей памяти). Отображение расширенной памяти на свободные адреса старшей памяти выполняет драйвер EMM386.EXE, а сами участки старшей памяти, "заполненные" расширенной, называются блоками верхней памяти (Upper Memory Blocks, UMB). MS-DOS позволяет загружать в UMB устанавливаемые драйверы устройств, а также резидентные программы. Загрузка системных программ в UMB освобождает от них стандартную память, увеличивая ее транзитную область. Загрузка в UMB драйверов осуществляется директивой файла CONFIG.SYS DEVICEHIGH (вместо директивы DEVICE), а загрузка резидентных программ - командой DOS LOADHIGH. На оптимально сконфигурированном компьютере системными компонентами заняты лишь около 20. 25 Кб основной памяти, а вся остальная память в объеме около 620 Кб может использоваться для загрузки прикладных программ.
Классическая пятиблочная структура Неймана, рассмотренная ранее, предполагала наличие только одного устройства памяти – ОП. Однако современные ЭВМ имеют иерархическую структуру памяти, каждый уровень которой характерен различным быстродействием и емкостью. Появление многочисленных иерархически расположенных уровней памяти связано, прежде всего, с постоянным увеличением разрыва в быстродействии процессора и ОП, которое необходимо скомпенсировать для повышения производительности ЭВМ в целом.
Кроме того, развитие программного обеспечения и расширение круга задач, решаемых на ЭВМ, требовали постоянного увеличения объема ОП. Между тем известно, что на всем протяжении развития ЭВМ требования к емкости и быстродействию ЗУ были противоречивы – чем выше быстродействие, тем технически труднее и дороже обходится увеличение емкости. Необходимость поддержания стоимости памяти ЭВМ на приемлемом уровне, а также множество технических проблем, связанных с построением быстродействующих ЗУ большого объема, и привели в процессе эволюции к созданию иерархической структуры памяти современной ЭВМ.
Несмотря на существенные различия в принципах функционирования и технической реализации различных уровней памяти, существуют общие принципы построения всей иерархии:
- чем ближе уровень памяти к процессору, тем выше его быстродействие и меньше емкость;
- алгоритмы взаимодействия всех уровней памяти построены так, что количество обращений верхнего, более быстродействующего уровня к нижележащему, менее быстродействующему, соседнему уровню является минимальным;
- обмен информацией между соседними иерархическими уровнями памяти в большинстве случаев осуществляется блоками фиксированной длины, что позволяет ускорить обмен за счет аппаратной реализации алгоритмов.
В общем случае память современной ЭВМ включает в себя следующие иерархические уровни:
- Сверхоперативная память (СОП), которая называется еще местной памятью.
- Кэш-память, которая обычно отсутствует в простейших процессорных устройствах. В более сложных ЭВМ кэш имеет несколько уровней, причем кэш верхнего уровня всегда находится в кристалле процессора.
- Оперативная (основная) память (ОП) или оперативное запоминающее устройство (ОЗУ), а также системное ПЗУ, объединенное с ОЗУ общим полем адресов.
- Память с прямым доступом на магнитных дисках.
- Память с последовательным доступом на магнитных лентах.
Устройства перечислены в порядке убывания быстродействия и увеличения объема.
Оперативная (основная) память, системное ПЗУ. Название этого устройства памяти (ОП) отражает тот факт, что процессор может работать только с программами, которые загружены в ОП. Этот принцип был положен в основу функционирования первых однозадачных ЭВМ. По этому же принципу функционируют современные многозадачные однопроцессорные системы (многопроцессорные системы рассмотрены в последней части настоящего курса). При отсутствии кэш ОП служит для хранения информации, непосредственно используемой в вычислительном процессе. Из ОП в процессор поступают операнды и команды, а обратно – результаты выполненных операций.
Характеристики ОП непосредственно влияют на характеристики ЭВМ в целом и прежде всего на производительность (даже при наличии кэш).
Объем ОП зависит от целевого назначения ЭВМ и колеблется в очень широком диапазоне – от десятков Кбайт в простейших контроллерах до сотен Мбайт. В современных ЭВМ ОП всегда выполняется на полупроводниковых ЗУ и имеет длительность цикла обращения не более 1-2 мкс. (В ЭВМ первого поколения ОП строилась сначала на электронных лампах, а затем на ферритовых кольцах).
Системное ПЗУ имеет с ОП (ОЗУ) общее адресное пространство. Его объем и заполнение существенно зависят от целевого назначения ЭВМ.
Системное ПЗУ может хранить ядро операционной системы, утилиты, драйверы, служебные и прикладные программы и т.д. При включении ЭВМ или ее работе программы, записанные в системном ПЗУ, в большинстве случаев загружаются в ОП (ОЗУ) и только после этого обрабатываются процессором.
Сверхоперативная память. Необходимость в СОП возникла уже в первых ЭВМ, когда скорость работы процессора превысила скорость работы ОП. Современные СОП всегда строятся на полупроводниках и представляют собой наборы регистров, находящихся внутри кристалла процессора в непосредственной близости от АЛУ и УУ. Быстродействие СОП должно соответствовать быстродействию АЛУ и УУ процессора. Цикл обращения к СОП составляет 1-2 такта. Объем СОП очень небольшой. Во многих случаях СОП называют также внутренней регистровой памятью процессора. Регистры СОП используют для временного хранения результатов операции в АЛУ, операндов, служебных констант, очень коротких наборов команд обрабатываемой программы и т.д.
По своей сути СОП является буферной памятью, которая в какой-то степени сглаживает разрыв в быстродействии процессора и ОП. Однако ее незначительный объем не позволяет получить приемлемое решение проблемы, поэтому в процессе эволюции ЭВМ возник другой иерархический уровень буферной памяти, быстродействие которого несколько ниже СОП, а емкость существенно больше.
Кэш-память. Память этого типа является быстродействующим буфером достаточно большого объема между процессором (его внутренней памятью) и сравнительно медленно действующей ОП. Ее объем (одноуровневая кэш) составляет около 16-256 Кбайт на 4-8 Мбайт ОП. Эта память недоступна программисту (cash в переводе означает тайник). Кэш-память, как уже отмечалось, располагается в непосредственной близости от процессора, а кэш верхних уровней – непосредственно в кристалле процессора. В настоящее время кэш верхнего уровня и СОП стали фактически единым иерархическим уровнем внутренней памяти процессора. В IBM PC БИС нижнего уровня кэш располагается на процессорной шине. Информация в кэш-память закачивается из ОП небольшими блоками, при этом ненужные блоки удаляются из кэш обратно в ОП. Алгоритмы обмена кэш-памяти и ОП весьма строги и будут рассмотрены далее. Наличие кэш-памяти позволяет сгладить различие в быстродействии процессора и ОП. Кроме того, кэш-память дает возможность в ряде случаев не прерывать работу процессора при обмене внешних устройств с ОП в режиме прямого доступа (DMA).
Внешняя память. Потребность в памяти, объем которой существенно превосходил бы размер существующих ОП, возникла в процессе эксплуатации уже первых ЭВМ. Такая память могла решить многие проблемы, связанные с вводом в ЭВМ больших программ, которые было невозможно разместить в ОП, и особенно с хранением больших наборов данных. Первоначально в качестве внешней памяти ЭВМ использовались накопители на магнитных барабанах (НМБ) и магнитных лентах (НМЛ). Затем были разработаны и созданы накопители на жестких и гибких магнитных дисках (НМД), которые стали интенсивно вытеснять более медленные НМЛ. Впоследствии были созданы накопители на оптических и магнитооптических дисках.
В настоящее время основным типом устройства внешней памяти является НМД. Внешнюю память на НМД иногда называют оперативным внешним запоминающим устройством (ВЗУ). НМЛ стали использоваться как архивные ВЗУ (стримеры), предназначенные для резервного хранения информации. К этому же классу ВЗУ относятся накопители на оптических и магнитооптических дисках. Все перечисленные ВЗУ имеют быстродействие во много раз меньше, чем ОП, и информация, хранимая на них, не может непосредственно перерабатываться процессором. Перед обработкой в процессоре информация с ВЗУ должна быть обязательно помещена в ОП. Емкость ВЗУ в ряде случаев для конкретной ЭВМ и конкретной задачи можно считать бесконечной.
Гарвардская архитектура
Используется разная память для программ и данных. Здесь у нас нет опасности исказить команды программы ошибкой с записью данных. И мы можем считывать очередную команду и записывать результат или считывать операнд одновременно, так как у нас разные блоки памяти. Минусы исчезли? Не совсем.
Теперь мы не можем передать управление области данных или использовать команды как данные. То есть, мы не можем изменять саму программу. Но это иногда все таки требуется. Теперь мы должны по отдельности загружать в области памяти коды команд и данные перед началом выполнения программы. Для универсальных ЭВМ эта архитектура менее удобна, чем архитектура фон Неймана. Зато для микроконтроллеров она подходит хорошо. Ведь программа в микроконтроллер обычно загружается если не однократно, то надолго и изменять ее не требуется. А отдельная область данных позволяет повысить надежность работы и уменьшить объем ОЗУ (оперативная память зачастую дороже). Теперь стало немного понятнее, почему я сказал, что Гарвардская архитектура для более важна, мы же говорим как раз о микроконтроллерах.
При этом довольно неприятным минусом, пусть и не критичным, является снижение гибкости в использовании памяти. Представьте, что нам не хватает, совсем чуть чуть, памяти данных, но есть свободная память команд. Мы никак не можем решить проблему, так как память программ под хранение данных использовать нельзя. И наоборот.
Содержание:
Несмотря на все годы существования, люди все еще не понимают, что процессор и оперативная память делают для их ЦП. Дело в том, что оба они необходимы для сборки любого компьютера. Они работают по-разному, но при этом должны быть синхронизированы. Хотя изучение различий может не сделать вас экспертом в области компьютеров, это поможет вам узнать компоненты вашего компьютера, грамотно составить бюджет и получить то, что вам действительно нужно для вашего компьютера.
Определения
Сокращенно от слов «оперативная память», RAM - это форма компьютерного хранилища данных, где хранится информация. Эта информация может поступать из вашей ОС (операционной системы), игр, мультимедиа и т. Д. И будет источником, к которому, вероятно, будет обращаться ваш процессор. Он в основном похож на ваш жесткий диск, но намного быстрее для чтения и записи, потому что он напрямую связан с вашим процессором. Однако большая разница заключается в том, что оперативная память может хранить информацию только во время работы вашего компьютера, в отличие от информации на жестких дисках, которая все еще будет там, даже если вы выключите компьютер.
Думайте о оперативной памяти как о краткосрочной памяти человека, а о своем жестком диске как о долговременной памяти человека. Пока в нем постоянно хранится информация, другая информация забывается. Это относится к тому, как работает ваш компьютер. Если размер вашей оперативной памяти заполнен, сохраненная информация будет заменена новой, к которой в данный момент осуществляется доступ. Это повлияет на скорость вашего компьютера. Вы когда-нибудь замечали, что когда вы только что запускаете компьютер, все работает без сбоев? Это потому, что ваша память еще свежа и хранится не так много информации. Кроме того, механические ограничения (Время доступа и архитектурный дизайн) RAM также являются факторами в отношении скорости и того, насколько хорошо они работают.
Примечание. Скорость ОЗУ измеряется объемом памяти, типом и скоростью доступа к данным. (16 ГБ DDR 3 @ 1866 МГц)
Видео: Оперативная память против процессора - разница между
Адресные пространства ЭВМ
Да, именно так. Микроконтроллер включает в себя управляющую ЭВМ, как мы уже видели ранее. Какие области памяти могут быть в ЭВМ? Вспомним наши "чистые архитектуры". Область команд программы и область данных . Но это не все, есть еще область стека , которая может оказаться не такой простой, и область ввода-вывода .
Почему ввод-вывод относится к памяти? Все просто. Мы должны как то адресовать устройства ввода-вывода, управлять ими, передавать им данные и получать ответы. Внешние устройства обычно представлены набором управляющих регистров, каждый из которых имеет определенный адрес. Вероятно, некоторым из вас знакомы команды IN и OUT , которые иногда используются для доступа к таким регистрам. Адреса в командах IN и OUT как раз и относятся к области ввода-вывода.
Еще я назову область специальных регистров процессора , о которой вспоминают не часто. Специальные регистры процессора могут иметь свои адреса, а могут и не иметь.
Таким образом, у нас есть пять областей памяти, каждая из которых может иметь собственные адреса, свой размер, и является логически единой(по смыслу). Другими словами, у нас есть пять адресных пространств.
В общем случае мы не можем сказать, что именно хранится в ячейке с некоторым адресом, если не указано, к какому адресному пространству она относится. Например, ячейка с адресом 10 может хранить команду, если она в адресном пространстве команд (программ), или являться, например, регистром управления внешнего устройства, если она в адресном пространстве ввода-вывода, или быть просто некоторой переменной, если она в адресном пространстве данных.
Если еще раз вспомнить "чистые архитектуры", то станет видно, что в архитектуре фон Неймана адресные пространства программ и данных полностью совпадают. А в Гарвардской архитектуре они полностью изолированы.
А вот со стеком все немного интереснее. Стек хранит адреса возвратов и временные данные. С архитектурой фон Неймана все понятно, там адресные пространства совпадают. А как быть с Гарвардской? Мы не можем поместить стек в память программ, так он может содержать и данные. А в микроконтроллерах память программ еще и обычно представлена ПЗУ. Мы не можем поместить стек в память данных, так это позволит изменять адреса возвратов, которые относятся к памяти программ.
Мы можем решить проблемы поместив стек в специальную, изолированную, область памяти. Или сделать два различных стека, один для адресов возвратов, второй для временных данных. Теперь понятно, почему я выделил стек как отдельную область памяти, отдельное адресное пространство?
Но вернемся к нашей теме. Даже в Гарвардской архитектуре иногда требуется доступ к памяти программ, как к данным. Это можно сделать несколькими способами, я кратко расскажу о двух.
Проще всего добавить в ЭВМ (или процессор) специальный блок, через который и будет осуществляться доступ к памяти программ, как к данным. С большой долей вероятности, этот блок позволит достаточно легко читать память программ, а вот запись будет или сложнее, или не будет доступна совсем. С точки зрения чистоты архитектуры это решение ничего не нарушает, адресные пространства по прежнему изолированы, а дополнительный блок является обычным внешним устройством. При этом доступ к памяти программ будет медленнее, чем к памяти данных. И потребует больших усилий при программировании.
А вот второй способ гораздо хитрее и, на первый взгляд, нарушает все различия между архитектурами. Мы можем построить виртуальное адресное пространство, которое и будет использовать процессор, и которое будет являться объединением адресных пространств данных и программ. Вот так
Пример объединения адресных пространств программ и данных в единое виртуальное адресное пространство. Иллюстрация моя
Пример объединения адресных пространств программ и данных в единое виртуальное адресное пространство. Иллюстрация моя
Обратите внимание, здесь нет принципиальных схемотехнических отличий от первого варианта, где мы работали с памятью программ как с внешним устройством. У нас лишь добавился дешифратор, который маскирует особенности памяти программ с точки зрения программиста. Доступ от этого не становится быстрее, но вот использовать его в программе проще. Самое виртуальное адресное пространство теперь выглядит примерно так
Кто то может сказать, а чем это вообще отличается от архитектуры фон Неймана? А действительно, чем? Особенно с учетом того, что я сказал, что адресное пространство не обязательно должно отображаться на непрерывные области физической памяти.
Все просто, на самом деле. В архитектуре фон Неймана у нас адресные пространства программ и данных полностью совпадают. Фактически, там можно говорить о едином адресном пространстве программ/данных. В данном же случае, у нас адресные пространства программ и данных по прежнему изолированны, а виртуальное пространство строится как их объединение, но без нарушения изоляции.
Таким образом, для Гарвардской архитектуры мы можем строить виртуальные адресные пространства по разному комбинируя отдельные адресные пространства не нарушая их изолированности. А можно и включать одно пространство в другое, без изоляции. Например, мы можем включить адресное пространство регистров процессора в адресное пространство данных. Так сделано, например, в микроконтроллерах PIC Microchip и AVR Atmel. При этом туда же входит и адресное пространство ввода-вывода (для Atmel это не совсем так, но разница нам сейчас не принципиальна). Подробнее обо всем этом поговорим в следующих статьях.
Остается кратко упомянуть, как можно обеспечить изоляцию адресных пространств программ и данных для архитектуры фон Неймана. Тут тоже используются отдельные блоки управления памятью. Поскольку эта темя далеко от микроконтроллеров особенно углубляться в нее не буду. Скажу лишь, что обычно используется запрет передачи управления на области памяти, которые должны считаться памятью данных. При этом можно и читать, и записывать эти области, а вот передавать управление туда нельзя. И, разумеется, никто не отменял включения защиты от записи в определенные области памяти.
Читайте также: