1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ




Название1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ
страница11/13
Дата публикации21.03.2013
Размер1.25 Mb.
ТипДокументы
vbibl.ru > Информатика > Документы
1   ...   5   6   7   8   9   10   11   12   13

^ 42. Команды компьютера picoJava II
В этом компьютере реализован полный набор команд JVM (226 команд), а также 115 дополнительных команд, предназначенных для С/C++ и операционной системы. Мы рассмотрим в основном команды JVM, компилятор Java производит только эти команды. Как уже говорилось, архитектура команд JVM не содержит регистров, доступных пользо­вателю. Большинство команд JVM помещают слова в стек, оперируют ими и вытал­кивают слова из стека.

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

Команды JVM типизированы. Одну и ту же операцию с разными типами дан­ных выполняют разные команды. Например, ILOAD помещает в стек целое 32-битное число, а ALOAD помещает в стек 32-битный указатель. Такое стро­гое разделение кажется избыточным, посколь­ку в обоих случаях в стек передаются 32 бита памяти. Оно требуется для того, чтобы во время выполнения программы можно было проверить, не нарушены ли какие-либо ограничения

Перейдем к конкретным командам JVM. Первая из них - typeLOAD IND8.

Фактически это не одна команда, а шаблон для записи 4-х команд. Коман­ды JVM регулярны, поэтому вместо перечисления всех команд в ряде случаев можно сообщать правило для порождения команд. Существуют еще четыре команды загрузки typeALOAD, которые помещают в стек элемент массива. Во всех случаях в стек загружаются указатель на массив и индекс его элемента. Затем эти команды выталкивают индекс и указатель, производят вычисление и помещают в стек сам элемент. Размер элементов определяется по типу. Эти команды по­лучают индекс массива из стека, поэтому сама команда не содержит операнда.

Далее см таблицу

Обозначения:
IND8/16 – индекс локальной переменной;

CON8/16, D, ATYPE = константа;

type, х, у - I, L, F, D;

OFFSET16 – смещение для команд перехода.
Последние четыре команды этой группы также предназначены для работы с эле­ментами массива, но только специализированных типов. Они поддерживают byte, short (16 битов), char (символ - 16 битов) и pointer (указатель - 32 бита). (на обороте…)

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

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

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

Сопрограммы: существует различие между вызы­вающей и вызываемой процедурами. Пусть есть процедура A, кото­рая вызывает процедуру В. После полного выполнения В управление возвращается в А к точке вызова. Если процедура A вызы­вает процедуру В много раз, то процедура В каждый раз начинается с начала, а про­цедура А уже никогда больше с начала не начинается. Режим работы сопрограмм состоит в том, что A и B более или менее равноправны. Они попеременно вызывают друг друга. Управление каждый раз возвращается к точке последнего вызова. Когда процедура А передает управление процедуре В, оно переходит не к началу В (за исключением первого раза), а к тому месту, на котором произошел предыдущий вызов А.

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

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

Ловушки экономят время и память по сравнению с регулярной проверкой кода условия под контролем программы. (на обороте…)

^ 44. Обзор архитектуры Intel IA-64
новая 64-разрядная компьютерная архитектура, которая создавалась совместно компаниями Intel и Hewlett Packard. Первым процессором этого типа является Merced, имеющий высокую производитель­ность. архитектура IA-32 имеет много серьезных проблем, главной предпосылкой которых является длительность периода разработок с поддержкой обратной совместимости. Огромное количество транзисторов в процессорах Pentium предназначено для преобразова­ния CISC-команд в современные RISC-команды, разрешения конфликтов, прогнозирования переходов, исправления неправильных предсказаний и решения многих других задач подобного рода, при этом остается лишь незначительное число транзисторов на долю реальной работы, нужной пользователю. Поэтому компания Intel пришла к следующему выводу: нужно выбросить IA-32 и начать все заново.

Явный параллелизм

