SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
Ensinando Arquiteturas Vetoriais Utilizando um
Simulador de Instruc¸˜oes MIPS
Fredy A. M. Alves1, Danilo Almeida1, Lucas Braganc¸a1,
Andr´e B. M. Gomes1,2, Ricardo S. Ferreira1,2, Jos´e Augusto M. Nacif1,2
1
Instituto de Ciˆencias Exatas e Tecnol´ogicas, Campus UFV-Florestal, Brasil
2
Departamento de Inform´atica, UFV, Brasil
{fredy.alves, danilo.damiao, lucas.braganca, andre.maciel, ricardo, jnacif}@ufv.br
Abstract—Os processadores vetoriais juntamente com o pro-
cessador MIPS constituem dois marcos importantes no desen-
volvimento e no ensino de arquitetura de computadores. Nas
´ultimas d´ecadas, v´arias extens˜oes do conjunto de instruc¸˜oes MIPS
foram especificadas, incluindo uma extens˜ao SIMD em 2014.
Este artigo apresenta o primeiro simulador vetorial baseado no
MIPS para ser utilizado em aulas de arquitetura de computa-
dores de cursos de Ciˆencia da Computac¸˜ao e Engenharias. A
implementac¸˜ao proposta ´e baseada no MARS, um simulador
MIPS32 de c´odigo aberto. O simulador proposto ´e denominado
Vector MARS ou VMARS e apresenta uma interface robusta
e intuitiva que auxilia no processo de simulac¸˜ao das instruc¸˜oes
vetoriais MIPS oferecendo tamb´em suporte ao conjunto padr˜ao
de instruc¸˜oes do MIPS32. Juntamente com o simulador VMARS
s˜ao apresentados exemplos para ilustrar o uso das instruc¸˜oes
vetoriais presentes na extens˜ao do MIPS.
Keywords—Processadores Vetoriais; Simulador MIPS; Ensino
de Arquitetura de Computadores
I. INTRODUC¸ ˜AO
Na d´ecada de 60, o projetista de computadores S. Cray
inovou ao apresentar os computadores CDC 6600 e 7600
com m´ultiplas unidades funcionais, unidade de load/store de-
sacoplada, pipeline, refrigerac¸˜ao e os princ´ıpios dos computa-
dores RISC. Posteriormente, na d´ecada de 70, com a fundac¸˜ao
da sua pr´opria empresa, o primeiro computador vetorial foi
projetado e comercializado, criando um marco na hist´oria
da computac¸˜ao. Outro marco importante foi o projeto do
processador MIPS nos anos 80, que herdou v´arios princ´ıpios
dos computadores da linha CDC dando origem ao termo RISC
(Reduced Instruction Set Computer). Recentemente, para o
ensino destes conceitos, a literatura da ´area [1], [2] propˆos
o MIPS vetorial (VMIPS) e destacou tamb´em as extens˜oes
SIMD multim´ıdia da Intel. Entretanto n˜ao existem simuladores
para auxiliar no ensino da extens˜ao do modelo vetorial do
MIPS.
Ensinar organizac¸˜ao e arquitetura de computadores com
aulas de laborat´orio ou atividades pr´aticas ´e uma t´ecnica
amplamente utilizada para ajudar alunos a alcanc¸ar um en-
tendimento melhor de conceitos abstratos [3], [4]. A utilizac¸˜ao
de simuladores ´e largamente adotada em cursos de organizac¸˜ao
e arquitetura de computadores de graduac¸˜ao e p´os-graduac¸˜ao.
Este recurso pedag´ogico n˜ao exige uma infraestrutura espe-
cializada e contribui para o entendimento e assimilac¸˜ao de
conceitos abstratos, como processamento vetorial e linguagem
assembly.
V´arios simuladores MIPS tradicionais [5], [6], [7], [8],
[9] est˜ao dispon´ıveis para alunos desenvolverem atividades
pr´aticas. Por´em, os simuladores atuais n˜ao oferecem su-
porte para instruc¸˜oes vetoriais. Com o surgimento das GPUs,
que tamb´em oferecem recursos para ensino [10] al´em do
alto desempenho, o processamento vetorial voltou a ser um
t´opico importante para melhorar o desempenho de programas
na resoluc¸˜ao de problemas complexos como, por exemplo,
minerac¸˜ao de dados, extrac¸˜ao de caracter´ısticas em v´ıdeos e
processamento de imagem e v´ıdeo [11].
O m´odulo da arquitetura MIPS SIMD (MIPS SIMD Ar-
chitecture - MSA) ´e uma extens˜ao para uma das arquite-
turas de processadores mais utilizadas no ˆambito industrial
e acadˆemico, que ´e o processador MIPS [1], [2]. Com o
MSA ´e poss´ıvel realizar o processamento paralelo para a
execuc¸˜ao de operac¸˜oes vetoriais de uma forma mais r´apida
e eficiente utilizando a abordagem SIMD (Single Instruction,
Multiple Data). O MSA ´e semelhante tamb´em aos modelos
MMX e SSE da Intel que foram propostos como extens˜oes
multim´ıdia com execuc¸˜ao SIMD. Este trabalho apresenta o
primeiro simulador para a extens˜ao vetorial do MIPS32 com
suporte completo ao conjunto de instruc¸˜oes da MSA. Este
simulador denominado VMARS (Vector MIPS Assembler and
Runtime Simulador), por ter sido baseado no MARS [9].
Este artigo est´a organizado da seguinte forma. Na Sec¸˜ao II,
explicamos os conceitos b´asicos da arquitetura MIPS SIMD.
Na Sec¸˜ao III s˜ao apresentados os trabalhos correlatos. A
Sec¸˜ao IV introduz o simulador VMARS e a Sec¸˜ao V apresenta
alguns trechos de c´odigo para serem usados em sala de
aula. Finalmente, na Sec¸˜ao VI, apresentamos as conclus˜oes
e trabalhos futuros.
II. CONCEITOS B ´ASICOS
Inicialmente, esta Sec¸˜ao descreve os conceitos gerais dos
processadores vetoriais. Posteriormente, a arquitetura vetorial
MSA do simulador VMARS ser´a detalhada.
A. Arquiteturas vetoriais: Instruc¸˜ao ´unica, m´ultiplos dados
Processadores vetoriais s˜ao classificados na classe de ar-
quiteturas SIMD (Single Instruction Multiple Data), na qual
a mesma operac¸˜ao ´e executada sobre m´ultiplos dados, em
constrate com as arquiteturas escalares ou mono-processadores
que s˜ao classificadas como processadores SISD (Single In-
struction, Single Data). Al´em disso, outra caracter´ıstica im-
portante ´e a presenc¸a de registradores vetoriais. A vantagem
International Journal of Computer Architecture Education (IJCAE)
v.4, n.1, dezembro 2015 - p.9
principal ´e que o programador ainda pode pensar de forma
sequencial enquanto opera sobre dados paralelos atrav´es dos
uso de vetores. As operac¸˜oes vetoriais s˜ao realizadas atrav´es
dos seguintes passos:
1) Os dados s˜ao carregados da mem´oria para os regis-
tradores vetoriais utilizando a unidade de Load/Store
vetorial;
2) Uma ou mais instruc¸˜oes s˜ao executadas sobre os
registradores vetoriais e/ou escalares;
3) Os resultados s˜ao gravados dos registradores vetoriais
para a mem´oria.
A Figura 1 apresenta o diagrama b´asico de uma arquitetura
vetorial cujo modelo original foi proposto por S. Cray na
d´ecada de 70. Em particular, a arquitetura MSA do VMARS
trata os registradores vetoriais como palavras (words), de forma
similar aos modelos MMX e SSE da Intel. Os principais
m´odulos do processador vetorial MIPS s˜ao:
• Mem´oria de dados: A mem´oria principal do MIPS
vetorial ´e compartilhada com o conjunto de instruc¸˜oes
escalares MIPS.
• Unidade vetorial de Load/Store: Esta unidade ´e
respons´avel pela comunicac¸˜ao entre os registradores
vetoriais e a mem´oria. Este m´odulo ´e normalmente im-
plementado utilizando pipeline aumentando a largura
de banda e a vaz˜ao com paralelismo temporal mas-
carando a latˆencia de mem´oria.
• Registradores vetoriais: 32 registradores vetoriais de
128 bits cada. Eles podem ser manipulados como um
vetor de bytes, halfwords, word ou double words.
• Unidades funcionais: Diversos tipos de unidades
funcionais est˜ao dispon´ıveis no MIPS vetorial. Elas
s˜ao respons´aveis por executar instruc¸˜oes de ponto
flutuante, de inteiros e/ou operac¸˜oes l´ogicas.
• Registradores escalares: Os 32 registradores da
arquitetura MIPS original tamb´em est˜ao dispon´ıveis
na vers˜ao vetorial.
Fig. 1. Arquitetura de um processador vetorial.
B. Arquitetura MIPS SIMD
A MSA (MIPS SIMD Architecture) ´e uma extens˜ao SIMD
para a arquitetura padr˜ao MIPS Release 5. Esta extens˜ao foi
recentemente especificada pela MIPS Technologies, Inc. [11] e
utiliza os princpios RISC (Reduced Instruction Set Computers).
A MSA adiciona mais de 150 novas instruc¸˜oes na arquitetura
MIPS original, incluindo tamb´em mais 32 registradores de 128
bits. Estes registradores podem ser indexados e particionados
de forma vetorial com quatro tipos de dados: byte (8 bits),
halfword (16 bits), word (32 bits) e doubleword (64 bits) [11].
De acordo com o formato de dado que ´e especificado pela
instruc¸˜ao, o n´umero de elementos ´e indexado de 0 a n onde
n = 128
formato .
O bit menos significativo (LSB) ´e o bit mais `a direita e
o mais significativo (MSB) ´e o mais `a esquerda. A Figura 2
apresenta um exemplo de registrador vetorial indexado com o
tipo de dados word, onde temos 4 elementos n = 128
32 = 4.
Fig. 2. Elementos do tipo word de um registrador vetorial do VMIPS.
Cada instruc¸˜ao pode atuar em mais de um formato de dado.
O exemplo a seguir ilustra a instruc¸˜ao addv em dois formatos:
byte e word.
• addv.b wd,ws,wt - Soma os bytes dos registradores
vetoriais ws e wt e guarda o resultado em wd.
• addv.w wd,ws,wt - Soma as words dos registradores
vetoriais ws e wt e guarda o resultado em wd.
III. TRABALHOS RELACIONADOS
Existem diversos simuladores para a arquitetura MIPS ori-
ginal, mas nenhum deles implementa o conjunto de instruc¸˜oes
vetoriais. O SPIM [5] ´e um dos simuladores MIPS mais
utilizados. Al´em do simulador SPIM existem muitos outros
simuladores MIPS, onde podemos destacar o MIPSASM [6],
o TinyMIPS [7], o EduMIPS64 [8] e o MARS [9]. O Edu-
MIPS64 foi o primeiro simulador MIPS a suportar a extens˜ao
64 bits. O VMARS foi desenvolvido `a partir do simulador
MARS devido `a sua facilidade de uso, popularidade e flexi-
bilidade para inclus˜ao de novas funcionalidades.
Uma comparac¸˜ao entre o SPIM e o MARS foi realizada
em [9]. A IDE MARS ´e mais intuitiva que a SPIM. Por
exemplo, no MARS ´e mais f´acil e mais r´apido modificar
valores dos registradores e utilizar breakpoints. O SPIM n˜ao
fornece uma IDE completa. A principal diferenc¸a entre o
MARS e o VMARS ´e que o VMARS adiciona um conjunto
com mais de 150 instruc¸˜oes vetoriais e recursos de visualizac¸˜ao
para os formatos de dados vetoriais.
IV. SIMULADOR VMARS
A interface implementada para o VMARS fornece recursos
como preenchimento autom´atico e destacamento de sintaxe
International Journal of Computer Architecture Education (IJCAE)
v.4, n.1, dezembro 2015 - p.10
para a linguagem assembly do MIPS e da extens˜ao vetorial
MSA. Al´em de incluir registradores espec´ıficos que est˜ao
dispon´ıveis somente na extens˜ao vetorial.
Para ensino do processamento vetorial, um componente
importante ´e a visualizac¸˜ao dos conte´udo dos registradores.
Existem 5 abas diferentes no painel de registradores do
VMARS. Foram inclu´ıdas duas novas abas: Vector Registers
e Float Vector Registers como apresentado na Figura 3. Os
valores dos 32 registradores vetoriais s˜ao apresentados como
n´umeros inteiros com sinal ou valores hexadecimais. Os regis-
tradores vetoriais inteiros s˜ao representados por $wn onde n ´e
o n´umero do registrador correspondente. A aba relacionada aos
registradores vetoriais de ponto flutuante apresenta os valores
de todos os 32 registradores que comp˜oem a unidade de ponto
flutuante. O VMARS considera a unidade de ponto flutuante
como um coprocessador. Os registradores vetoriais de ponto
flutuante s˜ao representados por $cn onde n ´e o n´umero do
registrador correspondente. ´E importante notar que existem
dois conjuntos de registradores: $Cn para ponto flutuante e
$Wn para inteiros. Eles s˜ao dois grupos independentes de 32
registradores vetoriais que totalizam 64 registradores.
Fig. 3. Abas de registradores do VMARS.
Ambas as abas Vector Registers e Float Vector Registers
podem ser configuradas para apresentar dados em diferentes
formatos. A Tabela I apresenta as opc¸˜oes de visualizac¸˜ao
dispon´ıveis. As instruc¸˜oes que utilizam Registradores de ponto
flutuante vetoriais s˜ao executadas somente em formato word
e doubleword, que s˜ao, respectivamente, precis˜ao simples e
dupla no formato IEEE 754 [12].
O VMARS implementa as instruc¸˜oes vetoriais MSA, que
TABLE I. FORMATOS DISPON´IVEIS PARA APRESENTAR OS DADOS DE
REGISTRADORES VETORIAIS.
Opc¸˜ao Formato Vector Reg. Float Vector Reg.
Show bytes 8 bits Dispon´ıvel N˜ao Dispon´ıvel
Show Halfwords 16 bits Dispon´ıvel N˜ao Dispon´ıvel
Show Words 32 bits Dispon´ıvel Dispon´ıvel
Show Double Words 64 bits Dispon´ıvel Dispon´ıvel
utilizam o sufixo para determinar variac¸˜oes da instruc¸˜ao ve-
torial. Por exemplo, add.b significa que a instruc¸˜ao ir´a somar
os bytes de dois registradores vetoriais. Por outro lado, add.v
realiza a operac¸˜ao de adic¸˜ao entre os registradores vetoriais
inteiros.
O c´odigo assembly e de m´aquina s˜ao apresentados na
interface do VMARS, que tamb´em possibilita a utilizac¸˜ao de
breakpoints.
V. EXEMPLOS
O VMARS pode ser utilizado em aulas pr´aticas e como
ferramenta de visualizac¸˜ao para facilitar o entendimento de
conceitos relacionados a arquiteturas vetoriais. Esta sec¸˜ao
apresenta dois exemplos retirados do livro “Arquitetura de
Computadores - Uma Abordagem Quantitativa” [2], onde
um conjunto de instruc¸˜oes VMIPS foi especificado com 32
instruc¸˜oes sem detalhamento de formato. Este conjunto tem
fins did´aticos para ilustrar os principais recursos e operac¸˜oes
de processadores vetoriais. Enquanto que o VMARS segue
a espeficac¸˜ao formal do MSA com mais de 150 instruc¸˜oes
vetoriais e formato detalhado em bin´ario. Os dois exemplos
ser˜ao ilustrados em trˆes formatos: algoritmo alto n´ıvel, VMIPS
e VMARS MSA.
O primeiro exemplo ´e o DAXPY que ´e amplamente usado
na literatura. DAXPY ´e a sigla para Double-precision AX Plus
Y, onde A ´e um escalar, X, Y s˜ao dois vetores. O pseudoc´odigo
para o DAXPY apresentado na Figura 4(a).
For (i=0 to n)
Y[i] = a * X[i] + Y[i]
(a)
1: L.D F0, a
2: LV V1, Rx
3: MULVS.D V2, V1, F0
4: LV V3, Ry
5: ADDVV.D V4, V2, V3
6: SV V4, Ry
(b)
1: insert.w $c0, 2
2: ld.w $c1, 2048(0)
3: fmul.w $c2, $c1, $c0
4: ld.w $c3, 1024(0)
5: fadd.w $c4, $c2, $c3
6: st.w $c4, 1024(0)
(c)
Fig. 4. DAXPY: (a) pseudo c´odigo; (b) VMIPS; (c) VMARS.
Na implementac¸˜ao VMIPS, cada registrador vetorial tem
64 palavras de 64 bits. Supondo que n seja menor que 64,
a implementac¸˜ao VMIPS pode ser realizada sem lac¸o como
ilustra a Figura 4(b), onde o escalar A ´e armazenado no
registrador F0 e os vetores X e Y nos registradores vetoriais
V1 e V3, respectivamente. O registrador vetorial V2 ´e usado
temporariamente e o resultado final foi gerado no registrador
V4. O VMIPS segue a sintaxe do MIPS adicionando o sufixo
V para as instruc¸˜oes vetoriais.
J´a a sintaxe do VMARS segue a especificac¸˜ao formal
definida em [11]. A implementac¸˜ao VMARS para o DAXPY
International Journal of Computer Architecture Education (IJCAE)
v.4, n.1, dezembro 2015 - p.11
est´a ilustrada na Figura 4(c). Os registradores ci s˜ao vetoriais
para ponto flutuante. Semelhamente ao c´odigo do VMIPS
temos para este exemplo o escalar A armazenado no regis-
trador c0 e os vetores X e Y nos registradores vetoriais
c1 e c3, respectivamente. O registrador vetorial c2 ´e usado
temporariamente e o resultado final foi gerado no registrador
c4.
O segundo exemplo ilustra a vetorizac¸˜ao de um c´odigo com
condicionais dentro de lac¸os. O pseudo c´odigo para a operac¸˜ao
´e mostrado na Figura 5(a). O lac¸o ´e executado com 2 vetores.
Se a posic¸˜ao i no vetor X for diferente de 0, Yi ´e subtra´ıdo
de Xi.
i = 0;
repita
se X[i] ! = 0 então
X[i] = X[i] - Y[i];
m
i=i+1;
até i == 63;
(a)
1: LV V1, Rx
2: LV V2, Ry
3: L.D F0, 0
4: SNEVS.D V1, F0
5: SUBVV.D V1, V1, V2
6: SV V1, Rx
(b)
1: ld.b $w1,-2048(0)
2: ld.b $w2,-4096(0)
3: ceq.b $w0,$w1,$w5
4: bmz.v $w3,$w1,$w0
5: bmz.v $w4,$w2,$w0
6: subv.b $w0,$w3,$w4
7: st.b $w0,-4096(0)
(c)
Fig. 5. Lac¸o condicional: (a) pseudo c´odigo; (b) VMIPS; (c) VMARS.
Uma m´ascara vetorial ´e utilizada para resolver este tipo
de problema, fornecendo execuc¸˜ao condicional para cada
operac¸˜ao entre elementos de vetores em uma instruc¸˜ao vetorial.
A m´ascara vetorial ´e um vetor booleano. O algoritmo ilustrado
na Figura 5(b) apresenta o c´odigo com instruc¸˜oes pseudo
VMIPS para a operac¸˜ao. Inicialmente, Os vetores X e Y s˜ao
carregados em V1 e V2. O escalar zero ´e carregado em F0. A
instruc¸˜ao SNEVS.D percorre V1 para verificar se V1[i]! = F0
e gerar a m´ascara V0. A instruc¸˜ao SUBVV.D subtrai V2[i] de
V1[i] se V0[i] que ´e a m´ascara vetorial for 1. O resultado
´e guardado em V1. e a instruc¸˜ao SV grava o resultado na
mem´oria.
A implementac¸˜ao VMARS ´e ilustrada na Figura 5(c).
Primeiro, os vetores X e Y s˜ao carregados nos registradores
w1 e w2 no formato de bytes utilizando a instruc¸˜ao ld.b. A
instruc¸˜ao ceq.b percorre w1 comparando com w5 para gerar
a m´ascara para X que est´a em w1. As instruc¸˜oes bmz.v s˜ao
usadas para carregar X e Y segundo a m´ascara. Por fim, w0
executa a subtrac¸˜ao e o resultado ´e salvo na mem´oria.
VI. CONCLUS ˜AO E TRABALHOS FUTUROS
Este trabalho apresenta o primeiro simulador de um pro-
cessador MIPS vetorial, denominado VMARS. Este simulador
foi desenvolvido para auxiliar estudantes no entendimento de
conceitos abstratos de processadores vetoriais. Neste trabalho
foram descritas as operac¸˜oes b´asicas do simulador VMARS
juntamente com exemplos de c´odigos vetoriais para ilustrar
sua utilizac¸˜ao em sala de aula.
Podemos destacar que o VMARS executa um conjunto
completo de mais de 150 instruc¸˜oes vetoriais seguindo a
especificac¸˜ao formal do MSA [11]. As facilidades na edic¸˜ao
dos c´odigos com texto de ajuda para a sintaxe das instruc¸˜oes
agilizam o aprendizado. A visualizac¸˜ao dos registradores veto-
riais auxilia na compreens˜ao dos conceitos de m´ascaras dentre
outros.
Como trabalhos futuros, o simulador ser´a avaliado nas
disciplinas de Arquitetura de Computadores da Universidade
Federal de Vic¸osa. Com o retorno dos estudantes pretendemos
implementar melhorias no simulador VMARS. Ap´os esta
etapa, o c´odigo fonte, o simulador, roteiros com exemplos
e sugest˜oes de aulas pr´aticas ser˜ao disponibilizados a toda
comunidade acadˆemica.
AGRADECIMENTOS
N´os gostar´ıamos de agradecer a CAPES, CNPQ,
FAPEMIG, FUNARBE, GAPSO e a UFV pelo apoio fi-
nanceiro e ao projeto VMARS por fornecer a base para o
desenvolvimento deste projeto. Agradecemos tamb´em ao aluno
Fernando Augusto por suas contribuic¸˜oes no desenvolvimento
do simulador.
REFERENCES
[1] D. A. Patterson and J. L. Hennessy, Computer Organization and Design:
The Hardware/Software Interface, 3rd ed. San Francisco, CA, USA:
Morgan Kaufmann Publishers Inc., 2007.
[2] J. L. Hennessy and D. A. Patterson, Computer Architecture, Fifth
Edition: A Quantitative Approach, 5th ed. San Francisco, CA, USA:
Morgan Kaufmann Publishers Inc., 2011.
[3] R. S. Ferreira, A. C. S. Beck, L. Carro, A. Toledo, and A. Silva, “A
java framework to teach computer architecture,” in New Trends and
Technologies in Computer-Aided Learning for Computer-Aided Design.
Springer, 2005, pp. 25–35.
[4] R. Ferreira, J. Nacif, S. Magalhaes, T. Almeida, and R. Pacifico, “Be
a simulator developer and go beyond in computing engineering,” in
Frontiers in Education Conference (FIE), 2015 IEEE, Oct 2015, pp.
1–8.
[5] J. R. Larus, “Spim: A mips32 simulator,” 1990–2010,
http://sourceforge.net/projects/spimsimulator/ (Visited on April
15, 2015).
[6] K. Meinz, “Webmipsasm v2.1,” 2015,
http://www.kurtm.net/mipsasm/index.cgi (Visited on April 15, 2015).
[7] T.Pittman, “Tinymips (machine in-
struction processing simulator),” 2003,
http://www.ittybittycomputers.com/Courses/Prior/MachOrg/GateSim/
TinyMIPS.htm (Visited on April 15, 2015).
[8] D. Patti, A. Spadaccini, M. Palesi, F. Fazzino, and V. Catania, “Support-
ing undergraduate computer architecture students using a visual mips64
cpu simulator,” Education, IEEE Transactions on, vol. 55, no. 3, pp.
406–411, Aug 2012.
[9] K. Vollmar and P. Sanderson, “Mars: An education-oriented mips
assembly language simulator,” SIGCSE Bull., vol. 38, no. 1, pp. 239–
243, Mar. 2006.
[10] G. Fontes and R. Ferreira, “Ensino de organizacoes de memoria em ar-
quiteturas paralelas usando placas graficas aceleradores,” International
Journal of Computer Architecture Education (IJCAE), vol. 2, no. 1,
2013.
[11] I. Technologies., MIPS Architecture for Programmers Volume IV-j: The
MIPS32 SIMD Architecture Module, 1st ed. 955 East Arques Avenue,
Sunnyvale, CA 94085-4521: MIPS Technologies Inc., 2014.
[12] “IEEE Standard for Floating-Point Arithmetic,” Microprocessor Stan-
dards Committee of the IEEE Computer Society, 3 Park Avenue, New
York, NY 10016-5997, USA, Tech. Rep., Aug. 2008.
International Journal of Computer Architecture Education (IJCAE)
v.4, n.1, dezembro 2015 - p.12

