Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nível de Nível de MicroarquiteturaMicroarquitetura (Parte 4) Prof. Minoru CCF210-Arq.e Org.de Computadores I 2 Implementação da IJVM usando a Mic-1 A instrução BIPUSH é um pouco complicada porque o opcode é seguido por um único byte, como mostra a figura. O byte deve ser interpretado como um inteiro com sinal. Esse byte, que já foi buscado para MBR em Main1, deve ser estendido em sinal para 32 bits e passado para o topo da pilha. Essa sequência deve estender em sinal o byte em MBR para 32 bits e copiá-Io para MDR. Por fim, SP é incrementado e copiado para MAR, permitindo que o operando seja escrito para o topo da pilha. No caminho, esse operando também deve ser copiado para TOS. Além disso, antes de retornar para o programa principal, note que PC deve ser incrementado de modo que o próximo opcode estará disponível em Main1. Prof. Minoru CCF210-Arq.e Org.de Computadores I 3 Considere a instrução ILOAD. ILOAD também tem um byte após o opcode, como mostra a figura, mas esse byte é um índice (sem sinal) para identificar a palavra no espaço de variáveis locais que será passada para a pilha. Uma vez que há somente 1 byte, apenas 28 = 256 podem ser distinguidas, a saber, as primeiras 256 palavras no espaço de variáveis locais. A instrução ILOAD requer uma leitura (para obter a palavra), bem como uma escrita (para passá-Ia para o topo da pilha). Para determinar o endereço para leitura, entretanto, o deslocamento, contido em MBR,deve ser adicionado ao conteúdo de LV. Uma vez que ambos, MBR e LV, só podem ser acessados pelo barramento B, LV primeiro é copiado para H (em iload1 ), então MBR é adicionado. O resultado dessa adição é copiado para MAR e uma leitura é iniciada (em iload2). Prof. Minoru CCF210-Arq.e Org.de Computadores I 4 Sequência inicial de microinstruções para ILOAD e WIDE ILOAD. Os endereços são exemplos. Prof. Minoru CCF210-Arq.e Org.de Computadores I 5 A instrução IINC é a única instrução IJVM, exceto a instrução ISTORE,que pode modificar uma variável local. Ela o faz incluindo dois operandos, cada um de 1 byte de comprimento, como mostra a figura. A instrução IINC usa INDEX para especificar o deslocamento em relação ao início do quadro de variáveis locais. Ela lê aquela variável, incrementando-a por CONST, um valor contido na instrução, e volta a armazená-Ia no mesmo local. Note que essa instrução pode incrementar por uma quantidade negativa, isto é, CONST é uma constante de 8 bits com sinal, na faixa - 128 a + 127. A JVM completa inclui uma versão ampliada da IINC onde cada operando tem 2 bytes de comprimento. Prof. Minoru CCF210-Arq.e Org.de Computadores I 6 Na figura (a) vemos a situação no início de Main1. O opcode já está em MBR, mas PC ainda não foi incrementado. Na figura (b) vemos a situação no início de goto1. Nesta altura o PC já foi incrementado, mas o primeiro byte do deslocamento ainda não foi buscado para MBR. Uma microinstrução depois temos a figura (c), na qual o antigo PC, que aponta para o opcode, foi salvo em OPC e o primeiro byte do deslocamento está em MBR. Esse valor é necessário porque o deslocamento da instrução GOTOIJVM é relativa a ele e não ao valor corrente de PC. Na verdade, essa é a razão primordial por que precisamos do registrador. Prof. Minoru CCF210-Arq.e Org.de Computadores I 7 4.4.1 Velocidade contra custo 1.Reduzir o número de ciclos de relógio necessários para executar uma instrução. 2.Simplificar a organização de modo que o ciclo de relógio possa ser mais curto. 3.Sobrepor a execução de instruções. As duas primeiras são óbvias, mas há uma surpreendente variedade de oportunidades de projeto que pode afetar drasticamente o número de ciclos de relógio, o período de relógio, ou - em grande parte das vezes - ambos. 4.4 Projeto no nível de 4.4 Projeto no nível de microarquiteturamicroarquitetura Prof. Minoru CCF210-Arq.e Org.de Computadores I 8 4.4.2 Redução do comprimento do caminho de execução Incorporação do laço do interpretador ao microcódigo Sequência original do microprograma para executar POP. Sequência de microprograma melhorada para executar POP.Sequência de microprograma melhorada para executar POP. Incorpore o laço do interpretador ao final de cada sequência de microcódigo. Prof. Minoru CCF210-Arq.e Org.de Computadores I 9 Arquitetura de três barramentos Código Mic-1 para executar ILOAD. Código de três barramentos para executar ILOAD. Passe de um projeto de dois barramentos para um projeto de três barramentos. Prof. Minoru CCF210-Arq.e Org.de Computadores I 10 Unidade de busca de instrução ● Vale a pena usar essas duas técnicas mas, para conseguir uma melhoria drástica, precisamos de algo muito mais radical. Vamos voltar atrás um pouco e examinar as partes comuns de toda instrução: a busca e a decodificação dos campos da instrução. Observe que, para cada instrução, podem ocorrer as seguintes operações: 1.O PC é passado pela ALU e incrementado. 2.O PC é usado para buscar o próximo byte na sequência de instruções. 3.Operandos são lidos da memória. 4.Operandos são escritos para a memória. 5.A ALU efetua um cálculo e os resultados são armazenados de volta. ● Se uma instrução tiver campos adicionais (para operandos), cada campo deve ser buscado explicitamente, 1 byte por vez, e montado antes de poder ser usado. Buscar e montar um campo ocupa a ALU por no mínimo um ciclo por byte para incrementar o PC, e então novamente para montar o índice ou deslocamento resultante. A ALU é usada em praticamente todos os ciclos para uma variedade de operações que têm a ver com buscar a instrução e montar os campos dentro da instrução, além do 'trabalho' real da instrução. Prof. Minoru CCF210-Arq.e Org.de Computadores I 11 Unidade de busca para a Mic-1. IFU (Instruction Fetch Unit) 1. A IFU pode interpretar cada opcode, determinando quantos campos adicionais devem ser buscados, e montá-los em um registrador, prontos para a utilização pela unidade de execução principal. 2. A IFU pode aproveitar a natureza sequencial das instruções e disponibilizar os próximos fragmentos de 8 e 16 bits todas as vezes, quer isso tenha ou não algum sentido. Então, a unidade de execução principal pode requisitar o que precisar. Prof. Minoru CCF210-Arq.e Org.de Computadores I 12 FSM (Finite State Machine) Máquina de estado finito para implementar a IFU. Busque instruções na memória com uma unidade funcional especializada. Prof. Minoru CCF210-Arq.e Org.de Computadores I 13 Caminho de dados para a Mic-2. 4.4.3 O projeto com busca antecipada: a Mic-2 Prof. Minoru CCF210-Arq.e Org.de Computadores I 14 Microprograma para a Mic-2 Prof. Minoru CCF210-Arq.e Org.de Computadores I 15 Microprograma para a Mic-2 Prof. Minoru CCF210-Arq.e Org.de Computadores I 16 Microprograma para a Mic-2 Prof. Minoru CCF210-Arq.e Org.de Computadores I 17 Microprograma para a Mic-2 Prof. Minoru CCF210-Arq.e Org.de Computadores I 18 4.4.4 Projeto com paralelismo: a Mic-3 O ciclo de relógio é limitado pelo tempo necessário para que os sinais se propaguem pelo caminho de dados. Há três componentes importantes no ciclo do caminho de dados propriamente dito: 1. O tempo para levar os registradores selecionados até os barramentos A e B. 2. O tempo para que a ULA e o deslocador realizem seu trabalho. 3. O tempo para os resultados voltarem aos registradores e serem armazenados. Prof. Minoru CCF210-Arq.e Org.de Computadores I 19 Arquitetura de três barramentos Mostramos uma nova arquitetura de três barramentos, incluindo a IFU, mas com três registradores adicionais, cada um inserido no meio de cada barramento. Os registradores são escritos em todo ciclo. Na realidade, os registradores repartemo caminho de dados em partes distintas que agora podem funcionar independentemente uma da outra. Denominaremos isso Mic-3, ou modelo com paralelismo (ou pipelined). Prof. Minoru CCF210-Arq.e Org.de Computadores I 20 ● Como esses registradores extras podem ajudar? Agora leva três ciclos de relógio para usar o caminho de dados: ● um para carregar os registradores A e B, ● um para executar a ULA e deslocador e ● carregar o registrador C e ● um para armazenar o serializador C de volta nos registradores. ● Estamos loucos? (Dica: Não!) Inserir os registradores têm dupla finalidade: 1.Podemos aumentar a velocidade do relógio porque o atraso máximo agora é mais curto. 2.Podemos usar todas as partes do caminho de dados durante todo ciclo. Prof. Minoru CCF210-Arq.e Org.de Computadores I 21 Implementação de SWAP Código da Mic-2 para SWAP Implementação de SWAP na Mic-3 Prof. Minoru CCF210-Arq.e Org.de Computadores I 22 Paralelismo Ilustração gráfica do funcionamento de paralelismo (pipeline). Prof. Minoru CCF210-Arq.e Org.de Computadores I 23 4.4.5 Paralelismo de sete estágios: a Mic-4 Principais componentes da Mic-4 Prof. Minoru CCF210-Arq.e Org.de Computadores I 24 Paralelismo da Mic-4 Quando Edsger Dijkstra escreveu seu famoso artigo "GOTO statement considered harmful" (Declaração GOTO considerada perigosa), ele não tinha idéia do quanto estava certo. A Mic-1 era uma peça de hardware muito simples, com quase todo o controle em software. A Mic-4 tem um projeto de alto paralelismo, com sete estágios e hardware muito mais complexo. A Mic-4 faz busca antecipada automática de uma sequência de bytes da memória, decodifica-a para instruções IJVM, converte-a para uma sequência de microoperações usando uma ROM e a enfileira para usar quando necessário. Os primeiros três estágios do paralelismo podem ser vinculados ao relógio do caminho de dados se desejado, mas nem sempre haverá trabalho a fazer. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24
Compartilhar