Mikroprocesor

Pojawił się w laboratoriach przez przypadek. Japońska firma E.T.I. produkująca drogie kalkulatory biurowe zamówiła w firmie Intel nowy rodzaj układu elektronicznego do swoich wyrobów. Marcin „Ted" Hoff z Intela realizując ten projekt, postanowił uzupełnić funkcje układu o pewne możliwości programowania. Tak powstał w 1971 r. Intel 4004 – mikroprocesor 4–bi–towy.

 

 

Wczoraj

W roku 1973 powstał układ 8008 – pierwszy mikroprocesor 8–bitowy. Opracowany przez Intel dla firmy Computer Terminal Corp. obecnie Datapoint, procesor ten miał jednak jeszcze bardzo prymitywną architekturę i zasługiwał raczej na miano sterownika, niż mikroprocesora ogólnego zastosowania (MPU–microprocessor unit)

Następny w kolejności – Intel 8080 – mimo, że strukturalnie jest potomkiem układu 8008, to |ednak z uwagi na zestaw instrukcji – był juz prawdziwym MPU. Mikroprocesor ten został mózgiem pierwszego komercyjnego mikrokomputera, ale to zupełnie inna historia.

Przyjrzyjmy się bliżej mikroprocesorowi 8–bitowemu na podstawie Intela 8080 i jego otoczenia.

Pamięć 8–bitowego procesora jest zorganizowana w komórki (bajty), z których każda zawiera 8–bitów (stanów zer lub jedynek) informacji. Jeden bajt może zawierać kod litery, liczby lub może reprezentować jedno słowo instrukcji w kodzie wewnętrznym mikroprocesora (w języku maszynowym).

Procesor 8–bitowy posiada 16–bltową „szynę adresową". Oznacza to, że może on odczytać lub zapisać 216 czyli 65536 bajtów. Kolejnym komórkom pamięci przyporządkowane są adresy od 0 do 65.536, będące przestrzenią adresową procesora 8–bitowego. Często liczy się duże ilości pamięci jako wielokrotność liczby 210 = 1024, co w przybliżeniu jest równe 1000 i oznacza się popularnym skrótem K (kilo). Stąd też pochodzi magiczna liczba ograniczająca nam ilość bajtów pamięci MPU 8–bitowego do 64kB (65.536 bajtów).

MPU zapisuje i odczytuje bajty z pamięci pojedynczo, jeden po drugim. Podczas pojedynczego cyklu „pobrania zawartości" pamięci przemieszczane jest zatem tylko 8 bitów. MPU 8–bitowy ma instrukcie działające na 16 bitowych liczbach, jednakże robi to w dwóch podejściach po jednym bajcie. Niezależnie od programu, którym posługuje się programista, procesor wykonuje zawsze ciąg instrukcji w kodzie maszynowym. Pojedynczo tworzą one raczej prymitywne czynności, takie jak przemieszczanie bajtu między określonym adresem w pamięci, a „rejestrem" MPU lub dodanie do siebie dwóch 8 bitowych liczb, które mają być pobierane z pamięci. Program taki w postaci kodu maszynowego reprezentowany jest poprzez sekwencje bajtów zapamiętanych kolejno w pamięci. Niektóre instrukcje wymagają tylko jednego bajtu, większość od dwóch do czterech (np. w procesorze Z–80) zapamiętanych zawsze w następujących po sobie bajtach.

Dzisiaj

Większość dużych, znanych firm komputerowych nie może jednak pozwolić sobie na to, by nie wejść na rynek ze sprzętem 16–bitowym. Pierwszą firmą produkującą w 1974 r. 16–bitowy procesor była National Semiconductor. W 1978 r. zjawił się Intel 8086, w latach kole|nych 8088 (16–stka z 8–bitową szyną danych), 80186 i 80286. W 1979 r. firma Zilog wyprodukowała Z8000, w 1980 na rynek trafił procesor Motoroli MC68000, a w 1982 MC68010.

Rynek mikrokomputerowy podzielił się dziś na dwie części: Z jednej strony mamy do czynienia z serią komputerów osobistych firmy IBM (PC, XT, AT) i całą plejadą firm produkujących komputery kompatybil–ne (całkowicie odpowiednie) z maszynami IBM, takie jak ATT, ITT, Kaypro itd., bazujących na procesorach Intel 8086, 8088, 80186 i 80286. Drugą część tworzą komputery na bazie rodziny procesorów Motoroli MC68000, produkowane przez takie firmy |ak Sinclair (QL), Commodore (Amiga), Atari (ST), Apple (Macintosh, Lisa), Hewlett–Packard (HP–IPC). Ceny większości tych komputerów są już porównywalne z wczorajszymi cenami komputerów 8–bitowych i wahają się w granicach 250$ – 700$.

W procesory inne, niż wymienione, wyposażony jest jedynie niewielki procent komputerów.

Jak porównywać mikroprocesory? Wydaje się to łatwe. 16–bitowy jest dwukrotnie potężniejszy, niż 8–bitowy, a 32–bitowy – czterokrotnie. Ale czy tak jest rzeczywiście''

