Funcionamento básico de um computador

Documentos relacionados
Aula 14 Funcionamento de Processadores (Visão específica)

Funcionamento básico de um computador

Introdução à arquitetura do hardware

Projetando um Computador

Projetando um Computador Parte II Arquitetura do Processador BIP

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Organização e Arquitetura de Computadores I

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS

Oganização e Arquitetura de Computadores

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

Data Path / Control Path Controle do MIPS

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

12 de Março de Aula 5

NEANDERWIN. Algumas características do processador Neander são:

Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva

Neander - características

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Fundamentos de Arquitetura e Organização de Computadores

Construção de uma via de dados, abordagem monociclo, multiciclo e pipeline

Linguagens de Programação:

Introdução a Programação Aula 01

Linguagem de Montagem do NeanderX

ORGANIZAÇÃO DE COMPUTADORES

Figura 8: modelo de Von Neumann

A Arquitetura: conjunto de instruções

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Solução Lista de Exercícios Processadores

Prova Modelo. Nome: Número:

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Informática Aplicada

Sistemas Numéricos. Tiago Alves de Oliveira

Arquitetura de Computadores Moderna

Introdução aos Computadores Introdução à Ciência de Computadores Outubro / 16

Arquitetura e Organização de Computadores

Histórico e Evolução da Computação

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

ção de Computadores I

Organização de Computadores 1

Aritmética Computacional. Prof. Leonardo Barreto Campos 1

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Processador. Processador

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Laboratório de Microprocessadores e Microcontroladores. Experimento 7: Conversor Analógico/Digital e Conversor Digital/Analógico

O Sistema de Computação

Conjunto de Instruções (ISA) I

Do alto-nível ao assembly

Prof. Leonardo Augusto Casillo

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Prof. Adilson Gonzaga. Interface com Displays

NEANDERWIN - Resumo operacional

INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA

OBSERVAÇÕES: EXERCÍCIOS

Capítulo VI Circuitos Aritméticos

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v

Capítulo 6. Aritmética Computacional. 6.1 Números com Sinal e Números sem Sinal

RESOLUÇÃO. Identifique todas as folhas! Não escreva nada fora dos rectângulos

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Prof. Adilson Gonzaga

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Programação ao nível da máquina. Operações lógicas e aritméticas

Organização e Projeto de Computadores

Introdução à Arquitetura de Computadores

Arquitetura FPU: Implementação MIPS32. Guilherme Fernandes Raphanelli Diogo D. Fonseca dos Santos

Módulos Combinatórios

10. CPU (Central Processor Unit) Conjunto das instruções Estrutura interna Formato das instruções...

flutuante 11. Aritmética de vírgula Operações em números fraccionários

Vírgula flutuante Aula 6

Conjunto de Instruções (ISA) II

Microprocessadores e Aplicações

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização

2.º Teste de Introdução à Arquitetura de Computadores IST LEIC-Taguspark 1.º Semestre 2014/2015 Duração: 60 minutos 16 dezembro 2014

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

Microprocessadores. Arquitectura Geral de Microprocessador

O Computador Neander Neander - Computador Hipotético Didático

Introdução aos Sistemas de Microprocessadores

Disciplina: Arquitetura de Computadores

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

SISTEMAS DIGITAIS MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL

Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?

Arquitetura de Um Processador I

Microcontroladores. Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage:

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

Figura 1 - Somador para dois números de 4 bits com extensores lógicos (EL) e Aritméticos(EA).

Introdução à programação em linguagem assembly

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Montadores e Compiladores

Transcrição:

Funcionamento básico um computador Processador Unida dados Unida controlo Arquitetura computador básica Linguagem assembly Exemplos Arquitetura Computadores Funcionamento básico um computador

Estrutura um computador Processador Memória Instruções Unida Controlo Memória Unida Periféricos (entradas/saídas) Arquitetura Computadores Funcionamento básico um computador 2

Memória: elemento fundamental Valor a escrever Processador Memória Instruções Célula 0 Célula Célula 2 Célula 3 Célula 4 Célula 5 Célula 6 Célula 7 Célula Célula 9 Célula 0 Célula Célula 2 Célula 3 Célula 4 Célula 5 Valor lido Unida Controlo Unida Memória Periféricos (entradas/saídas) Os periféricos são uma espécie células memória cujos bits ligam ao mundo exterior. Arquitetura Computadores Funcionamento básico um computador 3

Unida dados (versão ) Problema: Um somador tem duas entradas, mas a memória só tem uma saída. Solução: um registo para memorizar um dos operandos - do.º operando 2 - do 2.º operando ESCR_A Registo A.º operando Somador Memória dados 2.º operando resultado da soma Arquitetura Computadores Funcionamento básico um computador 4

Unida dados (versão 2) Problema: Resultado não po ir para a memória Solução: Usar o registo para esse efeito (tem ser báscula; trinco não). O registo chama-se tradicionalmente acumulador. enreço do 2.º operando ESCR_A Registo A.º operando Somador Memória dados 2.º operando resultado da soma Arquitetura Computadores Funcionamento básico um computador 5

Unida dados (versão 3) Problema: Entrada do registo não po vir dois lados (registo e memória) Solução: Usar um multiplexer para selecionar a entrada. SEL_A ESCR_A enreço MUX Registo A Memória dados.º operando 2.º operando Somador resultado da soma Arquitetura Computadores Funcionamento básico um computador 6

Unida dados (versão 4) Problema: Como guardar resultados na memória? Solução: Ligar saída do registo à entrada da memória (o resultado vai sempre para o registo, pois copia-se) SEL_A ESCR_A enreço MUX Registo A Somador Memória dados.º operando 2.º operando resultado da soma Arquitetura Computadores Funcionamento básico um computador 7

Unida dados (versão 5) Problema: Como suportar várias operações? Solução: Usar uma ALU (Arithmetic and Logic Unit). O sinal SEL_ALU seleciona a operação. SEL_A ESCR_A enreço MUX Registo A Memória dados.º operando 2.º operando SEL_ALU ALU resultado da operação Arquitetura Computadores Funcionamento básico um computador