Merced - это двухрежимный процессор, который может выполнять как программы IA-32, так и программы IA-64 Это архитектура типа загрузка/сохранение с 64-битными адресами и регистрами. В ней имеется 64 регистра общего назначе­ния, доступных для программ IA-64 (и дополнительные регистры для программ IA-32). Все отдельные команды имеют фиксированный формат: код операции, два 6-битных поля для задания входных регистров, одно 6-битное поле для указания выходно­го регистра и еще одно дополнительное 6-битное поле. Большинство команд оперируют двумя регистровыми операндами-источниками и помещают результат в третий регистр-приемник. Имеется много функциональных блоков для параллельного выполне­ния операций. Новой здесь является концепция пучка связанных команд. Команды посту­пают на выполнение пучками - обычно группами по три штуки. Каждый 128-битный пучок содержит три 40-битные команды фиксированного формата и 8-битный шаблон. Пучки могут быть связаны вместе (при этом ис­пользуется бит конца пучка), поэтому в одном пучке может присутствовать и более трех команд. Формат содержит информацию о том, какие команды могут выпол­няться параллельно. При такой системе и при наличии большого числа регистров компилятор может выделять блоки команд и сообщать процессору о том, какие из них можно выполнять параллельно. Таким образом, компилятор должен переупо­рядочивать команды, проверять, нет ли взаимозависимостей, проверять доступ­ность функциональных блоков и т. д. вместо аппаратного обеспечения. Идея состоит в том, что работа упорядочивания и распределения RISC-команд пере­дается от аппаратного обеспечения компилятору. Эта технология названа EPIC

Есть несколько причин, по которым упорядочивание команд во время компиляции более эффективно, чем при выполнении. Во-первых, поскольку теперь основную работу выполняет ком­пилятор, аппаратное обеспечение можно упростить, используя миллионы транзисторов для других полезных функций Во-вторых, для любой программы распределение должно производиться только один раз (во время компиляции). В-третьих, можно использовать различное ПО (компиляторы) для разноплановой оптимизации программ. (на обороте…)

^ 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 Он удаляет ту страницу, которая раньше всех загружалась, в независимости от давности использования. Если программа часто вызывает страницы –пробуксовка

Обычно программа не занимает целое число страниц. Эта проблема называется внутренней фрагментацией(неисполь­зуемое пространство является внутренним по отношению к странице). +С другой стороны, при маленьком размере потребуется много страниц и большая таблица страниц.


1   ...   5   6   7   8   9   10   11   12   13

Похожие:

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconПараллельная обработка данных
Машины (эвм) разделяются на аналоговые(непрерывные) и дискретные машины, реализующие цифровые вычисления. Так как для обозначения...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconФизические основы элементной базы современных ЭВМ
Поколения ЭВМ и их элементная база. Роль полупроводниковых материалов в современных ЭВМ. Преимущества интегральных схем перед дискретными...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconАрхитектура ЭВМ связана с качествами машины, к-е влияют на ее взаимодействие...
Это обусловлено развитием техники. Зу ЭВМ имеет несколько уровней: 1 внутреннее зу – содержит информацию, обрабатываемую в нем в...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconМетодические указания по прохождению преддипломной практики и дипломному...
Методические указания к дипломному проектированию составлены и доц каф ЭВМ лебеденко Ю. И. и обсуждены на заседании кафедры ЭВМ факультета...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconКафедра «Электронных вычислительных машин» методические указания...
Методические указания к дипломному проектированию составлены и доц каф ЭВМ лебеденко Ю. И. и обсуждены на заседании кафедры ЭВМ факультета...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconПлан лекции: Виды и операции технического обслуживания Организация эксплуатации ЭВМ
Эвм силами и средствами персонала ЭВМ. При этом виде обслуживания предполагается проведение регламентных работ, контроль технического...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconПлан лекции: Задачи, решаемые вычислительными центрами Структура...
Создание вычислительных центров является способом повышения эффективности работы ЭВМ. Вычислительный центр объединяет технику различных...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconЛабораторная работа №1 по дисциплине «эксплуатацияэвми систем»
...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconКонтроль работы ЭВМ
Процесс определения технического состояния и поддержания работы ЭВМ включает 4 этапа

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconУрокам тема №1: этапы решения задач на ЭВМ. Алгоритмизация. Основные понятия. Блок-схемы
Программно дидактическое обеспечение: ЭВМ типа ibm. Turbo-Pascal Обучающие программы. Тесты

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
vbibl.ru
Главная страница