
- •Принцип двоичного кодирования
- •0 D 0 0 1 0 0 0 инверт
- •1) Проверить, выровнены ли порядки, и. Если нет. То выровнять.
- •2} Сложить мантиссы (одна из них. Возможно, денормализовша).
- •С 1992 г. - неотъемлемая часть Intel и amd.
- •271 Команда - групповые арифметические и логические операции , сдвиги , сравнения , перегруппировка и извлечение отдельных чисел , различные варианты пересылок .
- •Команды управления виртуальной памятью .
- •6} В режиме ss&2
- •3 Register ImmediateFormat 1a
- •Instruction -Level Pa га I lei ism
- •Instruction -Level Parallel ism
- •Su perscalarArch itectu res
- •Intel 486 - один конвейер , Pentium - 2 конвейера из 5 стадий .
- •Su perscalarArch itectu res
- •Su perscalarArch itectu res
- •Instruction
- •1011X j|I 2 - все параллельно
- •1 Упрощается архитектура процессора ; вместо распараллеливающей логики на eric процессоре можно разместить больше регистров , функциональных устройств .
- •BusWidth
- •1. Арбитраж пин
- •3. Методы повышения эффективности пин
- •4. Стандарты шинS Примеры
- •Bus Arbitration (2)
- •Способы расширения полосы пропускания шин :
- •Pci BusTransactions
- •Сокращённые обозначения -kj,Mi7 Gi.Ti.Pi и Ei.
- •Vax/1980 pPra/1996
- •MemoryChips
- •Volatile
- •1. Блочная организация основной памяти
- •2. Микросхемы памяти
- •Расслоение памяти
- •Расслоение памяти
- •1. Динамические сву
- •Динамические сву для видеоадаптеров
- •Многопортовые os/
- •Volatile
- •2. (Пни -память
- •3. Ассоциативные 3/
- •4. Организация fau -памяти
- •Пример 2
- •Пример 2
- •1. Организация fcu -памяти
- •2. Система ввода -вывода
- •Ёмкость каи - 32kb , строки го 25б байт .
- •Address
- •64 Kb cache, direct -mapped,32 -byte cache block
- •32 Kb cache, 2 -wayset -associative, 16 -byteblocks
- •16Kb,4 -wayset-associativecache732 -bitaddress, byte -addressablememory/32 -byte cache blocks/lines
- •Write -through - прежде всего обновляется слово ,
- •Средства обнаружения и защиты от ошибок . Архитектура современных н)¥щ основана на полностью ассоциативном отображении .
- •Структура гу
- •1. Понятие конвейера
- •If: Instruction fetch
- •Id: Instruction decode/ register file read
- •Риск го данным - взаимосвязь команд го данным
- •Pipelined Datapath
- •Hazards
- •Superscalar Architectures
- •Instruction
- •Instruction decode
- •1. Очередность вьщачи декодированных команд на исполнительные блоки отличается от последовательности предписанной программой -неупорядоченная выдача команд (out-of-orderissue ),
- •Sisd,misd,simd,mimd.
- •Классификация Флинна
- •Heterogeneous multiprocessor chip with six cores
- •Организация памяти вс
- •Message-passing interconnection network
- •3 Stages
- •3 Stages
- •Num am ulti processors
- •Interconnection network
- •18Bits 8
- •18Bits 8
- •And memories are not shown.
- •(A) a star, (b) a complete interconnect.
- •(C) a tree, (d) a ring, (e) a grid, (f) a double torus.
- •(G) a cube, (h) a 4d hypercube.
- •Red Storm (2)
Команды управления виртуальной памятью .
Слайд 18
Printed with FinePrint- purchase atwww.fineprint.com
Тиы команд
Команды
управления потоком команд
Вместо инкрементации счётчика команд команда загружает в счётчик адрес след . команды .
Три типа :
безусловные переходы
условные переходы (ветвления )
вызовы процедур и возврат из процедур
Слайд 19
Тиы команд
Команды
управления потоком команд
jump
9%
■ Floating-point Average □ Integer Average
J75%
Е
Г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:
case or switch statements found in most programming languages (which select amongone of several alternatives);
virtual functions or methods in object-oriented languages like C++ or Java (which allow different routines to be culled depending on the type of the argument);
High order functions or function pointers in languages like С or C++ (which allows 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 targets 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 instruction 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 execution. |
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. Computers, 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 comparison. 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 average 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 implement 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 computers. |
Слайд
Способы
адресации операндов
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 addressing 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
План
лекции
Форматы команд
Сравнение форматов команд 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
Способы адресации операндов
Память
Регистры
Ил . адрес операнда
Операнд
=
(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
FIGURE 2.8 Displacement values are widely distributed. There are bath a large number of small values and a fair number 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/, операциях с векторами .
Слайд Ъ
Способы адресации операндов
Стековая
адресация
Используется в ЕМ ю стековой архитектурой .
Стековый доступ к памяти происходит в большинстве процессоров в следующих ситуациях :
Прл выполнении команд стекового доступа :"поместить в стек " push или "извлечь из стека " pop .
Г)и выполнении команды вызова подпрограммы ипри возврате из нее .
Г)и входе в прерывание и возврате из него .
Слайд Ъ
Printed with FinePrint- purchase atwww.fineprint.com
Способы адресации операндов
Положение
стека в адресуемой памяти определяется
содержимым
указателя стека .
Указатель стека программно доступен , программист может задать его значение обычной командой пересылки : movsp ,#1000h - задает положение стека , начиная с адреса lOOOh.
Содержимое указателя стека используется как адрес операнда -приемника при записи или как адрес операнда - источника при считывании из стека .
Пэи обращении к стеку автоматически модифицируется и содержимое указателя стека , чтобы обеспечить следующее обращение к очередной ячейке стека .
Обращение к стеку - косвенно -регистров ая адресаци я через указатель стека с автоиндексацией .
Слжд 25
Способы адресации операндов
Стек
может быть организован го разному :
Направление роста стека . Если при записи в стек,содержимое указателя стека автоматическиувеличивается (и, соответственно , при считыванииавтоматически уменьшается ), то говорят, что стекрастет в сторону увеличения адресов . Впротивоположном случае говорят, что стек растет всторону уменьшения адресов .
Если модификация указателя стека выполняется дозаписи и соответственно после считывания , тоуказатель стека всегда указывает на последнююзанятую ячейку стека . Наоборот , если модификацияпроизводится после записи и до считывания ,указатель стека всегда указывает на первуюсвободную ячейку стека .
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- implement я 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
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-
|
АН |
-А |
х- |
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
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 |
|
|
|
|
|