Anda di halaman 1dari 9

Arquitetura Vetorial com pipeline

Uma arquitetura vetorial com pipeline consiste basicamente de uma mquina com
unidades aritmticas implementadas usando tcnicas de pipeline. O objetivo deste tipo de
arquitetura acelerar o processamento de instrues aritmticas realizadas sobre estruturas
de dados do tipo vetor. Assim, uma soma de dois vetores A e B de n elementos feita em
uma unidade funcional que ser alimentada com um fluo cont!nuo dos pares de elementos
dos vetores A e B.
"as primeiras implementaes deste tipo de arquitetura todas as operaes eram
feitas buscando os operandos diretamente da mem#ria. $ste tipo de arquitetura era c%amada
de mem#ria&mem#ria. $ste tipo de arquitetura tem o 'rande inconveniente dos conflitos
que podem ocorrer com os bancos de mem#ria, mesmo quando se utiliza mem#ria
intercalada com um n(mero 'rande de bancos. Um eemplo de computador que utilizava
este tipo de arquitetura o )*).
+i'ura , - Arquitetura re'istrador&vetor
.em#ria
/rincipal
Unidade de 0oad&1tore
2etorial
3e'istradores 2etoriais
1oma41ubtra5o /+
*ivis5o /+
Unidade 6nteira
.ultiplica5o /+
Unidade 0#'ica
Um se'undo tipo de arquitetura, c%amada de re'istrador&vetor, utiliza um tipo
especial de re'istrador que capaz de armazenar vrios elementos de um vetor. Al'uns
eemplos de arquiteturas que utilizam este se'undo tipo s5o7 )ra8&,, )ra8&9, )ra8 :&./,
)ra8 ;&./, )&<=, "$) 1:49, "$) 1:4>, +ujitsu 2/ 9== e 2/?==, @itac%i 1A9=, etc. A
fi'ura , mostra uma arquitetura do tipo re'istrador&vetor com os seus blocos principais.
3e'istradores 2etoriais7 cada re'istrador vetorial um conjunto de taman%o fio de n
re'istradores, podendo armazenar um vetor de at n posies.
Unidades funcionais vetoriais7 s5o pipelines aritmticos que podem iniciar uma nova
opera5o a cada ciclo de clocB.
Unidade C0oad&1toreD vetorial7 responsvel pela busca Ee armazenamentoF de um vetor da
EnaF mem#ria principal.
3e'istradores escalares7 utilizados para o armazenamento de dados escalares a serem
usados nas operaes escalares ou clculos de endereos dos vetores
/rocessador Ano Gaa de
)locB
E.@zF
"um. de
3e'istradores
2etoriais
"um.
$lementos p4
3e'istrador
"um de
Unidades
+uncionais
Unidades
de 0oad
1tore
)ra8 , ,<HI A= A I? I ,
)ra8 :&./ ,<A> ,9= A I? A 90, ,1
)ra8 ;&./ ,<AA ,II A I? A 90, ,1
)ra8&9 ,<AJ ,II A I? J ,
)ra8 )&<= ,<<, 9?= A ,9A A ?
)ra8 K&<= ,<<J ,== A I? ? ?
)ra8 G&<= ,<<I J== A ,9A A ?
Gabela , - $volu5o dos processadores vetoriais )ra8
Requisitos do Processamento Vetorial
Um operando vetorial contm um subconjunto ordenado de CnD elementos, onde CnD
c%amado de comprimento do vetor. )ada elemento do vetor uma quantidade escalar7
n(mero de ponto flutuante, inteiro, lon'o, l#'ico, caracter, etc. As instrues vetoriais
podem ser classificadas em ? tipos primitivos7
V V f 7
,
S V f 7 9
V V V f 7 >
V S V f 7 ?
onde7 2 L operando vetorial e 1 L operando escalar.
$emplos7
Outros eemplos
1ejam : L E9, J, A, HF e ; L E<, >, I, ?F
aF compara5o vetorial
B L :M; B L E=, ,, ,, ,F
bF compress5o de vetor
: L E,, 9, >, ?, J, I, H, AF B L E,, =, ,, =, ,, =, ,, =F
; L :EBF ; L E,, >, J, HF
cF mer'e
: L E,, 9, ?, AF ; L E>, J, I, HF B L E,, ,, =, ,, =, =, =, ,F
N L :, ;, EBF N L E,, 9, >, ?, J, I, H, AF
$m 'eral, as arquiteturas que usam o processamento vetorial com pipeline devem ter as
se'uintes propriedades7
aF processos idOnticos s5o repetidamente invocados, cada qual podendo ser subdividido
em subprocessosP
bF operandos sucessivos s5o fornecidos ao pipeline e necessitam de um m!nimo de
controle local e buffersP
cF operaes eecutadas por unidades de pipeline distintas devem ser capazes de
compartil%ar recursos como mem#ria e barramento.
$stas caracter!sticas eplicam porque 'rande parte dos processadores vetoriais possuem
estruturas de pipeline.
As instrues vetoriais s5o normalmente especificadas pelos se'uintes campos7
F E F E
,
i A i B VSQR f

n
i
i A S VSUM f
,
9
F E
F E F E F E
>
i B i A i C VADD f +
F E F E
?
i A S i B SADD f +
3aiz quadrada vetorial
1omat#rio vetorial
1oma vetorial
6ncremento vetorial
,F )#di'o de opera5o7 seleciona a unidade funcional a ser usada Eou define a
confi'ura5o a ser adotada por uma unidade multifuncionalFP
9F $ndereo de base7 usado para especificar o endereo inicial Eprimeiro elemento do
vetorF de operandos e resultadosP
>F 6ncremento de endereo7 especifica a distQncia entre os elementos do vetor que ser5o
utilizados na opera5o Enem sempre a distQncia i'ual a ,F.
?F Off&set do endereo7 especifica um deslocamento a partir do endereo de base. "em
todas as operaes precisam pe'ar o primeiro elemento do vetor.
JF Gaman%o do vetor7 usado para verifica5o do limite do vetor para impedir que um
elemento que n5o pertena ao vetor seja utilizado.
/ara eaminarmos a eficiOncia do processamento vetorial sobre o processamento
escalar vamos utilizar como eemplo o se'uinte trec%o de c#di'o +O3G3A"7

