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

Documentos relacionados
Capítulo 4 Nível da microarquitetura

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

TE Arquitetura e Organização de Computadores

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

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

Nível da Microarquitetura

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

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

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

Arquiteturas de Computadores

DataPath II Tomando o controle!

Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática

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

Processamento e Linguagem de Máquina. O processador Programação Assembler (Linguagem de Máquina)

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

Arquitecturas Alternativas. Java Virtual Machine

lw, sw add, sub, and, or, slt beq, j

JVM Máquina Virtual Java

Infra-estrutura de Hardware

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Relembrando desempenho...

Organização e Projeto de Computadores

Relembrando desempenho...

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

SSC0114 Arquitetura de Computadores

4-1. Parte2: A Arquitetura do Conjunto de Instruções

Organização de Computadores 1

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

O Processador: Via de Dados e Controle (Parte C: microprogramação)

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

Sistemas Microprocessados

SSC0611 Arquitetura de Computadores

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Organização e Arquitetura de Computadores I

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

µinstruções µoperações representadas em binário podem ser compactadas numa só µinstrução exemplo (as 3 últimas µinstruções anteriores):

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

Infraestrutura de Hardware. Instruindo um Computador

O Processador: Via de Dados e Controle

Infra-estrutura de Hardware

Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.)

Arquitectura de Computadores II. Máquinas Virtuais

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

Organização ou MicroArquitectura

Unidade Central de Processamento UCP (CPU)

PSI3441 Arquitetura de Sistemas Embarcados

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

SSC510 Arquitetura de Computadores 1ª AULA

Projetos Digitais e Microprocessadores 1 o Semestre de 2005 Prof. Luis Allan Künzle Prova Final 05/07/2005 Prova sem consulta.

Arquitectura de Computadores MEEC (2014/15 2º Sem.)

Organização de Computadores

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

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

Arquitectura de Computadores

SSC0112 Organização de Computadores Digitais I

Parte Operativa x Controle Aula 12. Prof. Jadir Eduardo Souza Lucas Universidade Federal do Espírito Santo Departamento de Informática

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 de Computadores

MIPS ISA (Instruction Set Architecture)

Arquiteturas de Computadores

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

Organização e Arquitetura de Computadores I

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

ção de Computadores II

Organização de Computadores

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

A Arquitetura: conjunto de instruções

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

Instruções de Máquina

09 Unidade de controlo. v0.1

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Universidade de São Paulo

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

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

Especificação do Projeto de Processador RISC

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Arquitectura de Computadores

PSI3441 Arquitetura de Sistemas Embarcados

Projeto de Processadores Programáveis

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

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

Organização de Sistemas de Computadores

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

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

ORGANIZAÇÃO DE COMPUTADORES O PROCESSADOR E SEUS COMPONENTES

ção de Computadores I

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

Processador. Processador

O Porcessador: Via de Dados e Controle (Parte B: multiciclo) 1998 Morgan Kaufmann Publishers Ch5B 1

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

Infraestrutura de Hardware. Funcionamento de um Computador

UCP 8051 (parte 02) Professor Adão de Melo Neto

Transcrição:

Microarquitetura IJVM mic-1 Datapath mic-1 Este é mais um exemplo de datapath para microarquitetura IJVM desenvolvida por Andew Tanenbaum Parte da CPU que contém a ALU, suas entradas e saídas 2 Função dos Registradores MAR - Endereço de memória MDR - Dados da memória PC - Contador de programa MBR - Byte de memória SP - Ponteiro para o topo da pilha de variáveis locais LV - Ponteiro para base da pilha CPP - Ponteiro para conjunto de constantes H - Resultado da ULA TOS - Contém o valor do ponteiro apontado por SP OPC - Registrador temporário 3

Sinais e Funções da ALU 6 linhas de controle F 0 e F 1 determinam as operações da ALU ENA e ENB para habilitação das entradas INVA para inverter a entrada esquerda INC para forçar um carry no bit de baixa ordem, efetivamente adicionando 1 ao resultado F0 F1 ENA ENB INVA INC Função 0 1 1 0 0 0 A 0 1 0 1 0 0 B 0 1 1 0 1 0 A 1 0 1 1 0 0 B 1 1 1 1 0 0 A + B 1 1 1 1 0 1 A + B + 1 1 1 1 0 0 1 A + 1 1 1 0 1 0 1 B + 1 1 1 1 1 1 1 B - A 1 1 0 1 1 0 B - 1 1 1 1 0 1 1 -A 0 0 1 1 0 0 A and B 0 1 1 1 0 0 A or B 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0-1 4 Temporização do Datapath 5 Memória A máquina exemplo possui duas formas de se comunicar com a memória Porta de memória endereçada por palavra de 32-bits Controlada por dois registradores MAR (Memory Address Register) MDR (Memory Data Register) Porta de memória endereçada por byte 8-bits Controlada por um registrador PC, o qual lê 1 byte nos 8 bits de mais baixa ordem de MBR 6

