Instruções de Máquina Operação básica (primitiva) que o hardware é capaz de executar diretamente ◦ Conjunto de bits que indica ao processador uma operação que ele deve realizar O projeto de um processador é centrado no conjunto de instruções de máquina que se deseje que ele execute Quanto menor e mais simples o conjunto de instruções, mais rápido é o ciclo de tempo do processador Existem duas tecnologias de projeto de computadores: ◦ Sistemas com conjunto de instruções complexo (complex instruction set computers – CISC) ◦ Sistemas com conjunto de instruções reduzido (reduced instruction set computers – RISC) Um processador possui instruções capazes de realizar: ◦ Operações matemáticas ◦ Movimentação de dados (memória – UCP e viceversa) ◦ Entrada e saída (leitura e escrita em dispositivo de E/S) ◦ Controle (desvio de seqüência de execução, parar, etc...) Exemplos: ◦ ◦ ◦ ◦ Intel 8080: 78 instruções Intel 8088: 117 instruções 80486: 286 instruções Pentium II: 217 instruções Uma instrução é dividida basicamente em dois campos: Código de operação ou opcode C. Op. Operandos ◦ Código de Operação: indica qual operação deverá ser realizada, por exemplo: Realizar uma operação lógica entre dois valores Parar a execução de um programa Testar uma condição: Se teste verdadeiro, então desviar para outro endereço fora da seqüência O campo código de operação possui, nos processadores atuais, 1 byte de tamanho Pode-se, então, ter 28 instruções diferentes ◦ Operando: indica a localização do dado que será manipulado O campo operando pode estar subdividido em outros campos no caso de mais de um operando, por exemplo: Em uma instrução cujo código de operação é uma soma, são necessários três operandos Dois operandos para armazenar as parcelas Um operando para armazenar o total Instrução de Soma: C. Op. Operando 1 (operando 3) Operando 2 Operando 3 (operando 1) + (operando 2) Outro formato para instrução de soma que produz o mesmo efeito: C. Op. Operando 1 Operando 2 (operando 1) (operando 1) + (operando 2) (operando 2) (operando 1) + (operando 2) Pode-se também usar o registrador acumulador para representar a mesma operação C. Op. ACC Operando ACC + (operando) Iremos analisar as etapas realizadas pelo processador para a execução de uma instrução de máquina Ciclo de Instrução Iremos considerar um computador hipotético com as seguintes características: ◦ ◦ ◦ ◦ ◦ Palavra de 12 bits Endereços de 8 bits (256 células de memória) Células de 12 bits ACC, RI e RDM com 12 bits de tamanho CI e REM com 8 bits de tamanho ◦ Instruções de um operando apenas C. Op. de 4 bits e operando de 8 bits Campo operando sempre indica o endereço de memória do dado, exceto em instruções de desvio C. OP. 4 bits Operando 8 bits Instruções disponíveis: listadas na tabela a seguir C. Op. 0 Sigla HLT Descrição Parar execução do programa (HALT, em inglês) 1 LDA op ACC (op) (LOAD, em inglês) 2 STR op (op) ACC (STORE, em inglês) 3 ADD op ACC ACC + (op) 4 SUB op ACC ACC - (op) 5 JZ op Se ACC = 0, então CI op 6 JP op Se ACC > 0, então CI op 7 JN op Se ACC < 0, então CI op 8 JMP op CI op C. Op. 9 A Sigla Descrição Ler dado da porta de entrada e armazená-lo GET op em Op Colocar na porta referente à impressora o PRT op valor armazenado em (op) O ciclo de instrução pode ser mais detalhado conforme as especificações do processador listadas anteriormente Início Buscar a próxima instrução Interpretar instrução (decodificar) Executar instrução Armazenar resultados Buscar operandos Fim Início Subciclo de busca Buscar a próxima instrução Incrementar O CI Decodificação do C. Op. Subciclo de Execução Tem operando? sim Buscar e armazenar operando não Executar a operação Armazenar resultados Fim A fase de busca de instrução é idêntica para qualquer instrução A fase de decodificação e execução depende da instrução Vamos analisar como exemplo a execução de duas instruções na seguinte seqüência: LDA op e ADD op Considere que a instrução LDA está armazenada na MP no endereço decimal 2 (216 ou 000000102) 1B4 0001 C. Op. 10110100 Operando B416 Considere que a instrução ADD está armazenada na MP no endereço decimal 3 (316 ou 000000112) 3B5 0011 C. Op. 10110101 Operando B516 00 01 02 03 B4 B5 B6 FF 1B4 3B5 1A7 07D Valores dos registradores: ◦ CI=02 (Endereço colocado pelo sistema operacional para iniciar a execução do programa) ◦ RI=31716 (última instrução executada) ◦ ACC=20B16 (valor obtido da execução anterior) ◦ REM=B3 e RDM=7BC CPU ULA MP ACC CI RDM 20B 02 7BC 00 01 02 03 1B4 3B5 B3 RI 317 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D A partir desta configuração, inicia-se o ciclo da instrução LDA ◦ Busca da Instrução A UC aciona a transferência do conteúdo de CI para REM (endereço de LDA) REM CI O conteúdo de REM é colocado no barramento de endereços e a UC ativa a linha READ do barramento de controle A memória recebe o endereço e coloca o conteúdo da célula 02 no barramento de dados (1B4) O conteúdo do barramento de dados chega no RDM ◦ RDM Mem O conteúdo do RDM é enviado para o RI ◦ RI RDM Enquanto está acontecendo a operação de leitura na memória, o CI está sendo incrementado Como, no nosso exemplo, qualquer instrução ocupa uma célula de memória, o CI será incrementado de uma unidade (CI = 03) para apontar para a próxima instrução ◦ CI CI + 1 Valores dos registradores após o subciclo de busca da instrução 1B4 CPU ULA MP ACC CI 20B 02 03 RDM 7BC 1B4 00 01 02 03 1B4 3B5 B3 02 RI 317 1B4 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D Decodificação de Instrução ◦ A UC emite um sinal para que o RI transfira para o decodificador de instruções os 4 bits do C. Op. Decodificador 0001 ◦ O decodificador seleciona, através de uma lógica nele existente, a linha de saída correspondente para a UC que emitirá os sinais adequados e em uma determinada seqüência para a execução da instrução ◦ Como na instrução LDA não há operando a ser buscado, inicia-se então a execução da instrução Execução de Instrução ◦ A execução da instrução LDA resume-se em buscar na memória o conteúdo da célula B4 ◦ A UC comanda o RI para enviar os bits referentes ao endereço de memória para o REM ◦ A UC ativa a linha READ do barramento de controle ◦ A memória recebe o endereço que chega pelo barramento de endereço, decodifica e envia o conteúdo da célula B4 para o barramento de dados ◦ RDM recebe o conteúdo do barramento de dados RDM 1A7 ACC RDM ◦ A UC emite um sinal para o RDM enviar o seu conteúdo para o ACC Valores dos registradores após a execução da instrução 1B4 CPU ULA ACC MP CI 20B 1A7 02 03 RDM 1B4 1A7 00 01 02 03 1B4 3B5 02 B4 RI 317 1B4 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D Considerando que ADD é a instrução seguinte a ser executada, o CI já contém o seu endereço Inicia-se a busca da próxima instrução Busca da Instrução ◦ A UC aciona a transferência do conteúdo de CI para REM (03) REM CI ◦ O conteúdo de REM é colocado no barramento de endereços e a UC ativa a linha READ do barramento de controle ◦ A memória recebe o endereço e coloca o conteúdo da célula 03 no barramento de dados (3B5) ◦ O conteúdo do barramento de dados chega no RDM RDM Mem ◦ O conteúdo do RDM é enviado para o RI RI RDM ◦ Enquanto está acontecendo a operação de leitura na memória, o CI está sendo incrementado, passando a valer 4 CI CI + 1 Valores dos registradores após o subciclo de busca da instrução 3B5 CPU ULA ACC 20B 1A7 MP CI 03 04 RDM 1A7 3B5 00 01 02 03 1B4 3B5 B4 03 RI 1B4 3B5 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D Decodificação de Instrução ◦ A UC emite um sinal para que o RI transfira para o decodificador de instruções os 4 bits do C. Op. Decodificador 0011 ◦ O decodificador seleciona a linha de saída correspondente para a UC que emitirá os sinais adequados para a busca do operando Busca de Operando ◦ O endereço do operando a ser buscado na MP está do RI, no campo operando (B5) ◦ UC emite sinais para que o REM receba o operando REM B5 ◦ REM coloca o seu conteúdo no barramento de endereços ◦ A UC ativa a linha READ no barramento de controle ◦ A memória recebe o endereço e coloca o conteúdo da célula B5 no barramento de dados (07D) ◦ O conteúdo do barramento de dados chega no RDM RDM Mem Valores dos registradores após a busca do operando 07D CPU ACC ULA 20B 1A7 MP CI 03 04 RDM 3B5 07D 00 01 02 03 1B4 3B5 03 B5 RI 1B4 3B5 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D Execução de Instrução ◦ A ULA recebe o primeiro operando da soma que está no acumulador ULA 1A7 ACC RDM ULA ACC ◦ O conteúdo do RDM (segunda parcela da soma) é colocado no ACC ◦ A ULA recebe a segunda parcela da soma CPU 1A7 07D MP ACC CI 1A7 07D 03 04 RDM 3B5 07D 00 01 02 03 1B4 3B5 03 B5 RI 1B4 3B5 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D ◦ A UC comanda a ULA para realizar a adição dos dois valores 1A7 + 07D = 224 ◦ O resultado da adição é colocado no ACC ACC 224 Valores dos registradores após a execução da instrução 3B5 CPU ACC ULA MP CI 07D 224 03 04 RDM 3B5 07D 00 01 02 03 1B4 3B5 03 B5 RI 1B4 3B5 UC REM DI B4 B5 B6 FF Barramento de controle 1A7 07D