Simulador de Processador de Computador com propósito didático

Documentos relacionados
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Disciplina: Arquitetura de Computadores

SSC510 Arquitetura de Computadores 1ª AULA

Solução Lista de Exercícios Processadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Organização e Arquitetura de Computadores INTRODUÇÃO

Arquitetura de Computadores Aula 10 - Processadores

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Processador. Processador

2. A influência do tamanho da palavra

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

2. A influência do tamanho da palavra

Introdução à Computação: Arquitetura von Neumann

ção de Computadores I

Infraestrutura de Hardware. Funcionamento de um Computador

SSC0112 Organização de Computadores Digitais I

Arquitetura de Computadores. Ciclo de Busca e Execução

Organização e Arquitetura de Computadores I

4. Modelo de Programação do DLX Introdução

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

COMPUTADOR. Adão de Melo Neto

NEANDERWIN. Algumas características do processador Neander são:

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

MICROPROCESSADORES. Aula 10

Conceitos Básicos Processador

CONJUNTO DE INSTRUÇÕES

Departamento de Sistemas de Computação - SSC. Sistemas Digitais. 2 o Semestre Projeto CPU. Data da apresentação: 26/27 de outubro

III.2 - Princípios de Arquitetura

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Arquitetura e Organização de Computadores

Linguagem de Montagem do NeanderX

Esta pseudomáquina foi criada em homenagem ao homem de Neandertal, o antecessor do homo sapiens.

Organização de Sistemas de Computadores

Introdução à Computação: Máquinas Multiníveis

COMPUTADOR 2. Professor Adão de Melo Neto

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Processador: Conceitos Básicos e Componentes

18/10/2010. Unidade de Controle Controle. UC Microprogramada

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

ORGANIZAÇÃO DE COMPUTADORES

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

ORGANIZAÇÃO DE COMPUTADORES

Departamento de Sistemas de Computação - SSC. SSC-110 Elementos de lógica digital I SSC-111 Laboratório de elementos de lógica digital I.

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização

Instruções. Maicon A. Sartin

Unidade Central de Processamento UCP (CPU)

Sistemas Operacionais

Elementos Físicos do SC e a Classificação de Arquiteturas

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Unidade II. Organização de Computadores. Prof. Renato Lellis

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa

Algoritmos Computacionais

Primeiro Trabalho de POO Emulador para o Processador Winter

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Prática 01: Conceitos Iniciais

INTRODUÇÃO A ARQUITETURA DE COMPUTADORES FELIPE G. TORRES

Aula 12: Memória: Barramentos e Registradores

Organização de Computadores Aula 05

INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA

MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador

Instruções de Máquina

Organização de Computadores

Organização Básica de Computadores (Parte I)

Unidade de Controle. UC - Introdução

Histórico de desenvolvimento de computadores Prof. Luís Caldas Aula 02 Processador de uso geral

Programação de Computadores I

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III

Aula 14 Funcionamento de Processadores (Visão específica)

Arquitetura e Organização de Computadores

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

AGT0001 Algoritmos Aula 01 O Computador

Capítulo 3 Organização Interna de um Computador

FUNCIONAMENTO DO COMPUTADOR. Adão de Melo Neto

William Stallings Organização de computadores digitais. Capítulo 14 Operação da Unidade de Controle

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 7

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Estrutura Básica de um Computador

ORGANIZAÇÃO DE COMPUTADORES

Organização e Arquitetura de Computadores I

INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Prof. Leonardo Augusto Casillo

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

Arquitetura e Organização de Computadores

AULA 01: APRESENTAÇÃO

MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador

18/08/2015. Capítulo 2: Manipulação de dados. Arquitetura de Computadores. Capítulo 2: Manipulação de Dados

UCP: Caminho de Dados (Parte II)

Universidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação. Arquitetura de Computadores I. Organização Básica do Computador

Arquitetura e organização de computadores

Organização e Arquitetura de Computadores I

INTRODUÇÃO AOS SISTEMAS LÓGICOS INTRODUÇÃO

Sistemas Operacionais. Visão Geral

