Procesory
Artykuł
Mieszko Krzykowski, Mateusz Brzostek, Sobota, 6 sierpnia 2016, 09:00

Procesory ARM jeszcze nie tak dawno temu nadawały się jedynie do kalkulatorów. Teraz są elektronicznym mózgiem miliardów smartfonów oraz prostych komputerów przenośnych i powoli zaczyna się je wykorzystywać w serwerach. A to dopiero początek długiej listy zastosowań czipów ARM – w dzisiejszych czasach można je spotkać niemal wszędzie. Ale czym one właściwie są, czym się różnią od znanych nam układów x86 i jakiej wydajności można od nich oczekiwać?

Jedną z najczęściej wymienianych różnic między ARM a x86 jest przydział do grupy architektur: CISC lub RISC. Te dwa skróty pochodzą sprzed kilkudziesięciu lat, kiedy projektowano pierwsze architektury komputerów przeznaczone do powszechnego użytku. Skrót RISC oznacza Reduced Instruction Set Computer, czyli komputer o zredukowanym zestawie instrukcji. Termin CISC ukuto, by przeciwstawić go temu pierwszemu: ma oznaczać komputer o złożonym zestawie instrukcji (Complex Instruction Set Computer). Architekturę ARM na ogół przydziela się do grupy RISC, a x86 – do CISC. Na czym polega różnica i czy jest ona dziś istotna?

Czym się różni RISC od CISC?

Próba intuicyjnego zrozumienia tych terminów sprowadzi na manowce. Znane są procesory CISC znające tylko osiem instrukcji oraz procesory RISC z setkami instrukcji. W rzeczywistości kategoryzacja jest inna: procesory RISC mają instrukcje przesuwające dane z pamięci do rejestrów oraz oddzielne instrukcje wykonujące operacje na rejestrach – ale nie ma instrukcji łączących pobranie danych z obliczeniem. W architekturach CISC jedna instrukcja może łączyć pobranie lub zapisanie danych z obliczeniami.

W czasach gdy powstawało to rozróżnienie, w jednym komputerze było niewiele poziomów pamięci i były one zbudowane z diametralnie różnych urządzeń. Pamięć operacyjna była znacznie wolniejsza niż rejestry procesora. W przypadku procesora RISC programista miał pewność, jak długo będą wykonywane poszczególne instrukcje, bo mogły one operować wyłącznie na rejestrach. Również instrukcje dostępu do pamięci zawsze trwały tyle samo. Procesor CISC z instrukcjami, które mogą operować albo na rejestrach, albo na pamięci operacyjnej, nie dawał takiej pewności: czasem instrukcja była wykonywana bardzo szybko, a czasem trzeba było czekać na dane z pamięci.

Gwarantowany stały czas wykonania instrukcji ułatwia projektowanie procesorów: łatwiej zapewnić stały ciągły przepływ instrukcji, bez przestojów w trakcie oczekiwania na dane. Ułatwia też pod pewnym względem programowanie i optymalizację kodu podczas kompilacji.

Z czasem procesory znacznie się skomplikowały i różnice w adresowaniu straciły na znaczeniu. Pamięć operacyjna coraz wyraźniej nie nadążała za coraz wydajniejszymi procesorami, a programy stawały się coraz bardziej skomplikowane. Instrukcje wykonywane szybko i w przewidywalnym czasie przestały być receptą na zapełnienie jednostek wykonawczych procesora pracą. CPU stały się bardzo szerokie – mogą jednocześnie wykonywać kilka instrukcji różnego typu. Mogą też wykonywać instrukcje poza kolejnością, co znaczy, że kod programu jest obserwowany i analizowany z dużym wyprzedzeniem w stosunku do właśnie wykonywanej instrukcji.

