wspolczesne_systemy_komputerowe:procesory

# Rozwój procesorów

Głównym celem rozwoju procesorów jest zwiększanie ich mocy obliczeniowej. Jeszcze do niedawna moc obliczeniową utożsamiano z szybkością działania procesora, czyli częstotliwością zegara taktującego procesor. Powodem był sposób działania jednostki centralnej - w jednym cyklu procesora wykonywana była część lub jedna instrukcja. Im szybciej taktowany był procesor, tym więcej instrukcji wykonywało się, powodując że procesor stawał się wydajniejszy. Jednak dość szybko okazało się, iż uzyskiwany wzrost wydajności w procesorach CISC przestał zaspokajać rosnące potrzeby użytkowników. Powrócono więc do koncepcji RISC, czyli procesorów o uproszczonej liście rozkazów, zapewniających optymalizację ich realizowania. Dodatkowy wzrost mocy obliczeniowej uzyskano też dzięki zastosowaniu techniki pipeline - przetwarzaniu potokowym danych. Pojawiły się też inne metody przyspieszania pracy procesorów. Zintegrowano szybką pamięć podręczna z procesorem, co przyczyniło się do ogromnego wzrostu wydajności jednostki centralnej mimo niewielkiej pojemności pamięci. Procesory zaczęły stawać się superskalarne, oznacza to że posiadają więcej niż jeden potok typu pipeline. W celu eliminacji opóźnień spowodowanych zmianami w normalnym przebiegu programu - rozgałęzieniami przy operacjach skoku skonstruowano układy przewidywania skoków, co dodatnio wpłynęło na wzrost wydajności CPU. Pojawiła się również technologia MMX firmy INTEL, która spowodowała rozwój oprogramowania multimedialnego. Wprowadziła ona nowy zestaw rozkazów przyspieszający przetwarzanie grafiki, video czy dźwięków.

# Procesor

Urządzenie cyfrowe sekwencyjne potrafiące pobierać dane z pamięci, interpretować je i wykonywać jako rozkazy. Wykonuje on bardzo szybko ciąg prostych operacji (rozkazów) wybranych ze zbioru operacji podstawowych określonych zazwyczaj przez producenta procesora jako lista rozkazów procesora. Jedną z podstawowych cech procesora jest długość (liczba bitów) słowa, na którym wykonywane są podstawowe operacje obliczeniowe. Jeśli słowo ma np. 32 bity, mówimy że procesor jest 32-bitowy. Innym ważnym parametrem określającym procesor jest szybkość z jaką wykonuje on program. Szybkość ta w znacznym stopniu zależy od czasu trwania pojedynczego taktu procesora, jest on odwrotnością częstotliwości procesora. Do typowych rozkazów wykonywanych przez procesor należą:

- kopiowanie danych (do i z rejestru)
- działania arytmetyczne (dodawanie, odejmowanie)
- działania na bitach (and, or)
- skoki (warunkowe, bezwarunkowe)

# Architektury

Klasyczna architektura – von Neumana:

- ALU – jednostka arytmetyczno –logiczna,
- linowo adresowalna pamięć kodu i danych,
- system wejścia/wyjścia,
- układ sterowania.

CISC (Complex Instruction Set Computers):

- duża liczba rozkazów (instrukcji),
- występowanie złożonych, specjalistycznych rozkazów,
- duża ilość trybów adresowania,
- do pamięci może się odwoływać bezpośrednio duża liczba rozkazów,
- powolne działanie dekodera rozkazów,

RISC (Reduced Instruction Set Computers): Przedstawiona pod koniec lat 70-tych architektura procesorów. Badania wykazały, że w statystycznym kodzie prawie 50% rozkazów to zwykłe przypisania (np.: zapis zawartości rejestru do pamięci i odwrotnie). Cechy:

- zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w procesorach CISC sięga setek. Upraszcza to znacznie dekoder rozkazów.
- redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej zunifikowane, co dodatkowo upraszcza wspomniany wcześniej dekoder rozkazów.
- ograniczenie komunikacji pomiędzy pamięcią, a procesorem oraz zwiększenie liczby rejestrów.
- wprowadzono przetwarzanie potokowe (ang. pipelining) - podział rozkazu na etapy, cykl przetwarzania dzieli się na odrębne bloki przetwarzania. Dane po przejściu przez jeden blok trafiają do następnego, aż osiągną ostatni blok. Dzięki temu, że przetwarzanie odbywa się w rozdzielnych blokach system może przetwarzać jednocześnie tyle danych ile zdefiniowano bloków.

Post-RISC:

- wprowadzenie wielu jednostek funkcjonalnych realizujących ten sam etap przetwarzanie potokowego – superskalarność,
- zwiększenie liczby etapów (bloków) potoku – superpotkowość,
- użycie układów przewidywania rozgałęzień,
- pobieranie rozkazów z wyprzedzeniem (prefetching),
- realizowanie operacji w zmiennej kolejności (out-of-order),
- dodanie nowych rozkazów (np. wektorowych).

# Nowe tendencje rozwoju

- VLIW (Very-Long Instruction-Word): procesory z bardzo długim słowem maszynowym,
- EPIC (Explicitly Parallel Instruction Computing): kilka rozkazów do równoległego wykonania jawnie kodowanych w jednym długim słowie,
- procesory wielordzeniowe.