• Nenhum resultado encontrado

R10k: Um Simulador de Arquitetura Superescalar

N/A
N/A
Protected

Academic year: 2022

Share "R10k: Um Simulador de Arquitetura Superescalar"

Copied!
8
0
0

Texto

(1)

R10k: Um Simulador de Arquitetura Superescalar

Nelson A. Gonçalves Junior¹, Renata C. Lopes da Silva

2

, Ronaldo A. Lara Gonçalves³, João Angelo Martini

4

Departamento de Informática

Universidade Estadual de Maringá – Maringá, PR - Brasil {njunior¹, renatals², ronaldo³, jangelo

4

}@din.uem.br

2Mestranda bolsista Fundação Araucária

Resumo

Simulação é uma técnica muito utilizada na área de arquitetura de computadores para reproduzir o comportamento de um sistema real. Tal técnica é utilizada para testes e validação de arquiteturas experimentais e para dar suporte ao ensino e aprendizagem de fundamentos de arquitetura de computadores. Diversos simuladores de processadores têm sido propostos, abrangendo desde modelos básicos que simulam a arquitetura de Von Neumann até modelos que simulam arquiteturas de alto desempenho. Porém, o que se percebe é a escassez de simuladores com boa interface gráfica que dêem suporte principalmente ao ensino e aprendizagem de arquiteturas superescalares. Neste contexto, o presente trabalho apresenta um simulador de arquitetura superescalar, baseado no processador MIPS R10000, desenvolvido com o objetivo de dar suporte ao processo de ensino-aprendizagem de processadores superescalares. O simulador foi desenvolvido de maneira a facilitar o entendimento das estruturas internas e do comportamento do processador.

1. Introdução

Simulação é uma técnica muito utilizada atualmente, pois permite o estudo do comportamento de sistemas através de modelos que imitam suas características. Dessa forma é possível efetuar um estudo detalhado das propriedades de um sistema e observar seu funcionamento.

Em relação à arquitetura de computadores, a técnica tem sido utilizada para a validação de protótipos, para a análise de desempenho e para ensino

de processadores, mostrando como cada componente se comporta durante a execução de programas.

Muitos simuladores arquiteturais têm sido propostos de forma a facilitar a compreensão de modelos arquiteturais específicos. Tais simuladores abrangem modelos básicos, como a arquitetura de Von Neumann [1] representada no processador 8085 [2]

através dos simuladores Abacus [3] e GNUSim8085 [4] e arquiteturas pipelined como nos simuladores WinMIPS64 [5] e EduMIPS64 [6], que mostram o comportamento do processador MIPS 64. Além disso, há simuladores para arquiteturas superescalares, como SimpleScalar [7], SATSim [8] e SIMDE [9].

Porém, o que se percebe é que, além da existência de poucos simuladores para arquiteturas superescalares, eles são de difícil entendimento ou apresentam apenas uma visão geral destes modelos.

Neste contexto, o presente trabalho apresenta um simulador gráfico para arquiteturas superescalares, baseado no processador MIPS R10000 [10]. Com este simulador, pretende-se dar suporte ao processo de ensino-aprendizagem de uma arquitetura superescalar, mostrando o comportamento dos componentes do processador a cada ciclo de instrução.

Arquiteturas superescalares [11] são caracterizadas pelo paralelismo em nível de instrução. Diferente de modelos anteriores, como o de Von Neumman e as arquiteturas pipelined, essas arquiteturas possuem a capacidade de buscar várias instruções por ciclo. Elas também possuem diversas unidades funcionais, o que torna possível a execução paralela de instruções.

Alguns exemplos de processadores superescalares são:

PowerPC [12] da IBM, Pentium [13] da Intel e versões mais recentes do MIPS [14], da MIPS Technologies, Inc.

(2)

Dentre essas versões do MIPS, o R10000 foi desenvolvido em 1995, sendo a segunda variante superescalar deste processador, posterior ao R8000. O MIPS R10000 possui cinco unidades funcionais diferentes, sendo capaz de executar paralelamente até cinco instruções distintas. A maior inovação deste processador foi a capacidade de executar instruções fora de ordem, trazendo ganho de desempenho e redução na ociosidade das unidades funcionais. O desempenho do processador foi muito bom, o que o levou a servir de modelo para núcleos de processadores desenvolvidos posteriormente.

