Architektura komputerów Wykład 3 Jan Kazimirski 1
Podstawowe elementy komputera. Procesor (CPU) 2
Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania 3
Podstawowe elementy komputera CPU PAMIĘĆ URZĄDZENIA WE/WY SZYNA DANYCH SZYNA ADRESOWA SZYNA STERUJĄCA 4
CPU CPU Central Processing Unit Wykonuje rozkazy programu komputerowego umieszczonego w pamięci komputera Elementy Jednostka arytmetyczno-logiczna (ALU) Rejestry sprzętowe Układy sterujące 5
ALU Jednostka arytmetyczno-logiczna Wykonuje podstawowe operacje matematyczne i logiczne Operuje na binarnych liczbach całkowitych bez znaku, lub w kodzie uzupełnienia do dwóch (czasami również inne kodowania np. BCD) Zakres liczb zależy od tzw. szerokości słowa maszynowego 8,16,32,64,128 bitów 6
FPU FPU Floating Point Unit jednostka obliczeń zmiennoprzecinkowych Wykorzystuje standard IEEE 754 zapisu zmiennopozycyjnego Formaty 32 lub 64 bity (inne stosowane do wyników pośrednich) Dawniej dostępna jako osobny układ, obecnie najczęściej zintegrowana 7
Zbiór instrukcji procesora Pełny zestaw rozkazów zrozumiałych przez procesor Postać binarna kod maszynowy Postać wygodniejsza dla człowieka zapis symboliczny assembler Język niskiego poziomu pełna kontrola nad postacią maszynową programu 8
Wykonywanie instrukcji maszynowej Pobranie instrukcji Dekodowanie instrukcji Wyliczenie adresu operandu i pobranie operandu Wykonanie operacji Wyliczenie adresu rezultatu i zapisanie rezultatu 9
Pobieranie i zapis danych Dane mogą być zapisywane i pobierane z: Pamięci operacyjnej Jednego z rejestrów procesora Urządzenia zewnętrznego 10
Format instrukcji Każda instrukcja ma unikalny wzorzec bitowy Wzorce bitowe instrukcji są dekodowane po załadowaniu instrukcji do rejestru instrukcji (IR) Zapis symboliczny instrukcji: np. ADD, MOV, DIV, JMP itd. Zaawansowane assemblery pozwalają na symboliczny zapis położenia danych np. ADD R, Y 11
Przykład formatu instrukcji Kod instrukcji Operand 1 Operand 2 4 bity 6 bitów 6 bitów 16 bitów 12
Typy instrukcji Przetwarzanie danych (instrukcje arytmetyczne, logiczne, konwersji) Transfer danych (pamięć rejestr, rejestr rejestr, rejestr stos) Instrukcje wejścia/wyjścia Instrukcje sterujące 13
Liczba operandów 0 operandów wszystkie operandy w domyślnych lokacjach (np. na stosie) 1 operand dla operacji dwuargumentowych drugi argument w domyślnej lokacji (np. Akumulator) 2 operandy jeden z operandów jest jednocześnie lokacją rezultatu 3 i więcej operandów złożone instrukcje CISC 14
Typy operandów Adresy (pamięć, rejestry) Liczby (całkowite, rzeczywiste, BCD) Znaki Dane logiczne (bity, flagi) 15
Instrukcje przetwarzanie danych Instrukcje arytmetyczne dodawanie, odejmowanie, mnożenie, dzielenie Operacje przesunięcia i rotacji (przesuwanie bitów) Operacje logiczne i bitowe (AND,OR,NOT,XOR) Operacje konwersji (np. Dwójkowa dziesiętna, dwójkowa - BCD) 16
Instrukcje transfer danych Ładowanie danych z pamięci do rejestrów i z rejestrów do pamięci Ładowanie danych bezpośrednich do rejestrów i pamięci. Przenoszenie danych w pamięci Operacje na stosie 17
Instrukcje wejście/wyjście Realizowane za pomocą rozkazów maszynowych (IN, OUT) Realizowane za pomocą zwykłych przesłań (przestrzeń I/O mapowana w pamięci) Stosowanie kontrolerów DMA 18
Instrukcje - sterowanie Instrukcje skoków warunkowych i bezwarunkowych Instrukcje wywołania i powrotu z podprogramu Obsługa przerwań Instrukcje zarezerwowane dla systemu operacyjnego 19
Stos Stosowany do realizacji wywołań podprogramów oraz tymczasowego przechowywania danych Realizacja sprzętowa i programowa: Stos sprzętowy osobne układy logiczne Stos programowy wydzielony obszar pamięci segment stosu, wierzchołek stosu przechowywany w rejestrze. 20
Stos c.d. Stos pozwala na realizację zagnieżdżonych skoków do podprogramów. Wykorzystywany jest również do przekazywania danych z i do podprogramów Na stosie można np. zachować zawartość rejestrów aby nie uległa zamazaniu w trakcie wykonywania podprogramu lub procedury obsługi przerwania. 21
Skok ze śladem SS:FFFA??? SS:FFFB??? SS:FFFC??? SS:FFFD??? SS:FFFE??? SS:FFFF??? SP Program wykonuje zwykłą instrukcję, nie korzysta ze stosu PC CS:0000 ADD A,B CS:0001 MOV HL,$0200 CS:0002 ROT 4 CS:0003 CALL 0100 CS:0004 MOV $0200,HL... CS:0100 INT 13 CS:0101 MOV HL,AB CS:0102 ADD HL,15 CS:0103 RET 22
Skok ze śladem SS:FFFA??? SS:FFFB??? SS:FFFC??? SS:FFFD??? SS:FFFE??? SS:FFFF CS:0004 SP Program napotkał instrukcję skoku Adres kolejnej instrukcji umieszczany jest na stosie Licznik programu ustawiany jest na instrukcję podprogramu PC CS:0000 ADD A,B CS:0001 MOV HL,$0200 CS:0002 ROT 4 CS:0003 CALL 0100 CS:0004 MOV $0200,HL... CS:0100 INT 13 CS:0101 MOV HL,AB CS:0102 ADD HL,15 CS:0103 RET 23
Skok ze śladem SS:FFFA??? SS:FFFB??? SS:FFFC??? SS:FFFD??? SS:FFFE??? SS:FFFF CS:0004 SP Wykonywane są instrukcje podprogramu. Stos nie jest wykorzystywany PC CS:0000 ADD A,B CS:0001 MOV HL,$0200 CS:0002 ROT 4 CS:0003 CALL 0100 CS:0004 MOV $0200,HL... CS:0100 INT 13 CS:0101 MOV HL,AB CS:0102 ADD HL,15 CS:0103 RET 24
Skok ze śladem SS:FFFA??? SS:FFFB??? SS:FFFC??? SS:FFFD??? SS:FFFE??? SS:FFFF CS:0004 SP Wykonywana jest instrukcja powrotu z podprogramu. Adres z wierzchołka stosu umieszczany jest w rejestrze PC Rejestr SP jest przesuwany (usunięcie adresu ze stosu) PC CS:0000 ADD A,B CS:0001 MOV HL,$0200 CS:0002 ROT 4 CS:0003 CALL 0100 CS:0004 MOV $0200,HL... CS:0100 INT 13 CS:0101 MOV HL,AB CS:0102 ADD HL,15 CS:0103 RET 25
Skok ze śladem SS:FFFA??? SS:FFFB??? SS:FFFC??? SS:FFFD??? SS:FFFE??? SS:FFFF??? SP Powrót z podprogramu. Wykonywana jest kolejna instrukcja programu głównego (następna za instrukcją wywołującą podprogram) PC CS:0000 ADD A,B CS:0001 MOV HL,$0200 CS:0002 ROT 4 CS:0003 CALL 0100 CS:0004 MOV $0200,HL... CS:0100 INT 13 CS:0101 MOV HL,AB CS:0102 ADD HL,15 CS:0103 RET 26
Adresowanie Sposoby wyznaczania położenia operandu Natychmiastowe Bezpośrednie Pośrednie Rejestrowe Rejestrowe pośrednie Indeksowe Wykorzystujące stos 27
Adresowanie natychmiastowe Operand jest częścią instrukcji (np. ADD 5 dodaj liczbę 5 do akumulatora) Brak dodatkowego dostępu do pamięci (wydajność) Ograniczony zakres i liczba operandów (długość instrukcji) Schemat instrukcji: KOD INSTRUKCJI WARTOŚĆ OPERANDU 28
Adresowanie bezpośrednie Instrukcja zawiera adres pamięci z operandem Wymaga dodatkowego dostępu do pamięci Nie wymaga dodatkowych wyliczeń efektywnego adresu Ograniczony zakres adresu (rozmiar instrukcji) Przykład: ADD [100] dodaj do akumulatora zawartość komórki o adresie 100 29
Adresowanie bezpośrednie - format instrukcji Instrukcja KOD INSTRUKCJI ADRES OPERANDU Pamięć OPERAND 30
Adresowanie pośrednie Instrukcja zawiera adres komórki pamięci. Ta komórka (i kolejne) zawiera adres operandu. Przykład ADD (100) dodaj do akumulatora wartość z pamięci o adresie zapisanym w komórce 100 Większa przestrzeń adresowa Wymaga dodatkowego dostępu do pamięci 31
Adresowanie pośrednie - format instrukcji Instrukcja KOD INSTRUKCJI ADRES WSKAŹNIKA Pamięć ADRES OPERAND 32
Adresowanie rejestrowe Wartość operandu przechowywana jest w rejestrze ADD AX,BX dodaj do rejestru AX zawartość rejestru BX Niewielki rozmiar instrukcji Brak odwołania do pamięci wydajność! Niewielka liczba dostępnych rejestrów 33
Adresowanie rejestrowe - format instrukcji Instrukcja KOD INSTRUKCJI NAZWA REJESTRU Rejestry Pamięć OPERAND 34
Adresowanie rejestrowe pośrednie Operand znajduje się w komórce pamięci o adresie przechowywanym we wskazanym rejestrze. Przykład: ADD [BX] dodaj do akumulatora zawartość komórki pamięci o adresie z rejestru BX Duża przestrzeń adresowa Nieduży rozmiar instrukcji 35
Adresowanie rejestrowe pośrednie - format instrukcji Instrukcja KOD INSTRUKCJI NAZWA REJESTRU Rejestry Pamięć OPERAND ADRES 36
Adresowanie bazowo-indeksowe Adres efektywny jest sumą zawartości rejestru oraz przesunięcia. Różne odmiany: Adresowanie względne Adresowanie bazowe Adresowanie indeksowe Adresowanie indeksowe ze skalowaniem 37
Adresowanie względne Adres operandu podawany jest jako przesunięcie względem adresu aktualnie wykonywanej instrukcji (rejestr PC). Krótka instrukcja (zwykle 1-bajtowe przesunięcie) Mała przestrzeń adresowa Wykorzystanie zasady lokalności 38
Adresowanie bazowe Adres efektywny wyliczany względem pewnej wartości bazowej Rejestry segmentowe (bazowe) Segmentacja podział programu na bloki (kodu, danych, stosu) 39
Adresowanie indeksowe Adres efektywny wyliczany na podstawie zawartości rejestru indeksowego i podanego przesunięcia Wygodne operacje na blokach danych CPU często ma automatyczne instrukcje wykorzystujące indeksowanie Adresowanie indeksowe może być połączone z bazowym 40
Adresowanie indeksowe ze skalowaniem Wprowadzony dodatkowy czynnik skalujący Pozwala na łatwiejszy dostęp do tablic Łatwiejszy dostęp do wielobajtowych typów danych Typowe czynniki skalujące 1,2,4,8 41
Adresowanie korzystające ze stosu Operacje wykonywane na stosie (podobni jak w RPN) Operandy pobierane są z wierzchołka stosu, wynik umieszczany jest na stosie. Przykład: PUSH a PUSH b ADD POP - umieść a na stosie - umieść b na stosie - dodaj a i b - pobierz wynik 42
Architektura CPU - Intel 8080 Wikipedia 43
Podsumowanie Podstawowe elementy komputera. Procesor (CPU). Rozkazy procesora Tryby adresowania Architektura procesora ALU, FPU, rejestry, układy sterujące 44