Estrutura da ALU.º operando 2.º operando Somador entrada transporte SEL_ALU (0) SEL_ALU () Multiplexer resultado Arquitetura Computadores Funcionamento básico um computador 9

Instruções com sinais controlo enreço instruções Memória instruções enreço dados Memória dados SEL_A ESCR_A MUX Registo A.º operando 2.º operando SEL_ALU ALU resultado da operação Arquitetura Computadores Funcionamento básico um computador 0

Contador programa (PC) enreço instruções PC Memória instruções enreço dados Memória dados SEL_A ESCR_A MUX Registo A.º operando 2.º operando SEL_ALU ALU resultado da operação Arquitetura Computadores Funcionamento básico um computador

Vamos fazer um programa! Objetivo: somar um número com todos os inteiros positivos menores que ele. soma = N + (N-) + (N-2) +... + 2 +. soma 0 (inicializa soma com zero) 2. temp N (inicializa temp com N) 3. Se (temp < 0) salta para (se temp for negativo, salta para o fim) 4. Se (temp = 0) salta para (se temp for zero, salta para o fim) 5. soma soma + temp (adiciona temp a soma) 6. temp temp (crementa temp) 7. Salta para 4 (salta para o passo 4). Salta para (fim do programa) Arquitetura Computadores Funcionamento básico um computador 2

Variáveis em memória soma e temp serão células memória cujo conteúdo vai variando ao longo do tempo (o registo A é só para ir efetuando os cálculos intermédios). Cada célula memória tem um enreço (por exemplo, soma fica em 40H e temp em 4H).. M[40H] 0 (inicializa soma com zero) 2. M[4H] N (inicializa temp com N) 3. Se (M[4H] < 0) salta para (se temp for negativo, salta para o fim) 4. Se (M[4H] = 0) salta para (se temp for zero, salta para o fim) 5. M[40H] M[40H] + M[4H] (adiciona temp a soma) 6. M[4H] M[4H] (crementa temp) 7. Salta para 4 (salta para o passo 4). Salta para (fim do programa) Arquitetura Computadores Funcionamento básico um computador 3

Constantes simbólicas s só números é muito confuso! Constante simbólica = intificador com um valor Define-se uma vez e pois po usar-se como se fosse o número com que ela foi finida. soma EQU 40H (finição do enreço da variável soma) temp EQU 4H (finição do enreço da variável temp). M[soma] 0 (inicializa soma com zero) 2. M[temp] N (inicializa temp com N) 3. Se (M[temp] < 0) salta para (se temp for negativo, salta para o fim) 4. Se (M[temp] = 0) salta para (se temp for zero, salta para o fim) 5. M[soma] M[soma] + M[temp] (adiciona temp a soma) 6. M[temp] M[temp] (crementa temp) 7. Salta para 4 (salta para o passo 4). Salta para (fim do programa) Arquitetura Computadores Funcionamento básico um computador 4

s dados e instruções As variáveis ficam na memórias dados As instruções ficam na memória instruções Cada passo do algoritmo é uma instrução O número do passo é o enreço na memória instruções soma EQU 40H (finição do enreço da variável soma) temp EQU 4H (finição do enreço da variável temp). M[soma] 0 (inicializa soma com zero) 2. M[temp] N (inicializa temp com N) 3. Se (M[temp] < 0) salta para (se temp for negativo, salta para o fim) 4. Se (M[temp] = 0) salta para (se temp for zero, salta para o fim) 5. M[soma] M[soma] + M[temp] (adiciona temp a soma) 6. M[temp] M[temp] (crementa temp) 7. Salta para 4 (salta para o passo 4). Salta para (fim do programa) Arquitetura Computadores Funcionamento básico um computador 5

PC (Contador Programa) O PC vai evoluindo instrução a instrução (mas os enreços das memórias começam em 0 e não em ). Após cada instrução, o PC contém o enreço da instrução seguinte. Saltar equivale a escrever um novo valor no PC. soma EQU 40H (finição do enreço da variável soma) temp EQU 4H (finição do enreço da variável temp) 0 M[soma] 0 (inicializa soma com zero) M[temp] N (inicializa temp com N) 2 Se (M[temp] < 0) PC 7 (se temp for negativo, salta para o fim) 3 Se (M[temp] = 0) PC 7 (se temp for zero, salta para o fim) 4 M[soma] M[soma] + M[temp] (adiciona temp a soma) 5 M[temp] M[temp] (crementa temp) 6 PC 3 (salta para o enreço 3) 7 PC 7 (fim do programa) Arquitetura Computadores Funcionamento básico um computador 6

Vamos somar! Número instruções executadas PC 0 2 45 63 7 soma 0 3 5 6 temp 3 2 0 0 2 3 4 5 6 7 9 20 0 23 45 67 9 Valores após a execução da instrução (PC enreça a seguinte): soma EQU 40H (finição do enreço da variável soma) temp EQU 4H (finição do enreço da variável temp) 0 M[soma] 0 (inicializa soma com zero) M[temp] N (inicializa temp com N) Já chega!!!! 2 Se (M[temp] < 0) PC 7 (se temp for negativo, salta para o fim) 3 Se (M[temp] = 0) PC 7 (se temp for zero, salta para o fim) 4 M[soma] M[soma] + M[temp] (adiciona temp a soma) 5 M[temp] M[temp] (crementa temp) 6 PC 3 (salta para o enreço 3) 7 PC 7 (fim do programa) Arquitetura Computadores Funcionamento básico um computador 7

Constantes Cada instrução po ter a 3 constantes. Tamanho das instruções: variável (complica o controlo), ou fixo com 3 constantes (sperdício memória). Constantes soma 0 temp N temp 0 7 temp 0 7 soma soma temp temp temp 3 7 0 M[soma] 0 M[temp] N 2 Se (M[temp] < 0) PC 7 3 Se (M[temp] = 0) PC 7 4 M[soma] M[soma] + M[temp] 5 M[temp] M[temp] 6 PC 3 7 PC 7 Arquitetura Computadores Funcionamento básico um computador

