Workshop sobre Educação em Arquitetura de Computadores - WEAC 2006
DIMIPSS: Um simulador didático e interativo do MIPS
Ariane F. Felix, Christiane V. Pousa, Milene B. Carvalho Pontifícia Universidade Católica de Minas Gerais (PUC-Minas)
[email protected] ,
[email protected] ,
[email protected] Resumo O DIMIP DIMIPSS SS é um softw software are multip multiplat latafor aforma ma de simulação da execução das instruções assembly do MIPS monociclo, desenvolvido para auxiliar professores e alunos das disciplinas da área de “Arqu “Arquite itetur tura a de Comput Computado adores res”. ”. Ele é capaz capaz de representar os sinais dos caminhos de dados e de controle usados em cada instrução, apresentando-os graficamente. Além disso, o DIMIPSS mostra as altera alterações ções na memóri memória a de dados, dados, na memór memória ia de instruções, no contador de programa e no banco de regist registrad radore ores. s. Neste Neste artigo artigo,, o DIMIP DIMIPSS SS e os seus seus principais recursos são apresentados.
1. Introdução
Nas disciplinas de Arquitetura de Computadores é no notá táve vell a nece necess ssid idad adee de ferr ferram ament entas as gráf gráfic icas as e didáticas para auxiliar o aprendizado. Especificamente para explicar a arquitetura de processadores, pois são necessárias muitas figuras para ilustrar os caminhos de dado dadoss e de cont contro role le qu quand andoo uma uma instr instruç ução ão é executada. executada. Normalmente, Normalmente, os profess professores ores optam por fazer desenhos no quadro, ou utilizar slides, com o auxílio de livro didático [1]. Estas opções são pouco práticas, não muito eficientes, além de não serem dinâmicas. Além disso, alguns alunos apresentam uma grande dificuldade em relação à disciplina. Um software de simulação gráfico possibilita a criação de um ambiente de aprendizado aprendizado consistent consistente, e, dinâmico dinâmico e interativo. interativo. Com esta visão o DIMIPSS ( Didatic Interative MIPS )[2] foi proposto e desenvolvido. Simulator )[2] O DIMIPSS é um software multiplatafor multiplataforma ma de simul simulaç ação ão da exec execuç ução ão (cam (caminh inhoo de dado dadoss e de contro con trole) le) das instruç instruções ões do MIPS MIPS Monoc Monocicl iclo. o. Ele receb recebee um program programaa em linguag linguagem em de montage montagem m (assembly), o converte para a linguagem de máquina e representa graficamente o comportamento do caminho de dados e de controle durante a sua execução. Microprocessor without Interlocked O MIPS ( Microprocessor Pipeline Stages) é um microprocessador desenvolvido
49
pela MIPS Computer Systems Inc [3]. Ele utiliza um conjun con junto to de instruçõe instruçõess de tamanho fixo de 32 bits bits e possui uma arquitetura RISC ( Reduced Instruction Set ). Por ser simples, o MIPS é adotado em Computer ). livros didáticos [1]. Mais detalhes sobre a estrutura da arquitetura do MIPS podem ser encontradas em [4]. O DIMIPSS tem como público-alvo estudantes que ainda ainda não não tive tivera ram m cont contat atoo com com a arqui arquite tetu tura ra do processador e seus componentes, isto é, um público ainda leigo nesta área. Por este motivo, é importante qu quee a ferra errame ment ntaa seja seja simp simple les, s, de form formaa qu quee o estudan estudante, te, além além de absor absorver ver o con conteú teúdo do com com mais mais faci facili lidad dadee e cons consis istê tênc ncia ia,, po poss ssaa tamb também ém talv talvez ez apresentar algum interesse pela área. Como foi citado em [5] a arquitetura de computadores é um campo que vem adquirindo um nível maior de complexidade o que inibe um interesse inicial pela área. Port Portant anto, o, o ob obje jeti tivo vo dest destee trabal trabalho ho é prop propor, or, dese desenv nvol olve verr e veri verifi fica carr um software didá didáti tico co e interativo interativo capaz de simular as instruções instruções assembly do MIPS representando graficamente os componentes dos caminhos de dados e de controle. 2. Trabalhos Correlatos
O SPIM SPIM [6], [6], um simu simula lado dorr do MIPS MIPS muit muitoo utilizado, é apresentado no livro [1]. Ele simula as inst instruç ruçõe õess do MIPS MIPS sem sem cons consid ider erar ar aspe aspect ctos os do comportamento da arquitetura durante a execução. O WebMIPS [7] simula a arquitetura MIPS com pipeline . Ele possui a vantagem de ser uma plataforma disponível na internet, proporcionando uma interface dinâmica, a qual o estudante pode ter acesso sem ter que instalar módulos do simulador. O WebMips possui uma plataf plataforma orma gráfic gráficaa visua visualme lmente nte agradáv agradável, el, no entanto, as modificações que ocorrem nos caminhos de dados e controle durante a execução das instruções não são apresentadas. O J-MIPS [8] foi desenvolvido em Java e é um applet , portanto tem as vantagens de uma ferramenta on line como o WebMIPS. Ele tem como objetivo implementar uma visualização gráfica do SPIM.
Workshop sobre Educação em Arquitetura de Computadores - WEAC 2006
registrador é indicado pelo símbolo $. Por exemplo: “addi $t0, $zero, 1”. Caso ocorra um erro de sintaxe ou semântica, o software indicará a linha em que o mesmo ocorreu. As linhas de comentário devem iniciar com o símbolo “#”. Abaixo dos campos apresentados na Figura 1, o DIMIPSS possui uma ilustração que representa o caminho de dados e de controle do MIPS. Os caminhos que possuem sinais usados durante a execução da instrução são destacados para cada instrução através de duas cores: azul para o caminho de dados e vermelho para o caminho de controle. Na Figura 2 é possível visualizar o que ocorre após a interpretação e execução de uma instrução “ addi”. O usuário não é sobrecarregado de informações; em destaque ficam apenas os itens que estão sendo utilizados por aquela instrução. Os registradores utilizados pela instrução ficam em destaque e o PC indica a próxima instrução a ser executada.
3. Simulador
O DIMIPSS é um simulador desenvolvido em Java que simula a execução (caminho de dados e de controle) das instruções do MIPS Monociclo. As instruções do assembly do MIPS simuladas são as descritas em [1]. Do tipo R foram implementadas as instruções: add, sub, mult, div, and, or, slt, sll. Do tipo I: addi, subi, lw, sw, beq e bne. Do tipo J: j. O DIMIPSS foi desenvolvido em Java 1.5[9] utilizando o Netbeans 5.0[10]. O sistema foi desenvolvido orientado a objetos. Para cada módulo do processador existe uma classe, desta forma é possível fazer uma programação estrutural, sendo fácil modificar o código-fonte e até mesmo compreender o funcionamento da arquitetura do processador através do código-fonte do simulador. Para executar um conjunto de instruções basta digitá-las no campo “Interpret” (interpretar). Clicando no botão “Interpret” as instruções são interpretadas para a linguagem de máquina do MIPS e aparecem no campo “Process” (processar), que representa a memória de instruções (Figura 1).
Figura 2. O que ocorre após a interpretação e execução de uma instrução “addi”. Figura 1. Campos do DIMIPSS.
Clicando no botão “Process”, as instruções são simuladas uma a uma. Nos campos “RegisterBank” e “DataMemory” é possível visualizar as alterações nos registradores e na memória de dados. No campo “Process” a próxima instrução fica destacada e acima o incremento do PC ( program counter ) indica qual é a próxima instrução a ser executada. No campo “Interpret”, as instruções devem ser escritas no seguinte formato: o mnemônico da instrução seguido de um espaço e os parâmetros da mesma, separados por vírgula e um espaço. Cada
50
É importante ressaltar que no DIMIPSS o processo de execução da instrução é realizada em duas etapas: (i)interpretação das instruções; e (ii)processamento das mesmas. Desta forma o aluno visualiza que na execução da instrução o que é utilizado pelo processador é a instrução em linguagem de máquina e não a instrução escrita no assembly. Após a execução de instruções que não alteram a memória de dados, no campo “RegisterBank” as alterações que ocorreram com os registradores serão destacadas. Esta visualização permite ao aluno compreender que quando se altera os registradores não se altera a memória de dados.
Workshop sobre Educação em Arquitetura de Computadores - WEAC 2006
A visualização da execução da linguagem de máquina e das modificações ocorridas nos registradores facilita o aprendizado. São dúvidas simples, mas como o objetivo do software é ser didático estes detalhes são trabalhados. Ao passar o mouse pelo PC, pela ULA (Unidade Lógica e Aritmética), pelos multiplexadores e pela unidade de controle aparece um pop-up que apresenta os valores de entrada e de saída dos componentes ou os estados dos sinais, no caso da unidade de controle. Em relação aos trabalhos apresentados na Seção 2 o DIMIPSS é o único que representa a simulação através de ilustrações dinâmicas dos caminhos de dados e de controle. Estes desenhos ajudam o aluno a visualizar o processamento de cada instrução. Além disso, o recurso do DIMIPSS de passar o mouse pelos multiplexadores, pelo controle, pelo PC e pela ULA permite ao aluno uma interação mais dinâmica possibilitando a visualização do que ocorre em cada módulo e para aonde os bits da instrução seguem. Entretanto, o DIMIPSS não simula pipeline como o WebMIPS [8], pois o objetivo é simular a arquitetura do MIPS monociclo. Em relação ao J-MIPS, o DIMIPSS não permite execução on line (applet). O simulador SPIM possui um conjunto de instruções do MIPS mais amplo que os demais simuladores.
Figura 3. Campos após o processamento de uma instrução “sw”.
Na próxima linha ocorre outro acesso à memória de dados, instrução “lw” ( load word ). Esta instrução armazena o conteúdo indicado da memória de dados no registrador referenciado. (Figura 4).
4. Resultados
Para demonstrar a execução do software foi utilizado um exemplo que utiliza o grupo básico de instruções do MIPS (add, addi, lw, sw, beq e j) que representam todos os tipos (R, I e J). O código na linguagem de montagem do MIPS está na Tabela 1. Tabela 1. Código exemplo.
addi $t4, $zero, 2 sw $t4, 0($zero) lw $t0, 0($zero) add $t2, $zero, $zero
Figura 4. Campos após o processamento de uma instrução “lw”.
while: beq $t0, $t2, end addi $t2, $t2, 1 j while end: sw $t2, 0($zero)
A primeira instrução do exemplo é um “addi” ( add immediate) , como esta instrução já foi citada (Figura 2), não vamos abordá-la novamente. A instrução “sw” ( store word ), acessa a memória de dados. Portanto, a posição que está sendo acessada aparece em destaque. Como pode ser observado na Figura 3, a memória de dados foi alterada. Observe que o PC indica qual é a próxima instrução e não a que está sendo executada no momento.
51
Na instrução “add” os conteúdos dos dois registradores são adicionados e armazenados no registrador destino. A instrução seguinte é um “beq” (branch if equal ) . Na execução desta instrução o simulador salta para a linha seguinte, pois, a sua condição não foi satisfeita. Na Figura 5 destaca-se os dois registradores que tem os seus valores comparados e o PC que é acrescido de quatro, o que indica que ele passou para instrução seguinte, isto é, não ocorreu salto.
Workshop sobre Educação em Arquitetura de Computadores - WEAC 2006
MIPS, representando-as na plataforma gráfica do DIMIPSS. Além disso, foi verificada a execução de um laço de repetição simples no DIMIPSS. 5. Conclusão
Figura 5. Campos após o processamento de uma instrução “beq”.
No “j” ( jump) o salto ocorre incondicionalmente, portanto o valor do PC não é acrescido de quatro como é ilustrado na Figura 6.
O software foi desenvolvido de acordo com a proposta inicial. O DIMIPSS é um simulador de fácil utilização, didático, dinâmico e interativo. Ele é de fácil utilização porque apresenta uma interface gráfica simples. O software possibilita que, a cada instrução executada, o aluno possa visualizar o que ocorre em cada módulo do processador. Isso torna a ferramenta dinâmica. Outros recursos, como o do pop up, tornam o DIMIPSS dinâmico e também possibilitam interatividade. Como possíveis trabalhos futuros, pode-se desenvolver uma versão online do simulador. Também é possível implementar um conjunto de instruções do MIPS mais amplo e outros tipos de arquitetura do MIPS como o multiciclo e pipelined. 6. Referências [1] Patterson, D. A., Hennessy, J. L. “Organização e Projeto de Computadores – A Interface Hardware/Software”, 3a Edição, Editora Campus, 2005. [2] DIMIPSS (Didatic Interative MIPS Simulator) Disponível em: http://paginas.terra.com.br/negocios/christianepousa/DIMIP SS/ [3]MIPS Tecnologies http://www.mips.com
Figura 6. Campos após o processamento de uma instrução “jump”.
–
Disponível
em:
[4] Hennessy, John ; et. al. “MIPS: A Microprocessor Architecture”. Palo Alto, United States. Pp: 17 – 22, 1982.
Como o jump foi processado a próxima instrução que deve ser executada é o “beq”. Nesta passagem a condição ainda não é aceita. Portanto, o PC é acrescido de quatro e a próxima instrução que será executada é a seguinte ao “beq”. Após o processamento do “add”, retornamos ao “j” que realiza um desvio para o “beq”novamente. Na linha do “beq” a condição é aceita, portanto o valor do PC não é acrescido de quatro. Saltando para a última linha do código. Nesta linha existe um “sw”, então o valor do registrador é armazenado no endereço indicado na memória de dados. Através deste exemplo foi apresentado o funcionamento das instruções básicas do assembly do
[5] Martins, C. A. P. S.; et. al. "A New Learning Method of Microprocessor Architecture”, 32nd Frontiers in Education Conference (FIE 2002), 2002, pp. S1F 16-S1F 21. [6] Larus, James. SPIM MIPS Simulator – Disponível em: http://www.cs.wisc.edu/~larus/spim.html [7] WebMIPS (MIPS CPU Pipelined Simulation On Line) . Disponível em: http://bellerofonte.dii.unisi.it/WEBMIPS/ [8] J-MIPS (The Java MIPS simulator) – Disponível em: http://www.csse.monash.edu.au/packages/jmips/ [9] Java Technology. Disponível em: http://java.sun.com [10] Netbeans. Disponível em: http://www.netbeans.org/
52