w2m, SPRAWOZDANIA czyjeś


Zadania procesora

Aby zrozumieć organizację procesora, rozważmy stawiane mu

wymagania, a więc zadania, które musi on realizować:

Pobieranie rozkazów. Procesor musi odczytywać rozkazy z pamięci.

Interpretowanie rozkazów. Rozkazy muszą być zdekodowane w

celu określenia, jakie działania są wymagane.

Pobieranie danych. Wykonywanie rozkazów może wymagać

odczytywania danych z pamięci lub z modułu wejścia-wyjścia.

Przetwarzanie danych. Wykonywanie rozkazów może wymagać

przeprowadzenia na danych pewnych operacji arytmetycznych lub

logicznych.

Zapisanie danych. Wyniki operacji mogą wymagać zapisania danych

w pamięci lub w module wejścia-wyjścia


Struktura procesora


Istnieje wyraźne podobieństwo między wewnętrzną strukturą

komputera jako całości a wewnętrzną strukturą procesora. W obu

przypadkach występuje niewielki zbiór głównych elementów

(komputer: CPU, we-wy, pamięć; CPU- jesdnostka sterująca,

ALU rejestry) połączonych ścieżkami danych.

Organizacja rejestrów

Rejestry w procesorze można podzielić na dwie grupy:

Rejestry „widzialne dla użytkownika”:

Rejestr widzialny dla użytkownika jest rejestrem, do którego można

się odnosić za pomocą języka maszynowego, którym posługuje się

procesor. Praktycznie we wszystkich współczesnych projektach

procesora przewidziano pewnąliczbęrejestrów widzialnych dla

użytkownika, w przeciwieństwie do dawniej stosowanego

pojedynczego akumulatora. Możemy je scharakteryzować, posługując

sięnastępującym podziałem: ogólnego przeznaczenia, czyli robocze,

danych, adresów, kodów warunkowych.


Rejestry sterowania i stanu. Są one używane przez jednostkę

sterującą do sterowania pracą procesora oraz przez uprzywilejowane

programy systemu operacyjnego do sterowania wykonywaniem

programów.

Rejestry „widzialne”

Rejestry ogólnego przeznaczenia(robocze) mogąbyćprzypisane

przez programistęwielu funkcjom. W pewnych przypadkach rejestry

ogólnego przeznaczenia mogąbyćużywane do funkcji adresowania

(np. pośredniego rejestrowego, przemieszczeniowe-go). W innych

przypadkach ma miejsce częściowa lub pełna separacja rejestrów

danych od rejestrów adresowych.

Rejestry danych mogą być używane tylko do przechowywania

danych i nie można ich używać do obliczania adresów argumentów.

Rejestry adresowe mogą być w pewnym stopniu uniwersalne lub

mogą być przypisane określonym trybom adresowania.

W rejestrach kodów warunkowych, które są przynajmniej częściowo

widzialne dla użytkownika, przechowuje się kody warunkowe

(nazywane także znacznikami stanu lub flagami). Kody warunkowe

są bitami ustalanymi sprzętowo przez procesor w wyniku operacji.


Podstawowe rejestry -cz. I

Cztery rejestry mają zasadnicze znaczenie dla wykonywania rozkazów:

Licznik programu (PC).Zawiera adres rozkazu przewidzianego do

pobrania.

Rejestr rozkazu (IR).Zawiera ostatnio pobrany rozkaz.

Rejestr adresowy pamięci (MAR).Zawiera adres lokacji w pamięci.

Rejestr buforowy pamięci (MBR).Zawiera słowo danych, które ma

być zapisane do pamięci lub które zostało ostatnio odczytane z pamięci.

Licznik programu zawiera adres rozkazu. Zwykle jest on aktualizowany

przez procesor po każdym pobraniu rozkazu, dzięki czemu zawsze

wskazuje on następny rozkaz przewidziany do pobrania. Rozkaz

rozgałęzienia lub pominięcia również modyfikuje zawartość licznika

PC. Pobrany rozkaz jest ładowany do rejestru rozkazu, gdzie