Mais conteúdo relacionado

Destaque

Tema 11 matematicas
Tema 11 matematicas Tema 11 matematicas
Tema 11 matematicas
2003judo
 
Rúbrica producción editorial ago dic 2013
Rúbrica producción editorial ago dic 2013Rúbrica producción editorial ago dic 2013
Rúbrica producción editorial ago dic 2013
Adrián Linares
 
Historia del obelisco del vaticano ''aqua alle funni''
Historia del obelisco del vaticano ''aqua alle funni''Historia del obelisco del vaticano ''aqua alle funni''
Historia del obelisco del vaticano ''aqua alle funni''
zoilamanu
 

Destaque (20)

Tema 11 matematicas
Tema 11 matematicas Tema 11 matematicas
Tema 11 matematicas
 
Cambridge vs. cambridge
Cambridge vs. cambridgeCambridge vs. cambridge
Cambridge vs. cambridge
 
Seminario de Cloud Computing na UFRRJ
Seminario de Cloud Computing na UFRRJSeminario de Cloud Computing na UFRRJ
Seminario de Cloud Computing na UFRRJ
 
Rúbrica producción editorial ago dic 2013
Rúbrica producción editorial ago dic 2013Rúbrica producción editorial ago dic 2013
Rúbrica producción editorial ago dic 2013
 
