Bosh sahifa Wiki Vector Processing Unit

Vector Processing Unit

Vector Processing Unit — vektor registrlari yoki oqimdagi ko‘p element ustida parallel arifmetik, mantiqiy va xotira amallarini bajarishga ixtisoslashgan apparat bloki. VPU bitta Vector Instruction orqali ko‘p ma’lumot yo‘lini ishga solib, muntazam massiv hisoblarini skalyar unitga qaraganda yuqori throughputda bajaradi.

Ichki tuzilma

VPU bir nechta lane’dan tashkil topadi. Har lane vektorning ayrim elementlarini qayta ishlaydi va integer ALU, floating-point pipeline yoki ko‘paytirish blokini o‘z ichiga olishi mumkin. Vektor registr fayli ko‘p operandni bir vaqtda yetkazish uchun keng port va banklarga bo‘linadi.

Lane soni arxitektura registridagi elementlar soniga teng bo‘lishi shart emas. 512 bitli buyruq to‘rtta 64 bitli lane’da bir necha siklda bajarilishi mumkin. ISA tashqi natijani belgilaydi, mikroarxitektura esa vaqt bo‘yicha bo‘lib ishlashni tanlaydi.

Xotira tizimi

VPU yuqori hisoblash tezligini saqlash uchun katta bandwidth talab qiladi. Ketma-ket load bir nechta kesh bankiga taqsimlanadi. Bank conflict bir siklda bir bankka ko‘p so‘rov kelganda throughputni kamaytiradi. Gather va scatter manzillari tarqoq bo‘lsa, tarjima va kesh misslari ko‘payadi.

Maska faol bo‘lmagan lane’larni o‘chiradi. Bu massiv qoldig‘i va shartli hisobni branchsiz bajaradi, lekin kam faol lane apparatning katta qismini bo‘sh qoldiradi. Shuning uchun vectorization samarasi faqat nazariy kenglikka emas, mask density’ga ham bog‘liq.

Maxsus amallar

Permutation va shuffle elementlarni lane’lar orasida qayta joylashtiradi. Reduction ko‘p elementni yig‘indi, minimum yoki maksimumga birlashtiradi. Bu amallar lane’lararo tarmoq talab qilgani sabab oddiy element-wise qo‘shishdan qimmatroq bo‘lishi mumkin.

Saturating integer, fixed-point va fused floating-point amallari multimedia hamda signal ishlovida keng qo‘llanadi. Kriptografik vektor kengaytmalari bit aylantirish yoki maxsus maydon arifmetikasini qo‘shishi mumkin.

GPU va CPU konteksti

CPU VPU odatda oz sonli kuchli yadro ichida, past latency va umumiy kesh bilan ishlaydi. GPU minglab oqimni keng parallel execution cluster’larda boshqaradi. Ikkalasi ham data parallelizm ishlatsa-da, rejalashtirish, xotira modeli va dasturlash muhiti bir xil emas.

VPU unumdorligi amallar soni bilan emas, foydali elementlar, xotira trafik va chastota bilan o‘lchanadi. Keng vektor buyruqlar ayrim chipda quvvat chegarasi sabab yadro chastotasini vaqtincha pasaytirishi mumkin. Profil skalyar tayyorlash va ma’lumotni qayta joylashtirish xarajatini ham qamrab oladi.

Registr bosimi

Vektor registrlar keng bo‘lsa ham soni cheklangan. Ko‘p oraliq tensor yoki unrolled sikl register pressure hosil qilib, ayrim qiymatni stekka spill qilishga majbur etadi. Keng spill katta xotira trafik yaratib, qo‘shimcha parallelizm foydasini yo‘qotishi mumkin. Kompilyator unroll darajasi, live range va register allocation’ni birga tanlaydi.

VPU kontekstini oqim almashtirishda saqlash ham qimmat. Operatsion tizim lazy save usulidan foydalansa, unit birinchi ishlatilganda trap orqali egalikni almashtirishi mumkin. Xavfsizlik uchun eski jarayonning vektor registrlari yangi jarayonga ko‘rinmasligi, signal va istisnoda esa aniq qiymatlar saqlanishi kerak.

VPU dasturiy interfeysi feature bit orqali aniqlanadi. Operatsion tizim kengaytirilgan registr holatini saqlashni qo‘llab-quvvatlamasa, apparat mavjud bo‘lsa ham foydalanuvchi dasturiga keng vektor buyrug‘ini yoqmasligi mumkin.

Bog‘liq tushunchalar

SIMD, vector instruction, vector lane, vector register, gather-scatter, GPU