analizowane są kod operacji i specyfikator argumentu. Dane są

wymieniane z pamięcią za pośrednictwem rejestrów MAR i MBR.

W systemie magistralowym rejestr MAR jest połączony bezpośrednio

z magistralą adresową, a MBR -z magistralą danych. Z kolei rejestry

widzialne dla użytkownika wymieniają dane z rejestrem MBR.


Podstawowe rejestry

We wszystkich projektach procesora jest rejestr( -y) określany jako

słowo stanu programu(ang. program status word-PSW).

W rejestrach PSW są zwykle przechowywane kody warunkowe i

inne informacje o stanie.

Występują tam zwykle następujące pola (znaczniki stanu, czyli flagi):

Znak. Zawiera bit znaku wyniku ostatniej operacji arytmetycznej.

Zero. Ustawiane, gdy wynik jest równy zeru.

Przeniesienie. Ustawiane, gdy wynikiem operacji jest przeniesienie

(dodawanie) lub przeniesienie zanegowane (odejmowanie). Używane

przy operacjach arytmetycznych obejmujących wiele słów.

Równość. Ustawiane, gdy wynikiem porównywania logicznego jest

równość.

Przepełnienie. Używane do wskazywania przepełnienia

arytmetycznego.

Zezwolenie/blokowanie przerwania. Używane do obsługi przerwań.

Nadzorca. Wskazuje, czy procesor pracuje w trybie nadzorcy, czy w

trybie użytkownika. Niektóre rozkazy uprzywilejowane mogą być

wykonywane tylko w trybie nadzorcy. Również pewne obszary

pamięci mogą być dostępne tylko w trybie nadzorcy


Cykl rozkazu

Gdy rozkaz zostanie pobrany, muszą być zidentyfikowane jego

specyfikatory argumentów. Następnie pobierany jest z pamięci

każdy argument wejściowy; proces ten może wymagać adresowania

pośredniego. Argumenty przechowywane w rejestrach nie muszą być

pobierane. Gdy operacja zostanie wykonana, może zajść potrzeba

wykonania podobnego ciągu operacji w celu zapisania wyniku w

pamięci głównej.


Cykl rozkazu

Gdy rozkaz zostanie pobrany, muszą być zidentyfikowane jego

specyfikatory argumentów. Następnie pobierany jest z pamięci

każdy argument wejściowy; proces ten może wymagać adresowania

pośredniego. Argumenty przechowywane w rejestrach nie muszą

być pobierane. Gdy operacja zostanie wykonana, może zajść potrzeba

wykonania podobnego ciągu operacji w celu zapisania wyniku w

pamięci głównej.


Cykl pośredni i rozkazu

W trakcie cyklu pośredniego do rejestru MAR jest przenoszonych

N najbardziej znaczących bitów rejestru MBR, zawierających

odniesienie do adresu. Następnie jednostka sterująca zgłasza

zapotrzebowanie na odczyt z pamięci w celu wprowadzenia

pożądanego adresu argumentu do rejestru MBR.

Cykl rozkazu przybiera wiele postaci, ponieważ postać ta

zależy od tego, który z różnorodnych rozkazów maszynowych

znajduje się w rejestrze IR. Cykl rozkazu może obejmować

przesyłanie danych między rejestrami, odczytanie lub zapisanie

w pamięci, operację wejścia-wyjścia oraz (lub) wywołanie ALU


Cykl przerwania


Cykl przerwania jest prosty i przewidywalny. Bieżąca zawartość

licznika PC musi być zapisana, żeby procesor mógł wznowi normalną

działalność po przerwaniu. Wobec tego zawartość licznika PC jest

przenoszona do rejestru MBR w celu zapisania w pamięci. Zawartość

specjalnej, zarezerwowanej do tego celu lokacji pamięci jest ładowana

do MAR przez jednostkę sterującą. Może to być na przykład wskaźnik

stosu. Do licznika PC jest ładowany adres procedury przerwania. W

rezultacie rozpoczyna się następny cykl rozkazu przez pobranie

odpowiedniego rozkazu.

Pobieranie z wyprzedzeniem