Solução para as constantes Decompôr instruções com várias constantes em instruções mais simples, cada uma só com uma constante. Já não há enreços e valores numéricos na mesma instrução. Usa-se um registo auxiliar (A) para guardar valores entre instruções. 0 M[soma] 0 M[temp] N 0 A 0 M[soma] A 2 A N 3 M[temp] A 2 Se (M[temp] < 0) PC 7 4 (A < 0) : PC 2 3 Se (M[temp] = 0) PC 7 5 (A = 0) : PC 2 4 M[soma] M[soma] + M[temp] 5 M[temp] M[temp] 6 A A + M[soma] 7 M[soma] A A M[temp] 9 A A 0 M[temp] A 6 PC 3 PC 5 7 PC 7 2 PC 2 Arquitetura Computadores Funcionamento básico um computador 9

Que operações são necessárias? Para correr o programa anterior, o hardware tem suportar as seguintes operações: Operação Escrever uma constante no registo A A 0 Armazenar o registo A na memória Ler uma célula memória e escrever no registo A Operação com o registo A e uma célula memória como operandos M[soma] A A M[temp] Exemplo A A + M[soma] Operação com o registo A e uma constante como operandos A A Salto incondicional PC 7 Salto condicional (A = 0) : PC 2 Esta notação signa-se RTL (Register Transfer Language) Arquitetura Computadores Funcionamento básico um computador 20

Linguagem assembly Categoria Transferência dados Instrução assembly Significado Opco Descrição em RTL LD valor Load (imediato) 00H A valor LD [enreço] Load (memória) 0H A M[enreço] ST [enreço] Store (memória) 02H M[enreço] A ADD valor Add (imediato) 03H A A + valor Operações aritméticas ADD [enreço] Add (memória) 04H A A + M[enreço] SUB valor Subtract (imediato) 05H A A valor Operações lógicas Saltos SUB [enreço] Subtract (memória) 06H A A M[enreço] AND valor AND (imediato) 07H A A valor AND [enreço] AND (memória) 0H A A M[enreço] OR valor OR (imediato) 09H A A valor OR [enreço] OR (memória) 0AH A A M[enreço] JMP enreço Jump 0BH PC enreço JZ enreço Jump if zero 0CH (A=0) : PC enreço JN enreço Jump if negative 0DH (A<0) : PC enreço Diversos NOP No operation 0EH Arquitetura Computadores Funcionamento básico um computador 2

Programação em assembly Programa em RTL 0 A 0 M[soma] A 2 A N 3 M[temp] A 4 (A < 0) : PC 2 5 (A = 0) : PC 2 6 A A + M[soma] 7 M[soma] A A M[temp] 9 A A 0 M[temp] A PC 5 2 PC 2 00H 0H 02H 03H 04H 05H 06H 07H 0H 09H 0AH 0BH 0CH Programa em assembly início: LD 0 ST [soma] LD N ST [temp] JN fim teste: JZ fim ADD [soma] ST [soma] LD [temp] SUB ST [temp] JMP teste fim: JMP fim Arquitetura Computadores Funcionamento básico um computador 22

Opco 00H 0H 02H 03H 04H 05H 06H 07H 0H 09H 0AH 0BH 0CH 0DH 0EH Vamos assemblar! Assembly LD valor LD [enreço] ST [enreço] ADD valor ADD [enreço] SUB valor SUB [enreço] AND valor AND [enreço] OR valor OR [enreço] JMP enreço JZ enreço JN enreço NOP End. Assembly Máquina 00H 0H 02H 03H 04H 05H 06H 07H 0H 09H 0AH 0BH 0CH início: LD 0 ST [soma] LD N ST [temp] JN fim teste: JZ fim ADD [soma] ST [soma] LD [temp] SUB ST [temp] JMP teste fim: JMP fim As mnemónicas são convertidas em opcos As constantes simbólicas são convertidas em números Assumindo: soma = 40H; temp = 4H; N = 00 00H 02 40H 00 0H 02 4H 0D 0CH 0C 0CH 04 40H 02 40H 0 4H 05 0H 02 4H 0B 05H 0B 0CH Arquitetura Computadores Funcionamento básico um computador 23

Além da memória: periféricos Processador (saída) (entrada) dados (entrada) (saída) Memória dados instruções instruções Instrução 2 Instrução Memória instruções (entrada) (saída) RD Periférico saída Periférico entrada 0 2 0 0 Vermelho Amarelo Ver Arquitetura Computadores Funcionamento básico um computador 24

Problema na escrita Processador (saída) (entrada) dados (entrada) (saída) Memória dados instruções instruções Instrução 2 Instrução Memória instruções (entrada) (saída) RD Periférico saída Periférico entrada 0 2 0 0 Vermelho Amarelo Ver Arquitetura Computadores Funcionamento básico um computador 25

Problema na leitura Processador (saída) (entrada) dados (entrada) (saída) Memória dados instruções instruções Instrução 2 Instrução Memória instruções (entrada) (saída) RD Periférico saída Periférico entrada 0 2 0 0 Vermelho Amarelo Ver Arquitetura Computadores Funcionamento básico um computador 26

Registos com saída tri-state Saídas normais ligadas entre si pom dar conflito. Com saída em tri-state, pom ligar-se várias saídas entre si (mas só uma po ter o buffer tri-state ligado!) D C N Registo N bits Output Enable Activo N Q Buffer tri-state N OE - Output Enable Saída Q saída Inactivo Desligada Arquitetura Computadores Funcionamento básico um computador 27

Solução: acesso selectivo (saída) (entrada) Processador (entrada) dados bit maior peso (saída) CS Memória dados instruções Instrução 2 (entrada) CS Periférico saída 0 Vermelho Amarelo 2 Ver instruções Instrução Memória instruções (saída) CS RD Periférico entrada 0 0 Arquitetura Computadores Funcionamento básico um computador 2

