2. Poziom 0 – złożony z bramek logicznych, z których można zbudować jednobitowe pamięci. Łącząc je w zestawy po 8, 16, 32 lub 64 buduje się rejestry. Z bramek budowane są także jednostki wykonawcze procesora. Poziom 1 – zbiór rejestrów (zw. 8-32) połączonych z arytmometrem (jedn. arytm.-logiczną [ALU]) – tworzą tzw. „ścieżkę danych”. Pracą ścieżki zarządzał zwykle „mikroprogram”, obecnie przeważają konstrukcje gdzie tę funkcje pełni sprzęt. Poziom 2 – poziom architektury listy rozkazów (ISA – Instruction Set Architecture), rozkazy są albo interpretowane przez mikroprogram, albo przez obwody wykonawcze. Poziom 3 – zwykle hybrydowy, wiekszość rozkazów pochodzi z poziomu ISA, ale są również inne, Jak np. inna organizacja pamięci, możliwości uruchamiania wielu programów itp. Funkcje tego poziomu są wykonywane przez interpreter pracujący na poziomie 2 (system operacyjny). Jeżeli rozkaz pochodzi z poziomu 2 wykonywany jest bezpośrednio przez mikroprogram (lub obwody wykonawcze), inne są Interpretowane – stąd „hybrydowy charakter” Poziom 4 – poziom aplikacji, tutaj zwykle mamy do czynienia z translatorami. Poziom assemblera to symboliczna reprezentacja jednego z języków z niższej warstwy program zawiera słowa i symbole, nie składa się wyłacznie z liczb, jak to ma miejsce na poziomach niższych. Poziom 5 – języki wysokiego poziomu (C, C++, Fortran, Java, LISP itd..)
3. Dwa ważne rejestry: „ Licznik” programu PC (Program Counter) Rejestr rozkazów IR (instruction register) Cykl rozkazowy (instruction cycle), lub cykl pobierania-dekodowania-wykonania (fetch-decode-execute cycle) 1. Pobierz kolejny rozkaz z pamięci do IR 2. Zmień wartośc IC, żeby wskazywał na następny rozkaz 3. Określ typ pobranej instrukcji 4. Jeżeli instrukcja korzysta ze słowa w pamięci, określ położenie tego słowa 5. Jeżeli to potrzebne, pobierz słowo do rejestru jednostki centralnej 6. Wykonaj instrukcję 7. Przejdź do kroku 1
4.
5. Równoległość na poziomie rozkazów, Potoki wykonawcze: W maszynie IBM Stretch (1959) wprowadzono po raz pierwszy tzw. bufor wstępnego pobierania rozkazów (prefetch buffer) – jeszcze w trakcie wykonywania poprzedniego rozkazu do tego bufora kopiowano następny rozkaz z pamięci. Rozwinięciem tej idei jest tzw. potok (pipeline):
6. Załóżmy, że czas trwania jednego cyklu to 2 ns, Przejście pojedynczego rozkazu przez cały potok trwa 10 ns Szybkość komputera to 100 MIPS (megainstructions per second)??? Jeżeli długość cyklu to T ns, a potok ma n stopni to opóźnienie wynosi nT ns, Ale jeżeli w każdym cyklu zegara wykonywany jest jeden rozkaz, To w 1 sekundzie wykonuje się 10 9 /T cykli czyli 10 9 /T rozkazów Jeżeli T = 2 ns to maszyna z przykładu osiąga 500 MIPS
7. Architektury superskalarne Dwa równoległe potoki z wspólną jednostką pobierania rozkazów, Synchronizacja? Pentium – dwa potoki: główny mógł wykonywać dowolny rozkaz, drugi tylko proste rozkazy stałoprzecinkowe. Dziś wrócono do konstrukcji z równoległymi potokami.
8. Komputery macierzowe: ILLIAC IV - SIMD – Single Instruction Stream Multiple Data Stream Komputery wektorowe Wydajne operacje na parach elementów danych, wszystkie operacje dodawania Trafiają do jednego, wydajnego sumatora (np.. Cray) Systemy wieloprocesorowe (wielokomputerowe)