Według najprostszego podziału przetwarzania rozkazu na dwa etapy:

pobranie rozkazu i wykonanie rozkazu, występują w nim takie

przedziały czasowe podczas wykonywania rozkazu, w których nie

następują odniesienia do pamięci głównej. Przedziały te mogłyby

być wykorzystane do pobrania następnego rozkazu równolegle z

wykonywaniem bieżącego. Zgodnie z rysunkiem niżej potok

przebiega na 2 niezależnych etapach. Na pierwszym etapie następuje

pobranie i zbuforowanie rozkazu. Gdy drugi etap jest wolny, następuje

przekazanie do niego buforowanego rozkazu. Podczas gdy na drugim

etapie ma miejsce wykonywanie rozkazu, na pierwszym etapie

wykorzystuje jeden z nieużywanych cykli pamięci w celu pobrania

i zbuforowania następnego rozkazu. Nazywa się to pobieraniem

rozkazu z wyprzedzeniem(ang.instruc-tion prefetch) lub pobieraniem

na zakładkę(ang.fetch overlap).

Wady stosowania wyprzedzeń

Czas wykonywania jest na ogół dłuższy niż czas pobierania.

Wykonywanie obejmuje odczytywanie i przechowywanie

argumentów oraz przeprowadzenie samej operacji. Wobec tego

etap pobierania musi zawierać oczekiwanie przez pewien czas, zanim

będzie mogło nastąpić opróżnienie bufora.

Rozkaz skoku warunkowego powoduje, że adres następnego rozkazu

przewidzianego do pobrania jest nieznany. Wobec tego realizacja

etapu pobierania może nastąpićdopiero po otrzymaniu adresu

następnego rozkazu, który zostanie określony po zakończeniu etapu

wykonywania. Następnie na etapie wykonywania następuje

oczekiwanie na pobranie kolejnego rozkazu.


Potoki wieloetapoweI

Pobranie rozkazu (FI).Wczytanie następnego spodziewanego rozkazu

do bufora.

Dekodowanie rozkazu (DI). Określenie kodu operacji i specyfikatorów

argumentu.

Obliczanie argumentów (CO). Obliczenie efektywnego adresu każdego

argumentu źródłowego. Może to obejmować obliczanie adresu z

przesunięciem, adresu rejestrowego pośredniego, adresu pośredniego

lub innych form.

Pobieranie argumentów (FO). Pobranie każdego argumentu z pamięci.

Argumenty w rejestrach nie muszą być pobierane.

Wykonanie rozkazu (El). Przeprowadzenie wskazanej operacji i

przechowanie wyniku, jeśli taki jest, w ustalonej lokacji docelowej.

Zapisanie argumentu (WO). Zapisanie wyniku w pamięci.

Przy takiej dekompozycji czas trwania różnych etapów może być

zbliżony.

Potoki wieloetapoweII

Nie zawsze każdy rozkaz przechodzi przez wszystkie 6 etapów potoku.

Na przykład rozkaz ładowania nie wymaga etapu WO. Dla uproszczenia

zakłada się jednak, że każdy rozkaz wymaga 6 etapów. Zakłada się

również, że wszystkie etapy mogą być realizowane równolegle.

W szczególności przyjmuje się, że nie występują konflikty dostępu

do pamięci. Na przykład etapy FI, FO i WO zawierają odniesienia

do pamięci. Na wykresie założono, że wszystkie te odniesienia mogą

następować jednocześnie. W większości systemów pamięci nie jest to

możliwe. Jednak pożądana wartość może się znajdować w pamięci

podręcznej lub te że etapy FO czy WO mogą nie być realizowane.

Potoki wieloetapoweIII

Poprawę wydajności ogranicza kilka czynników. Jeśli czasy trwania

6 etapów nie są równe, na różnych etapach wystąpi pewne oczekiwanie,

podobne do wykazanego w przypadku potoku 2-etapowego. Inną

trudność stanowi rozkaz rozgałęzienia warunkowego, który może

unieważnić kilka pobranych rozkazów. Podobnym nie

