Um Exemplo de Nível ISA: o IJVM. Pilhas. Pilhas. O Modelo de Memória da IJVM. Pilhas de Operandos. Nível ISA

Documentos relacionados
Capítulo 4 Nível da microarquitetura

Microarquitetura IJVM. Datapath mic-1. Função dos Registradores. mic-1

TE Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores

Nível da Microarquitetura

1. Macroarquitetura 2. Emulador do MIC-1 3. O Nível ISA: IJVM. Bibliografia. Teresina Pilhas 3.2. Conjunto de Instruções IJVM

O Nível da Microarquitetura. Um Exemplo de Microarquitetura. Um Exemplo de Microarquitetura. Um Exemplo de Microarquitetura

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

Unidade de Controle. UC - Introdução

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Arquitecturas Alternativas. Java Virtual Machine

Infraestrutura de Hardware. Funcionamento de um Computador

Arquitetura de Computadores. Conjunto de Instruções

Procedimentos. Sistemas de Computação

Arquiteturas RISC e CISC. Adão de Melo Neto

Unidade de Controle. Sinais e temporização da busca de instrução. Prof. Eduardo Appel

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

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

ENDEREÇAMENTO DE INSTRUÇÕES. Adão de Melo Neto

ção de Computadores I

Estrutura e Funcionamento da CPU. Adriano Maranhão

Organização de computadores. Aula 05

Organização de Sistemas de Computadores

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

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Organização de Computadores

Compiladores Geração de Código

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

SSC0114 Arquitetura de Computadores

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

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

JVM Máquina Virtual Java

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

Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de

Instruções. Maicon A. Sartin

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

CONJUNTO DE INSTRUÇÕES

Unidade Central de Processamento 2. Registradores

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

Linguagem de Montagem do NeanderX

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

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 é

III.2 - Princípios de Arquitetura

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve:

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

Nível da Arquitetura do Conjunto das Instruções

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Linguagem de Maquina II. Visão Geral

SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA

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

Infraestrutura de Hardware. Instruindo um Computador

Nível da Microarquitetura

Arquitetura e Organização de Computadores

Registradores. Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores.

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

Organização de Computadores 1

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

Nível da Arquitetura do Conjunto das Instruções


Prof. Leonardo Augusto Casillo

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

Arquitetura de Microprocessadores

Arquitetura e Organização de Computadores

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

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Aumento de Desempenho. Aumentando a Velocidade de Execução. Mesclando o Laço de Interpretação. mic-2

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

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Faculdade de Computação

1) Considere a situação atual da memória do sistema computacional abaixo discriminada.

Disciplina: Arquitetura de Computadores

