Паралелизам на ниво на инструкции и негова употреба

62
Паралелизам на ниво на инструкции и негова употреба Ана Стефановска Дамјан Николовски

Upload: leeannaloo

Post on 24-Jun-2015

666 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Паралелизам на ниво на инструкции и негова употреба

Паралелизам на ниво на инструкции и

негова употреба

Ана Стефановска

Дамјан Николовски

Page 2: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 3: Паралелизам на ниво на инструкции и негова употреба

Паралелизам на ниво на инструкции ...

(анг. instruction level parallelism - ILP)

… е потенцијално преклопување при извршувањето на инструкциите, со цел да

се подобрат перформансите на процесорот

паралелни инструкции

Page 4: Паралелизам на ниво на инструкции и негова употреба

Пристапи за примена на ILP

хардверски базиран – паралелизмот се пронаоѓа и применува динамички, пр. кај серијата Intel Pentium

софтверски базиран – паралелизмот се пронаоѓа статички, за време на компајлирање, пр. кај Intel Itanium

Page 5: Паралелизам на ниво на инструкции и негова употреба

Концепт на цевки (анг. pipelining)

Page 6: Паралелизам на ниво на инструкции и негова употреба

Во идеален случај

длабочина на цевката________________________идеален CPI + CPI со застој

забрзување со концептот

на цевки=

– CPI - cycles per instruction

Page 7: Паралелизам на ниво на инструкции и негова употреба

Едноставен pipeline кај RISC

Page 8: Паралелизам на ниво на инструкции и негова употреба

CPI кај процесор со концептот на цевки

CPI - cycles per instruction

Ideal pipeline CPI – мерка за максималните перформанси кои може да се постигнат со имплементацијата

Page 9: Паралелизам на ниво на инструкции и негова употреба

Ризици кај концептот на цевки

Структурни ризици – хардверот не може да ја подржи дадената комбинација од инструкции

Податочни ризици – инструкцијата зависи од резултатите од претходна инструкција која што сеуште е во цевката

Контролни ризици – предизвикани од доцнењето помеѓу земањето на инструкцијата и одлуките за промена на текот на програмата (разгранувања, скокови, враќања назад)

предизвикуваат застој во цевката

Page 10: Паралелизам на ниво на инструкции и негова употреба

Податочна зависност

(Вистинска) податочна зависност

(анг. true data dependence)

Називна зависност

(анг. name dependence)

Контролна зависност

(анг. control dependence)

Page 11: Паралелизам на ниво на инструкции и негова употреба

Податочна зависност

i1: r3 ← (r1) op (r2)

i2: r5 ← (r3) op (r4) //директно зависи од i1

i3: r6 ← (r5) op (r4) //индиректно зависи од i1

Резултира во RAW (Read After Write)

ризик при употреба на концептот на цевки

Page 12: Паралелизам на ниво на инструкции и негова употреба

Називна зависност

Антизависност

i1: r3 ← (r1) op (r2)

i2: r1 ← (r4) op (r5)

резултира во WAR (Write After Read) ризик

Излезна зависност

i1: r3 ← (r1) op (r2)

i2: r3 ← (r6) op (r7)

резултира во WAW (Write After Write) ризик

Page 13: Паралелизам на ниво на инструкции и негова употреба

Контролна зависност

if p1 {

S1; // S1 e контролно зависна од p1, но не и од p2

};

if p2 {

S2; // S2 e контролно зависна од p2, но не и од p1

};

Контролната зависност се зачувува со имплементирање на детекција за контролни ризици – предизвикува контролни застои

Page 14: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 15: Паралелизам на ниво на инструкции и негова употреба

Основни распоредувања кај концептот на цевки

Наоѓање секвенци на заемно независни инструкции кои паралелно ќе се извршуваат

Зависната е оддалечена од изворната инструкција за онолку колкава што е латентноста на цевководот за изворната инструкција

Page 16: Паралелизам на ниво на инструкции и негова употреба

Основни распоредувања кај концептот на цевки

for (i=1000; i>0; i=i–1)x[i] = x[i] + s; //секоја итерација е независна

Преведено во асемблер:

Page 17: Паралелизам на ниво на инструкции и негова употреба

Основни распоредувања кај концептот на цевки

Потребни циклуси за извршување на една итерација

Со прераспоредување на кодот добиваме

Page 18: Паралелизам на ниво на инструкции и негова употреба

