Ma'lumotlar darajasidagi parallellik skaler ma'lumotlar o'rniga biz ko'rsatmalar ishlaydigan vektorlarni yoki ma'lumotlar matritsalarini ishlatamiz. Masalan, skaler X + Y, DLP esa X3X3X1X0 + Y3Y2Y1Y0 ga to'g'ri keladi. Bu ushbu bit kengaytmalarni bit darajasidagi parallellikda aytib o'tgan ko'rsatmalar to'plamida bajaradigan narsadir.
Ko'rsatma darajasida parallellik: soat tsikli uchun bir nechta ko'rsatmalarni qayta ishlashga mo'ljallangan texnikalar. Ya'ni, CPI-ga erishing . Bu erda biz unga erishish uchun asosiy usul sifatida quvur liniyasini, superskalar arxitekturasini va boshqa texnologiyalarni keltirishimiz mumkin.
Vazifa darajasidagi parallellik: Men multithreading yoki multithreadingni, ya'ni operatsion tizim yadrosi rejalashtiruvchisi tomonidan taklif qilingan bir nechta mavzularni yoki vazifalarni bir vaqtning o'zida bajarilishini nazarda tutayapman. Shuning uchun, bu holda dasturiy ta'minot har bir jarayonni parallel ravishda bajarilishi mumkin bo'lgan oddiy vazifalarga bo'linishga imkon beradi. Agar Linuxda ps buyrug'ini -L opsiyasi bilan ishlatsangiz, LWP (Lightweight Proccess) identifikatori bilan ustun paydo bo'ladi, ya'ni engil jarayon yoki ip. Ushbu parallellikka erishish yo'llari bir necha:
Ko'p ishlov berish: har bir protsessor yoki yadro bir vaqtning o'zida bir nechta ipni qayta ishlashi mumkin. ko'p ishlov berish doirasida biz bir nechta metodologiyani ajratib ko'rsatishimiz mumkin:
Xotira darajasidagi parallellik: tizimda o'rnatilgan xotira hajmini nazarda tutmaydi, shuning uchun bu tushunarsiz atama. Bu bir vaqtning o'zida amalga oshirilishi mumkin bo'lgan kutilayotgan kirish sonini bildiradi. Aksariyat superscalarlarda bunday parallellik mavjud bo'lib, ular kesh xatolari, TLB va boshqalar uchun turli xil so'rovlarni qondiradigan bir nechta prefetch birliklarini amalga oshirish natijasida erishiladi. Parallellikning ushbu darajalaridan qat'i nazar, ular boshqalari bilan birlashtirilishi mumkin me'morchilik turlari ko'proq parallellik olish uchun, masalan: Superscalar va VLIW Oddiy qilib aytganda, ular bir nechta takrorlangan funktsional birliklarga ega bo'lgan protsessor birliklari (CPU yoki GPU), masalan, bir nechta FPU, bir nechta ALU, bir nechta filial birliklari va boshqalar. Bu shuni anglatadiki, ushbu turdagi birliklar tomonidan amalga oshiriladigan operatsiyalar mavjud birliklar soniga qarab ikkitadan ikkitadan yoki uchdan uchtagacha va hokazo. Masalan, jarayon yoki dasturni bajarish uchun
Y = X +1, Z = 3 + 2 va W = T + Q ko'rsatmalariga ishlov berish kerak bo'lsa, skalerda ikkinchisiga o'tishdan oldin birinchi operatsiya tugashini kutishingiz kerak. Birinchisi, agar sizda 3 ta ALU bo'lsa, ular bir vaqtning o'zida bajarilishi mumkin . VLIW: VLIW holatida, odatda, ba'zi birliklarning nusxasi mavjud va kompilyator ularni butun kenglikka moslashtirish uchun ko'rsatmalarni o'rnatadi protsessor va har bir tsikldagi birliklarning barchasi yoki aksariyati ishg'ol qilinadi. Ya'ni, VLIW apparat me'morchiligiga mos keladigan ma'lum bir tarzda paketlangan bir nechta oddiy ko'rsatmalardan tashkil topgan uzoq buyruq. Buni qanday tushunasiz, bu erda men tushuntirmayotgan afzalliklari va kamchiliklari bor.
Quvuri: kanalizatsiya yoki segmentatsiya har bir funktsional birlikni bosqichlarga ajratib, sxemani ajratuvchi registrlarni kiritish orqali amalga oshiriladi. Masalan, sizda 3 ta chuqurlikdagi quvur borligini tasavvur qiling, u holda funktsional birliklar uchta mustaqil qismga bo'linadi, go'yo bu zanjir ishlab chiqarish jarayoni kabi. Shuning uchun, birinchi kiritilgan ko'rsatma birinchi bosqichni bo'shatgandan so'ng, boshqasi allaqachon ushbu birinchi bosqichga kirib, bajarilishini tezlashtirishi mumkin. Boshqa tomondan, truboprovodsiz tizimda, keyingi ko'rsatma birinchisi to'liq tugamaguncha kiritilmadi.
Do'stlaringiz bilan baham: |