Todavia, o entendimento do funcionamento de uma arquitetura superescalar pode ser complexo, uma vez que essas arquiteturas manipulam diversos componentes, como filas de busca, decodificação e reordenação, ao mesmo tempo. Um aluno da disciplina de Arquitetura e Organização de Computadores pode ter dificuldade com essa aprendizagem, uma vez que a troca de instruções entre os componentes é constante e diversas estruturas são envolvidas.

Neste contexto, a simulação é utilizada de forma a facilitar o entendimento dos componentes internos de uma arquitetura superescalar. Assim, é introduzido o R10k, um simulador baseado no MIPS R10000, apresentando todas as estruturas do processador real, de forma a simular o comportamento do processador durante a execução de um programa. O simulador pode ser obtido através da seguinte url:

www.din.uem.br/~njunior/r10k.htm.

2. Trabalhos Relacionados

A utilização de simuladores para facilitar a compreensão do funcionamento de processadores ou modelos arquiteturais tem sido constante recentemente.

Isso porque os simuladores facilitam o entendimento da manipulação das estruturas de um sistema.

Estudantes podem observar o funcionamento de um sistema real, imitado pelo simulador, e verificar como as instruções ou estruturas são manipuladas.

Existem inúmeros simuladores de processadores simples, baseados na arquitetura de Von Neumann.

Exemplos de simuladores desse tipo são o Abacus e o GNUSim8085 baseados no processador 8085 da Intel.

O Abacus apresenta um conjunto de 80 instruções e todos os registradores do processador, incluindo registradores especiais como o PC, SP, Acumulador e os Flags. Além disso, ele permite a simulação de chamadas de interrupção. As memórias de dados, de instruções e a pilha de dados também podem ser observadas, bem como suas alterações durante a execução do programa.

Outro simulador baseado no processador 8085 é o GNUSim8085. A principal diferença entre este simulador e o Abacus é a plataforma em que opera.

Enquanto o Abacus foi implementado para sistemas Windows, o GNUSim8085 opera em sistemas POSIX (Linux, BSD, Unix-like SOs). Todavia, as funcionalidades de ambos são parecidas. Nos dois simuladores os dados são apresentados com valores hexadecimais. Porém, uma vantagem do GNUSim8085 é a presença de um conversor de valores hexadecimais para decimais. Dessa forma, fica mais simples a conferência de resultados.

Tanto o Abacus quanto o GNUSim8085 cumprem o que se propõem a fazer, que é a simulação do processador 8085. Porém, algumas limitações são impostas, não pelos simuladores, mas pela própria arquitetura do 8085, que é muito limitada. Uma dessas limitações é a utilização de instruções com um único operando. Apenas instruções MOV possuem dois operandos. Assim, os simuladores mostram-se adequados para conceitos iniciais de microprocessadores, uma vez que simulam uma arquitetura básica.

Outro par de simuladores com características semelhantes são o WinMIPS64 e o EduMIPS64.

Ambos simulam uma arquitetura pipelined baseada no conjunto de instruções do MIPS 64. Nesses simuladores é possível observar o caminho que uma instrução percorre através do pipeline, mostrando a inserção de bolhas e estatísticas da simulação, como números de ciclos de clock, quantidade de instruções executadas e quantidade de desvios tomados e mal previstos.

Ambos os simuladores apresentam 32 registradores de inteiro e 32 de ponto flutuante. O EduMIPS64 apresenta ainda os registradores HI e LO, utilizados para o armazenamento de resultados em operações de divisão e multiplicação. Dessa forma, ele se mantém mais fiel a arquitetura MIPS real, que também utiliza esses registradores para tais instruções. A principal desvantagem desses simuladores é a não existência de uma área destinada a edição de código. Ambos os simuladores possuem interface de fácil entendimento e são muito úteis para esclarecer os conceitos de pipeline.

