architektura komputerów w. 4 Realizacja sterowania Model komputera CPU Jednostka sterująca Program umieszczony wraz z danymi w pamięci jest wykonywany przez CPU program wykonywany jest sekwencyjnie, zmiana kolejności wykonania rozkazów może nastąpić jedynie wskutek działania samego programu wejście wyjście Pamięć architektura komputerów w 4 1
Architektura procesora dane R IR dekoder MAR SP CPU pamięć CR SR PC MAG EU CU MMU adres - jednostka arytmetyczno-logiczna, R - rejestry danych, MBR - bufor, CR - rejestr warunków, IR - rejestr rozkazów, PC - licznik rozkazów, SR - rejestr stanu, - SP wskaźnik stosu, MAR - rejestry adresowe, MAG - wytwarzanie adresu EU - jednostka arytmetyczno-logiczna, CU - jednostka sterująca, MMU - jednostka zarządzająca pamięcią Architektura akumulatorowa. TMP Jeden z argumentów operacji jest umieszczany w wyróżnionym rejestrze, akumulatorze. Tamże umieszczany jest wynik operacji. Rejestr TMP jest niedostępny dla programu. CR AC architektura komputerów w 4 2
Architektura rejestr-pamięć. R Jeden z argumentów operacji jest umieszczany w rejestrze, drugi może być pobrany z rejestru lub z pamięci, tamże umieszczany jest wynik. CR R/M Architektura uniwersalna R/M R/M Oba argumenty są umieszczany w rejestrze lub w pamięci, tamże umieszczany jest wynik. CR R/M architektura komputerów w 4 3
Architektura rejestrowa R R Oba argumenty są umieszczany w rejestrze, tamże umieszczany jest wynik. Architektura typowa dla procesorów RISC CR R Architektura stosowa SP argumenty i wynik umieszczane są na stosie. Architektura m. In. koprocesorów 80x87 CR architektura komputerów w 4 4
Architektura Scalona 4-bitowa 74181 Architektura Scalona 4-bitowa 74181 T G A=B A 0 -A 3 B 0 -B 3 F 0 -F 3 C 0 C4 M - mode A M 0 -A 3, B 0 -B 3 - argumenty wejściowe F 0 -F 3 - wynik operacji C 0, C 4 - przeniesienia S 0 -S 3 - programowanie funkcji układu S 0 -S 3 architektura komputerów w 4 5
Architektura Scalona 4-bitowa 74181 Architektura A 0 -A 3 C 0 F 0 -F 3 B 0 -B 3 C 4 A 4 -A 7 C 0 F 4 -F 7 B 4 -B 7 C 4 Konfiguracja połączeń 2 układów do jednostki 8-bitowej M, S 0 -S 3, architektura komputerów w 4 6
Architektura R 1 C 0 L,S C 4 R 2 C 0 SE L,S C 4 M,S 0 -S 3 L,S Przykładowa jednostka wraz z rejestrami Organizacja sterowania Sterowanie polega na wymuszaniu sekwencji czynności (mikrooperacji) zapewniających automatyczne wykonanie kolejnych rozkazów programu umieszczonego w pamięci. Wykonanie programu odbywa się w kolejnych cyklach rozkazowych. Cyklem rozkazowym nazywa się sekwencja czynności związanych z pobraniem rozkazu z pamięci i jego interpretacją. Cykl rozkazowy przebiega w fazach każda faza składa się z cykli maszynowych, które odpowiadają dostępom do pamięci czas trwania fazy zależy od procesora i rodzaju wykonywanego rozkazu Przejście z jednego stanu do drugiego zachodzi po zakończeniu wszystkich przewidzianych dla niego czynności i zwykle wyznaczane jest przez sygnał zegara. Procesor może również znaleźć się w innych stanach nie wynikających z wykonywania programu - np. stanie zatrzymania, stanie zawieszenia lub wynikających z funkcjonowania systemu przerwań. Fetch Decode Read Execute Write architektura komputerów w 4 7
Organizacja sterowania Fetch Decode Read Execute Write Fazy wykonania rozkazu: F (fetch) pobranie kodu rozkazu z pamięci D (decode) dekodowanie w celu wytworzenia sygnałów sterujących R (read) pobranie operandu z pamięci (opcjonalne) E (execute) wytworzenie wyniku (zmienny czas) W (write) zapis wyniku wykonania (do pamięci lub rejestru) Cykl rozkazowy - przykład 0 Mov R,10 R IR MAR dekoder SP pamięć CR SR PC MAG EU CU MU adres architektura komputerów w 4 8
Fetch Cykl rozkazowy - przykład 0 Mov R,10 R Mov R,x IR MAR dekoder SP pamięć CR SR RD 0 MAG EU CU MU adres Decode Cykl rozkazowy - przykład 0 Mov R,10 R Mov R,x IR 10 dekoder SP pamięć CR SR RD 0 MAG EU CU MU adres architektura komputerów w 4 9
Read Cykl rozkazowy - przykład 0 Mov R,10 R Mov R,x IR 10 dekoder SP pamięć CR SR WR 0 MAG EU CU MU adres Execute Cykl rozkazowy - przykład 0 Mov R,10 R Mov R,x dekoder IR 10 SP pamięć CR SR PC MAG EU CU MU adres architektura komputerów w 4 10
Write Cykl rozkazowy - przykład 0 Mov R,10 2 Mov IR 10 dekoder SP 10 2 MAR pamięć CR SR RD PC MAG EU CU MU adres How the CPU Works Cykl rozkazowy Cykl rozkazowy różnych procesorów może się różnić zależnie od ich architektury wewnętrznej i organizacji. Każdą z faz ( w przypadku sterowania synchronicznego) można podzielić na cykle maszynowe odpowiadające dostępom do pamięci wyznaczane przez zegar. Przykład 1 Cykl rozkazowy Intela 8080 zajmuje 1 do 5 cykli maszynowych. Każdy z cykli maszynowych trwa od 3 do 5 taktów zegara. Najkrótszy cykl rozkazowy to 4 takty, najdłuższy 17 taktów (5 cykli maszynowych - jeden 5 taktów i 4 po 3 takty). Przykład 2 (Z80) Wykonanie rozkazu składa się z cyklu M1 pewnej ilości cykli M2 I M3 architektura komputerów w 4 11
Cykl rozkazowy Cykl maszynowy mikrokontrolera 8051 składa się z sześciu stanów oznaczonych S1 do S6. Każdy ze stanów trwa dwa okresy sygnału taktującego, oznaczonych jako fazy P1 i P2. Wynika z tego, że czas trwania cyklu maszynowego wynosi 12 taktów zegara, co dla częstotliwości rezonatora równej 12MHz daje czas 1us. Czas wykonywania instrukcji wynosi jeden, dwa lub cztery cykle maszynowe, w zależności od instrukcji. Cykl rozkazowy Niżej przedstawione są cztery różne cykle rozkazowe dla czterech różnych instrukcji mikroprocesora 8051:. a) cykl rozkazowy instrukcji jednobajtowej wykonywanej w pojedynczym cyklu maszynowym. b) wykonywanie instrukcji dwubajtowej wykonywanej w pojedynczym cyklu maszynowym. c) wykonanie instrukcji jednobajtowej wykonywanej w ciągu dwóch cykli maszynowych. architektura komputerów w 4 12
Cykl rozkazowy W związku z multipleksowaniem szyny adresowej A0-A7 i szyny danych, mikrokontroler musi generować dodatkowy sygnał sterujący zewnętrznym buforem zatrzaskowym - tym sygnałem jest ALE. Sygnał ten jest generowany podczas pobierania każdego słowa rozkazu dwukrotnie w każdym cyklu maszynowym. Wyjątek stanowi rozkaz MOVX (oraz MOVC przy dostępie do zewnętrznej pamięci programu) realizujący dostęp do pamięci zewnętrznej. Instrukcja ta jest jednobajtowa, wykonywana w dwóch cyklach maszynowych. W pierwszym cyklu następuje odczyt kodu instrukcji (pierwszy sygnał ALE) oraz ustawienie adresu żądanej komórki pamięci (drugi sygnał ALE). W drugim cyklu maszynowym następuje odczyt/zapis szyny danych - nie może wówczas wystąpić sygnał ALE, gdyż zniszczyłby on wcześniej ustawiony adres komórki pamięci. Cykl rozkazowy. Realizacja sterowania. Sterowanie układowe. Sterowanie jest realizowane przez autonomiczne układy sterujące. Układy sterowania są skomplikowane przykładem takiej realizacji jest Intel 8080 Rozkazy RI warunki Sygn zewn. Sygn zewn. warunki dekoder operacje Pamięć stanów stany Układ wykonawczy Sygnały mikrooperacji takty zegar architektura komputerów w 4 13
Cykl rozkazowy. Realizacja sterowania. Sterowanie mikroprogramowane Z rejestru rozkazów Adres następnego mikrorozkazu Rejestr nast.. stanu Rejestr stanu 2 matryce: mikrooperacji i stanów, Kombinacja stanu wyjść matrycy mikrooperacji nazywa się mikrorozkazem takty Dekoder stanu Do węzłów logicznych warunki Cykl rozkazowy. Realizacja. Sterowanie mikroprogramowane. Przykład 1. IBM 370/165 długość słowa 108 b, 4K słów, czas dostępu do pamięci 80ns Przykład 2. Motorola 68000. Struktura dwuwarstwowa, pojemność sumaryczna pamięci 30550 bitów. Słowo 70 bitowe steruje 180 węzłami logicznymi. architektura komputerów w 4 14
Cykl rozkazowy Charakterystyka maszyn CISC i RISC Programy wykonywane na współczesnych maszynach są przeważnie napisane w językach algorytmicznych. Raport [Klein] podaje, że różne programy tłumaczone kompilatorami języka C firm GNU i Sun nie wykorzystywały 71% rozkazów procesora Motorola68020. Typowe wykorzystanie rozkazów procesora CISC: [B.S. Chalk] przesłania 46,3% skoki, wywołania podprogramów i powroty 26,6% arytmetyczne 14,1% logiczne 1,6% Cykl rozkazowy Charakterystyka maszyn CISC i RISC Charakterystyka procesorów CISC 1. Duża liczba rozkazów (typowo od 100-200) 2. Rozkazy realizujące specjalizowane zadania obok rozkazów przesłań 3. Duża liczba trybów adresowania (5-20) 4. Mnogość formatów i czasów wykonania rozkazów 5. Zwykle mikroprogramowana jednostka sterująca 6. akumulator lub niewiele rejestrów uniwersalnych 7. większość argumentów w pamięci, rejestry specjalizowane Charakterystyka procesorów RISC 1. Niewiele rozkazów 2. Rozkazy wykonywane w jednym cyklu rozkazowym 3. Niewiele formatów rozkazów prosty dekoder kombinacyjny, proste układy wykonawcze, krótki czas wykonania działań 4. Operacje przesłań do pamięci - jedynie typu STORE i LOAD wyeliminowanie fazy R i krótszy czas fazy W 5. Wiele uniwersalnych rejestrów 6. Argumenty dla operacji - przeważnie zawartość rejestrów konflikty dostępu tylko podczas wykonania rozkazów load/store 7. Układowa jednostka sterująca 8. Często architektura realizująca przetwarzanie potokowe architektura komputerów w 4 15
Cykl rozkazowy PROCESOR RISC MIPS R3000 lista rozkazów: 74 w tym 58 podstawowych typów całkowitoliczbowych load/store 12 skoki 12 arytmetyczno-logiczne 18 mnożenie/dzielenie 8 przesunięcia 6 wywołania systemowe 2 Cykl rozkazowy PROCESOR RISC MIPS R3000 współpraca z pamięcią: do pobrania kodu rozkazu potrzeba jednego cyklu pamięci szerokość magistrali, rejestrów oraz format rozkazu są identyczne argumenty dla operacji arytmetycznych nie są pobierane z pamięci architektura komputerów w 4 16
Cykl rozkazowy PROCESOR RISC SPARC przekazywanie parametrów pomiędzy procedurami wspomagane hardware owo architektura komputerów w 4 17
przetwarzanie sekwencyjne i potokowe Procesor CISC uproszczona architektura R IR dekoder MAR SP pamięć CR SR PC MAG EU CU MU adres jednostka arytmetyczno/lgiczna; R rejestr danych; MBR bufor; CR rejestr warunków; IR rejestr rozkazów; PC licznik rozkazów; SR rejestr stanu; SP- wskaźnik stosu; MAR rejestry adresowe; MAG wytwarzanie adresu architektura komputerów w 4 18
Cykl rozkazowy przetwarzanie potokowe Cykl 1 Pobranie dekodowaniewykonanie zapisanie Rozkaz 1 3 2 Rozkaz 2 Rozkaz 1 Rozkaz 3 Rozkaz 2 Rozkaz 1 4 Rozkaz 4 Rozkaz 3 Rozkaz 2 Rozkaz 1 5 Rozkaz 5 Rozkaz 4 Rozkaz 3 Rozkaz 2 przetwarzanie może być zakłócone przez rozkazy skoku oraz przez rozkazy wymagające do wykonania większej ilości faz Read i Write Cykl rozkazowy Architektura klasyczna (CISC Complex Instruction Set Computer ) Lista rozkazów rozkazy realizują zarówno działania proste i skomplikowane rozbudowane sposoby (tryby) adresowania argumenty umieszczone są zwykle w pamięci stałe w dodatkowych słowach kodu rozkazu Organizacja rozwiązania intuicyjne akumulator lub niewiele rejestrów uniwersalnych większość argumentów w pamięci, rejestry specjalizowane złożone buforowanie i dekodowanie rozkazów (zmienny rozmiar) architektura komputerów w 4 19
Cykl rozkazowy Architektura klasyczna (CISC Complex Instruction Set Computer ) rozbudowana lista rozkazów i nieregularna struktura kodu zmienny czas pobrania kodu i dekodowania rozkazu skomplikowany dekoder (układ sekwencyjny) skomplikowane układy wykonawcze, zmienny czas wykonania działań większość operandów w pamięci częste konflikty dostępu podczas wykonania etapów F, R i W długi czas wykonania etapów F, R i W Cykl rozkazowy. Koncepcja przetwarzania potokowego poszczególne fazy wykonują specjalizowane układy funkcjonalne - jednokierunkowy przepływ danych między układami funkcjonalnymi - możliwe jednoczesne wykonanie różnych etapów - szybkość wykonania ogranicza najdłuższy etap i narzut separacji czas wykonania etapu pobranie kodu rozkazu (fetch) rozmiar kodu rozkazu czas dostępu do pamięci (odczyt słowa lub jego części) dekodowanie (decode) architektura listy rozkazów (złożoność i różnorodność działań) struktura kodu rozkazu (niejednorodność) pobranie operandu z pamięci (data read) tryb adresowania i czas dostępu do pamięci (odczyt) wykonanie (execute) złożoność wykonywanych działań zapis wyniku do rejestru (put away) [lub pamięci (data write)] czas dostępu do pamięci (zapis słowa lub jego części) architektura komputerów w 4 20
przetwarzanie potokowe postulaty: uproszczona lista rozkazów, stały rozmiar i struktura słowa kodu: stały czas pobrania kodu i dekodowania rozkazu prosty dekoder kombinacyjny proste układy wykonawcze, krótki czas wykonania podstawowych działań większość operandów w rejestrach procesora: wyeliminowanie etapu R i krótszy czas etapu W (load/store) rzadsze konflikty dostępu podczas wykonania etapów F, W Procesor potokowy uproszczona architektura architektura komputerów w 4 21
przetwarzanie potokowe Niezbędne skrócenie czasu pobierania kodu z pamięci (buforowanie, cache) Nieuniknione przestoje wskutek konfliktów przetwarzanie potokowe Cykl 1 Pobranie dekodowaniewykonanie zapisanie Rozkaz 1 2 3 4 5 Rozkaz 2 Rozkaz 1 Rozkaz 3 Rozkaz 2 Rozkaz 1 Rozkaz 4 Rozkaz 3 Rozkaz 2 Rozkaz 1 Rozkaz 5 Rozkaz 4 Rozkaz 3 Rozkaz 2 przetwarzanie może być zakłócone przez rozkazy skoku oraz przez rozkazy wymagające do wykonania więcej niż jednego cyklu rozkazowego architektura komputerów w 4 22
Procesor RISC. Hazardy. Hazard danych przetwarzanie potokowe Read-after-write Write-after-read write-after-write rozwiązania: programowe (kompilator) program: krok1: krok 2 lb r2,a ;(a) r2 lb r2,a lb r2,a Addi r3,r2,#7 ;r2+7 r3 nop sub r6,r4,r5 sb r3,b ;r3 b addi r3,r2,#7 addi r3,r2,#7 sub r6,r4,r5 ;r4-r5 r6 nop nop sb r3,b sb r3,b sub r6,r4,r5 przetwarzanie potokowe Hazard danych Read-after-write Write-after-read write-after-write rozwiązania: Hardware Operand forwarding IF ID EX WB IF ID EX WB architektura komputerów w 4 23
przetwarzanie potokowe Hazard danych Read-after-write Write-after-read write-after-write rozwiązania: Hardware Operand forwarding przetwarzanie potokowe sprzętowe blokowanie potoku scoreboarding etykiety ustawienie etykiety Zerowanie etykiety Zbiór rejestrów IF ID EX WB architektura komputerów w 4 24
Procesor RISC. Hazardy. Hazard zasobów. przetwarzanie potokowe Jeden rozkaz jest pobierany, inny w tym samym czasie pobiera argument z pamięci 1 Rozkaz 1 2 Rozkaz 2 Rozkaz 1 Rozwiązanie rozdzielenie pamięci programu i danych (model Harvard). Realizowane zwykle na poziomie L1 pamięci cache. Procesor RISC. Hazardy. Hazardy sterowania przetwarzanie potokowe rozwiązania: predykcja skoków; omijanie skoków, opóźnianie skoków architektura komputerów w 4 25
przetwarzanie potokowe Procesor RISC. Hazardy. Predykcja skoków Przewidywanie statyczne. Przyjmuje się, że skok do tyłu jest wykonywany zawsze a do przodu nie. Trafność metody 65-85% Przewidywanie dynamiczne. Procesor posiada tablicę Adres skoku historia Decyzja podejmowana jest na podstawie historii. Pentium - tablica 256 pozycji, 2 bity na historię, trafność 85% Pentium Pro - tablica 512 pozycji, 4 bity na historię, trafność 90-95% superpipelining prędkość zegara ograniczony jest ( między innymi), przez długość najdłuższego, najwolniejszego etapu w potoku, logika, która tworzy każdy etap może być podzielona, zwłaszcza dla dłuższych faz, przekształcając potok w superpotok z większą ilością krótszych etapach. Następnie cały procesor może pracować z większą prędkością zegara. Oczywiście, każda instrukcja będzie teraz wykonać więcej cykli do zakończenia, ale procesor nadal będzie wykonywał 1 instrukcję na cykl, a że będzie więcej cykli na sekundę, więc procesor zakończy więcej instrukcji na sekundę. architektura komputerów w 4 26
superpipelining Pipeline Depth 6 UltraSPARC T1 7 PowerPC G4e 8 UltraSPARC T2/T3, Cortex-A9 10 Athlon, Scorpion 11 Krait Processors 12 Pentium Pro/II/III, Athlon 64/Phenom, Apple A6 13 Denver 14 UltraSPARC III/IV, Core 2, Apple A7/A8 14/19 Core i*2/i*3 Sandy/Ivy Bridge, Core i*4/i*5 Haswell/Broadwell 15 Cortex-A15/A57 16 PowerPC G5, Core i*1 Nehalem 18 Bulldozer/Piledriver, Steamroller 20 Pentium 4 31 Pentium 4E Prescott Superpipelining w architekturze IA32 złożone tryby adresowania i minimalna liczba rejestrów oznacza że ograniczona ilość instrukcji może być wykonywana równolegle z powodu potencjalnych zależności. Rozwiazanie -dynamicznie dekodowania instrukcji x86 do prostych typu RISC mikro-instrukcji, które mogą być wykonywane przez szybki superskalarny rdzeń RISC z własnością register renaming. Większość instrukcji x86 dekoduje się 1, 2 lub 3 µops, bardziej skomplikowane wymagają większej ich liczby. architektura komputerów w 4 27