Microprocessador Afonso Ferreira Miguel Microprocessador Princípios: •Armazenamento; •Transporte de informação; •Processamento Lógico-Aritmético. Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Registradores; Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Registradores Barramento; Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Registradores Barramento; Unidade LógicoAritmética. Observar que são os mesmos princípios do Computador Registradores BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Pequenas células de memória que podem armazenar um Byte, Word, DWord. Assim, podemos armazenar um número dentro de cada um. Barramento BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Meio de comunicação entre os diversos módulos. Transporte de dados BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP Para transportar a informação de um módulo para outro, utilizamos o barramento. Representamos este transporte pela notação reversa: MA MD Destino Origem Transporte de dados BUS uP AX = 10 BX CX DXDX = 10 tempA tempB Entrada A Entrada B Saída Z A IR IP Assim, se possuirmos o número 10 em AX e queremos transferir para DX, podemos escrever: MA MD DX AX ULA – Unidade Lógico-Aritmética BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Unidade responsável por realizar operações como Soma (ADD), subtração (SUB), incremento (INC), entre outras... ULA – Unidade Lógico-Aritmética Entrada A Entrada B Operação Saída Z Esta unidade sempre recebe um ou dois parâmetros nas Entradas A e B,... ULA – Unidade Lógico-Aritmética Entrada A Entrada B Operação Saída Z Esta unidade sempre recebe um ou dois parâmetros nas Entradas A e B, e a operação. ULA – Unidade Lógico-Aritmética Entrada A Entrada B Operação Saída Z Como resultado destes sinais, ela gera uma resposta em sua saída! ULA – Unidade Lógico-Aritmética 5 7 Entrada A Entrada B Operação ADD Saída Z Exemplo: Ao receber os valores 7 e 5 nos canais A e B da ULA respectivamente, e solicitarmos a operação ADD (soma)... ULA – Unidade Lógico-Aritmética 5 7 Entrada A Entrada B Operação ADD Saída Z 12 Ela responderá em sua saída com o valor da operação! ULA – Unidade Lógico-Aritmética 5 7 Entrada A Entrada B Operação ADD SUB Se alterarmos apenas a operação, ela responde imediatamente! Saída Z 12 2 7-5=2 Microprocessador Como visto anteriormente, o microprocessador busca as instruções do programa a ser executado na memória. Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP Para isto, ele utiliza dois registradores auxiliares MA e MD. Memória 0 MOV AX,0 MA 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA = 3 MD Através do MA, o microprocessador informa o endereço a ser acessado na memória. Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP O registrador MD tem a função de receber a instrução ou dado da memória apontado por MA. Memória 0 MOV AX,0 MA = 3 1 MOV BX,1 JMP MD 2 2 ADD AX,BX 3 JMP 2 4 ... Microprocessador Algumas instruções básicas em Assembly: Instrução Descrição MOV origem, destino ADD p1, p2 JMP endereço destino origem p1 p1 + p2 IP endereço Microprocessador funcionando! BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 Ao ligarmos o microprocessador, ocorre um sinal de RESET que inicializa o registrador IP com ZERO. Memória 0 MOV AX,0 MA 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... Microprocessador funcionando! BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 O registrador IP (instruction pointer) serve para indicar qual o endereço da próxima instrução na memória. Memória 0 MOV AX,0 MA 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... Microprocessador funcionando! Como visto anteriormente, o uP realiza as seguintes atividades repetidas vezes: Busca de instrução (FETCH) onde IP é incrementado; Decodificação da instrução; As vezes ocorrem juntas Execução da instrução. Fetch 0 ... Fetch 1 Decod 0 Decod 2 Exec 0 Primeira instrução Exec 1 Segunda instrução FETCH ... BUS uP AX BX Para realizar o FETCH, o uP realiza os seguintes passos: CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 Memória 0 MOV AX,0 MA 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... FETCH ... BUS uP AX BX CX Para realizar o FETCH, o uP realiza os seguintes passos: 1. MA IP DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 MA = 0 MD Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... FETCH ... BUS uP AX BX CX DX tempA Para realizar o FETCH, o uP realiza os seguintes passos: 1. MA IP 2. MD Memória tempB Entrada A Entrada B Saída Z A IR IP = 0 MA = 0 MD=MOV AX,0 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... FETCH ... BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR=MOV AX,0 IP = 0 MA = 0 MD=MOV AX,0 Para realizar o FETCH, o uP realiza os seguintes passos: 1. MA IP 2. MD Memória 3. IR MD Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... INC PC ... BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR=MOV AX,0 IP = 0 MA = 0 MD=MOV AX,0 Após o FETCH de cada instrução, o IP precisa ser incrementado através da ULA, para apontar para a próxima instrução... Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... INC PC ... BUS uP AX BX Para isto, são realizados os seguintes passos: 1. tempA IP CX DX tempA tempA =0 tempB 0 Entrada A Entrada B Saída Z A IR=MOV AX,0 IP = 0 MA = 0 MD=MOV AX,0 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... INC PC ... BUS uP AX BX CX Para isto, são realizados os seguintes passos: 1. tempA IP 2. ULA INC (A) DX tempA tempA =0 tempB 0 Entrada A Entrada B Saída Z INC A 1 A IR=MOV AX,0 IP = 0 MA = 0 MD=MOV AX,0 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... INC PC ... BUS uP AX BX CX DX tempA tempA =0 tempB 0 Entrada A Entrada B Saída Z INC A Para isto, são realizados os seguintes passos: 1. tempA IP 2. ULA INC (A) 3. IP ULA 1 A IR=MOV AX,0 IP = 01 MA = 0 MD=MOV AX,0 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... Execução ... BUS uP AX AX =0 BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR=MOV AX,0 IP = 1 MA = 0 MD=MOV AX,0 Para EXECUTAR a instrução MOV AX,0 o uP apenas realiza a transferência: AX 0 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... Microprocessador funcionando! Como visto anteriormente, após a execução da primeira instrução, um novo ciclo se inicia... Fetch 0 ... Fetch 1 Decod 0 Decod 2 Exec 0 Primeira instrução Exec 1 Segunda instrução FETCH (segunda instrução) ... BUS uP 1. MA IP AX = 0 BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 1 MA = 1 MD Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... FETCH (segunda instrução) ... BUS uP 1. MA IP 2. MD Memória AX = 0 BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 1 MA = 1 MD=MOV BX,1 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... FETCH (segunda instrução) ... BUS uP AX = 0 BX 1. MA IP 2. MD Memória 3. IR MD CX DX tempA tempB Entrada A Entrada B Saída Z A IR=MOV BX,1 IP = 1 MA = 1 MD=MOV BX,1 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... Execução (segunda instrução)... BUS uP AX = 0 BXBX =1 E a segunda instrução é executada... MOV BX,1 CX BX 1 DX tempA tempB Entrada A Entrada B Saída Z A IR=MOV BX,1 IP = 1 MA = 1 MD=MOV BX,1 Memória 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ...