Buscar

Unidade II - Instruções e U L A

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 22 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

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 6, do total de 22 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

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 9, do total de 22 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

Organização de 
Computadores
Material Teórico
Responsável pelo Conteúdo:
Prof. Ms. Fábio Peppe Beraldo
Revisão Textual:
Profa. Esp. Márcia Ota
Instruções e U.L.A.
• Instruções de Máquina
• Quais os elementos de uma instrução de máquina?
• Tipos de Instruçôes
• Projetando um conjunto de instruções
• Unidade Logica e Aritmética (ULA)
• Breve simulação
 · Esta unidade objetiva capacitar o aluno em como construir uma 
instrução bem balanceada, identificar e utilizar os tipos de instruções 
corretas e a trabalhar com as memórias de modo otimizado para 
o sistema.
OBJETIVO DE APRENDIZADO
Olá, aluno (a)!
Nesta Unidade, será introduzido o conceito de instruções e suas partes, além 
de como o hardware trabalha com as memórias e, por fim, o que é uma 
ULA, quais suas partes e como seu funcionamento ocorre. Esses conceitos, 
na verdade, são a chave do funcionamento de um processador; portanto, 
uma das mais importantes. 
Além disso, para que a sua aprendizagem ocorra num ambiente mais 
interativo possível, na pasta de atividades, você também encontrará as 
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material 
disponibilizado é mais um elemento para seu aprendizado, por favor, estude 
todos com atenção!
ORIENTAÇÕES
Instruções e U.L.A.
UNIDADE Instruções e U.L.A.
Contextualização
A linguagem de máquina de um computador trata de uma representação para as 
instruções, em nível mais básico, que um computador pode executar.
Um programa escrito em linguagem de máquina é composto por uma série 
de instruções de máquina. Com essas instruções, um programador consegue 
determinar que operações um processador deverá executar.
Esse processador utiliza uma memória para transportar dados entre e a ULA 
e as demais partes de um processador, e é assim que iniciamos nossa etapa atual 
de estudos, em que faremos uma introdução aos assuntos descritos, bem como 
exemplificações de funcionamento.
6
7
 Instruções de Máquina
Um conjunto de instruções de máquina determina o limite que um engenheiro e 
um programador de sistemas veem a máquina:
 · O engenheiro vê um conjunto de instruções de máquina que fornecem os 
requisitos mínimos para que um processador possa trabalhar corretamente. 
 · Para o programador, é necessário conhecer quais registradores do 
processador, sua estrutura de memória, os tipos de dados disponíveis 
diretamente na máquina e o funcionamento da ULA, que veremos, em 
breve, nessa unidade.
Caracterizando uma instrução de máquina
O processador realiza seu trabalho de acordo com as instruções de que está 
executando, a essas instruções damos o nome de instrução de máquina, que podem 
ser de diferentes tipos, de acordo com a necessidade de trabalho do processador que 
trabalha com várias instruções ao “mesmo tempo”, o que chamamos de conjunto 
de instruções de processamento.
É obrigatório que, em uma instrução, haja todas as informações necessárias 
para a correta realização de um trabalho pelo processador e esse trabalho deve 
seguir alguns passos para o correto funcionamento, como podemos ver na figura 
a seguir:
Cálculo de
endereçamento
do operando
Armazenamento
de resultado
Cálculo de
endereçamento
do operando
Operação sobre
os dados
Retorno para
cadeia de caracteres
ou vetor de dados
Instrução completada,
busca da próxima
instrução
Busca de
instrução
Cálculo de
endereçamento
da instrução
Decodi�cação
da operação
da instrução
Busca de
operando
Múltiplos
Operando
Múltiplos
Resultados
Figura 1: Diagrama de estados do ciclo de instruções.
Fonte: Desenvolvido pelo autor.
7
UNIDADE Instruções e U.L.A.
Quais os elementos de uma instrução 
de máquina?
Os elementos envolvidos na execução de uma instrução são:
 · Código de operação: especifica a operação a ser efetuada (por exemplo, 
ADO, E/S). A operação é especificada por um código binário, conhecido 
como código de operação.
 · Referência a operando fonte: a operação pode envolver um ou mais 