Syllabus pa
Syllabus paSyllabus pa
Syllabus pa
 
Comenzar
ComenzarComenzar
Comenzar
 
Modelo para marcadores solucion
Modelo para marcadores solucionModelo para marcadores solucion
Modelo para marcadores solucion
 
Historia del obelisco del vaticano ''aqua alle funni''
Historia del obelisco del vaticano ''aqua alle funni''Historia del obelisco del vaticano ''aqua alle funni''
Historia del obelisco del vaticano ''aqua alle funni''
 
Ruby e sushi
Ruby e sushiRuby e sushi
Ruby e sushi
 
3to1 Pitch-v2
3to1 Pitch-v23to1 Pitch-v2
3to1 Pitch-v2
 
ОННП Иркутской области
ОННП Иркутской областиОННП Иркутской области
ОННП Иркутской области
 
Platillo d'espatlleta de conill a la llimona amb olives d'Aragó i anxoves
Platillo d'espatlleta de conill a la llimona amb olives d'Aragó i anxovesPlatillo d'espatlleta de conill a la llimona amb olives d'Aragó i anxoves
Platillo d'espatlleta de conill a la llimona amb olives d'Aragó i anxoves
 
Http
HttpHttp
Http
 
Las imagenes digitales
Las imagenes digitalesLas imagenes digitales
Las imagenes digitales
 
