komunikacja procesora z innymi elementami architektury komputera-KMSO23FY4NQLQ7Q5TWALYYZ5EQZJEDPQZBTEUZY.doc

(2507 KB) Pobierz

Komunikacja procesora z innymi elementami architektury komputera              13

Rozdział 1.

Komunikacja procesora z innymi elementami architektury komputera

Każda z opisanych w tym rozdziale konfiguracji sprzętowych posiada centralny ośrodek zarządzania, którym jest procesor. Najnowsze osiągnięcia w technologii produkcji układów scalonych pozwalają na realizację coraz to potężniejszych mikroprocesorów. Jednak bez względu na szerokość ich magistral, częstotliwość pracy czy wielkość zintegrowanej w układzie pamięci, pierwotna zasada działania pozostaje — przynajmniej na razie — bez większych zmian.

Procesor

Rozwój mikroelektroniki i technologii sprzyja opracowywaniu coraz to potężniejszych mikroprocesorów. Postęp w miniaturyzacji pozwala na zwiększenie stopnia upakowania i wzrost częstotliwości taktującej. Dobrze opanowana jest technika 0,35 um a już obser­wuje się przejście w kierunku 0,25 um. To dzięki temu nieustannemu zmniejszaniu roz­miarów elementarnych tranzystorów (mimo stałego wzrostu ich liczby) pobór mocy nowych procesorów mieści się jeszcze w granicach zdrowego rozsądku.

Konstrukcja komputera PC podlega również stałej ewolucji, wymuszanej głównie przez wymagania nakładane ze strony współczesnego oprogramowania. „Pamięciożerne" apli­kacje i rozszerzenia multimedialne są w stanie zniwelować każdą sprzętową inwestycję.


14


Anatomia PC


 


Rynek przyjmuje z wdzięcznością nowe opracowania procesorów gdyż częsty brak kompatybilności z poprzednimi modelami zmusza do wymiany płyt głównych i stanowi dźwignię napędową do nowych zakupów.

Niezależnie od częstotliwości taktującej i charakterystycznych dla danej firmy rozwiązań indywidualnych każdy mikroprocesor da się przedstawić jako zespół współpracujących ze sobą bloków funkcjonalnych (rysunek 1.1).


Rysunek 1.1

Schemat blokowy procesora


Architektura komputera PC zakłada bardzo silną więź mikroprocesora z pamięcią ope­racyjną. W niej to bowiem przechowywane są dane i rozkazy, tam też odsyła się wyniki obliczeń. Za współpracę z pamięcią odpowiada wyizolowany blok komunikacyjny (BU Bus Unit). Połączenie realizowane jest zwykle w formie dwóch odseparowanych od siebie magistral: oddzielnie dla danych (w tym kodu) i adresów. Zarządzanie ruchem na magistralach gwarantują dodatkowe sygnały sterujące.

Konieczność zapewnienia płynnego funkcjonowania procesora wymaga, by dane do wykonania (kod programowy) pobierane były w większych porcjach i gromadzone w kolejce, gdzie oczekują na wykonanie. Każdy ze spoczywających tu bajtów stanowi pewną zakodowaną informację o koniecznych do wykonania operacjach. Odtworzenie tej informacji odbywa się w bloku dekodera (IU - Instruction Unit). Praca tego układu wspomagana jest często przez obszerną podręczną pamięć stałą (ROM), w której zawarty jest słownik tłumaczący przyjmowane kody rozkazowe na sekwencje ukrywających się pod nimi operacji.

Rozkodowane instrukcje przekazywane są do właściwego układu wykonawczego (EU -Execution Unit), gdzie realizowana jest operacja określona danym kodem rozkazowym. Znaczna część powszechnie używanego kodu pracuje na liczbach stałoprzecinkowych


              Komunikacja procesora z innymi elementami architektury komputera              15

