Processador vectorial

De Viquipèdia
Dreceres ràpides: navegació, cerca

Un processador vectorial és un conjunt de recursos per efectuar operacions sobre vectors. Aquestes operacions consistiran en funcions aritmètiques i lògiques aplicades sobre les components dels vectors. La diferència entre un processador vectorial i un escalar rau en el fet que el processador vectorial és capaç de descodificar instruccions els operands de les quals són vectors complerts. La conversió d'un programa corresponent a un processador escalar a un altre vectorial s'anomena vectorització.

Processament vectorial[modifica | modifica el codi]

Un operand vectorial conté una seqüència d'n elements, anomenats components, on n és la longitud del vector. Cadascun dels components del vector és un escalar de qualsevol tipus (enter, punt flotant, etc). Els operadors vectorials poden tenir una de les següents cinc formes (podria haver-hi alguna més, però no tenen interès pràctic):

  • f1: V →V (operació vectorial unitària)
  • f2: V × V → V (operació vectorial binària)
  • f3: V → K (reducció unitària)
  • f4: V × V → (reducció binària)
  • f5: K × V → V (operació d'escalat)

on V i K representen, respectivament, un espai vectorial i un cos.

Taula 1. Exemples d'operadors vectorials
Nom Mnemònic Operació Tipus
Màxima component VMAX Reducció unitària
Mòdul VMOD Reducció unitària
Arrel quadrada vectorial VSQR Operació vectorial unitària
Suma de components VSUM Reducció unitària
Suma de vectors VADD Operació vectorial binària
Mitja de les components VMEAN Reducció unitària
Multiplicació escalar per vector SMUL Escalat
Multiplicació de vectors VMUL Operació vectorial binària
Producte escalar VDOT Reducció binària

En la taula 1 es poden veure una sèrie d'exemples d'operadors vectorials. En aquesta taula, a, b, c ∈ V, ai, bi, i ci són, respectivament, les components i-èssimes d'aquests vectors, s ∈ K i n = dim V.

Casos especials d'operacions vectorials binàries són les operacions d'empaquetament i desempaquetament, on un dels vectors actua com a màscara i el vector resultat té una mida diferent a la dels operands. Aquestes operacions tenen bastanta utilitat en el tractament de matrius disperses, que són matrius amb la majoria dels seus elements nuls.

Les màquines vectorials proporcionen operacions que treballen sobre vectors. Una instrucció vectorial és equivalent a l'execució d'un bucle complet d'operacions ordinàries, on cada iteració treballa sobre cadascuna de les components del vector. Les operacions vectorials tenen alguns avantatge sobre les escalars:

  • En les operacions vectorials, cada resultat és independent dels anteriors. Això permet efectuar els càlculs en un processador segmentat sense que existeixin conflictes per dependències de dades.
  • Una simple instrucció vectorial substitueix a moltes escalars. Per això, el coll d'ampolla produït per la lectura d'aquesta instrucció és petit, comparat amb el que produiria tot el conjunt d'instruccions escalars equivalents.
  • Les instruccions vectorials que necessiten accedir a memòria ho fan amb un patró d'accés fix (normalment adjacents). Això facilitarà la seva lectura paral·lela mitjançant una memòria entrellaçada. En qualsevol cas, si no es disposés de memòries entrellaçades, les posicions de memòria adjacents es carregaran a la memòria cau, amb el consegüent estalvi de temps.
  • Si s'utilitza una instrucció vectorial, evitarem el risc de control de salt de bucle, que es produiria si processéssim les instruccions escalars equivalents en un processador segmentat.

Per totes aquestes raons, les operacions vectorials poden executar-se d'una forma molt més ràpida que la seqüència d'instruccions equivalents sobre el mateix conjunt de dades, per això la tendència al disseny i fabricació de màquines vectorials en aplicacions on aquest tipus d'operacions s'utilitzin amb suficient freqüència.

Segmentació i processadors vectorials[modifica | modifica el codi]

Vegeu també[modifica | modifica el codi]

Referències[modifica | modifica el codi]