Operações com Memória 7 Formato de Microinstruções Bits 9 3 8 9 3 4 NEXT_ADDR J M P C J A M N J A M Z S L L 8 S R F F A 0 1 1 E N A E N B I N V A I N H C O P C T O S C L S P P V P C P M D R M A R W R R D F E Barramento T B C H Addr JAM ULA C Mem B Registradores do barramento B 0 = MDR 5 = LV 1 = PC 6 = CPP 2 = MBR 7 = TOS 3 = MBRU 8 = OPC 4 = SP 9-15 nenhum 8 Sequenciamento Qual sinal de controle tem que se habilitado em cada ciclo? Determinado pelo sequenciamento Precisa produzir dois tipos de informação em cada ciclo: O estado de todos os sinais de controle do sistema O endereço da próxima microinstrução a ser executada 9

10 Conjunto de Instruções IJVM Hex Mnemônico Significado 0x10 BIPUSH byte Coloca byte na pilha 0x59 DUP Copia a palavra do topo da pilha na pilha 0xA7 GOTO offset Desvio incondicional 0X60 IADD Soma 2 palavras do topo da pilha e empilha o resultado 0X7E IAND Realiza um AND lógico de 2 palavras do topo da pilha 0X99 IFEQ offset Retira uma palavra da pilha e desvia se é zero 0X9B IFLT offset Retira uma palavra da pilha e desvia se é menor que zero 0X9F IF_ICMPEQ offset Retira duas palavras da pilha e desvia se igual 0X84 IINC varnum const Adiciona uma constante a uma variável local 0X15 ILOAD varnum Coloca variável local na pilha 0XB6 INVOKEVIRTUAL disp Invoca um método 0X80 IOR Retira duas palavras da pilha e coloca um OR entre elas 0XAC IRETURN Retorna de um método com um valor inteiro 0X36 ISTORE varnum Retira uma palavra da pilha e armazena em uma variável local 0X64 ISUB Retira duas palavras da pilha e coloca a sua diferença 0X13 LDC_W index Coloca uma constante do Pool de Constantes na pilha 0X00 NOP Não faz nada 0X57 POP Apaga uma palavra da pilha 0X5F SWAP Troca as duas palavras do topo da pilha de lugar 0XC4 WIDE Prefixo: a próxima instrução apresenta índice de 16 bits 11 Modelo de Memória IJVM Pool de Constantes CPP Pilha Corrente de Operandos Quadro 1 de Variáveis Locais Quadro 2 de Variáveis Locais Quadro 1 de Variáveis Locais SP LV Área de Métodos PC 12

Pilha para Armazenamento de Variáveis Locais Procedimentos necessitam espaço para armazenar variáveis locais possibilitando chamadas recursivas 13 Pilha para Armazenamento de Operandos Necessita de espaço para manter os operandos durante uma operação aritmética 14 Chamadas a Procedimentos Colocar (push) na pilha uma referência (pointer) a um objeto a ser chamado (apesar da arquitetura não ser orientada a objetos, a nomenclatura será mantida por consistência) Colocar parâmetros dos procedimentos na pilha Executar a instrução INVOKEVIRTUAL 15

A Pilha e INVOKEVIRTUAL 16 A Pilha e IRETURN 17 Operações Possíveis Qualquer operação ao lado pode ser estendida pela adição de << 8 para deslocar o resultado para a esquerda por 1 byte. Por exemplo, uma operação comum é H = MBR < < 8 DEST = H DEST = SOURCE DEST = H DEST = SOURCE DEST = H + SOURCE DEST = H + SOURCE + 1 DEST = H + 1 DEST = SOURCE + 1 DEST = SOURCE! H DEST = SOURCE! 1 DEST =!H DEST = H AND SOURCE DEST = H OR SOURCE DEST = 0 DEST = 1 DEST =!1 18

