UTK - zstio.wri.pl

Transkrypt

UTK - zstio.wri.pl
UTK
UTK
Zadaniem centralnej jednostki przetwarzającej – CPU (ang. Central
Processing Unit), oprócz przetwarzania informacji jest sterowanie
pracą pozostałych układów systemu. W skład CPU wchodzą
mikroprocesor oraz układy pomocnicze, takie jak zegar czy sterownik
magistral. Mikroprocesor jest układem przetwarzającym informację i
kierującym pracą reszty układów. Zegar systemowy wytwarza
przebiegi czasowe niezbędne do pracy mikroprocesora i systemu.
Sterownik magistral jest układem, który pośredniczy w sterowaniu
magistralami, wytwarzając na podstawie informacji otrzymanych z
mikroprocesora (sygnałów statusowych i sterujących) sygnały
sterujące pracą układów pamięci i układów wejścia/wyjścia.
Można stwierdzić, że wszystkie działania i operacje zachodzące w
systemie są sterowane bądź inicjowane przez mikroprocesor.
UTK
Rejestry procesora dostępne programowo
UTK
Rejestry procesora dostępne programowo
Akumulator
Akumulatorem nazywamy rejestr, który zawiera jeden z operandów
(argumentów) wykonywanej operacji i do którego jest ładowany wynik
wykonywanej operacji. Definicja akumulatora pojawiła się po raz pierwszy
przy omawianiu jednostki arytmetyczno-logicznej. W starszych procesorach
definicja ta obowiązywała ściśle, w nowszych notuje się liczne odstępstwa
mające na celu przyspieszenie realizacji programu. Przykładowo w
procesorach rodziny 80x86 wynik dodawania może być umieszczany także
w rejestrze innym niż akumulator.
UTK
Rejestry procesora dostępne programowo
Rejestr flagowy
Rejestrem flagowym nazywamy rejestr zawierający dodatkowe cechy wyniku wykonywanej
operacji potrzebne do podjęcia decyzji o dalszym sposobie przetwarzania informacji. Cechami
tymi mogą być przykładowo znak wyniku, wystąpienie przekroczenia zakresu czy parzystość (na
przykład parzysta bądź nieparzysta liczba jedynek w wyniku). Wystąpienie określonego
przypadku, na przykład wyniku dodatniego bądź ujemnego, sygnalizowane jest ustawieniem lub
wyzerowaniem określonego bitu w rejestrze flagowym.
Lista najczęściej używanych flag:
CY lub CF (ang. curry flag) – flaga przeniesienia lub pożyczki. Ustawiana (czyli przyjmuje wartość 1), gdy
rezultat operacji przekracza zakres długości słowa, w którym zapisywany jest wynik. Istotna dla operacji
arytmetycznych na liczbach bez znaku.
Z lub ZF (ang. zero flag) – flaga sygnalizująca, że wynikiem ostatnio wykonywanej operacji jest 0.
S lub SF (ang. sign flag) – flaga znaku. Ustawiana, gdy najstarszy bit wyniku wykonywanej operacji jest
równy 1. Zasadniczo flaga ta ma znaczenie dla operacji arytmetycznych interpretowanych jako liczby ze
znakiem (w kodzie U2).
P lub PF (ang. parity flag) – flaga parzystości. Sygnalizuje parzystą lub nieparzystą liczbę jedynek w wyniku
(np. w jego najmłodszym bajcie). Dokładna reguła ustawiania tej flagi zależy od typu procesora.
OV lub OF (ang. overflow flag) – flaga przepełnienia. Sygnalizuje przekroczenie zakresu dla operacji
arytmetycznych, gdy są interpretowane jako operacje na liczbach ze znakiem zapisanych w kodzie U2.
AC lub AF (ang. auxiliary carry flag) – flaga przeniesienia pomocniczego lub połówkowego. Ustawiana, gdy
występuje przeniesienie lub pożyczka z najstarszego bitu pierwszej tetrady wyniku. Istotna przy
interpretowaniu wyniku operacji arytmetycznych w kodzie prostym BCD.
UTK
Rejestry procesora dostępne programowo
Licznik rozkazów
Licznik rozkazów jest jednym z istotniejszych rejestrów umożliwiających zrozumienie działania
mikroprocesora i systemu mikroprocesorowego. W nowszych mikroprocesorach nosi on nazwę IP –
wskaźnika instrukcji (ang. Instruction Pointer), co jest chyba trafniejsze. Definicja tego rejestru jest
następująca:
Licznikiem rozkazów (wskaźnikiem instrukcji) nazywamy rejestr mikroprocesora zawierający adres
komórki pamięci, w której przechowywany jest kod rozkazu przeznaczonego do wykonania jako
następny.
Z definicji tej wynika, że po wczytaniu kolejnego kodu rozkazu zawartość licznika rozkazów
powinna zostać zmieniona tak, aby wskazywał kolejny rozkaz przeznaczony do wczytania do
mikroprocesora. Ponieważ w przeważającej części program jest wykonywany kolejno, instrukcja
po instrukcji (chociaż są od tego odstępstwa – omawiamy je w podrozdziale poświęconym liście
rozkazów), to pobranie kodu rozkazu z kolejnej komórki pamięci powoduje zwiększenie
zawartości licznika rozkazów o 1.
W pewnych przypadkach zawartość licznika rozkazów jest zmieniana w wyniku wykonania
określonego rozkazu (dlatego jest rejestrem dostępnym programowo). O tego typu rozkazach
będzie mowa przy omawianiu listy rozkazów.
UTK
Rejestry procesora dostępne programowo
Wskaźnik stosu
Przed podaniem definicji wskaźnika stosu musimy najpierw wyjaśnić pojęcie stosu.
Stosem nazywamy wyróżniony obszar pamięci używany według następujących reguł:
1.Informacje zapisywane są na stos do kolejnych komórek (pod kolejnymi adresami), przy czym
żadnego adresu nie wolno pominąć.
2. Odczytujemy informacje w kolejności odwrotnej do ich zapisu.
3. Informacje odczytujemy z ostatnio zapełnionej komórki, natomiast zapisujemy do pierwszej
wolnej, przy czym komórkę odczytaną traktujemy jako wolną.
Stos jest więc rodzajem pamięci (czy też buforem) oznaczanej przez LIFO (ang. last In first out –
ostatni wchodzi, pierwszy wychodzi). Pamięć taką można porównać do stosu talerzy (stąd zresztą
nazwa). Talerze dokładamy do stosu, kładąc je na wierzchu, a zabieramy, zdejmując je także z
wierzchu, gdyż w przypadku zmiany kolejności grozi nam katastrofa, co odnosi się także do stosu
komputerowego.
W przypadku pojęcia stosu w pamięci, zgodnie z regułą 3, konieczna jest znajomość adresu
ostatniej zapełnionej komórki stosu, przy czym komórkę odczytaną uważamy za pustą (zdjęliśmy
talerz). Komórka ta zwana jest wierzchołkiem stosu.
Wskaźnikiem stosu nazywamy rejestr zawierający adres ostatniej zapełnionej komórki stosu
(wierzchołka stosu).