Arquitetura de Computadores Processadores 3 Instruções Waldemiro Arruda
Processador Leitura das instruções Processadores Na memória Instruções Sequenciais ou Interruptivas
Processador Instruções Processadores Sequencial Algoritmos Compiladores Interpretadores Processamento em Batch
Processador Instruções Processadores Sequencial A execução segue uma sequência que pode ser alterada através de outras instruções PARA, ENQUANTO, FAÇA, SE, SENÃO, VÁ PARA,
Processador Instruções Processadores Sequencial Atualmente as instruções são aparentemente executadas de forma sequencial; Na realidade são executadas em paralelo;
Processador Instruções Processadores Interrupções Agente externo causa a parada do processamento Causada por eventos Se um descanso de tela está aparecendo no monitor e o usuário mexe o mouse, ocorre uma interrupção de uma execução
Processador Instruções Processadores Interrupções Processos longos podem sofrer interrupções “ESC para cancelar o salvamento” “CTRL + BREAK para interromper” “Press any key to finish”
Processador Instruções Processadores Tipos Leitura e Escrita / Entrada e Saída Leitura READ -> lê o dado do dispositivo de entrada WRITE -> grava o dado no dispositivo de saída
Processador Instruções Processadores Tipos Lógicas e Matemáticas ADD - > Soma SUB -> Subtrai MULT -> Multiplica DIV -> Divide
Processador Instruções Processadores Tipos Transferência de dados / Movimentação de Dados LOAD / MOV -> Carrega no registrador o conteúdo da memória STORE / MOV -> Grava da memória o conteúdo do registrador
Processador Instruções Processadores Tipos Controle de Fluxo STOP -> Interrompe, Finaliza JMP -> Desvia a execução
Processador Instruções Formato OPCODE OP1 OP2 OP3 OP4 Processadores Processador Instruções Formato OPCODE OP1 OP2 OP3 OP4
Processador Instruções Processadores Formato OPCODE OP -> Operação CODE -> Código OPCODE -> Código da Operação OP1 .... n -> Operação 1.... n
Processador Instruções Processadores Formato OP1 ... N Os operandos, na verdade, são ponteiros para um endereço de memória ou um registrador;
Processador Instruções Processadores Formato Exemplos Pascal cont := cont + cont2 Linguagem de Máquina ADD CONT CONT2
Processador Instruções Processadores Formato Exemplos Pascal cont := 5 Linguagem de Máquina ADD CONT
Processador Instruções Formato OPERAÇÃO OPERANDOS Processadores Processador Instruções Formato OPERAÇÃO OPERANDOS
Processador Instruções Processadores Formatos Leitura e Escrita / Entrada e Saída Ler READ 251 READ – Lê o dado do dispositivo de entrada 251 – Endereço da memória onde irá armazenar o dado
Processador Instruções Processadores Formatos Leitura e Escrita / Entrada e Saída Escrita WRITE 251 WRITE – Grava o dado do dispositivo de saída 251 – Endereço da memória onde irá armazenar o dado
Processador Instruções Formatos Leitura e Escrita READ 1001 WRITE 1010 Processadores Processador Instruções Formatos Leitura e Escrita READ 1001 WRITE 1010
Processador Instruções Processadores Formatos READ 251 1001 011111011 WRITE 251 1010 011111011
Processador Instruções - Formatos Processadores Exemplo programa Ler dois números e imprimir a soma dos mesmos.
Processador Instruções - Formatos Processadores Algoritmo VAR N1, N2, TOTAL: INTEIRO; INICIO LEIA (N1,N2) ; TOTAL := N1 + N2; ESCREVA(TOTAL); FIM
Processador Instruções - Formatos Processadores Pascal var n1,n2,total: integer; begin read(n1,n2); total:= n1 + n2; write(total); end
Processador Processadores Instruções - Formatos Linguagem de Máquina READ 100 -> lê o valor e armazena no endereço 100 READ 101 -> lê o valor e armazena no endereço 101 LOAD 100 -> carrega no registrador o valor contido em 100 ADD 101 -> adiciona o valor em 101 ao valor do registrador STORE 102 -> armazena em 102 o valor do registrador WRITE 102 -> escreve no dispositivo de saída o valor do registrador STOP -> encerra o programa
Processador Instruções - Formatos Processadores Como o processador trabalha 1001 001100100 -> READ 100 1001 001100101 -> READ 101 0000 001100100 -> LOAD 100 0010 001100101 -> ADD 101 0001 001100110 -> STORE 102 1010 001100110 -> WRITE 102 1100 -> STOP
Processador Instruções - Formatos Processadores Processador Instruções - Formatos Load 0000 Store 0001 Add 0010 Sub 0011 Mult 0100 Div 0101 Jmp 0110 Read 1001 Print 1010 Stop 1100
Processador Instruções – Controle de fluxo Processadores SE, SENÃO Altera o fluxo, alterando o CI (Contador de instruções) JMP 110 -> 0110 001101110
Processadores
Processadores READ 100 READ 101 LOAD 100 ADD 101 STORE 102 WRITE 102 STOP
Processadores
Processadores 1- Quando você pressiona a tecla 2, o microprocessador é alertado e instrui a unidade de pré-solicitação de dados (Prefetch Unit) para perguntar à memória principal do computador por uma instrução específica para lidar com o novo dado, uma vez que não há nada ainda no cachê de instruções (Instruction Cache) (veja a seqüência no caminho em amarelo). A nova instrução entra no chip através da unidade de transporte de dados (Bus Unit) da memória principal do computador e é armazenada no Instruction Cache, onde recebe o código "2=X" (veja em azul).
Processadores 2 – A Prefetch Unit então solicita ao Instruction Cache uma cópia do código "2=X" e o envia à unidade de decodificação (Decode Unit – Decodificador de instruções) para posterior processamento (veja em amarelo). No decodificador de instruções (Decode Unit), a instrução "2=X" é traduzida ou decodificada em uma seqüência de códigos binários que vai para a unidade de controle (Control Unit); o cachê de dados (Data Cache) pergunta a eles o que deve fazer com a instrução (veja em azul escuro). Como a Decode Unit tinha a informação de que o número 2 deveria ser armazenado para uso futuro no Data Cache, a Control Unit agora produz a instrução para "2=X". Isso faz com que o número 2 seja enviado a um endereço no Data Cache chamado "X", onde você o vê aguardando futuras instruções (em azul claro).
Processadores 3 – Agora, quando você pressiona a tecla 3, a Prefetch Unit repete o processo, perguntando à memória principal do computador e ao Instruction Cache por instruções específicas para este novo dado. Não encontra ainda nenhuma instrução no Instruction Cache, então a instrução deve vir da memória principal (veja em amarelo). Como você vê no caminho em azul, o novo dado entra no microprocessador procedente da memória principal e é armazenado em outro endereço do Instruction Cache, com o código "3=Y".
Processadores 4 – Mais uma vez, a Prefetch Unit obtém uma cópia do código "3=Y" do Instruction Cache e o envia à Decode Unit para posterior processamento (veja em amarelo) Na Decode Unit, a instrução "3=Y" é traduzida ou decodificada em uma seqüência de código binário que é emitida para a Control Unit e o Data Cache pergunta o que fazer com a instrução (veja em azul escuro). Como a Decode Unit tinha instruído que o número 3 deveria ser armazenado para uso futuro no Data Cache, a Control Unit agora monta a instrução "3=Y". Isso faz com que o número 3 seja enviado para um endereço no Data Cache chamado "Y", onde fica esperando por novas ordens, da mesma forma como havia sido feito com o número 2 (veja em azul claro).
Processadores 5 – Quando você pressiona a tecla de [+], a Prefetch Unit pergunta à memória principal do computador e ao Instruction Cache sobre o novo dado, que deve ser obtido da memória principal (veja em amarelo). Por ser uma nova instrução, o [+] chega ao chip procedente da memória principal, sendo armazenado em um endereço no Instruction Cache como um código "X+Y=Z", mostrando que o ato de adicionar vai ser então realizado ali (veja em azul escuro).
Processadores 6 – A Prefetch Unit então requisita ao Instruction Cache uma cópia do código "X+Y=Z" e o envia para ser processado na Decode Unit (veja em amarelo). Na Decode Unit (veja em azul escuro), "X+Y=Z" é traduzido ou decodificado e então enviado à Unidade de Controle e o Data Cache pergunta o que fazer com a instrução. A Unidade de Controle (UC) envia mensagem de que a função de adição deve ser realizada (veja em azul escuro).
Processadores 7 – Na Control Unit, o código é desmontado e o comando de adição é enviado para a ULA, onde X e Y são somados, depois de enviados pelo Data Cache. A ULA então envia o resultado (5) para a área dos registradores, e esse valor é armazenado num dos endereços ali disponíveis (veja em azul claro).
Processadores 8 – Bem, agora você quer o resultado, então pressiona a tecla [=]. Nesse momento, a Prefetch Unit verifica o Instruction Cache para ver se há algum dado novo, e não o encontra (veja em amarelo). A instrução para [=] segue da memória principal do computador para o chip através da Bus Unit, sendo armazenada num endereço do Instruction Cache como o código "imprima Z" (veja em azul escuro).
Processadores 9 – A Prefetch Unit então pergunta ao Instruction Cache por uma cópia do código "Imprima Z" e a envia à Decode Unit para posterior processamento (veja em amarelo). Na Decode Unit, essa instrução "Imprima Z" é traduzida como uma seqüência de código binário e emitida para a Unidade de Controle, que pergunta o que fazer com a instrução (veja em azul escuro).
Processadores 10 – Agora que o valor de Z foi computado e está residindo na entrada #5 do registrador, o comando de impressão tem apenas de recuperar o conteúdo do registro 5 e mostrá-lo na tela, para que você finalmente possa ver a soma de 2+3 (siga o caminho em azul claro). O microprocessador completou o trabalho e aguarda sua próxima tarefa.