Одмотување на јамки

Зголемување на бројот на извршени операции во однос на инструкциите за гранење и overhead-от

o Од 7 циклуси, 3 операции и 4 overhead

Се прави копија на телото од јамката неколку пати, со што се елиминираат гранењата

Подобрено распоредување

Операциите од различни итерации се извршуваат паралелно

for (i=1000; i>0; i=i–1) for (i=1000; i>0; i=i–4)x[i] = x[i] + s; { x[i] = x[i] + s;

x[i-1] = x[i-1] + s;x[i-2] = x[i-2] + s;x[i-3] = x[i-3] + s; }

Page 19: Паралелизам на ниво на инструкции и негова употреба

Одмотување на јамки

На конкретниот пример:

• Елиминирани 3 гранења и декременти• Без оптимизации, секоја последователна операција е зависна• Потребни се 27 циклуси

•Со оптимално распоредување потребни се 14 циклуси (3,5 циклуси по итерација)

Page 20: Паралелизам на ниво на инструкции и негова употреба

Одмотување на јамки и оптимално распоредување

Определување на зависностите во кодот

Наоѓање секвенци на независни инструкции

Користење на различни регистри за избегнување на неправилности при користење на исти регистри за различни пресметки

Избегнување/елиминација на што е можно повеќе гранења и тестови поврзани со нив

Оптимална прераспределба на кодот

Page 21: Паралелизам на ниво на инструкции и негова употреба

Ограничувања при одмотување на јамки

Три фактори кои влијаат на придобивките од одмотувањето на јамки и прераспоредувањето:

Намалување на overhead со секое одмотување на јамка

Значителното растење на кодот (зголемена рата на промашувања во кеш)

Недостаток на регистри при агресивно распоредување и одмотување на јамки

o Појава на т.н. „регистерски притисок“

Page 22: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 23: Паралелизам на ниво на инструкции и негова употреба

Предвидување на гранењето

Гранењето значително ги намалува перформансите на „цевководот“

Решение за намалување на загубите е предвидување на нивното однесување

Два типа на предвидување:

o Статичко, при компајлирање

o Динамичко, при извршување

Page 24: Паралелизам на ниво на инструкции и негова употреба

Статичко предвидување

Погодно за избегнување на податочни ризици

Наједноставна техника: претпоставка дека гранката е земена

o Ратата на погрешни предвидувања за SPEC програми изнесува 34%

Попрецизна техника е предвидување на гранењето врз основа на т.н. “profile information” добиени од претходни претходни извршувања на кодот

Page 25: Паралелизам на ниво на инструкции и негова употреба

Статичко предвидување

Ефикасноста на шемите за предвидување зависи од:

Прецизноста на самата шема

Фрекфентноста на појава на условни гранења (кај SPEC се движи од 3% до 24%)

Page 26: Паралелизам на ниво на инструкции и негова употреба

Динамичко предвидување

Branch- prediction buffer

o Мал мемориски простор индексиран од помалку значајните битови од адресата на инструкцијата за гранење

o Содржи бит кој покажува дали гранката била извршена

o Во случај на промашување битот се инвертира

o Конфликт при различни адреси со исти помалку значајни битови

Page 27: Паралелизам на ниво на инструкции и негова употреба

Динамичко предвидување

N-битна шема за предвидување

Бројач со вредности од 0 до 2n-1

При надминување на половина од максималната вредност се менува предвидувањето

11 10

0001

Page 28: Паралелизам на ниво на инструкции и негова употреба

Корелирани предвидувачи

Дво- нивовски предвидувачи

При предвидувањата, в предвид се зема и однесувањето на останатите гранки

Page 29: Паралелизам на ниво на инструкции и негова употреба

Корелирани предвидувачи

(m,n) предвидувач

Се следи однесувањето на последните mгранки

Се избира од 2m предвидувачи

Секој предвидувач е n-битен и се однесува на само една гранка

Page 30: Паралелизам на ниво на инструкции и негова употреба

Турнирски предвидувачи

Користење на повеќе предвидувачи

Еден базиран на глобални информации

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

Комбинирање со селектор

Во пракса се користи 2- битен бројач за секоја гранка

Избор на поефикасниот од двата предвидувачи по гранка

Потребни се две промашувања за промена на предвидувачот

Page 31: Паралелизам на ниво на инструкции и негова употреба