Transcrição:

Simulador de Processador de Computador com propósito didático Galileu Santos de Jesus, Edward David Moreno, Marco Tulio Chella Departamento de Computação - Universidade Federal de Sergipe São Cristóvão, Brasil {galilasmb, edwdavid}@gmail.com, chella@ufs.br, Abstract. Project carried out in order to simulate a computer processor didactically. Using the functions and their interconnections as well as the implementation of a software in the Java programming language. Simulating through creation of memory, PC, registers, ALU, AC, IR, decoder and other components. Running through instruction, denominated words, similar to some of the programming language Assembler, with reference to the simulator Neander. Resumo. Projeto realizado com o objetivo de simular um processador de computador de forma didática. Utilizando as funções e suas interligações, bem como a implementação de um software na linguagem de programação Java. Simulando através de criação de memória, PC, registradores, ULA, AC, IR, Decodificador e outros componentes. Sendo executadas através de instruções, denominadas de palavra, semelhantes a algumas da linguagem de programação Assembler, tendo como referência o simulador Neander. 1. Introdução Um processador é o cérebro de todo computador, é o responsável pela execução de todas as instruções da máquina, é a parte mais importante, que faz o controle de todas as outras partes e a execução de instruções, como operações matemáticas, comunicação com dispositivos de saída ou entrada, armazenamento de dados e outros. a simulação é um processo de projetar um modelo computacional de um sistema real e conduzir experimentos com este modelo com o propósito de entender seu comportamento e/ou avaliar estratégias para sua operação Pegden, C. D.; Shannon, R.E. e Sadowski, R. P. (1990) Introduction to Simulation Using SIMAN, McGraw Hill, NY, 2 ed. Este trabalho apresenta a implementação de um simulador de processador didático, onde o usuário digita o programa em Assembler, executa e visualiza todos os passos que compreendem a execução do processador, auxiliando muito no aprendizado dos alunos. Funciona basicamente no envio de mensagens, denominadas de palavra, que armazena instruções e dados, enviados e conectados a cada dispositivo por meio de barramentos, armazenando na memória e/ou executando as tarefas passadas. Esta palavra muitas vezes pode variar de acordo com o processador. 326

2. Trabalhos Relacionados Existem alguns trabalhos que simulam o funcionamento de processador, porém, não são muitos didáticos. Alguns como Processador LC-3 [1], NEANDER [2] [3], sendo que o último é usado como base neste projeto, entre outros. 3. Desenvolvimento 3.1. Componentes correspondentes ao código em Java, representados na Figura 3 Memória: JTable Memoria; Decodificador: método chamado: decodificartabela(){} Codificador: método chamado: codificar(int c){} Unidade Lógica Aritmética: método: BotaoExecutarActionPerformed(ActionEvent evt){} EAX: variável: long EAX; EBX: variável: long EBX; PC: variável: long PC; AC: variável: long AC; Barramentos: É a chamada dos métodos para execução dos passos, correspondentes a cada ação gerada. No caso do barramento de dados é utilizado uma variável do tipo int barramentodedados; Fazendo assim a movimentação da palavra, separando os campos de acordo com o especificado. 3.2. Sintaxe Foram implementadas 16 funções, a Tabela 1 mostra algumas delas, e como utilizá-las, as restantes estão presentes na janela Ajuda, da Figura 4 (2). Função Sintaxe Descrição MOV MOV 5 10 Move o valor do campo Origem (5) para a posição de memória indicada pelo campo Destino (10), onde quando destino é 63 refere-se a AC, 62 a EAX e 61 a EBX. Também o bit reservado para números negativos dos seis bits do meio. ADD ADD 10 11 Soma os valores das posições de memória indicadas pelos campos Origem (10) e Destino (11). O resultado é colocado na posição de memória Destino. SUB SUB 10 11 Subtrai do valor da posição de memória indicada pelo campo Destino (11) o valor da posição de memória indicada pelo campo Origem (10). O MUL MUL 10 11 Multiplica os valores das posições de memória indicadas pelos campos Origem (10) e Destino (11). O resultado é colocado na posição de memória Destino. 327

DIV DIV 10 11 Divide o valor da posição de memória indicada pelo campo Destino (11) pelo valor da posição de memória indicada pelo campo Origem (10). O OR OR 10 11 Executa a operação lógica OR bit-a-bit nos valores das posições de memória indicadas pelos campos Origem (10) e Destino (11). O AND AND 10 11 Executa a operação lógica AND bit-a-bit nos valores das posições de memória indicadas pelos campos Origem (10) e Destino (11). O JUMP JUMP 10 Atribui ao PC o valor indicado pelo campo Destino. JUMPZ JUMPZ 10 Atribui ao PC o valor indicado pelo campo Destino (10), se o valor de AC - acumulador - for zero. JUMPN JUMPN 10 Atribui ao PC o valor indicado pelo campo Destino (10), se o valor de AC - acumulador - for negativo. HALT HALT Para a execução do programa. 3.3. Funcionamento Tabela 1. Representação de algumas funções. O processador foi implementado na linguagem de programação Java, possuindo interface gráfica para uma melhor aplicação e entendimento do usuário. Possui especificamente cinco janelas. A janela Principal, Ajuda, Digitar, Diagrama e Decodificar Memória. Para entender o funcionamento interno, é necessário entender como funciona a palavra. Esta foi usada com a metade de 4 bytes ou seja, 16 bits, sendo os 4 bits mais significativo destinado a instrução e o restante divido em duas partes, cada uma com 6 bits, sendo reservado para os dados. Como mostram as Figura 1 e Figura 2. Figura 1. Tamanho da Palavra. Instrução de 4 bits, possuindo assim até 16 instruções (2 4 ). Dados possuem 12 bits Dado1 + Dado2. Figura 2. Divisão da Palavra. A palavra é enviada para a memória, contendo a instrução e os dados, de acordo com os campos da Figura 2. Indo em direção da Unidade de controle, é decodificada e executada assim que o PC Contador de Programa - indicar. 328

O diagrama abaixo (Figura 3) mostra toda a representação do processador, onde há a interligação dos componentes para funcionamento do mesmo. Figura 3. Diagrama de blocos do processador. A Memória contém um espaço de endereçamento de 16 bits 4 bytes, com 64 posições. Há dois registradores, chamados de EAX e EBX, são os responsáveis por armazenamento de dados. E o AC acumulador, responsável por armazenar a execução da última instrução. A unidade de controle é a responsável por receber os dados e executar as ações, advindas da memória, que são decodificadas ou codificadas. O PC contador de programa é o responsável por manter a ordem de execução dos passos. A unidade lógica aritmética é a responsável por todas as operações que ocorrem dentro do processador, como por exemplos, operações matemáticas. A memória é acessada de acordo com seu valor, onde o mesmo possui uma variância de 1 a 64, de acordo com o tamanho da memória. A palavra é o elemento principal do funcionamento do processador, é importante saber como cada posição é interpretada. Primeiramente é necessário entender o conceito de deslocamento de bits, e operação lógica. O deslocamento é simples, é feito a partir do operador >> ou <<, representando respectivamente deslocamento pra direito e pra esquerda. Feito em Java da seguinte forma: numero >> 12; Representa um deslocamento de 12 posições para direita, esta é para capturar o valor referente à operação a ser executada. Antes disso é feito um e condicional, para capturar somente o resultado que está nos quatros bits mais significativo, o mesmo acontece com o restante da palavra, onde é feita pelo código abaixo: inst = inst >>12; /* Atribui a variável inst o valor contido nos quatro bits mais significativo */ dado1 = (dado1 & 4032)>>6; /*atribui a variável dado1, os 6 bits do meio.*/ dado2 = (dado2 & 63); /* atribui a variável dado2 os 6 bits iniciais. Esquerda pra direita. */ O valor 4032 10 = 0000111111000000 2 correspondente da linha acima, corresponde ao e bit a bit do valor contigo na variável, e >> desloca 6 posições pra direita, restando assim o valor que está 329

