Buscar

ARQUITETURA DE COMPUTADORES E MICROPROCESSADORES Atividade 1 (A1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Todo nó computacional, como os microcontroladores e os microprocessadores, tem, 
por objetivo, realizar o processamento de instruções por meio de sua decodificação 
e de sua execução. Para tanto, o processador exporta instruções que poderão ser 
mapeadas diretamente na linguagem de programação Assembly. Sabemos que um 
computador pode ser dividido em módulos, que, por sua vez, poderão ser 
decompostos em submódulos. Para esta questão, adote os submódulos internos à 
CPU: unidade de controle; registradores de controle e de estado; registradores de 
propósito geral; e ULA. 
Quais módulos e submódulos serão ativados quando as seguintes instruções forem 
processadas? 
 
Arquitetura de uma Unidade Central de Processamento (UCP) 
A função? fundamental da Unidade Central de Processamento (UCP), não obstante o 
formato físico e a arquitetura, é executar uma sequência de instruções armazenadas 
chamada programa. O programa é representado por uma série de números que são 
mantidos em algum tipo de memória no computador. Há quatro etapas que quase todos os 
processadores centrais executam em sua operação: a busca de instruções, a decodificação, 
a execução e escrita de dados. A abaixo mostra o diagrama em blocos de uma Unidade 
Central de Processamento (UCP). 
 
 Unidade Lógica e Aritmética 
A Unidade Lógica e Aritmética (ULA), ou Arithmetic Logic Unit (ALU), é a unidade da 
Unidade Central de Processamento (UCP, ou também CPU), responsável pela execução 
das operações aritméticas e lógicas. John von Neumann já propôs o conceito de ULA em 
1945, quando construiu o computador EDVAC. A ULA executa as principais operações 
lógicas e aritméticas que um computador precisa realizar. Ela faz as operações de soma, 
subtração, multiplicação e determina se um número é zero, positivo ou negativo. Além das 
funções aritméticas, uma ULA deve ser capaz de determinar se uma quantidade é igual, 
menor ou maior que outra. A ULA também realiza as funções lógicas Arquitetura de 
Computadores 2014 CIANO.indd 58 14/04/15 15:59 Arquitetura de Computadores 59 
básicas como E, OU, OU-Exclusivo, assim como a negação, tanto com números quanto 
com caracteres. 
 
Unidade de Controle 
A Unidade de Controle (UC) é responsável por gerar todos os sinais que controlam as 
operações no interior da UCP. Além disso, também tem o objetivo de controlar as interfaces 
de entrada e de saída do processador com o mundo externo. A UC realiza a decodificação 
de instruções e executa as ações dessas instruções. 
 
Registradores 
O registrador de uma Unidade Central de Processamento é um tipo de memória rápida e 
com pequena capacidade construída dentro da UCP e utilizada para o armazenamento 
temporário de dados no processamento. Pelo fato de estarem próximos da Unidade Lógica 
e Aritmética e de ser construída com circuitos de memória muito rápidos, possibilita o maior 
desempenho no processamento. Os registradores ficam no topo da hierarquia de memória, 
por isso é a forma mais rápida mas também, mais cara de se armazenar um dado. 
 
Barramentos 
Os diversos componentes de um computador precisam se comunicar. O barramento é um 
subsistema que transfere dados entre componentes dentro de um computador ou entre 
computadores. Os barramentos do computador são basicamente linhas de comunicação 
elétricas em forma paralela ou serial com conexões múltiplas, isto é, permite ligar vários 
dispositivos. Com o aumento do desempenho, os sistemas de interconexão têm papel 
importante. O barramento interno tem como função conectar a CPU, memória e interfaces. 
O barramento externo tem como função conectar computadores aos seus periféricos, 
impressoras, vídeo e outros computadores. 
Entrada e saída 
Na computação, a entrada/saída, ou E/S, ou ainda o termo em inglês I/O (Input/Output), 
referem-se à comunicação entre um sistema de processamento de dados (tal como um 
computador) e o mundo exterior - possivelmente um ser humano ou outro sistema de 
processamento de dados. As entradas são os sinais ou os dados recebidos pelo sistema, 
e as saídas são os sinais ou os dados emitidos a partir dele. 
 
Linguagem Assembly 
mov Reg1, [Reg2] ; Reg1 = conteúdo da posição de mem. apontada por Reg2 
mov Reg3, 10 ; Reg3 = 10 
sub Reg1, Reg3 ; Reg1 = Reg1 – Reg3 
 js p_else ; desvio para p_else se flag sinal esteja sinalizada ; 
<sequência_if>;codificação relativa ao if 
 jump p_final ; desvio não condicional para p_final 
p_else: ; rótulo denominado p_else ; 
<sequência_else>;codificação relativa ao else 
 p_final: ; rótulo denominado p_final 
<restante_do_código> ; sequência após o desvio condicional 
instrução operando_destino, operando_fonte 
No caso do “sub”, o operando à esquerda corresponde tanto à fonte quanto ao destino do 
resultado da operação. Caso o Assembly manipulasse três operandos, teríamos esta 
instrução: 
 instrução operando_destino, operando_fonte1, operando_fonte2 
Os comentários, no código, estão precedidos por ponto-e-vírgula. 
Voltando, então, ao código, percebemos que, na primeira linha, ocorre a instanciação, por 
meio do comando “mov ” (movimentação de dados), do registrador “Reg1” com o 
conteúdo da posição de memória referenciado pelo registrador “Reg2”. Na segunda linha, 
é realizada a instanciação do registrador “Reg3” com o valor 10. 
Quando é realizada a operação “sub” na terceira linha, é instanciado o registrador flags. 
Caso a subtração resulte em 0, o bit zero é instanciado em 1; caso a subtração resulte em 
um valor negativo, o bit sinal é instanciado em 1. 
O flags é utilizado como parâmetro da quarta linha: instrução “js” (jump sinal). A instrução 
js faz com que o fluxo de processamento seja desviado para o rótulo “p_else” (um rótulo 
marca uma posição de memória) caso o bit flag sinal valha 1 – ou seja, caso a subtração 
anterior tenha gerado um valor negativo. Sendo assim, o trecho identificado como 
“<sequência_if>” somente será executado se o resultado da operação de subtração for 
maior ou igual a zero. Consequentemente, o trecho “<sequência_else>” será executado 
se o resultado da operação de subtração gerar um valor negativo. 
A instrução “jump” corresponde a um desvio não condicional (como o comando “goto” da 
linguagem C/C++). No caso do código, o desvio não condicional direciona o fluxo de 
processamento ao rótulo “p_final” – saindo da estrutura if/else.

Continue navegando