Optimization of applications for Intel* platforms 1 IA64. Архитектура и обзор системы команд Юрий Долгов, Дмитрий Шкурко.

Slides:



Advertisements
Similar presentations
 Overview  Smart Scan  Predicate Filtering  Column Projection  Join Filtering  Storage Indexes  Hybrid Columnar Compression  Flash Cache.
Advertisements

ЗАРЯДКА НА АНГЛИЙСКОМ ЯЗЫКЕ.  Зарядка на уроке английского языка может стать самым любимым и веселым занятием для детей, при том, что она проходит исключительно.
IA-64 Register Model: Stack & Rotation Dale Morris Architect Hewlett Packard Co.
Архитектура ЭВМ и язык ассемблера
Linguistic tools Лекция 5. ПОИСКОВЫЕ СИСТЕМЫ: предыстория Библейские индексы и конкордансы 1247 – Hugo de St. Caro – было задействовано 500 монахов для.
Распределение регистров при планировании инструкций для архитектуры “Эльбрус” Дипломная работа Иванова Д. С. Научный руководитель Шлыков С. Л. Москва 2008.
Системы с наследованием. Если систему можно представить в виде : Где - непрерывные функции, то такая система называется системой с наследованием. Математическое.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
M ULTIMEDIA Solomeshch Natalia. К ОДЕК Н.264 Т ЕРМИНЫ закодированный снимок порядковый номер счетчика снимка ссылочные снимки Макроблоки типа I Макроблоки.
Половинкин А.Н..  Вычисления общего назначения на GPU  Архитектура GPU  Программная модель выполнения на CUDA  Программирование с использованием CUDA.
R1R2R3R4R5R6R7R1R2R3R4R5R6R7. Аксиома R 1. В пространстве существуют плоскости. В каждой плоскости пространства выполняются все аксиомы планиметрии.
Тел. (495) Москва, а/я 212 Рабочая группа по реформе МВД Москва, 2010 Новикова Асмик, Фонд «Общественный вердикт»
Можно выделить два подхода, на основе которых производится выбор посредника: 1.Аналитический, предполагающий осуществление выбора с использованием формул,
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 3 Система команд, атомарность и порядок Д. ф.- м. н., профессор А. Г. Тормасов Кафедра информатики.
Учитель математики Кулакова Т.М. МОУ ООШ №15 г.о Новокуйбышевск Самарской области Сентябрь 2011г.
Сохранение суммы фазовых координат. Важный частный случай представляют системы, в которых в течение всего процесса сохраняется постоянной сумма значений.
Что за хулиган толкает пассажиров автобуса то вперед, то назад? Этот хулиган, вернее, хулиганка -
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
Обзор последних достижений биометрических методов аутентификации РусКрипто 2005.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Функции IV. Биоинформатические ресурсы для работы с мембранными белками А.Б.Рахманинова (3 и 4 апреля 2007г.)
Блок 3. Семейства белков I. Множественное выравнивание Первый курс, весна 2008, А.Б.Рахманинова.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
Москва 2008 Специализированное вычислительное устройство для обработки радиолокационной информации Московский физико-технический институтИнститут точной.
Работа выполнена в рамках проекта "Информационные технологии в управлении образованием" 1С: ХроноГраф 2.5 Последовательность создания в программе «1С:
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
1 Организация вычислительной системы ЛЕКЦИЯ №2 Калинина А.П.
Основы цифровой обработки речевых сигналов. Общая схема процесса речеобразования x[n] – дискретные отсчеты сигнала возбуждения y[n] – дискретные отсчеты.
Основы операционных систем
Кафедра ЮНЕСКО по НИТ1 Принципы построения и архитектура ЭВМ Информатика.
 Нужно много различных протоколов связи  Каждый из них может реализовываться на разных платформах Современные сети Много устройств, компьютеров и сетей.
