cykl zegarowy

advertisement
Programowanie
Niskopoziomowe
Wykład 3: Architektura
procesorów x86
Dr inż. Marek Mika
Państwowa Wyższa Szkoła Zawodowa
im. Jana Amosa Komeńskiego
W Lesznie
Plan
•
•
•
•
•
Pojęcia ogólne
Budowa mikrokomputera
Cykl wykonania instrukcji
Cykl odczytu pamięci
Ładowanie i wykonywanie
programów
• Wielozadaniowość
Członkowie rodziny x86
• Procesory 32-bitowe Intel, AMD, Cyrix, VIA itp.
• Wszystkie procesory Intel IA-32:
– Intel 80386 (1985), Intel486, Pentium, Pentium MMX,
Pentium Pro, Pentium II, Pentium III, Pentium M, Intel
Core, Pentium 4
• Procesory AMD:
– Am386, Am486, Am5x86, K5, K6, K6-2, K6-3, Athlon,
Athlon XP
• Procesory Cyrix:
– Cyrix III - Samuel, 5x86, 6x86, Cyrix III – Joshua
• Procesory VIA:
– C3, C7
• Inne (m.in. NexGen, IDT, Centaur, Rise Technology)
Blokowy schemat mikrokomputera
szyna danych, szyna we/wy
rejestry
Pamięć
CPU
ALU
CU
clk
szyna sterująca
szyna adresowa
Urz.
we/wy
nr 1
Urz.
we/wy
nr 2
CPU
• CPU (Central Processor Unit):
– rejestry – pełniące rolę komórek pamięci
– clk – zegar (o wysokiej częstotliwości)
synchronizujący wewnętrzne operacje procesora z
innymi komponentami systemu
– ALU (Arythmetic Logic Unit) – jednostka
arytmetyczno-logiczna wykonująca operacje
matematyczne (dodawanie, odejmowanie itd.) i
logiczne (iloczyn, alternatywa, negacja itd.)
– CU (Control Unit) – jednostka sterująca
koordynująca sekwencję kroków wykonywanych
podczas przetwarzania instrukcji maszynowej
CPU i inne komponenty systemu
• Po łączenie CPU z płytą główną
–
–
–
–
szyna danych
szyna we/wy
szyna adresowa
szyna kontrolująca
• Pamięć
– przechowuje dane i instrukcje programu
– przetwarzanie danych następuje w procesorze
– instrukcje programu są przesyłane do procesora
(pojedynczo lub grupami)
Szyny
• Fizycznie – wiązka przewodów (ścieżek)
• Szyna danych – do transferu danych i
instrukcji między pamięcią i CPU
• Szyna we/wy – do transferu danych między
CPU a urządzeniami we/wy
• Szyna sterująca – używa sygnałów binarnych
do synchronizacji działań wszystkich urządzeń
(układów) systemu
• Szyna adresowa – zawiera adres danej
(instrukcji) w pamięci komputera.
Zegar
•
•
•
•
•
•
•
Wszystkie operacje, w które zaangażowany jest procesor i
szyna systemowa są synchronizowane przez wewnętrzny
zegar o stałej częstotliwości
Podstawową jednostką czasu w systemie komputerowym jest
cykl zegarowy (maszynowy)
Długość cyklu zegarowego – to czas potrzebny na jedną
pełną zmianę stanu sygnału zegarowego (np. mierzony
pomiędzy dwoma kolejnymi zboczami narastającymi)
Prędkość zegara wyrażana jest w MHz (GHz) – w przypadku
zegara działającego z częstotliwością 1 GHz dł. cyklu
zegarowego wynosi 1ns
Instrukcje maszynowe mogą trwać od 1 cyklu zegarowego do
ponad 50 (np. mnożenie w procesorze 8088)
Instrukcje wymagające dostępu do pamięci często wymagają
pustych cykli zegarowych (stanów oczekiwania)
spowodowanych różnicami częstotliwości pracy CPU, szyny i
układów pamięci
Cykl wykonania instrukcji
• Program przed wykonaniem jest ładowany do pamięci
• Licznik rozkazów wskazuje na następną instrukcję
programu
• Kolejka instrukcji zawiera grupę kolejnych instrukcji
przewidzianych do wykonania
• Wykonanie instrukcji maszynowej wymaga trzech
podstawowych kroków:
– pobrania (fetch)
– zdekodowania (decode)
– wykonania (execute)
• Instrukcje wymagające dostępu do pamięci wymagają
dwóch dodatkowych kroków:
– pobrania argumentu z pamięci
– zapisania wyniku do pamięci
Kroki cyklu wykonania
•
•
•
•
•
Pobranie – CU pobiera następną instrukcję z kolejki i
odpowiednio zwiększa wartość licznika rozkazów (IP)
Dekodowanie – CU dekoduje instrukcję w celu określenia jej
działania, argumenty są wysyłane do ALU razem z sygnałami
sterującymi określającymi typ wykonywanej operacji
Pobranie argumentów z pamięci – krok wykonywany, gdy
argument instrukcji znajduje się w pamięci, CU korzysta z
operacji odczytu i zapisuje dane w wewnętrznych rejestrach
(niedostępnych w modelu programowym)
Wykonanie – ALU wykonuje instrukcję przy użyciu rejestrów
dostępnych w modelu programowym oraz rejestrów
wewnętrznych i wysyła wynik do odpowiedniego rejestru i/lub
pamięci, ALU ustawia również odpowiednio znaczniki
informujące o stanie procesora
Zapisanie wyniku do pamięci – krok wykonywany wtedy,
gdy instrukcja wymaga zapisu wyniku do pamięci, CU stosuje
w tym przypadku instrukcję zapisu
Sekwencja kroków
w pseudokodzie
loop
fetch next instruction
advance the instruction pointer (IP)
decode the instruction
if memory operand needed, read value
from memory
execute the instruction
if result is memory operand, write
result to memory
continue loop
Kod
Dane
Szyna adresowa
Pamięć
Szyna danych
Uproszczony schemat blokowy procesora
Cache kodu
IP
Dekoder instrukcji
CU
Rejestry
ALU
Cache danych
FPU
Schemat działania CPU
• Adres instrukcji kodu wystawiany jest na szynę
adresową
• Sterownik pamięci wystawia na szynę danych instrukcję
spod tego adresu
• Instrukcja trafia do pamięci podręcznej kodu
• IP określa, która instrukcja będzie wykonana jako
następna
• Dekoder instrukcji analizuje pobraną instrukcję i wysyła
odpowiednie (zależące od instrukcji) sygnały do CU
• CU koordynuje dalsze działanie ALU i FPU
• Synchronizacja transferu danych pomiędzy
odpowiednimi układami odbywa się przy użyciu sygnału
zegarowego przesyłanego szyną sterującą
(niewidoczną na schemacie)
Cykl odczytu pamięci
Cykl odczytu pamięci – opis
• Cykl 1:
– adres komórki pamięci, która ma być odczytana
wystawiany jest na szynę adresową (ADDR)
• Cykl 2:
– linia odczytu (RD) ustawiana w stan niski (0), co
sygnalizuje pamięci, że będą z niej odczytywane dane
• Cykl 3:
– cykl oczekiwania procesora
– w tym czasie sterownik pamięci wystawia na szynę
danych (DATA) dane odczytane z wybranej komórki
pamięci
• Cykl 4:
– linia odczytu przechodzi w stan wysoki (1) sygnalizując
procesorowi, że na szynie danych są dane gotowe do
odczytu
Pamięć podręczna
• Najtańsza pamięć operacyjna realizowana jako pamięć
DRAM jest zbyt wolna w porównaniu z CPU
• Potrzebna jest szybsza pamięć realizowana jako SRAM
w postaci pamięci podręcznej
• Odczyt instrukcji oraz danych z pamięci podręcznej
znacząco przyspiesza czas wykonania instrukcji
• Jeśli pobierana instrukcja (dana) znajduje się w pamięci
podręcznej, to mamy do czynienia z trafieniem pamięci
podręcznej (cache hit)
• W przeciwnym przypadku mówimy o chybieniu pamięci
podręcznej (cache miss), które wymaga pobrania
instrukcji (danej) z pamięci operacyjnej
Ładowanie i wykonywanie
programów
•
•
•
•
•
•
•
Użytkownik wywołuje program z linii poleceń
System operacyjny (OS) szuka nazwy programu w bieżącym katalogu,
jeśli jej nie znajdzie to szuka w zdefiniowanych katalogach (ścieżki), jeśli i
tam nie znajdzie tej nazwy, to sygnalizowany jest błąd
Jeśli program zostanie odnaleziony, to OS pobiera podstawowe informacje
o pliku programu (m.in. rozmiar pliku i jego fizyczne położenie na dysku)
OS określa następny dostępny obszar pamięci i tam ładuje program,
przydziela programowi blok pamięci, a informacje o rozmiarze i położeniu
plików umieszcza w tablicy deskryptorów, dodatkowo OS może zmienić
wartości wskaźników w programie, tak by zawierały adresy danych
programu
OS rozpoczyna wykonywanie pierwszej instrukcji programu (od tego
momentu mówimy już o procesie) i nadaje procesowi numer
identyfikacyjny (PID), który posłuży do śledzenia tego procesu w czasie
jego wykonywania
Proces działa samodzielnie, system operacyjny musi śledzić wykonywane
procesy i odpowiadać na żądania dostępu do zasobów (pamięć, pliki
dyskowe, urządzenia we\wy)
Po zakończeniu proces jest usuwany z pamięci
Wielozadaniowość
•
•
•
•
•
•
•
Wielozadaniowy system operacyjny potrafi wykonywać wiele
zadań jednocześnie
Zadanie definiowane jest jako proces lub jako wątek
Wątek współdzieli pamięć z innymi wątkami tego samego
procesu wykonywanymi „równocześnie”
W komputerach z jednym procesorem wielozadaniowość i
wielowątkowość realizowane są na zasadzie podziału czasu
procesora
Proces zwany schedulerem przydziela każdemu aktywnemu
procesowi wycinek czasu procesora, w którym wykonywany
jest blok instrukcji danego procesu, a po upływie tego czasu
sterowanie jest przekazywane do następnego procesu
Aby stworzyć iluzję wielozadaniowości przełączanie pomiędzy
procesami musi być stosunkowo szybkie.
Jednym z popularnych algorytmów jest Round-Robin
Round-Robin
• Algorytm stosowany w systemach wielozadaniowych
• Każde zadanie obsługiwane jest przez określony czas
po czym jest przerywane i trafia na koniec kolejki,
procesor przełączany jest na pierwsze zadanie w
kolejce itd.
• Przykład: 9 zadań, scheduler każdemu przydziela
procesor na 100 ms, przełączanie między zadaniami
trwa ok 8 ms, zatem jeden pełen cykl zajmuje 972 ms
• Procesor przed przejściem do nowego zadania musi
zapamiętać stan aktualnego zadania
• Często w wielozadaniowych OS istnieje możliwość
nadawania priorytetów zadaniom (im wyższy priorytet,
tym dłuższy wycinek czasu procesora)
• Wywłaszczalność zadań częstą cechą w
wielozadaniowych OS
DZIĘKUJĘ ZA UWAGĘ
Download