Procesor 8–bitowy może posiadać tylko 28 = 256 różnych instrukcji. Liczba ta może być zwiększana, ale są to już trochę sztuczne sposoby. MPU 16–bitowy może mieć aż 216 = 65.536 niezależnych instrukcji. Jest to na pewno liczba o wiele za duża na potrzeby programowania. Zupełnie wystarczające wydaje się przeznaczenie 9 bitów na instrukcje i pozostawienie 7 na dane (wszystko w jednym słowie i w jednym cyklu pobrania pamięci).

Następną cechą jest liczba wewnętrznych rejestrów. W porównaniu z procesorami 8–bitowymi liczba ich jest oszałamiająca np. Motorola MC8000 posiada 17 rejestrów z czego 15 32–bltowych. Nie ma rejestrów specjalnie wyróżnionych, (będących odpowiednikiem akumulatora). Większość instrukcji może być wykonywanych w każdym rejestrze, zatem nie trzeba już przekazywać wszystkich czynności obliczeniowych procesora przez jedyny akumulator i „żonglować" rejestrami. Nikogo nie trzeba chyba przekonywać, jak bardzo upraszcza to programowanie.

Zwiększona liczba instrukcji obejmuje takie rozkazy, jak mnożenie i dzielenie. Funkcje te, jak pewnie niektórzy wiedzą, nie są takimi trywialnymi procedurami pisanymi w języku maszynowym MPU 8–bitowego. Procesor 16–bitowy może również wykonywać te rozkazy w sposób programowy (re–kursywny), a nie „hardware'owy", ale programista już nie musi, a nawet nie wie o tym.

Dodano również wiele nowych spsobów adresowania pamięci, co umożliwiło implementację, na 16–bitowe mikrokomputery takich wielozadaniowych systemów jak UNIX i spowodowało duży postęp jakościowy.

Przyjrzyjmy się temu bliżej. Procesory 8086, 8088, MC68000 posiada– 20 bitowe szyny adresowe, co daje 220 = 1.048.576 ba|tów (1 MB) bezpośrednio adresowalnej pamięci. Procesor MC68000 posiada nawet 24–bitową szynę adresową co umożliwia adresowanie 16MB.

Przy omawianiu MPU 16–bitowego należy wspomnieć o „pamięci wirtualnej" i „maszynach wirtualnych". Procesorem o tych możliwościach jest np. MC68010 Motoroli. Koncepcja pamięci wirtualnej polega na tym, żeby dać programiście poczucie poruszania się w niemal nieograniczonej przestrzeni adresowej, ewentualnie stworzenia możliwości emulacji (imitacji) urządzeń peryferyjnych (dysków, drukarek, monitorów itp.) nie występujących fizycznie w systemie (to nazywa się właśnie maszyną wirtualną). Podstawowym mechanizmem pamięci wirtualnej jest zapewnienie procesorowi tylko pewnej ograniczonej ilości szybkiej pamięci fizycznej (operacyjnej), która może być adresowana bezpośrednio przez komputer w czasie gdy trzymamy obraz całej, o wiele większe] wirtualnej pamięci, na wtórnym nośniku informacji np. dyskach o olbrzymiej pojemności. W chwili gdy procesor ma zamiar pobrać lub zapisać komórkę o adresie poza aktualnie dostępną przestrzenią adresową, wykonanie programu zostaje na chwilę automatycznie zatrzymane, dana część informacji aktualnie potrzebne) zostaje przepisana szybko do pamięci operacyjnej i program wykonuje się dalej. Procesor MC68010 posiada tę wyjątkową cechę, że instrukcja wymagająca zmiany pamięci jest na czas tej zmiany zapamiętana i przerwana, a po zmianie odtworzona i kontynuowana dalej, w odróżnieniu od innych metod gdy powtórzenia wymagała cała powyższa instrukcja od początku.

Inną cechą MPU 16–bitowego jest umożliwienie współbieżności wykonywania pewnych operacji w mikroprocesorze. Normalnie przyzwyczajeni jesteśmy do szeregowego sposobu pobierania informacji z pamięci i realizowania koleinych instrukcji Nie jest to |edyne rozwiązanie. Niektóre operacje można wykonywać równolegle. Np. w procesorze 8088 wydzielono tzw. układ sprzężenia z magistralą. Jest on odpowiedzialny za dostarczenie bajtów z pamięci i umieszczanie ich w kolejce w buforze procesora, podczas gdy układ centralny wykonuje w kolejności operacje na tych bajtach nie zajmuje się już wypracowaniem adresów i cyklami pobrania tych słów z pamięci.

Na końcu należy wspomnieć o większei częstotliwości zegara z jaką może pracować MPU 16–bitowy. Typowymi częstotliwościami pracy są 7–12 MHz, a częstotliwości maksymalne dochodzą do 14 MHz.

Możemy już chyba podjąć próbę odpowiedzi na pytanie zadane na początku. Jak porównywać procesory? Są cztery podstawowe cechy, które należy wziąć pod uwagę. Są to:

  1. Prędkość: maksymalna częstotliwość zegara z jaką może pracować MPU.
  2. Przestrzeń adresowa: maksymalny obszar pamięci jaki MPU może bezpośrednio adresować.
  3.  Lista instrukcji: hasło to obejmuie ilość i jakość „garnituru" instrukcji MPU.
  4.  Szerokość słowa: ilość bitów, które MPU może przetworzyć za jednym razem.

