Prof. Leonardo Augusto Casillo - PDF
Download "Prof. Leonardo Augusto Casillo"
João Batista Freire Paranhos
1 UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 2 Estrutura de um processador Prof. Leonardo Augusto Casillo
2 Arquitetura de Von Neumann: Conceito de programa armazenado; Dados e instruções armazenados em uma única memória de leitura e escrita. Endereçamento da memória por posição e não pelo tipo; Execução seqüencial de instruções; Único caminho entre memória e CPU. Arquitetura de Harvard: Variação da arquitetura de Von Neumann. Memórias separadas para dados e instruções. Barramentos separados para instruções e dados. Termo originado dos computadores Mark I a Mark IV 2
4 CPU ULA Unidade de controle Bus de Endereços Bus de Dados Bus de Controle MEMÓRIA DE DADOS E DE PROGRAMA UNIDADES DE E/S 4
5 Bus de Endereços da MP Bus de Endereços da MD Bus de Dados da MP C P U Bus de Dados da MD MEMÓRIA DE Bus de Controle DADOS MEMÓRIA DE PROGRAMA UNIDADES DE E/S 5
6 Processadores: CPU, controladores e co-processadores Possuem conjunto de instruções operando sobre instruções e dados organizados em palavras Memórias 2 subsistemas: externa e interna Custo relacionado à capacidade de armazenamento e velocidade de operação Sistema de E/S Conversores de representação física de dados Lentos Sistema de interconexão Comunicação entre componentes através de barramentos e slots sob seu controle Disputa pelo uso de recursos compartilhados.
7 Registradores mais comuns dentro de um processador: Acumulador (AC) Contador de programa (PC) Apontador de pilha (SP) Registrador de instrução (IR) Buffer de endereço de memória (MAR) Buffer de dados da memória (MBR) Registradores de uso geral
8 CPU Unidade operativa (ULA) Unidade de Controle Memória E/S Principal Registradores
9 Processador tipo LOAD-STORE com 40 bits de palavra. Memória consiste em mil posições (palavras) constituídas de 40 bits. Dados e instruções ambos armazenados na memória. Cada instrução possui um código binário de operação (CodOp). Cada número é representado por um bit de sinal e um valor de 39 bits. Uma palavra pode conter duas instruções de 20 bits, sendo 8 bits para o CodOp e endereço de 12 bits, que designa uma palavra de memória (0 a 999).
11 Registradores presentes no IAS: MAR especifica o endereço na memória da palavra a ser lida ou escrita do MBR; MBR contém uma palavra a ser armazenada na memória ou uma palavra recebida da memória; IR contém o código da operação de 8 bits utilizado; IBR contém a instrução (completa) do lado direito de uma palavra da memória; PC contém o endereço do próximo par de instruções a ser buscado na memória; AC armazena temporariamente o operando da ULA e os 40 bits mais significativos de uma multiplicação; MQ quociente de multiplicação: armazena os 40 bits menos significativos de uma multiplicação.
12 Início Busca da próxima instrução Busca: Busca da instrução Atualiza PC Decodificação Execução: Busca operandos (se necessário) Executa Armazena resultado (se necessário) Execução da instrução Parada
13 PC = 12 bits MAR = 12 bits MBR = 40 bits IR = 8 bits IBR = 20 bits AC = 40 bits MQ = 40 bits 1ª busca: 1º teste - Não 2º teste - Sim
14 IAS contém 21 instruções, divididas entre os grupos: Transferência de dados: entre memória e registradores da ULA ou entre dois registradores da ULA; Desvio incondicional: altera a sequência de instruções da memória; Desvio condicional: permite dois pontos de decisão; Aritmética: operações executadas pela ULA; Alteração de endereço: calcula endereços utilizando a ULA para inseri-los em instruções armazenadas na memória.
18 Cada processador possui seu próprio conjunto de instruções, embora exista um subconjunto básico utilizado por todos os processadores de modo geral; Instruções com mesma função podem ter nomes variados para cada processador (ex: multiplicação pode ser MUL ou MPY); Os campos das instruções também variam de acordo com cada processador (ex: um campo pode representar um endereço ou um operando); Existem instruções que referenciam 0, 1, 2 ou 3 registradores; Variáveis são, na verdade, ponteiros de endereços de memória.
19 Para converter um programa de alto nível para baixo nível, deve-se adotar os seguintes passos: Escrever o programa de modo mais detalhado possível na forma de algoritmo (pseudo-código / portugol / português estruturado / descrição narrativa / etc) Opcionalmente, é válido escrever o algoritmo na forma de fluxograma, sendo cada etapa do fluxograma representando uma ação do processador ou uma transferência entre seus registradores (nível RTL) ou transferência processador - memória É necessário conhecer a arquitetura (parte operativa) do processador que executará o programa, em particular a quantidade de bits e palavras, os registradores do processador e as operações da ULA
20 C <= A + B; Uma simples instrução em alto nível pode ser convertida em várias instruções em baixo nível. Para realizar esta conversão, algumas perguntas devem ser respondidas: Quem são e de onde vêm A e B? Onde armazenar C? Quais as entrada da ULA? O processador é do tipo LOAD-STORE (memória processador) ou MÁQUINA COM REGISTRADORES (registrador-registrador ou registrador memória)?
21 Detalhamento da instrução, considerando um computador LOAD-STORE e uma das entradas da ULA fixa (acumulador): Ler valor de A da memória; Transferir o valor de A para o acumulador; Ler valor de B da memória; Transferir o valor de B para o segundo registrador de entrada da ULA; Realizar operação de SOMA (ADD) na ULA; Salvar o valor de C (enviar para a memória) ***Algumas destas instruções podem ser agrupadas em instruções únicas, dependendo do conjunto de instruções do processador. (EX: ler o valor de A da memória e transferir para o acumulador realizadas em uma única instrução)
22 Utilizando instruções do IAS e definindo posições de memória para as variáveis: A = endereço 500 na memória B = endereço 501 na memória C = endereço 502 na memória LOAD M(X) - Código 01H ADD M(X) - Código 05H STOR M(X) - Código 21H
23 LOAD M(500): (011F4) ADD M(501): (051F5) STOR M(502): (211F6)
24 Endereço 000H 001H 002H... 1F4H 1F5H 1F6H Conteúdo 011F4051F5H 211F600000H H H H H ( H) Memória M(1F6) =M(1F4) + M(1F5) C = 5 + 3
25 Considerando um computador com 16 bits de palavra: 4 primeiros bits = CodOp 12 bits restantes = endereço Ex: 1940H 1H = 0001 CodOp 940H = endereço da memória Registradores utilizados no exemplo: PC IR AC
26 Instruções utilizadas no exemplo: 0001 = Carrega AC a partir do end. de memória Mnemônico LOAD; Execução AC <- M[X] 0010 = armazena o valor de AC no end. de memória Mnemônico STORE; Execução M[X] <- AC 0101 = soma AC com valor do end. de memória Mnemônico ADD; Execução AC <- AC + M[X]
27 End. Conteúdo Registradores PC = 300 IR = 1940 AC = Passo 1: Busca da instrução na memória: Simplificando passos: Ocultando MAR e MBR PC = 300 IR < (M[300])
28 End. Conteúdo Registradores PC = 301 IR = 1940 AC = Passo 2: Decodificação da instrução Simplificando: supondo cada instrução com 4 bytes 1º byte = CodOp; 2º a 4º bytes = endereço IR =1940H: codop = 0001; endereço = 940 Instrução = LOAD (AC <- M[X]) *** PC = PC + 1
29 End. Conteúdo Registradores PC = 301 IR = 1940 AC = Passo 3: Execução da instrução LOAD AC <- M[940] Volta ao ciclo de Busca
30 End. Conteúdo Registradores PC = 301 IR = 5941 AC = Passo 4: Busca PC = 301 IR < (M[301])
31 End. Conteúdo Registradores PC = 302 IR = 5941 AC = Passo 5: Decodificação IR =5941H: CodOp = 0101; endereço = 941 Instrução = ADD (AC <- AC + M[X]) PC = PC + 1
32 End. Conteúdo Registradores PC = 302 IR = 5941 AC = Passo 6: Execução AC <- AC + M[X] AC = (M[941]) AC = 0005
33 End. Conteúdo Registradores PC = 302 IR = 2941 AC = Passo 7: Busca PC = 302 IR = 2941 (M[302])
34 End. Conteúdo Registradores PC = 303 IR = 2941 AC = Passo 8: Decodificação IR =2941: CodOp = 0010; endereço = 941 Instrução = STORE (M[X] <- AC) PC = PC + 1
35 End. Conteúdo Registradores PC = 303 IR = 2941 AC = Passo 9: Execução M[941] <- AC (0005) Segue funcionamento...
36 Estudar as instruções do IAS e demonstrar a utilização de cada uma delas com exemplos (trechos de código) exceto SUB M(X), LOAD M(X), LOAD - M(X), JUMP+M(X,20;39) e STOR M(X, 28:39) Fazer a execução detalhada de um programa que realize A x A utilizando o IAS incluir os procedimentos envolvendo MAR e MBR; Elabore um programa em assembly utilizando as instruções do IAS que realize a contagem crescente de um valor de 0 a 10.
37 Considere um microprocessador hipotético de 32 bits, cujas instruções de 32 bits são compostas de dois campos: o primeiro byte contém o código da operação e os demais contêm um operando imediato ou um endereço de operando. A. Qual a capacidade máxima de memória endereçável diretamente (em bytes)? B. Quantos bits são necessários para o contador de programa (PC) e para o registrador de instrução (IR)? C. Qual o procedimento necessário para busca de dados e instruções caso a memória não contenha 32 bits de palavra? Como isto poderia ser realizado?
b) Quantos bits são necessários para o registrador de instruções?
Prova de Conhecimentos Específicos a QUESTÃO: (, ponto) Formato de Instruções Considere um microprocessador hipotético de 2 bits com instruções de 2 bits compostas por dois campos: o primeiro byte contém
Memória Função: armazenamento de dados e instruções Estrutura Lógica: Endereço Conteúdo 0000 0000 h 1010 0010 0256 0A20 h 1101 1100 0D63 52E2 h 0011 1111 0D63 52E3 h 0110 1001 FFFF FFFE h 0111 0101 FFFF