Po drugie, podsystem pamięci zamiast jednego poziomu ma ich wiele. Kilka poziomów pamięci podręcznej, z których każdy kolejny jest pojemniejszy i wolniejszy od poprzedniego, ma zadanie zminimalizować czas oczekiwania na dostęp do RAM-u. Dane z pamięci prawie nigdy nie są pobierane dopiero przy próbie wykonania instrukcji, która ich potrzebuje – zaawansowane algorytmy pobrania z wyprzedzeniem załatwiają to znacznie wcześniej.

...W nowoczesnym procesorze – prawie niczym

W ten sposób jedna z podstawowych różnic między RISC a CISC straciła praktyczne znaczenie. Nieważne, czy jedna instrukcja pobiera dane z pamięci i coś z nimi robi, czy pobranie jest rozdzielone od obliczenia. Front-end procesora i tak już dawno sprawdził adresy występujące w kodzie, dane zostały pobrane z wyprzedzeniem do któregoś poziomu szybkiej pamięci podręcznej, a same instrukcje – podzielone na mikrooperacje i poprzestawiane tak, żeby nie było zbyt dużych przestojów w pracy jednostek wykonawczych.

Zasadnicze różnice między RISC i CISC miały znaczenie w przeszłości i mogą je mieć dzisiaj w skrajnie prostych i niewielkich procesorach. W zaawansowanych CPU podsystem pamięci, nowoczesne techniki wykonywania instrukcji poza kolejnością i rozdzielanie ich na mikrooperacje oraz kompilator ukrywają te różnice.

Ocena artykułu:
Ocen: 38
Zaloguj się, by móc oceniać
Stefan999 (2016.08.06, 09:12)
Ocena: 8

0%
Trochę brakuje rdzenii Denver. Szkoda, że nie zrobiliście chociaż poglądowych testów SoC od Apple. Generalnie, inżynierowie od Apple chwalili się, że ich CPU jest niemal tak wydajne jak Haswell.
SunTzu (2016.08.06, 09:23)
Ocena: 27

33%
Świetny art poglądowy- za to uwielbiałem laba, anandtech i kiedyś bnchmrk-a (tylko tam ostatnie arty na tym poziomie były naście lat temu latach 199x/200x).
Można było jeszcze przetestować zadania NAS i gry opensource...

Art świetnie podejmuje dyskusję z pewnymi mitami, które wynikają z tego, że cytując: ARMY szły z dołu, a x86 z góry. Głównie chodziło o to, że x86 do ostatnich lat miało zbyt wysoki minimalny pobór energii. Co wykluczało x86 i dawało duopol ARM/MIPS. (nie chcę odnosić się do tego co lepsze tutaj, ale art pięknie zwraca uwagę na różne problemy).

Wnioski świetnie. Wręcz pogrubionymi pisać.
Ile to blogowych portali mających odsłon więcej niż lab zachwyca się punktami. Tu ładnie i dosadnie powiedziane, nie punkty. Apple, qualcomm (choć Ci są wg mnie trochę ostatnio dyskusyjni) liczy na wydajność rdzenia- co nie daje tylu punktów. Marketing robi ludziom wodę, a blogersi ehmm...
... utwierdzają. Cały internet fascynuje się punktami - tylko czekać na 10 rdzeniówki, (ups już są)

Co do testu x360 vs Shield. Mam poczucie (cap obvious), że na x360 jest ustawiony limiter w Doom, Borderlands, Half Life- co uniemożliwia porównanie platform gdy x360 osiąga limiter. Tu wnioski uważam trochę naciągnięte. Jedyne porównanie jakie jest tu możliwe w teście to w MGR.
Edytowane przez autora (2016.08.06, 09:48)
Hashi (2016.08.06, 09:32)
Ocena: 6

