Arquitetura de Computador

 

 

A Fig.1 abaixo apresenta a arquitetura para um computador com uma memória que armazena palavras de doze bits, com um conjunto de dezesseis instruções, ou seja, código de operações de quatro bits. Para simplificar a análise, a memória será dotada somente de dois terminais: um de leitura(R) e um de escrita(W). Para executar qualquer uma das operações é suficiente colocar o terminal no nível ativo ALTO.

 

 

fig1
Fig.1

 

 

Registrador de Operações(OPR) : registrador de quatro bits e conterá o código de operação da instrução sendo executada

Registrador de Propósitos Gerais(GPR) : registrador de doze bits que armazenará instruções lidas da memória e dados a serem escritos/lidos da memória

Registrador Flag do Acumulador(F) : registrador de um bit que será setado quando acontecer vai-um na posição mais significativa do Acumulador

Registrador Flag do Registrador de Propósitos Gerais(Z) : registrador de um bit que será setado quando o conteúdo de GPR forem todos bits 0

Observe que os dois Flags estão disponíveis para o Controlador através de uma conexão direta.Então, na execução de algumas instruções, a próxima microoperação na seqüência pode depender dos resultados produzidos pelas microoperações precedentes, e o Controlador pode seguir uma seqüência ou outra, dependendo do nível lógico dos Flags F ou Z.

 

 

Microoperações do GPR

 

Microoperações da ULA


O Controlador fornecerá sinais de comando a todos os terminais de controle dos registradores e para a memória, com um ou mais terminais de controle levados a nível lógico 1.A microoperação é executada quando o terminal de controle correspondente fôr ativado.


Operações de Controle do Computador

 

 

O Controlador fornecerá sinais de comando a todos os terminais de controle dos registradores e para a memória, com um ou mais terminais de controle levados a nível lógico 1.A microoperação é executada quando o terminal de controle correspondente fôr ativado.

 

 

 

Operações de Controle do Computador

 

 

fig2
Fig.2

 

 

Instruções


A seqüência de microoperações para o Controlador Buscar(Fetch) uma instrução na memória é apresentada na figura abaixo.

 

 

fig3
Fig.3

 

 

No final da seqüência das microoperações de Busca, a parte de operação da instrução(código da operação)  está no OPR e o endereço do operando, se houver, está na parte de endereços do GPR.

 

 

A escolha do conjunto de instruções do computador considera o compromisso entre a complexidade das instruções, o hardware necessário e os programas a serem escritos. Se as instruções são simples e poucas, então o circuito do controlador será simples e os programas devem ser maiores. Caso as instruções sejam complicadas e numerosas, então o circuito do controlador será mais elaborado e os programas mais simples.

 

 

Instruções de uma microoperação(podem ser executadas em um ciclo de relógio)

 

 

fig4
Fig.4

 

 

Qualquer uma das instruções acima requer que um único terminal de controle seja colocado no nível ativo e podem ser executadas em um ciclo de relógio e consiste de uma só microoperação.

 

 

Instruções com Seqüência de Microoperações(podem ser executadas em vários ciclos de relógio)

 

 

ADD, endereço


Adicionar ao presente conteúdo do acumulador o número(operando) localizado no endereço de memória que está especificado como parte da instrução.

 

 

fig5
Fig.5

 

 

O endereço do operando pode ser direto ou indireto.O endereço direto significa que a instrução tem o endereço da posição de memória onde está o operando(Fig.6(a)).O endereço indireto é quando a instrução tem o endereço da posição de memória onde está o endereço do operando(Fig.6(b)).

 

 

fig6
Fig.6

 

 

ADDI, endereço


O conteúdo da posição de memória cujo endereço está armazenado em endereço é somado ao conteúdo do Acumulador e o resultado fica no Acumulador.

 

 

fig7
Fig.7

 

 

STA, endereço


Armazenar o conteúdo do Acumulador em um endereço da memória indicado em endereço

 

 

fig8
Fig.8

 

 

Normalmente as instruções são listadas na memória na ordem em que devem ser executadas e o acesso será a uma instrução após a outra incrementando o Contador de Programa.Algumas vezes será preciso não seguir esta seqüência mas saltar para uma instrução que não esteja na ordem seqüêncial.

 

 

JMP, endereço


Saltar(Jump) para a instrução localizada no local de memória especificado na instrução em endereço

 

 

fig9
Fig.9

 

 

JMPI, endereço


Saltar para a instrução cujo endereço está armazenado no local endereço da memória; endereço armazena o endereço da próxima instrução a ser executada

 

