Vous êtes sur la page 1sur 51

Disciplina de Introduo Arquitetura de Computadores

Prof. Dr. Leonardo B. Pinho leonardopinho@unipampa.edu.br

IAC-2009/1

7 Atividade no Presencial
Descrio da atividade
Disponvel no grupo de discusso da disciplina

Observaes
Trabalho manuscrito e individual
Entrega at segunda-feira (27/4), no incio da aula

Lembrando:
Atividades no presenciais contam para a freqncia Avaliadas quanto a pontualidade e contedo Representam um acrscimo importante na nota final
IAC-2009/1

7 Atividade no Presencial
Descrio da atividade
Fazer uma leitura do Captulo 3 do livro de referncia da disciplina (Weber) Elaborar um resumo com um pargrafo (com ilustraes referenciadas ex.: Na Figura 1 so apresentados os elementos bsicos de um computador: ...) para cada um dos cinco itens abaixo (total aproximado de duas folhas)
Princpios bsicos dos computadores Elementos funcionais bsicos Ciclo de busca-decodificao-execuo Comparao do formato de instrues no EDVAC x IAS Diferenciao entre arquiteturas de 4, 3, 2 e 1 endereos
IAC-2009/1

Aula de Hoje
Reviso da aula passada
Arquiteturas de N endereos

Matria nova
Computador hipottico Neander
Caractersticas arquiteturais Aspectos de Programao do Neander

IAC-2009/1

Aula Passada
Arquiteturas de 4, 3, 2, 1 e 0 endereos

Arquiteturas de N Endereos
Diferentes arquiteturas usam instrues com diferentes quantidades de endereos
Endereos = referncias memria

Diferena na quantidade de endereos no necessariamente implica em diferena de capacidade


Exemplo: EDVAC (4 endereos) x IAS (1 endereo)

Afinal, em que influencia a quantidade de endereos?

Arquiteturas de 4 Endereos
Ex.: EDVAC
OP E1 E2 E3 E4
OP = cdigo da operao realizada E1 = localizao do 1 operando fonte E2 = localizao do 2 operando fonte E3 = localizao do operando destino E4 = localizao da prxima instruo executada

Arquiteturas de 4 Endereos
Observaes:
Vantagens
No precisa de instrues explicitas para desvio Operao de manipulao de dados + desvio

Desvantagens
Programas so normalmente escritos seqencialmente
Instruo executada muitas vezes a prxima na memria

Custo/benefcio
No valia a pena gastar, em todas as instrues, o espao necessrio para indicar a prxima instruo

Arquiteturas de 3 Endereos
Ex.: MIPS
OP E1 E2 E3
OP = cdigo da operao realizada E1 = localizao do operando destino E2 = localizao do 1 operando fonte E3 = localizao do 2 operando fonte

Arquiteturas de 3 Endereos
Observaes:
Vantagens
Elimina a necessidade de espao para o end. da prxima instruo em instrues que no envolvam desvio de fluxo de execuo
Reduo no tamanho das instrues Reduo no tamanho da memria necessria para armazenar os programas

Desvantagens
Necessidade de um registrador especfico (PC) para descobrir a prxima instruo a ser executada Necessidade de instrues especficas para desvio Muitas vezes o mesmo operando fonte e destino (Ex.: A = A + B)

Custo/benefcio
Desperdiar espao de armazenamento sempre que a redundncia fonte/destino freqente

Arquiteturas de 2 Endereos
Ex.: ?
OP E1 E2
OP = cdigo da operao realizada E1 = localizao do operando destino e 1 fonte E2 = localizao do 2 operando fonte

Arquiteturas de 2 Endereos
Observaes:
Vantagens
Elimina a necessidade de espao referente a um dos operandos
Reduo no tamanho das instrues Reduo no tamanho da memria necessria para armazenar os programas

Desvantagens
Restrio severa
Resultado sempre altera o contedo de um dos operandos fonte Necessidade de instrues complementares para mover dados, copiando operandos de uma posio para outra ADD A B C -> MOV A B + ADD A C

Custo/benefcio
Se considerarmos que seria possvel usar registradores especiais como operandos implcitos, podemos economizar ainda mais espao

Arquiteturas de 1 Endereo
Ex.: Neander
OP E1
OP = cdigo da operao realizada E1 = localizao do operando fonte/destino
Operando implcito = Acumulador (AC) Um dos fontes e destino

Arquiteturas de 1 Endereo
Observaes:
Vantagens
Reduz significativamente o tamanho das instrues

Desvantagens
Necessita que instrues de movimentao de dados sejam subdivididas
Acumulador p/ Memria = STore Acumulator (STA) Memria p/ Acumulador = LoaD Acumulator (LDA)

Custo/benefcio
Em comparao com uma arquitetura de trs endereos, tende a necessitar duas instrues adicionais
ADD A B C -> LDA B + ADD C + STA A

Arquiteturas de 0 Endereos
Ex.: ?
OP
OP = cdigo da operao realizada
Operandos implcitos Ex.: Armazenados em uma pilha na memria

Arquiteturas de 0 Endereos
Observaes:
Vantagens
Reduz drasticamente o tamanho das instrues

Desvantagens
Na verdade, para poder ser usada precisa de pelo menos duas instrues com endereo, para transferncia de dados para a/da pilha
PUSH = empilha POP = desempilha

Custo/benefcio
Arquiteturas puras de zero endereos no apresentam vantagens significativas, o que as torna pouco difundidas
ADD A B C -> PUSH C + PUSH B + ADD + POP A

Matria Nova
Computador Hipottico Neander

IAC-2009/1

Computador Neander
Introduo
Abordagem bottom-up x top-down
Viso inicial dos conhecimentos bsicos necessrios para o entendimento de arquitetura de computadores

Ponto de consolidao
Concretizao dos conhecimentos bsicos atravs do estudo de um computador hipottico

Exemplo didtico
Computador Neander simples e ilustrativo

Computador Neander
Caractersticas:
Largura de dados e endereos de 8 bits Dados representados em complemento de dois 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 cdigos de condio: negativo (N) e zero (Z)

Computador Neander
modo de endereamento
modo direto: OP E1 (E1 end. operando memria)
muitas vezes tambm chamado de absoluto palavra que segue o cdigo da instruo contm
nas instrues de manipulao de dados endereo de memria do operando nas instrues de desvio endereo corresponde posio de memria onde est uma instruo a ser executada

Computador Neander
modo de endereamento
memria

endereo

operando

Computador Neander
Conjunto de instrues (ISA)
compreende 11 instrues
codificadas atravs dos quatro bits mais significativos da palavra que contm o cdigo da instruo

Obs: Veremos mais adiante que existem verses estendidas do Neander, as quais implementam instrues complementares

Computador Neander
Conjunto de instrues (ISA)

end significa endereo direto


STA, LDA, ADD, OR e AND: endereo de operando JMP, JN e JZ: endereo de desvio

Computador Neander
Aes executadas

AC e PC: registradores especiais (acumulador e program counter) MEM(end): contedo da posio end de memria N e Z: cdigos de condio : atribuio

Computador Neander
Cdigos de condio
Cdigos fornecidos pela Unidade Lgica e Aritmtica (ULA) (usados pelas instrues JN e JZ) N - (negativo) : sinal do resultado
1 : resultado negativo 0 : resultado positivo

Z - (zero) : indica resultado igual a zero


1 : resultado igual a zero 0 : resultado diferente de zero

Computador Neander
Cdigos de condio
Observaes
Instrues lgicas e aritmticas (ADD, NOT, AND, OR) e a instruo de transferncia LDA afetam N e Z Demais instrues (STA, JMP, JN, JZ, NOP e HLT) no alteram

Computador Neander
Formato de instrues
Formadas por um ou dois bytes
ocupam uma ou duas posies na memria instrues de um byte
4 bits mais significativos contm o cdigo da instruo

instrues de dois bytes


primeiro byte contm o cdigo nos 4 bits mais significativos e o segundo byte contm um endereo

Instrues de dois bytes so aquelas que fazem referncia memria

Computador Neander
Formato de instrues

endereo direto

Computador Neander
Exemplo de programao
Vamos considerar, como exemplo, um programa que realiza a soma de 3 posies consecutivas da memria e armazena o resultado numa quarta posio. Inicialmente, devem ser escolhidas a rea de dados e a rea de programa, ou seja, a localizao das instrues e dados na memria. No existem critrios rgidos para essa escolha, mas deve ser observado que a rea de programa no pode invadir a rea de dados e vice-versa.

Computador Neander
Exemplo de programao
Seja, para esse programa, escolhida uma alocao de memria de tal forma que o programa ocupe a metade inferior da memria e os dados a metade superior, como segue:

Computador Neander
Exemplo de programao
1 Programa Neander

Computador Neander
Exemplo de programao
1 Programa Neander
Esse programa pode ser editado em linguagem de mquina (tanto em hexa como em decimal), depurado e executado usando o simulador/depurador NEANDER
Linguagem simblica atravs do simulador NeanderWin

A codificao em linguagem de mquina correspondente a cada uma das instrues seria:

Programao do Neander
Observaes complementares
Memria disponvel para programa e dados compreende apenas 256 posies Exceto onde explicitado, todos os nmeros e endereos so representados na base decimal Adotar a seguinte conveno:
incio do programa - posio 0 (0H) incio da rea de dados - posio 128 (80H)

Programao do Neander
1 Exerccio:
Mltiplas formas para limpar (zerar) o acumulador
a) b) c) d) e) Atribuio direta Subtrao Operao lgica AND com NOT Operao lgica OR com NOTs Operao lgica OR com NOT e SOMA

Programao do Neander
1 Exerccio:
Mltiplas formas para limpar (zerar) o acumulador
f) Incrementos sucessivos g) Incrementos ou decrementos sucessivos (pos ou neg) h) Deslocamentos sucessivos para a esquerda, com contagem progressiva i) Deslocamentos sucessivos para a esquerda, com contagem regressiva j) Deslocamentos sucessivos para a esquerda, at obter zero