Лекция 2 Наборы из нулей и единиц
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 16 Методы разработки параллельных программ для многопроцессорных систем с общей.
Основные команды ассемблера Пересылки данныхАрифметическиеЛогические Передачи управления Обработки цепочек Управления работой ЦП.
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
"The European Molecular Biology Open Software Suite"
Формантный синтезатор речи. Часть 1. Полюсы и нули – иное понимание Полюс – это пара чисел (B, F), B – ширина форманты, F – частота форманты Нуль – это.
1 Влияние машинной архитектуры Структура и принципы работы компьютера На разрабатываемый язык программирования машинная архитектура влияет двояко: –непосредственно.
Понятие архитектуры ЭВМ Архитектура ЭВМ как распределение функций, реализуемых системой, между её уровнями.
Симулятор квантовых вычислений Выполнил: Гедерцев А.С. Руководитель, д.ф.-м.н., профессор: Граничин О.Н.
ВЫЧИСЛЕНИЕ В ЛИСПЕ Функциональное программирование Григорьева И.В.
Маршрут, цепь, цикл Маршрутом называют последовательность вершин и ребер, в которой любые два соседних элемента инцидентны (т.е. соединены). Например:
ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 5 Некоторые понятия, используемые при разработке параллельных программ Д. ф.- м. н., профессор А.
Обзор архитектуры IA32/EM64T Юрий Долгов, Дмитрий Шкурко.
Объектно-ориентированное проектирование DSP-систем в телекоммуникациях Подготовил: Сергеев Виктор Николаевич СПбГУ, математико-механический Факультет,
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Введение в параллельные вычисления. Технология программирования MPI (день пятый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
0 + 0= = = = 10 Арифметические операции во всех позиционных системах счисления выполняются по одним и тем же хорошо известным вам правилам.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Оптимизация циклов Юрий Долгов, Дмитрий Шкурко. Optimization of applications for Intel* platforms Оптимизация Уменьшение требований к ресурсам Времени.
XML - расширенный язык разметки Моисеевой О. Макушиной Д. (eXtensible Markup Language)
Множественное выравнивание С.А.Спирин, весна
1 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Java 2 Micro Edition Лаборатория информационных технологий (ИТЛаб) При поддержке фирмы.
Введение в программирование на языке ассемблера. Формат инструкции на языке ассемблера Директива Команда Макрокоманда МеткаОперандыКомментарий.
INFSO-RI Enabling Grids for E-sciencE Управление заданиями в GRID. Н. Клопов ПИЯФ, Гатчина.
«Отгадай символы Рождества»
R E F R I G E R A T I O N A N D A I R C O N D I T I O N I N G Блок мониторинга и централизованного управления АK-SM 350.
Zend Engine изнутри Дмитрий Стогов. Немного истории Zend Engine была разработана в качестве ядра для PHP 4 Andi Gutmans и Zeev Suraski в 1999 PHP 5.0.
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.
Алгебра логики это раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности или ложности) и логических.
1 Организация подсистемы ввода-вывода CSS (Channel Subsystem) Лекция № 9.
Микропроцессорные системы Программирование INTEL 8086 Системная программа Debug.
Jokes Jokes Jokes Teacher: Where's your text book? Student: At home. Teacher: What's it doing there? Student: Having a.
Henk Corporaal TUEindhoven 2009
11/23/2018 IA-64 Overview Friday, November 23, 2018Friday, November 23, 2018 IA-64 Overview, Vail.
Presentation transcript:

Optimization of applications for Intel* platforms 1 IA64. Архитектура и обзор системы команд Юрий Долгов, Дмитрий Шкурко

Optimization of applications for Intel* platforms План Обзор IA-64 архитектуры Обзор системы команд

Optimization of applications for Intel* platforms IA-64 архитектура Регистры Порты Бандл Кэши, ALAT и исполнительные устройства

Optimization of applications for Intel* platforms Регистры. Целочисленные регистры 128 регистров общего назначения (General Registers) 1 регистр = 64 бита 32 статических регистра (Static registers) 96 стековых вращающихся регистров (Rotating registers). Количество реально вращающихся определяется программно, но должно быть кратно 8 GR0 == 0 Каждому регистру соответствует NaT бит Все регистры доступны программисту

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

Optimization of applications for Intel* platforms Регистры. Регистры предикатов 64 регистра предикатов (Predicate Registers) 1 регистр = 1 бит 16 статических регистров 48 вращающихся регистров. Вращаются все 48 регистров PR0 == 1

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