Acesso à memória/periféricos Sinais Inativo () - leitura Ativo (0) - escrita Inativo () Sem efeito no dispositivo CS Memória Lê dados Escreve dados Ativo (0) Periférico entrada Lê dados Sem efeito Periférico saída Sem efeito Escreve dados Arquitetura Computadores Funcionamento básico um computador 29

Mapa enreços Dispositivo Gama enreços em escrita ( ativo) Gama enreços em leitura ( inativo) Memória dados 0 27 (00H 7FH) 0 27 (00H 7FH) Periférico saída 2 255 (0H FFH) Nenhum (o sinal do periférico está inativo) Periférico entrada Nenhum (o sinal RD do periférico está inativo) 2 255 (0H FFH) Arquitetura Computadores Funcionamento básico um computador 30

Escrita na memória dados (saída) (entrada) Processador (entrada) dados bit maior peso (saída) CS Memória dados instruções Instrução 2 (entrada) CS Periférico saída 0 Vermelho Amarelo 2 Ver instruções Instrução Memória instruções (saída) CS RD Periférico entrada 0 0 Arquitetura Computadores Funcionamento básico um computador 3

Escrita no periférico saída (saída) (entrada) Processador (entrada) dados bit maior peso (saída) CS Memória dados instruções Instrução 2 (entrada) CS Periférico saída 0 Vermelho Amarelo 2 Ver instruções Instrução Memória instruções (saída) CS RD Periférico entrada 0 0 Arquitetura Computadores Funcionamento básico um computador 32

Leitura da memória dados (saída) (entrada) Processador (entrada) dados bit maior peso (saída) CS Memória dados instruções Instrução 2 (entrada) CS Periférico saída 0 Vermelho Amarelo 2 Ver instruções Instrução Memória instruções (saída) CS RD Periférico entrada 0 0 Arquitetura Computadores Funcionamento básico um computador 33

Leitura do periférico entrada (saída) (entrada) Processador (entrada) dados bit maior peso (saída) CS Memória dados instruções Instrução 2 (entrada) CS Periférico saída 0 Vermelho Amarelo 2 Ver instruções Instrução Memória instruções (saída) CS RD Periférico entrada 0 0 Arquitetura Computadores Funcionamento básico um computador 34

Programa: semáforo simples ; constantes dados vermelho EQU 0H ; valor do vermelho (lâmpada liga ao bit 0) amarelo EQU 02H ; valor do amarelo (lâmpada liga ao bit ) ver EQU 04H ; valor do ver (lâmpada liga ao bit 2) ; constantes enreços semáforo EQU 0H ; enreço 2 (periférico saída) ; programa início: LD ver ; Carrega o registo A com o valor para semáforo ver ST [semáforo] ; Atualiza o periférico saída semver: NOP ; faz um compasso espera (saída) (entrada) NOP ; faz um compasso espera (entrada) (saída) NOP ; faz um compasso espera Processador dados LD amarelo ; Carrega o registo A com o valor bit para maior pesosemáforo amarelo CS ST [semáforo] ; Atualiza o periférico saída semamarelo: LD vermelho ; Carrega o registo instruções A com Instruçãoo valor para semáforo vermelho (entrada) ST [semáforo] ; Atualiza o periférico saída 2 CS semverm: NOP ; faz um compasso espera NOP ; faz um compasso espera NOP ; faz um compasso Instrução espera instruções NOP ; faz um compasso espera (saída) JMP início ; vai fazer mais uma ronda Memória instruções CS RD Memória dados Periférico saída Periférico entrada 0 2 0 0 Arquitetura Computadores Funcionamento básico um computador 35

Programa (cont.) Processador (saída) (entrada) dados bit maior peso (entrada) (saída) CS Memória dados ; constantes dados instruções Instrução vermelho EQU 0H ; valor do vermelho (lâmpada liga ao bit 0) 2 amarelo EQU 02H ; valor do amarelo (lâmpada liga ao bit ) ver EQU 04H ; valor do ver (lâmpada liga ao bit 2) instruções ; constantes enreços semáforo EQU 0H ; enreço 2 (periférico saída) Memória instruções (entrada) ; programa início: LD ver ; Carrega o registo A com o valor para semáforo ver ST [semáforo] ; Atualiza o periférico saída semver: NOP ; faz um compasso espera NOP ; faz um compasso espera NOP ; faz um compasso espera LD amarelo ; Carrega o registo A com o valor para semáforo amarelo ST [semáforo] ; Atualiza o periférico saída semamarelo: LD vermelho ; Carrega o registo A com o valor para semáforo vermelho ST [semáforo] ; Atualiza o periférico saída semverm: NOP ; faz um compasso espera NOP ; faz um compasso espera NOP ; faz um compasso espera NOP ; faz um compasso espera JMP início ; vai fazer mais uma ronda Instrução CS (saída) CS RD Periférico saída Periférico entrada 0 2 0 0 José Delgado 20 Arquitetura Computadores Funcionamento básico um computador 36

Vamos correr o programa! Processador instruções instruções (saída) (entrada) dados Instrução 2 Instrução Memória instruções bit maior peso (entrada) (saída) CS (entrada) CS (saída) CS RD Memória dados Periférico saída Periférico entrada 0 2 0 0 início: LD ver ST [semáforo] semver: NOP NOP NOP LD amarelo ST [semáforo] semamarelo: LD vermelho ST [semáforo] semverm: NOP NOP NOP NOP JMP início Passo a passo Contínuo Seguinte Arquitetura Computadores Funcionamento básico um computador 37

Outro exemplo: contar bits a em 76H. contador 0 (inicializa contador bits a zero) 2. máscara 0H (inicializa máscara a 0000 000) 3. Se (máscara valor = 0) salta para 5 (se o bit está a zero, passa ao próximo) 4. contador contador + (bit está a, incrementa contador) 5. Se (máscara = 0H) salta para (se já testou a última máscara, termina) 6. máscara máscara + máscara (duplica máscara para slocar bit para a esquerda) 7. Salta para 3 (vai testar o novo bit). Salta para (fim do algoritmo) posição em teste Máscara Valor (76H) Valor AND máscara Bit a Contador bits a 0 0000 000 0 00 0000 0000 Não 0 0000 000 0 00 0000 000 Sim 2 0000 000 0 00 0000 000 Sim 2 3 0000 000 0 00 0000 0000 Não 2 4 000 0000 0 00 000 0000 Sim 3 5 000 0000 0 00 000 0000 Sim 4 6 000 0000 0 00 000 0000 Sim 5 7 000 0000 0 00 0000 0000 Não 5 Arquitetura Computadores Funcionamento básico um computador 40