0%
Fajne porównianie Sheld i X360 ale ludziska weźcie w końcu pod uwagę, ze Xbox360 ma układ eDRAM który jest tak naprawdę dodatkową kartą GPU (posiada 192 pixel procesory) i przepustowość 256gbit/s (2560-bit). Tak samo PS3, Nvidia nigdy na slajdach porównujących Tegrę nie brała pod uwagę SPU w PS3 bo tutaj Tegra nie ma najmniejszych szans (bo łączna prędkość SPU pomiędzy LS, a rejestrami to 400GB/s). Ponadto SPU mają łącznie 1024 rejestry co jest wartością wręcz nie porównywalną z np X86.
Tak w grach sprzed 100 lat jak Doom 3 gdzie grafika to karton taki Shield zdepta X360 bo lepiej adresuje 1080p, natomiast Metal Gear Solid pokazuje jedno.. wiecej efektów -> konsola wygyrwa.
Kuba.wro (2016.08.06, 09:49)
Ocena: 16

0%
Takie artykuły lubię najbardziej! :D
barwniak (2016.08.06, 10:20)
Ocena: 8

0%
Po pierwsze Tegra X1 ma 64 bit interfejs do LPDDR4, czyli lipa.
Nvidia Tegra Parker na końcówkę tego roku, będzie miała Pascal-a z GDDR5, skończy się zabawa.

Co do superkomputerów, to może ARM na razie zapomnieć. Teraz liczą się akceleratory, TESLA PASCAL GP100 5 TFLOP DP, Xeoni Phi Knight Landing 3 TFLOP DP.
A ile TFLOP DP ma ARM :)
Ciekaw jestem starcia wielogodzinnego przetwarzania h264 do H265 software Latitude T9600 vs Apple Iphone 6s, lub Galaxy S7. Na stoliku w ogródku w pełnym słoneczku. Oba dostają zasilanie z gniazdka :)
Odpowiedź jest prosta, różnica była by nieskończona, bo telefony by się wyłączyły.
revcorey (2016.08.06, 10:34)
Ocena: 6

0%
Cóż obecnie na rynku serwerowym ARM nie okazał się spektakularnym sukcesem, czytałem testy nie jest najlepiej względem konkurencji.
Aczkolwiek domowy NAS z ARM czemu nie?
Ciekaw jestem jak wypadło by ARM vs MIPS.
Edytowane przez autora (2016.08.06, 10:35)
miekrzy (2016.08.06, 10:44)

0%
komisarz @ 2016.08.06 10:39  Post: 995789
(...)Wlacz myslenie!(...)

Zachęcam do tego samego. A także do czytania, a nie tylko oglądania obrazków.
Edytowane przez autora (2016.08.06, 10:45)
SunTzu (2016.08.06, 11:15)
Ocena: 4

33%
revcorey @ 2016.08.06 10:34  Post: 995787
Cóż obecnie na rynku serwerowym ARM nie okazał się spektakularnym sukcesem, czytałem testy nie jest najlepiej względem konkurencji.
Aczkolwiek domowy NAS z ARM czemu nie?
Ciekaw jestem jak wypadło by ARM vs MIPS.

Tak jak piszesz domowy NAS mile widziany ARM i MIPS... i nie tylko- też routery też znajdują zastosowanie.
Choć ceny NAS są dość wysokie czasem taniej złożyć blaszaka - niestety kosztem rozmiarów- dostaje się za to więcej możliwośći.

ARM ma sens w superkomputerach -> HP moon coś tam, co sprowadza do masakrycznej ilości problemów. Po prostu nie jest to wyraźnie lepsza platforma od x86. x86 przy podobnej gęstości osiąga się lepszą wydajność.
Te superkomputery, które chcą być hiperopłacalne, efektywne lecą na GPGPU.

!Najlepsza jest konkurencja. Mile by było gdyby ARM zdobył popularność w laptopach, desktopach. Intel w telefonach. Wiele rzeczy niestety tu się rozbija o soft i 'leniwość' developerów (dosłownie leniwość- weźmy Androida i wsparcie aplikacji na MIPS/x86 gdzie naprawdę jest mało roboty z kompilowaniem apki na wszystkie platformy).
Edytowane przez autora (2016.08.06, 12:41)
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook