RISC
RISC (ang. Reduced Instruction Set Computing) – typ architektury zestawu instrukcji procesora, który został przedstawiony pod koniec lat 70. w teoretycznych pracach na uniwersytecie Berkeley oraz w wynikach badań Johna Cocke z Thomas J. Watson Research Center.
Ówczesne procesory (budowane w architekturze CISC) charakteryzowały się bardzo rozbudowaną listą rozkazów, ale – jak wykazały badania – statystycznie tylko nieliczna ich część była wykorzystywana w programie. Okazało się na przykład, że ponad 50% rozkazów w kodzie to zwykłe przypisania, tj. zapis zawartości rejestru do pamięci i odwrotnie.
Ponadto badania wykazały, że podczas działania programu ok. 26-45% wykonywanych instrukcji to instrukcje wywołania podprogramów lub instrukcje obsługujące pętle, ok. 13–15% to wspomniane przypisania, 7–21% to instrukcje warunkowe, natomiast reszta to tylko 1–3%[1].
W związku z powyższym zaprezentowano architekturę mikroprocesorów, w której uwzględniono wyniki badań. Jej podstawowe cechy to:
- Liczba rozkazów zredukowana do niezbędnego minimum. Wynosi ona 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. Ponadto wprowadzono tryb adresowania, który ogranicza liczbę przesłań – większość operacji wykonuje się według schematu: [2].
- Ograniczenie komunikacji pomiędzy pamięcią a procesorem. Przede wszystkim do przesyłania danych pomiędzy pamięcią a rejestrami służą dedykowane instrukcje, które zwykle nazywają się load (załaduj z pamięci) oraz store (zapisz do pamięci); pozostałe instrukcje mogą operować wyłącznie na rejestrach. Schemat działania na liczbach znajdujących się w pamięci jest następujący: załaduj daną z pamięci do rejestru, na zawartości rejestru wykonaj działanie, przepisz wynik z rejestru do pamięci.
- Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest zaledwie 8 rejestrów), co również ma wpływ na zmniejszenie liczby odwołań do pamięci.
Pierwszym procesorem zaprojektowanym na bazie architektury RISC był RCA1802 wyprodukowany przez firmę RCA.
Obecnie[kiedy?] popularne procesory Intel, AMD i VIA z punktu widzenia programisty są widziane jako CISC, ale ich rdzeń jest RISC-owy. Rozkazy CISC są rozbijane na mikrorozkazy (ang. microops), które są następnie wykonywane przez RISC-owy blok wykonawczy. W praktyce okazuje się, że rozwiązanie takie (pomimo wielu znaczących wad) jest podejściem znacznie bardziej wydajnym (szczególnie że RISC-owy blok wykonawczy jest znacznie bardziej nowoczesny od architektury CISC widocznej dla programisty).
Przedstawiciele RISC
Przykłady rodzin:
- Alpha
- AMD 29000
- ARM
- Atmel AVR
- IBM 801
- Intel i860
- Intel i960
- Motorola M88000
- MIPS
- PA-RISC
- PowerPC
- RISC-V
- SPARC