Capítulo 6 do Livro do Mario Monteiro Capítulo 5 (5.1, 5.2, 5.3 e 5.4) do Livro do Patterson http://www.ic.uff.br/~debora/fac! 1 2 Processador executa instruções • CPU (central processing unit) Endereço da instrução está no ! Registrador PC (program counter)! • UCP (unidade central de processamento) Conteúdo da instrução está no ! Registrador IR (instruction register)! 3 Funções de processamento Funções de controle 5 4 Unidade Lógica e Aritmética (ULA, UAL, ALU) Registradores de dados e registradores especiais de estado (PSW – program status word) 6 1! Unidade de controle, relógio (clock) Registradores especiais • PC – program counter (CI – contador de instruções) • IR – instruction register (RI – registrador de instrução) • REM – registrador de endereços de memória (MAR) • RDM – registrador de dados de memória (MDR) 7 8 MP! MP! 9 10 MP! 11 Construção do caminho de dados Controle Implementação monociclo 12 2! Conceito de caminho de dados e controle Caminho dos bits de instrução e dados Utilização de clock, lógica combinacional e seqüencial Começa com uma implementação simples e iterativamente vai melhorando Medida de performance baseada em: • número de instruções • período do clock • ciclos de clock por instrução (CPI) O primeiro é um fator do programa, mas os dois últimos são baseados na implementação do processador 13 14 Para simplificar o estudo do projeto do processador, o foco será dado em um subconjunto de instruções do MIPS: • add regA regB destreg • Memória: lw e sw 31 • Aritmética: add e addi 7 bits • lw regA regB imm • sw regA regB imm • beq regA regB imm • addi regA regB imm Desvio utiliza endereço PC relativo (PC + 1 + imm) 25 24 22 21 0 op 7 bits 3 bits 3 bits 19 18 16 15 3 2 regA regB 0 3 bits 3 bits 13 bits 0 destreg 3 bits 16 I-Format (tipo I – imediato) 31 22 21 rd op op: código de operação regA: registrador com primeiro operando fonte regB: registrador com segundo operando fonte destreg: registrador que guarda resultado da operação 15 25 24 0 • Desvio: beq R-FORMAT (tipo R – registrador) 19 18 16 15 regA regB 3 bits 0 imm 16 bits 3 bits 17 Buscar uma instrução na memória Interpretar qual operação é representada pela instrução Trazer (se for o caso) os operandos para a CPU Executar a operação Armazenar (se for o caso) os dados de saída Repetir o processo com uma nova instrução etapas do Ciclo de Instrução 18 3! Duas definições importantes • Elemento Combinacional - saída depende somente das entradas Se le ct – Exemplo: ALU Somador • Elemento Seqüencial: elementos contêm A Soma B informações de estado 32 32 M u x 32 C Controle da UAL – Exemplo: Registradores 3 Zero UAL 19 20 Contém 8 registradores • Dois barramentos de 32 bits de saída – Dado lido #1 e Dado lido #2 • Um barramento de 32 bits de entrada 3 Número dos registradores • Registrador selecionado por – Reg a ser lido #1 3 3 Dado – Reg a ser lido #2 Um barramento de entrada: Dado a ser escrito Um barramento de saída: Dado lido Seleção de endereço EscMem Endereço • Endereço seleciona a palavra a ser – Dado a ser escrito • Registrador 0 tem o valor 0 Resultado da UAL 32 Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 32 Dado a ser escrito colocada em Dado lido Dados Dado lido LerMem • Para escrever no endereço, seta EscMem para 1 Dado 32 lido #2 • Para ler do endereço, seta LerMem para 1 EscReg – Reg a ser escrito seleciona registrador que recebe Dado a ser escrito quando EscReg=1 21 De acordo com a arquitetura do conjunto de instruções, define-se uma estrutura organizacional macro (número de unidades funcionais, por exemplo) Essa estrutura é refinada para definir os componentes do caminho de dados, sua interconexão e pontos de controle Estrutura de controle é definida O projeto do caminho de dados e controle é refinado para projeto físico e validação funcional 23 22 Busca a instrução na memória, cujo endereço está no contador de programa PC Incrementa o contador de programa PC de 1 1 Somador PC Endereço de leitura Instrução Memória de Instruções 24 4! add regA regB destreg • Mem[PC] Obtém instrução da memória R[regA] + R[regB] Executa operação • R[destreg] de soma PC + 1 R[destreg] R[regA] op R[regB] • Controle da UAL e de EscReg baseado na instrução decodificada • PC Calcula próximo endereço • Reg a ser lido #1, Reg a ser lido #2, Reg a ser escrito são regA, regB, destreg Registradores 3 3 3 Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Operação da UAL 3 Dado lido #1 Dado lido #2 Zero UAL Resultado da UAL EscReg 25 26 lw regA regB imm • mem[PC] Busca instrução na memória • End R[regA]+SignExt(imm) Calcula o endereço da memória • R[regB] Mem[End] Carrega os dados no registrador • PC PC+1 Calcula o próximo endereço Registradores 3 Instrução Operação da UAL EscMem Reg a ser Dado lido #1 lido #1 Reg a ser lido #2 Reg a ser Dado escrito lido #2 Dado de escrita 3 3 16 EscReg Exten16 são de sinal 3 Zero Memória de dados Resultado Endereço Dado da UAL lido UAL Dado a ser escrito 32 LerMem EscReg 3 bits regA 3 bits op 7 bits 0 3 bits regB 16 bits imediato 27 28 sw regA regB imm • mem[PC] Busca instrução na memória R[regA]+SignExt(imm) Calcula o endereço da • End memória • Mem[End] memória • PC PC+1 7 bits 0 Registradores 3 R[regB] 3 bits op Carrega os dados na Instrução 3 3 Calcula o próximo endereço 3 bits regA 3 bits regB 29 Reg a ser Dado lido #1 lido #1 Reg a ser lido #2 Reg a ser Dado escrito lido #2 Dado de escrita EscReg Exten- 32 16 são de sinal Operação da UAL EscMem 3 Zero Memória de dados Resultado Endereço Dado da UAL lido UAL Dado a ser escrito LerMem 16 bits imediato 30 5! beq regA regB imm • mem[PC] Busca instrução na memória • Cond R[regA]-R[regB] desvio • if (Cond eq 0) – PC PC+1 vindo do caminho de dados de busca de uma instrução Calcula a condição de Soma 3 PC+1 + SignExt(imm) Calcula endereço PC relativo Instrução PC+1 3 Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito 3 • else – PC Extensão de sinal 16 3 bits regB Para a lógica de controle do desvio condicional UAL Zero Ddo lido #2 EscReg 3 bits regA Operação da UAL Dado lido #1 Dado de escrita Calcula o próximo endereço 3 bits op 7 bits 0 Endereço alvo do desvio condicional Somador Registradores 16 bits imediato 31 32 32 FontePC 32 32 32 32 32 1 PC Somador 3 M U X Memória de Instruções Somador 32 Registradores 3 RegDst EscReg 16 Registradores Operação da UAL Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita 3 Endereço de leitura Instrução 1 UAL fonte 32 EscMem 3 32 Extensão de sinal M u x Zero Resultado da UAL 32 UAL Memória de dados Endereço Dado lido ULAparaReg M PC Endereço de leitura Instrução Memória de Instruções M u x 32 3 M 3 U X RegDst Dado a ser escrito 32 Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita 3 16 32 EscReg LerMem 33 Resultado da UAL Somador Operação da UAL EscMem 3 32 UAL fonte 32 M u x 32 Extensão de sinal M u x 32 Zero Resultado da UAL 32 UAL ULAparaReg Memória de dados Endereço Dado lido 32 M u x Dado a ser escrito 32 32 LerMem 34 PC incrementado normalmente Se instrução for beq 32 • pode adicionar imm a PC + 1 PC +1 32 0 1 1 Resultado da UAL Somador Registradores PC Endereço de leitura Instrução Memória de Instruções M U X RegDst Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita EscReg 16 PC Memória de Instruções 3 M u x Extensão de sinal 35 32 Zero Resultado da UAL UAL Endereço de leitura Instrução DvC Resultado da UAL 32 Registradores Somador Operação da UAL UAL fonte Somador M u x 32 M u x 32 Reg a ser lido #1 Reg a ser lido #2 3 Reg a ser escrito Dado de escrita RegDst EscReg 3 32 UAL fonte 32 M U X 16 M u x Extensão de sinal 32 Somador Operação da UAL 3 32 3 Zero Resultado da UAL UAL 32 1 DvC EscMem Memória de dados 32 Endereço Dado lido 32 Dado a ser escrito ULAparaReg M u x 32 32 LerMem 36 6! Identifica pontos de controle no caminho de dados • Busca da instrução PC +1 • Operações lógicas e aritméticas Registradores • Memória Endereço de leitura Instrução PC Identifica tipo de controle do sinal M U X Memória de Instruções • Fluxo de dados através de multiplexadores RegDst Deriva sinais de controle para cada instrução Coloca todos os sinais juntos 37 Registradores Endereço de leitura Instrução PC Memória de Instruções Somador Operação da UAL =op 3 Reg a ser lido #1 UAL fonte Reg a ser =0 Zero lido #2 Reg a ser Resultado M escrito da UAL u x Dado de UAL escrita EscReg =1 16 Exten- 32 são de sinal M U X RegDst =1 1 Endereço de leitura Instrução Memória de Instruções M U X RegDst =X Reg a ser lido #1 Reg a ser UAL fonte lido #2 =1 0 Reg a ser M escrito u x Dado de 1 escrita EscReg =0 16 Exten- 32 são de sinal 41 DvC= 0 UAL Resultado da UAL Registradores EscMem =0 DvC =0 Memória de dados Endereço Dado lido ULAparaReg =1 PC 0 M U X Memória de Instruções M u x 1 Dado a ser escrito Endereço de leitura Instrução RegDst =0 LerMem =0 Reg a ser lido #1 Reg a ser UAL fonte lido #2 =1 Reg a ser 0 M escrito u x Dado de 1 escrita EscReg =1 16 Exten- 32 são de sinal M u x Somador Operação da UAL 3 =Add DvC =0 Zero Resultado da UAL Memória de dados Endereço Dado lido UAL EscMem =0 Dado a ser escrito ULAparaReg =0 0 M u x 1 LerMem =1 40 PC+1 Resultado da UAL Registradores PC Don’t care (X) 32 Somador PC +1 Somador Extensão de sinal Zero Resultado da UAL M u x 39 1 M u x PC +1 Resultado da UAL Somador Somador Operação da UAL UAL fonte 38 PC +1 1 Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita EscReg 16 • Escrita de dados M u x Resultado da UAL Somador 1 M u x 1 Registradores Somador Operação da UAL 3 =Add DvC =0 Zero Resultado da UAL Memória de dados Endereço Dado lido UAL Resultado da UAL Somador EscMem =1 Dado a ser escrito LerMem =0 ULAparaReg =X M u x PC Endereço de leitura Instrução Memória de Instruções M U X RegDst =X Reg a ser lido #1 Reg a ser UAL fonte lido #2 =0 Reg a ser M escrito u x Dado de escrita EscReg =0 16 Exten- 32 são de sinal M u x Somador Operação da UAL 3 =Sub DvC =1 Zero Resultado da UAL Memória de dados Endereço Dado lido UAL EscMem =0 ULAparaReg =X M u x Dado a ser escrito LerMem =0 42 7! PC +1 Resultado da UAL Somador 1 Registradores PC Endereço de leitura Instrução M U X Memória de Instruções RegDst Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita EscReg 16 Somador Operação da UAL 3 UAL fonte M u x Extensão de sinal Zero Resultado da UAL UAL M u x DvC EscMem Memória de dados Endereço Dado lido ULAparaReg M u x Dado a ser escrito 32 LerMem 43 44 45 46 Vantagens Desvantagens • Um ciclo de relógio por instrução torna lógica mais simples PC +1 1 Resultado da UAL Somador Registradores PC Instr [24:22] op Endereço de leitura Instrução Memória de Instruções M U X RegDst RegDst Controle Principal UALfonte ULAparaReg EscReg LerMem EscrMem Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita EscReg 16 Somador Operação da UAL UAL fonte M u x Extensão de sinal Zero Resultado da UAL UAL • Ciclo de clock determinado pela instrução que leva maior M u x tempo DvC – Instrução de carga utiliza cinco unidades funcionais em série EscMem Memória de dados Endereço Dado lido Dado a ser escrito 32 LerMem ULAparaReg M u x tempo de acesso à memória de instruções + • tempo de acesso ao banco de registradores + • retardo da UAL + • tempo de acesso à memória de dados + • tempo de estabilidade dos dados para o banco de registradores • Duplicação de unidades funcionais DvC UAL Op2 48 49 8! Um programa é escrito em uma linguagem que a máquina não entende • Linguagem de alto nível É necessário traduzir o programa para a linguagem binária http://www.ic.uff.br/~debora/orgcomp! 50 51 Programa Fonte em C! compilador! Programa em Assembly! montador! Código objeto em linguagem binária! Módulo! ...! Código objeto em linguagem binária! Rotina de biblioteca! Link-editor! Programa executável! 52 Compilador traduz o programa escrito em linguagem de alto nível para linguagem de montagem Compilador executa três funções: • Análise léxica: – decompõe o programa fonte em seus elementos individuais distintos (comandos, operadores, variáveis) e verifica se estão de acordo com as regras da linguagem • Análise sintática: – cria as estruturas para os comandos e verifica a correção das estruturas (por exemplo, tem int antes de main, tem abre e fecha parênteses) • Análise semântica: – verifica as regras semânticas estáticas da linguagem (por exemplo, estar atribuindo valores do tipo correto para uma variável) • Ex.: Parcela1=1.5, poderia dar erro pois variável Parcela1 é do tipo int 54 loader! Memória! 53 Montador realiza a tradução de um programa em linguagem de montagem (código fonte) para linguagem binária (código objeto) Funções básicas: • Substituir códigos de operações simbólicos por valores numéricos • Substituir nomes simbólicos de endereços por valores numéricos • Reservar espaço de memória para armazenamento de instruções e dados • Converter valores de constantes para binários • Examinar a correção de cada instrução 55 9! Link-editor ou ligador Algumas rotinas já existem codificadas no sistema, por exemplo, rotinas para entrada e saída de dados, de modo que o programador não precisa codificálas. Exemplo: • printf(), • readln(), • rotinas matemáticas como seno e cosseno. Estas rotinas são armazenadas em bibliotecas que são incluídas no código objeto gerado pelo compilador. Para que o código da subrotina externa seja anexado ao código objeto utilizase o processo de ligação. Linguagem interpretada Realiza as três fases (compilação, ligação e execução) comando a comando do programa fonte. Um programa fonte é executado pelo programa interpretador. • Este processo examina todo o código objeto e procura por referências externas não resolvidas assinaladas pelo compilador. • Ele procura pela rotina no sistema e, se a encontra, inclui seu código no código objeto, caso contrário, gera uma mensagem de erro. 56 57 Erros são detectados de forma mais fácil na interpretação Utiliza-se mais memória na interpretação porque interpretador tem que estar na memória Na interpretação, loop tem que ser traduzido em todas as iterações Programas muito utilizados são traduzidos toda vez que são executados na interpretação 58 10!