A számítástechnikában a mikroarchitektúra (néha rövidítve µarch vagy uarch) egy számítógép, központi feldolgozó egység vagy digitális jelfeldolgozó processzor elektromos áramkörének olyan leírása, amely elegendő a hardver működésének teljes leírásához.

A tudósok a "számítógép-szervezés" kifejezést használják, míg a számítógépiparban dolgozók gyakrabban használják a "mikroarchitektúra" kifejezést. A mikroarchitektúra és az utasításkészlet-architektúra (ISA) együttesen alkotják a számítógép-architektúra területét.

Mi a mikroarchitektúra szerepe az ISA mellett?

Az utasításkészlet-architektúra (ISA) az a szabványosított felület, amely meghatározza, hogy milyen utasítások érhetők el a programok számára, milyen regiszterek vannak, milyen memóriacímzés és milyen adatformátumok használhatók. A mikroarchitektúra pedig azt határozza meg, hogy az adott ISA-t hogyan valósítja meg fizikailag a processzor: milyen egységekből áll, hogyan áramlanak az adatok és utasítások, hogyan kezelik a párhuzamosságot és a gyorsítást.

Főbb alkotóelemek és funkciók

  • Végrehajtó egységek (ALU, FPU): aritmetikai és logikai műveletek végrehajtása, lebegőpontos számítások külön egységben (FPU).
  • Regiszterek és regiszterfájl: gyors, kis kapacitású tárolók az operandusok és átmeneti eredmények számára.
  • Utastítás-végrehajtás vezérlése (Control Unit): dekódolja az utasításokat, vezérlőjelei meghatározzák a hardver egyes részeinek működését.
  • Pipelining: az utasítások végrehajtásának felosztása több szakaszra (fetch, decode, execute, memory, writeback), ami növeli az áteresztőképességet.
  • Gyorsítótárak (cache): több szintű gyorsítótárak (L1, L2, L3) csökkentik a főmemóriához (RAM) való hozzáférések késleltetését.
  • Branch prediction (elágazás-előrejelzés): megpróbálja megjósolni az elágazások eredményét, hogy a pipeline ne álljon meg gyakran.
  • Out-of-order végrehajtás: az utasításokat optimális ütemezés szerint, az adati függőségek figyelembevételével hajtja végre, növelve a párhuzamosságot.
  • Superscalar dizájn: egyszerre több utasítás párhuzamos kiindítása és végrehajtása növeli a teljesítményt.
  • Memóriavezérlők és buszok: a processzor és a memória, illetve egyéb perifériák közötti adatforgalom kezelése.
  • Energia- és hőkezelés: frekvencia- és feszültségszabályozás, üzemmód-váltások a fogyasztás és hőtermelés optimalizálására.

Hardveres vezérlés: mikroprogramozott vs. „hardwired”

A mikroarchitektúrában a vezérlést két fő módon lehet megvalósítani:

  • Mikroprogramozott vezérlés: az utasítások végrehajtását mikrokód vezérli, amely olvasható vezérléstáblákból áll. Ez rugalmasabb, könnyebben frissíthető, de általában lassabb és nagyobb területet igényel.
  • Hardwired (drótos) vezérlés: logikai áramkörök határozzák meg közvetlenül a vezérlőjeleket. Gyorsabb és hatékonyabb, de kevésbé rugalmas a módosításokhoz.

Teljesítményi és tervezési szempontok

A mikroarchitektúra tervezésekor több, gyakran ellentmondó cél egyidejű optimalizálása szükséges:

  • Teljesítmény: ciklusonkénti utasítások száma (IPC), órajel, párhuzamosság és késleltetés.
  • Energiafogyasztás: mobil eszközökben kritikus szempont; alacsony fogyasztás érdekében gyakran kompromisszumok szükségesek a nyers teljesítmény rovására.
  • Terület (chip area): a gyártási költségeket befolyásolja; komplex mechanizmusok (pl. nagy sorosítók, sok gyorsítótár) növelik a chip méretét.
  • Skálázhatóság és kompatibilitás: az ISA kompatibilitást meg kell őrizni, miközben új funkciók és optimalizációk bevezethetők.

Pipelining, veszélyek és megoldások

A pipeline-nal járó tipikus problémák:

  • Adatfüggőségek: olvasási/írási függőségek (RAW, WAR, WAW) késleltethetik az utasítások végrehajtását; megoldás lehet forwarding (adatirányítás) vagy stall (várakoztatás).
  • Vezérlési függőségek (branch): rosszul megjósolt elágazások pipeline flush-hoz vezetnek; branch prediction és spekulatív végrehajtás csökkenti ennek hatását.
  • Strukturális konfliktusok: ha azonos erőforrást több utasítás igényel, ütemezési problémák léphetnek fel; több funkcionális egység vagy időzítés segíthet.

Verifikáció, szimuláció és tesztelés

A mikroarchitektúra tervezésekor alapos verifikáció és szimuláció szükséges a helyes működés és a teljesítmény előrejelzése érdekében. Gyakori eszközök:

  • magas szintű szimulátorok (cycle-accurate, functional simulators),
  • logikai verifikációs módszerek (formal verification, model checking),
  • hardver-emuláció és FPGA alapú prototípusok a minták gyors ellenőrzésére.

RISC vs. CISC és valós példák

A RISC (Reduced Instruction Set Computer) és a CISC (Complex Instruction Set Computer) megközelítések eltérő ISA-kat és mikroarchitektúrákat eredményeznek. A RISC-processzorok tipikusan egyszerűbb utasításkészletre és agresszív pipeliningra építenek, míg a CISC gépek bonyolultabb utasításokat és gyakran mikroprogramozott megoldásokat használhatnak. A gyakorlatban sok modern processzor hibrid megoldásokat alkalmaz: CISC ISA-t (például x86) modern, RISC-szerű belső mikroarchitektúrával valósítanak meg.

Összefoglalás

A mikroarchitektúra a processzor „belső szervezete”, amely meghatározza, hogyan futnak az ISA által definiált utasítások a valós hardveren. A jó mikroarchitektúra tervezés kombinálja a teljesítményt, energiahatékonyságot és költséghatékonyságot, miközben biztosítja az ISA kompatibilitást és a megbízhatóságot. A modern processzorok számos technikát alkalmaznak — pipelining, superscalar végrehajtás, out-of-order ütemezés, spekuláció és összetett gyorsítótár-struktúrák — hogy a lehető legjobb teljesítményt nyújtsák különböző alkalmazási területeken.