Simuladores para arquiteturas superescalares vêm sendo propostos recentemente. Um deles é o MIDAS [15]. Baseado no MIPS R10000 este simulador apresenta um diagrama de blocos do processador, mostrando o percurso de instruções através dos diversos componentes do processador. Assim, é possível observar o caminho que uma instrução faz até ser executada. O simulador permite a visualização dos elementos da arquitetura, como as filas de remessa, unidades de execução, banco de registradores e

(3)

memória, mostrando inclusive a conexão entre cada elemento.

Porém, apenas uma versão beta do MIDAS está disponível, apresentando diversos bugs. Os desenvolvedores não deram seqüência ao projeto, não oferecendo suporte ao mesmo. Existe ainda uma falta de documentação, não especificando detalhes fundamentais, como o conjunto de instruções suportadas.

O SATSim é um simulador gráfico interativo para arquiteturas superescalares. Ele simula uma arquitetura genérica, não sendo baseado em um processador específico. Uma das vantagens do simulador é permitir a alteração dos parâmetros da arquitetura. Dessa forma, é possível alterar o número de instruções buscadas por ciclo, a quantidade de estações de reserva por unidade de execução, o número de entradas no buffer de reordenação e a quantidade de unidades de execução por tipo de instrução, entre outros parâmetros. O simulador produz ainda um arquivo de saída com diversas informações da simulação.

Porém, a interface do SATSim é confusa, dificultando o rastreamento das instruções através dos componentes da arquitetura, que não são dispostos de forma a facilitar o entendimento do funcionamento de arquiteturas superescalares. Os arquivos de entrada também são bastante confusos. Dessa forma, programas diferentes dos exemplos que vêm com o simulador são praticamente impossíveis de serem simulados.

Outro simulador disponível é o SIMDE. Além de arquiteturas superescalares, este simulador é capaz de simular um processador VLIW. Assim como no SATSim, alguns parâmetros podem ser configuráveis, como o número de unidades funcionais e a quantidade de instruções remetidas por ciclo. O simulador possui interface de fácil compreensão, facilitando o rastreamento das instruções através da arquitetura.

Porém, o espaço, na interface, para a apresentação de todas as unidades funcionais e estações de reserva é insuficiente. A estação de reserva e unidade funcional para desvios são omitidas, sendo necessário reconfigurar a interface para que elas possam ser observadas.

O simulador apresenta um conjunto de vinte instruções, entre instruções de inteiro e ponto flutuante, pecando ao excluir algumas instruções fundamentais, como divisão e saltos incondicionais. Além disso, faltam instruções para operações envolvendo pilha e chamadas de subrotina e há pouco espaço destinado para a memória de instruções e registradores. São 16 registradores ao todo, sendo 8 de inteiro e 8 de ponto flutuante, e apenas 8 posições de memória para a leitura e escrita de dados, o que limita os programas escritos para o simulador.

Já o SimpleScalar é um pacote de simuladores para a análise de arquiteturas superescalares. Possui um conjunto de oito simuladores para a realização de diferentes análises, como nas previsões de desvio, cache e execução especulativa. É um ótimo simulador para pesquisadores, uma vez que permite a alteração do código fonte para se adequar melhor às necessidades dos usuários, e gera uma grande quantidade de informações que podem ser úteis à pesquisa.

Todavia, o SimpleScalar não é um simulador gráfico, dificultando muito a compreensão da funcionalidade de arquiteturas superescalares. Para a utilização deste simulador é necessário ter um conhecimento prévio destas arquiteturas.

Cada um dos simuladores analisados apresenta características particulares, com vantagens e desvantagens em relação ao uso como ferramenta de apoio didático. Apesar da diversidade de simuladores disponíveis, há espaço para o desenvolvimento de novos simuladores, visto que o espectro de características didáticas a ser explorado é amplo.

Fundamentos importantes podem ser explorados pelos novos simuladores, como: comportamento dos desvios, chamadas de subrotina e instruções de pilha em arquiteturas superescalares. Neste contexto, o presente trabalho apresenta um simulador gráfico para arquiteturas superescalares, que visa facilitar o entendimento do funcionamento de tais arquiteturas, possibilitando a visualização do caminho que uma instrução percorre até ser executada.

3. Arquiteturas Superescalares e o MIPS R10000

