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

Documentos relacionados
CONJUNTO DE INSTRUÇÕES

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

Figura 8 Diagrama de Compilação

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

Instruções. Maicon A. Sartin

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

Sistemas Processadores e Periféricos Aula 2 - Revisão

Organização e Arquitetura de Computadores I

Sistemas de Computação. Instruções de Linguagem de Máquina

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

2. A influência do tamanho da palavra

SSC510 Arquitetura de Computadores 1ª AULA

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

Organização e Arquitetura de Computadores I

Aula 19: UCP: Construindo um Caminho de Dados (Parte III)

SSC0114 Arquitetura de Computadores

Disciplina: Arquitetura de Computadores

2. A influência do tamanho da palavra

Guia Rápido MIPS. Tipos de Dados e Formatações

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Arquitetura e Organização de Computadores

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

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

Especificação do Projeto de Processador RISC

Unidade Central de Processamento 2. Registradores

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

Linguagem de Montagem do NeanderX

Organização de Computadores

Solução Lista de Exercícios Processadores

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

III.2 - Princípios de Arquitetura

William Stallings Arquitetura e Organização de Computadores 8 a Edição

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

Relembrando desempenho...

Infraestrutura de Hardware. Funcionamento de um Computador

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

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

Unidade de Controle. UC - Introdução

Arquitetura e Organização de Computadores

ção de Computadores I

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

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 é

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

UCP: Construindo um Caminho de Dados (Parte I)

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Arquitetura de Computadores. Conjunto de Instruções

Implementação da UCP. Construção do caminho de dados Controle Implementação monociclo. Organização de Computadores

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Infraestrutura de Hardware. Instruindo um Computador

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

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

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

Arquitetura e Organização de Computadores

Prof. Adilson Gonzaga

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

ção de Computadores II

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Tiago Alves de Oliviera

Arquitetura e Organização de Computadores

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

Neander - características

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

CPU Implementação. Multiciclo. Prof. Carlos Bazilio

Prof. Leonardo Augusto Casillo

Aula 16: UCP: Conceitos Básicos e Componentes

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

Processador. Processador

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Organização e Arquitetura de Computadores I

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

Fundamentos de Arquiteturas de Computadores Turma :A1 Lista 3 Profa.: Simone Martins

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

SSC0112 Organização de Computadores Digitais I

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009

Conjunto de Instruções. Alisson Brito

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Figura 1. Datapath do MIPS Superescalar Especulativo CES SE

UCP: Caminho de Dados (Parte II)

Conjunto de Instruções (ISA) I

As 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE

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

Problemas com Entrada e Saída

Transcrição:

4. Modelo de Programação do DLX Quero que o matemático Beremiz Samir nos conte uma lenda, ou uma simples fábula, na qual apareça uma divisão de 3 por 3 indicada, mas não efetuada, e outra de 3 por 2, indicada e efetuada sem deixar resto. Malba Tahan O Homem que Calculava 4.1. Introdução O modelo de programação que estaremos estudando é baseado no processador didático DLX, definido por Henessy e Patterson no seu livro Computer Architecture: A Quantitative Approach (Morgan Kaufmann, 1991). Usaremos um simulador com essa arquitetura para facilitar a compreensão do funcionamento de um processador. O modelo de programação oferece um conjunto de registradores e instruções que são visíveis ao programador ou compilador. Ou seja, podem ser utilizados para a execução de um programa. E- ventualmente o processador terá outros registradores que não são visíveis ao programador que foram utilizados para implementar o modelo de programação. O modelo de programação da arquitetura que estaremos utilizando em nosso estudo oferece os seguintes registradores visíveis ao programador: 32 registradores de uso geral, nomeados de R0 a R31, todos com 32 bits. Esses registradores são referenciados explicitamente pelas instruções que, normalmente, possuem dois registradores como fonte e um registrador como destino das operações. O registrador R0 é um registrador especial que sempre retorna o valor 0. Um registrador chamado apontador de instruções ou contador de programa (PC), também de 32 bits, que é referenciado implicitamente pelas instruções de desvio, chamada e retorno de procedimento. O PC contém o endereço da próxima instrução a ser buscada na memória para execução. Existe um outro registrador, que não é visível ao programador, chamado de registrador de instrução (IR), que armazena a instrução que foi lida da memória para o processador enquanto está sendo executada. Esse registrador é da mesma largura das instruções do processador, ou seja, 32 bits.

BANCO DE REGISTRADORES 0 SP FP RA R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31 PC Figura 6 Modelo de Programação

Durante o seu funcionamento o processador executa permanentemente o seguinte ciclo de operações, denominado de ciclo de execução das instruções: 1. Busca a próxima instrução que está localizada na memória para o registrador de instrução; 2. Atualiza o apontador de instruções (PC) para que ele aponte para a próxima instrução a ser lida da memória e executada. 3. Determina o tipo de instrução e o número de operandos; 4. Busca os operandos, se houver, para os registradores no processador; 5. Executa a instrução; 6. Armazena os resultados; 7. Volta ao passo 1 para executar a próxima instrução. Este ciclo só será interrompido quando o processador receber sinais elétricos especiais para, por exemplo, reiniciar o seu funcionamento, parar totalmente a atividade, entrar em modo de economia de energia ou interromper o seu funcionamento para atender a um pedido da unidade de entrada e saída. A seguir mostramos o diagrama em blocos de uma possível implementação do DLX. A memória principal, por motivos didáticos, foi dividida em memória de instruções e memória de dados. No diagrama, os blocos com o nome MUX servem para selecionar entre duas fontes de dados, de acordo com o comando da unidade de controle. O bloco ADD é um somador binário e o bloco ALU é a unidade aritmética e lógica. Figura 7 Diagrama em Blocos do DLX Como já dissemos, em nosso modelo todas as instruções possuem 32 bits e nelas estão codificadas a operação que a UAL deve executar e todas as informações adicionais, tais como os registradores fonte e destino das operações aritméticas.

