Aula 9 – Componentes do Computador e modelo de Von Neumann

Transcrição

Aula 9 – Componentes do Computador e modelo de Von Neumann
Aula 9 – Componentes do Computador e
modelo de Von Neumann
Anderson L. S. Moreira
[email protected]
http://dase.ifpe.edu.br/~alsm
Anderson Moreira
Arquitetura de Computadores
1
O que fazer com essa apresentação
Anderson Moreira
Arquitetura de Computadores
2
Breve Histórico (Revisão)
Grande incidência de melhorias nos modelos computacionais ao longo
dos anos:
Data
Inventor:
máquina
Capacidade
Inovações Tecnológicas
1642
Pascal:
Calculadora
Adição e
subtração
Transferência automática de vai um; representação em
complemento
1671
Leibnitz:
Calculadora
Adição,
subtração,
multiplicação e
divisão
Mecanismo para multiplicação e
divisão
1827
Babbage:
Máquina
diferencial
Avaliação
polinomial por
diferenças finitas
Operação automática com
diversos passos
1834
Babbage:
Máquina analítica
Computador de
propósito geral
Mecanismo automático de
controle de seqüência (programa)
1941
Zuse: Z3
Computador de
propósito geral
Primeiros computadores de
propósitos gerais operacionais
1944
Aiken: Harward
Mark I
Computador de
propósito geral
Primeiros computadores de
propósito geral de
multiprogramações
Anderson Moreira
Arquitetura de Computadores
Breve Histórico (Revisão)
Uma das principais investidas:
Charles Babbage:
Máquina diferencial (apenas adição) e
Máquina Analítica (operações
matemáticas básicas);
Uso de cartões perfurados;
Problema: Tecnologia da época.
John Atanasoff:
Máquina de válvulas para resolução de
equações lineares
Anderson Moreira
Arquitetura de Computadores
Breve Histórico (Revisão)
Primeiro computador de propósito geral:
ENIAC (Electronic Numerical Integrator and Calculator);
Universidade da Pensilvânia;
Base nas idéias de Babbage;
Interesse militar (tabelas balísticas);
Pesava 30 toneladas e 18000 válvulas.
Impressoras e
cartões perfurados
Leitora de cartões
multiplicador
Divisor e
Raiz quadrada
Tabelas de funções
Unidade mestre
De programação
Anderson Moreira
Arquitetura de Computadores
Acumuladores
(registradores)
Breve Histórico (Revisão)
Modificações dos computadores:
Gerações de computadores
Geração
Tecnologias
Características de
hardware
Característica de
software
Exemplo
1ª (1946-1954)
Válvulas, memórias de
tubos catódicos
Aritmética de ponto
fixo
Linguagem de
máquina, linguagem
assembler
IAS, UNIVAC
2ª (1955-1964)
Transistores, núcleos
de ferrite, discos
magnéticos
Ponto flutuante,
registrador indíce,
processador E/S
Linguagens de alto
nível, bibliotecas e
rotinas,
processamento em
lote
IBM7094 e CDC 1604
3ª (1965-1974)
Circuitos integrados
Micro programação,
pipeline e memória
cache
Multiprogramação,
multiprocessamento,
sistema operacional e
memória virtual
IBM S/360 e DEC PDP8
4ª (1975-?)
Circuitos LSI,
memórias
semicondutoras
Amdahl 470 e Intel
8748
Esta tabela poderia ter uma 5ª geração envolvendo máquinas paralelas, os circuitos VLSI e maquinas data-flow, porém
Não surgiu nenhum grande marco computacional de lá para cá
Anderson Moreira
Arquitetura de Computadores
Definições
Máquina de níveis
Aplicativos
Utilitários
Sistema Operacional
Linguagem de Máquina
Microprogramação
Circuitos Eletrônicos
Anderson Moreira
Arquitetura de Computadores
Princípios Básico
Cada computador tem um conjunto de operações e convenções únicas
para determinar as posições de dados com os quais a operação será
realizada:
OPERAÇÃO
OPERANDOS
Isso é denominada de instruções:
OPERAÇÃO → especifica a função que será desempenhada;
OPERANDOS → fornece a maneira de calcular a posição atual dos
dados com os quais a OPERAÇÃO será realizada.
•
Um programa é constituído de uma sequencia prédeterminada de instruções, que deve ser seguida para que
seja atingido uma tarefa computacional.
Anderson Moreira
Arquitetura de Computadores
Princípios Básicos
A memória de um sistema computacional tem a
função de armazenar dados e instruções.
Organizada em posições;
Podem ser visualizadas como elementos de uma matriz;
Cada elemento tem um endereço.
Então uma memória que tenha x posições:
Cada posição pode ser referenciada diretamente de acordo com a
sua colocação na seqüência;
Se uma memória tem 4096 posições existem posições de 0, ...,
4095;
Instruções são executadas em uma seqüência determinada pela
sua posição de memória
Anderson Moreira
Arquitetura de Computadores
Princípios Básicos
O endereço representa uma posição particular na
memória e pode ser formado de várias maneiras;
A representação trivial está na parte chamada campo de endereço;
A Unidade Lógica e Aritmética (ULA) é responsável por realizar ações
indicadas nas instruções, executando operações numéricas
(aritméticas) e não numéricas (lógica);
Preparação de informações de desvios do programa;
O controle do programa e a ULA formam a unidade central de
processamento, ou simplesmente processador.
Anderson Moreira
Arquitetura de Computadores
Computadores não pensam!!
•
•
•
O programador do computador fornece um programa composto por
instruções e dados que especificam cada detalhe do que executar,
do que fazer com os dados, e quando fazê-los.
O computador é, simplesmente, uma máquina de alta velocidade
que pode manipular dados, resolver problemas e tomar decisões,
tudo sob o controle do programa.
Se o programador cometer um erro no programa ou fornecer dados
errados, o computador invariavelmente fornecerá saídas erradas,
como na máxima
Anderson Moreira
“lixo entra, lixo sai”
Arquitetura de Computadores
11
•
•
•
Como
um computador consegue executar um conjunto de
instruções?
Talvez uma melhor questão a ser feita neste ponto seja:
Tipicamente, respondemos a esta questão mostrando o diagrama da
arquitetura de um computador (arranjo de seus vários elementos) e,
então, repassando o processo, passo a passo, que o computador
segue na execução do programa.
Ao invés disso, primeiro iremos observar uma analogia um pouco
distante, que contém muitos dos conceitos envolvidos na operação
de um computador.
Anderson Moreira
Arquitetura de Computadores
12
Agente do GOE
•
O Agente da GOE está tentando descobrir quantos dias faltam para
um certo líder ser assassinado. O seu contato lhe diz que esta
informação está localizada em uma série de caixas postais. Para
assegurar que ninguém mais tenha acesso à informação, ela está
espalhada em 10 caixas. O seu contato lhe dá as 10 chaves,
acompanhadas das seguintes instruções:
•
•
•
1. A informação em cada caixa está escrita em código
2. Abra a caixa 1, primeiro, e execute a instrução lá localizada.
3. Continue pelo restante das caixas, em seqüência, salvo instrução
em contrário.
4. Uma das caixas está preparada para ser explodida ao ser aberta.
•
•
O Agente pega as 10 chaves e vai para a agência do correio, com o
livro de códigos em mãos.
Anderson Moreira
Arquitetura de Computadores
13
Tabela
Anderson Moreira
Arquitetura de Computadores
14
Conclusões (computacionais)
•
•
•
•
•
Três classes diferentes de instruções estão presentes nas caixas de 1
a 6. As caixas 1, 2, 3 e 5 são instruções que “chamam” operações
aritméticas.
A caixa 4 contém uma instrução de decisão, chamada de desvio
condicional.
Esta instrução diz ao agente (ou computador) para decidir se pula
para o endereço 7 ou continua para o endereço 5, dependendo do
resultado da operação aritmética anterior.
A caixa 6 contém uma simples instrução de controle que não precisa
de dados, nem faz referência a outro endereço (número de caixa).
Essa instrução, pare, diz ao agente que o problema está terminado
(o programa está completado) e que não deve continuar adiante.
Anderson Moreira
Arquitetura de Computadores
15
Busca – Decodificação - Execução
Um elemento no processador denominado contador de
instruções (PC), contém a posição da próxima instrução a ser
executada;
Quando uma sequencia de execução de instrução tem início, a
instrução cujo endereço está no PC é trazida da memória para
uma área de armazenamento chamada registrador de
instrução (IR).
Chamado de busca
A instrução é interpretada por circuitos de decodificação que
fazem com que os sinais eletrônicos sejam gerados no
processador
Chamado de decodificação
Anderson Moreira
Arquitetura de Computadores
Busca – Decodificação - Execução
Esses sinais resultam na execução. Execução é a
aplicação da função do operador nos operandos;
Quando uma execução de uma instrução é
terminada, o contador de instruções é atualizada
para o endereço de memória para próxima
instrução;
Esta instrução é então trazida da memória para o IR
e executada, repetindo assim o ciclo de buscadecodificação-execução;
Anderson Moreira
Arquitetura de Computadores
Esquema Básico
Busca
Processa
Armazena
Fetch-instr.
Decode
Store res.
Fetch ops.
Execute
Anderson Moreira
Arquitetura de Computadores
18
Esquema Básico
Dois passos:
Buscar
Executar
Anderson Moreira
Arquitetura de Computadores
19
Elementos funcionais básicos
Computador:
Composto por blocos:
Memória
Unidades operacionais
Unidades de controle
Dispositivos de entrada e saída
Memória
Controle
Unidade
Operacional
Entrada/
Saída
Anderson Moreira
Arquitetura de Computadores
20
Elementos funcionais básicos
Unidade Operacional e Unidade de Controle tem funções
específicas;
Reunidas recebe o nome de UCP – Unidade Central de
Processamento;
Registradores são elementos digitais com capacidade de
armazenar dados.
Tem associados sinais de cargas que determinam quando
serão armazenados novos conteúdos neles;
Ao ser acionado o sinal de carga, o registrador copia para
si o dado que está em suas linhas de entrada.
Anderson Moreira
Arquitetura de Computadores
21
Elementos funcionais básicos
Contadores, multiplexadores, seletores, codificadores,
somadores e portas lógicas são elementos com capacidade de
operar sobre dados:
Alterando-os ou fornecendo um novo dado como resultado
Elementos digitais
Necessitam ser ativados ou habilitados para realizar uma
determinada operação;
Sinais responsáveis pela ativação ou habilitação de componentes
digitais são conhecidos como sinais de controle.
Barramentos (bus):
Transferem dados entre os elementos do computador;
Só podem receber dados de uma fonte de cada vez;
A largura em bits diz respeito ao tamanho dos elementos que
trafegam nele.
Anderson Moreira
Arquitetura de Computadores
22
Elementos funcionais básico - memória
Memória é formada por elementos armazenadores de informações;
É dividida em palavras;
Cada palavra é identificada unicamente por um endereço;
Conteúdo armazenado nas palavras da memória tanto pode
representar dados como instruções;
R
E
M
read
memória
write
RDM
Anderson Moreira
Arquitetura de Computadores
23
Elementos funcionais básico - memória
REM: registrador de endereços da memória
Contém o endereço do dado a ser lido ou escrito na memória
RDM: registrador de dados da memória
Contém o dado a ser escrito na memória (write) ou lido da memória
(read)
Sinais de controle:
Read: leitura da memória – o conteúdo da posição de memória
endereçada por REM é copiado em RDM;
Write: escrita na memória – a posição de memória endereçada por
REM recebe o conteúdo de RDM;
Anderson Moreira
Arquitetura de Computadores
24
Arquiteturas de Memória
Princeton
Menos fios
Harvard
Acesso simultâneo
à dado e
instruções
Processor
Program
memory
Data memory
Harvard
Anderson Moreira
Arquitetura de Computadores
Processor
Memory
(program and data)
Princeton
maio de 11
Slide: 25
Elementos funcionais básico – Unidade Operacional
Unidade Operacional:
Também conhecida como bloco operacional (datapath);
Executa as transformações sobre dados, especificadas pelas
instruções do computador;
Componentes:
ULA, registradores de uso geral e específico e barramentos
O número; tamanho e uso dos registradores e a quantidade; e tipo
de operações que a ULA realiza são alguns dos fatores que
influenciam no poder de processamento de um computador.
Vamos ver a ULA e o Acumulador
Anderson Moreira
Arquitetura de Computadores
26
Elementos funcionais básico – Unidade Operacional
Unidade Lógica e Aritmética (ULA)
Realiza operações lógicas e aritméticas;
Exemplo:
Soma de dois operandos;
Negação de um operando;
Inversão de um operando;
Lógica de operando;
Rotação de um operando para a direita ou esquerda.
As operações da ULA geralmente são bem simples;
Funções complexas são realizadas pela ativação sequencial das
várias operações básicas;
Anderson Moreira
Arquitetura de Computadores
27
Elementos funcionais básico – Unidade Operacional
A ULA fornece o resultado das operações e também
algumas indicações sobre a operação realizada;
Essas indicações são chamadas de códigos de
condição;
Exemplos:
Overflow
Sinal
Carry
Zero
Anderson Moreira
Arquitetura de Computadores
28
Modelo estrutural ULA
Operandos
Controle
Códigos de condição
Resultado
Anderson Moreira
Arquitetura de Computadores
29
Elementos funcionais básico – Unidade Operacional
Acumulador
É um registrador e tem por função armazenar um
operando e/ou um resultado fornecido pela ULA;
Computadores simples só são encontrados um
acumulador;
É ativado de acordo com o sinal de carga (load);
Cada novo sinal faz perder o valor antigo
Anderson Moreira
Arquitetura de Computadores
30
Elementos funcionais básico – Unidade de Controle
Serve para fornecer sinais de controle:
Gerenciar o fluxo interno de dados e o instante preciso em
que ocorrem as transferências entre uma unidade e outra
Cada unidade de controle comanda uma micro operação
Responsável pela realização de uma carga em um
registrador;
Seleção de dados para entrada;
Ativação de memória;
Seleção de uma operação da ULA.
Anderson Moreira
Arquitetura de Computadores
31
Elementos funcionais básico – Unidade de Controle
•
São máquinas de Estado Finita (FSM)
– Lógica sequencial: os sinais de saída são função dos sinais
de entrada e do estado anterior.
– Lógica combinacional: os sinais de saída são função
exclusiva dos sinais de entrada.
•
Existem várias formas de implementar a lógica sequencial.
Porém duas são usuais:
– Organização convencional
– Organização microprogramada
Anderson Moreira
Arquitetura de Computadores
32
Elementos funcionais básico – Registradores especiais
•
Existem no computador alguns registradores com funções
especiais:
– Depende da arquitetura e organização de cada máquina;
– A posição também influencia.
•
Tipos:
– Apontador de instruções (PC)
– Registrador de instruções (IR)
– Registrador de estado (RST)
Anderson Moreira
Arquitetura de Computadores
33
Elementos funcionais básico – Registradores especiais
Apontador de Instruções (PC)
Tem como função manter atualizado o endereço de memória da
próxima instrução;
Registrador de instrução (IR)
Armazena a instrução que está sendo executada;
De acordo com o conteúdo, a UC determina quais sinais deve mser
gerados;
Registrador de estado (RST)
Armazena códigos de condição gerados pela unidade lógica e
aritmética;
Anderson Moreira
Arquitetura de Computadores
34
Conjunto de instruções e modos de endereçamento
•
•
É um conjunto de bits devidamente codificados que indica ao
computador que sequencia de micro operações este deve seguir:
São classificadas por semelhanças de propósito e formato:
– Instruções de transferência de dados;
– Instruções aritméticas e lógicas;
– Instruções de testes e desvios.
•
Logo conjunto de instruções são todas as instruções que um
determinado computador reconhece;
•
A sequencia dessas instruções forma um programa.
Anderson Moreira
Arquitetura de Computadores
35
Instruções do Microprocessador
•
•
•
Esta coleção de palavras é conhecida como a linguagem
assembly do processador.
Um assembler (montador) pode traduzir as palavras para
o seu padrão binário e a informação de saída do
assembler é alocada na memória para ser executada pelo
microprocessador.
Para facilitar as tarefas de programação e depuração:
– Mnemônicos  associados aos códigos das instruções
– Nomes  operandos
– Rótulos  posições ocupadas pelo programa
Anderson Moreira
Arquitetura de Computadores
36
Exercícios
•
Faça uma análise do computador EDVAC, mostrando:
– Principais vantagens;
– Principais desvantagens;
– Como funciona;
– Arquitetura.
•
Deve ser em grupo de no máximo 4 pessoas e um grupo será
selecionado para apresentar os resultados
Anderson Moreira
Arquitetura de Computadores
37
Modelo de Von Neumann
Computador IAS
Anderson Moreira
Arquitetura de Computadores
Histórico
•
•
•
Projeto começou em 1946 pela equipe de von Neumann;
Elaborado no IEAP (Instituto de estudos avançados de princeton;
Tinha como memória principal:
– Tubo de raios catódicos de acesso aleatório;
– Permitia o acesso a uma palavra inteira em uma única operação;
– Cada instrução tinha um único endereço de memória e tinha o
formato:
OP
Anderson Moreira
A
Arquitetura de Computadores
39
O computador IAS
•
Os blocos básicos do IAS:
– Uma unidade de processamento central, para execução de
operações lógicas e aritméticas;
– Uma unidade de controle de programa para determinar o
sequenciamento das instruções a serem executadas e
gerar os sinais d controle para as outras unidades;
– Uma unidade de memória principal com capacidade de
4096 palavras;
– Uma unidade de E/S.
Anderson Moreira
Arquitetura de Computadores
40
O computador IAS - Ligações
Unidade Central de Processamento
AC
MQ
Circuitos
lógicosaritiméticos
Equipamento
de E/S
DR
Instruções e dados
IBR
PC
IR
AR
Memória
Principal
endereços
Unidade de controle de programa
Circuitos
de controle
Anderson Moreira
Sinais de
controle
Arquitetura de Computadores
41
O computador IAS - Ligações
Na UCP existe um novo elemento de armazenamento de dados, que é o
acumulador (AC). Esse elemento atua como memória rápida que guarda de
forma imediata o resultado das operações realizadas na unidade de
cálculos.
Exemplo de Programa do IAS
Instrução
Comentários
AC  M(100)
Transfere conteúdo da memória do endereço
100 para o acumulador
AC  AC + M(101)
Soma o conteúdo da posição de memória 101
ao conteúdo acumulador e coloca o resultado
no acumulador
M(102)  AC
Armazena o conteúdo do acumulador no
endereço 102 da memória
Anderson Moreira
Arquitetura de Computadores
42
O computador IAS – Organização da Memória
•
•
•
Memória composta por 212 = 4096 palavras;
Cada palavras = 40 bits;
40 bits eram a quantidade de informação que podiam ser
transferidas, em cada momento:
Memória  UCP (cada passo)
•
Na memória:
– Instruções de 20 em 20 bits;
– Dados de 40 bits.
Anderson Moreira
Arquitetura de Computadores
43
Formato dos dados e instruções
Os dados eram números binários representados em ponto fixo
e codificados em complemento de dois;
0 1
39
Bit de sinal
0
8
Cód.
operação
19 20
endereço
Instrução posicionada à esquerda
Anderson Moreira
28
Cód.
operação
39
endereço
Instrução posicionada à direita
Arquitetura de Computadores
44
Conjunto de Instruções
Tipo de Instrução
Transferência de
dados
Anderson Moreira
Operação
Descrição
AC  MQ
Transfere conteúdo do reg. MQ para o
acumulador AC
MQ  M(X)
Transfere conteúdo da posição X de memória
para MQ
M(X)  AC
Transfere conteúdo de AC para posição de
memória X
AC  M(X)
Transfere o conteúdo da posição de memória
X para AC
AC  -M(X)
Transfere –M(X) para AC
AC  |M(X)|
Transfere o valor absoluto de M(X) para AC
AC  -|M(X)|
Transfere -|M(X)| para AC
Arquitetura de Computadores
45
Conjunto de Instruções
Tipo de Instrução
Operação
Desvio incondicionalVai para M(X, 0:19)
Vai para M(X, 20:39)
Desvio condicional Se AC >= 0 então desvia
para M(X,0:19)
Modificação de
endereço
Anderson Moreira
Descrição
Busca a próxima instrução da metade esquerda
de M(X)
Busca a próxima instrução da metade direita de
M(X)
Se o número de AC não for negativo busca a
próxima instrução na metade esquerda de M(X)
Se AC >= 0 então desvia
para M(X,20:39)
Se o número de AC não for negativo busca a
próxima instrução na metade direita de M(X)
M(X,8:19)  AC(28:39)
Substitui o campo de endereço à esquerda de
M(X) pelos 12 bits mais a direita de AC
M(X,28:39)  AC(8:19)
Substitui o campo de endereço à direita de M(X)
pelos 12 bits mais a direita de AC
AC  -|M(X)|
Transfere -|M(X)| para AC
Arquitetura de Computadores
46
Conjunto de Instruções
Tipo de Instrução
Aritmética
Anderson Moreira
Operação
Descrição
ACAC+M(X)
Soma M(X) a AC; resultado em AC
ACAC+|M(X)|
Soma |M(X)| a AC; resultado em AC
ACAC-M(X)
Subtrai M(X) de AC; resultado em AC
ACAC-|M(X)|
Subtrai |M(X)| de AC; resultado em AC
AC,MQMQ*M(X)
Multiplica M(X) por MQ; colocando os bits mais
significativos do resultado em AC e os menos
significativos em MQ
MQ,ACAC%M(X)
Divide AC por M(X); colocando o quociente em
MQ e o resto em AC
ACACx2
Multiplica AC por 2; ou desloca AC um bit a
esquerda
ACAC/2
Divide AC por 2; ou desloca AC um bit a direita
Arquitetura de Computadores
47
Instruções Assembly
LOAD B mem - carrega o registrador B do endereçamento de memória
CON B con - carrega um valor constante no registrador B
SAVE B mem - armazena o registrador B no endereçamento de memória
ADD B A - soma A com B e armazena o resultado em mem
SUB B A - subtrai A de B e armazena o resultado em mem
MUL B A - multiplica A por B e armazena o resulado em mem
DIV A B - divide A por B e armazena o resultado em mem
COM A B - compara A com B e armazena o resultado no registrador teste
JUMP addr - desvia para um endereçamento
JEQ addr - desvia, se igual, para o endereçamento
JNEQ addr - desvia, se não igual, para o endereçamento
JG addr - desvia, se maior que, para o endereçamento
JGE addr - desvia, se maior que ou igual, para o endereçamento
JL addr - desvia, se menor que, para o endereçamento
JLE addr - desvia, se menor que ou igual, para o endereçamento
STOP - pára a execução
Anderson Moreira
Arquitetura de Computadores
48
Exemplo de como funciona o Assembly
a=1;
f=1;
n=<entrada do usuário>
while (a <= n)
{
f = f * a;
a = a + 1;
}
Se n fosse igual a cinco, f do programa seria quanto?
Anderson Moreira
Arquitetura de Computadores
49
Linguagem Assembly
Um compilador C traduz o código em C para a
linguagem assembly. Se considerarmos que a RAM
começa no endereço 128 deste processador e a
ROM (que contém o programa em linguagem
assembly) começa no endereçamento 0.
Anderson Moreira
Arquitetura de Computadores
50
Como funciona em Assembly
// Suponha que a está no ender. 128
// Suponha que f está no ender. 129
0 CON B 1 // a=1;
1 SAVE B 128
2 CON B 1 // f=1;
3 SAVE B 129
4 LOAD A 128 // if a > 5 desvia para 17
5 CON B 5
6 COM A B
7 JG 17
8 LOAD A 129 // f=f*a;
Anderson Moreira
9 LOAD B 128
10 MUL A B
11 SAVE mem 129
12 LOAD A 128 // a=a+1;
13 CON B 1
14 ADD A B
15 SAVE mem 128
16 JUMP 4 // volta para o if
17 STOP
Arquitetura de Computadores
51
Pergunta
"Como essas instruções vão ser exibidas na
ROM?"
Cada uma dessas instruções de linguagem assembly
tem de ser representadas por um número binário.
Para simplificar as coisas, vamos supor que cada
instrução de linguagem assembly equivale a um
único número.
Anderson Moreira
Arquitetura de Computadores
52
Associação
LOAD A - 1
LOAD B - 2
CON B - 3
SAVE B - 4
SAVE C mem - 5
ADD B A - 6
SUB B A - 7
MUL A B - 8
DIV A B - 9
COM - 10
JUMP addr - 11
JEQ addr - 12
JNEQ addr - 13
JG addr - 14
JGE addr - 15
JL addr - 16
JLE addr - 17
STOP - 18
Esses números são conhecidos como opcodes (códigos de operação já visto
na aula passada). Como estaria o programa na ROM???
Anderson Moreira
Arquitetura de Computadores
53
Programa na ROM
// Suponha que a está no endereçamento 128
// Suponha que f está no endereçamento 129
Addr opcode/value
0 3 // CONB 1
11
2 4 // SAVEB 128
3 128
4 3 // CONB 1
51
6 4 // SAVEB 129
7 129
8 1 // LOADA 128
9 128
10 3 // CONB 5
11 5
12 10 // COM
13 14 // JG 17
Anderson Moreira
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
31
1 // LOADA 129
129
2 // LOADB 128
128
8 // MUL
5 // SAVEC 129
129
1 // LOADA 128
128
3 // CONB 1
1
6 // ADD
5 // SAVEC 128
128
11 // JUMP 4
8
18 // STOP
Arquitetura de Computadores
54
Conclusão sobre o programa assembly
Sete linhas de código em C = 18 linhas de
linguagem assembly = 32 bytes na ROM.
Anderson Moreira
Arquitetura de Computadores
55
Otimizando o programa
original program
0: int x, y;
1: while (1) {
2: while (!go_i);
3: x = x_i;
4: y = y_i;
5: while (x != y) {
6:
if (x < y)
7:
y = y - x;
else
8:
x = x - y;
}
9: d_o = x;
}
replace the subtraction
operation(s) with modulo
operation in order to speed
up program
optimized program
0: int x, y, r;
1: while (1) {
2: while (!go_i);
// x must be the larger number
3: if (x_i >= y_i) {
4:
x=x_i;
5:
y=y_i;
}
6: else {
7:
x=y_i;
8:
y=x_i;
}
9: while (y != 0) {
10:
r = x % y;
11:
x = y;
12:
y = r;
}
13: d_o = x;
}
GCD(42, 8) - 9 iterations to complete the loop
GCD(42,8) - 3 iterations to complete the loop
x and y values evaluated as follows : (42, 8), (43, 8),
(26,8), (18,8), (10, 8), (2,8), (2,6), (2,4), (2,2).
x and y values evaluated as follows: (42, 8), (8,2),
(2,0)
Anderson Moreira
Arquitetura de Computadores
Arquitetura Básica
Unidade de Controle e de
Processamento;
Processor
Control unit
Diferenças
Datapath
ULA
Unidade de
Processamento é
genérica
Unidade de controle não
armazena algoritmo
(memória)
Controller
Control
/Status
Registers
PC
IR
E/S
Memory
Anderson Moreira
Arquitetura de Computadores
57
Operações de Processamento
Load
Cópia de memória em
registrador
Processor
Control unit
Datapath
ULA
Controller
• Operação na ULA
• Valores em
Registradores são
processados pela
ULA e armazenados
em registrador
• Armazena
+1
Control
/Status
Registers
10
PC
• Cópia de
registrador em
memória
11
IR
E/S
Memory
...
10
11
...
Anderson Moreira
Arquitetura de Computadores
58
Unidade de Controle
Unidade de Controle: configura operações do
datapath
Seqüência de operações (instruções)
desejadas armazenadas na memória
(programa)
Processor
Control unit
Datapath
Ciclo de Instrução – várias sub-operações (cada
uma em um ciclo de relógio)
ULA
Busca: armazena instrução em IR,
atualiza PC
Controller
Decodificação: determina o que a
instrução significa
Busca de Operandos: cópia de dados da
memória para registradores na unid.
Processamento
Execução: Processa dados na ULA
Armazena resultados: escreve resultados
de registrador na memória
Control
/Status
Registers
PC
IR
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
59
Sub-operações da Unidade de Controle
Busca
Cópia da instrução
em IR
PC: Contador de
programa aponta
para próxima
instrução
IR: armazena
instrução que foi
buscada
Processor
Control unit
Datapath
ULA
Controller
Control
/Status
Registers
PC
100
IR
load R0, M[500]
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
60
Sub-operações da Unidade de Controle
Decodificação
Determina significado
da instrução
Processor
Control unit
Datapath
ULA
Controller
Control
/Status
Registers
PC
100
IR
load R0, M[500]
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
61
Sub-operações da Unidade de Controle
Busca de Operandos
Cópia de dados da
memória para
registradores no
Processor
Control unit
Datapath
ULA
datapath
Controller
Control
/Status
Registers
10
PC
100
IR
load R0, M[500]
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
62
Sub-operações da Unidade de Controle
Execução
Processa dados na ULA
(Para esta instrução em
particular nada
acontece durante esta
sub-operação)
Processor
Control unit
Datapath
ULA
Controller
Control
/Status
Registers
10
PC
100
IR
load R0, M[500]
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
63
Sub-operações da Unidade de Controle
Armazena resultados
Escreve dado de
registrador em
memória
(Para esta instrução
em particular nada
acontece durante
esta sub-operação)
Processor
Control unit
Datapath
ULA
Controller
Control
/Status
Registers
10
PC
100
IR
load R0, M[500]
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
64
Ciclos de uma Instrução
PC=100
Fetch Decode Fetch Exec.
ops
Processor
Store
results
Control unit
Datapath
ULA
clk
Controller
Control
/Status
Registers
10
PC 100
IR
load R0, M[500]
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
R1
...
500
501
10
...
65
Ciclos de uma Instrução
PC=100
Fetch Decode Fetch Exec.
ops
Processor
Store
results
Control unit
Datapath
ULA
clk
Controller
PC=101
Fetch Decode Fetch Exec.
ops
+1
Control
/Status
Registers
Store
results
clk
10
PC 101
IR
inc R1, R0
R0
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
Anderson Moreira
Arquitetura de Computadores
Memory
11
R1
...
500
501
10
...
66
Ciclos de uma Instrução
PC=100
Fetch Decode Fetch Exec.
ops
Processor
Store
results
Control unit
Datapath
ULA
clk
Controller
PC=101
Fetch Decode Fetch Exec.
ops
Control
/Status
Registers
Store
results
clk
10
PC 102
PC=102
Fetch Decode Fetch Exec.
ops
IR
store M[501], R1
Store
results
E/S
100 load R0, M[500]
101
inc R1, R0
102 store M[501], R1
clk
Anderson Moreira
R0
Arquitetura de Computadores
Memory
11
R1
...
500 10
501 11
...
67
Considerações da Arquitetura
Processador de N-bits
ULA, registradores,
barramento,
interface de
memória N-bits
Comum em aplic.
emb: 8-bit, 16-bit,
32-bit
Comum em
Desktop/servidores
: 32 ou 64 bit
Processor
Control unit
ULA
Controller
Control
/Status
Registers
PC
Tamanho do PC determina
espaço de
endereçamento
Anderson Moreira
Datapath
Arquitetura de Computadores
IR
E/S
Memory
68
Considerações da Arquitetura
Freqüência do Clock
Deve ser maior que o
maior retardo de
carregamento de
registrador
Acesso à memória
possui o maior
retardo
Processor
Control unit
Datapath
ULA
Controller
Control
/Status
Registers
PC
IR
E/S
Memory
Anderson Moreira
Arquitetura de Computadores
69
Dúvidas
Anderson Moreira
Arquitetura de Computadores
70