Um processador superescalar é capaz de buscar, executar e finalizar diversas instruções ao mesmo tempo. Diferentes de arquiteturas pipelined, que dividem o ciclo de uma instrução em diversos estágios, nos pipelines superescalares cada estágio é capaz de receber mais de uma instrução. Além disso, os processadores superescalares possuem diversas unidades de execução, tornando-os capazes de executar diferentes instruções em paralelo.

Para a realização deste trabalho foi escolhido um processador superescalar específico, de forma a deixar a execução das instruções mais próxima de um processador real. Dessa forma, foi escolhido o MIPS R10000 para o desenvolvimento do simulador.

O MIPS R10000 é capaz de buscar e decodificar quatro instruções diferentes em um mesmo ciclo de clock. As filas de busca e decodificação são capazes de armazenar oito instruções simultâneas. No estágio de busca também é realizada a previsão de desvios. Para

(4)

isso, o processador possui uma tabela de 512 entradas, cada uma com dois bits que indicam se o desvio será tomado ou não. A cada finalização de uma instrução de desvio, a tabela é atualizada, e caso a previsão ocorra de forma errônea, todo o pipeline deve ser reiniciado e o contador de programa receberá o endereço correto para continuar sua execução.

Durante a decodificação, para cada instrução é inserida uma entrada na fila de reordenação. Isso implementa o algoritmo de Tomasulo [16] na arquitetura, permitindo a execução das instruções fora de ordem. A fila de reordenação garante que elas sejam finalizadas em ordem, mantendo o estado consistente do processador.

Após a decodificação as instruções vão para as filas de instruções, também chamadas de estações de reserva. O MIPS R10000 possui três dessas estações, sendo uma reservada para instruções que envolvem operações de inteiro, outra para operações de ponto flutuante e a terceira é destinada para operações de acesso à memória (Load e Store). Cada fila de instruções é capaz de armazenar 16 instruções. O despacho para as unidades funcionais ocorre a partir dessas filas. Nas filas de inteiro e ponto flutuante o despacho pode ser fora de ordem, sendo que a primeira instrução pronta para a execução é enviada à sua unidade de execução. Já na fila de endereços, utilizada

para operações de acesso à memória, o despacho é realizado em ordem, dessa forma esta fila deve ser uma FIFO, onde a primeira instrução a entrar é a primeira a ser enviada para execução.

O processador possui também cinco unidades funcionais. São duas para operações de ponto flutuante, uma para inteiro e outra para cálculo de endereços. Esta última unidade realiza operações de leitura e escrita na memória, tanto para operações de inteiro quanto para as de ponto flutuante.

Nas unidades de inteiro, a primeira, denominada ALU1, é utilizada para operações de adição, subtração, deslocamento, lógicas e conferência de previsões de desvio. Na segunda unidade, ALU2, além de operações de adição, subtração e operações lógicas, são realizadas operações de multiplicação e divisão de inteiros.

Nas unidades de ponto flutuante a execução é dividida em três estágios. Os dois primeiros ciclos são para execução da instrução e o terceiro é para envio dos resultados. Uma das unidades é utilizada para adição, subtração e comparação de ponto flutuante enquanto a outra unidade é utilizada para multiplicação e divisão. A figura 1 mostra a organização da arquitetura do MIPS R10000 com todos os seus componentes.

Figura 1. Organização da arquitetura do MIPS R10000

(5)

O MIPS R10000 apresenta ainda um conjunto de 128 registradores de propósito geral, sendo 64 para inteiro e 64 para ponto flutuante. Além disso, existem registradores especiais, como o SP que aponta para o topo da pilha, o PC que indica a próxima instrução a ser buscada e os registradores HI e LO, utilizados para armazenar resultados de operações de multiplicação e divisão.

A partir da arquitetura do MIPS R10000 foi desenvolvido o simulador R10k, visando facilitar a compreensão de como uma arquitetura superescalar funciona e introduzindo conceitos relacionados a essas arquiteturas, como previsão de desvios, dependência de dados, execução fora de ordem, chamadas de subrotinas e instruções de acesso à pilha.

4. R10k

