Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura e Organização de Computadores O Processador: caminho de dados Prof. Sílvio Fernandes UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO 1 Introdução Uma implementação MIPS básica Instruções de referência a memória (lw e sw) Instruções lógicas e aritméticas (add, sub, and, or e slt) Instruções branch equal (beq) e jump (j) Os princípios básicos usados para criação do caminho de dados de outras instruções são semelhantes a estas Examinando várias estratégias de implementação, teremos a oportunidade de ver como o conj. Inst. afeta a velocidade de clock e o CPI da máquina 2 Uma sinopse da implementação Muito do que precisa ser feito para implementar as 3 classes de instruções citadas antes, é igual Para cada instrução 1. Enviar o contador de programa (PC) à memória que contém o código e buscar a instrução dessa memória 2. Ler um ou mais registradores, usando campos da instrução para selecionar os registradores a serem lidos. Em seguida, as ações para completar a instrução dependem da classe da instrução 3 Uma sinopse da implementação Mesmo entre diferentes classes, há algumas semelhanças Todas as classes de instrução (exceto jump), usam a ALU após a leitura dos registradores Após usar a ALU, as ações necessárias para completar várias classes de instruções diferem A figura a seguir mostra uma visão de alto nível de uma implementação MIPS 4 Uma sinopse da implementação Uma visão abstrata da implementação do subconjunto MIPS 5 Uma sinopse da implementação Primeiro, em vários lugares nessa figura, os dados indo para uma determinada unidade, estão vindo de duas origens diferentes Na prática, essas linhas de dados não podem simplesmente ser interligadas Precisamos adicionar um elemento de escolha: multiplexador que precisa de um controle que lhe permita fazer a escolha As linhas de controle são definidas principalmente com base nas informações extraídas da instrução executada 6 Uma sinopse da implementação Segundo, várias das unidades precisam ser controladas de acordo com o tipo da instrução A memória de dados precisa ler em um load e escrever em um strore O banco de registradores precisa ser escrito em uma instrução de load e em uma lógica ou aritmética A ALU precisa realizar uma de várias operações Assim como os mux, essas operações são direcionada por linhas de controle que são definidas baseadas nos vários campos das instruções A figura a seguir inclui 3 multiplexadores e as linhas de controle 7 Uma sinopse da implementação 8 Uma sinopse da implementação Uma unidade de controle que tem a instrução como entrada é usada para determinar como definir as linhas de controle para as unidades funcionais e dois do multiplexadores O 3º multiplexador (determina o valor de PC) é definido com base na saída zero da ALU, que é usada para realizar a comparação da instrução beq A regularidade e simplicidade do conj. Inst. MIPS significam que um simples processo de decodificação pode ser usado para determinar as linhas de controle 9 Convenções lógicas de projeto Unidades funcionais MIPS Elementos que operam nos valores dos dados Combinacionais: suas saídas dependem apenas das entradas atuais (ALU) Elementos que contêm estado Também chamado de elementos de estado Contém estado se tiver armazenamento interno As entradas necessárias são os valores dos dados a serem escritos e o clock, que determina quando o valor dos dados deve ser escrito São elementos sequenciais: suas saídas dependem de suas entradas e do conteúdo do estado interno 10 Convenções lógicas de projeto Unidades funcionais MIPS Elementos que contêm estado Ex: memórias de instruções e dados e registradores Usaremos o termo ativo para indicar um sinal que está logicamente alto e ativar para especificar que um sinal deve ser determinado logicamente alto, e inativo ou desativar para representar o que é logicamente baixo 11 Metodologia de clocking Uma metodologia de clocking define quando os sinais podem ser lidos e quando podem ser escritos Ela é importante para sincronização das leituras e escritas Uma metodologia de sincronização acionada por transição significa que quaisquer valores armazenados em um elemento lógico sequencial são atualizados apenas em uma transição do clock 12 Metodologia de clocking Como apenas os elementos de estado podem armazenar valores de dados, qualquer coleção de lógica combinatória precisa ter suas entradas vindas de um conjunto de elementos de estado e suas saídas escritas em um conjunto de elementos de estado As entradas são valores escritos em um ciclo de clock anterior, enquanto as saídas são valores que podem ser usados em um ciclo de clock seguinte 13 Metodologia de clocking A lógica combinatória, os elementos de estado e o clock estão intimamente relacionados 14 Metodologia de clocking Para simplificar, não foi mostrado um sinal de controle de escrita quando um elemento de estado é escrito a cada transição ativa do clock Por outro lado, se um elemento de estado não for atualizado em cada clock, um sinal de controla de escrita explícito é necessário 15 Metodologia de clocking Essa metodologia permite ler o conteúdo de um registrador, enviar o valor por meio de alguma lógica combinatória e escrever nesse registrador no mesmo ciclo de clock 16 Construindo um caminho de dados Vamos examinar os principais componentes necessários para executar cada classe de instrução MIPS 17 Construindo um caminho de dados Unidade de memória Para armazenar as instruções de um programa e fornecer instruções dado um endereço Registrador contador de programa (PC) Para conter o endereço da instrução atual Somador Para incrementar o PC para o endereço da próxima instrução 18 Construindo um caminho de dados Para executar qualquer instrução, precisamos buscá-la na memória Precisamos incrementar PC para a próxima instrução (4 bytes depois) 19 Construindo um caminho de dados Vamos considerar as instruções no formato R Todas lêem 2 registradores, realizam uma operação na ALU com conteúdo dos registradores e escrevem o resultado Os registradores de uso geral de 32 bits são armazenados em um estrutura chamada banco de registradores Qualquer registrador pode ser lido ou escrito especificando o número do registrador no banco Esse banco contém o estado dos registradores da máquina 20 Construindo um caminho de dados As instruções do tipo R precisam de 3 operandos de registrador, então precisamos ler 2 word de dados do banco de registradores e escrever uma word de dados no banco Para cada word lida: precisamos de 1 entrada no banco que especifique o número do registrador a ser lido Para cada word escrita: precisamos de 2 entradas - uma para especificar o número do registrador a ser escrito e uma para fornecer os dados a serem escritos Para escrita ainda é necessário o sinal de controle de escrita 21 Construindo um caminho de dados A ALU e o bando de registradores para implementar instruções do tipo R 22 Construindo um caminho de dados A ALU usa 2 entradas de 32 bits e produz um resultado de 32 bits, bem como um sinal de 1 bit se o resultado for 0 O sinal de controle (4 bits) da ALU define a operação a ser realizada por ela 23 Construindo um caminho de dados Instruções load e store possuem o formato lw $t1, offset_value ($t2) sw $t1, offset_value ($t2) O endereço de memória no registrador base$t2 deve ser somado ao offset de 16 bits com sinal O load armazena o resultado em $t1 O store envia para a memória o valor de $t1 Precisamos do banco de registradores e da ALU de uma unidade para estender o sinal do campo offset de 16 para 32 bits de uma unidade de memória para ler ou escrever dados 24 Construindo um caminho de dados Unidades necessárias para implementar load e store 25 Construindo um caminho de dados A instrução beq possui 3 operandos: 2 registradores comparados para igualdade e 1 offset de 16 bits para calcular o endereço de destino do desvio Beq $t1, $t2, offset Precisamos calcular o endereço de destino somando o campo offset estendido com sinal da instrução com o PC 26 Construindo um caminho de dados Observações das instruções de desvio O conjunto de instruções especifica que a base para o cálculo do endereço de destino é o endereço da instrução seguinte ao desvio; como calculamos PC+4, é fácil usar valor como base A arquitetura também diz que o campo offset é deslocado 2 bits para a esquerda de modo que seja um offset de uma word; esse deslocamento aumenta a faixa efetiva do campo offset por um fator de quatro vezes Para lidar com isso precisamos deslocar o campo offset de 2 bits 27 Construindo um caminho de dados Instrução beq Quando a condição é verdadeira (operandos são iguais), o endereço de destino do desvio se torna o novo PC e dizemos que o desvio é tomado Se os operandos não forem iguais, o PC incrementado deve substituir o PC atual (como nas outras instruções); nesse caso, dizemos que o desvio é não tomado 28 Construindo um caminho de dados Caminho de dados para instruções de acesso a memória e as do tipo R 29 Construindo um caminho de dados A instrução jump funciona substituindo os 28 bits menos significativos do PC pelos 26 menos significativos da instrução deslocados de 2 bits á esquerda Esse deslocamento é realizado simplesmente concatenando 00 ao offset do jump 30 Construindo um caminho de dados Criando um caminho de dados simples Depois de vermos os componentes necessários para cada classe de instruções, podemos combiná-los em um único caminho de dados e acrescentar o controle O caminho de dados pode tentar executar todas as instruções em um único ciclo de clock Isso significa que nenhum recurso do caminho pode ser usado mais de uma vez por instrução e, portanto, qualquer elemento necessário mais de uma vez precisa ser duplicado Então, precisamos de uma memória separada para dados e instruções Mas muitos elementos podem ser compartilhados por diferentes fluxos de instrução (incluindo multiplexadores) 31 Verifique você mesmo 1. O caminho de dados de ciclo único conceitualmente descrito até aqui precisa ter memórias de instrução e de dados separadas porque a) O formato dos dados e das instruções é diferente no MIPS, e, portanto, são necessárias diferentes memórias b) Ter memórias separadas é menos dispendioso c) O processador opera em um ciclo e não pode usar uma memória de porta única para dois acessos diferentes dentro desse ciclo 32 Verifique você mesmo 2. Verdadeiro ou falso: como o banco de registradores é lido e escrito no mesmo ciclo de clock, qualquer caminho de dados MIPS usando escritas acionadas por transição precisa ter mais de uma cópia do banco de registradores. 33 Respostas 1) a 2) falso 34 Referências PATTERSON, D. A. ; HENNESSY, J.L. Organização e projeto de computadores – a interface hardware software. 3. ed. Editora Campus, 2005. STALLINGS, W. Arquitetura e organização de computadores: projeto para o desempenho. 8. ed. Prentice Hall, 2009. 35
Compartilhar