IA64. Архитектура и обзор системы команд презентация

Содержание

План Обзор IA-64 архитектуры Обзор системы команд

Слайд 1IA64. Архитектура и обзор системы команд
Юрий Долгов, Дмитрий Шкурко


Слайд 2План
Обзор IA-64 архитектуры
Обзор системы команд


Слайд 3IA-64 архитектура
Регистры
Порты
Бандл
Кэши, ALAT и исполнительные устройства


Слайд 4Регистры. Целочисленные регистры
128 регистров общего назначения (General Registers)
1 регистр = 64

бита
32 статических регистра (Static registers)
96 стековых вращающихся регистров (Rotating registers). Количество реально вращающихся определяется программно, но должно быть кратно 8
GR0 == 0
Каждому регистру соответствует NaT бит
Все регистры доступны программисту

Слайд 5Регистры. Регистры для вычислений с плавающей точкой
128 регистров данных с плавающей

точкой (Float-point Registers)
1 регистр = 82 бита
32 статических регистра (Static registers)
96 вращающихся регистров (Rotating registers). Вращаются все 96 регистров
FPR0 == 0.0f
FPR1 == 1.0f
Зарезервировано специальное NaTVal значение
Все регистры доступны программисту


Слайд 6Регистры. Регистры предикатов
64 регистра предикатов (Predicate Registers)
1 регистр = 1 бит
16

статических регистров
48 вращающихся регистров. Вращаются все 48 регистров
PR0 == 1


Слайд 7Регистры. Регистры переходов. Регистры приложений
8 регистров перехода (Branch Registers)
128 регистров приложений

(Application Registers)
Счетчик циклов ar.lc (Loop Count Register)
Счетчик эпилога ar.ec (Epilog Count Register)
Регистр состояния устройства обработки данных с плавающей точкой (Float-point Status Register)
Другие


Слайд 8Регистры
Branch Registers
63
0

BR7

BR0


NaT



Predicate Registers



+0.0
+1.0



FR0
FR1
FR2
FR31
FR32
FR127
81
0
FP Registers


Слайд 9



Регистровый стек
32

Local
48
56
32
(Inputs)

Local
46
32
(Inputs)

Local
(Inputs)
Virtual
52
46
32
52
Каждая процедура заказывает себе требуемое ей количество стековых регистров командой

alloc
Кадр предоставляемых регистров делится на три части: Inputs, Local, Outputs
Outputs является Inputs для вызываемой процедуры

Слайд 10 Порты и исполнительные устройства
Порт – устройство, через которое инструкция достигает

исполняющего устройства
M-порт – для команд обмена данными с кэш, арифметических и логических операций
Itanium2 – M0, M1, M2, M3
I-порт – для команд арифметических и логических операций, операций сдвига
I0, I1
B-порт - для команд переходов
B0, B1, B2
F-порт – для команд с операндами - числами с плавающей точкой
F0, F1
Исполнительные устройства
1 устройство взаимодействия с кэшами
3 устройства переходов
4 устройства обработки чисел с плавающей запятой
17 устройств работы с целочисленными данными


Слайд 11Бандл (bundle)

Бандл (16 байт) – единица двоичного
исполняемого кода, содержит группу


из трех команд и поле шаблона (template)
1 бандл = 128 бит
3 инструкции в бандле по 41 биту (слоты)
типы слотов соответствуют типам портов (M, I, F, B) и определяются шаблоном

Граница группы инструкций определяется “stop” битом или шаблоном

Instruction 2

Instruction 1

Instruction 0

dispersal

s
t
o
p

128 bits (bundle)

41 bits

41 bits

41 bits


Слайд 12Кэш
L1D Кэш данных первого уровня
16 KB, 4-way set associative with 64-byte lines
Write

through, no write allocate

L1I Кэш инструкций первого уровня
16 KB, 4-way set associative with 64-byte lines

L2 Кэш второго уровня
256 KB, 8-way set associative with 128-byte lines
Write back, write allocate
Команды загрузки данных с плавающей точкой обращаются сразу в кэш второго уровня

L3 Кэш третьего уровня
3 MB, 12-way set associative with 128-byte lines, on chip

ALAT Таблица ранних загрузок

Слайд 13Обзор системы команд
Команда alloc
Команды обмена данными
Арифметические и логические команды
Команды сравнения
Команды сдвига
Команды

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

Слайд 14Формат инструкций
(pn) instr_name.prf1.prf2… dst1, dst2 = op1, op2, … (;;)

pn – предикатный регистр
instr_name – мнемоника инструкции
prf1, prf2… – указывают на опцию инструкции
dst1, dst2 – приемники результата
op1, op2… – операнды

Пример:
(p6) fma f32 = f33, f34, f35 ( f32 = f33 * f34 + f35 )

Слайд 15Обзор системы команд. Команда alloc
Должна стоять первой в вызываемой функции
Формат alloc

R1 = i, l, o, r
в регистр R1 копируется регистр состояния предыдущей функции, обычно, его можно не сохранять (и не восстанавливать), если в функции регистр состояния не изменяется
i – количество передаваемых в функцию целочисленных и адресных параметров
l – количество локальных переменных (нестатических стековых регистров), которые будут использоваться в функции
o – количество передаваемых целочисленных и адресных параметров для функции, которая будет вызываться из данной функции
r – количество нестатических стековых целочисленных регистров, которые будут вращаться, r – кратно 8
общее количество задействованных нестатических стековых регистров s = i + l + o; r <= s;


Слайд 16Обзор системы команд. Команды обмена данными
ld1, ld2, ld4, ld8 – загружают

