Prévia do material em texto
Professor: Alan Sovano, M.Sc. Disciplina: Microprocessadores (2024.4) SAP- 1 TÓPICOS • Introdução • Por que estudar o SAP? • Microarquitetura do SAP-1 • Conjunto de instruções do SAP-1 • Ciclo de instrução do SAP-1 • Matriz de controle x Microprogramação • Ciclo variável de instrução Prof. Alan Sovano INTRODUÇÃO • Iremos estudar, nos próximos tópicos da disciplina, o computador SAP, cuja sigla significa Simple-as-Possible (Tão Simples Quanto Possível); • O computador SAP é descrito no livro “Microcomputadores e Microprocessadores” do autor Albert Paul Malvino, sendo subdividido em três estágios: o SAP-1, o SAP-2 e o SAP-3, havendo um aumento de complexidade de um nível para o outro; • O SAP-3 tem muitas semelhanças com o processador 8085 da Intel, lançado na década de 1970 e utilizado em muitos projetos até os anos 2000. Prof. Alan Sovano POR QUE ESTUDAR O SAP? • Por que iremos estudar o SAP-1, 2 e 3, se os três sistemas são baseados no processador 8085, que é antigo e tem muito menos funcionalidades em comparação com sistemas computacionais mais atuais? • O computador SAP é um recurso didático, utilizado para mostrar a complexidade de um sistema computacional, mesmo que simples. Apesar de ser um modelo para aprendizagem, ele é totalmente funcional, podendo ser, de fato, construído e utilizado para tarefas básicas. • O estudo do SAP fará com que nós possamos visualizar de forma mais muitos dos conceitos que estudamos sobre a organização estruturada de computadores, memórias, a microarquitetura do processador e de seu nível ISA! • OBS: Aqui, vale uma ressalva – fique atento aos conceitos utilizados na referência que fala sobre o SAP-1, 2 e 3. Estaremos utilizando um livro antigo e de uma área em constante evolução, logo, alguns termos ou informações podem estar desatualizados. Mesmo assim, o SAP será de grande valor para os nossos estudos! Prof. Alan Sovano MICROARQUITETURA DO SAP-1 • O diagrama de blocos ao lado representa a microarquitetura do SAP-1. Ele apresenta vários dos elementos que estudamos na microarquitetura de um processador genérico, os quais são descritos a seguir. • OBS: Alguns elementos estão agrupados em conjunto no diagrama do SAP-1 (como o REM e as chaves de entrada, formando o bloco “Entrada e REM”). Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • Um contador de programa de 4 bits (conta de 00002 até 11112 ou de 0H até FH). Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • O bloco Entrada e REM, o qual é composto pelo Registrador de Endereços de Memória (REM) de 4 bits (gera os endereços de 00002 até 11112 ou de 0H até FH); e por oito chaves de dados, utilizadas para programar o SAP-1; • Pense como se houvesse 8 botões (ou “teclas”) utilizados para definir, endereço por endereço, quais os dados que a memória RAM do SAP-1 irá assumir (eles são utilizados na etapa de programação). Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • Uma memória RAM 16 x 8, a qual irá funcionar como memória de dados e de programa; • No SAP-1, a memória RAM não será alterada pela execução do programa em nenhum momento. Seu conteúdo será definido sempre antes da execução de um programa (lembre-se: esse é um computador didático e simplificado, logo, é um sistema muito mais limitado!). Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • Um registrador de instruções (RI), o qual possui 8 bits. o 4 bits mais significativos (nibble mais significativo) vai para o bloco controlador/sequencializador, enquanto os quatro bits menos significativos (nibble menos significativo) vai para o barramento de dados; • Veremos que o nibble mais significativo representa o opcode da instrução, enquanto o nibble menos significativo é o operando da instrução. Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • O bloco controlador/sequencializador é responsável por dar sincronia ao sistema e gerar os sinais de controle; • Esse bloco incorpora o que chamamos, ao estudar um microprocessador genérico, de unidade de controle, decodificador de instruções e de circuito oscilador (ou gerador de clock); • Antes de cada programa começar, esse bloco envia o sinal 𝐶𝐿𝑅 para o Registrador de Instruções (RI) e o sinal 𝐶𝐿𝑅 para o Contador de Instruções (CI), zerando os valores de saída de ambos os circuitos (inicialização do sistema); • O Controlador/Sequencializador gera uma palavra binária de 12 bits, a qual controla cada um dos outros blocos do sistema. Falaremos mais sobre isso ao descrever o ciclo de instrução do SAP-1. Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • Um somador/subtrator, o qual realiza operações entre os valores dos registradores A e B de soma e subtração (sempre utilizando a notação baseada em complemento de 2); • Um registrador acumulador ou registrador A, o qual lê ou escreve os dados no barramento W e fornece um dos dados para o somador/subtrator; • O Registrador B, o qual funciona como uma segunda entrada de dados para a realização das operações pelo somador/subtrator, sempre indicando qual valor vai ser somado ou subtraído do registrador A (do acumulador). Ele só recebe dados do barramento W (não envia). Prof. Alan Sovano MICROARQUITETURA DO SAP-1 No diagrama do SAP-1, podemos visualizar: • Um registrador de saída, cujo propósito é salvar os dados do processamento e mostrá-los no indicador visual binário, o qual é composto por 8 LED’s, com cada LED indicando 1 bit do registrador de saída; • O indicador visual binário é uma forma do resultado final do processamento se manifestar no mundo externo ao computador. Prof. Alan Sovano CONJUNTO DE INSTRUÇÕES DO SAP-1 • Agora que vimos os componentes básicos do SAP-1, vamos estudar como funciona o seu conjunto de instruções. O SAP-1 possui, ao todo, 5 instruções, conforme descrito na tabela a seguir: Prof. Alan Sovano Instrução Operandos Descrição da operação opcode Períodos de sinal de clock LDA 1 endereço de memória Carrega os dados da RAM no acumulador 0000 6 ciclos ADD 1 endereço de memória Soma os dados da RAM com o acumulador 0001 6 ciclos SUB 1 endereço de memória Subtrai os dados da RAM do acumulador 0010 6 ciclos OUT Sem operandos Carrega os dados do acumulador no registrador de Saída 1110 6 ciclos HLT Sem operandos Para o processamento 1111 3 ciclos CONJUNTO DE INSTRUÇÕES DO SAP-1 Nesse momento, com relação às instruções, você deve saber o seguinte: • A instrução LDA funciona transferindo o conteúdo de determinado endereço da memória RAM para o acumulador (registrador A); • As instruções SUB e ADD (operações aritméticas) funcionam transferindo o conteúdo de determinado endereço da memória RAM para o registrador B. Após isso, a operação (seja qual for) é realizada entre os registradores A e B; • A instrução OUT transfere o conteúdo de A para o registrador de saída, de forma que tal conteúdo seja visualizado pelo indicador visual binário; • A instrução HLT para o processamento do computador, fazendo com que o sinal de relógio fique estático, impedindo qualquer tipo de transição do clock – o computador fica “parado no tempo”, não realizando mais nenhuma tarefa. Prof. Alan Sovano CONJUNTO DE INSTRUÇÕES DO SAP-1 Exercício 1: Seja o programa em assembly ao lado, desenvolvido para o SAP-1, onde a parte de programa e de dados, ambos contidos na memória RAM, são mostrados separadamente. Responda:(a) Qual a saída do indicador visual binário ao término do programa? (a) O que aconteceria se no endereço 5H fosse colocada a instrução OUT novamente (com todos os outros endereços de memória mantendo o mesmo conteúdo)? O programa iria parar? (a) Escreva o conteúdo de cada endereço de memória em linguagem de máquina. Prof. Alan Sovano Endereço Mnemônicos 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH CONJUNTO DE INSTRUÇÕES DO SAP-1 Solução: (a) Vamos analisar o que acontece em cada uma das seis instruções do programa: 1 – A = 01H 2 – A = 01H + 02H = 03H 3 – A = 03H + 03H = 06H 4 – A = 06H - 04H = 02H 5 – Registrador de saída = 02H 6 – Fim do processamento. O registrador de saída tem o valor 02H. Isso é o mesmo que 0000 00102 em binário. Considerando um indicador visual binário composto por 8 LED’s, teríamos: Prof. Alan Sovano Endereço Mnemônicos 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH CONJUNTO DE INSTRUÇÕES DO SAP-1 Solução: (b) O commando OUT em 5H não alteraria o resultado mostrado pelo indicador visual binário, mas, sem o comando HLT em 5H, o clock do sistema continuaria funcionando, fazendo com que o contador de programa (que deveria ficar restrito à memória de programa) invadisse a memória de dados, interpretando dados como instruções. Nesse caso, o conteúdo de 6H pode ser representado por 1111 11112, onde os quatro primeiros bits são o opcode da instrução. O opcode 1111 representa a instrução HLT, portanto, o programa iria parar após processar o endereço 6H como se fosse uma instrução. OBS: Nesse caso, o computador acabou processando um “lixo” (trash), ou seja, uma informação sem significado, a qual apareceu devido ao processamento descontrolado do sistema. Sempre é necessário tomar cuidado para que o processador não gere/processe lixo! Prof. Alan Sovano Endereço Mnemônicos 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH CONJUNTO DE INSTRUÇÕES DO SAP-1 Solução: (c) Para traduzir todas as informações para linguagem de máquina, precisamos saber os opcodes de cada instrução (os quais foram fornecidos nos slides anteriores slide anterior). Ao lado, todas as informações já foram traduzidas para a linguagem de máquina. As instruções OUT e HLT foram traduzidas, respectivamente, como “1110 XXXX” e “1111 XXXX”, pois sabemos somente o opcode dessas instruções. O conteúdo que vem após o opcode, nesse caso, é irrelevante (haverá algum conteúdo, mas não interessa qual é e, com as informações fornecidas, não temos como saber qual seria). Prof. Alan Sovano Endereço Conteúdo (programa) 0000 0000 1001 0001 0001 1010 0010 0001 1011 0011 0010 1100 0100 1110 XXXX 0101 1111 XXXX Endereço Conteúdo (dados) 0110 1111 1111 0111 1111 1111 1000 1111 1111 1001 0000 0001 1010 0000 0010 1011 0000 0011 1100 0000 0100 1101 1111 1111 1110 1111 1111 1111 1111 1111 CONJUNTO DE INSTRUÇÕES DO SAP-1 Solução: (c) Quando escrevemos o programa todo em hexadecimal (ao invés de binário), ainda podemos considerar que ele está em linguagem de máquina (só que, agora, em um formato de visualização mais amigável para o ser humano). Na tabela, a letra “X” indica uma sequência de 4 bits com condições irrelevantes (os mesmos bits irrelevantes do slide anterior). Prof. Alan Sovano Endereço Mnemônicos 0H 09H 1H 1AH 2H 1BH 3H 2CH 4H EXH 5H FXH Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH CONJUNTO DE INSTRUÇÕES DO SAP-1 Exercício 2: Construa um programa para o SAP-1 que execute a seguinte operação: 26 - 10 - 10 + 6 + 6 +10 - 6 E mostre a resposta no indicador visual binário. Prof. Alan Sovano Endereço Mnemônicos/ Dados 0H 1H 2H 3H 4H 5H 6H 7H Endereço Mnemônicos /Dados 8H 9H AH BH CH DH EH FH CONJUNTO DE INSTRUÇÕES DO SAP-1 Solução: Na solução, foram utilizados os últimos endereços de memória para os dados e os primeiros para o programa. O programa poderia seguir uma sequência diferente (e os dados poderiam ser armazenados em outros endereços) Lembre-se: o contador de programa do SAP-1 começa no endereço 0H). Logo, os primeiros endereços devem conter o programa a ser executado (independente da ordem das instruções). Para o indicador visual binário, temos que: 26 - 10 - 10 + 6 + 6 +10 - 6 = 22 2210 = 0001 01102 (oito bits) Prof. Alan Sovano Endereço Mnemônicos/ Dados 0H LDA DH 1H SUB EH 2H SUB EH 3H ADD FH 4H ADD FH 5H ADD EH 6H SUB FH 7H OUT Endereço Mnemônicos /Dados 8H HLT 9H XXH AH XXH BH XXH CH XXH DH 1AH EH 0AH FH 06H CICLO DE INSTRUÇÃO DO SAP-1 • Iremos, agora, estudar com detalhes como ocorre o ciclo de busca-decodificação-execução (ou ciclo de instrução) das instruções do SAP-1. Esse ciclo está intimamente ligado à unidade de controle, a qual gera os sinais de saída apropriados para que cada instrução seja executada adequadamente; • Devemos relembrar, aqui, a diferença entre microoperação, microinstrução e instrução. Podemos discutir tais conceitos, agora, sob a perspectiva do SAP-1: • A operação mais básica possível que um processador executado dentro do seu ciclo de instrução (habilitar um registrador para receber informação do barramento de dados, definir qual operação uma ULA irá realizar, passar o endereço de memória para o REM, etc.) é a microoperação. Uma ou mais microoperações ocorrem em uma microinstrução; • A microinstrução é um conjunto de uma ou mais microoperações, as quais serão definidas por uma palavra de controle (como a palavra de controle gerada pelo controlador/sequencializador do SAP-1); • Várias palavras de controle são geradas ao longo da busca, decodificação e execução de uma instrução. Cada uma dessas palavras de controle é uma microinstrução, as quais se unem para formar as instruções. Lembre-se: um programador de um sistema computacional consegue definir, no máximo, quais instruções um processador irá executar (ele é incapaz de influenciar nas microoperações ou microinstruções que são executadas em cada instrução). As instruções são representadas, para nós, pelos mnemônicos. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 • Todas as instruções do SAP-1 (com exceção da instrução HLT) são compostas por seis microinstruções, com cada microinstrução levando um ciclo de clock. Logo, cada instrução leva seis ciclos de clock para ser executada; • Cada microinstrução é disparada por um estado de um contador de anel, i.e., um circuito cujos sinais de saída são alterados da seguinte forma: T = T6T5T4T3T2T1 T = 000001 T = 000010 T = 000100 T = 001000 T = 010000 T = 100000 • Cada bit setado (igual a 1) dispara uma das seis microinstruções referente à determinada instrução do SAP-1. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 • Abaixo, podemos visualizar o comportamento do contador em anel do SAP-1: Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 • Os três primeiros estados (referentes às três primeiras microinstruções) são iguais para todas as instruções, configurando a etapa de busca do ciclo de instrução; • O estado T1 é chamado de estado de endereço, pois o endereço do contador de instruções é transferido para o REM. Nesse caso, é gerado o seguinte sinal de controle: • Perceba que somente 𝐸𝑝 (que habilita o contador de instruções no barramento)e 𝐿𝑀 (que habilita o REM no barramento) estão ativados, evidenciando a transferência de da informação de um lugar para o outro. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 • O estado T2 é chamado de estado de incremento, pois é quando o contador de instruções/programa é incrementado. Nesse caso, é gerado o seguinte sinal de controle: • Perceba que somente o bit de controle intitulado 𝐶𝑝 está ativado, o qual faz com que o valor do contador de programa seja atualizado (seu valor é somado com mais uma unidade). Esse elemento não está mais habilitado junto ao barramento, com seus dados sendo transferidos para o registrador de instruções somente no próximo ciclo de instrução. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 • O estado T3, última microinstrução da etapa de busca, é chamado de estado de memória, com a memória RAM colocando no barramento os oito bits que serão lidos pelo registrador de instrução (quatro bits referentes ao opcode e quatro referentes ao operando, se houver). Nesse caso, é gerado o seguinte sinal de controle: • Os bits 𝐶𝐸 e 𝐿𝐼 são ativados, habilitando a memória RAM para transferir as informações para o barramento de dados e habilitando o registrador de instruções para receber as instruções. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 • As próximas etapas do ciclo de instrução são referentes à etapa de execução do ciclo de instrução. • A etapa de decodificação ocorre sempre no estágio T3, pois o opcode vai direto do RI para o decodificador (assim que o RI recebe algum conteúdo). O RI está ligado diretamente ao controlador/sequencializador, mas está ligado ao barramento de dados através de um conjunto de portas de três estados (as quais são ativadas/desativadas pelo bit 𝑬𝑰). • Veremos como cada instrução se comporta no SAP-1 durante a execução. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução LDA: • Vamos considerar que desejamos executar a instrução LDA 9H. Em linguagem de máquina, podemos escrever isso como 0000 1001. • No estado T4, o bit 𝐸𝐼 é ativado, assim como o 𝐿𝑀. As saídas de dados do RI são habilitadas, enviando o endereço do operando para o barramento de dados. Esse opcode tem o valor 0000. • O REM também é habilitado, recebendo o endereço do operando da instrução LDA (enviado pelo RI). Esse endereço tem o valor, em nosso exemplo, de 1001. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução LDA: • No estado T5, 𝐶𝐸 é ativado, colocando o conteúdo do endereço indicado pelo REM no barramento de dados. • O bit 𝐿𝐴 também é ativado, fazendo com que o registrador acumulador A receba a informação disponível no barramento de dados (nesse exemplo, o conteúdo do endereço 1001 da memória RAM). Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução LDA: • Por fim, no estado T6, não ocorre nenhuma microoperação – o controlador/sequencializador gera uma palavra binária onde nenhum dos outros elementos do sistema é ativado. Esse é um estado sem operação, abreviado como nop. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução LDA: • Ao lado, temos o diagrama de temporização da instrução LDA, ilustrando quais bits ficam ativos em cada um dos seis estados da instrução. • As linhas tracejadas indicam as bordas de subida do clock, indicando quando os registradores são carregados com o conteúdo presente no barramento de dados. Na borda de subida do sinal 𝐶𝐿𝐾 (ou na borda de descida de 𝐶𝐿𝐾 ) ocorre também o incremento do contador de programa. • Lembre-se: estado corresponde a uma microinstrução, com cada microinstrução possuindo uma palavra de controle diferente! Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução ADD: • Vamos considerar que desejamos executar a instrução ADD BH. Em linguagem de máquina, podemos escrever isso como 0001 1011. • No estado T4, o bit 𝐸𝐼 é habilitado, assim como o 𝐿𝑀. As saídas de dados do RI são habilitadas, enviando o endereço do operando para o barramento de dados. Esse opcode tem o valor 0001. • O REM também é habilitado, recebendo o endereço do operando da instrução ADD (enviado pelo RI). Esse endereço tem o valor, em nosso exemplo, de 1011. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução ADD: • No estado T5, 𝐶𝐸 é ativado, colocando o conteúdo do endereço indicado pelo REM no barramento de dados. • O bit 𝐿𝐵 também é ativado, fazendo com que o registrador B receba a informação disponível no barramento de dados (nesse exemplo, o conteúdo do endereço 1011 da memória RAM). Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução ADD: • Por fim, no estado T6, ocorre a ativação dos bits Eu (habilitação da saída do somador/subtrator no barramento de dados) e 𝐿𝐴 (habilitação da entrada do registrador acumulador A no barramento de dados). • Lembre-se: o conteúdo do acumulador A é alterado somente na borda de subida do sinal de clock! Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução ADD: • Ao lado, temos o diagrama de temporização da instrução ADD, ilustrando quais bits ficam ativos em cada um dos seis estados da instrução. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução SUB: • A instrução SUB (a qual possui o opcode 0010) tem o mesmo comportamento da instrução ADD no estado T4 (Ativação de 𝐿𝑀 e 𝐸𝐼 ) e T5 (ativação de 𝐶𝐸 e 𝐿𝐵). • No estado T6 (ilustrado no diagrama ao lado), além de ativar os bits 𝐿𝐴 e 𝐸𝑈, a instrução SUB também ativa o bit SU (o qual coloca o somador/subtrator no modo de subtração). Essa é a única diferença entre a execução das instruções ADD e SUB. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução SUB: • Ao lado, temos o diagrama de temporização da instrução SUB, ilustrando quais bits ficam ativos em cada um dos seis estados da instrução. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução OUT: • Na etapa de execução da instrução OUT, o registrador de instruções possui os bits 1110 XXXX (perceba que os quatro bits menos significantes não têm importância para a instrução). • No estado T4, o bit 𝐸𝐴 é ativado, habilitando o conteúdo do acumulador no barramento de dados. O bit 𝐿𝑂 também é ativado, fazendo com que o registrador de saída receba o conteúdo disponível no barramento de dados (proveniente do registrador acumulador A). • Quando um valor é carregado no registrador de saída, ele aparece automaticamente no indicador visual binário. • Os estados T5 e T6 são estados sem operação (nop) para a instrução OUT. Prof. Alan Sovano CICLO DE INSTRUÇÃO DO SAP-1 Instrução OUT: • Ao lado, temos o diagrama de temporização da instrução OUT, ilustrando quais bits ficam ativos em cada um dos seis estados da instrução (perceba que não há nenhum bit ativo nos estados T5 e T6). Prof. Alan Sovano Instrução HLT: • A instrução HLT possui um funcionamento diferente das outras instruções. Quando o controlador/sequencializador recebe a instrução HLT (opcode 1111) no estado T3 e a decodifica, o clock do sistema fica travado, parando de gerar qualquer mudança de estado em qualquer outro elemento do SAP-1. • Portanto, a instrução HLT depende somente da fase de busca para ser executada. • Mais exatamente, essa “trava” no clock do sistema ocorre, na prática, quando o registrador de instruções recebe o opcode 1111. Isso irá ocorrer na metade do ciclo T3. Por conveniência, iremos considerar que a instrução HLT ocorre em três ciclos inteiros de clock. • Ao lado, temos o diagrama de temporização da instrução HLT, representando o sinal de clock travado após a instrução ter sido decodificada. CICLO DE INSTRUÇÃO DO SAP-1 Prof. Alan Sovano CICLODE INSTRUÇÃO DO SAP-1 Exercício 3: Seja o programa ao lado desenvolvido para o SAP-1 (explorado no exercício 1). Quanto tempo o programa leva para ser executado? Considere que a frequência de clock do SAP-1 é de 1 kHz. OBS: Lembre-se – o SAP-1 não possui nenhum tipo de pipeline! Prof. Alan Sovano Endereço Mnemônicos 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH CICLO DE INSTRUÇÃO DO SAP-1 Exercício 3: Resolução: Cada instrução leva 6 períodos de clock, com exceção da HLT (a qual consideramos que leva 3 períodos). Logo, a instrução leva 33 períodos de clock para ser executada. Como a frequência é de 1 kHz, o período (que é o inverso da frequência) é de 1 ms. Logo, o programa levará 33 ms para ser executado pelo SAP-1. Prof. Alan Sovano Endereço Mnemônicos 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH • Podemos resumir os sinais de controle (gerados em cada estado e para cada instrução) na tabela ao lado, onde a palavra “macro” indica “macroinstrução” (em contraste com “microinstrução”). O termo “macroinstrução” é referente, nesse contexto, à instrução propriamente dita. • Perceba que na tabela superior são descritos apenas os estados T4, T5 e T6. Lembre-se: todos os outros estados (fase de busca) são iguais para todas as instruções! • Além disso, a tabela superior não descreve a instrução HLT – isso ocorre porque a instrução HLT, como vimos, já é executada no próprio estado T3. • A Tabela inferior descreve, por sua vez, os estados T1, T2 e T3. CICLO DE INSTRUÇÃO DO SAP-1 Prof. Alan Sovano MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO • Estudaremos mais um último tópico relacionado ao SAP-1 – veremos, com um pouco mais de detalhes, como o controlador/sequencializador dele funciona, de forma a discutir um pouco mais sobre unidades de controle de microporcessadores. • O controlador/sequencializador do SAP-1 possui, internamente, vários elementos. Iremos focar em três deles: o contador em anel (que faz a temporização das instruções, como vimos), o decodificador de instruções (o qual decodifica o opcode da instrução) e a matriz de controle (que seria a unidade de controle, a qual estudamos nas aulas sobre “o microprocessador genérico”). Prof. Alan Sovano MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO Prof. Alan Sovano MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO Prof. Alan Sovano ● O decodificador de instruções (contornado em azul) recebe o opcode do RI, decodifica e repassa para a matriz de controle (contornada em vermelho). ● A matriz de controle gera um conjunto de sinais de controle de acordo com a saída do decodificador de instruções e do contador em anel (destacado em verde). ● O contador em anel faz com que haja uma temporização na execução de cada instrução (cada estado do contador é uma microinstrução). MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO • Pode-se perceber que, nesse caso, a unidade de controle é baseada em circuitos combinacionais. Tal característica é, atualmente, atribuída a projetos com filosofia RISC, visto que a execução de instruções através de circuitos combinacionais é muito mais veloz. Lembre-se: na prática, em projetos RISC, busca-se construir o circuito de uma forma que a maioria das instruções sejam executadas em poucos ciclos de clock, como um ou dois (ao contrário, por exemplo, do SAP-1, o qual leva em geral 6 ciclos de clock para cada instrução); • No livro-texto que estamos utilizando, entretanto, é apresentada a ideia de microprogramação, ou seja, de utilizar memórias ROM para fazer o papel desse circuito combinacional; • O livro cita que a microprogramação é interessante para simplificar a construção do controlador/sequencializador, sendo uma alternativa para os projetistas conforme o conjunto de instruções aumento. Essa é uma visão que está mais associada à filosofia de projeto CISC; • Apesar do SAP-1 ter sua unidade de controle construída com circuitos combinacionais, o livro também apresenta uma forma alternativa de construir o SAP-1, pensando em um controle microprogramado. Prof. Alan Sovano MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO • O circuito ao lado substitui a matriz de controle e a maior parte do decodificador de instruções (apenas.a linha referente ao HLT é necessária); • Quando o contador de anel estiver no estado T1, o contador pré-ajustável ao lado vai ser zerado, fazendo a ROM de controle ir para o endereço 0000. • Quando o contador de anel estiver no estado T3, o contador pré-ajustável irá habilitar a entrada LOAD (quando T3 estiver em nível lógico alto). O conteúdo da ROM de endereço passará para a saída do contador pré-ajustável. • A cada ciclo do sinal negativo de clock, o contador pré-ajustável é incrementado. Prof. Alan Sovano MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO • Quando a ROM de controle vai para o endereço 00002 ou 0H, ela gera a palavra de controle salva em 0H. • Quando o contador de anel vai para o estado T2 (e o contador pré-ajustável vai para 00012 ou 1H), a ROM de controle gera a palavra salva em 1H. • No estado T3, a ROM de endereço gera a palavra salva em 2H e habilita a entrada LOAD. • No estado T4, é gerado o sinal de controle cujo endereço foi indicado pela ROM de endereços. Se o valor for 3H, a rotina LDA é executada; se o valor for 6H, a rotina ADD é executada; se o valor for 9H, a rotina SUB é executada; por fim, se o valor for CH, a rotina OUT é executada. • Caso o registrador de instruções receba o opcode 1111, a instrução HLT será executada diretamente (por um circuito combinacional). Prof. Alan Sovano MATRIZ DE CONTROLE X MICROPROGRAMAÇÃO • A figura ao lado ilustra como a matriz de controle poderia ser substituída pelo circuito para controle microprogramado. • Perceba que o circuito para a instrução HLT ainda está presente no diagrama. Prof. Alan Sovano CICLO VARIÁVEL DE INSTRUÇÃO • Caso o SAP-1 seja microprogramado, ainda podemos fazer com que as instruções tenham tamanhos variáveis – quando uma instrução gerar uma palavra de controle que não gera nenhuma operação (nada ou nop), podemos resetar o contador de anel, fazendo com que ele inicie a próxima instrução antes dos 6 ciclos de clock; • Isso faz com que haja uma economia no tempo de processamento de um programa, deixando o sistema mais eficiente. Prof. Alan Sovano CICLO VARIÁVEL DE INSTRUÇÃO • O circuito ao lado ilustra como podemos construir uma unidade de controle microprogramada e com ciclo de instrução variável; • Cada vez que uma palavra de controle que que não faz nada é gerada, um sinal 𝑁𝑂𝑃 = 0 é enviado para a entrada de reset do contador em anel, fazendo com que ele comece a etapa de busca da próxima instrução; • Isso faz com que, por exemplo, a instrução OUT precise de quatro estados para ser executada (os dois últimos estados geram uma palavra de controle que não faz nada). Prof. Alan Sovano CICLO VARIÁVEL DE INSTRUÇÃO Exercício 4: Seja o programa ao lado desenvolvido para o SAP-1 (explorado no exercício 1 e 3). Quanto tempo o programa leva para ser executado? Considere que a frequência de clock do SAP-1 é de 1 kHz. Além disso, considere um ciclo de máquina variável. OBS: Lembre-se – o SAP-1 não possui nenhum tipo de pipeline! Prof. Alan Sovano Endereço Mnemônicos 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT Endereço Dados 6H FFH 7H FFH 8H FFH 9H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH CICLO VARIÁVEL DE INSTRUÇÃO Exercício 4: Resolução:Olhando para a tabela ao lado, vemos quais instruções irão ter um ciclo variável: a instrução LDA terá um ciclo de 5 estados (no estado 6 temos um nop) e a instrução OUT terá 4 estados (nos estados 5 e 6 temos nops). Executamos a instrução LDA 1 vez, ADD 2 vezes, SUB 1 vez, OUT 1 vez e HLT 1 vez. Logo: Nº de ciclos de clock do programa = 1*5 + 2*6 + 1*6 + 1*4 + 1*3 Nº de ciclos de clock do programa = 30 ciclos Como a frequência é de 1 kHz, o período (que é o inverso da frequência) é de 1 ms. Logo, o programa levará 30 ms para ser executado pelo SAP-1 (3 ms a menos em comparação com o ciclo de instrução com duração fixa de 6 períodos de clock). Prof. Alan Sovano OBRIGADO PELA ATENÇÃO! Dúvidas ou sugestões? sovano@ufpa.br Prof. Alan Sovano