Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 437стр.doc
Скачиваний:
45
Добавлен:
15.06.2014
Размер:
9.54 Mб
Скачать

Команды управления виртуальной памятью .

Слайд 18

Printed with FinePrint- purchase atwww.fineprint.com

Тиы команд

Команды управления потоком команд

Вместо инкрементации счётчика команд команда загружает в счётчик адрес след . команды .

Три типа :

  • безусловные переходы

  • условные переходы (ветвления )

  • вызовы процедур и возврат из процедур

Слайд 19

Тиы команд

Команды управления потоком команд

call/return

jump

9%

■ Floating-point Average □ Integer Average

J75%

cond.branch

Е

Г82%

0% 25% 50% 75% 100%

Frequency of branch instructions

Printed with FinePrint- purchase atwww.fineprint.com

Слайд Т)

Тиы команд

Команды управления потоком команд

Not equal Equal

■ Floating-point Average □ Integer Average


Greater than or Equal

Greater than

Less than or equal

Less than

0% 10% 20% 3 0% 40% 50% Frequency of comparison types in branches

Слайд Ъ.

Тиы команд

Команды управления потоком команд

Сдной из форм команд условного перехода являются команды пропуска . Сни не содержат адрес перехода . Г(эи выполнении условия происходит пропуск следующей за ней команды .

Данный подход позволяет существенно уменьшить длину команд передачи данных .

Слайд 22

Printed with FinePrint- purchase atwww.fineprint.com

Тиы команд

Команды управления потоком команд

Указание адреса перехода через счётчик команд (PC - programcounter) -хорош для статических переходов.

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

These register indirect jumps are also useful for four other important features:

  1. case or switch statements found in most programming languages (which select amongone of several alternatives);

  2. virtual functions or methods in object-oriented languages like C++ or Java (which al­low different routines to be culled depending on the type of the argument);

  3. High order functions or function pointers in languages like С or C++ (which al­lows functions to be passed as arguments giving some of the flavor of object orientedprogramming), und

„ „ Слайд Ъ

Четвертый случаи ?

Тиы команд

Команды управления потоком команд

Floating-point average

12 3 4

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2С Bits of branch displacement

Wo -

пере -ходов

FIGURE 2.20 Branch distances in terms of number of instructions between the target and the branch Instruction. The most frequent branches In the Integer programs are to tar­gets that can be encoded In four to eight bits. This result tells us that short displacement fields

д т

Printed with FinePrint- purchase atwww.fineprint.com

Тиы команд

Name

Examples

How condition is tested

Ad vantages

Disadvantages

Condition code (CC)

80x86, ARM, PowerPC, SPARC, SuperH

Special hits are set hy ALL! operation*, pcmibly under program control.

Sometimes condition is set for free.

CC i4 extra state. Condition codes constrain the ordering of instructions since the-y piss information from one instruc­tion to a branch.

Condition register

Alpha, MIPS

Tests arbitrary register with the result of a comparison.

Simple.

Uses up a register.

Compare and branch

PA-RISC, VAX

Compare is part of the branch. Often compare is limited Ki subset

One instruction rather than (wo for a branch.

May be ton much wort per instruction for pipelined exe­cution.

FIGURE 2.21 ThG major methods for evaluating branch conditions, their advantages, and their disadvantages. Although condition codes can be set by ALU operations that are needed for other purposes, measurements on programs show that this rarely happens, Trie major implementation problems with condition codes arise when the condition code is set by a large or haphazardly chosen subset of the instructions, rather than being controlled by a bit in the instruction. Com­puters, with compare and branch often limit the set of compares and use a condition register for more complex compares. Often, different techniques are used for branches based on floating-point comparison versus those based on integer com­parison. This dichotomy is reasonable sinc9 the number of branches that depend on floating-point comparisons is much smaller than the number depending on integer comparisons,

Слайд 25

Тиы команд

Команды управления потоком команд Вызовы процедур и возврат из процедур

Процедура может быть вызвана в любой точке программы .

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

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

Команды должны обеспечиваться средствами сохранения текущего состояния счётчика команд и его восстановления .

Слайд 26

Printed with FinePrint- purchase atwww.fineprint.com

Тиы команд

Вызовы процедур и возврат из процедур Два варианта сохранения состояния :

Са8е г saving -вызывающая процедура сохраняет те регистры , которые ей понадобятся после вызова .

CaSee saving -вызываемая процедура сохраняет регистры , которые она хочет использовать .

Несмотря на предпочтительность второго варианта , в некоторых случаях используется первый . Большинство современных компиляторов производит cat r saving для любой переменной , которая может быть доступна во время вызова .

Слайд 27

Тиы и форматы опера ндов

Частота выполнения команд Intelx86 архитектуры

Rank

HIKXfi instruction

Integer average (% total executed)

[

load

22%

■>

conditional branch

20%

3

compare

16%

4

store

12%

5

add

8$

b

and

bck.

7

sub

5%

8

move regisier-register

4(л

9

call

Vk

10

return

19,

TotiH

96%

FIGURE 2.16 The top 10 instructions for the 80x86. Simple instructions dominate this list, and are responsible for 96% of the instructions executed. These percentages are the av­erage of the five SPECint92 programs.

I

Printed with FinePrint- purchase atwww.fineprint.com

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

Типовая команда в общем случае должна определять

  • подлежащую выполнению операцию

  • адреса исходных данных, над которыми выполняетсяоперация

  • адрес, го которому должен быть помещён результатоперации

Операционная часть Адресная часть

Выбор формата команд при создании ЕМ влияет на многие характеристики будущей машины .

Слайд 29

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

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

  • общее число различных команд

  • обшую длину команды

  • тип полей команды (фикс . или переменной длины ) июс длина

  • простота декодирования

  • адресуемость и способы адресации

  • стоимость оборудования для декодирования иисполнения команды

Слайд ЗЭ

Printed with FinePrint- purchase atwww.fineprint.com

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

Длина команды

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

Чем длиннее команда - тем медленнее её выборка . Длина должна быть кратна разрядности шины данных .

Различные способы адресации приводят к общему вид/ команды :

КОп

СА

Адресная часть

В большинстве ВЧ одновременно используются несколько различных форматов команд .

Слайд 31

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

Operilion &. no. of operands

Address

:";pi.-f. (ii.-r 1

Address

field i

Address

specifier n

Address

field (\

(a) Variable ie.Q..

VAX, Intel ййх№)

Operation

Address field 1

Address

field 1

Address

field 3

(Ь) Fixed (»(J. Alpha. ARM. M IPS РйЧЮГРО, SPARC

. SuparH]

Operation

Address spedllai

Address

field

Ope ration

Mdreee

specifier 1

Address

specifier 2

Address field

Operilion

Address specifier

Address

field 1

Address field 1

[cj Hybiid {eg. IBM3fl*V7O, WIPS16, Thumb. Tl TMS320CS4XJ

FIGURE 2,23 Three basic variations in instruction encoding: variable length, fixed Слшд 32

length, and hybrid.

Printed with FinePrint- purchase atwww.fineprint.com

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

Разрядность поля кода операции NKDn ~ общее количество операций ^коп ~ разрядность поля кода операции

^КОп ~~ ""^ vOg 2 '^КОп

Мнопэ операций -> большое поле кода операций -> малое адресное пространство

Для некоторых команд практикуют «урезание » на несколько битов адресной части . Например для увеличения различных вариантов пересылки данных

Слайд 33

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

Разрядность адресной части

Напрямую зависит от системы адресации .

Система адресации определяет число адресов в команде и принятые способы адресации .

RAi = int (log 2 Nj) Ra = int (log 2 Na)

R - разрядность поля способа адресации RAi - разрядность поля адресной части

Nj-количество ячеек памяти , к которой можно обратиться

Nw - количество способов адресации

Слайд 34

Printed with FinePrint- purchase atwww.fineprint.com

Количество адресов в команде

Четырёхадресный формат

Адресная часть

Код операции 1-й операнд 2-й операнд

Результат

Сп . команда

Трёхадресныи формат (аре. Фен Неймана ) - добавляются команды переходов

< Адресная часть >

Код операции

1-й операнд

2-й операнд

Результат

Насколько длинной может быть трёхадресная команда ? Адрес ячейки - 32 *3 + 8( кед операции )= 104 бита (13 байт )

Количество адресов в команде

Двухадресный формат (потеря операнда после операции )

< Адресная часть >

Код операции 1-й операнд 2-й операнд / Результат

Одноадресный формат (аккумуляторная архитектура )

Адресная часть >

Код операции 1-й операнд иш 2-й операнд

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 35

Слайд 36

Количество адресов в команде

Полутораадресный или регистровый формат О

<— Адресная часть — >

Код операции

Регистр

2-й операнд

Нульадресныи формат (отдельные команды )

Код операции

Слайд 37

Количество адресов в команде

Выбор адресности команд

Критерии :

  • ёмкость запоминающего устройства

  • время выполнения программы

  • эффективность использования ячеек памяти прихранении программы

С точки зрения увеличения ёмкости и эффективности использования памяти - наиболее оптимальным вариантом будут одноадресные команды .

Слайд 38

Printed with FinePrint- purchase atwww.fineprint.com

Количество адресов в команде

Время выполнения программы и адресность команд

Суммарные потери времени для трехадреснои команды :

  • выборка команды

  • выборка первого операнда

  • -//■ второго операнда

  • запись результата в память

Одноадресная команда :

  • выборка команды

  • выборка операнда

Слайд

Количество адресов в команде

Время выполнения программы и адресность команд

Одноадресная команда быстрее , ю для реализации трехадреснои команды нужно три одноадресных .

Определяющим при выборе является тип алгоритмов , на которые ориентирована ЕМ :

  • последовательные

  • параллельные

  • комбинированные

Слайд 4)

Printed with FinePrint- purchase atwww.fineprint.com

Количество адресов в команде

Время выполнения программы и адресность команд

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

В параллельных - результат пересылается в память Трёхадресные команды будут эффективнее .

В комбинированных -лучше будут одноадресные и полутороадресные .

Слайд 41

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

Один из центральных вопросов при проектировании ЕМ

Исполнительный адрес операнда (А^) - двоичный код номера

ячейки памяти , служащей источником /приёмником операнда (адрес на LuA или номер регистра )

Адресный кед командык) - двоичный код в адресном поле команды , из которого необходимо сформировать исполнительный адрес операнда .

В современных ЕМ как правило Аил иАкнэ совпадают , требуется соответствующее преобразование .

Способ адресации - это способ формирования исполнительного адреса го адресному коду команды .

Слюд 42

Printed with FinePrint- purchase atwww.fineprint.com

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

Один из центральных вопросов при проектировании ЕМ

Исполнительный адрес операнда (А^) - двоичный код номера ячейки памяти , служащей источником /приёмником операнда (адрес на LuA или номер регистра )

Адресный код командык) - двоичный код в адресном поле команды , из которого необходимо сформировать исполнительный адрес операнда .

В современных ЕМ как правило Аил иАкнэ совпадают , требуется соответствующее преобразование .

Способ адресации - это способ формирования исполнительного адреса го адресному коду команды .

Слайд 43

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

Способы адресации (го Цилькеру и Орлову):

  • Непосредственная

  • Прямая

  • Косвенная

  • Регистровая

  • Косвенная регистровая

  • Адресация го смещением

  • Относительная

  • Базовая регистровая

  • Индексная

  • Страничная

  • Блочная

  • Стековая

Слайд 44-

Printed with FinePrint- purchase atwww.fineprint.com

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

Addressing

ii'iiif.i

uple instruction

Meaning

When used

Register

Adri

Rl, КЗ

RegsiR4]«- Regs[E4] + Regs[ЙЭ]

When a value is in u register.

Immediate

Add

R4,#3

Еедн [R41 <-EegE [Я4 ] +3

Forttinsinnis.

Displacement

Acid

R4,100{Rl)

Regs {PA] «-Regs [R4] + Mem[100+Regs[Rl]|

Accessing local variables [+ iimulate-ч register indirea. dim.'! addressing itnides!

Register indirccl

Add

R4,[HI]

+ Mem(Regs(Rl]]

Accessing using a pointer or я

Indexed

Add

Rl, [Rl ■+ R2]

Regs [КЗ ] «-Веде [R3 ]

+Metn [кеде [El] +дедэ IS2 ] 1

SomttiniL-N usl-1j[ in airaj jdJrL-ssin^: ill = Ьам; of irffny; R2 = index amount.

Direct or

absolute

Add

Rl, U001)

Regs[Rl]*-Regs[Rl] + Mem[l(J01]

Sometimes useful foraccess-iiii; hUlit; data; address cun-stunl may nirtd ш Ьс luf^c.

Memory indirect

Rl(i»(K3)

Regs [Rl]*-Regs [Rl] + Mem [Mem [Regs [R3] 11

Ii"R3 is the address of a poimer ;j. then nwdt yields *p.

Autoiiid'emejil

Add

Rl, [H2J.4

RegsfRl] «-Regs[Rl] + Mem [aegs [R211 Еедн pK] i-Eegs JR2] +d

Useful for stepping iliriui^li иг-rays wilhiil a l<tof>. R2 points to Mart of array i uacli reference increments H2 by size of an element, d.

Antodccreiwai

Add

Rl,-fR2)

Regs[Й2] «-Леде[Е2]-d Eega [El] <-Еедв [Ell

AmodeemuBt^Bcreflwiit can

also act as push/pnp to imple­ment a slack.

Staled

Add

Rl,10Q[R2) [£3]

Regs [Ы ] <- Rega IRi] + Mem[100+Reg9[R2] + Яедн [НЗ] *d]

Used to index агкаул. Mj> be appiicd to any indexed ad-dnrssing moitc in some com­puters.

Слайд

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

Aiitoincrement Add Rld[R2]+ Regs I HI] e^Eega fRl]

UsefuJ for siepping thrnngh ar-

■+ Mem [Regs [E2 Л

rays within л loop, R2 prints to

R.egg [R2] 4-Eega [R2.] +d

start of array; each reference

increments R2 by sice of ал

element, d.

ALlodecremenl Add. Rl, - (E2} Rega fH2] +-Eega [R2] -d

Same use as uutoinc rernenl.

Rega fRl] «-Rega fRl]

AutMlecremem/increinem can

+ Mem [Rega [R2]]

alsn iici as push/pop to imple-

ment a s-tact.

ScaJed Add Rl.ioo [R2) [Щ] Rega [Rl] ^ Begs [Rl ] +

Used to index arrays. May he

Mem[lоо+RegpfR2 ]

applied to any indexed ad-

■t R^e [Ш ] +d]

dressing, mode in some com-

puters.

FIGURE 2.6 Selection of addressing modes with examples, meaning, and usage. !rv autoincrenerfdecrement and scaled addressing modes, ihe variable ddesignates the size of the data item being accessed (i.e., whether the instrudion is accessing 1 f 2, 4, or 8 bytes). These addressing modes are only useful wfien the elements being accessed are adjaeeni in memory. RISC computers use Displacem&nt addressing to simulate Regisieг Indirect with 0 for ihe address and simulate Direct addressing jsirg 0 in the base register. In our measurements, w& use- the first name shown for each mode. The ex- tu С used as. hardware descriptions are defiried an the ftexl page. al^& an page 144, and an the baek inside

Слайд 46

Printed with FinePrint- purchase atwww.fineprint.com

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

Memory indirect

sp«e

TaX

С ■_

Sca*Ki

<=pte

_.

"

IF

TaX

Hegistef Indirect

spice

mi

gee

^^

TeX

■43%

Immediate

spice вес

1 .''a

TeX

^

Displacement

spice

L L.

^H

KB. 20% 30% 40% StW. 60%

FIGURE 2.7 Summary of use of memory addressing modes (including immediales). These major addressing modes account for all but a few percent {0% to 3%) ol the memory accesses, Register modes, which are not counted, accouni for one-half oi Ihe operand refererrces. while memory addressing modes (including immediate) account lor I he olher half. Oi course, the compiler affects what addressing modes are used: see section 2.11. The memory indirect mode ол the VAX can use displacement, autoi recrement, or autodecrsment ю form ihe initial memory address; in these programs, almost all the memory indirect reierences use displacement mode as Ihe base. Displacement mode includes all displacement lengths (8, 16. and 32 bit). The PC-relative addressing modes, used almost exclusively for branches, are not inducted. Only ihe ad­dressing modes with an average frequency of over 1% are shown. The data are from a VAX using three SPEC89 programs.

Слайд 41

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

Метод адреезцкн

Пример юмащы

Скысл юмащы метод использовани я

Реестровая

АЙ НДКЗ

R4(R+i-R5 Требуемое значение в регистре

Непосредственная ни литеральная

АИ НД#3

R4(R4+3 Для задания констант

Базовая оо смещением

АИ R4,100(R1)

R4(R4+M[100+R1] Для обращения к локальным переменным

Косвенная реестровая

A±l rH(Rl)

K4(K4+M|.K1J Для обращения го указателю иги вьнисленному адресу

Индексная

R3/R1+R2)

K3(K3+MLK1+K^J Иногда полезна при работе с массивами : R1 - база ;R3 - индекс

Прямая ип абсолютная

т

R1,(1DOO)

R1(R1+M[1000] Иногда полезна для обращения к статическим данньм

Косвенная

АЯ R1,@(B3)

R1(R1+MLMLR3JJ Ecru R3-адрес указателя в то выбирается знамение го этому указателю

Автоинкрементная

А±1 R'1,{R2)+

R2[R2+d Полезна для прохода в цикле го массиву с шагом :R2 - начало массива В овдрм цикле R2 получает приращение d

Автодекрементная

AtJ R1,(R2)-

R2(B2-d Rl(Rl+M[R2] Аналогична предыдущей Обе могут использоваться для реализации стека

Базовая индексная оо смещением и масштабированием

R1,100(R2)[ R3]

RK Rl+M[100]fR2+R3*d Для индексации массивов

Слайд 43

Printed with FinePrint- purchase atwww.fineprint.com

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

Непосредственная - в адресном поле вместо адреса сам операнд .

Код операции

Непосредственный операнд

Операции сравнения , загрузки констант в регистры , арифм . операции .

Операнд - число в (обычно ) доп . коде .

Основная проблема - не каждый операнд можно передать непосредственно - адр . часть команды как правило меньше машинного слова .50 -8ЕР/о - до 8 бит, /0 -аСР/о - до 16 бит .

Слюй

Плюсы - малое время выполнения команды , экономия памяти .

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

Прямая - адресный код прямо указывает номер ячейки памяти операнда .

Память

код

операции

СА

Ак |

С>

[L

Операнд

nnr

тпта .

Аисп

= \.

Существенный недостаток - ограниченный размер адресного пространства .

Главный недостаток ?

Адрес в команде не может быть изменён в процессе вычислений -> ограничение на размещение программы в СВУ .

Слайд 33

Printed with FinePrint- purchase atwww.fineprint.com

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

Косвенная - ограниченное адресное поле указывает указывает адрес ячейки , содержащей полноразрядный адрес памяти операнда .

Память

Код операции


kkn . адрес операнда

А/т ^ Ас)


Операнд

Плюсы - можно изменять

адреса операндов в процессе вычислений .

Существенный недостаток -двухкратное обращение к памяти .

Слайд 51


Многоуровневая или каскадная косвенная адресация - иногда удобна для обработки многомерных массивов .

Printed with FinePrint- purchase atwww.fineprint.com

Структурная и функциональная организация ЭЕМ (ComputerOrganization and Design )

БГ7ИР кафедра

доцент Самая ь Дм три й Иванович

т.284 -2L -61, dmitry _samal @mail. iu ,

a.502 -5

Лекция 8

2007

План лекции

  1. Форматы команд

  2. Сравнение форматов команд Pentium^UltraSparc Ц,

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 2

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

Способы адресации (го Цилькеру и Орлову):

  • Непосредственная

  • Прямая

  • Косвенная

  • Регистровая

  • Косвенная регистровая

  • Адресация го смещением

  • Относительная

  • Базовая регистровая

  • Индексная

  • Страничная

  • Блочная

  • Стековая

Слайд 3

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

Непосредственная (Immediate addressing ) - в адресном поле вместо адреса сам операнд .

Код операции

Непосредственный операнд

Операции сравнения , загрузки констант в регистры , арифм . операции .

Операнд - число в (обычно ) доп . коде .

Основная проблема - не каждый операнд можно передать непосредственно - адр . часть команды как правило меньше машинного слова .50 -8ЕР/о - до 8 бит, /0 -аСР/о - до 16 бит .

Плюсы - малое время выполнения команды , экономия

памяти .

Слайд 4

Printed with FinePrint- purchase atwww.fineprint.com

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

Прямая (Directaddressing ) - адресный код прямо указывает номер ячейки памяти операнда .

Код операции

Память

Операнд

Плюсы - простота .

Существенный недостаток - ограниченный размер адресного пространства .

Главный недостаток ?

Адрес в команде не может быть изменён в процессе вычислений -> ограничение на размещение программы в СВУ .

Слайд 5

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

Косвенная (Indirectaddressing) - ограниченное адресное поле указывает указывает адрес ячейки , содержащей полноразрядный адрес памяти операнда .

Код операции

/т

Память

Ил . адрес операнда

Операнд

Плюсы - можно изменять

адреса операндов в процессе вычислений .

Существенный недостаток -двухкратное обращение к памяти .

Слайд 6


Многоуровневая или каскадная косвенная адресация - иногда удобна для обработки многомерных массивов .

Printed with FinePrint- purchase atwww.fineprint.com

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

Регистровая (Register) - адресное поле указывает на номер регистра , содержащего операнд .

Регистры

Код операции

Операнд

д — р

"исп ~ "^

ГЪ Добулевичу : Прямая регистровая

Прямая регистровая адресация

оо

01

Коп

АХ

ВХ

01 00

Слайд 7

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

Регистровая (Register) - адресное поле указывает на номер регистра , содержащего операнд .

Регистры

Код операции

Операнд

д — р

"исп ~ Pt

Плюсы - размер адресного поля 3-4 бита для 8-Б РСН Исключение обращений к памяти .

Минусы - мало РСН .

Слайд

Printed with FinePrint- purchase atwww.fineprint.com

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

Память

Косвенная регистровая (Register indirect) - адресное поле указывает на номер регистра , содержащего операнд .

Регистры

Код операции

Ил . адрес операнда

Операнд

= (R)

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

одно обращение к памяти меньше .

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

Косвенная регистровая (Register indirect) - адресное поле указывает на номер регистра , содержащего операнд .

Вот фрагмент, суммирующий в регистре ах ■элементы массива слов:

mov si. "начальный адрес массива"

mov ex, "количество элементов массива" ckl ясШ ах, [si]; прибавляем еледуюпшй элемент

ndd si, 2: модифицируем адрес в массиве

loop ckl: организуем цикл В ы д еле иные команды э кз ив л ентны Си- ф рагме нту sum — = * (р iMa s

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 9

Слайд 10

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

Адресация го смещением (Displacement) - исп . адрес формируется суммированием содержимого адресного поля команды с содержимым одного или нескольких регистров Ц1.

Код операции

(А

Ак

Память

1

Регистры

Составляющая адреса спераица

Операнд

Составляющая

адреса

cnepai-ща

Аисп ~ AK+(R1j+[(

Слайд 11

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

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

Регистры могут быть как FCH , так и специализированные - базовый и (или ) индексный .

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

Если РСН -то дополнительно ^{^Дз-..).

Дополнительный R (обычно FCH ) может появляться для указания масштабного коэффициента .

Наиболее общий вариант - два поля Ак и R.

Слайд 12

Printed with FinePrint- purchase atwww.fineprint.com

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

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

Код операции

СА

R2

Ак

|

Память

Ретстры

i—►

ГТ¥~тя r n atni 11 я a

адреса сперанща

—*

Операнд

г J, Составляющая

адреса спераица

'ил =(1

\) 1|АК

4f(R

2)]

А

Слюй В

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

Адресная го смещением : относительная - для получения исполнительного адреса поле Ак складывается с содержимым счётчика команд .

Код операции

СА Ак

Память

Счётчик команд (PnogramCounter)

Текущая кем -да

Адрес текущей команды

0)

= АК-КСК)

Операнд

Базируется на свойстве локальности - обращение к ячейкам в непосредственной близости от текущей . Плюсы - можно экономить на разрядности Ак/ программа перемещаема в памяти .

Printed with FinePrint- purchase atwww.fineprint.com

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

Адресная го смещением : базовая регистровая адресация - регистр , называемый базовым , содержит полноразрядный адрес , поле А - смещение .

Код операции

Память

регистр

Смещение

(ЕР)

Базовый

Базовый

адрес

3 -

Операнд

"исп

= А:-КЕР)

Базовый регистр - может быть задан не явно (если специальный регистр ).

Слайд 15

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

Адресная го смещением : базовая регистровая адресация Базовый регистр - может быть задан явно (если РСН ).

Код операции СА

Ас

Память

Смещение

ГОНУ

Бавовьй адрес

■+О

Операнд

= А:+(Ю

Способ используется для доступа к элементам массива .

Смещение - меньшая длина , чем полный адрес -> команда короткая .

Слайд 16

Printed with FinePrint- purchase atwww.fineprint.com

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

Адресная го смещением : базовая регистровая адресация

Percentage of 2 0% displacement

Floating-point average

3 4 5 6 7 3 9 101112131415 Number of bits of displacement

FIGURE 2.8 Displacement values are widely distributed. There are bath a large number of small values and a fair num­ber of Jorge values. The wide dietributton of displacement values is due to multiple storage areas for variables and Different displacements to access them (зев section 2.11} as well as the overaK addressing scheme the compiler uses. The x axis ts log£ of the Displacement; that is^the size of a field needed to represent the magnitude of the displacement. Zero on the x axis shows the percentage of displacements of value 0. The graph does not include the sign bit. which is heavily affected by the storage layout. Most displacements are positive, but a majority of the largest displacements (14+ bits) is negative. Sines this data was collected on a computer wilh 16-bi! displacements, it cannot tell us about longer displacements. These d am were taken о n the Alpha arc h itectu re wi ill f ul I opti m iiati on (see s ecti on 2.11) f or S РЕ С С Р U2 0 00, showi ng t he avsrage of integer programs (Cl NT2000) and the average of floating-point programs (CFP2000).

йй V

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

Адресная го смещением : индексная адресация - поле Ас содержит адрес памяти , регистр (явный /неявный ) -смещение .

Код операции

СА

К.

Память

Базовый

адрес

(№)

Индексный регистр

Индекс

Ь—1

Операнд

"исп =

№)

Разрядность Ас - больше чем в предыдущем варианте . Вычисления аналогичны .

Слайд 18

Printed with FinePrint- purchase atwww.fineprint.com

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

Адресная го смещением : индексная адресация - поле Ас содержит адрес памяти , регистр (явный ) - смещение .

Код операции СА R Ас

Память

Базовый адрес

ГОНУ

Индекс

■+О

Операнд

= А:+(Ю

Удобный механизм для организации итеративных вычислений .

Слайд 19

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

Адресная го смещением : индексная адресация

Пример : Дан массив чисел (последовательно в памяти ), начиная с адреса N. Необходимо увеличить на 1 вое элементы массива .

Выборка всех элементов , инкрементация и возврат обратно в память . Адреса - N,N+l,N+2 ...

Значение N - из Ас, а индексный регистр - 0,+ 1,+ 2 ...

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

Почему нельзя сделать то ме самое с помощью

базовой регистровой ?

Слайд Т)

Printed with FinePrint- purchase atwww.fineprint.com

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

Адресная го смещением : индексная адресация

Если индексный регистр - то неявное автоиндексирование называется автоинкрементная адресация (autoincrement).

Am = AC+(R),R< - (R)+l R< - (R)+l ^ = Ac+(R)f

Постинкрементное автоиндексирование Преинкрементное а егоиндексирование

Автодекрементная адресация (autodecrement).

Аил = Ac+(R)fR< - (R) -1 Постдекрементное а егоиндексирование

R< - (R) -1 , Am = AC+(R), Предекрементное а егоиндексирование

Индексная адресация с масштабированием и смещением - содержимое инд . регистра умножается на масш . коэф . и суммируется с Ас. Коэф . = 1,2,4,8 (Intel).

Слюй 21

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

Страничная адресация

Разбиение адресного пространства на страницы ■

Начальный адрес страницы - база .

Старшая часть адреса страницы - в спец . регистре (RAC)

Адресный код - смещение внутри страницы ■

Код операции

СА

Память

Регистр адреса (Р/С )

Смещение

от начала AEHi ххх(ххх = 000)

Старшая часть адреса страницы

адреса страницы

в_о

Операнд

AE = AEHi||A

BJD

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 22

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

Блочная адресация

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

Блок обычно описывается - адрес первой или последней ячейки памяти + количество элементов блока (в байтах либо ячейках).

Может быть так же использован специальный признак «конец блока », идущий за последним элементом блока .

Удобен для работы с внешними 3/, операциях с векторами .

Слайд Ъ

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

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

Используется в ЕМ ю стековой архитектурой .

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

  1. Прл выполнении команд стекового доступа :"поместить в стек " push или "извлечь из стека " pop .

  2. Г)и выполнении команды вызова подпрограммы ипри возврате из нее .

  3. Г)и входе в прерывание и возврате из него .

Слайд Ъ

Printed with FinePrint- purchase atwww.fineprint.com

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

Положение стека в адресуемой памяти определяется содержимым указателя стека .

Указатель стека программно доступен , программист может задать его значение обычной командой пересылки : movsp ,#1000h - задает положение стека , начиная с адреса lOOOh.

Содержимое указателя стека используется как адрес операнда -приемника при записи или как адрес операнда - источника при считывании из стека .

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

Обращение к стеку - косвенно -регистров ая адресаци я через указатель стека с автоиндексацией .

Слжд 25

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

Стек может быть организован го разному :

  1. Направление роста стека . Если при записи в стек,содержимое указателя стека автоматическиувеличивается (и, соответственно , при считыванииавтоматически уменьшается ), то говорят, что стекрастет в сторону увеличения адресов . Впротивоположном случае говорят, что стек растет всторону уменьшения адресов .

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

Printed with FinePrint- purchase atwww.fineprint.com

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

Стек может быть организован го разному :

Запись в стек push data

Чтение из стека pop data

Стек растет в сторону

Указтель стека пска-зыв ает на ячейку:

mov [sp]+,data

mov data, [sp]

увеличения адресов

первую свободную

mov +(sp],data

mov data, [sp]-

увеличения адресов

последнюю занятую

mov (spj-.data

mov data, +fspj

уменьшения адресов

первую свободную

mov [spj.Jatii

mov data, [sp]+

уменьшения адресов

последнюю занятую

Слайд 27

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

Addressing nwulr

Example instruainn

Meaning

W ben used

Roister Add

Регистровая

I mined iaiL"


Add R4,#3

Regs [H4 ] <-Regs (R4 ] + Regs[H31

Regs [R41 ^Regs \R4 ] +1,

When a value is in a register.

Нелосредственая

I3ispl,icemenl Adri R4,1QQ(K1)

Qj смещением

Regs [R4] «-Regs [R4]

+ Mem[100+Rsgs[Rl] I

Accessing local variables 1+ simulates regisier indirect, direct addicssios modes)

Register indirect Add R4, {SI)

Регистровая косвенная

Add R3, {SX + R2)

Индексная

Regs [H4] ^Begs [E4]

■t-MeBt[Hegs [HI] гКеда {S211

Accessing имя;.1 з pointer or a

Sometimes u.sef jl in arraj

Director Add Rl, U001)

Прямая

Regs I El ] *-Regs [ El ]

+ Mem[lQ0l]

Sometimes useful foraccess-iiie ssatii; имя: address cai\-slanl may lured Lo be large.

Memory indirect AddRl,S(H3)

Ко всеиная

Regs [R1J *- Regs [Rl]

>■ Kem [Mem [Regs [R3] ]

If R3 is ihe address of n p, (hen mode yields *p.

AutniiiLTtmenl Add HI, [R2) +

Автоинкрементная

мет [aags [H211

Uj«ful for sleppins lliroj^h nr-iis. within a Imp, R2 poiriLn 111 litart ai агтау: tacli rufcrcnoe

increments H2 by size of an , d.

Auiudecreiuistit Add R1,-{R2)

Автодекрементная

Mem [Regs [H2] ]

Sjiiil-

АЛ(х1есп:[П(;л1Ушс:№1псл1 can also я/л as push/pop In implc-menl a stack.

Scaled Add Rl,10rj[R2) [R3I

Индексная cd смещением и масштабированием

Regs [fill«- Regs [hi] -Mem [10 o+Reg a [R2] + Regs [ИЗ] *d]

Used to imk'x annys. May be

applied lu алу iittk'xtd ad-dгlc^siпg mode in some ecmi-pntere.

Сяаид

Printed with FinePrint- purchase atwww.fineprint.com

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

Метод адресзцкн

Пример гашздцы

СКЫСЛ ЮМЭДО1

нявд испол>зованм я

Реестровая

АЙ R4;R3

R4 <-R4+R 3 Требуемое значение в регистре

Непосредственная ни литеральная

ftfl R4,*3

R4 <- R4+3 Для задания констант

Базовая оо смещением

ftfl R4,100(R1)

R4 <-R4+M[10Ch-R1] Для обращения к локальным переменным

Косвенная реестровая

A±l R4,(R1)

R4 <-R4+M[Rl] Для обращения га указателю или в ьи не ленному адресу

Индексная

/ttl R3,(R1+R2)

R3 <-R3+M[R1+R2] Иногда полезна при раВоте с массивами :R1 - база ,R3 - индекс

Прямая игц абсолютная

A±l R1,(1DOO)

Rl <-Rl+M[1000] Иногда полезна дтя обращения к статическим данным

Косвенная

АЯ R1,@(R3)

Rl <-R1+M[M[R3]] Ecru R3 -адрес указателя р, то выВирается значение го этому указателю

Автоинкрементная

A±l R1;(R2 )+

Rl <-Rl+M[U2] R2 <- R2+d Полезна для прохода в цикле го массиву с шагом :R2 - начало массива В кавдрм цикле R2 получает приращение d

Автодекрементная

ftfl R1,-(R2)

R2 <- F2-d Rl <- R1+M[R2] Аналогична предьдущей Обе могут использоваться для реализации стека

Индексная ш смещением и масштабированием

AddRl, 1DO(R2)[R3]

Rl<-Rl+M[100]fR2+R3*d Для индексации массивов

Слайд 29

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

Autoinxrement

Add Rlr (R2)

Regs [Rl] ^Regs [Rl] + Mfim[Regs[R [B.2] ^Regs [R2]

Useful foistepping tnrougli ar-rays with in a loop. R2 points ro stait of array: each reference by &ize of an t, d.

Auiodeciemeni

Add Rlr-<R2>

Regs [R2] ^Regs [R£] -d Rggs [B.1] ^Regs [Rl]

+■ Mem [Regs [R2] ]

Same use as a.utoincremein. Autodecrement/increment can also- att n& push/pop to- imple­ment я stick.

Scaled

Add Rlr10C4R2) [R3] Regs [Rl] «- Regs [Rl] +

MGm[ino+RGgs[R2] + Regs [R3 ] *<S]

Used ro indei arrays. May be

applied to any indexed ad-dressin^ mode in some com-nutera.

d- варьируется от размера данных (1,2,4,8 байт), useful только гри последовательном размещении в памяти .

REC процессоры используют адресацию со смещением для эмуляции регистровой косвенной р в поле адреса ) и эмулируют прямую адресацию (с 0 в базовом регистре ).

Слайд ЗЭ

Printed with FinePrint- purchase atwww.fineprint.com

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

Данные для DECVAX :

TeX

Мэтогу indirect spice get

TeX

Scaled spies

164

gee

H №

TeX

Register indirect

Spi£»

gee

3%

■ 11%

TeX

Immediate

spine

gec

TeX

Displaesmgnt

spice

gee

^^

6Ob


50%

Fneq uericy of the add ness in a mode

REC архитектура - преимущественный способ адресации : регистровая . Для аккумуляторной архитектуры главные способы адресации - прямая и непосредственная . ^ 31

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

Данные для Intel процессоров :

Тип адресации

GCC

Spice

Косвенно- регистровая [Ъх]

10%

3%

Индексная с масштабированием [2*еЪх+5]

20%

33%

Прямая [123]

19%

51%

Базово-регистровая [Ьр+5]

4S%

14%

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

Слайд 32

Printed with FinePrint- purchase atwww.fineprint.com

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

Данные для Intel процессоров :

Тип адресации

GCC

Spice

Косвенно- регистровая [Ъх]

10%

3%

Индексная с масштабированием [2*еЪх+5]

20%

33%

Прямая [123]

19%

51%

Базово-регистровая [Ьр+5]

4S%

14%

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

Слайд

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

Система операций - список операций , выполняемый непосредственно техн . средствами ЕМ .

Выбор системы операций :

  • на основе <щ . Аналогов

  • на основе статистики использования отдельных команд(с использованием тестов ).

  • с ориентацией на языки В/ (Wang,HP, IBM,Tektronix ).

  • на основе формализации и систематизации :

Постановка задачи Q-


Подтверждение


Решение (теоремы

-G

! Формулировка задачи

Тестирование (моделирование )

Слайд 34-

Printed with FinePrint- purchase atwww.fineprint.com

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

Выбор системы операций :

  • на базе метода группировки (все операции го группам )

  • на основе восходящей совместимости (включениекоманд В^1 старого поколения ).

  • с учётом требований пользователя .

  • с помощью метода условной интерпретации - учётсоотношения «стоимость /производительность »интерпретации отдельных команд либо ик реализацииаппаратно .

Слайд 35

Bg -endian \s Little endian

Little endian - младший байт го младшему адресу

Intel (e-9-/ Base Address+0 ByteO, Base Address+1 Bytel, BaseAddress+2Byte2, BaseAddress+3 Byte3 )

Big endian - старший байт го младшему адресу (E.g.,Base Address+O Byte3, Base Address+1 Byte2, Base

Address+2 Bytel, BaseAddress+3 ByteO ) Motorola,

Что лучше ?

- Printing,Binary -b -decimalconversion,sign -testing,multipleprecision math routines

Различные форматы файлов используют различныйпорядок :

  • Big Endian - Photoshop, TCP/IP sockets, JPEG, etc.

  • Little Endian - BMP, GIF, RTF, etc.

Printed with FinePrint- purchase atwww.fineprint.com

Формат команд Pentiumll - Pentium4

Bits

Код Состояние Префикс операции Bytes о-в 1-2 0-1

0-1

Смещение

0-4

Непосредственный операнд

0-4

] PREFIX | OPCODE | MODE

SIB |

DISPLACEMENT

| IMMEDIATE

6 1 1

Bits 2

3 3

INSTRUCTION | |

|SCALE|

INDEX BASE

"I

t ' Which operand is source?

Byte/word

Масштаб , индекс , база

Bits 2 3

3

] MOD | REG

| R/M |

Состояние

В первых Intel OpCode - 1 байт .

Префиксный байт - дрп . код операции , который ставится

перед командой , для изменения её действия .

QxFF - код смены алфавита - разрешает второй байт

команды . ^ 37

Формат команд Pentiumll - Pentium4

Bits

Код Состояние

Непосредственный

Префикс операции Bytes 0-5 1-2

0- 1

0- 1

Смещение

0-4

операнд

0-4

| PREFIX | OPCODE |

MODE

I SIB |

DISPLACEMENT |

IMMEDIATE

6 1 1

Bits 2

3 3

INSTRUCTION | |

|SCALE|

INDEX BASE |

t '

Which operand is source? Byte/word

Масштаб , индекс , база

Bits

I MOO | REG

R/M

Состояние

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

Слайд 33

Printed with FinePrint- purchase atwww.fineprint.com

Формат команд Pentiumll - Pentium4

Код СостояниеПрефикс операцииBytes 0-5 1-2 0-1

о-1

Смещение

0-4

Непосредственный операнд

0-4

I PREFIX | OPCODE | MODE | SIB | DISPLACEMENT

IMMEDIATE

Bits

6

1 1

Bits

INSTRUCTION

_

|SCALE| INDEX | BASE |

t

Which operand is source? Адрес - в команде -

Byte/word Вызывается

ИСТОЧНИК ИП1

Bits


п. назначения

Масштаб , индекс , база

байт иш слово

1 MOD | REG I R/M j

Состояние

Часто за Opcode следует байт обобщения об операнде .

RiM - часто исп . для расширения OpCode . Mode - 2 бита =4 способа

обращения к операндам , один из ник всегда регистр .

REG - комбинации регистров EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP.

В некоторых командах - дел . байт S3B - дел . спецификация

(компромисс м/у обратной совм . и добавл . новых возможностей

г

Bits

-— -16- —-

- в—

-в—-

Основные

АН

А X

AL

ЕАХ ЕВХ

1 вн

-В X-

1

BL

регистры

СН

С X-

1

CL

ЕСХ EDX

DH

-D X-1

DL

Pentium4

ESI

EDI

ЕВР

ESP СЗ

SS

ш

DS

ES

FS

GS EIP EFLAGS

Сяюд 4)

Printed with FinePrint- purchase atwww.fineprint.com

The UltraSPARC III Instruction Formats

Format 1a

1b

The original SPARC instruction formats.

Вых . регистр 5


В< . регистр 2 5


регистр 1 СП с плав .

ТОЧКОЙ1 8


и

5

DEST

OPCODE

SRC1

FP-OP

SRC2


3 Register

DEST

OPCODE

SRC1 1 IMMEDIATE CONSTANT Immediate

2


22

DEST

OP

IMMEDIATE CONSTANT

SETHI

22


2 1

A

COND

OP

PC-RELATIVE DISPLACEMENT

30


Условие

BRANCH

PC-RELATIVE DISPLACEMENT

CALL

Смещение относительно счетчика команд

Для включения в 32 -битную команду 32 битной конст . - SETHI команда - задание в два этапа (22 бита +10 бит следующей командой )

The 8051 Instruction Formats

Слайд 41

Format

Opcode

Opcode

Reg

Opcode

Operand

Opcode

11-Bit address

Opcode

16-Bit address

Opcode

Operand 1

Operand 2

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 42

Orthogonality of Opcodes and AddressmgMod€s

Bits 8

1

5

5

5 8

1

OPCODE

0

DEST

SRC1

SRC2

2

OPCODE

1

DEST

SRC1

OFFSET

3

OPCODE

OFFSET

A simple design for the instruction formats of a three addressmachine. Идеально - регулярная структура формата команд и и< число должно ->min.

Все регистры должны быть доступны для всех регистров , включая FP (указатель фрейма ),SP (указатель стека ) и PC (счётчик команд ).

Слайд

Orthogonality of Opcodes and Addressing Modes(2)

Bits

3

3 5

4

3

5

4

1

OPCODE

[MODE] REG

|_ OFFSET

[mode[

REG

1 с

)FFSE

т |

1

(Optional 32-bit

direct address

or offset)

(Optional 32-bit

direct address

or offset)

1 1

A simple design for the instruction formats of a two -address machine. EM должна прибавлять слово из памяти к регистру , регистр к слову , складывать два регистра либо два слова из памяти .

Пока доступ к памяти дорог - этот подход не популярен . PTJP -11 и W - сходные системы , были популярны .

Проблема - при прямой адресации - большое кол . бит для адреса (96) -> 3 цикла шины (команда +2 операнда ).

Для любого REC - тоже 96 бит команда + 4 цикла .

CsgSd

Printed with FinePrint- purchase atwww.fineprint.com

The Pentium 4 Addressing Modes

MOD

R/M

00

01

10

11

000

M[EAX]

M[EAX + 0FFSET8]

M[EAX + OFFSET32]

EAXorAL

001

M[ECX]

M[ECX + OFFSETS]

M[ECX + OFFSET32]

ECX or CL

010

M[EDX]

M[EDX + OFFSETS]

M[EDX + OFFSET32]

EDX or DL

011

M[EBX]

M[EBX + OFFSETS]

M[EBX + OFFSET32]

EBXorBL

100

SIB

SIB with OFFSETS

SIB with OFFSET32

ESP or AH

101

Direct

M[EBP + OFFSETS]

M[EBP + OFFSET32]

EBPorCH

110

M[ESI]

M[ESI + OFFSETS]

M[ESI + OFFSET32]

ESIorDH

111

M[EDI]

M[EDI + OFFSETS]

M[EDI + OFFSET32]

EDIorBH

M[x] is the memory word at x.

Слайд

The Pentium 4 Addressing Modes

Accessto

EBP

Stack frame

Other

local

variables

a[0]

a [2]

EBP+ 8 EBP+ 12 EBP+ 16

/inEAX

SIB Mode references M[4 * EAX + EBP + 8]

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 46

Discussion of Addressing Modes

A comparison of addressing modes.

Addressing mode

Pentium 4

UltraSPARC III

8051

Accumulator

X

Immediate

X

X

X

Direct

X

X

Register

X

X

X

Register indirect

X

X

X

Indexed

x

X

Based-indexed

X

Stack

Слайд 41

Printed with FinePrint- purchase atwww.fineprint.com

Структурная и функциональная организация ЭЕМ (ComputerOrganization and Design )

БГ7ИР кафедра

доцент Самая ь Дм три й Иванович

т.284 -2L -61, dmitry _samal @mail. iu ,

a.502 -5

Лекция 9

2007

План лекции

1. 2. 3.

4. 5. 6.

Форматы команд Pentium4 Регистры Pentium4

Сравнение форматов команд Pentium4, UltraSparc I

Параллелизм Проблема с Pentiumll IV-64

Printed with FinePrint- purchase atwww.fineprint.com

Слайд 2

Формат команд Pentiumll - Pentium4

Код СостояниеПрефикс операцииBytes 0-5 1-2 0-1

о-1

Смещение

0-4

Непосредственный операнд

0-4

I PREFIX | OPCODE | MODE | SIB | DISPLACEMENT

IMMEDIATE

Bits

6

1 1

Bits

INSTRUCTION

_

|SCALE| INDEX | BASE |

t

Which operand is source? Адрес - в команде -

Byte/word Вызывается

ИСТОЧНИК ИП1

Bits


п. назначения

Масштаб , индекс , база

байт иш слово

1 MOD | REG I R/M j

Состояние

Часто за Opcode следует байт обобщения об операнде .

RiM - часто исп . для расширения OpCode . Mode - 2 бита =4 способа

обращения к операндам , один из ник всегда регистр .

REG - комбинации регистров EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP.

В некоторых командах - дел . байт S3B - дел . спецификация

(компромисс м/у обратной совм . и добавл . новых возможностей \°"^ 3

The Pentium 4 Addressing Modes

MOD

R/M

00

01

10

11

000

M[EAX]

M[EAX + 0FFSET8]

M[EAX + OFFSET32]

EAXorAL

001

M[ECX]

M[ECX + OFFSETS]

M[ECX + OFFSET32]

ECX or CL

010

M[EDX]

M[EDX + OFFSETS]

M[EDX + OFFSET32]

EDX or DL

011

M[EBX]

M[EBX + OFFSETS]

M[EBX + OFFSET32]

EBXorBL

100

SIB

SIB with OFFSETS

SIB with OFFSET32

ESP or AH

101

Direct

M[EBP + 0FFSET8]

M[EBP + OFFSET32]

EBPorCH

110

M[ESI]

M[ESI + OFFSETS]

M[ESI + OFFSET32]

ESIorDH

111

M[EDI]

M[EDI + OFFSETS]

M[EDI + OFFSET32]

EDIorBH

M[ x] is the memory word at x. Г(эи MOD=11 предоставляется выбор из двух регистров . Для команд со словами берется первый вариант , для команд с байтами — второй .

Слайд 4

Printed with FinePrint- purchase atwww.fineprint.com

The Pentium 4 Addressing Modes

MOD

R/M

00

01

10

11

100

SIB

SIB with OFFSETS

SIB with OFFSET32

ESP or AH

Иногда - дрп . байт SB . Байт SB определяет масштабный коэффициент и деа регистра . Когда присутствует байт SIB, адрес операнда вычисляется путем умножения индексного регистра на 1,2,4 иш 8 (зависит от SCALE), прибавлением его к базовому регистру и, наконец , возможным прибавлением 8- или 32 -битного смещения , в зависимости от значения поля MOD. Практически вое регистры могут использоваться и в качестве индекса , и в качестве базы . Форматы SB могут пригодиться для обращения к элементам массива .

Слюй 5

The Pentium 4 Addressing Modes

EBP

Stack frame

Other

local

variables

a[0]

a [2]

EBP + 8 EBP+ 12 EBP+ 16

/ in EAX

SIB Mode references M[4 * EAX + EBP + 8]

Пример Java : for (i=0; i<n; i++)a[i]=0 ; где а — массив 4-

байтных целых чисел . ЕЗР -> указатель на базу стекового фрейма с лек . переменными и массивами , i -> в E0X . Доступ к элементу а[Ц - формат SIB, в котором адрес операнда равен сумме 4хЕАХ , ШР и 8.

Printed with FinePrint- purchase atwww.fineprint.com

Основные

регистры Pentium4

-16-

Bits —

АН

х-

AL

:

X-

1 вн

BL '

X

сн

CL

-D

х-

DH

DL

ЕАХ ЕВХ ЁСХ EDX

ESI EDI ЁВР ESP

CS SS DS ES FS GS

EIP

EFLAGS Сядай 7

Дл . регистры Pentium4

  • Управляющие регистры

  • Регистры управленияпамятью

  • Отладочные регистры

  • Регистры ММХ

  • Ретстры

сегментированной

Printed with FinePrint- purchase atwww.fineprint.com

Слайд

Дрп . регистры Pentium4

Управляющие регистры

Четыре 32 -разрядных регистра управления СЮ -CR4 (CR1 - зарезервирован ), в которых хранятся флаги состояния процессора или глобальные флат . Вместе с регистрами системных адресов эти регистры хранят информацию о состоянии процессора , которое влияет на все задачи в системе . Системным программистам регистры управления доступны только через варианты команды MOV, которые позволяют и< загружать или сохранять в регистрах общего назначения .

Назначения регистров : CRO,CR4 - управляющие .CR1 -резерв .CR2 - линейный адрес страничной ошибки .CR3 - база каталога таблиц страниц .

Слюй 9

Дл . регистры Pentium4

Управляющие регистры

10 9В765И321 О

Re.served (Ml to 0)

р с

Е

р

Q

Е

м С

Е

Р Е

Р

:,

D

L

' D

Р V

ч м

Е

CR4

OSXMMEXCPT-OSFXSR-

31


32


12 11

Page-Directory Base

р

■;

D

[ W

т

CR3

i PDER)

P a oe - Fa u 1 L i near Add res s

GR2

CR1

31 3029 Э0


Л 3 2 1 О


>


1S 18 1? 16 15

p

G

С 0

и

м

Л1

<

'J

Е

1 шн |

т ■г.

Е Г.1

ы р

р

Е

Reserved

CR0

Слайд 10

Printed with FinePrint- purchase atwww.fineprint.com

Дл . регистры Pentium4

Регистры управления сегментированной памятью

47

39

31 23

\5 7

0

32-Вмтным линейный 6аю1ым адрес

| 19-битный предел

Ц GDTTL

Э2-ЁНТНЫЙ ЛННеЙНЫЙ tJK'lHM JflpEC

| 19-битный предел

Ц IDTR

1:5

7 Q

селектор

LDTR

32-битный линейный басен ый адрее

II

16-битный предел

|| атрибуты

селектор

Task Register

32-битный линейный бас<л ый адрес

II

16-битный предел

|| .атрибуты

Программно-недоступные поли (»агружлк)тс,1 эстшрлэтицнссм)

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

Слюй 11

Дл . регистры Pentium4

Регистры управления сегментированной памятью

47

39

31 23

5 7

0

32-битный линейный 6аю1ЫЙ адрес

1

19-битный предел

] GDTTL

32-бнтный линейный блошй .адрес

|

19-битный предел

] IDTR

1:5

7 Q

селектор

LDTR

32-битный линейный баэспый адрес

II

1в-битный предел |

атрибуты

селектор

Task Register

32-битный линейный басошй адрее

Г

16-битный предел |

атрибуты

Программн*

-недоступные пол*

(сагру*аттс,1 а: том эти и и с с и)

Регистр глобальной дескрипторнои таблицы (GDTR). Содержит 32 -разрядный линейный адрес и 16 -разрядную фаницу глобальной дескрипторнои таблицы ■

Регистр локальной дескрипторнои таблицы (LDTR). Содержит 16 -разрядный селектор локальной дескрипторнои таблицы ■

Слайд 12

Printed with FinePrint- purchase atwww.fineprint.com

Дл . регистры Pentium4

Регистры управления сегментированной памятью

47

39

31 23

5 7

0

32-ВМТНЫМ ЛИНЕЙНЫЙ 6.ЭЮ1ЫМ ЛДРЙС

1

10-битный предел

] GDTTL

Э2-ЁНТНЫН ЛИНЕЙНЫЙ tJK'lHM ЛДрбС

|

10-битный предел

] IDTR

1:5

7 Q

селектор

LDTR

32-битный линейный Еаэспын адрес

II

16-битный предел |

атрибуты

селектор

Task Register

32-битный линейный бас<л ый адрес

Г

16-битный предел |

атрибуты

Програннн(

-недоступные поли

(сагруисаттс.1 эсттрлатицнссм)

Регистр таблицы дескрипторов прерываний (IDTR). Указывает на таблицу точек входа в программы обработки прерываний . Регистр содержит 32 -разрядный линейный базовый адрес и 16 -разрядный предел таблицы .

Слюй В


Регистр задачи (TR). Указывает на информацию , необходимую ЦП для определения текущей задачи .

Дрп . регистры Pentium4

Отладочные регистры

Шесть доступных регистров отладки (DRD -DR3, DR6,

DR7). Они устанавливают точки останова го данным и

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

без модификации сегментов программ .

Регистры DRD -DR3 предназначены для хранения четырех

линейных адресов точек останова . Регистры DR4 и DR5

зарезервированы . Формат регистров DR6 и DR7:

■51 j'j Zr- -с _'■ 26 -л2123 22 21 20

IB ia

1716

1b

1J

1-J

12 11 10

У

и

i

■j

b

1

a

1

и

LEN 3

3

LEM £

RjW

г

LEN 1

R.W 1

LEM 0

RjW 0

0 0

G

D

0 0 1

i

ГПГ-

3

L 3

G

2

L

г

■л 1

L 1

G 0

L

и

31 in 161413 is n ig а в 7 в fi а а г 1 п

Reserved (settoi)

Б

T

Б S

E D

0 11111111

в

3

В

Б 1

Е-0

DR7

DFib

Printed with FinePrint - purchase atwww.fineprint.com

Слайд П

Дрп . регистры Pentium4

Регистры

Восемь регистров МЧХ 0-МЧХ 7 - младшие биты стека 30 -битных регистров FRJ (т.е. физически для реализации технологии МЧХ используется блок FRJ )

79

64

t.\

56 55 48

i- In

У9 32

31 24

23 16

IS 8 7 0

1..

..Ib

bv

le7 | byteb

hvie?

[ byte4

byftJ j

byteZ

bylcl | byteO

U

.Ib

word3

wo

rdJ

word I

wordO

1.

Ib

double wordi

double

wonJD

1..

.Ib

Qund

word

Архитектура регистров ММХ н фирметы ддлних

Регистры не могут использоваться для адресации памяти . Совпадение регистров МЧХ и FRJ -> ограничение на чередование кодов команд МЧХ и FRJ -забота программиста приложений с МЧХ .

Сяайд Б

Дл . регистры Pentium4

Регистры ХММ (55Е, 55Е2) - восемь 128 -bit регистров ХММО -ХММ7 от (eXtendedMultiMedia }f регистр состояния /управления MXCSR. В каждый из регистров -> четыре 32 разрядных числа с ГВ одинарной точности .

15 14

13

13

ii

1»

«tru

Я 7

6

5 4

3

1

ff

м,

K.

M,

s.^1

M,

15 1*

13

11

и

10

a»epoirHk*cSSE «ft 6

5 4

3 2

I

u

IS 1 14

13

Bjtf

b

Byte

и

Btte

и

Я

l>5tc

, T

Uytt 6

By» 1 Byte S 1 4

Byte 3

Z

Byi«

1

Byic

0

WordT

Word*

Won»

Word4

wordO

doubtr «orilt

iluuhlf word2

ditablr «ordI

Qudworitl

wordD

у

м,

s,

E,

S.IU

m

4