Procesory

Od CISC do RISC

przeczytasz w 3 min.

Pierwsze zmiany w architekturze x86 wprowadzone zostały już w drugim z  tej rodziny układzie 80286, gdzie dodano nowe instrukcje, sposób adresowania pamięci, a także wprowadzono potokowe przetwarzanie danych. W  tym celu zwiększono liczbę jednostek wewnętrznych z dwóch do czterech (jednostka współpracy z szyną BU (bus unit), dekoder rozkazów IU (instruction unit), jednostkę wykonawczą EU (execution unit), układ adresacji AU (address unit)), a cykl przetwarzania instrukcji podzielono w tym wypadku na cztery na odrębne bloki przetwarzania, z których każdy oprócz ostatniego jest połączony z następnym.

W 1985 roku pojawiła się 32-bitowa kość Intel 80386, znana też pod nazwą i386DX. W układzie tym zastosowano 32-bitową magistralą adresową oraz 32-bitową magistralą danych. Oczywiście rozszerzone zostały do 32-bitów  też rejestry ogólnego przeznaczenia, które mogły być - w odróżnieniu od poprzednich wersji układów - używane przez programistę w dowolny sposób. Dodano także nowe rejestry kontrolne. Istotną zmianą było dodanie do procesora jednostki zarządzania pamięcią MMU (Memory Management Unit).

Podstawowe rejestry w 32-bitowej architekturze x86 (architektura IA-32), która zadebiutowała wraz z procesorami Intel 80386
Podstawowe rejestry w 32-bitowej architekturze x86 (architektura IA-32), która zadebiutowała wraz z procesorami Intel 80386

Następcą układów Intel 80386 stała się rodzina procesorów Intel i486 (na rynku pojawiły się 1989 rok), które pod względem modelu programistycznego były niemal identyczne z układami i386DX – dodano w  nim jedynie kolejne instrukcje. Spore zmiany nastąpiły natomiast w mikroarchitekturze układu – po raz pierwszy pojawiła się wspólna dla danych i instrukcji pamięć podręczna pierwszego poziomu (cache L1) o  pojemności 8 KB oraz zintegrowany z procesorem koprocesor arytmetyczny FPU (Floating Point Unit), wykonujący operacje zmiennoprzecinkowe. Co ważne, procesory i486 jako pierwsze spośród układów x86 większość instrukcji wykonywały dokładnie w jednym takcie zegara.

Kolejną, piątą generację procesorów zgodną z architekturą x86 nazwano Pentium - od greckiej liczby pięć (pente). Pierwszy model, który pojawił się w 1993 roku składał się, mówiąc w pewnym uproszczeniu, z  połączonych ze sobą dwóch układów i486. Taka konstrukcja pozwalała, w  zależności od sytuacji, wykonywać dwa rozkazy równolegle. Istotna modyfikacja architektury x86 nastąpiła zaś w 1995 roku wraz z premierą układu Pentium MMX (oznaczenie kodowe P55C), kiedy to do listy rozkazów  dodano zestaw 57 nowych instrukcji MMX (MultiMedia eXtension) oraz specjalny moduł wykonawczy do ich przetwarzania.

Instrukcje MMX nie dotyczą wyłącznie multimediów, ale zostały opracowane specjalnie z myślą o programach multimedialnych. Rozkazy MMX wykorzystują technikę SIMD (Single Instruction, Multiple Data), dzięki której procesor może daną operację jedną, określoną instrukcją wykonywać jednocześnie na wielu danych. Wprowadzone w Pentium MMX rejestry MMX mają rozmiar 64 bitów i jest ich 8 – fizycznie w mikroarchitekturze P55C rejestry MMX zaprojektowano tak, że wykorzystywały część rejestrów koprocesora arytmetycznego, co uniemożliwiało jednoczesne wykonywanie instrukcji MMX oraz instrukcji zmiennoprzecinkowych przez jednostkę FPU.

Istotną zmianą w architekturze programowej x86 było dodanie w procesorze Pentium MMX zestawu instrukcji multimedialnych, ośmiu rejestrów MMX (od MM0 do MM7), w których można umieszczać dane o szerokości 8, 16, 32 i 64 bitów.
Istotną zmianą w architekturze programowej x86 było dodanie w  procesorze Pentium MMX zestawu instrukcji multimedialnych, ośmiu rejestrów MMX (od MM0 do MM7), w których można umieszczać dane o  szerokości 8, 16, 32 i 64 bitów 

Pentium MMX był ostatnim procesorem Intela wykorzystującym mikroarchitekturę CISC. Kolejne generacje układów zgodnych z x86 tego producenta tylko zewnętrznie są układami CISC, a wewnątrz są już klasycznymi układami typu RISC. We wszystkich nowoczesnych procesorach rozkazy x86 przetwarza się bowiem na proste mikropolecenia zgodne z  architekturą RISC. Co ciekawe, pierwszym układem zgodnym z architekturą x86, który wewnętrznie był procesorem RISC był NextGen Nx586 z 1994 roku, na bazie którego powstał w 1995 roku AMD K5.

Pierwszym układem Intela z wewnętrzną architekturą RISC był zaś Pentium Pro, również z 1995 roku, który przeznaczony był głównie do serwerów i wydajnych stacji roboczych. Na jego bazie powstawały kolejno układy Pentium II (w 1997 roku) i Pentium III (1999), a później Intel Core (2006), Core 2 Duo (2006), a także współczesne Intel Core i3, i5 oraz i7. W tym miejscu warto wspomnieć, o kolejnej dużej modyfikacji modelu programistycznego x86, a mianowicie pojawieniu się rozkazów i jednostek SSE (Streaming SIMD Extension), w procesorze Pentium III, które wykorzystywane są m.in. w dekodowaniu materiałów wideo oraz audio czy w  obliczeniach graficznych 3D, przygotowujących dane dla kart graficznych.