Programao do Neander
2 Exerccio:
Somar duas variveis de 8 bits
Faa um programa para somar duas variveis representadas em complemento de dois. As variveis e o resultado esto dispostos segundo o mapa de memria abaixo:
posio 128: primeira varivel posio 129: segunda varivel posio 130: resultado

Programao do Neander
3 Exerccio:
Subtrair duas variveis de 8 bits:
Faa um programa para subtrair duas variveis representadas em complemento de dois O resultado deve aparecer na posio de memria consecutiva s ocupadas pelas variveis:
posio 128: minuendo posio 129: subtraendo posio 130: resultado

Programao do Neander
4 Exerccio:
Comparao:
Faa um programa que determine qual a maior de 3 variveis positivas de 8 bits armazenadas em posies consecutivas de memria. O resultado (a maior varivel) deve aparecer na posio livre de memria consecutiva s ocupadas pelas variveis na rea reservada aos dados
posio 128: primeira varivel posio 129: segunda varivel posio 130: terceira varivel posio 131: resultado (maior das trs variveis)

Programao do Neander
5 Exerccio:
Determinao de overflow na soma:
Faa um programa que determine a ocorrncia de overflow na soma de duas variveis. As variveis so de 8 bits em complemento de dois e esto armazenadas em posies consecutivas de memria. O resultado da soma, tambm em 8 bits, deve aparecer na primeira posio livre e overflow deve ser indicado da seguinte forma:
posio 130: contedo = 0H quando no ocorreu overflow contedo = FFH quando ocorreu overflow

Programao do Neander
6 Exerccio:
Limpeza de uma rea de memria:
Faa um programa para zerar 32 posies consecutivas na memria. Endereo inicial desta rea fornecido na posio 128 de memria (?). garantido que o endereo inicial est entre 130 e 220.

Modos de Endereamento
Instrues lgicas e aritmticas realizam operaes com operandos
Operando = elemento armazenado em um registrador ou em uma posio de memria

Instrues de desvio precisam saber para qual endereo de programa se quer desviar Problema:
Como saber onde esto os operandos que devem ser considerados na execuo da instruo?
Endereo do operando / endereo de programa

Modos de Endereamento
Direto
Endereo de memria indicado na instruo o prprio endereo (operando/programa)

Indireto
Endereo de memria indicado na instruo contm o endereo (operando/programa)
Endereo indicado um ponteiro para um endereo de operando ou de programa

Programao do Neander
6 Exerccio:
Limpeza de uma rea de memria:
Faa um programa para zerar 32 posies consecutivas na memria. Endereo inicial desta rea fornecido na posio 128 de memria. garantido que o endereo inicial est entre 130 e 220.

Computador Neander
modo de endereamento
ENDEREAMENTO DIRETO
absoluto
endereo operando

memria

Segundo byte da instruo SEMPRE o endereo na memria correspondente ao operando ou programa


Obs.: o registrador AC implicitamente um dos operandos em vrias instrues (ou seja, no precisa ser explicitado)

Computador Neander
modo de endereamento
ENDEREAMENTO INDIRETO
memria

Neander NO SUPORTA, mas ...


podemos emular um ponteiro carregando no segundo byte das instrues o endereo do operando Obs.: Endereo pode estar em outra posio (ex. 128)

Exerccios Ponteiros
A. Programa que teste se uma determinada posio de memria (endereo fornecido na posio 128) contm o valor zero. Se sim, armazena 1 na pos 131. Se no, armazena 0 na pos 131 (pos 129=1 e pos 130=0)

Exerccios Ponteiros
B. Programa que teste se uma determinada posio de memria (endereo fornecido na posio 128) contm um valor negativo. Se sim, armazena 1 na pos 131. Se no, armazena 0 na pos 131 (pos 129=1 e pos 130=0)

Exerccios Ponteiros
C. Programa que teste se uma determinada posio de memria (endereo fornecido na posio 128) contm um valor positivo. Se sim, armazena 1 na pos 131. Se no, armazena 0 na pos 131 (pos 129=1 e pos 130=0)

Exerccios Ponteiros
D. Programa que testa a memria, a partir de uma determinada posio (endereo fornecido na posio 128), procurando pela primeira ocorrncia de um valor positivo. Ao encontrar, armazena na pos 132 o endereo do primeiro valor positivo (pos 129=1, pos 130=0 e pos 131=255)
Obs.:
Endereos vlidos para teste entre 133 e 255. Pos 132 deve conter 255 se nenhum valor positivo for encontrado at a ltima posio de memria.

Exerccios Ponteiros
E. Programa que testa a memria, a partir de uma determinada posio (endereo fornecido na posio 128), procurando por ocorrncias de valor positivo. Ao encontrar, contabiliza na pos 132 o nmero de ocorrncias de valor positivo (pos 129=1, pos 130=0 e pos 131=255)
Obs.:
Endereos vlidos para teste entre 133 e 255. Pos 132 deve conter 0 se nenhum valor positivo for encontrado at a ltima posio de memria.

Computador Neander
Usando o simulador