Witold Komorowski, dr inż.
Koncepcja RISC i przetwarzanie potokowe
RISC koncepcja architektury i organizacji komputera
Aspekty opisu komputera Architektura Jak się zachowuje? Organizacja Jak działa? Realizacja Z czego jest zrobiony?
Problemy projektantów Realizacja tranzystory, układy scalone, oporniki, wolty, mikroampery, gigaherce, nanosekundy... E L E K T R O N I K A Organizacja bramki, przerzutniki, sumatory, rejestry, multipleksery, pamięci, sterowniki, procesory... S T R U K T U R A Architektura rozkazy, operacje, argumenty, adresy, przerwania... P R O G R A M O W A N I E
Architektura listy rozkazów (IS Architecture) Interfejs Software Hardware
Wymagania użytkownika Wydajność (performance) czyli szybkość wykonywania programów
Czas wykonania programu (t) = = liczba wykonanych rozkazów (IC) x x liczba cykli zegara potrzebnych do wykonania rozkazu (CPI) x x czas cyklu zegara (1/f) t = IC * CPI * 1/f
Czynniki wpływające na wydajność Realizacja (technologia) Organizacja (struktura) Architektura (lista rozkazów) Oprogramowanie (kompilator) IC CPI f
Organizacja komputera Model von Neumann'a M CPU I/O Memory Central Processing Unit Input/Output
Cykl rozkazowy Pobranie rozkazu z pamięci Wykonanie rozkazu w procesorze
Cykl rozkazowy Pamięć zawsze wolniejsza niż procesor! M CPU I/O Przechowuje program Przechowuje dane Pobiera rozkazy Dekoduje rozkazy Wykonuje operacje
Cykl rozkazowy von Neumann s bottleneck M CPU I/O Przechowuje program Przechowuje dane Pobiera rozkazy Dekoduje rozkazy Wykonuje operacje
Sekwencja rozkazów 1. rozkaz Pobranie Wykonanie 2. rozkaz Czas dostępu do pamięci Pobranie Wykonanie Czas cyklu Czas
Możliwości przyspieszenia sekwencji rozkazów * Skrócenie cyklu rozkazowego (szczególnie fazy odczytu z pamięci) * Współbieżne wykonywanie różnych faz kolejnych rozkazów
Podstawowe zmiany organizacji Pamięć buforowa: skrócenie średniego czasu dostępu Przetwarzanie potokowe: zwiększenie częstości kończenia rozkazów
Pamięć buforowa (cache) Cache Main Hit CPU Miss Duża Wolna Dość tania Mała Bardzo szybka Droga
Praktyczne efekty stosowania pamięci cache Cache Main Hit CPU Duża Wolna Dość tania > 98% Mała Bardzo szybka Dość droga
Potok rozkazów (pipeline) 1. rozkaz Pobranie Wykonanie 2. rozkaz Pobranie Wykonanie 3. rozkaz Pobranie Wykonanie 4. rozkaz Czas cyklu Czas między zakończeniem kolejnych rozkazów Pobranie Wykonanie
Wczesne realizacje Pamięć Jednostka komunikacji BIU Bufor (6 B) Potok 2-stopniowy w μp 8086 (r.1978) Jednostka wykonawcza EU CPU
Potok wielostopniowy Czas cyklu 1. F1 F2 F3 F4 2. F3 Czas pomiędzy rozkazami 3. 4. F2 F1 5. CPI = 1 6. Takty zegara
Koncepcja tradycyjna Cel Zapełnienie luki semantycznej Środki Sterowanie mikroprogramowe Efekt Rozbudowane listy rozkazów, formaty i sposoby adresowania Skomplikowany układ sterowania, spowolnione działanie CISC Complex Instruction-Set Computer
Koncepcja RISC (Reduced Instruction-Set Computer) Cel Szybkie wykonywanie rozkazów Środki Potokowość, pamięć cache Efekt Stała długość rozkazu, prosty układ sterowania Prymitywne rozkazy, model LOAD - STORE, skomplikowany kompilator
Genealogia RISC RISC I SPARC V9 SPARC D.Patterson, C.Sequin Sun Microsystems Berkeley (1980 1981) (1987) (1994) MIPS MIPS R2000 MIPS32, MIPS64 J.Hennessy MIPS Computer Systems (MIPS Technologies) Stanford (1981 1984) (Silicon Graphics) IBM 801 RS/6000 PowerPC Power4 G.Radin IBM (1975 1982) (+ Motorola) (2000) Transputer D.May, I.Barron INMOS (1983)
CISC vs RISC Architektura Liczba różnych długości rozkazu Liczba sposobów adresowania Maksymalna długość rozkazu [bajty] Adresacja pośrednia CISC RISC IBM 370 3 5 8 Nie VAX 56 21 57 Tak MC 68000 11 12 22 Nie IA-32 12 7 16 Nie SPARC 1 2 4 Nie MIPS 1 1 4 Nie RS/6000 1 4 4 Nie
CISC vs RISC Architektura Liczba różnych długości rozkazu Liczba sposobów adresowania Maksymalna długość rozkazu [bajty] Adresacja pośrednia CISC RISC IBM 370 3 5 8 Nie VAX 56 21 57 Tak MC 68000 11 12 22 Nie IA-32 12 7 16 Nie SPARC 1 2 4 Nie MIPS 1 1 4 Nie RS/6000 1 4 4 Nie
Potok 5-stopniowy I cache D cache Load/Store IF ID EX WB (AC) MA Register file IF Instruction fetch ID Instruction decode EX/AC Execution / Address calculation MA WB Memory access Write back
Bezkonfliktowe przetwarzanie potokowe 1. IF ID EX MA WB 2. IF ID EX MA WB 3. IF ID EX MA WB 4. IF ID EX MA WB 5. IF ID EX MA WB 6. IF ID EX MA WB Takty zegara
Zakłócenia potoku Konflikt zasobów (równoczesne żądanie dostępu do pamięci) Konflikt danych (opóźniona aktualizacja danych w pamięci) Konflikt sterowania (realizacja skoków)
Konflikt zasobów 1. IF ID AC MA WB 2. IF ID EX MA WB rozkaz 1. czyta/zapisuje dane z/do pamięci 3. IF ID EX MA WB 4. IF ID EX MA WB 5. IF ID EX MA WB rozkaz 4. jest z pamięci odczytywany 6. IF ID EX MA WB Takty zegara
Rozwiązanie konfliktu zasobów Pamięć danych i rozkazów Procesor centralny Pamięć danych Pamięć rozkazów Procesor centralny Architektura Princeton (von Neumann a) Architektura Harvard (na poziomie pamięci cache)
Konflikt danych 1. IF ID EX MA WB r1 r2 + r3 2. IF ID EX MA WB r5 r1 + r4 t1 t2 t3 t4 t5 t6 t7 t8 t9 Takty zegara Rozkaz 2. w takcie t5 wymaga danych, które będą zapisane w rejestrze przez rozkaz 1. dopiero w takcie t6.!
Rozwiązanie konfliktu danych (nieefektywne) 1. IF ID EX MA WB r1 r2 + r3 2. IF ID ~~ ~~ EX MA WB r5 r1 + r4 3. IF ID ~~ ~~ EX MA WB t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 Takty zegara Następuje wstrzymanie potoku na dwa takty
Rozwiązanie konfliktu danych przez wyprzedzanie argumentów IF EX ID MA WR Rozkaz r1 r2 + r3 r2 + r3 IF EX ID MA WR Rozkaz r5 r1 + r4 Wynik jest przekazywany drogą na skróty (forwarding) do następnego rozkazu
Konflikt sterowania 1. IF ID EX MA WB 2. IF ID AC MA WB Skok warunkowy efektywny Kara za skok 3. IF ID EX MA WB 4. IF ID EX MA WB Opróżnienie potoku z niepotrzebnych rozkazów 3. i 4. 5. IF ID EX MA WB 6. IF ID EX MA WB Takty zegara
Łagodzenie konfliktów sterowania * Skoki opóźnione (delayed branch) * Przewidywanie skoków (branch prediction)
Skoki opóźnione Każdy rozkaz skoku zmienia adres docelowy dopiero po następnym rozkazie Przykład opóźnionego rozkazu CALL add r1,r5,r7 Po optymalizacji: sub r2,r3,r2 add r1,r5,r7 call tamtam call tamtam nop sub r2,r3,r2 inc r4 inc r4
Przewidywanie skoków Tablica skoków (Branch Target Buffer, BTB) Licznik rozkazów Adres rozkazu Adres docelowy Stan α σ s
Algorytm predykcji Nieefektywny Będzie efektywny s=01 Nieefektywny Efektywny Będzie nieefektywny s=10 Nieefektywny Będzie efektywny s=00 Efektywny Efektywny Będzie nieefektywny s=11 Nieefektywny Efektywny
Everything should be made as simple as possible, but not one bit simpler. Albert Einstein
Procesory superskalarne i przetwarzanie out-of-order Pobieranie rozkazów Dekodowanie rozkazów Przydział rozkazów Jednostka wykonawcza 1 Jednostka wykonawcza 2 Jednostka wykonawcza k Kompletacja
Działanie procesora superskalarnego Kod źródłowy Kompilator Kod liniowy Procesor Sprzętowe zrównoleglenie rozkazów
Koncepcja VLIW (Very Long Instruction Word) Grupa rozkazów bardzo długie słowo rozkazowe MUL FADD LD BRC Jednostka stp. Jednostka zmp. Jednostka pam. Jednostka obsługi skoków
Działanie procesora VLIW Kod źródłowy Kompilator Kod równoległy Procesor Programowe (statyczne) zrównoleglenie kodu
Realizacja techniki EPIC (Explicitly Parallel Instruction Computing) Procesor Itanium (IA-64) Wiązka trzech 41-bitowych rozkazów RISC 128 rejestrów stp. 64-bitowych 128 rejestrów zmp. 82-bitowych Obszar 2 64 adresów (16 EB) 22 jednostki funkcyjne potok 8-stopniowy Itanium2, 2002
Więcej
Tanenbaum, A.: * Strukturalna organizacja systemów komputerowych. Helion, 2006 (wyd. 5.) [50] Stallings, W.: * Organizacja i architektura systemu komputerowego. WNT 2004 (wyd. 3.) [46] Biernat, J.: * Architektura komputerów. WPWr, 2005 (wyd. 4.) [18] Komorowski, W.: * Instrumenta computatoria. Helion, 2000 [12] Komorowski, W.: * Krótki kurs architektury i organizacji komputerów. Mikom, 2004 [12]
... wydaje mi się to jakoś nierealne, że tak szybko i tak daleko doszliśmy. Nie wiadomo zresztą, po co. Stanisław Lem