Microprograma para Mic-1 19 Microprograma para Mic-1 swap6 TOS = H; goto Main1 Update TOS bipush1 SP = MAR = SP + 1 MBR = the byte to push onto stack bipush2 PC = PC + 1; fetch Increment PC, fetch next opcode bipush3 MDR = TOS = MBR; wr; goto Main1 Sign-extend constant and push on stack iload1 H = LV MBR contains index; copy LV to H iload2 MAR = MBRU + H; rd MAR = address of local variable to push iload3 MAR = SP = SP + 1 SP points to new top of stack; prepare write iload4 PC = PC + 1; fetch; wr Inc PC; get next opcode; write top of stack iload5 TOS = MDR; goto Main1 Update TOS istore1 H = LV MBR contains index; Copy LV to H istore2 MAR = MBRU + H MAR = address of local variable to store into istore3 MDR = TOS; wr Copy TOS to MDR; write word istore4 SP = MAR = SP! 1; rd Read in next-to-top word on stack istore5 PC = PC + 1; fetch Increment PC; fetch next opcode istore6 TOS = MDR; goto Main1 Update TOS wide1 PC = PC + 1; fetch; goto (MBR OR 0x100) Multiway branch with high bit set wide iload1 PC = PC + 1; fetch MBR contains 1st index byte; fetch 2nd wide iload2 H = MBRU << 8 H = 1st index byte shifted left 8 bits wide iload3 H = MBRU OR H H = 16-bit index of local variable wide iload4 MAR = LV + H; rd; goto iload3 MAR = address of local variable to push wide istore1 PC = PC + 1; fetch MBR contains 1st index byte; fetch 2nd wide istore2 H = MBRU << 8 H = 1st index byte shifted left 8 bits wide istore3 H = MBRU OR H H = 16-bit index of local variable wide istore4 MAR = LV + H; goto istore3 MAR = address of local variable to store into ldc w1 PC = PC + 1; fetch MBR contains 1st index byte; fetch 2nd ldc w2 H = MBRU << 8 H = 1st index byte << 8 ldc w3 H = MBRU OR H H = 16-bit index into constant pool ldc w4 MAR = H + CPP; rd; goto iload3 MAR = address of constant in pool Figure 4-17. The microprogram for the Mic-1 (part 1 of 3). 20 Microprograma para Mic-1 Label Operations Comments iinc1 H = LV MBR contains index; Copy LV to H iinc2 MAR = MBRU + H; rd Copy LV + index to MAR; Read variable iinc3 PC = PC + 1; fetch Fetch constant iinc4 H = MDR Copy variable to H iinc5 PC = PC + 1; fetch Fetch next opcode iinc6 MDR = MBR + H; wr; goto Main1 Put sum in MDR; update variable goto1 OPC = PC! 1 Save address of opcode. goto2 PC = PC + 1; fetch MBR = 1st byte of offset; fetch 2nd byte goto3 H = MBR << 8 Shift and save signed first byte in H goto4 H = MBRU OR H H = 16-bit branch offset goto5 PC = OPC + H; fetch Add offset to OPC goto6 goto Main1 Wait for fetch of next opcode iflt1 MAR = SP = SP! 1; rd Read in next-to-top word on stack iflt2 OPC = TOS Save TOS in OPC temporarily iflt3 TOS = MDR Put new top of stack in TOS iflt4 N = OPC; if (N) goto T; else goto F Branch on N bit ifeq1 MAR = SP = SP! 1; rd Read in next-to-top word of stack ifeq2 OPC = TOS Save TOS in OPC temporarily ifeq3 TOS = MDR Put new top of stack in TOS ifeq4 Z = OPC; if (Z) goto T; else goto F Branch on Z bit if icmpeq1 MAR = SP = SP! 1; rd Read in next-to-top word of stack if icmpeq2 MAR = SP = SP! 1 Set MAR to read in new top-of-stack if icmpeq3 H = MDR; rd Copy second stack word to H if icmpeq4 OPC = TOS Save TOS in OPC temporarily if icmpeq5 TOS = MDR Put new top of stack in TOS if icmpeq6 Z = OPC! H; if (Z) goto T; else goto F If top 2 words are equal, goto T, else goto F T OPC = PC! 1; fetch; goto goto2 Same as goto1; needed for target address F PC = PC + 1 Skip first offset byte UFES F2 2010 PC = PC + 1; fetch Arquitetura PC de now Computadores points to next opcode 21 F3 goto Main1 Wait for fetch of opcode

