Скачать 1.25 Mb.
|
45. Страничная организация памяти В основе механизма виртуальной памяти лежит разделение понятий адресного пространства и адресов памяти. Рассмотрим в качестве иллюстрации старый компьютер с 16-битным полем адреса в командах и 4096 словами памяти. Программа на нем теоретически могла обращаться к 65536 словам памяти (адреса 16-битные, 216=65536). Это зависит только от количества разрядов адреса и не связано с числом реально доступных слов. Логическое адресное пространство такого компьютера состоит из чисел 0, 1, 2,..., 65535, однако в действительности (физически) компьютер имеет слов памяти гораздо меньше. До изобретения виртуальной памяти проводилось жесткое различие между адресами < 4096, и адресами >= 4096. Эти две части рассматривались соответственно как полезное и бесполезное адресные пространства. Никакого различия между адресным пространством и адресами памяти не проводилось, между ними подразумевалось взаимнооднозначное соответствие. Идея разделения понятий адресного пространства и адресов памяти состоит в неоднозначности этого соответствия. Если всегда можно получить прямой доступ к 4096 физическим словам памяти, то это не значит, что они обязаны соответствовать логическим адресам памяти от 0 до 4095. Например, можно сообщить системе, что при обращении к логическому (виртуальному) адресу 4096 должно использоваться слово из памяти с адресом 0, при обращении к адресу 4097 - слово из памяти с адресом 1 и т. д. Другими словами, определяется отображение адресного пространства в физические адреса памяти. При обращении к адресу из другой группы текущее содержимое физической памяти сохраняется на диске, и в память загружается нужная часть виртуальной памяти (действует другое отображение). Такая технология автоматического наложения называется страничной организацией памяти, а перемещаемые участки памяти называются страницами. Совокупность адресов, к которым программа теоретически может обращаться, мы будем называть виртуальным адресным пространством, а реальные адреса памяти в аппаратном обеспечении - физическим адресным пространством. Предполагается, что на диске достаточно места для хранения необходимого виртуального адресного пространства. Реализация страничной памяти Работу виртуальной памяти можно реализовать с использованием таблицы страниц, в которой количество элементов равно количеству страниц в виртуальном адресном пространстве. Когда программа пытается обратиться к слову виртуальной памяти, она порождает полный виртуальный адрес (например, 32-разрядный). Для этого могут использоваться любые стандартные методы адресации, включая индексирование и косвенную адресацию. Физическое адресное пространство также разбивается на части равного размера таким образом, чтобы каждая такая часть основной памяти вмещала одну страницу (возможно, с некоторой служебной информацией). Эти части основной памяти называются страничными кадрами. (на обороте…) | |||
Тем не менее выигрыш от того, что не требуется обрабатывать прерывание при каждом передаваемом байте (слове), существенно перевешивает потери, происходящие из-за захвата циклов. | Команды вызова процедур: процедура (подпрограмма)- это группа команд, которая выполняет определенную задачу и которую можно вызывать из различных мест программы. Когда процедура заканчивает работу, она должна вернуть управление в точку вызова. Для этого должен где-то сохраняться адрес возврата. Он может помещаться в одном из трех мест: в памяти, регистре или стеке. Самое удачное и наиболее часто применяемое решение - помещать адрес возврата в стек. По завершении процедура выталкивает адрес возврата из стека. При такой форме вызова рекурсия не порождает проблем. Управление циклом: Цикл является одной из наиболее важных управляющих структур в алгоритмах. Поэтому часто архитектура команд предоставляет специальные средства для организации циклов. Схема цикла содержит счетчик (часто – регистр), который изменяется на какую-либо константу каждый раз при выполнении тела цикла (в начале или в конце). При изменении значение счетчика проверяется. Если выполнено некоторое условие (например, равенство нулю), цикл завершается. | | |
Команды typeSTORE обратны командам typeLOAD. Каждая команда выталкивает элемент из стека и сохраняет его в локальной переменной. Здесь также имеются команды для работы с элементами массива - typeASTORE. Команды PUSH помещают значение в стек. Команда LDC записывает в стек значение из таблицы констант. Следующая команда представляет целую группу команд всех четырех основных типов (int, long, float и double). Каждая команда содержит только код операции, и каждый из них помещает в стек определенное значение. Например, ICONST_0 вталкивает в стек 32-битное слово 0. То же самое действие можно произвести с помощью команды BIPUSH, но это займет два байта. Благодаря оптимизации самых распространенных команд программы JVM получаются небольшими по размеру. Поддерживаются следующие значения: int (-1, 0, 1, 2, 3, 4, 5); long (0, 1); float (0.0, 1.0, 2.0) и double (0.0, 1.0). Команда CONST_NULL помещает в стек нулевой указатель. Команды группы сравнения выталкивают одно или два значения из стека и проверяют их. Если из стека выталкивается два значения, то одно из них вычитается из другого, а результат проверяется. Следующая группа предназначена для вызова процедур и возврата значений. Они охватывают много вариантов и имеют различные параметры. Последняя группа включает оставшиеся команды. Каждая из них команд имеет специальное назначение, связанное с какой-дибо особенностью языка Java. Описание этих команд также не входит в задачи нашего курса. Машина picoJava II была разработана не только для программ на Java, но и для С/C++. Чтобы запускать программы на С и C++, нужен соответствующий компилятор. Кроме того, для поддержки этих возможностей к уровню архитектуры команд было добавлено 115 команд. Большинство из них занимает два или более байтов и начинается с одного из двух зарезервированных кодов JVM (0xFE и 0xFF). Программы, использующие эти дополнительные команды, не переносимы на другие машины JVM. | Следующая группа содержит команды передачи управления. ВРсс представляет собой набор команд, которые совершают переходы при различных условиях и содержат прогноз компилятора по поводу перехода. Команды ВРr проверяют регистр и совершает переход, если условие подтвердилось. Предусмотрено два способа вызова процедур. Для команды CALL используется формат 4 (см. выше) с 30-битным смещением. Этого значения достаточно для того, чтобы достичь любой команды в пределах 2 Гбайт от вызывающего оператора в любом направлении. Команда CALL копирует адрес возврата в регистр R15, который после вызова превращается в регистр R31. Второй способ вызова процедуры - команда JMPL (формат 1а или 1b), позволяющая помещать адрес возврата в произвольный регистр. Такая форма может быть полезной в случае, если адрес возврата вычисляется во время выполнения. Команды SAVE и RESTORE манипулируют регистровым окном и указателем стека. Обе команды совершают прерывание, если следующее (предыдущее) окно недоступно. В последней группе содержатся команды, которые не попали ни в одну из групп. Команда SETHI необходима при записи 32-битного непосредственного операнда в регистр. Для этого команда SETHI устанавливает биты с 10 по 31, а затем следующая команда должна передать оставшиеся биты, используя непосредственный формат. Команда РОРС подсчитывает число установленных битов в слове. Последние три команды предназначены для чтения и записи специальных регистров. Ряд распространенных CISC-команд, которых нет в этом списке, можно смоделировать RISC-командами. Для этого используются регистр G0 (=R0) либо операнд-константа (формат lb). Некоторые из них даны в следующей таблице. Эти команды распознаются ассемблером UltraSPARC II и часто порождаются компиляторами. Многие из них используют тот факт, что регистр G0 связан с 0, и запись в этот регистр не производит никакого результата. CISC-команда RISC-реализация MOV SRC, DST Выполнить OR над SRC и GO и сохранить результат в DST CMP SRC1, SRC2 Вычесть SRC2 из SRC1 (SUBCC) и сохранить результат в G0 TST SRC Выполнить ORCC над SRC и GO и сохранить результат в G0 NOT DST Выполнить XNOR над DST и G0 NEG DST Вычесть SRC2 из SRC1 (SUBCC) и сохранить результат в G0 INC DST Прибавить 1 к DST (непосредственный операнд) - команда ADD DEC DST Вычесть 1 из DST (непосредственный операнд) - команда SUB CLR DST Выполнить OR над G0 и G0 и сохранить результат в DST NOP SETHI G0 с 0 RET JMPL %I7+8, %G0 (% - обозн. регистра) | | |
Компьютер с виртуальной памятью обычно содержит устройство для отображения виртуальных адресов в физические, которое называется контроллером управления памятью. Сначала MMU проверяет, находится ли нужная страница в текущий момент в физической памяти (проверяет бит присутствия) Далее из таблицы нужно взять адрес страничного кадра и скопировать его в старшие разряды выходного регистра. Младшие разряды виртуального адреса (смещение в странице) копируются в младшие биты выходного регистра. Наконец, полученный физический адрес отправляется в кэш-память или основную память для поиска. Выше предполагалось, что требуемая виртуальная страница находится в основной памяти. Это не всегда верно, поскольку в ней обычно недостаточно места для всех виртуальных страниц. В случае такой ошибки операционная система должна считать нужную страницу с диска, записать новый адрес физической памяти в таблицу страниц, а затем повторить прерванную команду. Такой метод работы с виртуальной памятью называется вызовом страниц по требованию. При его использовании страницы переносятся в основную память только в случае необходимости, но не заранее. В каждый момент времени существует набор страниц, которые использовались данной программой при последних к обращениях. Он называется рабочим множеством и обычно меняется очень медленно. Для освобождения места нужно отправить на диск некоторую другую страницу. 2 алгоритма : По одному из алгоритмов удаляется та страница, которая использовалась наиболее давно. LRU и алгоритм FIFO Он удаляет ту страницу, которая раньше всех загружалась, в независимости от давности использования. Если программа часто вызывает страницы –пробуксовка Обычно программа не занимает целое число страниц. Эта проблема называется внутренней фрагментацией(неиспользуемое пространство является внутренним по отношению к странице). +С другой стороны, при маленьком размере потребуется много страниц и большая таблица страниц. | Предикация Еще одна особенность архитектуры IA-64 - новый способ обработки условных переходов. На первый взгляд устранить условные переходы невозможно, поскольку в программах всегда много операторов if. Однако в архитектуре IA-64 используется специальная технология, названная предикацией, которая позволяет существенно сократить их число. Для понимания этой идеи рассмотрим пример, в котором показано условное выполнение команд. Оператор if: if (Rl == 0) R2 = R3;соответствующий код на ассемблере: CMP R1, 0 BNE L1 MOV R2, R3 L1: Использование условной команды: CMOVZ R2, R3, R1 (<>0 CMOVN) Таким образом можно транслировать полный оператор if без использования условных переходов. Таким образом, любой оператор if может быть скомпилирован в код, который устанавливает один из предикатных регистров в 1, если условие истинно, и в 0, если условие ложно. Одновременно с этим автоматически устанавливается другой предикатный регистр в обратное значение. При использовании предикации машинные команды, реализующие ветки then и else, будут помещаться в единый поток команд, часть из них - с использованием самого предиката, остальная часть - с использованием его обратного значения. Еще ряд особенностей IA-64 присутствует в использовании спекулятивной загрузки. Если команда LOAD спекулятивна и оказывается ложной (зря выполнена), то вместо выдачи исключения (exception), она сообщает, что ее выходной регистр недействителен и этим самым он ее отменяет. Компилятор по возможности должен перемещать команды LOAD в более ранние позиции относительно других команд, Он также вставляет команду CHECK в том месте, где требуется использовать значение определенного регистра. Если это значение уже есть, команда CHECK работает как NOP, и выполнение программы сразу продолжается дальше. Если значения в регистре еще нет, следующая команда простаивает. Резюме: Если все перечисленные нововведения работают нормально, то процессоры типа Merced действительно будут чрезвычайно мощными. Однако здесь можно высказать несколько предостережжений (очень сложно состав такой компил, отсутвие 64 разрядной сист и др) | Ловушку можно реализовать путем регулярной проверки, выполняемой микропрограммой (или аппаратным обеспечением). Если обнаружено переполнение, адрес ловушки загружается в счетчик команд. Таким образом, то, что является ловушкой на одном уровне, может находиться под контролем программы на более низком уровне. Проверка на уровне микропрограммы требует меньше времени, чем проверка под контролем пользовательской программы, Наиболее распространенные события, которые могут вызывать ловушки, - это переполнение и исчезновение значащих разрядов при операциях с плавающей точкой; переполнение при операциях с целыми числами; нарушения защиты; неопределяемый код операции; переполнение стека; попытка запустить несуществующее устройство ввода-вывода; попытка вызвать слово из ячейки с нечетным адресом и деление на 0. Прерывания - это изменения в потоке управления, производимые не действиями самой программы, а внешними факторами, и обычно связаны с процессом ввода-вывода. Например, программа может запустить передачу информации с диска, по окончании которой произойдет прерывание. Как и ловушка, прерывание останавливает работу программы и передает управление обработчику прерывания, который выполняет определенное действие. После завершения этого действия программа обработки прерывания возвращает управление прерванной программе. При возврате прежнее состояние всех внутренних регистров (то есть состояние, которое было до прерывания) должно быть восстановлено. Наличие возможности такого восстановления называется прозрачностью программы. Основное различие между ловушками и прерываниями в том, что ловушки синхронны с программой, а прерывания - асинхронны. Если программа перезапускается несколько раз с одними и теми же данными, ловушки каждый раз будут срабатывать в одном и том же месте. Моменты же прерываний могут меняться в зависимости от окружающих условий | |
46. Сегментация памяти По ряду причин удобнее использовать два или более отдельных виртуальных адресных пространств. Наличие нескольких адресных пространств позволяет эффективнее использовать память. С другой стороны, удобно помещать программу и данные в различные адресные пространства, т. к. страницы области программы обычно не модифицируются и их не нужно при удалении записывать на диск. Применение нескольких адресных пространств помогает также реализовать многозадачность. Несколько независимых виртуальных адресных пространств называются сегментами. Каждый сегмент состоит из линейной последовательности адресов. Таким образом, память становится двумерной. Чтобы определить адрес, программа должна выдавать номер сегмента и адрес внутри сегмента. Сегментацию можно реализовать одним из двух способов - подкачка и разбиение на страницы. Подкачка сегментов очень похожа на вызов страниц по требованию: сегменты загружаются и удаляются только в случае необходимости. В каждый момент в физической памяти находится некоторый набор сегментов. Если происходит обращение к отсутствующему сегменту, то он загружается в память. Если для него нет места в памяти, один или несколько сегментов нужно удалить, при необходимости записав на диск. Тен не менее сегментация существенно отличается от разбиения на страницы в тем, что размер страниц фиксирован, а сегментов - нет. В связи с этим возможна внешняя фрагментация (неиспользованное пространство попадает не в сегменты, а в промежутки между ними). Иногда внешнюю фрагментацию называют поклеточной разбивкой. Для ее устранения периодически или по необходимости может запускаться процесс дефрагментации (уплотнения памяти), что снижает общую производительность. Второй способ реализации - разделить каждый сегмент на страницы фиксированного размера и вызывать их, например, по требованию. В этом случае одна часть страниц сегмента может находиться в памяти, другая - на диске. Поскольку сегмент представляет собой линейное адресное пространство, все вышеизложенные средства разбиения на страницы применимы к любому сегменту. Единственное различие состоит в том, что каждый сегмент получает отдельную таблицу страниц. |
Учебной дисциплины «Архитектура ЭВМ и вычислительных систем» предназначена... Учебная дисциплина «Архитектура ЭВМ и вычислительных систем» является общепрофессиональной дисциплиной, формирующей базовый уровень... | Перечень тем для реферата Архитектура ЭВМ. Принцип Неймана. Основные устройства эвм, их назначение и характеристики | ||
«архитектура ЭВМ и систем» Новосибирск сгга содержание Эвм различных классов; параллельные системы понятие о многомашинных и многопроцессорных вычислительных системах; матричные и ассоциативные... | Учебно-методический комплекс дисциплины архитектура компьютера (Архитектура... Рындина Татьяна Николаевна, ст преподаватель кафедры Физики, информатики и информационных технологий | ||
Темы рефератов по дисциплине: “Архитектура эвм” | Реферат по курсу: Архитектура вс на тему: Архитектура квантовых компьютеров Квантовые компьютеры на основе молекул органических жидкостей с косвенным скалярным взаимодействием между ними и методов ядерного... | ||
Реферат по курсу: Архитектура вс на тему: Архитектура квантовых компьютеров Квантовые компьютеры на основе молекул органических жидкостей с косвенным скалярным взаимодействием между ними и методов ядерного... | Архитектура эвм, ос, вирусы В программа, выполняющая тестирование компьютерной системы после включения компьютера | ||
Конспект лекций по курсу "Микропроцессоры и микро-эвм в Персональной... Целью настоящего курса является дать понятие о микропроцессорах и однокристальных микро-эвм, области их применения, дать основы функционирования... | «Архитектура эвм» Цель дисциплины: формирование систематизированных знаний в области архитектуры компьютера, организации компьютерных систем, программирования... | ||
Техническое обеспечение кит реферат Сша и предназначалась для баллистических расчётов при стрельбе. Первая отечественная цифровая ЭВМ «мэсм» создана в 1950 г. Ход развития... | Архитектура ЭВМ и систем конспект лекций Обучающие: Учить детей понимать эмоциональное состояние героев постановки, придавать физическим действиям куклы максимум выразительности... | ||
Реферата. Список элементов библиографической записи Максимов, Н. В. Архитектура ЭВМ и вычислительных систем [Текст]: учеб для вузов / Н. В. Максимов, Т. Л. Партыка, И. И. Попов. — М.:... | Рабочая программа дисциплины «архитектура ЭВМ и вычислительных систем» (наименование дисциплины) Составлена в соответствии с государственными требованиями к минимуму содержания и уровню подготовки выпускников по специальности... | ||
Программа по формированию навыков безопасного поведения на дорогах... При этом на первый план выдвинулась концепция их взаимодействия. Так возникло принципиально новое понятие архитектура ЭВМ | “Внешние устройства персонального компьютера.” Пу обеспечить поступление в ЭВМ из окружающей среды программ и данных для обработки, а также выдачу результатов работы ЭВМ в виде,... |