Existem diversos tipos de instruções que podem ser executadas pelo processador DLX, dentre eles destacamos: Operações aritméticas (soma, subtração, divisão, multiplicação, etc). Operações lógicas (complemento, deslocamento, etc.). Operações de transferência de dados (entre registradores, do registrador para a memória, da memória para o registrador). Operações de transferência de controle (desvio incondicional e condicional, chamada de procedimento, etc). Nas instruções do DLX podem estar definidos até 3 operandos, sendo dois de leitura e um de escrita. Os operandos de leitura podem ser dois registradores, ou um registrador e um dado imediato, ou seja, uma constante embutida no próprio código da instrução. O operando de escrita ou é um registrador ou uma posição de memória cujo endereço está definido em um registrador, e- ventualmente este valor é somado a uma constante definida na própria instrução. 4.2. Tipos de Instruções Em uma dada arquitetura existem diversos tipos de instruções em uma linguagem de montagem que podem ser utilizadas pelo compilador para traduzir as sentenças em linguagens de alto nível. As instruções de uma arquitetura genérica podem ser classificadas em: Instruções Aritméticas e Lógicas (Inteiras) Instruções de Transferência de Dados Instruções de Transferência de Controle Instruções de Ponto Flutuante A seguir classificamos as principais instruções do DLX e mostramos alguns exemplos de suas instruções em linguagem de montagem: a) Instruções Aritméticas e Lógicas (Inteiras) Essas instruções realizam operações aritméticas e lógicas entre dois registradores ou entre um registrador e um operando imediato, guardando o resultado em um outro registrador. nop ; no operation and R1, R2, R3 ; R! = R2 and R3 sll R3, R4, R5 ; R3 = R4 << R5 (desloca R4 de R5 bits p/ esquerda) addi R15, R0, #25 ; R15 = 25 sub R6, R7, R8 ; R6 = R7 R8 srli R9, R10, #5 ; R9 = R10 >> 5 (desloca R10 de 5 bits p/ direita) sge R1, R4, R6 ; Se R4 >= R6 então R1 = 1 senão R5 = 0 slti R5, R8, #3 ; Se R8 < 3 então R5 = 1 senão R5 = 0 ; A instrução de comparação (scc) pode ser: ; seq ( = ), sne (!= ), slt ( < ), sgt ( > ), ; sle ( <= ), sge ( >= ) b) Transferência de dados Essas instruções realizam operações de transferência do conteúdo de um registrador para a memória e vice-versa. A quantidade de bytes transferidos é definida pelo tipo de instrução, as instruções lb e sb transferem apenas um byte, as instruções lw e sw transferem 4 bytes de cada vez.

lw R5, (endereço) ; R5 = memória[endereço] (4 bytes) lb R9, (endereço) ; R9 = memória[endereço] (1 byte) sw (endereço), R6 ; memória[endereço] = R6 (4 bytes) sb (endereço), R8 ; memória[endereço] = R8 (byte) O endereço de memória a ser lido ou escrito é obtido pela soma do conteúdo de um registrador com um dado imediato: lw R5, 0(R16) ; R5 = memória [R16+0] lb R5, 150(R0) ; R9 = memória [150] sw 200(R0), R6 ; memória[200] = R6 sb 8(R16), R8 ; memória[r16+8] = R8 lw R8, A(R0) ; R8 = memória [A] (A é um rótulo que define ; um endereço de memória.) c) Transferência de controle As instruções desse tipo alteram o valor do apontador de instruções (PC), ou seja, a próxima instrução a ser buscada vai estar no endereço especificado na instrução de desvio e não, com seria esperado, a instrução seguinte. Desvios Incondicionais Sempre alteram o valor do apontador de instruções. j 1000 ; PC = 1000 Desvios Condicionais Só alteram o valor do apontador de instruções se a condição especificada for verdadeira. bnez R1, 2000 beqz R8, 3000 ; se R1!= 0 então PC = 2000, senão PC = PC+4 ; se R8 == 0 então PC = 3000, senão PC = PC+4 Chamada e Retorno de Procedimento A chamada de procedimento é um tipo especial de instrução de desvio incondicional que salva o endereço da instrução seguinte em um registrador antes do desvio ser executado. O retorno de procedimento pega o valor salvo no registrador e atribui ao PC. Veremos esta instrução com mais detalhes na seção 5.2.3. jal 5000 ; R31 = PC + 4 e PC = 5000 (chamada de procedimento) jr R31 ; PC = R31 (retorno de procedimento) Chamadas ao Sistema São instruções especiais que desviam para rotinas dentro do núcleo do sistema o- peracional, mudando antes o estado do processador de normal para privilegiado. Esta instrução será estudada com mais detalhes na seção 5.2.5.

trap #imm trap #0 trap #5 ; desvia para o sistema ; operacional para executar ; o serviço especificado por #imm d) Ponto Flutuante São instruções que manipulam valores reais, normalmente no formato IEEE 754, em precisão simples (32 bits) ou precisão dupla (64 bits). Existe um banco de registradores adicional para armazenar estes tipos de operando. Não estaremos abordando em nosso estudo as instruções de ponto flutuante, muito embora façam parte da definição do DLX.