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 modificare

Primele 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 modificare

Proprietăț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ă modificare

 
(A) Cuvânt de 64 de biți, (B) Vector de cuvinte de 64 de biți

Din punct de vedere al arhitecturii procesoarele vectoriale pot fi[2]:

  1. Procesoare vectoriale memorie - memorie

Toate operațiile vectoriale se fac din memorie în memorie.

  1. 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

 
Operația de adunare în limbaj de asamblare pentru procesoarele scalare și vectoriale

Î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 modificare

Procesare multimedia

  • Recunoașterea vocală și a scrisului de mână

Criptografie

Rețelistică

Baze de date

Referințe modificare

Legături externe modificare