Mono de hidraulica
Mono de hidraulicaMono de hidraulica
Mono de hidraulica
 
7 errores comunes en branding
7 errores comunes en branding7 errores comunes en branding
7 errores comunes en branding
 
Carmina Pla Hipnosi
Carmina Pla HipnosiCarmina Pla Hipnosi
Carmina Pla Hipnosi
 
555
555555
555
 
Fauna e flora
Fauna e floraFauna e flora
Fauna e flora
 
123
123123
123
 

Semelhante a 6

Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
César Júlio
 
ORGANIZACAO DE COMPUTADORES
ORGANIZACAO DE COMPUTADORESORGANIZACAO DE COMPUTADORES
ORGANIZACAO DE COMPUTADORES
paulocsm
 
TEES - MDA Apresentação Final
TEES - MDA Apresentação FinalTEES - MDA Apresentação Final
TEES - MDA Apresentação Final
guestc7f5eb
 
Redes de Computadores FMU
Redes de Computadores FMURedes de Computadores FMU
Redes de Computadores FMU
FMU - Oficial
 

Semelhante a 6 (20)

Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e risc
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015
 
Cloud Computing: Desafios de Arquiteturas multitenantes e o Caso Salesforce
Cloud Computing: Desafios de Arquiteturas multitenantes e o Caso SalesforceCloud Computing: Desafios de Arquiteturas multitenantes e o Caso Salesforce
Cloud Computing: Desafios de Arquiteturas multitenantes e o Caso Salesforce
 
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...
 
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
Estudo de performance_das_arquiteturas_risc_e_cisc._um_breve_historico_da_arq...
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Processo de Desenvolvimento MDA: metodologias e agilidade
Processo de Desenvolvimento MDA: metodologias e agilidadeProcesso de Desenvolvimento MDA: metodologias e agilidade
Processo de Desenvolvimento MDA: metodologias e agilidade
 
