Üdv a tízrészes sorozatunk első részénél, amely a RISC-V processzorarchitektúráról szól – ami egy nyílt és rugalmas alternatíva a domináns x86 és ARM architektúrákkal szemben. Mielőtt azonban a RISC-V részleteire térnénk, fontos megérteni, mik a processzorarchitektúrák, hogyan működnek, és miért kulcsfontosságúak a modern számítástechnikában. Ebben a bevezető részben ezért a processzorarchitektúrák alapjaival, fejlődésével, működési elveivel és azzal foglalkozunk, miért váltak egyesek dominánssá, míg mások megszűntek. Ez a háttér segít majd jobban megérteni a RISC-V egyediségét.
A mai technológiai világot két fő processzorarchitektúra-család uralja: az x86, amivel főként a személyi számítógépekben találkozunk, és amelynek jelentős részét az Intel és az AMD gyártja, valamint az ARM, amely a világ többi részén dominál – a mobiltelefonoktól (SoC, System-on-a-Chip) kezdve az adatközpontokba telepített processzorokig. Ezt az egyensúlyt 2024 nyarán a Snapdragon processzoros, Windows on ARM laptopok megjelenése kicsit felborította, de hamarosan ismét változás várható a harmadik architektúra, a RISC-V érkezésével. Ez egy teljesen új architektúra, és mivel Open Architecture-nek számít, teljesen nyílt és ingyenesen elérhető a hardvergyártók számára.
A RISC-V projekt még viszonylag fiatal, de már túllépett a tervezési fázison, és az első generáció már meg is jelent, amit a jövőbeli termékek fejlesztésére és prototípus-készítésre használnak. Az új architektúrával kapcsolatos fejlesztések iránt Kína is nagy érdeklődést mutat, jelentős összegeket fektetve a RISC-V processzorok, az operációs rendszerek és az alkalmazásfejlesztő eszközök fejlesztésébe. Ebben a mini-sorozatban bemutatjuk, mi is a RISC-V, hogyan áll a jelenlegi architektúrák mellett, és miért olyan vonzó a kínai gyártók számára.
A diagram a három fő processzorarchitektúrát és azok kulcsfontosságú jellemzőit mutatja be:
A RISC-V a legújabb architektúra, amely a modularitás elvére épül. Alapját egy egyszerű mag alkotja (RV32I/RV64I), amely csak a legszükségesebb utasításokat tartalmazza. Igény szerint ehhez szabványos bővítések adhatók hozzá:
A gyártók emellett saját, egyedi bővítéseket is hozzáadhatnak speciális felhasználási célokra.
Az ARM az egyszerűség és a teljesítmény közötti kompromisszumot képviseli. Több fontos bővítést is kínál:
Kiegyensúlyozott felépítésének köszönhetően az ARM a mobileszközök és a beépített rendszerek piacát uralja.
Az x86 a legidősebb és legösszetettebb processzorarchitektúra. Komplexitását az indokolja, hogy meg kell őriznie a visszafelé kompatibilitást – az új processzoroknak futtatniuk kell a 1978-as 8086-ra írt programokat is. Idővel a következő támogatások kerültek beépítésre:
Mindhárom architektúrának megvannak a maga előnyei: a RISC-V tervezési szabadságot és optimalizációs lehetőséget kínál, az ARM az energiahatékonyságával emelkedik ki, míg az x86 a legnagyobb teljesítményt és a legszélesebb szoftverkompatibilitást biztosítja.
A processzor a számítógép alapegysége, amely irányítja a gépet. A processzort programokkal lehet vezérelni, amelyeket ma már mesterséges intelligencia is képes generálni, de általában programozók írják őket magas szintű programozási nyelveken. Ezeket a programokat le kell fordítani a processzor számára érthető egyedi nyelvre, azaz a gépi kódra. A gépi kód utasításokból áll, amelyek együtt alkotják az utasításkészletet (ISA, Instruction Set Architecture). Ez szorosan kapcsolódik a processzor vezérlő struktúráihoz és az architektúrájához.
Számos különböző filozófiájú processzorarchitektúra létezik. A múltban nagyon népszerűek voltak a memóriaközpontú architektúrák, ahol a processzor csak minimális saját memóriával rendelkezett az átmeneti eredmények tárolására (regiszterek), és a műveleteket közvetlenül a fő memórián végezte. Például a processzor elolvasta a bemeneti adatokat a programozó által megadott címekről, majd az eredményt a megadott első címre írta vissza. Ez a megközelítés lehetővé tette nagyon elegáns kódok írását, de ahogy a processzorok sebessége jelentősen nőtt a memóriákhoz képest, ez az eljárás nagyon lassúvá vált.
Ma a processzorok a load-store architektúrát használják, ami azt jelenti, hogy a processzor a teljes belső regiszterkészletét használja: a fő memóriából betöltőutasításokkal (load) veszi át az adatokat, és tárolóutasításokkal (store) írja vissza. Bár elsőre bonyolultnak tűnik, ez nagy előnyt jelent, mert a memóriaműveletek így a processzor független memória-szubrendszerén keresztül zajlanak, ami lehetővé teszi az optimalizálást – például az adatok előreolvasását és a gyorsítótár (cache) konzisztenciájának kezelését.
Korábban az egyszerű, minimális felépítésű processzorokat tartották elegánsnak, ma azonban a teljesítmény a döntő. A modern processzorok ezért összetett utasításütemezési és végrehajtási mechanizmusokkal dolgoznak, amelyek a műveleteket a különböző végrehajtóegységekre bontják. Az, hogy a processzor hogyan hajtja végre ezeket az utasításokat, az architektúra határozza meg. A processzorarchitektúrák mindig kompromisszumokkal dolgoznak, az utasítások optimalizálása és kiválasztása nem egyszerű feladat, ráadásul a visszafelé kompatibilitást is biztosítaniuk kell a régi utasítások támogatása érdekében.
A modern processzoroknak nemcsak a klasszikus utasításokat kell támogatniuk, hanem a specializált utasításokat is, amelyek például a videó- vagy hangfeldolgozást, illetve újabban az AI-feladatokat segítik. Ezek az utasítások a processzor speciális egységeit vezérlik, de a funkciók ezzel még nem érnek véget. A modern processzoroknak biztonságosnak is kell lenniük: a programok csak a számukra engedélyezett memóriaterületekhez férhetnek hozzá, védik az operációs rendszer magját, és támogatják a kriptográfiai gyorsítást. A kriptográfia lehetővé teszi, hogy az adatokat a merevlemezen vagy a számítógép memóriájában titkosítva tároljuk.
A processzorarchitektúrák fejlődése nagy részben az új utasításokkal való kísérletezésről szólt, és arról, hogy ezek milyen hatással vannak az operációs rendszerekre. Vizsgálták, hogyan lehet az utasításokat dekódolni és optimalizáltan végrehajtani, gyakran próba-szerencse módszerrel. Az új funkciók és utasítások bevezetésével előfordult, hogy bizonyos utasítások feleslegesnek bizonyultak, és törlésre kerültek (deprecated, discontinued instructions). Ha a processzor olyan utasítást kap, amelyet nem ismer, egy UD (UnDefined instruction) kivételt aktivál, ami automatikusan a futó program megszakadásához vezet.
A régi, elavult utasításokon kívül léteznek úgynevezett „rejtett” vagy dokumentálatlan utasítások is. Ilyenek már a régi processzoroknál is előfordultak, például a Zilog Z80A (1977) esetében. Néha ezek félkész, kísérleti utasítások voltak, vagy olyan utasítások, amelyek nem működtek a tervezett módon, ezért nem kerültek be az hivatalos utasításkészletbe.
Ma is léteznek dokumentálatlan utasítások, amelyek időnként magának a processzornak a működését szolgálják, például a belső mikrokód kezelését. Ezeket 2020‑ban a hackerek is felfedezték az Intel processzoroknál. Ezek az utasítások nem nyilvánosak, mert nem az alkalmazásfejlesztők számára készültek. A hackerek számára a felfedezésük érthetően izgalmas, a processzorgyártók viszont féltve őrzik ezeket a titkokat, mivel a mikrokód módosításának lehetősége kulcsfontosságú a processzorhibák távoli javításához.