Optimization of applications for Intel* platforms Регистры Branch Registers 630 BR7 BR0 GR1 GR31 GR127 GR32 GR0 NaT Stacked, Rotating Static 0 Integer Registers 630 Predicate Registers Rotating Static 1 PR1 PR63 PR0 PR15 PR16 bit FR0 FR1 FR2 FR31 FR32 FR FP Registers

Optimization of applications for Intel* platforms Регистровый стек 32 Outputs Local (Inputs) Outputs Local (Inputs) Outputs Local (Inputs) PROC B PROC A CallAllocRet Virtual  Каждая процедура заказывает себе требуемое ей количество стековых регистров командой alloc  Кадр предоставляемых регистров делится на три части: Inputs, Local, Outputs  Outputs является Inputs для вызываемой процедуры

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

Optimization of applications for Intel* platforms Бандл (bundle) Бандл (16 байт) – единица двоичного исполняемого кода, содержит группу из трех команд и поле шаблона (template) 1 бандл = 128 бит 3 инструкции в бандле по 41 биту (слоты) типы слотов соответствуют типам портов (M, I, F, B) и определяются шаблоном Граница группы инструкций определяется “stop” битом или шаблоном Instruction 2Instruction 1 Instruction 0dispersal template 4 bits stopstop 128 bits (bundle) 41 bits

Optimization of applications for Intel* platforms Кэш 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 Таблица ранних загрузок

Optimization of applications for Intel* platforms Обзор системы команд Команда alloc Команды обмена данными Арифметические и логические команды Команды сравнения Команды сдвига Команды обработки данных с плавающей точкой Команды параллельной обработки Команды переходов Влияние предикатов на команду

Optimization of applications for Intel* platforms Формат инструкций (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 )

Optimization of applications for Intel* platforms Обзор системы команд. Команда alloc Должна стоять первой в вызываемой функции Формат alloc R1 = i, l, o, r в регистр R1 копируется регистр состояния предыдущей функции, обычно, его можно не сохранять (и не восстанавливать), если в функции регистр состояния не изменяется i – количество передаваемых в функцию целочисленных и адресных параметров l – количество локальных переменных (нестатических стековых регистров), которые будут использоваться в функции o – количество передаваемых целочисленных и адресных параметров для функции, которая будет вызываться из данной функции r – количество нестатических стековых целочисленных регистров, которые будут вращаться, r – кратно 8 общее количество задействованных нестатических стековых регистров s = i + l + o; r <= s;

Optimization of applications for Intel* platforms Обзор системы команд. Команды обмена данными 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 – выгружает из регистра данных с плавающей точкой в память в соответствующем формате

Optimization of applications for Intel* platforms Обзор системы команд. Команды обмена данными ldX.a ранняя загрузка ldX.c спекулятивная загрузка

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

Optimization of applications for Intel* platforms Обзор системы команд. Арифметические и логические команды add, sub, and, or, xor и т.п. – естественно, присутствуют shladd r1 = r2, n, r3 – операнд из r2 сдвигается влево на n разрядов (n=1-4), к результату прибавляется операнд из r3 и полученная сумма помещается в r1

Optimization of applications for Intel* platforms Обзор системы команд. Команды сравнения 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

Optimization of applications for Intel* platforms Обзор системы команд. Команды сдвига shr, shl r1 = r2, r3 – сдвигает содержимое регистра r2 в соответствующем направлении и помещает в регистр r1; на сколько – указано в регистре r3; может выполняться в I0 и I1 устройствах shr, shl r1 = r2, n – сдвигает содержимое регистра r2 в соответствующем направлении на n разрядов и помещает в регистр r1; псевдокоманда – реализуется через команды extr, и как следствие, может выполняться только в I0

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

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

Optimization of applications for Intel* platforms br 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 – тоже варианты последней команды цикла. Данные команды позволяют организовать цикл с программным конвейером. Обзор системы команд. Команды переходов

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

Optimization of applications for Intel* platforms Q&A

Optimization of applications for Intel* platforms Thank you.