(Integer) i podlega obróbce w module ALU (Arithmetic-Logic Unii) sterowanego z bloku CU (Control Unit). Jeśli jednak rozkaz dotyczył obiektów zmiennoprzecinkowych jego realizacja w stałoprzecinkowych układach logicznych zajęłaby zbyt wiele czasu. W takim wypadku przekazuje się go do wyspecjalizowanej jednostki zmiennoprzecinkowej (FPU - Floating Point Unit).

Rozkazy posługują się zwykle pewnymi argumentami (parametry funkcji, na przykład składniki przy dodawaniu), które również trzeba pobrać z pamięci operacyjnej. Często wymaga się, by wynik operacji przesłać pod określony adres. Obsługę tego rodzaju życzeń bierze na siebie jednostka adresowania (AU — Addressing Unit). Względy natury technicznej (stronicowanie i segmentacja) powodują, iż dostęp do pamięci operacyjnej wymaga pewnych dodatkowych nakładów, których realizacji poświęca się jednostkę zarządzania pamięcią (MMU - Memory Management Unit).

Rozwinięcie przedstawionego powyżej ogólnego schematu blokowego do postaci bar­dziej szczegółowej nastąpi przy okazji omawiania różnic w konkretnych modelach pro­cesorów.

Przetwarzanie rozkazów

Obraz architektury współczesnych procesorów jest wynikiem wpływów wielu czyn­ników. Stała pogoń za wzrostem mocy obliczeniowej zmusza do szukania nowych dróg. Nie wszystkie z nich są tak nowatorskie jak mogłoby się wydawać. Wiele z rozwiązań ma swoje pierwowzory w procesorach dużych maszyn, które ujrzały światło dzienne na długo przed komputerami klasy PC. Wspomniany, w poprzednim punkcie, klasyczny model mikroprocesora był dobry jeszcze przed kilkoma laty. Mocno zarysowany podział na wyspecjalizowane bloki nie zawsze da się zastosować do współczesnych konstrukcji i ulega stopniowemu rozmyciu.

Słownictwo w tej dziedzinie wzbogaciło się o szereg nowych, często tajemniczo brzmią­cych, zwrotów. W publikowanych pracach teoretycznych nie zawsze panuje zgodność poglądów. Głębokie zazębianie się zagadnień teoretycznych z konkretnymi rozwiąza­niami sprzętowymi prowadzi do sporów odnośnie definiowanych określeń (kwestią sporną jest nawet sprecyzowanie zakresu obejmowanego pojęciem architektura). W tej części rozdziału omówione zostaną skrótowo podstawowe pojęcia z tego zakresu.

RISC i CISC

Termin RISC (Reduced Instntction Set Computer) zrodził się w toku prac nad projek­tem „801" firmy IBM1 i oznaczał tendencję do ograniczania listy rozkazów procesora do niewielu błyskawicznie wykonywanych instrukcji. Realizacja każdej z nich była wy­nikiem odwołania się do wyspecjalizowanego obwodu elektronicznego, który nie tracił

1   Idea podchwycona została przez wielu innych projektantów i utrwalona między innymi w projektach: AMD 29000, HP PA-RISC, Intel 860 i 960 oraz IBM RS/6000.


16              Anatomia PC

czasu na tłumaczenie rozkazu. Rozpisanie algorytmu wykonywanego programu, który przecież składał się z operacji dużo bardziej skomplikowanych niż przepisanie z rejestru do rejestru, należało do obowiązków kompilatora. Warto zwrócić uwagę, że system taki wyzwala ogromne obciążenie magistrali pamięciowej - kod przetłumaczony przez kom­pilator znajduje się przecież w pamięci operacyjnej i każdy z elementarnych „klocków" musi zostać pobrany przez procesor. Prędkość przetwarzania jest bardzo duża i taka musi też być przepustowość magistrali. Problem ten rozwiązuje się współcześnie przez zastosowanie szybkich pamięci podręcznych (LI i L2). Spore uproszczenie konstrukcji typu RISC zawdzięcza się stałej długości wszystkich mikrorozkazów. Istnieją jednak projekty procesorów (na przykład „Thumb" firmy ARM) dopuszczające zmienną długość instrukcji.

