Introdução aos Microprocessadores Colégio Técnico de Campinas - COTUCA Disciplina: TDM II – Arquitetura e Organização de Microprocessadores Departamento Eletro-Eletrônica 25/04/2010 www.corradi.junior.nom.br 1 Um Microprocessador - Atual www.corradi.junior.nom.br 25/04/2010 2 La Motivacion O que é um computador? Combinação de diversos dispositivos e circuitos digitais que podem executar uma seqüência de operações programadas com um mínimo de intervenção humana. A seqüência de operações é denominada de Programa. Como os computadores pensam? (Como executam um programa?) Computadores não pensam! O programador fornece-lhe um programa. (pela Arquitetura) www.corradi.junior.nom.br 25/04/2010 3 Organização Básica de um sistema de Computador www.corradi.junior.nom.br 25/04/2010 4 Organização Básica de um sistema de Computador Unidade Central de Processamento Dispositivos de Entrada Unidade de Controle ULA Dispositivos de Saída Unidade Primária de Armazenamento Dispositivos de Armazenament o Secundário www.corradi.junior.nom.br 25/04/2010 5 Estrutura Típica de um microcomputador de oito bits www.corradi.junior.nom.br 25/04/2010 6 Estrutura Básica do PC Princípios: •Armazenamento; •Transporte de informação •Processamento LógicoAritmético. •Periféricos Internos e externos www.corradi.junior.nom.br 25/04/2010 7 Estrutura simplificada do Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A A Entrada B IR IP Saída Z MA MD www.corradi.junior.nom.br 25/04/2010 8 Microprocessador – [uP] BUS uP AX Registradores; BX CX DX tempA tempB A Entrada A Entrada B Saída Z IR IP MA MD www.corradi.junior.nom.br 25/04/2010 9 Microprocessador – [uP] BUS uP AX BX CX Registradores Barramento; DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD www.corradi.junior.nom.br 25/04/2010 10 Microprocessador – [uP] BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A Registradores Barramento; Unidade Lógica e Aritmética. IR IP MA MD Observar que temos os mesmos princípios do Computador www.corradi.junior.nom.br 25/04/2010 11 Os Registradores BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD São pequenas células de memória que podem armazenar um Byte, Word e DWord. Assim, poderemos armazenar um número ou um código binário dentro de cada um destes registradores. www.corradi.junior.nom.br 25/04/2010 12 O Barramento BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Trata-se de um meio de comunicação de dados entre os diversos registradores e demais periféricos. www.corradi.junior.nom.br 25/04/2010 13 Transporte de dados BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP MA MD Para transportar a informação de um registrador para outro, utilizamos o barramento. Representamos este transporte pela notação reversa: Destino Å Origem www.corradi.junior.nom.br 25/04/2010 14 Transporte de dados BUS uP AX = 10 BX CX DXDX = 10 tempA tempB Entrada A Entrada B Saída Z A IR Assim, se possuirmos o dado 10d em AX e desejarmos transferir este dado para DX, devemos escrever: IP MA MD MOV DX , AX www.corradi.junior.nom.br 25/04/2010 15 ULA – Unidade Lógica e 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... www.corradi.junior.nom.br 25/04/2010 16 ULA – Unidade Lógica e 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,... www.corradi.junior.nom.br 25/04/2010 17 ULA – Unidade Lógica e 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. www.corradi.junior.nom.br 25/04/2010 18 ULA – Unidade Lógica e Aritmética Entrada A Entrada B Operação Saída Z Como resultado destes sinais, é gerado uma resposta em sua saída! www.corradi.junior.nom.br 25/04/2010 19 ULA – Unidade Lógica e Aritmética 5 7 Entrada A Entrada B Operação ADD Saída Z Exemplo: Ao receber os dados 7d e 5d nas entradas A e B da ULA respectivamente, e solicitarmos a operação ADD (soma)... www.corradi.junior.nom.br 25/04/2010 20 ULA – Unidade Lógica e Aritmética 5 7 Entrada B Entrada A Operação ADD Saída Z Ela responderá em sua saída com o valor da operação! 12 www.corradi.junior.nom.br 25/04/2010 21 ULA – Unidade Lógica e Aritmética 5 7 Entrada A Entrada B Operação ADD SUB Saída Z Se alterarmos apenas a operação, ela responde imediatamente! 7-5=2 12 2 www.corradi.junior.nom.br 25/04/2010 22 O Microprocessador O microprocessador para processar uma instrução busca as mesmas na memória de programa [MP]. Utilizando um processo de busca e execução denominado [FETCH]. www.corradi.junior.nom.br 25/04/2010 23 O Microprocessador BUS uP AX BX CX DX tempA tempB A Entrada A Entrada B Saída Z IR IP Para isto, ele utiliza dois registradores auxiliares, memória de endereços [ME] e memória de dados [MD.] Memória-MP 0 MOV AX,0 ME 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 24 O Microprocessador BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP ME = 3 MD Através da ME, o microprocessador informa o endereço a ser acessado na memória. Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 25 BUS O Microprocessador uP AX BX CX DX tempA tempB A Entrada A Entrada B Saída Z IR IP O registrador MD tem a função de receber a instrução ou dado da memória apontado por ME. Memória-MP 0 MOV AX,0 ME = 3 1 MOV BX,1 JMP MD 2 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 26 O Microprocessador Algumas instruções básicas em Assembly: Instrução Descrição MOV destino, origem ADD AX, RX JMP endereço destino Å origem Ax Å Ax + Rx IP Å endereço www.corradi.junior.nom.br 25/04/2010 27 Modelos de Arquiteturas Arquitetura Von Neumann Microcontrolador Intel 8051 – Arquitetura Von Neumann Modificada (Mista) Arquitetura Harvard Arquitetura Harvard Neumann Von X Harvard Neumann Von X Harvard Exemplos de Instruções CISC Exemplos de Instruções RISC RISC x CISC Espaço na Memória de Programa 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 (instruction pointer ), com ZERO. Memória-MP 0 MOV AX,0 ME 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 38 Microprocessador funcionando! BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 ME MD O registrador IP, denominado apontador de instrução (instruction pointer) serve para indicar qual o endereço da próxima instrução na memória de programa [MP] Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 39 Microprocessador funcionando! O uP deve realizar as seguintes atividades repetidas vezes: Busca de instrução (FETCH) onde o IP é incrementado; Decodificação da instrução; As vezes Execução da instrução. ocorrem juntas Fetch 0 Fetch 1 Decod 0 Decod 1 Exec 0 Primeira instrução Exec 1 ... Segunda instrução www.corradi.junior.nom.br 25/04/2010 40 Procedimento para FETCH 0... BUS uP AX BX Para realizar o FETCH, o uP executa os seguintes passos: CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 Memória-MP 0 MOV AX,0 ME 1 MOV BX,1 MD 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 41 FETCH ... BUS uP AX BX Para realizar o FETCH, o uP executa os seguintes passos: 1. ME Å IP CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 0 ME = 0 MD Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 42 FETCH ... BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z Para realizar o FETCH, o uP executa os seguintes passos: 1. ME Å IP 2. MD Å Memória-MP A IR IP = 0 ME = 0 MD=MOV AX,0 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 43 FETCH ... BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z Para realizar o FETCH, o uP executa os seguintes passos: 1. ME Å IP 2. MD Å Memória-MP 3. IR Å MD A IR=MOV AX,0 IP = 0 ME = 0 MD=MOV AX,0 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 44 O procedimento para INC PC ... BUS uP AX BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR=MOV AX,0 IP = 0 ME = 0 MD=MOV AX,0 Após o FETCH de cada instrução, o IP precisa ser incrementado; isto é feito através da ULA, para apontar para a próxima instrução... Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 45 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 ME = 0 MD=MOV AX,0 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 46 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 ME = 0 MD=MOV AX,0 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 47 INC PC ... BUS uP AX BX CX DX tempA tempA =0 tempB 0 Para isto, são realizados os seguintes passos: 1. tempA Å IP 2. ULA Å INC (A) 3. IP Å ULA A Entrada A Entrada B Saída Z INC A 1 IR=MOV AX,0 IP = 01 ME = 0 MD=MOV AX,0 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 48 A 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 ME = 0 MD=MOV AX,0 Para EXECUTAR a instrução MOV AX,0 o uP apenas realiza a transferência: AX Å 0 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 49 Microprocessador funcionando! Após a execução da primeira instrução, um novo ciclo inicia-se... Fetch 0 ... Fetch 1 Decod 0 Decod 1 Exec 0 Primeira instrução Exec 1 Segunda instrução www.corradi.junior.nom.br 25/04/2010 50 FETCH 1 (segunda instrução) ... BUS uP 1. ME Å IP AX = 0 BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 1 ME = 1 MD Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 51 FETCH (segunda instrução) ... BUS uP 1. ME Å IP 2. MD Å Memória-MP AX = 0 BX CX DX tempA tempB Entrada A Entrada B Saída Z A IR IP = 1 ME = 1 MD=MOV BX,1 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 52 FETCH (segunda instrução) ... BUS uP AX = 0 BX 1. ME Å 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 ME = 1 MD=MOV BX,1 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 53 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 A Entrada A Entrada B Saída Z IR=MOV BX,1 IP = 1 ME = 1 MD=MOV BX,1 Memória-MP 0 MOV AX,0 1 MOV BX,1 2 ADD AX,BX 3 JMP 2 4 ... www.corradi.junior.nom.br 25/04/2010 54 Processamento da Informação PROGRAMA tarefa Homem Computador Resposta da tarefa Um programa é constituído por uma seqüência prédeterminada de comandos que devem ser seguidas para que seja atingido o objetivo computacional. www.corradi.junior.nom.br 25/04/2010 55 Programa O Hardware [HW] entende apenas a linguagem de 0s e 1s. Logo qualquer programa descrito em outra linguagem deve ser traduzido para a linguagem de mais baixo nível representada por 0s e 1s. Linguagem de Máquina é uma linguagem binária composta por um conjunto de comandos que são denominados de instruções. O programa em linguagem de máquina é armazenado na memória de programa [MP], também chamada memória da máquina. www.corradi.junior.nom.br 25/04/2010 56 Palavra de Computador – Instruções ou Dados Palavra de Instrução - Formato das Instruções 10001 10000001 00001111 opcode operando • O formato de uma instrução normalmente é retangular dividido em campos de bits. • Cada campo pode assumir o valor: – Opcode (primeiro campo) – Valor de uma constante – Endereço de memória – Endereço/nome de um registrador www.corradi.junior.nom.br 25/04/2010 57 Formato das Instruções O formato de uma instrução normalmente é retangular dividido em campos de bits. FONTE DESTINO opcode operando FONTE DESTINO opcode FONTE operando www.corradi.junior.nom.br 25/04/2010 58 Visão geral de Linguagem Assembly Mnemônicos Código de Operação Binário/Hexadecimal Descrição LDA 01011011/5B LOAD: O dado armazenado no endereço do operando é carregado no acumulador ADD 01101101/6D ADD: O operando é adicionado ao dado armazenado no acumulador e o resultado da soma é armazenado no acumulador SUB 10100010/A2 SUB: O operando é subtraído do dado armazenado no acumulador, e o resultado da subtração é armazenado no acumulador. STA 10001010/8A STORE: O conteúdo do acumulador é armazenado na memória na posição especificada pelo endereço do operando www.corradi.junior.nom.br 25/04/2010 59 Visão geral de Linguagem Assembly JMP 01001100/4C JUMP: A próxima instrução será obtida da especificada no endereço do operando em vez de ser obtida da seqüência. JPZ 01110110/76 JUMPZ: A próxima instrução será obtida do endereço do operando se o acumulador contiver zero, caso contrário, será obtido da seqüência. HLT 00111111/3F PARE: O computador para de operar. Não há mais instruções a executar www.corradi.junior.nom.br 25/04/2010 60 Classificação das Instruções Transferência de dados Move dados entre registradores ou entre locações de memória e registradores; Ex.: "MOVEs", "LOADs", "STOREs" e EXCHANGE; Processamento de dados Grupo Aritmético "ADDs", "SUBTRACTs", "INCREMENTs" ou DECREMENTs" dados nos registradores ou na memória; Grupo Lógico "ANDs", "ORs", "XORs", "COMPAREs", "ROTATEs" ou "COMPLEMENTs" dados entre registradores ou entre locações de memória e registradores; Controle "JUMPs", "CALLs" e "RETs" condicionais ou incondicionais; www.corradi.junior.nom.br 25/04/2010 61 Classificação das Instruções Instruções de transferência de dados (MOV) MOV A,R1 (A) <- (R1) Move o conteúdo do registrador R1 para o acumulador. MOV 23h,40h (23h) <- (40h) Move o conteúdo do endereço de memória 40h para o endereço de memória 23h. MOV 22h,A (22h) <- (A) Move o conteúdo de A para o endereço de memória 22h. www.corradi.junior.nom.br 25/04/2010 62 Classificação das Instruções Instruções de transferência de dados (LOAD, STORE) LDA 23h Transfere o valor armazenado no endereço 23h da memória para o acumulador STA 55h Transfere o valor do acumulador para o endereço de memória 55h. www.corradi.junior.nom.br 25/04/2010 63 Classificação das Instruções Instruções Aritméticas e Lógicas (ADD, OR, ...) ADD A,23h (A) <- (A)+(23h) Soma o valor do registrador acumulador com o valor armazenado no endereço de memória 23h e grava o resultado no acumulador. ADD 25h,15h (A) <- (25h)+(15h) Soma o valor armazenado no endereço 25h com o valor armazenado no endereço 15h e guarda resultado no acumulador. ADD A,#4h (A) <- (A)+4 Soma o valor do acumulador com o número 4h. www.corradi.junior.nom.br 25/04/2010 64 Classificação das Instruções Instruções de Teste e Desvio (JMP, JNZ, ...) JZ 23h Salta se o acumulador é zero para a posição de memória de programa 23h (muda o registrador PC) JNZ 22h Salta se o acumulador não é zero para a posição de memória de programa 22h (muda o registrador PC). JMP 87h Salta para o endereço 87h (PC) www.corradi.junior.nom.br 25/04/2010 65 Em resumo mnemônico Comando em linguagem de alto nível Comandos em Assembly X=AxB+C-D LDA A MUL B ADD C SUB D STA X HLT Instruções em linguagem de Máquina 1100011111110000 1110000000001111 0010000011100000 0001110001101010 0010010000000011 1111000000000000 A representação em Assembly é o correspondente valor em binário varia para cada Microprocessador. www.corradi.junior.nom.br 25/04/2010 66 Escrevendo um Programa Computador Hipotético Escrever em linguagem de máquina um programa para nosso computador hipotético. Situação Subtrai uma palavra de dados de oito bits (X) de outra palavra de dados de oito bits (Y). Os valores de X e de Y estão armazenados nos endereços 0300 e 0301, respectivamente. Armazenar a diferença no endereço de memória 0302. Se o valor da diferença for zero, o programa desvia para o endereço 0400, buscando lá a próxima instrução a ser executada. Caso contrário, o programa para. www.corradi.junior.nom.br 25/04/2010 67 Solução Mnemônicos LDA 0301 SUB 0300 STA 0302 JPZ 0400 HLT Descrição/Comentário Carregar o dado (Y) de endereço 0301 no acumulador Subtrai o dado (X) no endereço 0300 do acumulador Armazena a diferença no endereço 0302 Se a diferença é zero, desvie para 0400 para obter a próxima instrução Se a diferença não é zero, para o programa www.corradi.junior.nom.br 25/04/2010 68 Dúvidas.....????? www.corradi.junior.nom.br 25/04/2010 69 Atividades: “Baixar” informações do site: www.corradi.junior.nom.br Estudar os tutoriais sobre Microprocessadores; Resolver exercícios de listas.