Procesor vectorial
Un procesor vectorial este un tip de microprocesor care este capabil să efectueze aceeași operație simultan pe mai multe date[1]. Arhitectura procesoarelor este una de tip SIMD (Flux de instrucțiuni singular, fluxuri de date multiple) spre deosebire de arhitectura SISD (Flux de instrucțiuni singular, flux de date singular) specifică procesoarelor scalare, care la o instrucțiune efectuează o singură operație aplicată unui singur operand. Procesoarele tipice care se află în interiorul calculatoarelor personale sunt de tip scalar.
Procesoarele vectoriale sunt folosite de obicei când este nevoie de aplicarea aceleiași operații pe seturi mari de date, cum este cazul în aplicațiile multimedia (imagini, video sau sunet).
Istorie
modificarePrimele procesoare vectoriale au apărut în anii 1970, însă cercetarea în acest domeniu a început din anii 1960. Conceptul general era ca un procesor să dispună de mai multe unități de calcul aritmetic cărora să le ceară să execute aceeași operație, fiecare dintre ele urmând să aplice acea operație pe câte o dată de intrare diferită. Această abordare nu mai este folosită și în ziua de astăzi, ea fiind considerată ca făcând parte dintr-o altă categorie, cea de calcul paralel masiv. Un exemplu al acestui tip de arhitectură este proiectul Solomon al celor de la Westinghouse Electric.
În prezent există unele implementări care se compun dintr-un procesor principal care este scalar și o unitate vectorială care poate fi utilizată de programe.
Descriere
modificareProprietăți ale procesoarelor vectoriale[1]:
- Fiecare rezultat este independent de cel precedent
- Instrucțiunile aplicate vectorilor accesează memoria după un șablon știut
- Reduc salturile și problemele cauzate de salturi în pipeline-uri
- O instrucțiune e suficientă pentru a aplica aceeași operație mai multor date
Arhitectură
modificareDin punct de vedere al arhitecturii procesoarele vectoriale pot fi[2]:
Toate operațiile vectoriale se fac din memorie în memorie.
- Procesoare vectoriale care folosesc registrele
Toate operațiile vectoriale se fac între regiștri (cu excepția operațiilor LOAD și STORE).
Componentele unui procesor vectorial (care folosește registre):
- Registru vector
În general există între 8 și 32 de registre, fiecare conținând 64 până la 128 de elemente pe 64 de biți.
- Unități funcționale vectoriale
Acestea au implementat un sistem pipeline, ceea ce permite începerea unui noi operații la fiecare ciclu de ceas. În mod normal există 4 până la 8 unități funcționale vectoriale.
- Unități vectoriale de încărcare/stocare
Rolul acestora este de a încărca registrul vector cu valori din memorie sau de a scrie valorile din registrul vector în memorie.
- Regiștri scalari
Comparație cu procesoarele scalare
modificareÎn cazul procesoarelor scalare tipul de date prelucrat este un cuvânt format din n biți. Operațiile se efectuează asupra unui singur registru. Fiecare instrucțiune conține tipul operației și registrele care vor fi folosite la efectuarea operației.
De exemplu, dacă avem două grupuri de câte zece numere care trebuie adunate unul cu celălalt logica programului ar arăta în felul următor:
//Pentru un procesor scalar execută bucla de 10 de ori citire și decodificare următoarea instrucțiune aducere primul număr aducere al doilea număr efectuare operație de adunare stocare rezultat sfârșit buclă
//Pentru un procesor vectorial citire și decodificare instrucțiune aducerea primelor zece numere aducerea celorlalte zece numere efectuare operație de adunare stocare rezultate
Din exemplul de mai sus rezultă avantajul clar al micșorării numărului de instrucțiuni necesare execuției programului.
Arhitectura vectorială oferă suport pentru tipul de dată vector. Vectorul este o colecție de un tip de dată (cuvânt de n biți) de o anumită dimensiune N. Arhitectura Cray a introdus pentru prima oară fișierul de registru vector. Mașinile de calcul anterioare lucrau cu vectori care erau stocați în memoria principală, fapt ce le făcea mai lente.
Aplicații
modificareProcesare multimedia
- Compresie cu pierderi (JPEG, MPEG video și audio)
- Recunoașterea vocală și a scrisului de mână
- Calcularea sumei de control
Referințe
modificare- ^ a b Vector Architectures, Lecture 11 , Stanford University.
- ^ Vector Processing, Professor David A. Patterson, Berkley University.
Legături externe
modificare- The History of the Development of Parallel Computing (from 1955 to 1993)