Heterogén SoC rendszerek

VIMIMA25  |  Villamosmérnök MSc  |  Félév: 2  |  Kredit: 5

A tantárgy célkitűzése

A tantárgy célja a komplex, nagy teljesítményű, egy áramkörön belül megvalósított heterogén rendszerek tervezési és alkalmazási kérdéseinek bemutatása, különös tekintettel részfunkciók hardveres gyorsítására. A tárgy ismerteti a feladatok hardver megvalósításának előnyeit,
bemutatja a (részlegesen) újrakonfigurálható FPGA-k és a GPGPU eszközök által kínált nagyfokú párhuzamosításban és pipeline végrehajtásban rejlő gyorsítási lehetőségeket. Ismerteti a hardver-szoftver együttes tervezés és particionálás követelményeit, módszereit. Bemutatja a CPU, GPGPU
és FPGA alapú feldolgozó egységek egységes használatának szoftveres hátterét (CUDA, OpenCL), valamint az FPGA-k magas szintű nyelven történő fejlesztését. Valós példákon (pl. videófeldolgozás, mesterséges intelligencia alkalmazások) keresztül bemutatja a heterogén eszközök használatával elérhető teljesítmény- és hatékonyság növekedést.
Szántó Péter
Szántó Péter

mesteroktató

tárgyfelelős

A tárgy oktatói

Raikovich Tamás
Raikovich Tamás

tanársegéd

Szántó Péter
Szántó Péter

mesteroktató

A tantárgy részletes tematikája

Az előadások részletes tematikája:

  1. Linux operációs rendszer FPGA platformokon. Operációs rendszer rétegei. BSP (Board Support Package) kialakítása, device-tree használata. Linux boot folyamat, first stage bootloader, U-Boot.
  2. Kernel fordítás saját hardver platformon. Kernel modul (driver) fejlesztése.
  3. Heterogén SoC rendszerek áttekintése: Broadcom, NVIDIA, NXP, Rockchip, Microchip. FPGA alapú SoC rendszerek áttekintése: Intel, Microchip, Lattice. Xilinx Zynq és Versal család. Processzor - FPGA kapcsolat: interfészek, nagysebességű adatátvitel.
  4. Nagyteljesítményű processzoros alrendszerek, hard-core processzor magok és jellemző perifériák. Többmagos megoldások, speciális utasításkészletek. Real-time magok.
  5. SoC rendszerek boot folyamata. Biztonság, jogosultságok.
  6. Az FPGA rész konfigurációja. FPGA-k parciális rekonfigurációja.
  7. Vektor utasításkészletek (AVX, NEON, SVE). Többszálú programok fejlesztése OpenMP segítségével.
  8. Grafikus processzorok: bevezetés. NVIDIA GPU-k hardveres felépítése. NVIDIA Jetson SoC-k.
  9. GPU-k programozása: szálkezelés, szál hierarchia. Szinkronizáció. Memória modell.
  10. OpenCL és CUDA: hoszt szoftver és kernel.
  11. Magas szintű szintézis FPGA áramkörökre: Intel C2H, Xilinx HLS (C++ és OpenCL). Xilinx HLS: egyedi adattípusok, teljesítmény növelése.
  12. Xilinx HLS: erőforrás limitek, interfészek szintézise. IP generálás.
  13. Xilinx HLS: hardver gyorsító integrálása.
  14. Tartalék

A gyakorlatok részletes tematikája:

  1. FSBL, U-Boot és Linux környezet létrehozása egyedi FPGA processzoros rendszerre.
  2. Linux kernel modul fejlesztése egyedi perifériához.
  3. Felhasználói módú alkalmazás fejlesztése és integrációja.
  4. Vektor utasításkészlet és OpenMP használata.
  5. GPU-k általános célú használata OpenCL és CUDA alapokon.
  6. Magasszintű hardver szintézis - Vitis HLS.
  7. OpenCL alapú FPGA gyorsító fejlesztése.