O simulador proposto e desenvolvido foi denominado R10k, uma vez que é baseado no MIPS R10000. Ele introduz um subconjunto de 29

instruções do MIPS R10000 [17], entre desvios condicionais e incondicionais e operações de lógicas, aritméticas, transferência de dados e acesso à memória.

Chamadas de subrotinas foram implementadas através da instrução JAL (Jump and Link), sendo o retorno através da instrução JR (Jump to Register), na qual o registrador especificado deve ser o topo da pilha. Já o acesso à pilha foi implementado através de instruções LOAD e STORE. Para diferenciar de instruções de acesso à memória de dados deve-se especificar o SP, ponteiro de pilha (stack pointer) como registrador base. A figura 2 apresenta a interface do simulador.

O simulador apresenta todas as estruturas utilizadas pela arquitetura do MIPS R10000. A memória foi dividida de forma a facilitar a visualização. Assim, tem-se a memória de dados e a memória de instruções com 256 posições, sendo que vinte posições da memória de dados são reservadas para pilha.

Figura 2. Interface do simulador R10k

(6)

Também é possível editar a memória de dados para a inserção de valores iniciais. Porém, isso só é possível antes de iniciar uma simulação. Após o inicio da simulação, tanto a memória de dados, quanto a de instruções não podem ser mais alteradas.

Caso seja necessária alguma alteração deve-se reiniciar a execução do programa.

Assim como no processador real, um banco de 128 registradores de propósito geral também é disponibilizado no simulador R10k, sendo 64 de inteiro e 64 de ponto flutuante. Para facilitar a compreensão do funcionamento da arquitetura os valores dos registradores e da memória de dados são especificados em base decimal. Dessa forma, a conferência de resultados é facilitada.

Os valores dos registradores especiais PC, SP, HI e LO também podem ser observados na interface do programa. Esses valores são alterados apenas através de instruções. Além disso, os valores de SP e PC são marcados na pilha e memória de instruções, respectivamente, para facilitar o acompanhamento da execução do programa.

Dois flags também são apresentados, o Z, que mostra se o resultado de uma operação é igual a zero e o N, que mostra se o resultado de uma operação é negativo. Esses flags são utilizados principalmente em instruções de desvios condicionais, para verificar se o desvio foi previsto corretamente.

Durante a decodificação de uma instrução é verificado se existe dependência de dados verdadeira.

Essa dependência ocorre quando uma instrução está prestes a modificar o conteúdo de um registrador e outra instrução que vem em seguida tenta acessar esse mesmo registrador. Com isso, a segunda instrução deve esperar que a primeira seja executada para só então ter acesso ao novo valor do registrador.

O simulador R10k trata este problema, fazendo com que instruções que possuam dependências não sejam executadas até que a dependência seja resolvida.

Além disso, instruções dependentes são demarcadas para facilitar a visualização deste problema.

Se uma instrução que está na primeira posição da fila de ponto flutuante ou da fila de inteiros possui dependência, ela não pode ser enviada para sua unidade de execução. Dessa forma, é verificado nas filas se uma instrução em alguma posição subjacente está pronta para a execução. Se estiver, essa instrução poderá ser executada.

Para garantir essa execução fora de ordem, assim como o R10000, o simulador utiliza o algoritmo de Tomasulo, e para manter um estado estável uma fila de reordenação é utilizada. Dessa forma, uma instrução só poderá ser finalizada se ela está na primeira posição da fila de reordenação, ou se todas

as outras instruções anteriores a ela também estiverem prontas para a finalização.

Para verificar o programa sendo executado, o simulador R10k apresenta ainda as instruções já finalizadas. Assim, o aluno que acompanha uma execução com o simulador pode entender como estão sendo executadas as instruções. É possível ainda selecionar uma instrução para que ela seja rastreada.

Assim, todas as entradas da instrução serão selecionadas, de forma a facilitar o acompanhamento da instrução através das diferentes estruturas.

O simulador permite a execução passo a passo das instruções, de forma a acompanhar o caminho que as instruções seguem, ou a execução direta, onde apenas o resultado final é apresentado. Além disso, é possível acompanhar os ciclos de clock, conforme eles vão sendo executados.