Jak widać nie jest to jednoznaczna odpowiedź i nie można tych cech ułożyć w jakąś konkretną hierarchię, chociaż szerokość słowa odgrywa Istotną rolę, gdyż pozostałe trzy parametry są mocno związane z tą cechą.

Jutro

Nie ulega wątpliwości, iż w najbliższych latach ruszy produkcja mikrokomputerów 32–bitowych. Właściwie już się to dzieje w przypadku komputerów osobistych. Można się spytać, po co? Odpowiedzi jest wiele: większa prędkość, wielozadaniowość, wielodostępność, kompatybilność z dużymi komputerami, możliwość wykonywania olbrzymich programów np.: „sztucznej inteligencji", systemów obróbki danych, rozpoznawania mowy i chyba obecnie najważniej–sza możliwość wprowadzenia do mikrokomputerów systemu operacyjnego UNIX.

I znów jako pierwsza na rynku pojawiła się firma Intel z procesorem 80386, który być może znajdzie swoje miejsce w kolejnych generacjach IBM–PC. Drugą firmą jest Motorola, która uruchomiła produkcję procesora MC 68020, który połączył w jedno 32–bitowe możliwości z pełną kompatybilnością z całą już bardzo popularną rodziną MC 68000.

Na rynku znajdują się leż już kości innych firm: Zilog (Z80000, NCR 32000), Hewlett–Packard, Inmos, Fairchaild Camera, National Semiconductor, Texas Instruments Western Electric ltd.

Kto wygra rywalizację? Na pewno pozostaną Intel i Motorola. Z pozostałych może National Semiconductor ze swoim procesorem 32000 (możliwość bezpośredniego adresowania 300MB). Na pewno też trzeba wziąć pod uwagę Japonię. Firma NEC ogłosiła, że pracuje nad 32–bitowym procesorem z 700.000 tranzystorów w układzie. Termin ukończenia prac – 1987 r. Firma Hitachi potwierdziła zakończenie prac wstępnych nad 32–bitowym procesorem. Termin rozpoczęcia masowej produkc|i – 1986 r. Właśnie firmy japońskie mogą być „czarnym koniem" wyścigu

Czym się te układy charakteryzują lub będą charakteryzowały? Typowe jest dalsze scalanie elementów komputera w jednym układzie np.: RAM I ROM w kości, powiększanie liczby wewnętrznych rejestrów, listy rozkazów, ilości pamięci bezpośrednio adresowalnej, jak i poszerzanie wirtualnych możliwości procesora oraz zwiększanie szybkości zegarów.

A co dalej? 64 bity, 128 ltd? Czy skazani będziemy na ciągłe śledzenie tej gonitwy pozornie bez końca?

Procesor 64–bitowy spodziewany jest pod koniec lat osiemdziesiątych. Sądzę, że spotka go jednak znacznie mniejsze zainteresowanie, niż procesory 32–bitowe. Większość dużych komputerów obecnie używa 32–bitowych słów i niecelowe wydaje się zwiększanie tej wartości. Naiważniejszy cel to doprowadzenie do całkowitej kompatybilności dużych i małych komputerów. Zostanie to osiągnięte przez wprowadzenie 32–bi–towego MPU.

Niewątpliwie na uwagę zasługują też procesory typu RISC (Reduced Instruction Set Computers) o zmniejszonej liczbie instrukcji, które są w centrum zainteresowania takich firm, jak: Inmos, IBM, DEC, Hewlett–Packard.

Konwencjonalne procesory są, zdaniem ich twórców, obarczone instrukcjami rzadko lub w ogóle nie używanymi. Kości można robić szybsze, tańsze i lepsze poprzez bardziej rozsądne ich projektowanie w myśl zasady, że szybciej wykona się pięć prostych instrukcji, niż trzy skomplikowane. Mikroprocesor typu RISC redukuje ilość instrukcji maszynowych do małej liczby najprostszych rozkazów, które dają się łatwo i szybko dekodować w procesorze.

Nie ulega wątpliwości, że z czasem ujrzą światło dzienne procesory o równoległym przetwarzaniu. Wyobraźmy sobie mikroprocesor złożony z wielu 32–bitowych kompletnych, niezależnych struktur porozumiewających się jakąś nadrzędną hierarchiczną siecią między sobą i wykonujących całkowicie równoległe operacje związane z realizacją danego programu. Takie procesory już się rodzą w laboratoriach.

Jakie możliwości mógłby mieć taki procesor? Może nareszcie zdolny byłby zrozumieć ludzki język, a nie tylko w mniej lub bardziej udany sposób go naśladować.

Na horyzoncie pojawiają się też już „bioprocesory", choć narazie rozważania o nich przenieść należałoby ze sfery prognozowania w sferę „science–fiction". Chociaż gdy uświadomimy sobie, że narodziny pierwszego mikroprocesora odbyły się zaledwie przed 15 laty...

 

Krzysztof Czernek