EA869 Arquitetura de Computadores Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1 Recordando Problema Estruturas de dados Representação numérica Algoritmo Nível Conceitual Linguagem Assembly Hierarquia de linguagens Como está organizado o hardware de um computador? Hardware ARQUITETURA DE COMPUTADORES 2 Introdução Objetivos: Conhecer os processadores. principais aspectos da arquitetura de Conhecer as características de cada componente desta arquitetura. Projetar uma máquina simples. O que é um computador? Seguindo o espírito da máquina universal de Turing, é uma máquina cuja função é ler e executar instruções. 3 Introdução Instrução de máquina: Identifica uma operação elementar que o processador é capaz de realizar. Nela, o processador deve encontrar referências quanto: I. II. à operação que deve realizar – soma, subtração, movimentação de dados etc. aos operandos envolvidos – onde estão os dados que desejamos manipular? A linguagem simbólica oferece uma maneira visualmente mais atraente para descrever uma instrução. Exemplo: 0010 0001 Código da operação Identificação do primeiro operando A leitura do código da operação deve desencadear no processador uma sequência de ações, através de sinais de controle, que ativem os elementos do circuito responsáveis por realizar uma soma, tendo como entrada os operandos identificados na instrução. Instrução: ADD r1, r5 0101 Identificação do segundo operando r1 ← r1 + r5 4 Introdução Tendo este entendimento inicial acerca das instruções, daremos início ao estudo da arquitetura e organização de computadores. Quais componentes devem existir em um computador? 5 Introdução Tendo este entendimento inicial acerca das instruções, daremos início ao estudo da arquitetura e organização de computadores. Quais componentes devem existir em um computador? Processador Gabinete Sistema operacional Memória Placa mãe Disco rígido Monitor Jogos 6 Arquitetura de computadores 7 Arquitetura de computadores 8 Registradores O que são? Elementos de armazenamento de informação. O que armazenam? 1 palavra de informação – Ex.: ARM: 32 bits. Características: Estão localizados dentro do processador e são de rápido acesso. Realizam algumas operações sincronizadas com o relógio (clock) do sistema. Como são construídos? Um registrador de n bits é formado pela ligação de n flip-flops, cada um armazenando 1 bit de informação, sincronizados pelo mesmo relógio. Flip-flops? REGISTRADOR 9 Registradores Flip-flops: circuitos digitais que atuam como uma memória de 1 bit. FLIP-FLOP D Mantém o estado anterior a cada pulso do relógio. FLIP-FLOP JK Além de manter o estado anterior, ele pode setar (1), resetar (0) ou complementar a saída a cada pulso do clock. Tabela Verdade J K Q 0 0 Q 0 1 0 D Q 1 0 1 0 0 1 1 Q’ 1 1 Tabela Verdade Operação Sensíveis ao nível Sensíveis à borda de subida Sensíveis à borda de descida 10 Registradores Agora que recordamos como funcionam os FFs, vamos ver quais operações podem ser realizadas no registrador. Transferência de dados: o registrador envia (leitura) ou recebe (escrita) dados do barramento. Lembrar que cada operação é sincronizada com o relógio do sistema. W Clock Comando Operação W REG ← (BAR) R BUS ← (REG) R REGISTRADOR 11 Registradores Agora que recordamos como funcionam os FFs, vamos ver quais operações podem ser realizadas no registrador. Transferência de dados: o registrador envia (leitura) ou recebe (escrita) dados do barramento. Lembrar que cada operação é sincronizada com o relógio do sistema. Comando Operação W REG ← (BAR) R BUS ← (REG) Barramento Clock W K ... Clock R CLK Ai K J ... J Bi Controle de acesso ao barramento via tri-state ... 12 Registradores Agora que recordamos como funcionam os FFs, vamos ver quais operações podem ser realizadas no registrador. Complementação: o registrador recebe seus bits complementados. Exemplo: registrador de 4 bits – 0110 se torna 1001. W Clock Comando Operação C REG ← (REG) R C REGISTRADOR 13 Registradores Agora que recordamos como funcionam os FFs, vamos ver quais operações podem ser realizadas no registrador. Deslocamento: o registrador recebe seus bits deslocados. Exemplo: registrador de 4 bits – 0110 se torna 0011. W Clock Comando Operação D REG ← SHIFT(REG) R C D REGISTRADOR 14 Registradores Agora que recordamos como funcionam os FFs, vamos ver quais operações podem ser realizadas no registrador. Incrementa/Decrementa: o registrador recebe os seus bits somados ou subtraídos por 1. Exemplo: registrador de 4 bits (incremento) – 0110 se torna 0111. W Clock Comando Operação I/D REG ← (REG) +/- 1 R C D I/D REGISTRADOR 15 Registradores Agora que recordamos como funcionam os FFs, vamos ver quais operações podem ser realizadas no registrador. Set/Reset: o registrador recebe 1 (set) ou 0 (reset) em todos os seus bits. Exemplo: registrador de 4 bits (set) – 0110 se torna 1111. W Clock Comando Operação S/R REG ← 1/0 R C D I/D REGISTRADOR S/R 16 Registradores Registrador sensível a múltiplos comandos: Responde a múltiplos sinais de controle. Cuidado: somente um sinal de controle pode estar ativo a cada pulso de relógio. Barramento de dados W R C D I/D S/R Circuito de múltiplos comandos Clock REGISTRADOR 17 Registradores Exemplo: Barramento Barramento W Z C K CLK J FFi Qi W R C Z CLK R Registrador Sensível a Múltiplos Comandos (Sinais de Controle) W - Transferir do barramento para o registrador (Write) R - Transferir do registrador para o barramento (Read) C - Complementar o registrador Z - Zerar o registrador 18 Arquitetura de computadores 19 Unidade Lógico-Aritmética ULA: responsável pela execução de todas as operações sobre os dados. Características: suas entradas e saídas de dados, bem como a operação que pode realizar, estão diretamente relacionadas à instrução (Assembly). Estrutura: Registrador de estado Flags Informa o estado do processador após a última operação realizada pela UAL. Entrada de dados Σ Comandos da unidade de controle Saída de dados (Resultados) 20 Unidade Lógico-Aritmética ULA: responsável pela execução de todas as operações sobre os dados. Classificação: depende de como devem ser especificados os operandos e resultados na instrução (Assembly). Máquina de zero endereços: Máquina de 1 endereço: Máquina de 2 endereços: Máquina de 3 endereços: CO CO Op. 1 CO Op. 1 Op. 2 CO Op. 1 Op. 2 Registrador de estado Flags Informa o estado do processador após a última operação realizada pela UAL. Op. 3 Entrada de dados Σ Comandos da unidade de controle Saída de dados (Resultados) 21 Unidade Lógico-Aritmética Máquina de zero endereços Formato da instrução: CO Exemplo: ADD Funcionamento: stack machines – todas as operações envolvem as posições no topo da pilha. Calculadora HP Exemplo? dado2 dado1 FLAGS Saída Σ x x x Pilha 22 Unidade Lógico-Aritmética Máquina de 1 endereço Formato da instrução: CO Op. 1 Exemplo: ADD R1 Funcionamento: toda operação está baseada em um registrador implícito – Acc (acumulador). Acc ← (Acc) operação (Op. 1) Exemplo: Intel 8085 (década de 70) Op. 1 FLAGS Saída Σ Acc 23 Unidade Lógico-Aritmética Máquina de 2 endereços Formato da instrução: CO Op. 1 Op. 2 Exemplo: ADD R1, R2 Funcionamento: não há mais necessidade de registradores auxiliares; o resultado da operação é armazenado em um dos operandos. Op. x ← (Op. 1) operação (Op. 2) Exemplo: Intel-64 (déc. 90/00) FLAGS R2 R1 Op. 2 Op. 1 Saída Σ 24 Unidade Lógico-Aritmética Máquina de 3 endereços Formato da instrução: CO Op. 1 Op. 2 Op. 3 Exemplo: ADD R1, R2, R3 Funcionamento: há operandos específicos para os dados de entrada e um registrador para receber a saída. Op. 1 ← (Op. 2) operação (Op. 3) Exemplo: ARM FLAGS R2 R3 Op. 2 Op. 3 Saída Σ R1 Qual a diferença prática no uso de máquina de diferentes endereços? 25 Unidade Lógico-Aritmética Importante: a opção de projeto por uma máquina de 1, 2 ou 3 endereços tem implicações no tamanho de cada instrução, no tamanho e inteligibilidade dos programas preparados em linguagem simbólica (Assembly), na velocidade, no custo, na configuração de memória, etc. 26 Arquitetura de computadores 27 Barramentos Conhecendo os registradores e a unidade de operações lógico- aritméticas, vamos entender como a informação navega através das unidades do nosso computador. Vamos falar dos barramentos. Barramentos: São ligações (caminhos elétricos) entre diferentes módulos ou partes de um sistema computacional. A fim de reduzir o número de conexões entre os módulos, criam-se canais ou dutos compartilhados. Aspectos: Mecânicos. Elétricos – nível de tensão, corrente suportada. Protocolo – acordo que rege como o barramento deve ser utilizado. 28 Barramentos Barramentos: Funcionamento: Ao transferir dados entre duas unidades de um computador via um barramento, devemos nos atentar ao fato do barramento não armazenar dados. Na prática, isso significa que ao transferir um dado, uma unidade deve ter seu sinal de Read acionado no mesmo pulso de relógio que uma outra unidade aciona seu sinal de Write. Vejamos... RR1 WR1 RR2 WR2 0 0 1 1 1 0 0 0 R1 R2 29 Máquina Simples Já conhecemos três elementos fundamentais em um computador: Registradores; Unidade lógico-aritmética; Barramentos. Vamos, então, montar uma máquina bastante simples de fazer contas. 30 Máquina Simples RE we ACC n 𝑛 IT wT RT wA CT RA ZT TMPn R1n WR1 RR1 R2n WR2 RR2 Sinais de controle W - transferir do barramento para o registrador Exemplo: WR1 indica a operação R1 (bus) CT - complementar o conteúdo do registrador TMP Isto é, CT dispara a operação TMP (TMP)’ R - transferir do registrador para o barramento Exemplo: RA indica a operação bus (Acc) ZT - zerar (reset) o registrador TMP Isto é, ZT indica a operação TMP "0" W- transferir a saída do somador para o Acc R2n ,R1n - registradores de dados com n bits R- transferir o conteúdo do registrador Acc para a entrada do n TMPn - registrador de complemento/incremento com n bits IT - incrementar o conteúdo do registrador TMP. Accn - registrador acumulador com n bits Isto é, IT aciona a operação TMP (TMP) + 1 Considere que a ULA apenas realiza adições e que os dados de entrada estão nos registradores R1 e R2. Como podemos construir uma arquitetura que execute a seguinte operação: R1 ← (R1) – (R2)? 31 Máquina Simples IT wT RT CT ZT Agora temos nossa primeira máquina de calcular! TMPn 𝑛 Vamos então executar passo a passo a operação: R1 ← (R1) - (R2) RE we R1n WR1 RR1 R2n WR2 RR2 ACC n wA RA 32 Máquina Simples R1 ← (R2) - (R1) Passos Pulso do relógio 1. Transferir o conteúdo de R2 para Acc 1 Sinais de controle RR2 , WA Microoperação IT wT RT CT ZT bus ← (R2) Acc ← (bus) 2. Transferir o conteúdo de R1 para TMP 2 RR1 , WT bus ← (R1) TMP ← (bus) 3. Complementar TMP 3 C TMP ← (TMP) 101 110 010 111 T IT WR1 RR1 001 R2n WR2 RR2 TMP ← (TMP) + 1 4. Imcrementar TMP 4 5. Somar: ULA recebe valores e faz a soma 5 RE , RT 6. Armazenar a soma no Acc 6 WE Acc ← (ULA) 7. Armazenar final em R1 7 RA , WR1 Acc ← (ULA) valor 010 R1n ULA ← (Acc) + (TMP) RE we wA RA 33 Arquitetura de computadores 34 Memória Responsável pelo armazenamento de dados e instruções (programas). Capaz de guardar grandes blocos de palavras (na ordem de gigabytes). Conceitos básicos: Quantos bits (b) precisa ter o campo de endereço para endereçar n palavras? 0 110 1011... Palavra de m bits 1 2b ≥ n 2 3 Memória de n palavras .. Quantos dados distintos uma palavra consegue representar? n 2m 35 Memória Acesso: a unidade de controle do processador solicita o acesso a um determinado endereço e a memória envia o conteúdo deste endereço ao local apropriado. Dois registradores auxiliares: REM e RDM. Como? CPU 3 LEITURA DE UM DADO DA MEMÓRIA Registrador de Endereço da Memória (REM) 0 110 1101... 1 2 3 .. n 568765 Registrador de Dados da Memória (RDM) CICLO DE LEITURA 1. REM ← end 2. RDM ← ((REM)) ou RDM ← (m) 3. CPU ← (RDM) 36 Memória Acesso: a unidade de controle do processador solicita o acesso a um determinado endereço e a memória envia o conteúdo deste endereço ao local apropriado. Conhecendo os ciclos Dois registradores auxiliares: REM e RDM. de leitura e escrita, CPU 3 ESCRITA DE UM DADO DA MEMÓRIA Registrador de Endereço da Memória (REM) 0 110 1111... 1 2 3 568765 .. n porque o acesso a um registrador é menos custoso? Registrador de Dados da Memória (RDM) CICLO DE ESCRITA 1. REM ← end 2. RDM ←(CPU) 3. (REM) ← (RDM) ou m ← (RDM) 37 Memória Considerações: A memória que constantemente se comunica com o processador é chamada de memória principal (comumente conhecida como memória RAM). RAM significa memória de acesso aleatório (random access memory). O termo aleatório refere-se à capacidade de acessarmos qualquer posição em qualquer momento com a mesma facilidade, em contraste com as antigas fitas magnéticas. Uma característica importante das RAMs é o fato de as operações de escrita consumirem o mesmo tempo de uma operação de leitura. Uma operação de escrita em uma ROM (read-only memory), por sua vez, consome um tempo consideravelmente superior que o de uma leitura. RAMs também são voláteis – os dados se perdem quando a alimentação é removida (ao desligar o computador). Por isso, a memória RAM sempre recebe do disco (HD) o programa a ser executado. Um outro tipo de memória RAM, conhecida como memória cache, pode ser colocada entre o processador e a memória principal com o objetivo de tornar o acesso aos dados mais rápido. Ela guarda um subconjunto dos dados que mais recente ou mais frequentemente têm sido utilizados. 38 Arquitetura de computadores 39 Unidade de Controle O funcionamento correto do computador depende do correto acionamento de todos os sinais de controle do hardware, conforme exigido por cada operação (instrução). A unidade de controle é a responsável por gerenciar as operações de um processador. O que ela deve fazer? 1. 2. 3. Buscar a próxima instrução na memória principal. Decodificar a instrução. Acionar sequencialmente os respectivos sinais de controle que farão com que a operação desejada seja executada. Para cumprir estas tarefas, a unidade de controle conta com as seguintes estruturas auxiliares: Registrador PC (Contador de Programa) Indica o endereço da próxima instrução a ser executada Registrador de Instrução (RI) Armazena a instrução para a decodificação Controlador Lê a instrução que está em RI, decodifica e ativa sequencialmente os sinais de controle apropriados Operação Básica 0 PC 0 REM ADD R1 1 2 RI 3 .. Controlador ... sinais de controle n RDM 40 Unidade de Controle Para compreendermos mais detalhadamente como a unidade de controle busca e executa as instruções, precisamos conhecer os diferentes tipos de instrução disponíveis em um processador. Instrução de máquina = sequência de bits armazenada na memória principal, identificando a operação e os dados envolvidos. ARM: CO Rd Rn Op2 Vejamos alguns exemplos de instruções de máquina. Vamos tentar entender quais dados elas manipulam: Não há dados na instrução. ADD R1,R2,R3 R1 ← (R2) + (R3) Todos eles encontram-se nos registradores. ADD R1,R2, #4 R1 ← (R2) + 4 A instrução possui um dado: o valor 4 (# indica que o valor é um imediato presente na própria instrução). ADD R1, R2, 4 R1 ← (R2) + (4) A instrução indica que um dos operandos está no endereço 4 da memória. 41 Unidade de Controle Porém, nem sempre uma instrução de máquina completa ocupa apenas uma palavra de memória. No caso do processador ARM, qualquer instrução é formada por 32 bits, o que equivale a uma única palavra de memória. Mas isto nem sempre acontece. Instrução de 1 palavra: SUB R1, R2, #3 R1 ← (R2) - 3 Instrução de 2 palavras: SUB R1, R2, #3 R1 ← (R2) - 3 C. O. dado Agora que sabemos como são as instruções, vamos entender melhor como a unidade de controle as executa. Instrução de 3 palavras: SUB R1, 4, #3 C. O. R1 ← (4) - 3 end dado 42 Unidade de Controle A execução de uma instrução é dividida em ciclos de máquina (CM). Um ciclo de máquina corresponde a uma sequência de microoperações que são executadas, caracterizando uma operação mais complexa. A execução de uma instrução pode ser composta por vários ciclos de máquina, que por sua vez são formados por diversas microoperações, as quais determinam o sequenciamento dos sinais de controle. Duas fases são necessárias para a execução de uma instrução: Fase de busca: compreende o CM para busca e leitura do C.O. da instrução (ciclo de busca). As microoperações envolvidas são idênticas para qualquer instrução. Fase de execução: compreende a execução dos CMs necessários para a leitura das palavras restantes da instrução (se existirem – ciclo de leitura) e da efetiva execução da operação identificada (ciclo de execução). Esta fase é específica para cada instrução. Quais ciclos são necessários para a execução das seguintes instruções? Vamos ver essas fases mais detalhadamente... Exemplos: SUB R1 , R2, 2 C. O. R1 ← (R2) – (2) end 1. Ciclo de Busca 2. Ciclo de execução ADD R1 , R2 , #3 C. O. R1 ← (R2) + 3 1. Ciclo de Busca dado 2. Ciclo de Leitura 3. Ciclo de execução 43 Unidade de Controle Exemplo: vamos supor que o computador irá executar a seguinte instrução: STA 3 Acc ← (end) A instrução de máquina possui o seguinte formato: C. O. end Carregando os dados na memória e nos registradores... PC 0 REM 0 STA 1 3 2 RI 3 150615 .. Controlador ... sinais de controle n Acc RDM 44 Unidade de Controle STA 3 Buscar o C.O. e levá-lo para o controlador FASE DE BUSCA Acc ← (end) C. O. Pulso Microoperação 1 REM ← (PC) 2 RDM ← ((REM) ou (m) PC ← (PC) + 1 3 RI ← (RDM) end PC 01 REM CICLO DE BUSCA 0 STA 1 3 2 RI 3 150615 .. Controlador ... sinais de controle n Acc RDM STA 45 Unidade de Controle FASE DE EXECUÇÃO STA 3 Acc ← (end) Pulso Microoperação 1 REM ← (PC) 2 RDM ← ((REM) ou (m) PC ← (PC) + 1 3 RI ← (RDM) C. O. end PC 12 REM 0 RI STA Controlador ... sinais de controle CICLO DE LEITURA 0 STA 1 3 2 3 150615 .. n Acc RDM STA 3 46 Unidade de Controle STA 3 Realiza as microoperações para executar a instrução FASE DE EXECUÇÃO Acc ← (end) C. O. Pulso Microoperação 1 REM ← (RI.end) 2 RDM ← ((REM)) ou (m) 3 Acc ← (RDM) end PC 2 REM 1 RI CICLO DE EXECUÇÃO 0 STA 1 3 2 3 3 Controlador ... sinais de controle 150615 .. n Acc RDM 3 150615 47 Projeto de um computador Finalmente analisamos cada um dos componentes básicos de um computador. Vamos, então, dar um passo mais ousado: projetar uma máquina de executar instruções. A base para este projeto será a pequena máquina de calcular que vimos durante a discussão sobre a ULA. 48 Computador simples REM E habilita Memória RAM PC R/W Leitura/ escrita 64x8 IPC Incrementa PC RDM UC transf. reg./barr. TRB TBR RI transf. barr./reg. TB Transf. do barr. MEMÓRIA IT wT RT CT ZT TMPn Controlador ... 𝑛 RE we B a r r a m e n t o ACC n wA RA 49 Computador simples PC E habilita Memória REM IPC Incrementa PC RAM 6 bits Transf. do PC TPC R/W Leitura/ escrita 64x8 REM endereço 6 bits 8 bits TRI RDM Transf. do RI 6 bits transf. reg./barr. TRB TBR RI transf. barr./reg. 8 bits 8 bits TB Transf. do barr. IT wT RT CT ZT 2 bits 8 bits B a r r a m e n t TMPn Controlador ... ... TB TPC TRI IT wT RT CT ZT IPC Para finalizar, Acabamos de montar vamoso circuito digital de nosso próprio computador. dimensionar os barramentos! 𝑛 o 8 bits RE we ACC n wA RA 50 Computador simples PC E habilita Memória REM IPC Incrementa PC RAM 6 bits Transf. do PC TPC R/W Leitura/ escrita 64x8 REM endereço 6 bits 8 bits TRI RDM Transf. do RI 6 bits transf. reg./barr. TRB TBR RI transf. barr./reg. 8 bits 8 bits TB Transf. do barr. IT wT RT CT ZT 2 bits 8 bits B a r r a m e n t TMPn Controlador ... ... TB TPC TRI IT wT RT CT ZT IPC Quantas instruções diferentes este processador consegue executar? CO – 2 bits: portanto, no máximo 4 instruções 𝑛 o 8 bits RE we ACC n wA RA 51 Computador simples PC E habilita Memória REM IPC Incrementa PC RAM 6 bits Transf. do PC TPC R/W Leitura/ escrita 64x8 REM endereço 6 bits 8 bits TRI RDM Transf. do RI 6 bits transf. reg./barr. TRB TBR RI transf. barr./reg. 8 bits 8 bits TB Transf. do barr. IT wT RT CT ZT 2 bits 8 bits B a r r a m e n t TMPn Controlador ... ... TB TPC TRI IT wT RT CT Por exemplo: Código ZT Mnemônico IPC 𝑛 o Instrução 00 STOP 01 ADD 10 SUB end Subtrair do Acc o conteúdo do endereço 11 STA Transf. o conteúdo do Acc para endereço 8 bits Parar end end Somar ao Acc o conteúdo do endereço RE we ACC n wA RA 52 Computador simples PC E habilita Memória REM IPC Incrementa PC RAM 6 bits Transf. do PC TPC R/W Leitura/ escrita 64x8 REM endereço 6 bits 8 bits TRI RDM Transf. do RI 6 bits transf. reg./barr. TRB TBR RI transf. barr./reg. 8 bits 8 bits TB Transf. do barr. IT wT RT CT ZT 2 bits 8 bits B a r r a m e n t TMPn Controlador ... ... TB TPC TRI IT wT RT CT ZT IPC Considerando que as instruções ocupam uma única palavra de memória, vamos acompanhar a execução da instrução: ADD end Acc ← Acc + (end) 𝑛 o 8 bits RE we ACC n wA RA 53 Computador simples PC REM 2 IPC Incrementa PC 3 R/W Leitura/ escrita 5 20 REM TPC E habilita 4 6 bits Transf. do PC 2 ADD 5 endereço 6 bits 8 bits TRI RDM Transf. do RI 6 bits transf. reg./barr. TRB TBR RI transf. barr./reg. 8 bits 8 bits TB Transf. do barr. IT wT RT CT ZT 2 bits 8 bits B a r r a m e n t TMPn Controlador ... ... TB TPC TRI IT wT RT CT ZT IPC 𝑛 o Considere as condições iniciais dadas na arquitetura. 8 bits RE we ACC 15 wA RA 54 PC 2 ADD 5 3 4 5 20 32 IPC Incrementa PC 6 bits REM Transf. do PC TPC endereço 6 bits 2 TRI 8 bits Transf. do RI RI Transf. do barr. RDM ADD 20 5 6 bits TB R/W Leitura/ escrita transf. reg./barr. TRB TBR transf. barr./reg. 8 bits 8 bits ADD 5 E habilita TMP IT wT RT CT ZT 2 bits 8 bits 20 B a r r a m e n t Controlador IT wT RT CT ZT Pulso ... ... TB TPC TRI IPC Microoperação SCs 1 REM ← (PC) TPC 2 RDM ← ((REM)) ; PC ← (PC) + 1 E, R, IPC 3 RI ← (RDM) TRB , TB 4 REM ← (RI.end) TRI 5 RDM ← ((REM)) E, R 6 TMP ← (RDM) 7 ∑ ← (ACC) + (TMP) B U S C A 35 o 8 bits ACC RE we 15 wA RA TRB, WT RT, RE 8 ACC ← (∑ ) 55 WE E habilita PC IPC Incrementa PC 6 bits R/W Leitura/ escrita REM Transf. do PC TPC endereço 6 bits 8 bits TRI Transf. do RI 6 bits RDM transf. reg./barr. TRB TBR RI 8 bits 8 bits TB transf. barr./reg. TMP Transf. do barr. IT wT RT CT ZT 2 bits 8 bits B a r r a m e n t o Controlador IT wT RT CT ZT ... ... TB TPC TRI IPC Agora já sabemos como projetar um processador simples e como os dados se movimentam pelo circuito digital durante a execução de uma instrução de máquina. Falta apenas um último detalhe: como os sinais de controle são adequadamente sequenciados? Quem é responsável por esta tarefa? Controlador 8 bits ACC RE we wA RA 56 Controlador O controlador é o elemento responsável por acionar sequencialmente os sinais de controle apropriados para que uma determinada instrução seja executada. Circuito digital = máquina de estados finitos – deve garantir que em cada ciclo de relógio, o conjunto correto de sinais de controle é acionado. Uma implementação possível – e relativamente simples – baseia-se no uso de flipflops D. 1 TRI 2 E, R 3 TRB, WT 4 RT, RE 5 WE Por exemplo, seja a instrução ADD end O ciclo de execução se dá através dos sinais de controle: Uma possível implementação com FFs seria: TRI S D2 Q2 D1 Q1 FF1 Relógio CLK D5 Q5 D4 Q4 D3 Q3 WE RT , RE TRB , WT E,R FF2 FF3 FF4 FF5 CLK CLK CLK CLK 57 Controlador Poderíamos estender este procedimento para as quatro instruções do nosso processador. Assim, o hardware do controlador corresponderia ao seguinte circuito digital: Quais as vantagens e desvantagens deste tipo de controlador? 58 Controlador O controlador apresentado foi implementado de forma específica para o conjunto de instruções do processador (hardwired). Vantagem: otimização (ganho em velocidade). Porém, em processadores com muitas instruções, este tipo de implementação acaba se tornando custosa, já que exige muito hardware. Além disso, uma vez definido como cada instrução é executada a partir dos sinais de controle, não é mais possível alterá-la, já que está “impressa” no próprio hardware – pouco flexível. Existe alguma alternativa para a construção do controlador? Uma possibilidade é aplicar novamente a ideia de programa armazenado, mas agora dentro do próprio controlador. Um “programa”, armazenado dentro do controlador, contém a sequência de “instruções” responsável pela ativação dos sinais de controle que garantem a execução de uma instrução de máquina (e.g., ADD). Computadores Microprogramados 59 Controlador Historicamente, a escolha por um tipo de abordagem de projeto do controlador dá origem a dois grupos de processadores: Arquiteturas com controle via hardware RISC Processadores ARM Arquiteturas com controle via microprogramação CISC Processadores Intel Vamos então conhecer um pouco melhor estes dois conceitos de projeto... 60 RISC e CISC CISC (complex instruction set computer): Conjunto rico de instruções complexas, semelhantes aos comandos de linguagens de alto nível. Suporte a diversos modos de endereçamento. Um conjunto de instruções complexo faz sentido ao menos de dois pontos de vista: Reduzir o “gap semântico” entre linguagem de máquina e linguagem de alto nível, o que tende a simplificar sobremaneira o projeto de um compilador. Aprimorar o desempenho por meio da criação de programas mais enxutos em termos de instruções simbólicas de baixo nível. Neste contexto, a opção de projeto via microprogramação se mostra bastante elegante. 61 RISC e CISC CISC: Memórias eram lentas e caras Aplicações foram ficando mais complexas Década de 70 Códigos deveriam ser muito simples Reduzir o gap entre a linguagem de programação e as instruções de máquina Solução Aumento do custo para produção de software Surgimento da microprogramação: Sofisticar o uso da linguagem Assembly criando as instruções complexas CISC 62 RISC e CISC CISC: Foco no Hardware Instruções Complexas Microprogramação A complexidade da programação é transferida para o hardware. Conjunto grande de instruções que podem ser executadas pelo hardware. - Técnica que permite implementar as instruções complexas a partir de um pequeno repertório de instruções simples. - Formadas pela combinação de instruções simples. - Expectativa: programas mais enxutos – menos memória para armazenar o código. 63 RISC e CISC CISC: Vantagens • Otimiza o uso da memória RAM. • Aproxima a programação do hardware, simplificando o software. • Possui grande quantidade de instruções capazes de executar várias operações de “alto nível”. Desvantagens • Instruções muitas vezes são demoradas e levam vários ciclos de relógio para serem executadas. • Dificuldade em explorar eficientemente a ideia de pipeline e/ou paralelismo entre instruções. • Dificuldade em testar, detectar e corrigir erros nos microprogramas. 64 RISC e CISC RISC (reduced instruction set computer): Instruções simples e padronizadas. Privilegia o uso de dados armazenados em registradores. Ênfase na otimização da pipeline de instruções – facilitada pelo perfil do conjunto de instruções. Expectativa: hardware mais simples (hardwired), alcançando menor consumo, menor tamanho e maior eficiência. A abordagem RISC surgiu a partir da observação de que muitas vezes as premissas do movimento CISC não se verificavam. As vantagens de se ter instruções mais complexas nem sempre se concretizavam, uma vez que as instruções mais básicas (e.g., de movimentação de dados) eram as mais frequentes nos programas gerados pelos compiladores. 65 RISC e CISC RISC (reduced instruction set computer): Hardware Simples - Não há necessidade de um núcleo de processamento para executar microinstruções. Instruções Simples Memória - Executadas em um número reduzido de ciclos de relógio. - Uso intenso registradores internos. de - Tamanho fixo: facilita a pipeline. - - Endereçamento simples. Acesso restrito à memória principal (apenas instruções de load e store). 66 RISC e CISC RISC (reduced instruction set computer): Vantagens Desvantagens - Velocidade: menos acesso a memória, pipeline. - Necessidade de muita memória interna (registradores, cache). - Simplicidade do hardware: controle direto, instruções simples. - Dificuldade de executar os sistemas operacionais desenhados para o conceito CISC. Apesar desta discussão ser interessante, o que se percebe é uma convergência ou fertilização cruzada entre as duas tendências. Por exemplo, modelos originalmente CISC olharam com atenção a questões tradicionalmente ligadas à vertente RISC, como o uso mais intenso de registradores e uma ênfase no projeto da pipeline. 67 Créditos Este material está baseado nas notas de aula elaboradas pelo Prof. Léo Pini e pelo aluno de doutorado Tiago Novaes. 68