Entre as principais vantagens em relação a outros simuladores tem-se a interface bem organizada, o que facilita a compreensão em torno das diferentes estruturas utilizadas nas arquiteturas superescalares.

O amplo conjunto de instruções suportado pelo simulador também apresenta benefícios, sendo possível explorar diferentes conceitos como pilha, chamadas de subrotinas e previsões de desvio em arquiteturas superescalares. Alguns desses conceitos não são explorados por outros simuladores.

Algumas facilidades não apresentadas em outros simuladores também foram incluídas no R10k, como a possibilidade de modificação do programa fonte no próprio simulador. Com isso, caso ocorra algum erro nas instruções é possível, facilmente, alterá-lo, não sendo necessário utilizar um programa auxiliar, como um editor de texto, para a correção do código. Fato que ocorre em alguns outros simuladores.

O analisador léxico do simulador também é bastante eficaz, retornando mensagens precisas caso exista algum erro no código escrito pelo usuário.

Sentiu-se a necessidade desse suporte, uma vez que alguns dos simuladores analisados não retornam mensagens e outros retornam mensagens vagas, dificultando a identificação do erro. Para o aluno iniciante percebe-se uma dificuldade de encontrar a falha no código quando isso ocorre.

Assim, foram introduzidas mensagens bem específicas. Alguns exemplos são sintetizados a seguir. Se uma instrução estiver em um formato incorreto, o simulador apresentará uma mensagem informando o formato adequado da instrução. Caso o usuário introduza uma instrução não existente ou não suportada, o R10k retornará uma mensagem informando que a determinada instrução é inválida, convidando o usuário a consultar a ajuda do programa.

(7)

O próprio arquivo de ajuda foi feito de forma a facilitar ainda mais a compreensão do funcionamento do simulador, uma vez que o simulador é voltado para alunos que ainda estão aprendendo conceitos de arquiteturas superescalares. Além do formato e função de cada instrução suportada e um manual de utilização e funcionamento do simulador, a ajuda introduz ainda fundamentos de arquiteturas superescalares e informações sobre o MIPS R10000.

Dessa forma, essas informações podem ser consultadas sempre que houver dúvidas sobre o comportamento das instruções especificadas pelo usuário através das estruturas do simulador.

5. Conclusões e Trabalhos Futuros

A utilização de simuladores é uma forma de facilitar a compreensão de determinados assuntos que podem ser difíceis de entender apenas com aulas teóricas. Entre esses assuntos têm-se as arquiteturas superescalares, arquiteturas que implementam o paralelismo em nível de instrução, executando diversas instruções em paralelo. Os conceitos em torno de arquiteturas superescalares são complexos, uma vez que envolvem diversas estruturas.

Neste contexto foi proposto o R10k, um simulador gráfico para arquiteturas superescalares. O simulador apresenta funcionalidades para a visualização de diferentes fluxos de programa, como instruções de desvio, chamadas de subrotinas e instruções de pilha, além de explorar conceitos das arquiteturas superescalares, como execução fora de ordem, execução paralela e dependência de dados.

Pretende-se com este simulador, dinamizar as aulas de arquitetura e organização de computadores, facilitando o entendimento dos conceitos apresentados em sala de aula. Com isso, será possível que alunos de disciplinas correlatas a área observem o comportamento de uma arquitetura superescalar, entendendo os pontos principais de seu funcionamento e as estruturas envolvidas durante a execução de uma instrução.

O próximo passo do projeto é a finalização de todo o conjunto de instruções do MIPS R10000 e a elaboração de um arquivo de saída com dados da simulação, como quantidade de desvios mal previstos, instruções executadas, entre outros fatores que podem ser analisados. Pretende-se também obter uma avaliação dos alunos introduzidos ao simulador, para obter dados concretos da aceitação por parte dos mesmos.

6. Referências

[1] Von Neumann, J. (1993) “First Draft of a Report on the EDVAC”, In: Annals of the History of Computing, Volume 15, Edition 4, pp. 27-75.

[2] Geser, S. (1989) “A Specification of the Intel 8085: A Case Study”, In: Springer Lectures Notes in Computer Science, pp. 347-401. New York, EUA.