Programa para contar bits a valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente do contador bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar novo a máscara atual SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram iguais e portanto já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 4

Definições valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente do contador bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar novo a máscara atual SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram iguais e portanto já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 42

Inicializa contador valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente do contador bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o. contador 0 ST [contador] (inicializa ; e atualiza contador novo na memória bits a zero) 2. máscara próximo: 0H LD [máscara] (inicializa ; vai buscar máscara novo a 0000 a máscara 000) atual SUB máscarafinal ; compara com a máscara final, fazendo a subtração 3. Se (máscara valor JZ = 0) fim salta para 5 (se ; se o r bit zero, está a eram zero, iguais passa e ao portanto próximo) já terminou 4. contador contador LD + [máscara] (bit ; tem está a carregar, incrementa a máscara contador) novo 5. Se (máscara = 0H) ADD salta [máscara] para (se ; soma já testou com ela a última própria máscara, para a multiplicar termina) por 2 6. máscara máscara ST + [máscara] (duplica ; atualiza máscara o valor para da máscara slocar na bit memória para a esquerda) JMP teste ; vai fazer mais um teste com a nova máscara 7. Salta para 3 (vai testar o novo bit) fim: JMP fim ; fim do programa. Salta para (fim do algoritmo) Arquitetura Computadores Funcionamento básico um computador 43

Inicializa máscara valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente do contador bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o. contador 0 ST [contador] (inicializa ; e atualiza contador novo na bits memória a zero) 2. máscara próximo: 0H LD [máscara] (inicializa ; vai buscar máscara novo a máscara 0000 000) atual SUB máscarafinal ; compara com a máscara final, fazendo a subtração 3. Se (máscara valor JZ = 0) fim salta para 5 (se ; se o r bit zero, está a eram zero, iguais passa e ao portanto próximo) já terminou 4. contador contador LD + [máscara] (bit ; tem está a carregar, incrementa a máscara contador) novo 5. Se (máscara = 0H) ADD salta [máscara] para (se ; soma já testou com ela a última própria máscara, para a multiplicar termina) por 2 6. máscara máscara ST + [máscara] (duplica ; atualiza máscara o valor para da máscara slocar na bit memória para a esquerda) JMP teste ; vai fazer mais um teste com a nova máscara 7. Salta para 3 (vai testar o novo bit) fim: JMP fim ; fim do programa. Salta para (fim do algoritmo) Arquitetura Computadores Funcionamento básico um computador 44

AND máscara e valor valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente do contador bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o. contador 0 ST [contador] (inicializa ; e atualiza contador novo na bits memória a zero) 2. máscara próximo: 0H LD [máscara] (inicializa ; vai buscar máscara novo a 0000 a máscara 000) atual SUB máscarafinal ; compara com máscara final, fazendo a subtração 3. Se (máscara valor JZ = fim 0) salta para 5 ; (se se o r bit zero, está eram a zero, iguais passa e portanto ao próximo) já terminou 4. contador contador LD + [máscara] (bit ; tem está a carregar, incrementa a máscara contador) novo 5. Se (máscara = 0H) ADD salta [máscara] para (se ; soma já testou com ela a última própria máscara, para a multiplicar termina) por 2 6. máscara máscara ST + [máscara] (duplica ; atualiza máscara o valor para da máscara slocar na bit memória para a esquerda) JMP teste ; vai fazer mais um teste com a nova máscara 7. Salta para 3 (vai testar o novo bit) fim: JMP fim ; fim do programa. Salta para (fim do algoritmo) Arquitetura Computadores Funcionamento básico um computador 45

Incrementa contador valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente do contador bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; vai buscar novo a máscara atual. SUB máscarafinal ; compara com a máscara final, fazendo a subtração contador 0 JZ fim ; se (inicializa r zero, contador eram iguais bits e portanto a zero) já terminou 2. máscara 0H LD [máscara] ; tem (inicializa carregar máscara a máscara a 0000 000) novo 3. Se (máscara ADD valor = [máscara] 0) salta para 5 ; soma (se o com bit está ela a própria zero, passa para a ao multiplicar próximo) por 2 4. contador contador ST [máscara] + ; atualiza (bit está o valor a, incrementa da máscara na contador) memória JMP teste ; vai fazer mais um teste com a nova máscara 5. Se fim: (máscara = JMP 0H) salta fim para ; fim (se do já testou programa a última máscara, termina) 6. máscara máscara + máscara (duplica máscara para slocar bit para a esquerda) 7. Salta para 3 (vai testar o novo bit). Salta para José Delgado 203 Arquitetura (fim Computadores algoritmo) Funcionamento básico um computador 46

Testa máscara. contador 0 (inicializa contador bits a zero) 2. máscara valor 0H EQU 76H (inicializa ; valor cujo máscara número a 0000 bits 000) a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) 3. Se (máscara valor = 0) salta para 5 (se o bit está a zero, passa ao próximo) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) 4. contador contador + (bit está a, incrementa contador) 5. Se contador (máscara = 0H) EQU salta 00H para (se ; enreço já testou da a célula última memória máscara, que termina) guarda 6. máscara máscara + máscara (duplica ; o valor máscara corrente para do contador slocar bit bits para a a esquerda) 7. Salta máscara para 3 EQU 0H (vai ; enreço testar o da novo célula bit) memória que guarda ; o valor corrente da máscara. Salta início: para LD 0 (fim ; Inicializa do algoritmo) o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar novo a máscara atual SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram iguais e portanto já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 47