operandos fonte, ou seja, operandos que constituem dados de entrada 
para a operação.
 · Referência a operando de destino: a operação pode produzir um resultado.
 · Endereço da próxima instrução: indica onde a CPU deve buscar a próxima 
instrução, depois que a execução da instrução corrente for completada.
As instruções a serem buscadas, normalmente, estão localizadas na memória 
principal ou, quando estiverem trabalhadas pelo sistema operacional, na memória 
virtual. O mais comum é que as novas instruções sigam uma após a outra da 
instrução em processamento, o que anula a necessidade de uma referência a outra 
instrução, o que chamamos de endereçamento de instrução.
Os operandos fonte e de destino podem estar localizados em uma das seguin-
tes áreas:
 · Memória principal ou virtual: assim como na referência para a próxima 
instrução, deve ser fornecido um endereço, que pode ser na memória 
principal ou na memória virtual.
 · Registrador da CPU: com raras exceções, a CPU contém um ou mais 
registradores, que podem ser referenciados pelas instruções de máquina. 
Se existir apenas um único registrador, a referência a ele poderá ser 
implícita. Se existirem vários registradores, então, cada registrador será 
designado por um número distinto e a instrução deverá conter o número 
do registrador desejado.
 · Dispositivo de E/S: a instrução deve especificar um módulo de E/S e um 
