Przełączanie kontekstu na architekyrze RISC a CISC

2

Mam taki dylemat bo wiadomo, że architektura x86 jest najpopularniejsza i nalezy do architektury CISC, ale podobno RISC jest dużo lepsze od architektur CISC bo jest mniejszy kod maszynowy większa liczba rejestrów i czy czasami z tą liczbą rejestrów nie będzie wolniejejsze przelączanie konkekstu na architektórach RISC bo według mojej logiki każde przełączanie kontektu musi wiązać się z wyczyszczeniem stanu rejestrów procesora i zapisanie ich w RAMie i z tego wniosek, że przełączanie kontekstu będzie wolniejsze na RISC niż na CISC.
Co wy o tym myślicie czy tak jest ?

5

HM, ciekawe. Tylko czy to nie będzie ułamek procenta? Jak czytałem to większa część przełączania kontekstu to zaciąganie danych znów do cache, a cache jest dużo większe niż pamięć rejestrów

0

@up
No też racja

3

x86 wcale nie ma tak mało rejestrów dzisiaj. co prawda przed x86-64 było tylko 8 (skalarnych) rejestrów ogólnego przeznaczenia, ale od x86-64 liczba tych rejestrów wzrosła do 16, a dodatkowo https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-performance-extensions-apx.html podwaja jeszcze raz:

Intel® APX doubles the number of general-purpose registers (GPRs) from 16 to 32.

dodatkowo procesory z https://en.wikipedia.org/wiki/AVX-512 mają 32 wektorowe 512-bitowe rejestry, a to przyćmiewa rozmiar rejestrów skalarnych (te mają 64 bity).

1

Była sobie taka jedna seria procesorów TriCore Infineon-a - i teraz nie jestem pewny ale zdaje się to była architektura RISC. Robiłem sobie takie porównania między wtedy używanymi ARM-ami (czyli RISC) a właśnie tą architekturą TriCore. I ARM pomimo 2 razy szybszego zegara był wyraźnie mniej responsywny w konsoli Linuxa od tego TriCore z 2 razy mniejszym od ARM-a zegarem. Nie wchodziłem jakoś bardzo szczegółowo w ten temat - ale możliwe że TriCore wygrywał bo miał sprzętowe zapisywanie kontekstu w tzw. CSA co było wykorzystywane przez schedulera Linuxowego. Nie wiem jak to było wtedy (dawno temu) w ARM-ie czy miał już rozkazy zapisu i odtwarzania rejestrów w ramach jednego rozkazu ale różnica w reponsywności była powalająca.

0
tomixtomi0001 napisał(a):

Co wy o tym myślicie czy tak jest ?

Myślę że pisząc aplikację jednowątkową z własnym OSem (bez wywłaszczania i współbieżności) zminimalizujesz ten problem do 0.

A przy okazji podziel się wynikami bechmarku.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.