Duplica máscara. contador 0 (inicializa contador bits a zero) 2. máscara valor 0H EQU 76H (inicializa ; valor cujo máscara número a 0000 bits 000) a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) 3. Se (máscara valor = 0) salta para 5 (se o bit está a zero, passa ao próximo) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) 4. contador contador + (bit está a, incrementa contador) 5. Se contador (máscara = 0H) EQU salta 00H para (se ; enreço já testou da a célula última máscara, memória termina) que guarda 6. máscara máscara + máscara (duplica ; o valor corrente máscara do para contador slocar bits bit a para a esquerda) 7. Salta máscara para 3 EQU 0H (vai ; enreço testar o da novo célula bit) memória que guarda ; o valor corrente da máscara. Salta início: para LD 0 (fim ; Inicializa do algoritmo) o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar novo a máscara atual SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram iguais e portanto já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 4

Salta para teste. contador 0 (inicializa contador bits a zero) 2. máscara valor 0H EQU 76H (inicializa ; valor cujo máscara número a 0000 bits 000) a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) 3. Se (máscara valor = 0) salta para 5 (se o bit está a zero, passa ao próximo) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) 4. contador contador + (bit está a, incrementa contador) 5. Se contador (máscara = 0H) EQU salta 00H para (se ; enreço já testou da a célula última máscara, memória termina) que guarda 6. máscara máscara + máscara (duplica ; o valor máscara corrente para do contador slocar bit bits para a a esquerda) 7. Salta máscara para 3 EQU 0H (vai ; enreço testar da o novo célula bit) memória que guarda ; o valor corrente da máscara. Salta início: para LD 0 (fim ; Inicializa do algoritmo) o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar novo a máscara atual SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram iguais e portanto já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 49

Salta para fim. contador 0 (inicializa contador bits a zero) 2. máscara valor 0H EQU 76H (inicializa ; valor cujo máscara número a 0000 bits 000) a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) 3. Se (máscara valor = 0) salta para 5 (se o bit está a zero, passa ao próximo) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) 4. contador contador + (bit está a, incrementa contador) 5. Se contador (máscara = 0H) EQU salta 00H para (se ; enreço já testou da a célula última máscara, memória termina) que guarda 6. máscara máscara + máscara (duplica ; o valor máscara corrente para do contador slocar bit bits para a a esquerda) 7. Salta máscara para 3 EQU 0H (vai ; enreço testar o da novo célula bit) memória que guarda ; o valor corrente da máscara. Salta início: para LD 0 (fim ; Inicializa do algoritmo) o registo A a zero ST [contador] ; Inicializa o contador bits com zero LD máscarainicial ; Carrega valor da máscara inicial ST [máscara] ; Atualiza na memória teste: AND valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar novo a máscara atual SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram iguais e portanto já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 50

Um só registo muitas instruções valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) contador EQU 00H ; da célula memória que guarda ; o valor corrente Isto do contador é só para bits a máscara EQU 0H ; da célula memória que guarda ; o valor corrente da máscara início: LD 0 ; Inicializa o incrementar registo A a zero a ST [contador] ; Inicializa o contador Tudo bits na com zero LD máscarainicial ; Carrega valor da variável máscara inicial na ST [máscara] ; Atualiza na memória! Mas teste: AND valor ; Isola o bit que se memória! quer ver se é JZ próximo ; Se o bit for zero, tudo passa à passa máscara seguinte LD [contador] ; O bit é, vai buscar o valor atual do contador ADD ; Incrementa-o Isto pelo é só registo! para ST [contador] ; e atualiza novo na memória próximo: LD [máscara] ; Vai buscar inicializar novo a máscara atual a SUB máscarafinal ; Compara com a máscara final, fazendo a subtração JZ fim ; Se r zero, eram variável iguais e portanto na já terminou LD [máscara] ; Tem carregar a máscara novo ADD [máscara] ; Soma com ela própria memória! para a multiplicar por 2 ST [máscara] ; Atualiza o valor da máscara na memória JMP teste ; Vai fazer mais um teste com a nova máscara fim: JMP fim ; Fim do programa Arquitetura Computadores Funcionamento básico um computador 5

Se houvesse 3 registos valor EQU 76H ; Valor cujo número bits a é para ser contado máscarainicial EQU 0H ; 0000 000 em binário (máscara inicial) máscarafinal EQU 0H ; 000 0000 em binário (máscara final) ; Utilização dos registos: ; A valores intermédios ; B valor atual do contador bits a ; C valor atual da máscara Cada LD MOV e instrução ST tem passam registo Mais simples! dois para operandos Um (primeiro registo MOV só acesso signa à resultado memória! e não Incrementar a variável é só contador EQU 00H ; da célula memória que guardará ; o número bits a no fim da contagem início: MOV B, 0 ; Inicializa o contador po assim! bits ser com zero constante) MOV C, máscarainicial ; Inicializa registo C com valor da máscara inicial MOV A, C ; Coloca também a máscara inicial no registo A teste: AND A, valor ; Isola o bit que se quer ver se é JZ próximo ; Se o bit for zero, passa à máscara seguinte ADD B, ; O bit é, incrementa o valor atual do contador próximo: CMP C, máscarafinal ; Compara com a máscara final JZ acaba ; Se forem iguais, já terminou ADD C, C ; Soma máscara com ela própria para a multiplicar por 2 JMP teste ; Vai fazer mais um teste com a nova máscara acaba: MOV [contador], B ; Se for necessário, po armazenar o número ; bits a numa célula memória bits estado) fim: JMP fim ; Fim do programa Subtrai os operandos, mas não armazena o resultado (atualiza Arquitetura Computadores Funcionamento básico um computador 52

Banco registos do PEPE-6 R0 R R2 R3 R4 R5 R6 R7 R R9 R0 R R2 R3 R4 R5 5 7 0 RL SP RE BTE TEMP Arquitetura Computadores Funcionamento básico um computador 53

A ilusão memórias separadas instruções Núcleo do processador enreços instruções dados dados Interface memória enreços dados/instruções Memória principal (dados e instruções) enreços dados Processador As memórias comerciais só têm uma ligação dados bidireccional (para poupar pinos e reduzir o custo) O núcleo do processador vê quatro ligações unidirecionais. A interface memória arbitra e coorna os acessos. Arquitetura Computadores Funcionamento básico um computador 54

PEPE-: processador instruções uniciclo enreço instruções PC Memória instruções enreço dados Memória dados SEL_A ESCR_A MUX Registo A.º operando 2.º operando SEL_ALU ALU resultado da operação O PEPE- executa as instruções num só ciclo relógio, mas exige ligações à memória separadas. Parece rápido, mas não é bem assim (a frequência relógio é limitada pela operação mais lenta!). A sua gran vantagem é ser simples. Arquitetura Computadores Funcionamento básico um computador 55

Interface memória PEPE-6: processador instruções multi-ciclo Processador Unida controlo Bus enreços Bus controlo Unida dados Bus dados O PEPE-6 já po usar as memórias comerciais. Cada instrução tem morar vários ciclos relógio ( frequência mais elevada). Arquitetura Computadores Funcionamento básico um computador 56

Estrutura um processador Função 000 Unida 00 controlo Registo Bits 00 instrução estado: A + Z Zero 0 R0 A B C Transporte 0 R A (carry) B R2 N Negativo R3 A B O Excesso (overflow) CLK 00 0 R4 Controlo R5 R6 R7 R R9 R0 R R2 R3 R4 R5 Saída (F) A A + B A - B relógio PC A + B + carry 5 7 0 O N C Z flags Máquina estados Registo estado RL SP RE BTE TEMP A Banco registos MPX B Unida aritmética e lógica (ALU) Unida processamento dados entradas Circuito saídas combinatório F MPX enreços dados dados/instr. Interface memória Bus end. Bus dados Bus contr. Arquitetura Computadores Funcionamento básico um computador 57

Operação entre registos Unida controlo PC Banco registos R R + R2 Unida processamento dados CLK Registo instrução Controlo A MPX B Unida aritmética e lógica (ALU) F enreços dados dados/instr. Interface memória Bus end. Bus dados Bus contr. flags MPX Arquitetura Computadores Funcionamento básico um computador 5

. Unida controlo especifica registos (A, B, stino), função da Unida ALU, seleção dos multiplexers, controlo flags a atualizar 2. Registo stino e flags são PC atualizadas Registo instrução CLK Operação entre registos Tudo ocorre em 2 ciclos relógio: Controlo flags R0 R R2 R3 R4 R5 R6 R7 A R R9 R0 R R2 R3 R4 R5 Função Saída (F) 000 A 00 A + Unida B Banco 00 A - B registos 0 dados Banco A + B + carry 00 registos A + 0 A B 5 7 0 MPX 0 enreços A B A B B dados Bits estado: Z Zero C Transporte (carry) N Negativo O Excesso (overflow) Unida aritmética e lógica (ALU) F MPX processamento dados/instr. R R + R2 Interface memória O N C Z RL SP RE BTE TEMP Bus end. Bus dados Bus contr. Arquitetura Computadores Funcionamento básico um computador 59

Leitura da memória São Unida os sinais que vêm da unida controlo controlo que comandam tudo o que acontece. PC É como se os dados fossem água. Para Registo a encaminhar basta abrir e fechar instrução comportas. Controlo CLK flags A Banco registos MPX B Unida aritmética e lógica (ALU) F MPX enreços Unida processamento dados dados dados/instr. R3 M[R] Interface memória Bus end. Bus dados Bus contr. Arquitetura Computadores Funcionamento básico um computador 60

Escrita na memória São Unida os sinais que vêm da unida controlo controlo que comandam tudo o que acontece. PC É como se os dados fossem água. Para Registo a encaminhar basta abrir e fechar instrução comportas. Controlo CLK flags A Banco registos MPX B Unida aritmética e lógica (ALU) F MPX enreços Unida processamento dados dados dados/instr. M[R2] R Interface memória Bus end. Bus dados Bus contr. Arquitetura Computadores Funcionamento básico um computador 6

Busca instrução (fetch) Unida controlo PC Banco registos Unida processamento dados RI M[PC] PC PC + 2 CLK Registo instrução Controlo A MPX B Unida aritmética e lógica (ALU) F enreços dados dados/instr. Interface memória Bus end. Bus dados Bus contr. flags MPX Arquitetura Computadores Funcionamento básico um computador 62

Instrução salto Unida controlo PC Banco registos PC PC + R2 Unida processamento dados CLK Registo instrução Controlo A MPX B Unida aritmética e lógica (ALU) F enreços dados dados/instr. Interface memória Bus end. Bus dados Bus contr. flags MPX Arquitetura Computadores Funcionamento básico um computador 63

Ciclo do processador Unida controlo PC Banco registos Busca instrução Descodifica Busca operandos (memória) (registos) Escreve resultado Unida Executa processamento dados CLK Registo instrução Controlo MPX A B Unida aritmética e lógica (ALU) F enreços dados dados/instr. Interface memória Bus end. Bus dados Bus contr. flags MPX Arquitetura Computadores Funcionamento básico um computador 64

Unida controlo CLK Registo instrução Controlo PC flags Exemplo A Banco registos MPX B Unida aritmética e lógica (ALU) F MPX enreços MOV [R3], R Unida processamento RI M[PC] PC dados PC + 2 R2 R M[R3] M[R3] R R + R2 dados dados/instr. MOV R2, [R3] ADD R, R2 Interface memória Bus end. Bus dados Bus contr. Arquitetura Computadores Funcionamento básico um computador 65

Exercícios. Indique quais os estágios fundamentais do ciclo instrução um processador e a sua finalida. 2. Sobre o diagrama básico do processador indique quais as principais operações elementares para ler da memória e executar as seguintes instruções: ADD R, ; R R + AND R, R2 ; R R R2 MOV R2, [R3] ; R2 M[R3] MOV [R], R2 ; M[R] R2 Arquitetura Computadores Funcionamento básico um computador 66

Exercícios (cont.) 3. Um processador efetuou as seguintes operações elementares: RI M[PC] PC PC + 2 R M[R3] RI M[PC] PC PC + 2 R2 R2 R RI M[PC] PC PC + 2 M[R] R2 RI M[PC] PC PC + 2 PC PC + FFFEH a) Quantas instruções executou nesta sequência? b) Que instruções executou? Basta screver com uma frase simples o que cada instrução faz. c) Suponha que o processador (e os seus registos) são 6 bits. Diga qual a instrução que o processador executará a seguir à última sta sequência. Arquitetura Computadores Funcionamento básico um computador 67