przewidywalnym zdarzeniem jest przerwanie. Etap CO może być

uzależniony od zawartości rejestru, która mogłaby być zmieniona

przez poprzedni rozkaz będący w dalszym ciągu w potoku. Mogą

występować inne takie konflikty rejestrów lub pamięci. System musi

zawierać rozwiązania logiczne zapobiegające konfliktom tego rodzaju.

Postępowanie z rozgałęzieniami:

Stosuje sięwiele sposobów postępowania z rozkazami rozgałęzienia

warunkowego: zwielokrotnienie strumienia; pobieranie docelowego

rozkazu z wyprzedzeniem; bufor pętli; przewidywanie rozgałęzienia;

opóźnione rozgałęzienie.

Zwielokrotnione strumienie i wyprzedzenia:

W przypadku prostego potoku występują straty spowodowane przez

rozkaz rozgałęzienia, ponieważ konieczne jest wybranie jednego z

dwóch możliwych rozkazów i wybór ten może się okazać niewłaściwy.

Brutalnym rozwiązaniem jest powielenie początkowych części potoku i

umożliwienie równoczesnego pobrania obu rozkazów za pomocą dwóch

strumieni. Rozwiązanie to stwarza pewne problemy przypadku

zwielokrotnionego strumienia występują opóźnienia wynikające

z rywalizacji o dostęp do rejestrów i pamięci. Następne rozkazy

rozgałęzienia mogą wejść do potoku (którymkolwiek strumieniem),

zanim zostanie przesądzone oryginalne rozgałęzienie. Każdy taki

rozkaz wymaga dodatkowego strumienia. Gdy rozpoznawany jest

rozkaz rozgałęzienia warunkowego, następuje wyprzedzające pobranie

rozkazu docelowego razem z rozkazem następującym po rozgałęzieniu.

Rozkaz docelowy jest następnie zachowywany, aż do czasu wykonania

rozkazu rozgałęzienia. W momencie rozgałęzienia rozkaz docelowy

jest już pobrany.

Bufor pętli

Bufor pętli jest małą, bardzo szybką pamięcią związaną z etapem

pobierania rozkazów potoku. Zawiera on kolejno n ostatnio pobranych

rozkazów. Jeśli ma nastąpić rozgałęzienie, sprawdza się czy cel

rozgałęzienia znajduje się wewnątrz bufora. Jeśli tak, to następny

rozkaz jest pobierany z bufora.

Dzięki pobieraniu z wyprzedzeniem bufor pętli zawiera pewne

rozkazy następujące po kolei po adresie pobrania bieżącego rozkazu.

Wobec tego kolejno pobierane rozkazy będą dostępne bez straty

czasu wymaganej na dostęp do pamięci.

Jeśli następuje rozgałęzienie do rozkazu znajdującego się o kilka

pozycji dalej od adresu rozkazu rozgałęzienia, to rozkaz docelowy

będzie się już znajdował w buforze. Jest to użyteczne w przypadku

sekwencji IF-THEN) oraz IF-THEN-ELSE Jeżeli bufor jest

dostatecznie pojemny, aby zmieścić wszystkie rozkazy składające się

na pętlę, to rozkazy te muszą być pobrane tylko raz, przy pierwszej

iteracji.

Przewidywanie rozgałęzień

Zastosowano wiele metod przewidywania, czy nastąpi rozgałęzienie.

Wśród nich często używane są następujące: przewidywanie zawsze

następującego rozgałęzienia; przewidywanie nigdy nie

następującego rozgałęzienia; przewidywanie za pomocą kodu

operacji; przełącznik nastąpiło/nie nastąpiło; tablica historii

rozgałęzień. Pierwsze trzy rozwiązania są statyczne: nie zależą

one od historii poprzedzającej rozkaz rozgałęzienia warunkowego.

Ostatnie dwa są dynamiczne: zależą od historii.

Przełączniki tak/nie wystąpiło

W strategiach dynamicznych próbuje się poprawić dokładność

przewidywania, rejestrując historię rozkazów rozgałęzienia

warunkowego w programie. Z każdym rozkazem rozgałęzienia

warunkowego można na przykład powiązać jeden lub dwa bity

odzwierciedlające najnowszą historię rozkazu. Bity te są określane

jako przełącznik nastąpiło/nie nastąpiło, który ukierunkowuje

procesor na podjęcie określonej decyzji po ponownym natrafieniu

tego rozkazu. Zwykle te bity historii nie są związane z rozkazem

w pamięci głównej. Są one raczej przechowywane w tymczasowej,

bardzo szybkiej pamięci.

Rozwiązanie jednobitowe: Wszystko, co można zapisać za pomocą

jednego bitu, to wystąpienie lub niewystąpienie rozgałęzienia

podczas ostatniego wykonywania rozkazu. Ograniczenie wynikające

ze stosowania pojedynczego bitu ujawnia się w przypadku rozkazu

rozgałęzienia warunkowego, które następuje prawie zawsze, np. w

przypadku rozkazu pętli. Przy zastosowaniu jednego bitu historii,

błędne przewidywanie wystąpi dwukrotnie przy każdym użyciu

pętli: raz przy wejściu do pętli i raz przy jej opuszczeniu.

Rozwiązania dwubitowe:

Jeśli stosowane są dwa bity, mogą one być użyte do zarejestrowania

wyników ostatnich dwóch przypadków wykonania stowarzyszonego

rozkazu lub do zapisania stanu w pewien inny sposób. Proces

decyzyjny może być reprezentowany za pomocą maszyny o

skończonej liczbie (czterech) stanów. Jeśli ostatnie dwa rozgałęzienia

danego rozkazu nastąpiły w ten sam sposób, to przewiduje się, że

należy wybrać tę samą ścieżkę. Jeśli to przewidywanie okazało się

błędne, pozostaje ono bez zmian, aż do ponownego napotkania tego

rozkazu. Jeśli przewidywanie okazało się ponownie błędne, to w

wyniku następnego przewidywania zostanie wybrana ścieżka

przeciwna. Wobec tego algorytm ten wymaga dwóch kolejnych

błędnych przewidywań do zmiany decyzji. Jeśli rozgałęzienie nastąpi

w nietypowy sposób tylko raz, na przykład w przypadku pętli,

przewidywanie będzie błędne tylko raz.

Tablica rozgałęzień


Tablica historii rozgałęzień jest małą pamięcią podręczną powiązaną

z etapem pobierania rozkazu w potoku. Każdy zapis w tablicy składa

się z trzech elementów: adresu rozkazu rozgałęzienia pewnej liczby

bitów historii wskazujących na używanie tego rozkazu informacji o

rozkazie docelowym. W większości dzisiejszych rozwiązań to trzecie

pole zawiera adres rozkazu docelowego. Inną możliwością jest to,

żeby trzecie pole zawierało sam rozkaz docelowy.




Wyszukiwarka

Podobne podstrony:
pomoc2cd(1), SPRAWOZDANIA czyjeś
Budowa kontenera C, SPRAWOZDANIA czyjeś
Zalety systemów SDH, SPRAWOZDANIA czyjeś
Hartowanie i odpuszczanie, SPRAWOZDANIA czyjeś
z3 06, SPRAWOZDANIA czyjeś
z 1 7 a, SPRAWOZDANIA czyjeś
Zabezpieczenie transformatora za pomocą zespołu automatyki(1), SPRAWOZDANIA czyjeś
w4m, SPRAWOZDANIA czyjeś
Z5 10, SPRAWOZDANIA czyjeś
pomoc, SPRAWOZDANIA czyjeś
siwex, SPRAWOZDANIA czyjeś
MetodyNumeryczne, SPRAWOZDANIA czyjeś
pomoc2, SPRAWOZDANIA czyjeś
labelektr14, SPRAWOZDANIA czyjeś
Budowa kontenera VC, SPRAWOZDANIA czyjeś
z4 06, SPRAWOZDANIA czyjeś
Kształtowanie widma, SPRAWOZDANIA czyjeś
Z2 08, SPRAWOZDANIA czyjeś

więcej podobnych podstron