*O ,== 6 L ,, "
AE6F L BE6F R )E6F
,== BE6F L 9 S AE6R,F
A implementa5o deste trec%o de c#di'o em uma mquina escalar do tipo 0oad&
1tore Etodas as operaes aritmticas s5o feitas com re'istradoresF poderia ser representada
pelo se'uinte loop7
0OA* 3,, ,
0oop7 0OA* 39, BE3,F
0OA* 3>, )E3,F
A** 3>, 3>, 39 4S 3> 3> R 39 S4
1GO3$ AE3,F, 3>
0OA* 39, AE3,R,F
.U0 39, 39, 9 4S 39 39 S 9 S4
1GO3$ BE3,F, 39
A** 3,, 3,, , 4S incrementa 6 E3,F S4
1UB 39, "R,, 3, 4S 39 "R,&3, S4
K"N 0oop 4S 6nterrompe o loop quando 3, L "R, S4
O pro'rama eecutado em uma arquitetura escalar possui al'uns inconvenientes, dentre
os quais se destacam7
- o over%ead de processamento para o clculo da condi5o de desvio a cada passo da
itera5oP
- o n(mero ecessivo de acessos T mem#ria entre as operaes aritmticas, o que pode
comprometer a eficiOncia do processamento.
"o caso de um processador vetorial o c#di'o a ser eecutado poderia ser escrito da
se'uinte forma7
0OA* 3,, ,==
0OA*2 32,E,73,F, AE97 3,R,F
0OA*2 329E,73,F, BE,73,F
0OA*2 32>E,73,F, )E,73,F
A**2 32>E,73,F, 32>E,73,F, 329E,73,F 4S BE6F R )E6F S4
1GO3$2 AE,73,F, 32>E,73,F 4S AE6F L BE6F R )E6F S4
.U02 32,E,7"F, 9 4S 9 S AE6R,F S4
1GO3$2 BE,73,F, 32,E,73,F 4S BE6F L 9 S AE6R,F S4
Onde7
AE,7"F refere&se Ts posies de mem#ria do vetor A de " elementosP 3, um
re'istrador escalar, 32,, 329 e 32> s5o re'istradores vetoriais e as instrues que
terminam com C2D s5o instrues vetoriais com instrues escalares correspondentes Ee7
0OA*2 e 0OA* - carre'a um re'istrador vetorial e carre'a re'istrador escalar,
respectivamente.
A car'a dos re'istradores vetoriais e o armazenamento dos resultados na mem#ria
s5o feitos pela unidade de 0oad&store que projetada para aumentar a taa de transferOncia
de palavras da4para a mem#ria principal. Assim, em uma arquitetura vetorial o tempo para a
transferOncia de um vetor de n elementos bem menor do que o tempo dos n acessos feitos
em uma mquina escalar Euso de mem#ria intercaladaF.
O taman%o do vetor, como ser visto na pr#ima se5o, pode afetar a eficiOncia do
processamento devido ao tempo necessrio para a subdivis5o do vetos, por eemplo. O
c#di'o objeto E'erado pelo compiladorF deve ser produzido para maimizar a utiliza5o dos
recursos do pipeline. Al'umas decises de projeto que podem ser tomadas com este
objetivo s5o7
- aumentar EenriquecerF o conjunto de instrues vetoriais. O projeto do conjunto de
instrues pode ser bastante (til no sentido de reduzir o n(mero de acessos T mem#riaP
- combinar instrues escalares7 uma tcnica que pode ser utilizada o a'rupamento de
vrias operaes de soma evitando o over%ead de reconfi'ura5o do pipelineP
- escol%a de al'oritmos apropriados7 nem sempre o al'oritmo mais rpido para uma
mquina escalar ser o mais rpido em uma mquina vetorial. $7 o al'oritmo de mer'e
sort mais apropriado para processadores vetoriais com pipeline pois eecutar a tarefa
de jun5o de dois vetores ordenados em apenas um passoP
- usar compilador para vetoriza5o. )ompilador que detecte concorrOncia entre
instrues vetoriais que podem ser eecutadas com pipeline. Um compilador para
vetoriza5o deve re'enerar o paralelismo perdido em lin'ua'ens seqUenciais. V
desejvel que se utilize uma lin'ua'em de alto n!vel com construtores paralelos ricos
para processamento vetorial. O desenvolvimento de paralelismo em pro'rama5o
avanada pode ser dividido em ? etapas distintas7
- al'oritmos paralelos EAFP
- lin'ua'ens de alto n!vel paralelas E0FP
- c#di'o objeto eficiente EOFP
- c#di'o da mquina alvo E.F.
$mbora sejam etapas distintas elas s5o inter&relacionadas pelo pr#prio processo de
transforma5o do c#di'o em lin'ua'em de alto&n!vel para c#di'o eecutvel. 1e o n!vel
de paralelismo for epresso pelas letras entre parOnteses das etapas descritas acima na
situa5o ideal espera&se que A 0 O ..
Problemas com arquiteturas vetoriais
O bom funcionamento da arquitetura vetorial com pipeline depende da
disponibilidade dos elementos dos operandos vetoriais para a alimenta5o das unidades
funcionais Epipelines aritmticosF. *ois problemas ocorrem muito frequentemente e podem
prejudicar o desempen%o dos pipelines aritmticos. O primeiro problema diz respeito ao
taman%o do vetor. "em sempre o vetor caber totalmente dentro de um re'istrador vetorial.
O se'undo problema acontece quando a opera5o n5o utiliza elementos adjacentes do vetor.
)omo resolver estes problemasW
i) Controle de tamanho do vetor.
.uitas vezes o taman%o do vetor n5o con%ecido em tempo de compila5o.
0in'ua'ens como +ortran permitem definies desta forma. $7
*O ,= 6 L ,, "
,= ;E6F L A S :E6F R ;E6F
A solu5o para este problema consiste na utiliza5o de um re'istrador de taman%o
de vetor E203 - 2ector 0en't% 3e'isterF. O uso do 203 resolve o problema quando n
.20 Etaman%o mimo do vetor - .aimum 2ector 0en't%F definido pela arquitetura da
mquina. "este caso o processamento seria feito apenas para 203 elementos e n5o para
todos os elementos do vetor, j que al'umas posies n5o contm operandos.
$ quando n M .20 W /ara estes casos uma tcnica c%amada Cstrip minnin'D utilizada.
$sta tcnica consiste em quebrar o loop de n iteraes em 9 partes7
,F cria um loop que manipula qualquer n(mero de iteraes que seja m(ltiplo de .20P
9F cria outro loop que manipula as iteraes restantes.
$7
0oX L ,P
20 L En .O* .20F 4S determina "o. *e iteraes restantes S4
*O J K L =, En 4 .20F 4S loop eterno S4
*O ,= 6 L 0oX, 0oX R 20 -, 4S loop interno - eecutado 20 vezes S4
;E6F L A S :E6F R ;E6FP
,= )O"G6"U$ 4S fim do loop interno S4
0oX L 0oX R 20P 4S atualiza a posi5o do in!cio do loop S4
20 L .20P 4S 20 i'ual a taman%o mimo S4
J )O"G6"U$P