dispositivo para a operação. Se for usada a EI S mapeada na memória, 
essa informação consistirá apenas em um endereço na memória principal 
ou na memória virtual.
É um pouco complexo falar do que são compostas as instruções sem a 
possibilidade de visualização da mesma. Por isso, a figura, a seguir, demonstra uma 
representação lógica das partes básicas de uma instrução.
8
9
Código de Operação Referência a operando Referência a operando
4 bits 6 bits
16 bits
6 bits
Figura 2: Formato de instrução simples.
Fonte: Stallings, W., Arquitetura e Organização de Computadores. 
Como pode se observar na figura, a instrução é dividida em campos, onde 
cada campo representa uma etapa de execução no processador. Há também a 
composição da instrução, conforme o IAS onde já é demonstrado o endereçamento 
de novas instruções para a continuidade do processamento. 
A memória do IAS consiste em mil posições de memória, denominadas palavras, 
cada uma constituída de 40 dígitos binários (bits). Dados e instruções são ambos 
armazenados na memória. Portanto, os números devem ser representados em 
forma binária e cada instrução deve ter também um código binário. Cada número 
é representado por um bit de sinal e um valor de 39 bits. Uma palavra pode 
conter duas instruções de 20 bits, cada uma consistindo em um código de operação 
(opcode) com 8 bits, que especifica a operação a ser executada, e de um endereço 
com 12 bits, que designa uma palavra na memória (numerada de 0 a 999).
01
(a) Armazenamento de número
Bit de sinal
39
0 8 19 20 28
(b) Palavra para armazenamento de uma instrução
Código de
operação
Endereço
Instrução esquerda
39
Instrução direita
Código de
operação
Endereço
Figura 3: Formatos de uma palavra no IAS.
Fonte: Stallings, W., Arquitetura e Organização de Computadores. 
Normalmente, temos dificuldades para trabalhar diretamente com códigos 
binários de instruções. Dessa forma, instituiu-se o uso de representações simbólicas 
demonstradas na tabela 1, onde podemos ver as representações utilizadas em 
instruções IAS. Na coluna “códigos de operação”, há abreviações para a operação 
que o determinado comando executará; chamamos esses códigos de mnemônicos.
Hoje, é muito raro programar em linguagem de máquina. A maioria dos 
programas é escrita em linguagem de alto nível. No entanto, a linguagem de 
máquina simbólica permanece como uma ferramenta útil para descrever instruções 
de máquina, sendo usada a seguir para esse propósito.
9
UNIDADE Instruções e U.L.A.
Tabela 1: O conjunto de instruções do IAS.
Tipo de instrução
Código de 
operação
Representação 
simbólica
Descrição
Transferênciade dados
00001010 LOAD MQ Transfere o conteúdo do registrador MQ Para o acummulador AC
00001001 LOAD MQ,M(X) Transfere o conteúdo da posição de mamória X para MQ
00100001 STOR M(X Transfere o conteúdo do acumulador para a posição de memória X
00000001 LOAD M(X) Transfere M(X) para o acumulador
00000010 LOAD - M(X) Transfere -M(X) para o acumulador
00000011 LOAD I M(X) I Transfere o valor absoluto de M(X) para o acumulador
00000100 LOAD - I M(X) I Transfere -I M(X) I para o acumulador
Desvio incondicional
00001101 JUMP M(X,0:19) A próxima instrução a ser executada é buscada na metade esquerda de M(X)
00001110 JUMP M(X,20:39) A próxima instrução a ser executada é buscada na metade direita de M(X)
Desvio condicional
00001111 JUMP =(X,0:19) Se o número no acumulador é um valor não negativo, a próxima instrução a ser executada é buscada na metade esquerda de M(X)
00010000 JUMP +M(X,20:39) Se o número no acumulador é um valor não negativo, a próxima instrução a ser executada é buscada na metade direita de M(X)
Aritimética
00000101 ADD (MX) Soma M(X) a AC; armazena o resultado em AC
00000111 ADD I M(X) I Soma I M(X) I a AC; armazena o resultado em AC
00000110 SUB M(X) Subtrai M(X) de AC; armazena o resultado em AC
00001000 SUB I M(X) I Subtrai M(X) de AC; armazena o resultado em AC
00001011 MUL M (X) Multiplica M(X) por MQ; armazena os bits mais significativos do resultado em AC; armazena os bits menos significativos em MQ
00001100 DIV M(X) Divide AC por M(X); armazena o quociente em MQ e o resto em AC
00010100 LSH Multiplica o acumulador por 2, ou seja, desloca os bits uma posição para a esquerda
00010101 RSH Divide o acumulador por 2, ou seja, desloca os bits uma posição para a direita
Alteração de 
endereço
00010010 STOR M(X,9:19 Substitui o campo de endereço à esquerda de M(X) pelos 12 bits mais à direita de AC
00010011 STOR M(X,28:39) Substitui o campo de endereço à direita de M(X) pelos 12 bits mais à direita de AC
Fonte: Stallings, W., Arquitetura e Organização de Computadores.
Tipos de Instruções
Computadores utilizam de conjuntos de instruções que permitem ao programador 
desenvolver qualquer trabalho de processamento. Para tanto, é necessário utilizar 
comandos disponíveis em uma determinada linguagem de programação de 
alto nível.
Qualquer linguagem de programação atual pode ser diretamente traduzida para 
a linguagem de máquina e só assim interpretada pelo processador. Seguindo essa 
lógica, o conjunto de instruções criado deve possuir expressões suficientes para 
10
11
suprir todos os comandos requisitados pela linguagem de alto nível. Para começar 
a diferenciar os tipos de instruções, podemos dividi-los pela sua função primária.
 · Processamento de dados: instruções aritméticas e lógicas.
 · Armazenamento de dados: instruções de memória.
 · Movimentação de dados: instruções de E/S.
 · Controle: instruções de teste e de desvio.
No processamento de dados, são definidos os métodos e formas de como serão 
trabalhadas as instruções. As instruções aritméticas determinam a capacidade 
computacional para o processamento de dados numéricos (conforme o próprio 
nome diz), as instruções lógicas que obedecem ao método booleano e operam 
sobre bits de uma palavra, como bits e não como números; oferecem, portanto, a 
capacidade para processar qualquer outro tipo de dado que o usuário possa desejar 
empregar. Essas operações são efetuadas, primariamente, em dados armazenados 
em registradores da CPU.
Já que serão utilizados, constantemente, memórias e registradores, com certeza, 
a movimentação de dados entre essas memórias será intensa, instruções de 
memória se farão necessárias para controlá-la e instruções de E/S para controlar a 
transferência entre programas e dados para a memória e para transferir resultados 
da computação de volta para o usuário.
Instruções de teste são usadas para testar o valor de uma palavra de dados ou 
o estado de uma computação. Instruções de desvio são utilizadas para desviar a 
execução do programa para uma nova instrução, possivelmente, dependendo do 
resultado de um teste.
Quando estamos construindo instruções, acabamos percebendo que as instruções 
de processamento (aritméticas e lógicas) são as que ocupam mais espaço da instrução, 
ou seja, maior número de operandos. Como exemplo, temos operandos unários 
ou binários que consumiriam dois endereços para suas referências, lembrando que 
o resultado desse trabalho precisa ser armazenado. Então, precisamos de mais um 
endereço de armazenamento, somando, até agora, 3 endereços, daí para a frente 
uma nova instrução será referenciada e para tanto seu endereço deve ser dado 
e, para armazená-lo, mais uma unidade de endereço foi consumida, totalizando 
quatro endereços. Dessa forma, teríamos instruções com quatro endereços: dois 
para operandos, um para o resultado e o endereço da próxima instrução.
Na prática, as coisas são um pouco diferentes, pois instruções com quatro 
endereços são mais raras, sendo mais comuns as instruções de um, dois e três 
endereços de operando. Na figura 4, você pode observar três exemplos diferentes 
de como construir um instrução para executar o comando Y=(A-B)÷(C+D×E). 
11
UNIDADE Instruções e U.L.A.
Instrução Comentário
SUB Y, A, B Y A - B
MPY T, D, E T D x E
ADD T, T, C T T + C
DIV Y, Y, T Y Y ÷ T
(a) Instruções com três endereços
Instrução Comentário
LOAD D AC D
MPY E AC AC x E
ADD C AC AC + C
STOR Y Y AC
LOAD A AC A
SUB B AC AC - B
DIV Y AC AC ÷ Y
STOR Y Y AC
(c) Instruções com um endereços
Instrução Comentário
MOVE Y, A Y A
SUB Y, B Y Y - B
MOVE T, D T D
MPY T, E T T x E
ADD T, C T T + C
DIV Y,T Y Y ÷ T 
(b) Instruções com dois endereços
Figura 4: Instrução para execução do comando .
Fonte: Stallings, W., Arquitetura e Organização de Computadores.
Ao utilizarmos de três endereços, cada instrução especificará dois endereços 
de operandos e um endereço para o resultado. Se não for desejável, a alteração 
do valor de qualquer posição de memória, uma área de memória temporária, T, 
é usada para armazenar resultados intermediários. Note que a implementação do 
comando requer quatro instruções e que a expressão original tem cinco operandos.
Formatos de instrução com três endereços resultam em instruções de tamanho 
relativamente grande, devido ao espaço necessário para manter os três endereços. 
No caso de instruções com dois endereços e das operações binárias, um dos 
endereços referência, tanto um operando quanto o resultado. Por exemplo, a 
instrução SUB Y, B calcula o valor Y - B e armazena o resultado em Y. O uso do 
formato de instrução com dois endereços reduz o tamanho das instruções, mas 
apresenta algumas desvantagens. 
Para evitar que se altere o valor de um operando, é usada uma instrução MOVE, 
para mover um dos operandos para a posição de resultado ou para uma posição 
temporária, antes de a operação ser efetuada. O número de instruções requeridas 
para implementar o exemplo anterior aumentaria, nesse caso, para seis instruções.
Por fim, quando usamos a solução com apenas um endereço, um segundo 
endereço deve ser implícito. Esse tipo de instrução era comum nas primeiras 
máquinas, onde o endereço subentendido é um registrador da CPU, conhecido 
como acumulador (AC). O acumulador contém um dos operandos e é usado 
para armazenar o resultado. Nesse caso, são necessárias oito instruções para se 
implementar nosso exemplo.
12
13
A seguir, veremos alguns exemplos de comandos para construir uma instrução:
Tabela 2: Instruções Aritméticas Simples
add $r1, $r2, $r3 Esta instrução soma o conteúdo dos registradores $r2 e $r3, colocando o conteúdo no registrador $r1
addi $r4, $r1, 9 Agora, estamos somando o conteúdo do registrador $r1 com o valor imediato 9 e armazenando o resultado em $r4. O número imediato deve ter 16 bits.
addu $r5, $r6, $r4 Quase igual ao add. Mas, agora, assumimos que todos os valores são não-negativos.
addiu $r7, $r8, 10 Somamos o conteúdo de $r8 com o valor imediato 10 e armazenamos oresultado em $r7. Assume-se que todos os valores são não-negativos.
sub $r1, $r2, $r3
Subtrai-se o conteúdo de $r3 do conteúdo de $r2 e coloca-se em $r1. Também 
existe subi, subu e subiu que tem comportamento semelhante a addi, addu e 
addiu, mas para a subtração.
Fonte: Tanenbaum, A., Organização Estruturada de Computadores
Tabela 3: Instruções de Operadores Lógicos
and $r1, $r2, $r3 Realiza uma operação AND bit-a-bit entre $r3 e $r2. O resultado é armazenado em $r1.
andi $r1, $r2, 42 Realiza uma operação AND bit-a-bit entre $r2 e o valor imediato 42. O resultado é armazenado em $r1. O número imediato deve caber em 16 bits.
or $r1, $r2, $r3 Realiza uma operação OR bit-a-bit entre $r3 e $r2. O resultado é armazenado em $r1.
ori $r1, $r2, 42 Realiza uma operação OR bit-a-bit entre $r2 e o valor imediato 42. O resultado é armazenado em $r1. O número imediato deve caber em 16 bits.
Fonte: Tanenbaum, A., Organização Estruturada de Computadores
Tabela 4: Instruções de Uso de memória
lw $r1, 4($r2)
Load Word: Esta instrução carrega uma palavra (estrutura de 4 bytes) localizada no 
endereço representado pela soma do valor armazenado no registrador $r2 mais 4. O 
resultado é armazenado em $r1.
lh $r1, 6($r3)
Load Half: Esta instrução carrega uma estrutura de 2 bytes localizada no endereço 
representado pela soma do valor armazenado no registrador $r3 mais o número 6. 
O resultado é armazenado em $r1.
lb $r1, 16($r2) Realiza uma operação OR bit-a-bit entre $r3 e $r2. O resultado é armazenado em $r1.
Fonte: Tanenbaum, A., Organização Estruturada de Computadores
13
UNIDADE Instruções e U.L.A.
Tabela 5: Instruções armazenamento de registros na memória
sw $r1, 4($r2)
Store Word: Esta instrução carrega uma palavra (estrutura de 4 bytes) localizada no 
registrador $r1 e armazena no endereço representado pela soma do valor armazenado 
no registrador $r2 mais 4.
sh $r1, 4($r2)
Store Half: Esta instrução carrega uma estrutura de 2 bits localizada no registrador 
$r1 e armazena no endereço representado pela soma do valor armazenado no 
registrador $r2 mais 4.
sb $r1, 4($r2)
Store Byte: Esta instrução carrega um byte (8 bits) localizado no registrador $r1 e 
armazena no endereço representado pela soma do valor armazenado no registrador 
$r2 mais 4.
Fonte: Tanenbaum, A., Organização Estruturada de Computadores
Projetando um conjunto de instruções
Não dá para negar que projetar uma instrução é muito complicado, não só pelo 
número de consequências que sua construção gera no programa ou no sistema, 
mas, muito mais, na forma de construção do corpo da instrução. Algumas das 
questões mais importantes no projeto são as seguintes:
 · Repertório de operações: quantas e quais são as operações que devem 
ser fornecidas e quão complexas elas podem ser.
 · Tipos de dados: quais os tipos de dados sobre os quais as operações 
são efetuadas.
 · Formatos de instrução: qual o tamanho das instruções (em bits), o número 
de endereços por instrução, o tamanho dos vários campos etc.
 · Registradores: qual o número de registradores da CPU que podem ser 
usados pelas instruções e qual o propósito de cada um.
 · Endereçamento: de que modo (ou modos) o endereço de um operando 
pode ser especificado.
Essas questões são, altamente, inter-relacionadas e devem ser consideradas 
em conjunto ao se projetar um conjunto de instruções. É claro que, neste livro, 
temos de considerá-las em alguma sequência, mas procuramos sempre mostrar o 
relacionamento entre elas.
Tipos de Operandos
Os tipos de dados operandos mais comuns são: números, caracteres e dados 
lógicos; cada um será discutido, brevemente, nesta seção. Algumas máquinas 
definem, além desses, alguns tipos de dados especiais ou estruturas de dados. Por 
exemplo, podem fornecer operadores que operam diretamente sobre listas ou 
sequências de caracteres.
14
15
Tipos de Operações
O número de códigos de operação distintos varia muito de máquina para 
máquina. Entretanto, o mesmo conjunto de classes de operações é encontrado em 
todas as máquinas. Uma classificação típica dessas operações é descrita a seguir:
 · Operações de transferência de dados;
 · Operações aritméticas;
 · Operações lógicas;
 · Operações de conversão;
 · Operações de E/ 5;
 · Operações de controle de sistema;
 · Operações de transferência de controle.
A tabela, a seguir, demonstra a função básica de cada classificação dentro 
do processador.
Tabela 6: Ações do processador para as classes de operandos
Transferência de dados
Transfere dados de uma posição para outra.
Se envolver endereço de memória: Determina o endereço de memória; Efetua 
conversão entre endereço de memória real e virtual; Verifica a memória cache; 
Inicia leitura / escrita na memória.
Operação aritmética
Pode envolver transferência de dados, antes e/ou depois da operação.
Executa a operação na ULA.
Atualiza códigos de condição.
Operação lógica Análoga à operação aritmética.
Operação de conversão Análoga à operação aritmética ou lógica. Pode envolver lógica especial para efetuar a conversão.
Transferência de controle Atualiza o contador de programa. No caso de chamada/ retorno de sub-rotina, gerencia a passagem de parâmetros e o encadeamento de chamadas.
Operação de E/S Emite comando para um módulo de E/S.No caso de E/S mapeada na memória, determina o endereço mapeado na memória.
Operações de controle de sistema
São aquelas que apenas podem ser executadas quando o processador está no 
estado privilegiado ou está executando um programa carregado em uma área 
especial da memória, que é privilegiada.
Fonte: Tanenbaum, A., Organização Estruturada de Computadores.
15
UNIDADE Instruções e U.L.A.
Unidade Logica e Aritmética (ULA)
A unidade lógica e aritmética é o componente da CPU responsável pelas 
execuções das operações matemáticas dos dados, ou seja, é na ULA que as 
operações das instruções estudadas, realmente, são trabalhadas interpretadas e as 
respostas são geradas. As operações que a ULA compreende são:
 · Soma;
 · Multiplicação;
 · Operação lógica AND;
 · Operação lógica XOR;
 · Deslocamento à direita;
 · Incremento;
 · Subtração;
 · Divisão;
 · Operação logica OR;
 · Operação complemento;
 · Deslocamento à esquerda;
 · Decremento.
Normalmente, essas operações utilizam um ou dois valores e, por isso, a 
ULA possui duas entradas e ambas as entradas se concentram a uma saída, via 
barramento interno.
UAL
UCP
RDM (MBR)
ACC
CI (PC)
REM (MAR)
MP
UC
RI (IR)
Decodi�cador
de instruçõesRelógio
Controle
Barramento de controle
Barramento
de endereços
Barramento
de dados
Dados/Endereço
Registradores
0 a R1
Figura 5: Estrutura da CPU com destaque para a ULA.
Fonte: Monteiro, M., Introdução a Organização de Computadores.
UAL
Entradas de
registradores
Sinais de
controle da UC
Saídas para registradoresSaída para 
ags
Figura 6: Interligação da ULA com a CPU.
Fonte: Monteiro, M., Introdução a Organização de Computadores.
É possível definir como que a ULA funciona como sendo um conjunto de circuitos 
lógicos, utilizados conforme o tipo de operação a ser realizada, que recebem na 
entrada dois ou, às vezes um; valores que seguem pela circuitaria determinados 
pelas portas lógicas e na saída entregam um resultado.
16
17
Vamos exemplificar, aqui, a soma de dois valores binários, X=1 e Y=1, que irão 
produzir o valor Z=0 e um bit carry (C=1) que tem a função de armazenamento 
em um registrador especial do processador para referências, quando necessário. 
Chamamos esse registrador de FLAG. O que muitos desconsideram é que as 
distâncias percorridas, fisicamente, tem grande influência no tempo de resposta, 
apenas para lembrar, a ULA ainda obedece à fórmula e=vt, onde:
 · e = é a distância entre a entrada e a saída do circuito.
 · v = é a velocidade atingida pelos sinais elétricos que são representações 
dos bits através do circuito que é, nominalmente, a velocidade da luz; 
porém, jamais alcança os 300.000km/s, pois isso só ocorre no vácuo.
 · t = é o tempo de execução da operação,ou seja, o tempo de percurso dos 
sinais desde a entrada até a saída.
UAL
Y = 1 C = 1
Z = 0 Para ACC
Para registrar �ag
Saída
Circuito
Somador
Entrada 
X e Y - valores que serão somados (1 + 1 = Ø e vai 1)
Z - resultado da operação m = Ø
C - bit de “vai 1” = 1
X = 1
Figura 7: Circuito lógico da ULA.
Fonte: Monteiro, M., Introdução a Organização de Computadores.
O circuito somador é a base de funcionamento da ULA, classificado, 
essencialmente, pelo somador half adder ou somador parcial e o somador full 
adder que é o somador completo.
No somador parcial, a soma é realizada apenas com os dois valores binários 
envolvidos recebidos na entrada (X e Y como visto na figura 7) e entregar um 
resultado Z e o carry (o carry, às vezes, pode não acontecer), ou seja, a figura 7 é 
uma representação lógica de um somador parcial. No somador completo, o carry 
é considerado na soma, que fica com três parcelas.
Dessa forma, a totalidade das ULAs são fabricada como um circuito somador 
que pode somar dois valores numéricos, independentemente da quantidade de bits 
que eles possam possuir, dependendo diretamente da palavra do processador.
Mais para frente na disciplina, nós iremos aprender os circuitos lógicos e, então, 
retomaremos os exemplos práticos dos somadores, utilizando a representação de 
circuitaria de suas portas lógicas.
17
UNIDADE Instruções e U.L.A.
Breve simulação
No material complementar, há um link para uma simulação de funcionamento 
da ULA. Então, acesse o link e, além de aproveitar maiores explicações sobre 
a CPU, algumas que ainda veremos na disciplina futuramente, atente-se, mais 
especialmente, ao simulador de parte operativa.
Nessa seção, você terá acesso a um simulador online na soma de dois valores 
pela ULA (somador parcial) e a entrega do resultado. Além disso, verá como ocorre 
o transporte dos dados entre registradores e ULA.
Essa simulação funciona como um resumo do estudado nessa unidade. Desse 
modo, experimente e faça várias simulações, conforme as instruções do site e 
discuta suas impressões e resultados com os amigos de sala no fórum virtual.
18
19
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Sites
Introdução à Computação – Simulador de CPU
http://goo.gl/EsOQCv
Arquiteturas de Computadores
http://goo.gl/p290ze
Tópicos de Informática Aplicados à Administração
http://goo.gl/7RQlHH
 Vídeos
Passos para execução de uma instrução
https://goo.gl/fDUyL4
19
UNIDADE Instruções e U.L.A.
Referências
MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora: 
LTC; 2012.
TANENBAUM, Andrew S.; Organização Estruturada de Computadores; 5ª 
Ed.; Editora: Pearson Education; 2006.
20

Continue navegando