3 - Katedra Informatyki > Home
Transkrypt
3 - Katedra Informatyki > Home
Architektura systemów komputerowych Architektura potokowa – konflikty Cezary Bolek Katedra Informatyki Plan wykładu Konflikt zasobów - Structural Hazard Wstrzymywanie kolejki – Pipeline Stall Konflikt danych - Data Hazard Forwarding Konflikt sterowania - Control Hazard Wstrzymywanie kolejki – Pipeline Stall Wczesne wykrywanie rozgałęzień Opóźnione rozgałęzienie – Delayed Branch Dynamiczna predykcja rozgałęzień – Dynamic Branch Prediction Architektura systemów komputerowych Cezary Bolek 2 Konflikty przy przetwarzaniu potokowym Konflikt zasobów - Structural Hazard Konflikt zasobów występuje gdy, dwie instrukcje wymagają dostępu do tych samych zasobów procesora Konflikt danych - Data Hazard Jeśli dwie kolejne instrukcje wykonuję operacje na tych samych rejestrach, moŜe zaistnieć sytuacja gdy jedna instrukcja potrzebuje wartości rejestru, który jest wynikiem obliczeń poprzedniej instrukcji i nie jest jeszcze dostępny. Konflikt sterowania - Control Hazard KaŜdy skok w programie powoduje zakłócenie kolejki instrukcji, występujących kolejno w pamięci Przy skokach warunkowych, poznanie następnej instrukcji do wykonania jest moŜliwe dopiero po pewnej licznie cykli zegara – w tym czasie procesor moŜe rozpocząć wykonywanie kolejnych instrukcji i uniewaŜnić je (lub nie) w zaleŜności od tego czy skok rzeczywiście się wykona czy nie. Konflikty powodują zmniejszenie wydajności i wzrost złoŜoności ukł. ster. ! Architektura systemów komputerowych Cezary Bolek 3 Konflikty przy przetwarzaniu potokowym Konflikt zasobów IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Konflikt danych add $s3, $s2, $s1 IF sub $s5, $s4, $s3 mul $s1, $s3, $s4 WB Konflikt sterowania j next IF instr_1 instr_2 ID EX IF ID IF next: instr_next Architektura systemów komputerowych Cezary Bolek 4 Rozwiązywanie konfliktów Konflikt zasobów – Structural Hazard Powielenie sprzętu Wstrzymywanie kolejki – Pipeline Stall Konflikt danych – Data Hazard Wstrzymywanie kolejki – Pipeline Stall Optymalizacja kodu (metody programowe) Forwarding (metoda sprzętowa) Konflikt sterowania – Control Hazard UniewaŜnienie instrukcji – Pipeline Flush Opóźnienie skoku – Delayed Branching Wczesne wykrywanie skoku – Early Branch Detection Tablica historii skoków – Branch History Table Architektura systemów komputerowych Cezary Bolek 5 Konflikt zasobów – Structural Hazard Wynika w sytuacji, gdy dwie róŜne instrukcje potrzebują skorzystać z tego samego zasobu sprzętowego w trakcie tego samego cyklu zegarowego Przykład: Zapis wyniku ALU w fazie 4 Instrukcje Konflikt z danymi ładowanymi w fazie 5 lw $6, 8($5) IF ori $4, $3, 7 sub $5, $2, $3 sw $2, 10($3) Konflikt zasobów Dwie instrukcje próbują wykonać operację zapisu do rejestru w tym samym cyklu zegarowym ID EX MEM WB IF ID EX WB IF ID EX WB IF ID EX MEM CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 Czas Architektura systemów komputerowych Cezary Bolek 6 Konflikt zasobów - rozwiązanie Sposób 1: Zwielokrotnienie zasobów lub rozwinięcie ich funkcjonalności (koszt) Dla danego przypadku: przeprojektowanie banku rejestrów tak aby dysponował dwoma wejściami zapisującymi Sposób 2: Opóźnienie dostępu do zasobu NaleŜy opracować mechanizm opóźnienia operacji dostępu do zas. Dla danego przypadku: opóźnienie fazy WB do 5-tego cyklu Instrukcje Instrukcja ALU przeczekuje 5-ty cykl, nic nie robiąc lw $6, 8($5) IF ori $4, $3, 7 sub $5, $2, $3 sw $2, 10($3) ID EX MEM WB IF ID EX IF ID EX IF ID WB WB EX MEM CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 Czas Architektura systemów komputerowych Cezary Bolek 7 Konflikt zasobów - rozwiązanie Dla sposobu 2 nadal moŜe wystąpić konflikt. IF ID EX MEM WB IF ID EX IF ID EX IF ID Rozwiązanie 1: WB WB EX MEM Podwojenie CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 zasobów poprzez rozdzielenie pamięci programu (faza IF) i danych (faza MEM) Rozwiązanie 2: Wstrzymywanie kolejki (Pipeline Stall) Rozwiązanie najprostsze, lecz powoduje znaczący spadek wydajności Architektura systemów komputerowych IF ID EX MEM WB IF ID EX MEM WB IF ID Czas EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Czas CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 CC10 CC11 CC12 CC13 Cezary Bolek 8 Wstrzymywanie kolejki – Pipeline Stall Zamiana sygnałów na nieaktywne (0) dla EX, MEM, WB Brak taktowania rejestrów PC i IF/ID Architektura systemów komputerowych Cezary Bolek 9 Konflikt danych - Data Hazard ZaleŜności między instrukcjami mogą powodować konflikt danych JeŜeli instrukcje, dla których występują zaleŜności operacji na danych są blisko siebie: Wykonanie potokowe moŜe spowodować zmianę kolejności dostępu do operandów Konflikt typu RAW – Read After Write Hazard Dla dwóch instrukcji: A i następującej po niej B: A: add $1, $2, $3 # r1 jest zapisywany B: sub $4, $1, $3 # r1 jest odczytywany Instrukcja B powinna odczytać operand zanim zostanie zapisany przez A Konflikt występuje gdy B odczytuje operand zanim zapisze go A Architektura systemów komputerowych Cezary Bolek 10 Konflikt typu RAW – przykład Czas (cykle) war. w rej. $2 ij sub $2, $1, $3 ck ur ts and $4, $2, $5 in ć ś or $6, $3, $2 on je lo K add $7, $2, $2 CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 10 10 10 10 10/20 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM sw $8, 10($2) 20 20 20 Wynik sub wykorzystywany jest przez instrukcje and, or, add i sw Instrukcje and oraz or odczytają starą wartość z rejestru $2 Podczas CC5, rejestr $2 jest zapisywany i kolejne instrukcje korzystają z poprawnej wartości Architektura systemów komputerowych Cezary Bolek 11 RAW. Rozwiązanie 1: wstrzymanie potoku cjk rut sn i ć ś on ejl o K Czas (cykle) value of $2 sub $2, $1, $3 and $4, $2, $5 CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 10 10 IM Reg IM 10 10 10/20 ALU DM Reg bubble bubble or $6, $3, $2 20 20 20 Reg ALU DM Reg IM Reg ALU DM Instrukcja and nie moŜe pobierać wartości rejestru aŜ do CC5 Instrukcja and pozostaje w rejestrze IF/ID aŜ do CC5 W kolejce muszą zostać umieszczone dwa puste cykle. Informacja w ID/EX dla cykli CC3 i CC4 Bubbles are NOP instructions: do not modify registers or memory Bubbles delay instruction execution and waste clock cycles Architektura systemów komputerowych Cezary Bolek 12 RAW. Rozwiązanie 2: Forwarding Sprzętowa eliminacja prawie wszystkich konfliktów danych (pomiędzy wybranymi fazami) Transfery najbardziej aktualnych wartości rejestrów z faz EX i MEM na wejście ALU Plik rejestrów jest modyfikowany zgodnie z kolejnością instrukcji w programie Forwarding jest niewidoczny dla jednostki sterującej i nie zwiększa jej komplikacji Architektura systemów komputerowych Cezary Bolek 13 Forwarding Wynik wygenerowany przez ALU jest przesyłany (forwarded) bezpośrednio na wejście ALU Nie są wstrzykiwane puste cykle do kolejki – brak strat Wynik ALU istnieje w rejestrach EX/MEM oraz MEM/WB jic ukr ts in ć ś on je lo K Czas (cykle) CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 sub $2, $1, $3 IM and $4, $2, $5 Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM or $6, $3, $2 add $7, $2, $2 sw $8, 10($2) Architektura systemów komputerowych Cezary Bolek 14 Forwarding - implementacja Dwa multipleksery umieszczane są na wejściach rejestrów AiB Wyjście ALU z fazy EX jest przesyłany wstecz Wynik ALU lub instrukcji Load z fazy MEM – analogicznie Dwa sygnały: ForwardA and ForwardB sterują forwardingiem ID/EX MemtoReg EX/MEM ALU result B m u x Address m u x Data_in Rw Rd A File B Register Rt Rw Instruction Rs m u x m u x A L U MEM/WB ALU result Data Memory m u x WriteData ALUSrc Ext Rw ForwardA Imm26 Imm26 IF/ID RegDst RegWrite ForwardB Architektura systemów komputerowych Cezary Bolek 15 Wykrywanie konfliktu RAW Konflikt RAW moŜe być łatwo wykryty przez kolejkę BieŜąca instrukcja (numery rejestrów) jest dekodowana i umieszczana w rejestrze IF/ID Poprzednia instrukcja (numery rejestrów) jest w rejestrze ID/EX Jeszcze poprzednia w rejestrze EX/MEM Warunki powstania konfliktu: IF/ID.Rs = ID/EX.Rw IF/ID.Rt = ID/EX.Rw IF/ID.Rs = EX/MEM.Rw IF/ID.Rt = EX/MEM.Rw Konflikt RAW wykryty dla poprzedniej instrukcji Architektura systemów komputerowych Konflikt RAW wykryty dla jeszcze poprzedniej (drugiej wstecz) Cezary Bolek 16 Jednostka sterująca forwardingiem Jednostka sterująca generuje sygnały ForwardA and ForwardB UŜywane do sterowania multiplekserami forwardingu UŜywane są pola Rs i Rt z rejestru IF/ID oraz Rw z rejestrów ID/EX i EX/MEM ID/EX ALUSrc MemtoReg EX/MEM ALU result m u x B Rd Address m u x Data_in Rw File A Register Rt B Rs m u x ForwardB m u x A L U MEM/WB ALU result Rw Instruction Ext Data Memory m u x WriteData Imm26 Rw Imm26 IF/ID ForwardA Forwarding Unit Architektura systemów komputerowych Cezary Bolek 17 Sygnały sterujące forwardingiem Sygnał sterujący Działanie ForwardA = 00 Pierwszy operand ALU pochodzi z banku rejestrów ForwardA = 01 1-szy operand ALU - transfer z poprzedniego wyniku ALU ForwardA = 10 Transfer z pamięci danych lub jeszcze poprz. wyniku ALU ForwardB = 00 Drugi operand ALU pochodzi z banku rejestrów ForwardB = 01 2-gi operand ALU - transfer z poprzedniego wyniku ALU ForwardB = 10 Transfer z pamięci danych lub jeszcze poprz. wyniku ALU if (IF/ID.Rs == ID/EX.Rw ≠ 0 else ForwardA = 00 if (IF/ID.Rt == ID/EX.Rw ≠ 0 else ForwardB = 00 and ID/EX.RegWrite) ForwardA = 01 and ID/EX.RegWrite) ForwardB = 01 elseif (IF/ID.Rs == EX/MEM.Rw ≠ 0 and EX/MEM.RegWrite) ForwardA = 10 elseif (IF/ID.Rt == EX/MEM.Rw ≠ 0 and EX/MEM.RegWrite) ForwardB = 10 Architektura systemów komputerowych Cezary Bolek 18 Forwarding – przykład Ciąg instrukcji: lw Gdy lw osiągnie fazę MEM $4, 100($9) add będzie w fazie ALU (EX) add $7, $5, $6 sub $8, $4, $7 sub będzie w fazie ID ForwardB = 01 Transfer danych z fazy MEM Transfer wyniku ALU z fazy ALU (EX) m u x Address Data_in Data Memory WriteData m u x ALU result ALU result A L U m u x Rw Rd m u x lw $4,100($9) B File A Register Rt m u x B Rs add $7,$5,$6 Ext Rw Instruction ForwardA = 10 Rw sub $8,$4,$7 Imm26 Imm26 ForwardA = 10 ForwardB = 01 Architektura systemów komputerowych Cezary Bolek 19 „Trudne” konflikty danych Forwarding nie rozwiązuje wszystkich konfliktów danych Np. instrukcje ładowania danych z pamięci powodują opóźnienia, których nie da się wyeliminować za pomocą forwardingu Przykład Instrukcja lw „nie ma” danych aŜ do końca cyklu CC4 Instrukcja and potrzebuje danych na początku cyklu CC4 - konflikt Czas (cykle) CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 jic JednakŜe lw moŜe lw $2, 20($1) ALU Reg IF DM Reg ukr dokonać transferu ts do jeszcze in and $4, $2, $5 ALU Reg IF DM Reg następnej instrukcji ć ś on je or $6, $3, $2 ALU Reg Reg IF DM lo Rozwiązanie: K wstrzymanie add $7, $2, $2 Reg ALU IF DM Reg kolejki ! Architektura systemów komputerowych Cezary Bolek 20 Wykrywanie konfliktu RAW po instrukcji ładowania Wykrywanie konfliktu RAW po instrukcji ładowania danych z pamięci: Gdy instrukcja Load znajduje się w rejestrze ID/EX Instrukcja potrzebująca dane, które mają być załadowane znajduje się w rejestrze IF/ID Warunek wstrzymania kolejki (Stall): if ((ID/EX.MemRead == 1) and (ID/EX.Rw ≠ 0) and ((ID/EX.Rw == IF/ID.Rs) or (ID/EX.Rw == IF/ID.Rt))) Stall Reakcja: opóźnienie kolejki o jeden cykl Opóźnienie następnej instrukcji po ładowaniu o jeden cykl (po zdekodowaniu) Architektura systemów komputerowych Cezary Bolek 21 Wstrzymanie kolejki ZamroŜenie zawartości rejestrów PC oraz IF/ID na jeden cykl (odcięcie sygnałów zegarowych) śadna nowa instrukcja nie jest pobierana i kolejna instrukcja po Load zostaje wstrzymana Instrukcja Load z rejestru ID/EX wykonywana normalnie Instrukcja ładowania Load moŜe dokonać forwardingu po jednym cyklu opóźnienia Time (cycles) CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 re lw $2, 20($1) IM rd O and $4, $2, $5 m ar go rP or $6, $3, $2 Reg IM Architektura systemów komputerowych ALU DM Reg bubble Reg ALU DM Reg IM Reg ALU DM Reg Cezary Bolek 22 Imm26 Układ wykrywania konfliktu i wstrzymania kolejki Rw m u x Data_in Data Memory m u x WriteData ALU result B m u x Address IF/IDWrite Op PCWrite Rd m u x A L U Rw File A Register Rt Address m u x B Instruction PC Instruction Rs ALU result Ext ForwardA Instruction Memory Rw Imm26 ForwardB Forwarding, Hazard Detection, and Stall Unit MemRead Kolejka jest wstrzymywana poprzez ustawienie PCWrite = ‘0’ i IF/IDWrite = ‘0’ oraz podaniu „zerowych” sygnałów sterujących na ID/EX WB Main Control m u x M 0 EX Bubble Dla pustego cyklu zerowane są sygnały sterujące Architektura systemów komputerowych Cezary Bolek 23 Kompilatory optymalizujące Kompilatory mogą optymalizować generowany kod tak aby uniknąć sytuacji wstrzymania kolejki po instrukcji Load Przykład Dla instrukcji w języku wysokiego poziomu Wolny kod: lw lw add sw lw lw sub sw $10, $11, $12, $12, $13, $14, $15, $15, ($1) ($2) $10, $11 ($3) ($4) ($5) $13, $14 ($6) Architektura systemów komputerowych # # # # # # # # $1 = $2 = stall $3 = $4 = $5 = stall $6 = addr b addr c addr a addr e addr f addr d Cezary Bolek Szybki kod: bez Stall lw lw lw lw add sw sub sw $10, $11, $13, $14, $12, $12, $15, $14, 0($1) 0($2) 0($4) 0($5) $10, $11 0($3) $13, $14 0($6) 24 Konflikt Write After Read - WAR Kolejna instrukcja B powinna zapisywać dane po tym jak zostaną odczytane przez poprzednią instrukcją A Określany mianem anty-zaleŜności przez twórców kompilatorów A: sub $4, $1, $3 B: add $1, $2, $3 # $1 jest czytane # $1 jest zapisywane Konflikt wystąpi, gdy B zapisze rejestr $1 zanim A go odczyta Nie występuje w 5-fazowym potoku, gdyŜ: Odczyt zawsze jest w fazie 2, a Zapis zawsze w fazie 5 Operacje na rejestrach wykonywane są w poprawnej kolejności Architektura systemów komputerowych Cezary Bolek 25 Konflikt Write After Write - WAW kolejna instrukcja B powinna zapisywać wynik zawsze po tym jak zapisze ją instrukcja poprzednia A Określany mianem zaleŜności wyjściowej przez twórców kompilatorów I: sub $1, $4, $3 # $1 jest zapisywane J: add $1, $2, $3 # $1 jest zapisywane Konflikt zachodzi gdy operacje zapisu wykonywane są w złej kolejności Nie moŜe wystąpić w 5-fazowym potoku: Wszystkie operacje zapisu – zawsze w fazie 6-tej Konflikty WAR i WAW występują w złoŜonych potokach Uwaga: Read After Read – RAR nie jest konfiltem Architektura systemów komputerowych Cezary Bolek 26 Konflikty sterowania – Control Hazards KaŜdy skok powoduje zmianę kolejności wykonywania instrukcji – zaburza kolejkę i zmniejsza wydajność (CPI > 1) Skoki warunkowe (rozgałęzienia) wymagają dodatkowo policzenia warunku skoku, co opóźnia decyzję o skoku Wykonanie skoku wymaga (zwykle) uniewaŜnienia kilku instrukcji, które juŜ znajdują się w procesorze Skoki i rozgałęzienia mogą powodować bardzo duŜe zmniejszenie wydajności Architektura systemów komputerowych Cezary Bolek 27 Konflikty sterowania - rozgałęzienia Instrukcje rozgałęzień opierają się na dwóch elementach: Warunku rozgałęzienia spełniony lub niespełniony Adresie docelowym PC + 4 gdy warunek spełniony PC + 4 + 4 × wart. natychm. gdy warunek niespełniony Instrukcje rozgałęzienia są dekodowane w fazie ID Wtedy następna instrukcja jest juŜ pobrana Dla 5-fazowego potoku: opóźnienie 2-cyklowe Adres efektywny obliczany jest w fazie EX (ALU) Warunek rozgałęzienia sprawdzany jest przez ALU (flaga zero) Architektura systemów komputerowych Cezary Bolek 28 Opóźnienie rozgałęzienia – 2 cykle NPC Rd label: lw $8, 0($7) . . . beq $5, $6, label next1 next2 m u x m u x zero = 1 Ext A L U m u x SUB Forwarding z fazy MEM File Imm16 beq = 1 ALU result Register Rt Address A Rs B Instruction m u x Rw m u x Instruction Memory Instruction 00 PCSrc = 1 Next PC B Imm26 Rw Imm26 NPC Inc PC Branch Target Address beq $5,$6,label next1 next2 Gdy instrukcja rozgałęzienia osiągnie fazę EX (ALU), instrukcja next1 jesy juŜ w fazie dekodowania (ID), instrukcja next2 jest w fazie pobierania (IF) Architektura systemów komputerowych Cezary Bolek 29 2-cyklowe opóźnienie dla rozgałęzienia Instrukcje next1 oraz next2 zostaną pobrane w kaŜdym przypadku Potok musi zostać opróŜniony z instrukcji next1 i next1 gdy rozgałęzienie nie jest wykonywane W przeciwnym przypadku instrukcje potok działa normalnie beq $5,$6,label cc1 cc2 cc3 IF Reg ALU IF Next1 # bubble Next2 # bubble cc5 cc6 Reg Bubble Bubble Bubble IF Bubble Bubble Bubble Bubble IF Reg ALU MEM label: branch target instruction Architektura systemów komputerowych cc7 cc4 Cezary Bolek 30 Wczesne wykrywanie rozgałęzień Opóźnienie przy rozgałęzieniu moŜe być zredukowane z 2 do tylko jednego cyklu Decyzja o rozgałęzieniu moŜe być podjęta we wcześniejszej fazie – ID Poprzez przesunięcie bloku Next PC do fazy ID Dodanie komparatora do logiki układu Next PC Tylko jedna instrukcja (za rozgałęzieniem) zostanie pobrana Jeśli rozgałęzienie zostanie wykonane tylko jedną instrukcję trzeba usunąć z potoku Potrzebny jest wtedy jeszcze sygnał zerujący rejestr IF/ID Konwersja pobranej instrukcji na instrukcję NOP Architektura systemów komputerowych Cezary Bolek 31 Zmodyfikowana ścieŜka danych Sygnał PCSrc zeruje rejestr IF/ID w przypadku gdy rozgałęzienie jest wykonywane Data_in A L U m u x Data Memory WriteData m u x Ext m u x Rw Rd m u x ALU result Address B File Address Rw PC Register Rt ALU result m u x A Instruction 00 Instruction m u x Rs B Imm16 Rw Imm26 reset PCSrc Instruction Memory Imm16 Next PC NPC Inc Blok Next PC przeniesiony do fazy dekodowania – ID Zaleta: Opóźnienie dla skoku i rozgałęzienia – tylko 1 cykl Wada: WydłuŜenie fazy dekodowania ⇒ dłuŜszy cykl Architektura systemów komputerowych Cezary Bolek 32 Blok Next PC PCSrc Adres docelowy skoku lub rozgałęzienia 30 NPC 30 A D D 30 0 m 30 u x Ext Imm16 zero msb 4 Imm26 beq bne 1 26 j = Forwarded BusA Architektura systemów komputerowych Cezary Bolek BusB 33 Konflikt rozgałęzień – dalsze usprawnienia Opóźnione rozgałęzienie – Delayed Branch Konstrukcja sterowania tak aby rozgałęzienie było realizowane PO następnej instrukcji Kompilator/asembler wypełnia instrukcją slot opóźnienia – Single Delay Slot Dynamiczna predykcja rozgałęzień – Dynamic Branch Prediction MoŜna próbować przewidzieć rozgałęzienia (skoki) wsteczne w pętlach ⇒ większość przypadków JednakŜe adres docelowy określany jest w fazie ID Redukcja opóźnienia rozgałęzienia z 1 do 0 cykli Architektura systemów komputerowych Cezary Bolek 34 Opóźnione rozgałęzienie Konstrukcja sterowania tak aby rozgałęzienie było realizowane PO następnej instrukcji Dla 1-cyklowego opóźnienia rozgałęzienia istnieje pojedynczy slot, który moŜna wypełnić – Single Delay Slot instrukcja „branch” slot opoźnienie „branch” instrukcja docelowa label: (następna instrukcja) (jeśli rozgałęzienie) . . . add $t2,$t3,$t4 beq $s1,$s0,label Kompilator wypełnia slot opóźnienia Delay Slot Przez niezaleŜną instrukcję (nie mającą wpływu na warunek rozgał.) Braną sprzed instrukcji rozgałęzienia Gdy nie ma niezaleŜnej instrukcji Wypełnienie slotu instrukcją NOP Architektura systemów komputerowych label: . . . beq $s1,$s0,label add $t2,$t3,$t4 Cezary Bolek 35 Rozgałęzienie z zerowym opóźnieniem Wady opóźnionego rozgałęzienia Dla złoŜonych potoków (długich) opóźnienie moŜe wynosić kilka cykli – kilka slotów Sloty opóźnienia muszą być wypełniane konkretnymi instrukcjami lub NOP Jak osiągnąć zerowe opóźnienie dla wykonywanych rozgałęzień ? Adres docelowy rozgałęzienia określany jest w fazie ID Rozwiązanie Sprawdzenie czy PC wskazuje na instrukcje rozgałęzienia Zapisanie adresu docelowego rozgałęzienia w tablicy rozgałęzień w fazie IF Jeśli rozgałęzienie jest estymowane jako wykonywane Next PC = adres docelowy brany z tablicy rozgałęzień W przeciwnym przypadku Next PC = PC + 4 Architektura systemów komputerowych Cezary Bolek 36 Tablica historii rozgałęzień – BHT Tablicę historii rozgałęzień moŜna traktować jako małą pamięć cache Przechowuje adresy docelowe ostatnio wykonanych rozgałęzień Musi posiadać dodatkowe informacje – bity predykcji By przewidzieć czy rozgałęzienie zostanie wykonane czy nie Określane dynamicznie przez hardware Tablica historii rozgałęzień Adresy ostatnich rozgałęzień Inc mux PC Adresy docelowe Bity pre dykcji młodsze bity jako indeks predict_taken = Architektura systemów komputerowych Cezary Bolek 37 Dynamiczna predykcja rozgałęzień Predykcja rozgałęzień podczas wykonywania w oparciu o bity predykcji Jeden lub kilka bitów powiązanych jest z instrukcją rozgałęzienia Tablica historii rozgałęzień stanowi małą pamięć Indeksowaną młodszymi bitami adresu instrukcji rozgałęzień W najprostszym przypadku – 1 bit na kaŜde rozgałęzienie Nie jest pewne czy bit predykcji jest poprawny czy nie Jeśli poprawna predykcja… Kontynuacja wykonywania programu – brak opóźnień Jeśli niepoprawna predykcja … OpróŜnienie potoku z instrukcji niepotrzebnie pobranych – opóźnienia, zmarnowane cykle Uaktualnienie bitów predykcji i adresu docelowego Architektura systemów komputerowych Cezary Bolek 38 2-bitowy schemat predykcji Predykcja jest tylko podpowiedzią, ale zakłada się, Ŝe poprawną Jeśli jednak nie, pobrane instrukcje są usuwane z potoku 1-bitowa predykcja ma wadę Rozgałęzienie w pętli prawie zawsze jest wykonywane – za wyjątkiem ostatniej iteracji 1-bitowy schemat popełni pomyłkę dwa razy – podczas pierwszej i ostatniej iteracji Schemat 2-bitowy działa efektywniej Muszą nastąpić dwie pomyłki aby Taken Predict Taken zmienić bity Predict Taken Taken Dlatego rozgałęzienie jest niepoprawnie przewidywane tylko raz – podczas ostatniej iteracji Architektura systemów komputerowych Not Taken Cezary Bolek Not Taken Taken Not Taken Not Taken Not Taken Not Taken Taken 39 Konflikty w architekturze potokowej - podsumowanie Trzy rodzaje konfliktów Konflikty zasobów: próba wykorzystania tych samych zasobów w danym cyklu Konflikty danych: wynik zaleŜności operujących na danych instrukcjach Konflikty sterowania: wynik skoków i rozgałęzień Konflikty zmniejszają wydajność i powodują komplikację sprzętu Konflikty danych moŜna wyeliminować za pomocą forwardingu Wyjątkiem są instrukcje ładowania z pamięci – wstrzymanie potoku Konflikty sterowania: eliminowane przez złoŜony sprzęt Opóźnione rozgałęzienie jest rozwiązaniem gdy opóźnienie = 1 cykl Predykcja rozgałęzień pozwala na redukcję opóźnienia do zera Błędna predykcja musi skutkować opróŜnieniem kolejki z instrukcji Architektura systemów komputerowych Cezary Bolek 40 Koniec Architektura systemów komputerowych Cezary Bolek 4 1