Споредба на перформанси кај различни предвидувачи

Page 32: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 33: Паралелизам на ниво на инструкции и негова употреба

Поделба на инструкциското декодирање

Издавање на инструкција (анг. instruction issue) – декодирање, проверка за структурни ризици

Читање на операнди – чекај да нема податочни ризици, прочитај ги операндите

Page 34: Паралелизам на ниво на инструкции и негова употреба

Статичко распоредување (in-order issue, in-order execution)

Не постои податочна зависност =>земената инструкција се извршува

Постои податочна зависност =>се прави застој почнувајќи од првата инструкција со податочна зависност

Што доколку го имаме овој код?

i1: DIV.D F0,F2,F4

i2: ADD.D F10,F0,F8

i3: SUB.D F12,F8,F14

Page 35: Паралелизам на ниво на инструкции и негова употреба

Динамичко распоредување(in-order issue, out-of-order execution)

хардверот го прераспределуваинструкциите, при што се грижи за текот

на податоците и однесувањето на исклучоците

Page 36: Паралелизам на ниво на инструкции и негова употреба

Проблеми кај динамичкото распоредување

Појава на WAR и WAW ризици

i1: DIV.D F0,F2,F4

i2: ADD.D F6,F0,F8

i3: SUB.D F8,F10,F14

i4: MUL.D F6,F10,F8

Решение: преименување на регистри

Справување со исклучоците

Решение: непрецизни исклучоци

Потреба од повеќе функционални единици

Page 37: Паралелизам на ниво на инструкции и негова употреба

Непрецизни исклучоци

- се има извршено инструкција, која во програмскиот редослед се наоѓа после инструкцијата која предизвикува исклучок

- се немаат извршено инструкции кои во програмскиот редослед се пред инструкцијата која предизвикува исклучок

Page 38: Паралелизам на ниво на инструкции и негова употреба

Пристап на Томасуло

Следење кога операндите потребни за инструкциите ќе бидат достапни

– минимизација на RAW ризиците

Воведување на преименување на регистрите

– минимизација на WAR и WAW ризиците

DIV.D F0,F2,F4 DIV.D F0,F2,F4

ADD.D F6,F0,F8 ADD.D S,F0,F8

S.D F6,0(R1) => S.D S,0(R1)

SUB.D F8,F10,F14 SUB.D T,F10,F14

MUL.D F6,F10,F8 MUL.D F6,F10,F8

Page 39: Паралелизам на ниво на инструкции и негова употреба

Резервирачки станици

• F&D Unit = Fetch & Decode Unit

• EUs and RF = Execution Units and Register File

Page 40: Паралелизам на ниво на инструкции и негова употреба

Основна структура на MIPS единица за броеви со подвижна запирка која го користи алгоритамот на Томасуло

Page 41: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 42: Паралелизам на ниво на инструкции и негова употреба

Потребата за хардверски базирани шпекулации

Одржувањето на контролните зависности станува голем товар

Предвидувањето на гранењето не е доволно

Процесорите извршуваат и по неколку инструкции на такт

За максимални перформанси потребна е претпоставка (шпекулација) за исходот на гранењето

Извршување на програмата како претпоставката да е точна

Page 43: Паралелизам на ниво на инструкции и негова употреба

Хардверски базирани шпекулации

Техника базирана на 3 клучни идеи:

Динамичко предвидување на гранење

Шпекулација за да се овозможи извршување на одбраните инструкции пред да бидат разрешени контролните зависности

Динамичко распоредување

Одделување на бајпасирањето на резултатите од комплетирањето на инструкцијата

Инструкциите се извршуваат без редослед, но комплетираат (commit) редоследно

Page 44: Паралелизам на ниво на инструкции и негова употреба

Хардвер потребен за поддршка на шпекулации

Reorder buffer (ROB)

Дополнителни регистри за сместување на резултати од шпекулирани инструкции

Секој ред во баферот содржи 4 полиња:

Тип на инструкција

Дестинација

Вредност

Ready

Ги содржи функционалностите на store buffer- от

Page 45: Паралелизам на ниво на инструкции и негова употреба

Хардверски базирани шпекулации

Page 46: Паралелизам на ниво на инструкции и негова употреба

Извршување на инструкција кај концептот на хардверски

базирано шпекулирање1. Издавање - Се зема инструкција од редот на

инструкции и доколку има слободни резервацискистаници и ROB се издава.