[3] Ziller, R. (2000) Microprocessadores: Conceitos Importantes, EEL – UFSC, 2ª edição, Florianópolis, Brasil.

[4] Sridhar, Z. (2002) GNUSim8085, versão 1.3

[online]. Disponível em http://gnusim8085.sourceforge.net/index.php/Main_P

age . Acesso em julho/2007.

[5] Scott, M. (2006) WinMips64, version 1.5 [online]. School of Computing, Dublin City University, Ireland. Disponível em http://www.computing.dcu.ie/~mike/winmips64.html . Acesso em julho/2007.

[6] Spadaccini, A., et al (2007) EduMips64, versão 0.5 [online]. Disponível em http://www.edumips.org.

Acesso em julho/2007.

[7] Austin, T.M. e Burger, D. (1997) “The SimpleScalar Tool Set, Version 2.0”, University of Wisconsin-Madison Computer Sciences Department, Technical Report Nº 1342.

[8] Wolff, M. e Wills, L. (2000) “SATSim: A Superscalar Architecture Trace Simulator Using Interactive Animation”, In: WCAE: Workshop On Computer Architecture Education, Vancouver, Canada.

[9] Moreno, L., et al (2007) “Use of Constructivism and Collaborative Teaching in an IPL Processors Course”, In: IEEE Transactions on Education, Vol.

50, nº 2, pp. 101-111.

[10] MIPS R10000 Microprocessor User's Manual (1996) version 2.0, MIPS Technologies, Inc., Mountain View, EUA.

[11] Smith, J.E. e Sohi, G.S., “The Microarchitecture of Superscalar Processors”, In: Proceedings of the IEEE, Vol. 83, 1995, p.1609-1624.

[12] Diep, T.; Nelson, C. e Shen, J. (1995)

“Performance Evaluation of the PowerPC 620”, In:

Proceedings of the 22nd Annual International Symposium on Computer Architecture, pp. 163-175.

(8)

[13] Gwennap, L. (1995) “Intel's P6 Uses Decoupled Superscalar Design”, In: Microdesign Resources, Vol.6, N° 2.

[14] Patterson, D.A. e Hennessy, J.L. (1998) Organização e Projeto de Computadores: A Interface Hardware/Software, Morgan Kaufmann Publishers, São Francisco, EUA.

[15] Silhan, J. e Fuss, C. (1997) MIDAS: MIPS Demonstration and Simulation [online], version 0.6beta, Institute for Computer Techniques, Vienna Technical University. Disponível em http://prof.usb.ve/odcastro/cursos/ec3731/soft/midas.

zip. Acesso em julho/2007.

[16] Tomasulo, R. M. (1967) “An Efficient Algorithm for Exploiting Multiple Arithmetic Units”, In: IBM Journal, Edition 11, Volume 1, p. 25-33.

[17] Prince, C. (1995) “MIPS IV Instruction Set”, revision 3.2, MIPS Technologies, Inc., Mountain View, EUA.

Referências

Documentos relacionados

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

Entre as diversas novidades que apresentamos podemos destacar uma nova interface de usuário, com novos módulos de E/S e um arquitetura de processador atualizada com

Destarte, analisando o conceito de direito à intimidade, constata-se claramente que os dados genéticos, como informações diretamente relacionadas ao ser humano, são

A  Loja  deve  ter,  no  mínimo,  três  reuniões  mensais:  1  (uma)  de  Loja  Aberta  ‐  ritualística;  1  (uma)  de  Administração  ‐  para  assuntos 

–Enlace compartilhado entre dois ou mais dispositivos –Capacidade do enlace é dividida para as transmissões.. Classificação

–Nível inferior oferece serviços (o que o nível faz) para o nível imediatamente superior. –Uma interface especifica como acessar os serviços de

Trata-se de um estudo de abordagem descritiva e natureza qualitativa na modalidade de relato de experiência, desenvolvido a partir da vivência dos alunos de

Apesar do glicerol ter, também, efeito tóxico sobre a célula, ele tem sido o crioprotetor mais utilizado em protocolos de congelação do sêmen suíno (TONIOLLI