1 ok
1 ok1 ok
1 ok
 
5
55
5
 
CFD
CFDCFD
CFD
 
Gerencia memoria simulador
Gerencia memoria simuladorGerencia memoria simulador
Gerencia memoria simulador
 
ORGANIZACAO DE COMPUTADORES
ORGANIZACAO DE COMPUTADORESORGANIZACAO DE COMPUTADORES
ORGANIZACAO DE COMPUTADORES
 
TEES - MDA Apresentação Final
TEES - MDA Apresentação FinalTEES - MDA Apresentação Final
TEES - MDA Apresentação Final
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
 
Redes de Computadores FMU
Redes de Computadores FMURedes de Computadores FMU
Redes de Computadores FMU
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em Nuvem
 
2016-12 Microsserviços: Comparativo da Arquitetura de Microsserviços com o Mo...
2016-12 Microsserviços: Comparativo da Arquitetura de Microsserviços com o Mo...2016-12 Microsserviços: Comparativo da Arquitetura de Microsserviços com o Mo...
2016-12 Microsserviços: Comparativo da Arquitetura de Microsserviços com o Mo...
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Arquitetura paralela
Arquitetura paralelaArquitetura paralela
Arquitetura paralela
 

Mais de Ana Ligia (7)

10
1010
10
 
9
99
9
 
8
88
8
 
7
77
7
 
4
44
4
 
3 ok
3 ok3 ok
3 ok
 
2 ok
2 ok2 ok
2 ok
 

Último

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 

Último (20)

Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 