Programação do computador Linguagem natural Linguagem programação Linguagem assembly "...positar 000 euros..." Programador saldo = saldo + 000; Compilador ADD R, 000 Assemblador Código máquina 000 Arquitetura Computadores Funcionamento básico um computador 6

Linguagem assembly conta: ADD R, R2 ; soma ao saldo Mnemónica comentário Etiqueta º operando 2º operando Uma instrução por linha Formatação rígida Comentários qb (escritos logo ao fazer o código!) As instruções refletem diretamente os recursos do processador Arquitetura Computadores Funcionamento básico um computador 69

Comentários das instruções Em cada linha, o assembler ignora o caráter ; e os que se lhe seguem (até ao fim ssa linha) Praticamente todas as linhas assembly vem ter comentário, pois a programação é baixo nível. Exemplo: Comentários Sem comentários. INÚTEIS! O que é isto?! PLACE 000H Saldo: WORD 0 PLACE 0000H Deposita: MOV R3, 00 MOV R, Saldo MOV R2, [R] ADD R2, R3 MOV [R], R2... ; Início Começa da enreços zona dados em 000H ; variável Saldo inicializada conta bancária a 0 ; Início Começa do enreços programa em 0000H ; Valor Coloca positar 00 em R3 na conta ; Coloca o enreço da variável Saldo em R ; Lê o memória valor do enreçada saldo por R ; Acrescenta soma R2 e R3 o valor a positar ao saldo ; Atualiza Escreve a memória variável enreçada Saldo por R ;... Arquitetura Computadores Funcionamento básico um computador 70

Classes instruções Classe instruções Instruções aritméticas Instruções bit Instruções transferência dados Instruções controlo fluxo Descrição e exemplos Lidam com números em complemento para 2 ADD, SUB, CMP, MUL, DIV Lidam com sequências bits AND, OR, SET, SHR, ROL Transferem dados entre dois registos ou entre um registo e a memória MOV, SWAP Controlam a sequência execução instruções, pondo tomar cisões JMP, JZ, JNZ, CALL, RET Arquitetura Computadores Funcionamento básico um computador 7

Registos do processador Os recursos mais importantes que as instruções manipulam são os registos. O PEPE tem os seguintes registos (todos 6 bits): PC (Program Counter); 6 registos (R0 a R5), sendo alguns especiais (a ver mais tar) R0 R R2 R3 R4 R5 R6 R7 R R9 R0 R R2 R3 R4 R5 5 7 0 RL SP RE BTE TEMP PC Arquitetura Computadores Funcionamento básico um computador 72

Bits estado (flags) Fazem parte do Registo Estado (RE). Fornecem indicações sobre o resultado da operação anterior (nem todas as instruções os alteram). Pom influenciar o resultado da operação seguinte. Bit estado mais importantes: (Z) Zero (C) Transporte (carry) (V) Excesso (overflow) (N) Negativo Fica a se o resultado uma operação: for zero tiver transporte não couber na palavra do processador for negativo Arquitetura Computadores Funcionamento básico um computador 73

Exemplo com o simulador ; Exemplos instruções simples no PEPE MOV R2, 25H ; coloca uma constante um byte no R2 MOV R3, 234H ; coloca uma constante dois bytes no R3 ADD R2, R3 ; exemplo soma SUB R2, R2 ; para dar zero e ver os bits estado MOV R4, 5 ; ilustrar ciclo 5 iterações ciclo: SUB R4, ; crementa contador e afecta bits estado JNZ ciclo ; salta se ainda não tiver chegado a 0 SHR R3, 2 ; slocamento 2 bits à direita fim: JMP fim ; forma expedita "terminar" Arquitetura Computadores Funcionamento básico um computador 74

Implementar no PEPE Objectivo: somar um número com todos os inteiros positivos menores que ele. soma = N + (N-) + (N-2) +... + 2 +. soma 0 (inicializa soma com zero) 2. temp N (inicializa temp com N) 3. Se (temp < 0) salta para (se temp for negativo, salta para o fim) 4. Se (temp = 0) salta para (se temp for zero, salta para o fim) 5. soma soma + temp (adiciona temp a soma) 6. temp temp (crementa temp) 7. Salta para 4 (salta para o passo 4). Salta para (fim do programa) Arquitetura Computadores Funcionamento básico um computador 75

Outro exemplo: contar bits a em 76H. contador 0 (inicializa contador bits a zero) 2. máscara 0H (inicializa máscara a 0000 000) 3. Se (máscara valor = 0) salta para 5 (se o bit está a zero, passa ao próximo) 4. contador contador + (bit está a, incrementa contador) 5. Se (máscara = 0H) salta para (se já testou a última máscara, termina) 6. máscara máscara + máscara (duplica máscara para slocar bit para a esquerda) 7. Salta para 3 (vai testar o novo bit). Salta para (fim do algoritmo) posição em teste Máscara Valor (76H) Máscara AND Valor Bit a Contador bits a 0 0000 000 0 00 0000 0000 Não 0 0000 000 0 00 0000 000 Sim 2 0000 000 0 00 0000 000 Sim 2 3 0000 000 0 00 0000 0000 Não 2 4 000 0000 0 00 000 0000 Sim 3 5 000 0000 0 00 000 0000 Sim 4 6 000 0000 0 00 000 0000 Sim 5 7 000 0000 0 00 0000 0000 Não 5 Arquitetura Computadores Funcionamento básico um computador 76