ii) Elementos no adjacentes (vector stride)
)onsidere o al'oritmo de multiplica5o de matrizes ,==,== mostrado abaio7
*O ,= 6 L ,, ,==
*O ,= K L ,, ,==
*O ,= Y L ,, ,==
AE6, KF L AE6, KF R BE6, YF S )EY, KF
,= )O"G6"U$P
O problema neste caso que a matriz quando armazenada na mem#ria tem que ser
linearizada por lin%a ou por coluna. $7
n 6 L ,... m
K L = , 9 n4.20
m L En .O* .20F
mR.20
.R9S.2
0
n-.20
A solu5o para este tipo de problema projetar as unidades de load&store com
capacidade de lidar com incrementos EstridesF n5o unitrios. O incremento 'uardado em
um re'istrador escalar e instrues espec!ficas para lidar com este tipo de situa5o s5o
projetadas. Um eemplo deste tipo de implementa5o a arquitetura do microprocessador
*0:.
*0:2 - conjunto de instrues vetoriais do processador *0:
02Z1 E0oad 2ector Xit% 1trideF
12Z1 E1tore 2ector Xit% 1trideF
)omo este tipo de evento Evetores com incremento M ,F muito comum, a maioria
dos processadores vetoriais n5o utiliza o esquema de mem#ria cac%e convencional Ea
localidade de referOncia passa a n5o eistir e o esquema de mem#ria cac%e perde a sua
eficiOnciaF. Os re'istradores vetoriais eercem o papel que a mem#ria cac%e tem, uma vez
que a pr&busca dos operandos feita para armazen&los nos re'istradores vetoriais.
BE,, ,F
BE,, 9F
BE,, ,==F
BE9, ,F
BE9, 9F
BE9, ,==F
BE,==,,==F
)E,, ,F
)E,, 9F
)E,, ,==F
)E9, ,F
)E9, 9F
)E9, ,==F
)E,==,,==F

Anda mungkin juga menyukai