Odmienny punkt widzenia reprezentuje filozofia CISC (Complex Instruction Set Com­puter) dominująca w rodzinach x86 Intela i 680xx Motoroli. Procesory budowane według tej zasady biorą na siebie coraz to większe zadania. Pobierany z pamięci pojedynczy rozkaz wywołuje szereg kompleksowych działań. Czas opracowywania takiego pole­cenia może dochodzić nawet do kilkudziesięciu cykli zegarowych. Kod programu jest bardzo zwarty a proces jego transportu do procesora znacznie mniej krytyczny.

Jakkolwiek oba pojęcia definiowały początkowo kategorie przeciwstawne, to obecnie coraz trudniej jednoznacznie przypisać dany procesor do jednej nich. Ostry podział na RISC i CISC ma coraz mniejszy sens. Można co najwyżej mówić o pewnych cechach architektury a i to wyłącznie w odniesieniu do fragmentów określonej konstrukcji. Kla­syczny przykład stanowią procesory K6 i Pentium Pro. Chociaż same zaliczają się do grupy CISC (akceptują przecież na swym wejściu złożone instrukcje x86), wyposażone są w dekoder tłumaczący na wewnętrzny kod mikroprocesora a więc ich jądro pracuje w trybie RISC (RISC Kernel). Uznawany za członka rodziny RISC procesor PowerPC 601 może z kolei poszczycić się chyba zbyt nadmierną jak na „zredukowaną" (R — Reduced) liczbą rozkazów: samych rozgałęzień można naliczyć ponad 150. Łatwiejsze do sklasyfikowania są typy Pentium oraz Ml (podobnie jak ich mutacje z rozszerze­niami MMX) przetwarzające dostarczany kod w sposób bezpośredni (Native Code).

Pipeline

Niezależnie od powyższej klasyfikacji każdy procesor można porównać do zakładu pro­dukcyjnego, który z dostarczonych materiałów (dane w pamięci) wytwarza według określonego algorytmu (kod programu) pewien określony produkt wyjściowy (inny stan danych). Analogia ta pozwala na sięgnięcie do jednego z bardziej rewolucyjnych po­mysłów racjonalizatorskich - taśmy produkcyjnej. Wprowadzona po raz pierwszy w za­kładach Forda idea podzielenia cyklu produkcyjnego na wiele małych i szybkich ope­racji wydaje się pozornie bezużyteczna: czas pracy nad produktem nie ulega przecież zmianie (może się nawet wydłużyć jeśli szwankują połączenia między poszczególnymi etapami). Nie o ten czas tu jednak chodzi, ale o zwiększenie przepustowości.

Przeniesienie powyższej idei na grunt architektury mikroprocesorów odbyło się po raz pierwszy w roku 1960 podczas prac nad projektem IBM procesora klasy Mainframe typu 7030; mikroprocesory dołączyły dopiero w 20 lat później. Charakterystyczny jest


Komunikacja procesora z innymi elementami architektury komputera


17


 


podział czasu pracy nad pojedynczym rozkazem na wyraźnie zarysowane fazy. Symbo­liczna taśma produkcyjna nazywana jest tutaj potokiem przetwarzającym (Pipeline lub w skrócie Pipę) a jej poszczególne punkty stopniami (Pipeline Stages).


Rysunek 1.2.

Idea potokowego

przetwarzanie

danych


 

u FAZA

FAZA

FAZA

u F«A,,

FAZA j

*~T

2

'     3     "

4

5

Rozkaz (n)

Rozkaz

(n-1)

Rozkaz

(n-2)

Rozkaz (n-3)

Rozkaz (n-4)

Rozkaz

(n+1)

Rozkaz W

Rozkaz

(n-1)

Rozkaz (n-2)

Rozkaz (n-3)

Rozkaz (n+2)

...
Zgłoś jeśli naruszono regulamin