6

  • 1. Ensinando Arquiteturas Vetoriais Utilizando um Simulador de Instruc¸˜oes MIPS Fredy A. M. Alves1, Danilo Almeida1, Lucas Braganc¸a1, Andr´e B. M. Gomes1,2, Ricardo S. Ferreira1,2, Jos´e Augusto M. Nacif1,2 1 Instituto de Ciˆencias Exatas e Tecnol´ogicas, Campus UFV-Florestal, Brasil 2 Departamento de Inform´atica, UFV, Brasil {fredy.alves, danilo.damiao, lucas.braganca, andre.maciel, ricardo, jnacif}@ufv.br Abstract—Os processadores vetoriais juntamente com o pro- cessador MIPS constituem dois marcos importantes no desen- volvimento e no ensino de arquitetura de computadores. Nas ´ultimas d´ecadas, v´arias extens˜oes do conjunto de instruc¸˜oes MIPS foram especificadas, incluindo uma extens˜ao SIMD em 2014. Este artigo apresenta o primeiro simulador vetorial baseado no MIPS para ser utilizado em aulas de arquitetura de computa- dores de cursos de Ciˆencia da Computac¸˜ao e Engenharias. A implementac¸˜ao proposta ´e baseada no MARS, um simulador MIPS32 de c´odigo aberto. O simulador proposto ´e denominado Vector MARS ou VMARS e apresenta uma interface robusta e intuitiva que auxilia no processo de simulac¸˜ao das instruc¸˜oes vetoriais MIPS oferecendo tamb´em suporte ao conjunto padr˜ao de instruc¸˜oes do MIPS32. Juntamente com o simulador VMARS s˜ao apresentados exemplos para ilustrar o uso das instruc¸˜oes vetoriais presentes na extens˜ao do MIPS. Keywords—Processadores Vetoriais; Simulador MIPS; Ensino de Arquitetura de Computadores I. INTRODUC¸ ˜AO Na d´ecada de 60, o projetista de computadores S. Cray inovou ao apresentar os computadores CDC 6600 e 7600 com m´ultiplas unidades funcionais, unidade de load/store de- sacoplada, pipeline, refrigerac¸˜ao e os princ´ıpios dos computa- dores RISC. Posteriormente, na d´ecada de 70, com a fundac¸˜ao da sua pr´opria empresa, o primeiro computador vetorial foi projetado e comercializado, criando um marco na hist´oria da computac¸˜ao. Outro marco importante foi o projeto do processador MIPS nos anos 80, que herdou v´arios princ´ıpios dos computadores da linha CDC dando origem ao termo RISC (Reduced Instruction Set Computer). Recentemente, para o ensino destes conceitos, a literatura da ´area [1], [2] propˆos o MIPS vetorial (VMIPS) e destacou tamb´em as extens˜oes SIMD multim´ıdia da Intel. Entretanto n˜ao existem simuladores para auxiliar no ensino da extens˜ao do modelo vetorial do MIPS. Ensinar organizac¸˜ao e arquitetura de computadores com aulas de laborat´orio ou atividades pr´aticas ´e uma t´ecnica amplamente utilizada para ajudar alunos a alcanc¸ar um en- tendimento melhor de conceitos abstratos [3], [4]. A utilizac¸˜ao de simuladores ´e largamente adotada em cursos de organizac¸˜ao e arquitetura de computadores de graduac¸˜ao e p´os-graduac¸˜ao. Este recurso pedag´ogico n˜ao exige uma infraestrutura espe- cializada e contribui para o entendimento e assimilac¸˜ao de conceitos abstratos, como processamento vetorial e linguagem assembly. V´arios simuladores MIPS tradicionais [5], [6], [7], [8], [9] est˜ao dispon´ıveis para alunos desenvolverem atividades pr´aticas. Por´em, os simuladores atuais n˜ao oferecem su- porte para instruc¸˜oes vetoriais. Com o surgimento das GPUs, que tamb´em oferecem recursos para ensino [10] al´em do alto desempenho, o processamento vetorial voltou a ser um t´opico importante para melhorar o desempenho de programas na resoluc¸˜ao de problemas complexos como, por exemplo, minerac¸˜ao de dados, extrac¸˜ao de caracter´ısticas em v´ıdeos e processamento de imagem e v´ıdeo [11]. O m´odulo da arquitetura MIPS SIMD (MIPS SIMD Ar- chitecture - MSA) ´e uma extens˜ao para uma das arquite- turas de processadores mais utilizadas no ˆambito industrial e acadˆemico, que ´e o processador MIPS [1], [2]. Com o MSA ´e poss´ıvel realizar o processamento paralelo para a execuc¸˜ao de operac¸˜oes vetoriais de uma forma mais r´apida e eficiente utilizando a abordagem SIMD (Single Instruction, Multiple Data). O MSA ´e semelhante tamb´em aos modelos MMX e SSE da Intel que foram propostos como extens˜oes multim´ıdia com execuc¸˜ao SIMD. Este trabalho apresenta o primeiro simulador para a extens˜ao vetorial do MIPS32 com suporte completo ao conjunto de instruc¸˜oes da MSA. Este simulador denominado VMARS (Vector MIPS Assembler and Runtime Simulador), por ter sido baseado no MARS [9]. Este artigo est´a organizado da seguinte forma. Na Sec¸˜ao II, explicamos os conceitos b´asicos da arquitetura MIPS SIMD. Na Sec¸˜ao III s˜ao apresentados os trabalhos correlatos. A Sec¸˜ao IV introduz o simulador VMARS e a Sec¸˜ao V apresenta alguns trechos de c´odigo para serem usados em sala de aula. Finalmente, na Sec¸˜ao VI, apresentamos as conclus˜oes e trabalhos futuros. II. CONCEITOS B ´ASICOS Inicialmente, esta Sec¸˜ao descreve os conceitos gerais dos processadores vetoriais. Posteriormente, a arquitetura vetorial MSA do simulador VMARS ser´a detalhada. A. Arquiteturas vetoriais: Instruc¸˜ao ´unica, m´ultiplos dados Processadores vetoriais s˜ao classificados na classe de ar- quiteturas SIMD (Single Instruction Multiple Data), na qual a mesma operac¸˜ao ´e executada sobre m´ultiplos dados, em constrate com as arquiteturas escalares ou mono-processadores que s˜ao classificadas como processadores SISD (Single In- struction, Single Data). Al´em disso, outra caracter´ıstica im- portante ´e a presenc¸a de registradores vetoriais. A vantagem International Journal of Computer Architecture Education (IJCAE) v.4, n.1, dezembro 2015 - p.9
  • 2. principal ´e que o programador ainda pode pensar de forma sequencial enquanto opera sobre dados paralelos atrav´es dos uso de vetores. As operac¸˜oes vetoriais s˜ao realizadas atrav´es dos seguintes passos: 1) Os dados s˜ao carregados da mem´oria para os regis- tradores vetoriais utilizando a unidade de Load/Store vetorial; 2) Uma ou mais instruc¸˜oes s˜ao executadas sobre os registradores vetoriais e/ou escalares; 3) Os resultados s˜ao gravados dos registradores vetoriais para a mem´oria. A Figura 1 apresenta o diagrama b´asico de uma arquitetura vetorial cujo modelo original foi proposto por S. Cray na d´ecada de 70. Em particular, a arquitetura MSA do VMARS trata os registradores vetoriais como palavras (words), de forma similar aos modelos MMX e SSE da Intel. Os principais m´odulos do processador vetorial MIPS s˜ao: • Mem´oria de dados: A mem´oria principal do MIPS vetorial ´e compartilhada com o conjunto de instruc¸˜oes escalares MIPS. • Unidade vetorial de Load/Store: Esta unidade ´e respons´avel pela comunicac¸˜ao entre os registradores vetoriais e a mem´oria. Este m´odulo ´e normalmente im- plementado utilizando pipeline aumentando a largura de banda e a vaz˜ao com paralelismo temporal mas- carando a latˆencia de mem´oria. • Registradores vetoriais: 32 registradores vetoriais de 128 bits cada. Eles podem ser manipulados como um vetor de bytes, halfwords, word ou double words. • Unidades funcionais: Diversos tipos de unidades funcionais est˜ao dispon´ıveis no MIPS vetorial. Elas s˜ao respons´aveis por executar instruc¸˜oes de ponto flutuante, de inteiros e/ou operac¸˜oes l´ogicas. • Registradores escalares: Os 32 registradores da arquitetura MIPS original tamb´em est˜ao dispon´ıveis na vers˜ao vetorial. Fig. 1. Arquitetura de um processador vetorial. B. Arquitetura MIPS SIMD A MSA (MIPS SIMD Architecture) ´e uma extens˜ao SIMD para a arquitetura padr˜ao MIPS Release 5. Esta extens˜ao foi recentemente especificada pela MIPS Technologies, Inc. [11] e utiliza os princpios RISC (Reduced Instruction Set Computers). A MSA adiciona mais de 150 novas instruc¸˜oes na arquitetura MIPS original, incluindo tamb´em mais 32 registradores de 128 bits. Estes registradores podem ser indexados e particionados de forma vetorial com quatro tipos de dados: byte (8 bits), halfword (16 bits), word (32 bits) e doubleword (64 bits) [11]. De acordo com o formato de dado que ´e especificado pela instruc¸˜ao, o n´umero de elementos ´e indexado de 0 a n onde n = 128 formato . O bit menos significativo (LSB) ´e o bit mais `a direita e o mais significativo (MSB) ´e o mais `a esquerda. A Figura 2 apresenta um exemplo de registrador vetorial indexado com o tipo de dados word, onde temos 4 elementos n = 128 32 = 4. Fig. 2. Elementos do tipo word de um registrador vetorial do VMIPS. Cada instruc¸˜ao pode atuar em mais de um formato de dado. O exemplo a seguir ilustra a instruc¸˜ao addv em dois formatos: byte e word. • addv.b wd,ws,wt - Soma os bytes dos registradores vetoriais ws e wt e guarda o resultado em wd. • addv.w wd,ws,wt - Soma as words dos registradores vetoriais ws e wt e guarda o resultado em wd. III. TRABALHOS RELACIONADOS Existem diversos simuladores para a arquitetura MIPS ori- ginal, mas nenhum deles implementa o conjunto de instruc¸˜oes vetoriais. O SPIM [5] ´e um dos simuladores MIPS mais utilizados. Al´em do simulador SPIM existem muitos outros simuladores MIPS, onde podemos destacar o MIPSASM [6], o TinyMIPS [7], o EduMIPS64 [8] e o MARS [9]. O Edu- MIPS64 foi o primeiro simulador MIPS a suportar a extens˜ao 64 bits. O VMARS foi desenvolvido `a partir do simulador MARS devido `a sua facilidade de uso, popularidade e flexi- bilidade para inclus˜ao de novas funcionalidades. Uma comparac¸˜ao entre o SPIM e o MARS foi realizada em [9]. A IDE MARS ´e mais intuitiva que a SPIM. Por exemplo, no MARS ´e mais f´acil e mais r´apido modificar valores dos registradores e utilizar breakpoints. O SPIM n˜ao fornece uma IDE completa. A principal diferenc¸a entre o MARS e o VMARS ´e que o VMARS adiciona um conjunto com mais de 150 instruc¸˜oes vetoriais e recursos de visualizac¸˜ao para os formatos de dados vetoriais. IV. SIMULADOR VMARS A interface implementada para o VMARS fornece recursos como preenchimento autom´atico e destacamento de sintaxe International Journal of Computer Architecture Education (IJCAE) v.4, n.1, dezembro 2015 - p.10
  • 3. para a linguagem assembly do MIPS e da extens˜ao vetorial MSA. Al´em de incluir registradores espec´ıficos que est˜ao dispon´ıveis somente na extens˜ao vetorial. Para ensino do processamento vetorial, um componente importante ´e a visualizac¸˜ao dos conte´udo dos registradores. Existem 5 abas diferentes no painel de registradores do VMARS. Foram inclu´ıdas duas novas abas: Vector Registers e Float Vector Registers como apresentado na Figura 3. Os valores dos 32 registradores vetoriais s˜ao apresentados como n´umeros inteiros com sinal ou valores hexadecimais. Os regis- tradores vetoriais inteiros s˜ao representados por $wn onde n ´e o n´umero do registrador correspondente. A aba relacionada aos registradores vetoriais de ponto flutuante apresenta os valores de todos os 32 registradores que comp˜oem a unidade de ponto flutuante. O VMARS considera a unidade de ponto flutuante como um coprocessador. Os registradores vetoriais de ponto flutuante s˜ao representados por $cn onde n ´e o n´umero do registrador correspondente. ´E importante notar que existem dois conjuntos de registradores: $Cn para ponto flutuante e $Wn para inteiros. Eles s˜ao dois grupos independentes de 32 registradores vetoriais que totalizam 64 registradores. Fig. 3. Abas de registradores do VMARS. Ambas as abas Vector Registers e Float Vector Registers podem ser configuradas para apresentar dados em diferentes formatos. A Tabela I apresenta as opc¸˜oes de visualizac¸˜ao dispon´ıveis. As instruc¸˜oes que utilizam Registradores de ponto flutuante vetoriais s˜ao executadas somente em formato word e doubleword, que s˜ao, respectivamente, precis˜ao simples e dupla no formato IEEE 754 [12]. O VMARS implementa as instruc¸˜oes vetoriais MSA, que TABLE I. FORMATOS DISPON´IVEIS PARA APRESENTAR OS DADOS DE REGISTRADORES VETORIAIS. Opc¸˜ao Formato Vector Reg. Float Vector Reg. Show bytes 8 bits Dispon´ıvel N˜ao Dispon´ıvel Show Halfwords 16 bits Dispon´ıvel N˜ao Dispon´ıvel Show Words 32 bits Dispon´ıvel Dispon´ıvel Show Double Words 64 bits Dispon´ıvel Dispon´ıvel utilizam o sufixo para determinar variac¸˜oes da instruc¸˜ao ve- torial. Por exemplo, add.b significa que a instruc¸˜ao ir´a somar os bytes de dois registradores vetoriais. Por outro lado, add.v realiza a operac¸˜ao de adic¸˜ao entre os registradores vetoriais inteiros. O c´odigo assembly e de m´aquina s˜ao apresentados na interface do VMARS, que tamb´em possibilita a utilizac¸˜ao de breakpoints. V. EXEMPLOS O VMARS pode ser utilizado em aulas pr´aticas e como ferramenta de visualizac¸˜ao para facilitar o entendimento de conceitos relacionados a arquiteturas vetoriais. Esta sec¸˜ao apresenta dois exemplos retirados do livro “Arquitetura de Computadores - Uma Abordagem Quantitativa” [2], onde um conjunto de instruc¸˜oes VMIPS foi especificado com 32 instruc¸˜oes sem detalhamento de formato. Este conjunto tem fins did´aticos para ilustrar os principais recursos e operac¸˜oes de processadores vetoriais. Enquanto que o VMARS segue a espeficac¸˜ao formal do MSA com mais de 150 instruc¸˜oes vetoriais e formato detalhado em bin´ario. Os dois exemplos ser˜ao ilustrados em trˆes formatos: algoritmo alto n´ıvel, VMIPS e VMARS MSA. O primeiro exemplo ´e o DAXPY que ´e amplamente usado na literatura. DAXPY ´e a sigla para Double-precision AX Plus Y, onde A ´e um escalar, X, Y s˜ao dois vetores. O pseudoc´odigo para o DAXPY apresentado na Figura 4(a). For (i=0 to n) Y[i] = a * X[i] + Y[i] (a) 1: L.D F0, a 2: LV V1, Rx 3: MULVS.D V2, V1, F0 4: LV V3, Ry 5: ADDVV.D V4, V2, V3 6: SV V4, Ry (b) 1: insert.w $c0, 2 2: ld.w $c1, 2048(0) 3: fmul.w $c2, $c1, $c0 4: ld.w $c3, 1024(0) 5: fadd.w $c4, $c2, $c3 6: st.w $c4, 1024(0) (c) Fig. 4. DAXPY: (a) pseudo c´odigo; (b) VMIPS; (c) VMARS. Na implementac¸˜ao VMIPS, cada registrador vetorial tem 64 palavras de 64 bits. Supondo que n seja menor que 64, a implementac¸˜ao VMIPS pode ser realizada sem lac¸o como ilustra a Figura 4(b), onde o escalar A ´e armazenado no registrador F0 e os vetores X e Y nos registradores vetoriais V1 e V3, respectivamente. O registrador vetorial V2 ´e usado temporariamente e o resultado final foi gerado no registrador V4. O VMIPS segue a sintaxe do MIPS adicionando o sufixo V para as instruc¸˜oes vetoriais. J´a a sintaxe do VMARS segue a especificac¸˜ao formal definida em [11]. A implementac¸˜ao VMARS para o DAXPY International Journal of Computer Architecture Education (IJCAE) v.4, n.1, dezembro 2015 - p.11
  • 4. est´a ilustrada na Figura 4(c). Os registradores ci s˜ao vetoriais para ponto flutuante. Semelhamente ao c´odigo do VMIPS temos para este exemplo o escalar A armazenado no regis- trador c0 e os vetores X e Y nos registradores vetoriais c1 e c3, respectivamente. O registrador vetorial c2 ´e usado temporariamente e o resultado final foi gerado no registrador c4. O segundo exemplo ilustra a vetorizac¸˜ao de um c´odigo com condicionais dentro de lac¸os. O pseudo c´odigo para a operac¸˜ao ´e mostrado na Figura 5(a). O lac¸o ´e executado com 2 vetores. Se a posic¸˜ao i no vetor X for diferente de 0, Yi ´e subtra´ıdo de Xi. i = 0; repita se X[i] ! = 0 então X[i] = X[i] - Y[i]; m i=i+1; até i == 63; (a) 1: LV V1, Rx 2: LV V2, Ry 3: L.D F0, 0 4: SNEVS.D V1, F0 5: SUBVV.D V1, V1, V2 6: SV V1, Rx (b) 1: ld.b $w1,-2048(0) 2: ld.b $w2,-4096(0) 3: ceq.b $w0,$w1,$w5 4: bmz.v $w3,$w1,$w0 5: bmz.v $w4,$w2,$w0 6: subv.b $w0,$w3,$w4 7: st.b $w0,-4096(0) (c) Fig. 5. Lac¸o condicional: (a) pseudo c´odigo; (b) VMIPS; (c) VMARS. Uma m´ascara vetorial ´e utilizada para resolver este tipo de problema, fornecendo execuc¸˜ao condicional para cada operac¸˜ao entre elementos de vetores em uma instruc¸˜ao vetorial. A m´ascara vetorial ´e um vetor booleano. O algoritmo ilustrado na Figura 5(b) apresenta o c´odigo com instruc¸˜oes pseudo VMIPS para a operac¸˜ao. Inicialmente, Os vetores X e Y s˜ao carregados em V1 e V2. O escalar zero ´e carregado em F0. A instruc¸˜ao SNEVS.D percorre V1 para verificar se V1[i]! = F0 e gerar a m´ascara V0. A instruc¸˜ao SUBVV.D subtrai V2[i] de V1[i] se V0[i] que ´e a m´ascara vetorial for 1. O resultado ´e guardado em V1. e a instruc¸˜ao SV grava o resultado na mem´oria. A implementac¸˜ao VMARS ´e ilustrada na Figura 5(c). Primeiro, os vetores X e Y s˜ao carregados nos registradores w1 e w2 no formato de bytes utilizando a instruc¸˜ao ld.b. A instruc¸˜ao ceq.b percorre w1 comparando com w5 para gerar a m´ascara para X que est´a em w1. As instruc¸˜oes bmz.v s˜ao usadas para carregar X e Y segundo a m´ascara. Por fim, w0 executa a subtrac¸˜ao e o resultado ´e salvo na mem´oria. VI. CONCLUS ˜AO E TRABALHOS FUTUROS Este trabalho apresenta o primeiro simulador de um pro- cessador MIPS vetorial, denominado VMARS. Este simulador foi desenvolvido para auxiliar estudantes no entendimento de conceitos abstratos de processadores vetoriais. Neste trabalho foram descritas as operac¸˜oes b´asicas do simulador VMARS juntamente com exemplos de c´odigos vetoriais para ilustrar sua utilizac¸˜ao em sala de aula. Podemos destacar que o VMARS executa um conjunto completo de mais de 150 instruc¸˜oes vetoriais seguindo a especificac¸˜ao formal do MSA [11]. As facilidades na edic¸˜ao dos c´odigos com texto de ajuda para a sintaxe das instruc¸˜oes agilizam o aprendizado. A visualizac¸˜ao dos registradores veto- riais auxilia na compreens˜ao dos conceitos de m´ascaras dentre outros. Como trabalhos futuros, o simulador ser´a avaliado nas disciplinas de Arquitetura de Computadores da Universidade Federal de Vic¸osa. Com o retorno dos estudantes pretendemos implementar melhorias no simulador VMARS. Ap´os esta etapa, o c´odigo fonte, o simulador, roteiros com exemplos e sugest˜oes de aulas pr´aticas ser˜ao disponibilizados a toda comunidade acadˆemica. AGRADECIMENTOS N´os gostar´ıamos de agradecer a CAPES, CNPQ, FAPEMIG, FUNARBE, GAPSO e a UFV pelo apoio fi- nanceiro e ao projeto VMARS por fornecer a base para o desenvolvimento deste projeto. Agradecemos tamb´em ao aluno Fernando Augusto por suas contribuic¸˜oes no desenvolvimento do simulador. REFERENCES [1] D. A. Patterson and J. L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, 3rd ed. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 2007. [2] J. L. Hennessy and D. A. Patterson, Computer Architecture, Fifth Edition: A Quantitative Approach, 5th ed. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 2011. [3] R. S. Ferreira, A. C. S. Beck, L. Carro, A. Toledo, and A. Silva, “A java framework to teach computer architecture,” in New Trends and Technologies in Computer-Aided Learning for Computer-Aided Design. Springer, 2005, pp. 25–35. [4] R. Ferreira, J. Nacif, S. Magalhaes, T. Almeida, and R. Pacifico, “Be a simulator developer and go beyond in computing engineering,” in Frontiers in Education Conference (FIE), 2015 IEEE, Oct 2015, pp. 1–8. [5] J. R. Larus, “Spim: A mips32 simulator,” 1990–2010, http://sourceforge.net/projects/spimsimulator/ (Visited on April 15, 2015). [6] K. Meinz, “Webmipsasm v2.1,” 2015, http://www.kurtm.net/mipsasm/index.cgi (Visited on April 15, 2015). [7] T.Pittman, “Tinymips (machine in- struction processing simulator),” 2003, http://www.ittybittycomputers.com/Courses/Prior/MachOrg/GateSim/ TinyMIPS.htm (Visited on April 15, 2015). [8] D. Patti, A. Spadaccini, M. Palesi, F. Fazzino, and V. Catania, “Support- ing undergraduate computer architecture students using a visual mips64 cpu simulator,” Education, IEEE Transactions on, vol. 55, no. 3, pp. 406–411, Aug 2012. [9] K. Vollmar and P. Sanderson, “Mars: An education-oriented mips assembly language simulator,” SIGCSE Bull., vol. 38, no. 1, pp. 239– 243, Mar. 2006. [10] G. Fontes and R. Ferreira, “Ensino de organizacoes de memoria em ar- quiteturas paralelas usando placas graficas aceleradores,” International Journal of Computer Architecture Education (IJCAE), vol. 2, no. 1, 2013. [11] I. Technologies., MIPS Architecture for Programmers Volume IV-j: The MIPS32 SIMD Architecture Module, 1st ed. 955 East Arques Avenue, Sunnyvale, CA 94085-4521: MIPS Technologies Inc., 2014. [12] “IEEE Standard for Floating-Point Arithmetic,” Microprocessor Stan- dards Committee of the IEEE Computer Society, 3 Park Avenue, New York, NY 10016-5997, USA, Tech. Rep., Aug. 2008. International Journal of Computer Architecture Education (IJCAE) v.4, n.1, dezembro 2015 - p.12