Otimização de Execução em Processadores Modernos. William Stallings - Computer Organization and Architecture, Chapter 12 [Trad. E.Simões / F.

SSC510 Arquitetura de Computadores 1ª AULA

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

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

14/3/2016. Prof. Evandro L. L. Rodrigues

2. A influência do tamanho da palavra

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

Compiladores Ambiente de Execução

Organização e Arquitetura de Computadores I

Arquitetura e Organização de computadores

Linguagem de Montagem Assembly

Prof. Adilson Gonzaga

INTRODUÇÃO À LINGUAGEM C

Antes de deixarmos o hardware (1) Nível da Arquitetura do Conjunto das Instruções

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Sistemas de Computação. Seção Notas. Endereçamento de Memória. Notas. Oitava Aula. Haroldo Gambini Santos. 3 de setembro de 2009.

X Y Z A B C D

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

Organização e Arquitetura de Computadores I

PIPELINE DE INSTRUÇÕES (estratégia e desempenho) Adão de Melo Neto

Aula 15: Ciclo de Execução e Introdução ao Pipeline

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

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

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

2. A influência do tamanho da palavra

Transcrição:

Ciência da Computação Arq. e Org. de Computadores Nível ISA Prof. Sergio Ribeiro Um Exemplo de Nível ISA: o IJVM Objetivo: Introduzir um nível ISA (Instruction Set Architecture), a ser interpretado pelo microprograma que esteja rodando na microarquitetura da figura apresentada anteriormente. Definição: Macroarquitetura (em contraste com microarquitetura) arquitetura do conjunto de instruções do nível ISA. 2 Pilhas Pilhas Pilhas de Locais Uma área de memória reservada para o armazenamento de variáveis de um procedimento. Registradores utilizados: LV (Local Variable) aponta para o endereço base das variáveis do procedimento corrente. SP (Stack Pointer) aponta para a palavra de mais alta ordem das variáveis do procedimento corrente. Aponta para o topo da pilha. As referências aos elementos da pilha são feitas por deslocamentos a partir do endereço de LV. Uso da pilha para armazenar variáveis. (a) Enquanto A está ativo. (b) Após A ter chamado B. (c) Após B ter chamado C. (d) Após C e B terem retornado e A ter chamado D. 3 4 Pilhas de Operandos Uma área de memória reservada para o armazenamento de operandos durante a avaliação de uma expressão. A figura ilustra o funcionamento da pilha de operandos para o cálculo da expressão: a1=a2+a3 Pool de constantes A arquitetura IJVM divide a memória nos seguintes espaços: Pilha 3 Operandos correntes Quadro 3 correntes Quadro 2 SP LV Área do Procedimento PC 5 CPP Quadro 1 6

1. O Pool de Constantes Não pode ser escrita pelos programas IJVM Contém constantes, strings e ponteiros para endereços de memória O registrador CPP (Constant Pool Pointer) aponta para a primeira palavra do pool de constantes 3. A Pilha de Operandos Fica imediatamente acima do quadro de variáveis O registrador SP armazena o endereço do topo da pilha muda de valor durante a execução do procedimento 2. O Quadro de Locais No início guarda valores dos parâmetros (argumentos) do procedimento chamado O registrador LV contém o endereço da primeira posição do quadro de variáveis 7 4. A Área do Procedimento Região de memória que armazena o programa O registrador PC (Program Counter) aponta para o endereço da instrução que deve ser buscada em seguida. 8 O Conjunto de Instruções É importante lembrar que: CPP, LV e SP apontam para palavras (4 bytes cada palavra). PC aponta para bytes (cada instrução ocupa 1 byte). O incremento de uma unidade no valor do PC, seguido de uma operação de leitura, resulta na busca do próximo byte. O incremento de uma unidade no valor do SP, seguido de uma operação de leitura, resulta na busca da próxima palavra. 9 10 O Conjunto de Instruções Compilação da Linguagem Quando o código for entregue ao compilador JAVA, ele deve produzir um programa na linguagem de montagem. O montador JAVA transforma o programa, em linguagem de montagem, para o programa binário. Operandos byte, const e varnum 1byte. Operandos disp, indice e deslocamento 2 bytes. 11 12

Compilação da Linguagem Compilação da Linguagem i =j + k; 1 ILOAD j // i = j + k Ox15 Ox02 if (i == 3) 2 ILOAD k Ox15 Ox03 k= 0; 3 IADD Ox60 else 4 ISTORE i Ox36 Ox01 j = j -1; 5 ILOAD i // se (i ==3) Ox15 Ox01 6 BIPUSH 3 Ox10 Ox03 7 IF_ICMPEQ L1 Ox9F OxOO OxOD 8 ILOAD j // j = j - 1 Ox15 Ox02 9 BIPUSH 1 Ox10 Ox01 10 ISUB Ox64 11 ISTORE j Ox36 Ox02 12 GOTO L2 OxA7 OxOO OxO7 13 L1: BIPUSH 0 // k = 0 Ox10 OxOO 14 ISTORE k Ox36 Ox03 15 L2: (a) (b) (c) (a) Fragmento de um programa JAVA. (b) O código correspondente na linguagem de montagem Java. (c) O programa em IJVM codificado em hexadecimal. 13 O código compilado pode ser interpretado como: primeiro, j e k são colocados no topo da pilha (1 e 2) depois j e k são somados e guardados na variável i (3 e 4) depois o valor de i e o valor 3 são colocados na pilha esses valores são comparados e, se iguais, a execução é desviada para L1 (7) se valores são diferentes, o valor da variável j e o valor 1 são colocados na pilha (8 e 9) o valor de j é subtraído de 1 e armazenado na variável j (10 e 11) um desvio para um local L2 é executado (12) 14 A Pilha de Operandos do Programa IJVM Exemplo de uma Implementação i=j+k; if(i==3) k=0; else j=j-1; Como deve ser o programa que roda na microarquitetura interpretando as instruções da macroarquitetura? 15 16 Microinstruções e Notação Implementação por meio do Mic-1 Uso de uma linguagem simbólica muito simples que descreve totalmente cada operação, sem entrar em detalhes de como todos os endereços possam vir a ser determinados. Uso de apenas uma linha para especificar todas as operações que ocorrem em um ciclo do clock. Uso de uma espécie de linguagem de montagem para microprogramas Micro Assembly Language MAL. 17 O microprograma contém apenas 112 microinstruções. Microinstruções consecutivas não estão, necessariamente, armazenadas em endereços consecutivos da memória de controle; Registradores: CPP, LV e SP armazenamento de ponteiros para o pool de constantes, para o quadro de variáveis e para o topo da pilha, respectivamente; PC guarda o endereço do próximo byte que contém o código de operação a ser buscado da memória; MBR (1 byte) onde são armazenados em seqüência todos os bytes das instruções a serem executadas; TOS guarda a palavra que está no topo da pilha; OPC pode ser usado para guardar o endereço do código de operação de uma instrução de desvio. 18

Implementação por Implementação por meio do Mic-1 Main1 ;goto (MBR) MBR armazena o código de operação; obtenção do próximo byte; decodificação da instrução nop1 goto Main1 Não faz nada iadd1 iadd2 iadd3 pop1 pop2 pop3 H=TOS MDR=TOS=MDR+H;wr;goto Main1 TOS=MDR;goto Main1 Leitura do valor a ser colocado no topo da pilha H=topo da pilha Soma das duas palavras do topo da pilha; resultado armazenado no topo Leitura do valor a ser colocado no topo da pilha Espera pela leitura do novo valor de TOS Cópia em TOS do novo valor 19 Exemplo Execução da instrução IADD. Vamos supor que o código de operação da instrução (0x60) esteja armazenado no MBR. Operações do loop principal: 1. Incremento do PC, fazendo com que o mesmo aponte para o primeiro byte situado depois do código de operação; 2. Início da busca do próximo byte e armazenamento desse byte no MBR; 3. Desvio para o endereço que estava armazenado no MBR no início do Main1. Esse endereço é igual ao valor numérico do código de operação da instrução que está sendo executada, que foi colocado lá pela microinstrução anterior. 20 Implementação por Implementação por bipush1 bipush2 bipush3 ifeq1 ifeq2 ifeq3 ifeq4 SP=MAR=SP+1 MDR=TOS=MBR;wr;goto Main1 OPC=TOS TOS=MDR Z=OPC;if(Z) goto T;else goto F MBR=byte a ser colocado na pilha Incremento do PC; busca do próximo código de operação Estende o sinal da constante e coloca na pilha Leitura do valor a ser colocado no topo da pilha Armazenamento temporário do valor de TOS em OPC Coloca o novo valor do topo da pilha em TOS Desvio condicional considerando o bit Z 21 T OPC=PC-1;fetch goto goto2 Necessário para tratar o endereço alvo F F2 F3 PC=PC+1 goto Main1 Pula o primeiro byte do deslocamento PC agora aponta para o novo código de operação Espera pela leitura do código de operação 22 Implementação por goto2 goto3 goto4 goto5 goto6 H=MBR<<8 H=MBRU OR H PC=OPC+H;fetch goto Main1 MBR=primeiro byte do deslocamento; busca do segundo byte Deslocamento e armazenamento em H do primeiro byte considerando o sinal H=deslocamento de 16 bits do desvio Soma do deslocamento ao valor em OPC Aguarda a busca do próximo código de operação Um projeto com busca antecipada: o Mic-2 23 24

Um projeto Pipeline: o Mic-3 Um Pipeline de Sete Estágios: o Mic-4 25 26