в целочисленный регистр из памяти соответствующее количество байт; результат расширяется нулем
st1, st2, st4, st8 – выгружают в память соответствующее количество байтов из целочисленного регистра, начиная с нулевого
ldfs, ldfd, ldfe – загружает из памяти число, представленное в формате IEEE754, в регистр данных с плавающей точкой, одновременно преобразует его во внутренний формат процессора
ldfps, ldfpd – то же самое, но загружает сразу 2 регистра
ldf8, ldf.fill – загружает из памяти данные без какого-либо преобразования
ldfp8 – то же самое, но загружает сразу 2 регистра
stfs, stfd, stfe, stf8, stf.fill – выгружает из регистра данных с плавающей точкой в память в соответствующем формате

Слайд 17Обзор системы команд. Команды обмена данными
ldX.a ранняя загрузка





ldX.c спекулятивная загрузка


Слайд 18Обзор системы команд. Команды обмена данными
Команда MOV – копирует данные из

одного регистра в другой
mov r1 = r2 – псевдокоманда; реально ассемблер превращает ее в команду add r1 = r0, r2, про это полезно помнить
mov f1 = f2 – тоже псевдокоманда, которая реально превращается в fmerge f1 = f2, f2, что тоже полезно помнить, т.к. fmerge исполняется только в устройстве F0
Команды setf, getf – позволяют передавать данные из регистров общего назначения в регистры данных с плавающей точкой и обратно

Слайд 19Обзор системы команд. Арифметические и логические команды
add, sub, and, or, xor

и т.п. – естественно, присутствуют
shladd r1 = r2, n, r3 – операнд из r2 сдвигается влево на n разрядов (n=1-4), к результату прибавляется операнд из r3 и полученная сумма помещается в r1

Слайд 20Обзор системы команд. Команды сравнения
cmp.crel p1, p2 = r1, r2 –

если результат сравнения, который указан в crel (crel = lt, gt, le, etc), выполняется, то в регистр предикатов p1 помещается 1, иначе 0; в регистр предикатов p2 помещается инверсия p1
tbit.trel p1, p2 = r1, n – проверяет n-ый бит в регистре r1, если он удовлетворяет условию в trel (trel = nz – не нуль или z – нуль), то в регистр предикатов p1 помещается 1, иначе = 0; в регистр предикатов p2 помещается инверсия p1

Слайд 21Обзор системы команд. Команды сдвига
shr, shl r1 = r2, r3 –

сдвигает содержимое регистра r2 в соответствующем направлении и помещает в регистр r1; на сколько – указано в регистре r3; может выполняться в I0 и I1 устройствах
shr, shl r1 = r2, n – сдвигает содержимое регистра r2 в соответствующем направлении на n разрядов и помещает в регистр r1; псевдокоманда – реализуется через команды extr, и как следствие, может выполняться только в I0

Слайд 22Обзор системы команд. Команды обработки данных с плавающей точкой
fma, fms, fnma

f1 = f2, f3, f4 – основные команды вычислений; по порядку: умножает и складывает, умножает и вычитает, умножает и выполняет обратное вычитание
fmax, fmin – мнемоника все об’ясняет
frcpa, frsqrt – вычисляют обратную величину и обратный квадратный корень с относительной точностью 2**-8; первое приближение для итерационных вычислений
fmerge – собирает от разных операндов знак, порядок, мантиссу и формирует новое число; на fmerge опирается много псевдокоманд, например fabs
fand, for, fxor – выполняют побитовые логические операции над операндами из регистров данных с плавающей точкой
fcvt – выполняет преобразование целочисленных данных в числа с плавающей точкой и в обратную сторону
Другие


Слайд 23Обзор системы команд. Команды параллельной обработки
Параллельные команды для регистров общего назначения.

Эти команды обращаются к регистрам общего назначения как к 2-ум двойным словам, 4-ем словам или 8-ми байтам, причем как к числам со знаком, так и без знака
padd, psub, pmpy, pmax, pmin, pcmp, pshl, pshr – мнемоника команд все сообщает
pshladd, pshradd, pmpyshr – те же арифметические действия, но еще присутствует сдвиг
pack, unpack, mix, mux – команды упаковки/распаковки данных и изменения позиции в регистре
Параллельные команды для обработки данных с плавающей точкой. Рассматривают 64 бита регистра как два 32-разрядных числа с плавающей точкой.
fpmpa, fpms, - арифметические действия
fpack, fswap – команды упаковки, изменения позиции в регистре


Слайд 24br label – переход на метку; на самом деле в коде

указывается смещение относительно счетчика команд, оно должно укладываться в 25 двоичных разрядов
br bn – переход по адресу из регистра переходов bn
br.ret b0 – последняя команда в программе
br.cloоp start_loop – один из вариантов последней команды в цикле; если счетчик циклов не нуль, то он декрементируется и выполняется переход на начало цикла, иначе – выход из цикла
br.ctop start_loop, br.wtop start_loop,
br.cexit start_loop, br.wexit start_loop – тоже варианты последней команды цикла. Данные команды позволяют организовать цикл с программным конвейером.

Обзор системы команд. Команды переходов


Слайд 25Обзор системы команд. Влияние предикатов на команду
Почти все команды имеют поле

для указания на предикатный регистр. По умолчанию команде соответствует регистр p0 (p0==1)
Команда выполняется только в том случае, если соответствующий ей предикатный регистр установлен в 1, иначе команда не исполняется
(p8) add r1 = r2, r3
Механизм предикатов позволяет избавляться от ветвлений, и как следствие, уменьшить число промахов при переходах. Также механизм предикатов позволяет реализовать программный конвейер.

Слайд 27Thank you.



Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

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


Для правообладателей

Яндекс.Метрика