daposição 5 a 11. O processo similar acontece para o dado2, a diferença é que é 63 10 = 0000000000111111 2 correspondente aos 6 primeiros bits. Uma observação para os seis bits do meio é que é reservado um dos bits como identificador de números negativos sinal, ficando assim representados por cinco bits os restantes dos números. Desta forma é separado cada campo pertencente a uma variável e atribuído a novas três, sendo o campo instrução, e dois para dados, onde são analisados e executados. Lembrando que os comandos que não possuem os dois campos são tratados de formas diferentes, como o HALT, que não possui as duas opções, ou seja, ficam inicializadas como tudo zero. Este é o principal enfoque do simulador, o restante é analisar o conteúdo obtido e assim realizar as operações de acordo com as mesmas. 4. Resultados Após a implementação em Java, vem à execução. A janela principal, como mostra a Figura 4 (1), contém todos os botões que permite a simulação através do botão Executar, todas as funções, localizada no lado direito da janela, e as funções abaixo, como os que abrem outras janelas: Digitar, Ajuda, Diagrama e Decodificar Memória. A figura 4 mostra todas as janelas em execução, todos os componentes em interação, citados posteriormente. Realizando testes digitando na janela Digitar, executando o código digitado em todo o simulador, seguindo os passos e suas respectivas representações. Figura 4. Janelas de todos os componentes do simulador em execução. Janela Ajuda, traz uma breve explicação sobre o funcionamento do programa, apresentando ao usuário todo o simulador e o uso de cada função. Como mostra a Figura 4 (2). 330

Janela Memória Decodificada permite que o usuário visualize as instruções que estão na memória, e mostrando os passos que estão sendo executados, através da seta <-. Como mostra a Figura 4 (3). A janela Interpretador permite que o usuário digite todas as funções que serão simuladas, possuindo um botão de mesmo nome, onde converte tudo o que foi digitado em instruções que serão simuladas, seguindo os requisitos. Como mostra a Figura 4 (4). Há também a opção de clicar, onde o usuário digita no campo Origem e Destino, sendo respectivamente representados pelo Dado1e Dado2, em seguida na função que deseja executar. Como mostra a Figura 4. No campo Origem possui o valor 5 e o Destino o valor 11, em seguida o botão MOV foi pressionado, representando a seguinte palavra: MOV 5 11, onde irá mover o valor 5 para a posição de memória 11, representado na memória por uma palavra do tipo inteiro, que é codificado e mostrado na janela Memória Decodificada, como mostra a Figura 4 (5). A execução do programa é feita a partir do carregamento das instruções na memória e ao clicar no botão Executar, é feita as respectivas ações. Como mostra a Figura 4 (6) mostra a execução passo a passo da realização de algumas instruções representadas no diagrama, sendo o mesmo interativo, mudando ao passo que as instruções são alteradas. 5. Conclusão Foram implementadas 16 funções como citadas, bem como toda a interligação do diagrama, utilizando a linguagem de programação Java, com interface gráfica, auxiliando e facilitando o aprendizado dos alunos que assim utilizem deste projeto, bem como dos professores usando-o em sala de aula como conteúdo didático. Como trabalhos futuros teremos a adição da memória cache e inclusão de mais núcleos simulando assim o paralelismo existente atualmente. Referências [1] Introduction to Computing Systems: From Bits and Gates to C and Beyond, 2/e. Disponível em: <http://highered.mcgraw-hill.com/sites/0072467509/>. Agosto-Outubro de 2013. [2]Simulador Neander. Disponível em: <http://inf.ufrgs.br/~vbuaraujo/sw/neander/neander.html>. Agosto-Outubro de 2013. [3] Neanderwin. Disponível em: <http://www.dcc.ufrj.br/~gabriel/neander.php>. Agosto- Outubro de 2013. [4] Simulador do LC-3 do T&D-Bench, Workshop sobre Educação em Arquitetura de Computadores - WEAC 2008. [5] Neander, passo a passo. <ftp://ftp.inf.ufrgs.br/pub/inf107/>. Agosto-Outubro de 2013. 331