Microprograma para Mic-1 Label if icmpeq6 Operations Z = OPC! H; if (Z) goto T; else goto FComments If top 2 words are equal, goto T, else goto T OPC = PC! 1; fetch; goto goto2 Same as goto1; needed for target address F PC = PC + 1 Skip first offset byte F2 PC = PC + 1; fetch PC now points to next opcode F3 goto Main1 Wait for fetch of opcode invokevirtual1 PC = PC + 1; fetch MBR = index byte 1; inc. PC, get 2nd byte invokevirtual2 H = MBRU << 8 Shift and save first byte in H invokevirtual3 H = MBRU OR H H = offset of method pointer from CPP invokevirtual4 MAR = CPP + H; rd Get pointer to method from CPP area invokevirtual5 OPC = PC + 1 Save Return PC in OPC temporarily invokevirtual6 PC = MDR; fetch PC points to new method; get param count invokevirtual7 PC = PC + 1; fetch Fetch 2nd byte of parameter count invokevirtual8 H = MBRU << 8 Shift and save first byte in H invokevirtual9 H = MBRU OR H H = number of parameters invokevirtual10 PC = PC + 1; fetch Fetch first byte of # locals invokevirtual11 TOS = SP! H TOS = address of OBJREF! 1 invokevirtual12 TOS = MAR = TOS + 1 TOS = address of OBJREF (new LV) invokevirtual13 PC = PC + 1; fetch Fetch second byte of # locals invokevirtual14 H = MBRU << 8 Shift and save first byte in H invokevirtual15 H = MBRU OR H H = # locals invokevirtual16 MDR = SP + H + 1; wr Overwrite OBJREF with link pointer invokevirtual17 MAR = SP = MDR; Set SP, MAR to location to hold old PC invokevirtual18 MDR = OPC; wr Save old PC above the local variables invokevirtual19 MAR = SP = SP + 1 SP points to location to hold old LV invokevirtual20 MDR = LV; wr Save old LV above saved PC invokevirtual21 PC = PC + 1; fetch Fetch first opcode of new method. invokevirtual22 LV = TOS; goto Main1 Set LV to point to LV Frame 22 Microprograma para Mic-1 Label Operations Comments ireturn1 MAR = SP = LV; rd Reset SP, MAR to get link pointer ireturn2 Wait for read ireturn3 LV = MAR = MDR; rd Set LV to link ptr; get old PC ireturn4 MAR = LV + 1 Set MAR to read old LV ireturn5 PC = MDR; rd; fetch Restore PC; fetch next opcode ireturn6 MAR = SP Set MAR to write TOS ireturn7 LV = MDR Restore LV ireturn8 MDR = TOS; wr; goto Main1 Save return value on original top of stack Figure 4-17. The microprogram for the Mic-1 (part 3 of 3). 23 Formato de Instruções BIPUSH (0!10) BYTE Figure 4-18. The BIPUSH instruction format. ILOAD (0x15) INDEX WIDE (0xC4) ILOAD (0x15) (a) (b) INDEX BYTE 1 INDEX BYTE 2 Figure 4-19. (a) ILOAD with a 1-byte index. (b) WIDE ILOAD with a 2-byte index. IINC (0x84) INDEX CONST Figure 4-21. The IINC instruction has two different operand fields. 24

Sequência de Microinstruções Address 0!1FF 0!115 0!100 0!C4 0!15 0!00 Control store wide_iload1 Main1 1 wide1 iload1 Microinstruction execution order WIDE ILOAD ILOAD 3 2 1 2 25 Situação Inicial de Microinstruções Memory n + 3 n + 2 n + 1 n Registers PC OPC MBR H 1 Byte OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7) n 0xA7 OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7) OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7) OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7) OFFSET BYTE 2 OFFSET BYTE 1 GOTO (0xA7) n + 1 n + 1 n + 2 n + 2 n n n OFFSET BYTE 1 OFFSET BYTE 1 OFFSET BYTE 1 OFFSET BYTE 2 OFFSET 1 << 8 (a) (b) (c) (d) (e) Main1 goto1 goto2 goto3 goto4 26 Compilando Java para IJVM 27

Situação da Pilha depois de cada Instrução 0 j 1 k j 2 j + k 3 4 j 5 3 j 6 7 1 j j j 1 0 8 9 10 11 12 13 14 15 28