2. Извршување - доколку сите операнди се достапниинструкцијата се извршува.

3. Запишување – резултатот заедно со тагот по CDB сепраќа до соодветниот ROB и резервациски станицидоколку е потребно.

4. Комплетирање – три различни секвенци на акции возависност од исходот:

1. Нормално завршување: резултатот се запишува восоодветен регистер, а содржината во ROB се чисти

2. Комплетирање на store наредба: исто како при нормалнозавршување, но се запишува во меморија

3. Погрешно гранење: се чисти содржината на записот во ROBи се започнува со одново извршување, според вистинскотогранење

Page 47: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 48: Паралелизам на ниво на инструкции и негова употреба

Процесори со повеќратно издавање на инструкции(анг. multiple-issue processors)

Процесори со многу долг инструкциски збор(анг. very long instruction word - VLIW)

Статички распореден суперскаларен процесор

Динамички распореден суперскаларен процесор

Page 49: Паралелизам на ниво на инструкции и негова употреба

Основен пристап со многу долг инструкциски збор

Употребува повеќе независни функционални единици

Повеќе операции ги пакува во една долга инструкција

Еднонасочен код → техники за локално распоредување

Код со гранење → техники за глобално распоредување

Page 50: Паралелизам на ниво на инструкции и негова употреба

Основен пристап со многу долг инструкциски збор

Технички проблеми

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

Ограничувања при lockstep операции

Логистички проблеми

Некомпатибилност на бинарниот код на различни имплементации

Page 51: Паралелизам на ниво на инструкции и негова употреба

Динамичко распоредување, повеќекратно издавање,

шпекулација

Ратата на издавање е две инструкции за време на такт циклус

Проширување на алгоритамот на Томасуло

Одвоени единици цели броеви и броеви со подвижна запирка – секоја може да иницира операција при секој такт циклус

Код: R1[i]=R1[i]+1

Loop: LD R2,0(R1) ; do{ R2 = R1[i];DADDIU R2,R2,#1 ; R2++;SD R2,0(R1) ; R1[i] = R2;DADDIU R1,R1,#8 ; i++; }BNE R2,R3,LOOP ; while(R2<R3)

Page 52: Паралелизам на ниво на инструкции и негова употреба

Без шпекулација

Page 53: Паралелизам на ниво на инструкции и негова употреба

Со шпекулација

Page 54: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 55: Паралелизам на ниво на инструкции и негова употреба

Потребата за напредните техники за достава на

инструкциите

Процесорите со повеќекратно издавање на инструкции можат да издаваат од 4 до 8 инструкции по такт циклус

Потребно е зголемување на протокот на достава на инструкции, за да се искористат перформансите

Ефикасно разрешување на гранењето е клучно за поставената цел

Page 56: Паралелизам на ниво на инструкции и негова употреба

Branch- target buffers

Кеш кој го предвидува гранењето и ја чува адресата на која се наоѓа следната предвидена инструкција

Page 57: Паралелизам на ниво на инструкции и негова употреба

Branch- target buffers

Page 58: Паралелизам на ниво на инструкции и негова употреба

Return address predictors

Мал бафер кој ги чува адресите каде што треба да се врати текот на програмата

Функционира како пласт

Поголема длабочина на пласт- попрецизно предвидување

Page 59: Паралелизам на ниво на инструкции и негова употреба

Интегрирана единица за достава на инструкции

Автономна единица чија задача е да го храни цевководот со инструкции

Последен тренд, со цел да се задоволат потребите на процесорите со повеќекратно издавање

Интегрира повеќе функции:

Предвидување на гранење

Prefetch на инструкции

Пристап до мемориски адреси на инструкциите

Баферирање

Со зголемените перформанси на процесорите оваа единица станува тесно грло

Page 60: Паралелизам на ниво на инструкции и негова употреба

Содржина

ILP – концепти и предизвици

Основни компајлерски техники за употреба на ILP

Намалување на цената на разгранувањето со предвидување

Надминување на податочните ризици со динамичко распоредување

Шпекулации базирани на хардверот

Употреба на ILP со различни методи

Напредни техники за достава на инструкции и шпекулација

Intel Pentium 4

Page 61: Паралелизам на ниво на инструкции и негова употреба

Pentium 4

Page 62: Паралелизам на ниво на инструкции и негова употреба

Развој на паралелизмот на ниво на инструкции