fig10
Fig.10

 

 

A parte de endereço da instrução JMPI é o endereço do local da memória que tem o endereço da próxima instrução.

 

 

Uma rotina é definida como um conjunto de instruções que realiza determinada função dentro de um programa.A chamada da sub-rotina ou salto para uma sub-rotina é o processo no qual o fluxo do programa principal de execução da instruções é desviado para a execução de uma determinada rotina.

 

 

CSR, endereço


Chamar a sub-rotina.A instrução armazena o endereço de retorno ao programa principal no local da memória especificado na instrução(endereço) e busca a próxima instrução a partir da locação endereço+1

 

 

fig11
Fig.11

 

 

O fim da sub-rotina deve ser sempre o retôrno ao local da memória onde o programa fez o salto para a sub-rotina

 

 

fig12
Fig.12

 

 

ISZ, endereço


Incrementar e saltar se zero; ler o número no local de memória endereço, incrementá-lo e retorná-lo a seu local original; se depois do incremento o número fôr zero, saltar a próxima instrução

 

 

fig13
Fig.13

 

 

HLT


Parar; esta instrução colocará o computador inativo, nenhuma operação será realizada

 

 

Resumo das Instruções

 

 

Instrução
CRA   limpar acumulador
CTA   complementar acumulador
ITA   lincrementar acumulador
CRF   limpar flip-flop F
CTF   complementar flip-flop F
SFZ   saltar próxima instrução se F é zero
ROR   girar à direita
ROL   girar à esquerda
ADD   adicionar ao acumulador
ADDI   adicionar ao acumulador, indireto
STA   armazenar na memória do acumulador
JMP   saltar
JMPI   saltar indireto
CSR   chamar sub-rotina
ISZ   incrementar e saltar se Z é um
HLT   parar

 

 

Adição e Subtrtação

 

 

Abaixo temos o conteúdo da memória para um programa calcular a soma de três números armazenados nas posições de memória 06H, 07H, e 08H. A soma será armazenada na posição 09H da memória.

fig14
Fig.14

 

 

Em geral, em um programa, não se especifica os endereços númericos das posições de memória para cada operando até o programa ser escrito completamente. É mais comum e conveniente especificar os endereços dos operandos em forma simbólica, por meio de rótulos(labels). Após a conclusão elaboração do programa, se substitui os rótulos por valores numéricos dos endereços das posições de memória.


fig15
Fig.15

 

 

Uso de JMP e ISZ

 

 

Um programa para somar um grande número de parcelas armazenadas a partir da locação FAD é mostrado na figura abaixo. Observe que local ANA da memória tem o endereço do próximo número a ser somado. Após cada adiçao, o endereço ANA é incrementdado. Um segunda posição de memória CTR tem uma constante F9CH (-100 em decimal) que é usada para contar o número de parcelas somadas. Em cada adição, CTR é incrementada até que seja igual a 0 e a soma está concluída.

 

 

fig16
Fig.16

 

 

Chamada de Sub-rotina

 

 

Programas frequentemente pedem que partes específicas sejam executadas várias vezes durante a execução do programa. A sequência de instruções para realizar estas funções pode ser escrita em cada ponto do programa onde é necessária. Para poucas instruções, isto é aceitável. Mas quando o número de instruções aumenta, então a solução é escreve sub-rotinas.

 

 

Uma Sub-rotina é uma sequência de instruções que realizam uma tarefa específica. É escrita apenas uma vez, e armazenada em uma área específica da memória.Então, sempre que o programa principal precisa da sub-rotina, o processador salta para o endereço da sub-rotina, executa a sub-rotina e volta para o programa principal. O fluxograma abaixo ilustra como uma sub-rotina é usada por um programa principal. Existem duas saídas(e retorno) para sub-rotina: uma saída no bloco(instrução) 1 e retorno no bloco(instrução) 3; outra saída no bloco(instrução) 4 e retorno no bloco (instrução) 5.

 

 

fig17
Fig.17

 

 

O uso de sub-rotina é mais eficiente no utilização de espaço de memória que a alternativa de repetir as instruções da sub-rotina cada vez que é necessária, e a sub-rotina pode ser chamada quantas vezes seja precisa no programa principal. Os termos salto para sub-rotina e chamada de sub-rotina podem ser empregados para designar o processo.

 

 

 

 

comp144
Questões para Revisão
Resolva  on-line o teste sobre (a)Arquitetura de Computador e (b)Instruções .

 

 

 

 

 

 

 

Atualizada em 5/03/24

mac logo

Free Web Hosting