Buscar

Livro-Texto 2 - Arquitetura de Computadores Modernos

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

150
Unidade II
Unidade II
5 O COMPUTADOR E SEUS DISPOSITIVOS DE ENTRADA E SAÍDA (E/S)
5.1 Principais características dos dispositivos de E/S
Um sistema operacional moderno possui como principal função a de controlar todas as operações 
do hardware do computador, tablet, smarthphone etc., incluindo os modos de comunicação internos e 
externos. Para tal, usa drivers que operam e comandam os dispositivos de E/S. Entre os comandos que o 
sistema operacional dispõe para realizar esse controle, destacam‑se inicialização, interrupção e uso dos 
hardwares que constituem um computador.
 Observação
O termo E/S (entrada/saída) é comumente aplicado na denotação 
de dispositivos periféricos, ou seja, que se encontram instalados fora da 
placa‑mãe do computador. Esse termo também é usado para referenciar a 
capacidade de o computador se comunicar com todos os seus dispositivos, 
tanto na “entrada”, recebendo dados/instruções, assim como na “saída” 
desses mesmos dados/instruções.
Todos os dispositivos de hardware do computador têm módulos de comunicação de entrada e saída 
com o sistema operacional. Essa comunicação possui as seguintes funções:
• controle e temporização;
• comunicação com a CPU;
• comunicação com todos os dispositivos de E/S;
• armazenamento temporário dos dados (buffer);
• detecção de erros.
Durante sua operação, o processador deve interagir com um ou mais dispositivos externos em 
diferentes tipos de padrões de comunicação. Os recursos internos disponíveis à CPU, como a memória 
principal e o barramento do sistema, possuem a necessidade de compartilhar várias de suas atividades, 
o que também inclui dados oriundos de dispositivos de E/S. Dessa forma, deve haver controle e 
temporização (sincronismo) para que o fluxo de tráfego de dados seja coordenado entre os dispositivos. 
151
ARQUITETURA DE COMPUTADORES MODERNOS
Por exemplo, o controle da transferência dos dados armazenados em um dispositivo externo, para ser 
processado na CPU, pode envolver as seguintes etapas (STALLINGS, 2010):
• A CPU pergunta ao módulo de E/S se o estado corresponde a “conectado”.
• O módulo de E/S deverá retornar qual é o estado atual do dispositivo.
• Se o dispositivo estiver no estado operacional (pronto para transmissão de dados), então a CPU 
solicita o início da transferência de dados através de comandos enviados ao módulo de E/S.
• O módulo de E/S obtém uma unidade de dados de 8 ou 16 bits do dispositivo externo.
• Os dados são transferidos do módulo de E/S para a CPU.
Além dessas etapas, a comunicação entre os diversos dispositivos externos e a CPU abrange os 
seguintes aspectos:
• Decodificação de comando: os módulos de E/S deverão aceitar os comandos da CPU que são 
enviados como sinais no barramento de controle.
• Dados: deverão ser transferidos entre a CPU e o módulo de E/S através do barramento de dados.
• Informação de estado: devido à baixa velocidade dos periféricos de E/S, é vital conhecer o 
estado atual do seu módulo. Por exemplo, se o módulo de E/S precisar enviar dados para a CPU 
para realizar a operação de leitura, ele pode não ser capaz de executar a operação, pois ainda 
estará trabalhando atendendo ao comando de E/S anterior.
• Reconhecimento de endereço: da mesma forma que cada palavra contida na memória possui 
um certo endereço, cada dispositivo de E/S também o terá. Dessa maneira, um módulo de E/S 
deverá reconhecer um endereçamento exclusivo para cada dispositivo externo que ele controla.
• Comunicação com o dispositivo: o módulo de E/S deverá ser capaz de executar a comunicação 
entre dispositivos, o que envolverá diversos sinais de controle, determinando a função que o 
dispositivo realizará, conforme mostra a figura a seguir:
152
Unidade II
Sinais de controle 
do módulo de E/S
Sinais de estado 
do módulo de E/S
Bits de dados de e para 
o módulo de E/S
Lógica de 
controle
Buffer
Transdutor
Dados (device‑unique) 
de e para o ambiente
Figura 132 – Diagrama de blocos representando um dispositivo externo e seus sinais de comunicação
Fonte: Stallings (2010, p. 178).
5.2 Interfaces e dispositivos de E/S
Os dispositivos de E/S possuem diferentes taxas de transmissão entre eles, conforme ilustrado na 
tabela a seguir. Basicamente, um dispositivo de E/S se comunica com o meio externo e com sua interface 
através do envio de bits e sinais de controle.
Tabela 5 – Dispositivos de E/S e velocidade de transmissão de dados
Dispositivo Taxa de transmissão em KB/s
Teclado 0,01
Mouse 0,02
Impressora matricial 1
Modem 2 a 8
Disquete 100
Impressora a laser 200
Scanner 400
CD‑ROM 1.000
Rede local 500 a 6.000
Vídeo gráfico 6.000
Disco rígido 2.000 a 10.000
Adaptada de: Monteiro (2019, p. 341).
153
ARQUITETURA DE COMPUTADORES MODERNOS
Basicamente, o processo de comunicação envolve o envio/recebimento de dados e sinais de 
controle das operações. Embora cada dispositivo possua características de funcionamento próprios, 
o fluxo de informações é o mesmo para todos. A figura a seguir mostra alguns dos principais 
componentes de uma interface de E/S, assim como os tipos de informação e o sentido direcional 
para o fluxo de dados transmitidos/recebidos (RX/TX) das conexões entre os periféricos.
Barramento 
do sistema
Dispositivo E/S
Dados
Sinais de 
controle
Dados
Lógica
Controle
Dados
Endereço Registrador de endereço
Registrador 
de dados
Registrador 
de controle
Figura 133 – Módulo de interface e conexão de E/S
Fonte: Monteiro (2019, p. 342).
Na figura anterior, também é possível observar três diferentes áreas que são constituídas por 
registradores, os quais têm a função de interação básica entre a interface de E/S e sua conexão com 
o barramento do sistema, além de controlar os registradores de dados e endereços. Na sequência, 
destaca‑se o espaço de armazenamento de dados que circulam entre os dispositivos pelo barramento 
durante as operações de E/S, fazendo com que a interface de E/S atue como um buffer para operar com 
diferentes velocidades em compatibilidade com os diferentes dispositivos. A terceira área é onde se 
localiza a lógica de funcionamento da interface, que permite a interação entre os dispositivos externos 
e a detecção de erros, entre outros.
5.3 Teclado
Um dos principais dispositivos periféricos do computador para interação homem/máquina 
é o teclado. Ele possui como principal função a de facilitar a entrada de dados no computador. 
O funcionamento do teclado se baseia no reconhecimento de padrões decorrentes da interpretação 
do sinal elétrico de cada tecla ao ser pressionada pelos dedos do usuário. A figura a seguir mostra um 
exemplo típico.
154
Unidade II
Figura 134 
Disponível em: https://bit.ly/3iHVh8w. Acesso em: 17 jan. 2023.
Existem basicamente três categorias de teclado em uso nos dispositivos atuais, que são: (MONTEIRO, 
2019):
• Teclado apenas numérico: usado geralmente em calculadoras de bolso ou mesa.
• Teclado utilizado em sistemas dedicados: consistem em teclas aplicadas somente para entrada 
de dados referentes à tarefa para a qual o dispositivo foi projetado (sistemas embarcados), como 
equipamentos de ar‑condicionado, micro‑ondas, televisão, foguetes etc.
• Teclado de uso geral: constituído por teclas alfabéticas, numéricas, sinais de pontuação, 
operações aritméticas, entre outras de uso especial.
O teclado opera como uma chave liga‑desliga que, ao pressioná‑la, aciona‑se o interruptor da chave 
e, como consequência, o sinal elétrico naquele local será inserido pelos circuitos de controle. Abaixo das 
teclas do teclado, há um circuito impresso com diferentes dispositivos eletrônicos (capacitores, resistores, 
entre outros). A tecla capacitiva funciona baseada na variação de capacitância do acoplamento entre 
duas placas metálicas. Essa variação sempre ocorre quando uma tecla for pressionada. Dispositivos 
capacitivos como o teclado são, geralmente, de baixo custo e com tamanhos relativamente pequenos, 
além de possuírem tempo longo de vida, com cerca de 20 milhões de pressionamentos.Basicamente, um 
teclado de computador pode ser descrito, em termos de funcionamento, assim:
155
ARQUITETURA DE COMPUTADORES MODERNOS
• Detecção do pressionamento de teclas: um processador de 8 bits, geralmente Intel 8048 ou 
8049 interno ao teclado, realiza a varredura para a detecção das teclas pressionadas.
• Debouncing de pressionamento: confirma se a tecla foi realmente pressionada, repetindo a 
varredura várias vezes.
• Geração do código de identificação da tecla pressionada: criação de uma codificação de 
8 bits baseada em linhas e colunas, denominada código de varredura ou scan code.
• Geração de um sinal de interrupção: produzido a partir do pressionamento de uma tecla, 
fazendo com que a CPU tome providências em relação à identificação da tecla scaneada e seu 
valor decodificado pelo programa.
• Troca de sinais de interrupção entre teclado e CPU: nessa operação, o código de varredura é 
transmitido para um endereço da memória principal, interpretado por um programa de E/S.
 Observação
A BIOS (basic input output system) analisa o código recebido para 
verificar se uma tecla foi pressionada sozinha ou em conjunto com 
outra tecla, por exemplo, a tecla ALT, e aciona o código da tabela ASCII 
correspondente às teclas pressionadas na área de memória apropriada para 
assim reproduzir o resultado do acionamento das teclas.
5.4 Mouse
O mouse (figura a seguir) é um dispositivo de entrada cujo propósito principal é o de facilitar o 
trabalho do usuário final em sua tarefa de comunicação com o computador. Seu nome deriva do seu 
formato pequeno e sua ligação com o computador por um fio (em mouses mais antigos) que se assemelha 
a uma cauda de rato, e seus movimentos agitados na mão também lembram esse pequeno animal. 
Diferentemente do teclado, em vez de o usuário ter que digitar comandos, ao utilizar o mouse somente 
é necessário o uso da coordenação motora para a movimentação. Ele trabalha basicamente como uma 
interligação visual do usuário com os sistemas de hardware e software do computador. Ele possui 
alguns tipos de sensores (de acordo com o modelo), como mecânicos, ópticos e ópticos‑mecânicos, para 
realizar a captação do movimento em uma superfície plana e transmitir as informações coletadas desses 
movimentos ou do acionamento de seus botões. Alguns programas fazem parte do funcionamento do 
mouse, como elementos de interface apontadores na tela, onde o usuário escolhe o que quer acionar e 
seleciona o item pressionando um dos dois botões.
156
Unidade II
Figura 135 – Mouse óptico sem fio
Disponível em: https://bit.ly/3WgBISv. Acesso em: 17 jan. 2023.
O mouse mecânico possui uma esfera coberta com borracha que gira, acompanhando o movimento 
de sua rotação. Esse movimento da esfera é então transmitido a dois roletes perpendiculares que 
possuem rodas de contatos com o metal. Assim, conforme as rodas giram, os contatos tocam algumas 
escovas em seu interior. Já o mouse do tipo óptico‑mecânico tem o mesmo mecanismo de esfera e rolete 
em seu interior, com exceção dos roletes conectados a furos em sua carcaça, onde, conforme as rodas 
giram, elas podem bloquear ou permitir a passagem da luz produzida por um LED. Isso fará com que as 
transições entre essa passagem da luz sejam detectadas por sensores semicondutores sensíveis à luz.
5.5 Impressoras matriciais, jato de tinta e a laser
As impressoras também são dispositivos básicos de saída de informações, e nela os dados internos 
do computador são convertidos em símbolos impressos em um meio, como o papel, por exemplo. Elas 
têm algumas caraterísticas básicas (MONTEIRO, 2019):
• Volume de impressão que a impressora suporta por unidade de tempo: geralmente, elas 
possuem “vazão” de impressão e caracteres por segundo (cps), dados em linha por minuto (lpm) 
ou em páginas por minuto (ppm), de acordo com o tipo e modelo utilizado.
• Tecnologia para impressão de símbolos: divididos em matricial, jato de tinta, laser e térmica 
(uso de cera aquecida ou sublimação de tinta).
As impressoras de impacto, como as matriciais (figura a seguir), já foram muito populares no 
mercado.
157
ARQUITETURA DE COMPUTADORES MODERNOS
Figura 136 – Impressora do tipo matricial
Disponível em: https://bit.ly/3CQ8Cmb. Acesso em: 17 jan. 2023.
O seu mecanismo de impressão está baseado em um dispositivo com um conjunto de martelos ou 
agulhas, utilizados para pressionar uma fita com tinta, imprimindo o símbolo no papel posicionado 
atrás da fita.
C
B
B
C
A
Figura 137 – Mecanismo de impressão em uma impressora matricial
Fonte: Monteiro (2019, p. 362).
158
Unidade II
O item A da figura anterior mostra o mecanismo de impressão, constituído pela cabeça de impressão. 
Já o item B se refere à fita contendo tinta. Por sua vez, o item C ilustra o papel onde os símbolos serão 
impressos. A geração de pontos no papel tem seu início com a cabeça de impressão, formada por um 
tubo contendo agulhas e ligado a uma bobina; as agulhas são posicionadas e uma corrente elétrica 
energiza a bobina, que impactará as agulhas, pressionando a fita, impregnando o papel. Dessa maneira, 
a cabeça imprimirá simultaneamente os n pontos de uma coluna e os n pontos da próxima coluna, 
sucessivamente, até formar o caractere desejado e completar a linha.
As impressoras do tipo jato de tinta ou ink‑jet (figura a seguir) são mais populares e utilizadas 
atualmente, em especial pelo seu baixo custo. Seu funcionamento envolve a produção de caracteres em 
forma de uma matriz de pontos em uma folha de papel. Esse processo se assemelha com as impressoras 
matriciais e a diferença está na técnica aplicada para a criação dos pontos no papel.
Figura 138 – Impressora do tipo jato de tinta
Disponível em: https://bit.ly/3iEk9OJ. Acesso em: 17 jan. 2023.
Em impressoras jato de tinta, a criação do ponto é o resultado da aplicação de uma gota de 
tinta, depositada no papel na região determinada por coordenadas x e y. O mecanismo que realiza 
a impressão desse tipo de impressora é constituído por uma certa quantidade de tubos pequenos 
contendo um bico injetor para permitir a saída das gotículas de tinta. Tecnologias atuais são baseadas 
na projeção de gota a gota por demanda ou drop‑on‑demand bubble jet, com modelos que possuem de 
128 a 256 bicos injetores. Esse processo consiste na passagem de uma corrente elétrica através de uma 
resistência que aquecerá a tinta, facilitando a saída pelo bico do tubo injetor. Esse processo ocorrerá 
milhares de vezes por segundo durante toda a etapa de impressão. Em relação às cores de impressão, 
algumas impressoras só trabalham com tinta preta e são conhecidas como monocromáticas, enquanto 
159
ARQUITETURA DE COMPUTADORES MODERNOS
outras impressoras jato de tinta imprimem colorido por meio do emprego de três ou quatro tubos de 
tinta (magenta, ciano, amarela e preta) formando as cores necessárias para a impressão.
Como uma impressora a jato de tinta possui vários bicos injetores, ela produzirá uma matriz de 
pontos mais densa em comparação com as matriciais, que possuem geralmente 24 agulhas. Os valores 
típicos de impressão de tinta estão na faixa de 300 x 300 pontos por polegada ou ppi (point per inch).
As características de impressoras a laser, como a figura a seguir, são: alta qualidade na impressão da 
imagem, excelente flexibilidade e velocidade de impressão maior se comparada a outros modelos (jato 
de tinta e matricial).
Figura 139 – Impressora do tipo laser
Disponível em: https://bit.ly/3iRDD29. Acesso em: 17 jan. 2023.
A tecnologia aplicada nesse tipo de impressora consiste em um tambor fotossensível rotativo 
de precisão. Este, no início de cada ciclo, recebe uma carga de cerca de 1.000 volts. Na sequência, a 
luz de um laser passa pelo comprimento do tambor interno à impressora a fim de refleti‑lo como um 
espelho octogonal e rotativo, como mostra a figura a seguir. O feixe de luz é modulado para produzir 
um padrão de pontos claros e escuros no papel. Após uma linha de pontos ser pintada, o tambor gira 
uma fraçãode um grau, para permitir que a próxima linha também seja pintada. Na sequência, de 
acordo com a rotação, a primeira linha de pontos chega ao reservatório (toner), que contém um pó 
negro eletrostaticamente sensível à corrente elétrica. Então, o toner é atraído pelos pontos carregados, 
formando uma imagem produzida naquela linha de forma que o tambor revestido pelo pó seja 
pressionado contra o papel, transferindo todo o pó para ele. O papel passa pelos rolamentos que estão 
aquecidos, fundindo‑se com o toner, fixando a imagem final no papel.
160
Unidade II
Laser Espelho octogonal rotativo
Feixe de luz 
atinge o tambor
Toner
Papel em branco
Roletes 
aquecidos
Saída empilhada
Raspador
Tambor
Tambor pulverizado e carregado
Dispensador
Figura 140 – Mecanismo de impressão em uma impressora a laser
Fonte: Tanenbaum e Austin (2013, p. 96).
Após o término do processo de impressão no papel, o tambor é descarregado e raspado para eliminar 
qualquer resíduo de pó a fim de prepará‑lo para o recebimento de uma nova carga elétrica e um novo 
revestimento para a próxima impressão de páginas.
5.6 Monitores de vídeo
Os monitores de vídeo dos computadores são periféricos que se tornaram muito populares porque 
facilitam a interação homem‑computador. Os primeiros computadores não possuíam monitores de 
vídeo, mas lâmpadas que acendiam e apagavam na frente do painel da máquina, em um padrão que 
representava valores em binário. Também são conhecidos como displays, pois a tradução se refere ao 
elemento de visualização, e possuem diversas tecnologias e características físicas para exibição de uma 
imagem ou vídeo, como (MONTEIRO, 2019):
• tubo de raios catódicos ou CRT (cathode‑ray tube);
• diodos emissores de luz ou TV de LED (light emitting diodes);
• monitores de cristal líquido ou LCD (liquid‑crystal display);
• monitores com painel estreito ou VPE (flat panel display);
161
ARQUITETURA DE COMPUTADORES MODERNOS
Figura 141 – Monitor de vídeo CRT
Disponível em: https://bit.ly/3QNOsyX. Acesso em: 17 jan. 2023.
Essas são algumas tecnologias utilizadas em monitores de vídeo, porém existem ainda outras, como 
as de gás plasma e as eletroluminescentes. Apesar dessas novas tecnologias, os monitores do tipo CRT 
prevaleceram durante muitos anos como padrão em empresas ou mesmo em residências. A próxima 
figura mostra de forma esquemática o funcionamento de um monitor de tubo baseado em raios 
catódicos e seus respectivos componentes, que são:
• um cátodo, também conhecido como canhão de elétrons;
• um anodo formado pela tela frontal do vídeo, coberta com o elemento químico fósforo;
• um par de bobinas defletoras de feixe na horizontal e na vertical para direcionar o feixe de elétrons.
A partir desses itens, é possível explicar o funcionamento de um monitor de tubo, que ocorre 
nessa sequência:
• o canhão de elétrons emite um feixe concentrado que caminha velozmente para a tela frontal de 
fósforo, iluminando‑a;
• durante o caminho para a tela, o feixe de elétrons sofrerá uma deflexão que produzirá um ponto 
brilhante no local desejado da tela;
• a deflexão do feixe de elétrons causará uma varredura nas coordenadas X e Y da tela, denominada 
rastro ou raster‑scan.
162
Unidade II
Cobertura metálica 
interior com alta voltagem
Cobertura 
com fósforo
Feixe de elétrons
Deflexão 
horizontal
Grade de controle
Catodo
Canhão
Sistema de foco
Deflexão 
vertical
Figura 142 – Tubo de raios catódicos de monitores de vídeo
Fonte: Monteiro (2019, p. 354).
 Saiba mais
Entenda melhor como funcionam os monitores LCD em:
CIRIACO, D. Como funcionam os monitores LCD. Canaltech, 6 maio 
2009. Disponível em: https://bit.ly/3ZGaszL. Acesso em: 17 jan. 2023.
6 COMPUTADOR E O CONJUNTO DE INSTRUÇÕES DE MÁQUINA
6.1 Aspecto fundamental do ciclo de instrução
A maior parte das instruções de um computador pode ser dividida em duas categorias, relacionadas 
a como elas interagem com o hardware: registrador‑memória ou registrador‑registrador. As instruções 
do tipo registrador‑memória permitem que palavras (words) da memória possam ser buscadas em 
registradores para serem utilizadas como entradas pela ULA em instruções sequenciais. No caso do 
registrador‑registrador, uma instrução típica busca dois operandos nos registradores, os traz para a ULA 
e efetua uma operação aritmética ou booleana e armazena o resultado em um dos registradores. Esse 
método é conhecido como ciclo de caminho de dados e é uma das principais funções dos registradores 
das CPUs, de forma que, quanto mais rápido for o ciclo do caminho de dados, mais rápido será o 
funcionamento do computador.
163
ARQUITETURA DE COMPUTADORES MODERNOS
Para que ocorra essa comunicação de instruções pelos registradores ou pela memória, é necessário 
compreender como ocorre o ciclo de busca e execução de instruções. Quando se trata do ciclo direto de 
execução de instruções em sua forma mais simplificada, primeiro o processador busca as instruções (lê 
a próxima instrução da memória dentro do processador) uma por vez, depois as executa (interpreta o 
código de operação e efetua a operação indicada).
 Lembrete
A execução de um programa é baseada em repetir o processo de busca 
e execução da instrução sempre que houver mais instruções a serem 
executadas em um mesmo ciclo. É importante salientar que as interrupções 
também podem ocorrer durante a execução das instruções.
Nesses casos, salva‑se o estado do processo atual e atende‑se à instrução de interrupção indicada. 
Após o término da execução das instruções, o processo é finalizado. A figura a seguir mostra um ciclo 
de instrução básico.
Ciclo de busca Ciclo de execução
Início FimBuscar próxima instrução
Executar 
instrução
Figura 143 – Ciclo de instrução de um computador sem interrupções
Fonte: Stallings (2010, p. 56).
A execução de instruções no ciclo é dependente do tipo de instrução que será executada e, mais 
intrinsecamente, de qual operando será utilizado nas operações.
6.2 Os tipos de operandos
Um operando é uma entrada ou argumento em uma dada instrução e é dividido em quatro categorias: 
números, caracteres, endereços e dados lógicos. O endereçamento é uma forma de dados e pode conter 
cálculos realizados sobre a referência de memória do operando em uma dada instrução.
6.2.1 Números
Todas as linguagens de máquina como o assembly, por exemplo, incluem algum tipo de dado 
numérico. Mesmo um processamento de dados não numérico terá a necessidade de que haja números 
atuantes, como contadores, tamanho de campo etc. Existem basicamente três tipos de dados numéricos 
encontrados em um computador:
164
Unidade II
• Inteiros binários ou ponto fixo binário: representados pelos dígitos zero e um, sinal de menos 
e vírgula fracionada.
• Ponto flutuante binário: expresso por um intervalo de inteiros positivos e negativos centrados 
em zero.
• Decimal: organizado em casas decimais utilizando a vírgula para indicar a que ordem o número 
pertence.
6.2.2 Caracteres
Baseado no uso de texto ou strings de caracteres, esse tipo de codificação foi desenvolvido a fim de 
facilitar o armazenamento de dados e instruções. Diversos códigos foram desenvolvidos, e geralmente 
são representados por uma sequência de bits, sendo o American Standard Code for Information 
Interchange (ASCII) o mais utilizado. Cada caractere no ASCII é destacado por um padrão exclusivo de 
7 bits, de modo que 128 caracteres diferentes poderão ser indicados. Como os computadores atuais são 
orientados a byte, cada caractere no ASCII será armazenado em um byte separado, conforme pode ser 
observado nas tabelas a seguir.
Tabela 6 – Parte do conjunto de caracteres ASCII de controle
Hexa Nome Significado Hexa Nome
0 NUL Null 10 DLE
1 SOH Start Of Heading
2 STX Start Of Text
3 ETX End Of Text
4 EOT End Of Transmission
5 ENQ Enquiry 15 NAK
6 ACK ACKnowledgement 16 SYN
7 BEL BELl 17 ETB
8 BS BackSpace 18 CAN
9 HT Horizontal Tab 19
A LF Line Feed 1A
B VT Vertical Tab 1B
C FF Form Feed 1C
D CR CarriageReturn 1D
E SO Shift Out 1E
F SI Shift In 1F
Fonte: Tanenbaum e Austin (2013, p. 108).
165
ARQUITETURA DE COMPUTADORES MODERNOS
Tabela 7 – Parte de outro conjunto de caracteres ASCII de controle
Hexa Nome Significado
0 NUL Null
1 SOH Start
2 STX Start
3 ETX End
4 EOT End
5 ENQ Enquiry
6 ACK ACKnowledgement
7 BEL BELl
8 BS BackSpace
9 HT Horizontal
A LF Line
B VT Vertical
C FF Form
D CR Carriage
E SO Shift
F SI Shift
Fonte: Tanenbaum e Austin (2013, p. 108).
A tabela ASCII contém os códigos de 0 a 1F (hexadecimal) para realizar o controle operacional e de 
20 a 7F utilizados como caracteres de uso geral do computador.
6.2.3 Dados lógicos
Um dado lógico é uma palavra ou unidade endereçável tratada como uma única unidade de dados. 
É útil também considerar essa unidade sendo constituída de n bits de dados de 1 bit, com cada bit 
valendo 0 ou 1.
Existem basicamente duas vantagens no uso da orientação a bits; primeiro, é possível armazenar 
um array (coleção de elementos) de itens de dados binários, em que cada valor pode assumir 
verdadeiro (1) e falso (0). A partir desses dados lógicos, a memória pode ser utilizada de forma 
eficiente no armazenamento; segundo, há situações em que se deseja manipular os bits de um item 
de dados, por exemplo, se as operações de ponto flutuante forem implementadas diretamente no 
software. Assim, é necessário deslocar os bits significativos em algumas operações.
6.3 Execução de instrução: ciclo indireto
A execução de uma instrução envolve o uso de um ou mais operandos lidos da memória. Se algum 
endereçamento indireto for utilizado, acessos adicionais à memória serão necessários. Nessas situações, 
um endereço indireto será considerado como um estágio a mais no ciclo de instrução, conforme pode 
ser observado na figura a seguir.
166
Unidade II
Executar
Buscar
IndiretoInterrupção
Figura 144 – Ciclo de instrução indireto
Fonte: Stallings (2010, p. 362).
No ciclo, a instrução é lida e examinada para determinar se há algum endereçamento indireto 
envolvido. Se houver, os operandos necessários são obtidos através de endereçamento indireto. 
Havendo interrupções durante a execução do ciclo de instrução, ela será processada antes da obtenção 
da próxima instrução.
6.4 Busca e execução de instruções
A cada início de ciclo, o registrador program counter (PC – contador de programa) mantém o endereço 
da instrução a ser buscada na memória. A cada busca, o PC será incrementado a fim de procurar a 
próxima instrução da sequência, ou seja, realizará a busca da próxima instrução com o endereço de 
memória mais alto. Por exemplo, considerando um computador em que cada instrução ocupará uma 
palavra de 16 bits, o contador de programa poderá estar alocado no endereço de número 300. Assim, o 
processador irá buscar a próxima instrução no local 300, e nos próximos ciclos de instrução ele irá buscar 
nos endereços 301, 302, 303, 304 etc. Cada instrução é lida e carregada no registrador IR (registrador 
de instrução), que interpretará a instrução e fará a ação desejada. Em geral, as ações a serem realizadas 
estão separadas em quatro categorias, listadas a seguir (STALLINGS, 2010):
• Processador – memória: quando os dados podem ser transferidos do processador para a memória 
ou da memória para o processador.
• Processador – E/S: quando os dados podem ser transferidos de, ou para, um dispositivo de 
entrada e saída.
• Processamento de dados: quando o processador realiza alguma operação lógica/aritmética 
sobre os dados.
167
ARQUITETURA DE COMPUTADORES MODERNOS
• Controle: quando uma instrução específica da sequência de execução pode ser alterada. Por 
exemplo, o processador pode buscar uma instrução no local de memória 149, que especifica que a 
próxima instrução estará no local 182. Assim, o processador guardará essa informação, definindo 
que o contador de programa será definido como 182; dessa forma, o próximo ciclo de busca da 
instrução será retirado do endereço 182 em vez do endereço 150.
Em outro exemplo, um computador hipotético pode incluir algumas características como 
instrução/palavra de 16 bits de extensão, oferecendo 4 bits para o opcode e podendo haver até 24 = 16 
opcodes diferentes e até 212 = 4.096 palavras de memória endereçadas diretamente, registrador único 
(acumulador – AC) e memória também de 16 bits. O ciclo de instrução pode envolver mais de uma 
referência à memória e especificar uma operação de E/S. Através de um diagrama de estados, pode‑se 
entender melhor o processo de busca e execução de uma instrução, que engloba as seguintes etapas:
• Cálculo de endereço de instrução (instruction address calculation – IAC): estágio responsável 
pela determinação do endereço da próxima instrução a ser executada.
• Busca da instrução (instruction fetch – IF): ler a instrução do seu local da memória para 
o processador.
• Decodificação da operação da instrução (instruction operation decoding – IOD): determinar 
o tipo de operação e os operandos a serem executados.
• Cálculo do endereço do operando (operation address calculation – OAC): verificar se uma 
operação envolve alguma referência a um operando na memória.
• Busca do operando (operation fetch – OF): estágio em que ocorre a busca pelo operando da 
memória ou de algum dispositivo de E/S.
• Operação dos dados (data operation – DO): estágio que realiza a operação solicitada pela 
instrução.
• Armazenamento do operando (operand store – OS): armazenar (escrever) o resultado na 
memória ou enviar o resultado para algum dispositivo de E/S.
Os estágios contidos no ciclo de instrução, observados na figura a seguir, envolvem uma troca entre 
o processador e a memória ou algum módulo de E/S.
168
Unidade II
Armazenamento 
do operando
Busca do 
operando
Busca da 
instrução
Cálculo do 
endereço da 
instrução
Cálculo do 
endereço do 
operando
Decodificação 
da operação da 
instrução
Cálculo do 
endereço do 
operando
Operação 
dos dados
Múltiplos 
operandos
Instrução completa, busca 
próxima instrução Retorna dados de string ou vetor
Múltiplos 
resultados
Figura 145 – Diagrama dos estágios do ciclo de instrução
Fonte: Stallings (2010, p. 59).
O estado de cálculo do operando aparece duas vezes na figura, pois uma instrução pode envolver 
uma leitura e/ou uma escrita, utilizando somente um identificador de estado para as duas situações.
6.5 Formatos de instrução
Uma instrução possui um código de operação (opcode) formado por um conjunto de informações, 
como o armazenamento dos resultados das operações realizadas. As instruções geralmente possuem um 
formato bem definido, contendo, além do opcode, alguns endereçamentos em uma mesma operação. 
Outros modelos de formatos de instruções podem ser observados na figura a seguir.
Opcode
A)
Opcode Address1 Address2
C)
Opcode Address
B)
Addr1Opcode Addr2 Addr3
D)
Figura 146 – Modelos simplificados de formatos de instrução
Fonte: Tanenbaum e Austin (2013, p. 285).
Na parte A da figura anterior, observa‑se uma instrução que não possui endereçamento, sendo 
interpretada como uma instrução do tipo imediata, ou seja, não envolve outros registradores ou a 
169
ARQUITETURA DE COMPUTADORES MODERNOS
memória principal, pois a própria instrução já está contida no registrador em uso. Já nas partes B, C e 
D da figura anterior, nota‑se que sempre há um ou mais endereços (address) relacionados ao opcode. 
Alguns computadores possuem instruções com o mesmo comprimento (em bits), porém em outros 
o tamanho pode ser diferente, variando inclusive em relação ao tamanho da palavra. Instruções que 
têm o mesmo tamanho da palavra facilitam a decodificação, embora possam desperdiçar espaço para 
o armazenamento. Na figura a seguir, destacam‑se as diferentes relações entre as instruções com 
diferentes comprimentos e larguras.
 1 Palavra 1 Palavra 1 Palavra 
Instrução Instrução Instrução Instrução
Instrução Instrução Instrução Instrução Instr. Instr.
Instrução Instrução Instrução
Instrução
Instrução InstruçãoInstrução
A) B) C)
Figura 147 – Relações entre diferentes formatos de instrução
Fonte: Tanenbaum e Austin (2013, p. 285).
Na parte A da figura anterior, observa‑se que o tamanho da palavra possui o mesmo tamanho 
das instruções, o que facilita a interpretação realizada pela unidade de controle do computador. 
Na  parte  B, as instruções têm exatamente metade do tamanho da palavra, por exemplo, para uma 
palavra de 64 bits tem‑se uma instrução de 32 bits. Já na parte C, verifica‑se que há uma variação 
nos tamanhos das instruções, facilitando o armazenamento ao custo de uma maior dificuldade de 
padronização na decodificação de cada instrução. Dessa forma, em um projeto de uma arquitetura 
de computadores, deve‑se planejar, de forma criteriosa, qual será o tamanho das instruções, pois 
uma máquina moderna deve ser capaz de operar com diferentes tamanhos de instruções para poder 
“sobreviver”, por tempo suficiente, às mudanças de tecnologia impostas por diferentes gerações de 
processadores (TANENBAUM; AUSTIN, 2013).
O fato de se diminuir o tamanho das instruções tornará os processadores mais rápidos devido à 
menor quantidade de largura de banda (número de bits que a memória pode fornecer) de transmissão 
do processador para a memória principal. Instruções mais curtas, nesse contexto, significam que 
o processamento será mais veloz, e como os processadores atuais são capazes de executar mais 
instruções a cada ciclo de clock, quanto maior for a quantidade de busca, decodificação e execução 
de instruções, mais potente é o computador. Dessa forma, o aspecto do tamanho da instrução e da 
cache de instrução é um fator muito importante no projeto de um computador e terá influência 
direta em seu desempenho.
Outro critério em um projeto está relacionado ao espaço requerido pelo tamanho da instrução para 
que ela possa expressar todas as operações desejadas. Um computador com 2n operações que tenha 
instruções menores do que n bits será impossível, pois simplesmente não haveria espaço suficiente no 
opcode para indicar qual instrução será necessária. Um terceiro critério se refere ao número de bits 
contidos em um campo de endereço.
170
Unidade II
A eficiência de uma determinada arquitetura também está relacionada com a quantidade de 
alterações que essa tecnologia passará ao longo dos anos. Por exemplo, se os acessos à memória forem 
rápidos, o uso de acesso a registradores ou memória baseado no conceito de pilha será eficiente. 
Contudo, se os acessos forem lentos, será mais eficiente se o computador possuir um conjunto muito 
grande de registradores, como a CPU advanced risc machine (ARM).
Mais um fator importante se refere à capacidade de transmissão de dados da memória cache, que 
está situada dentro do processador. Se a largura de banda de comunicação de uma memória cache 
para instruções for t bps (bits por segundo) e o comprimento médio da instrução for r bits, a memória 
cache poderá entregar no máximo t/r instruções por segundo. Esse é o limite superior da taxa a qual o 
processador pode executar instruções, o que também é limitado pelo comprimento da instrução.
6.5.1 A expansão de opcodes
Considere uma instrução contendo (n + k) bits além de um opcode de k bits e um endereçamento 
único de n bits. Essa instrução poderá permitir que ocorram até 2k operações diferentes e utilizar 2n células 
de memória endereçáveis. Em outra possibilidade, os mesmos (n + k) bits podem ser desmembrados em 
um opcode de (k – 1) bits e um endereço de (n + 1) bits, que significa apenas a metade do número 
de instruções, mas duas vezes mais memória endereçável, e que pode ser traduzido também como 
a mesma quantidade de memória, mas possuindo o dobro da resolução. Um opcode de (k + 1) bits 
e um endereço de (n – 1) bits terá mais operações, porém à custa de um menor número de células 
endereçáveis ou uma menor resolução. Uma possibilidade para resolver esses impasses é conhecida 
como expansão de opcodes.
Esse conceito pode ser observado da seguinte forma: considere um computador em que as instruções 
possuem 16 bits de comprimento e os endereços possuem 4 bits de comprimento, como mostra a 
figura a seguir.
Opcode
15 14 13 12
Endereço 1
11 10 9 8
Endereço 2
7 6 5 4
Endereço 3
3 2 1 0
Figura 148 – Opcode de 4 bits e três campos de endereços de 4 bits
Fonte: Tanenbaum e Austin (2013, p. 287).
No exemplo da figura anterior, a máquina possui 16 registradores com endereços de 4 bits, onde 
ocorrem todas as operações aritméticas, como também é observado na figura a seguir.
171
ARQUITETURA DE COMPUTADORES MODERNOS
16 bits
Número do bit
15 12 11 8 7 4 3 0
0000 xxxx yyyy zzzz
0001 xxxx yyyy zzzz
0010 xxxx yyyy zzzz
	 ⋮
1100 xxxx yyyy zzzz
1101 xxxx yyyy zzzz
1110 xxxx yyyy zzzz
Opcode 
de 4 bits
15 instruções de 
três endereços
1111 0000 yyyy zzzz
1111 0001 yyyy zzzz
1111 0010 yyyy zzzz
	 ⋮
1111 1011 yyyy zzzz
1111 1100 yyyy zzzz
1111 1101 yyyy zzzz
Opcode 
de 8 bits
14 instruções de 
dois endereços
1111 1110 0000 zzzz
1111 1110 0001 zzzz
	 ⋮
1111 1110 1110 zzzz
1111 1110 1111 zzzz
1111 1111 0000 zzzz
1111 1111 0001 zzzz
	 ⋮
1111 1111 1101 zzzz
1111 1111 1110 zzzz
Opcode 
de 12 bits
31 instruções de 
um endereço
1111 1111 1111 0000
1111 1111 1111 0001
1111 1111 1111 0010
	 ⋮
1111 1111 1111 1101
1111 1111 1111 1110
1111 1111 1111 1111
Opcode 
de 16 bits
16 instruções 
sem endereço
Figura 149 – Expansão de opcode
Fonte: Tanenbaum e Austin (2013, p. 288).
O opcode 15 significa que esse código de operação está contido nos bits, que vão de 8 a 15, em vez 
de 12 a 15. Os bits de 0 a 3 e os bits de 4 a 7 formarão mais dois endereços. As 14 instruções de dois 
endereços possuem todas 1111 nos 4 bits da extrema esquerda e números que vão de 0000 a 1101 nos 
bits de 8 a 11. Instruções que possuem 1111 nos 4 bits da extrema esquerda e 1110 ou 1111 nos bits de 
8 a 11 possuem um tratamento especial, pois seus opcodes podem estar alocados entre os bits de 4 a 15. 
Dessa forma, o resultado será 32 novos opcodes. Todavia, como são necessários somente 31 opcodes, o 
172
Unidade II
opcode codificado como 111111111111 é interpretado como significado de que está contido nos bits de 
0 a 15, resultando em 16 instruções sem nenhum endereço.
A expansão de opcode pode demonstrar um compromisso entre o espaço para opcodes e o espaço 
para outras informações utilizadas no processo. Em termos práticos, os opcodes expandidos não são tão 
regulares como no exemplo; na verdade, há dois modos individuais para explorar a capacidade de uso dos 
diferentes tamanhos dos opcodes. Primeiro, todas as instruções precisam de mais bits para especificarem 
outras funções; segundo, o tamanho da instrução pode ser minimizado através da escolha dos opcodes 
mais curtos em instruções comuns e opcodes mais longos em instruções utilizadas raramente.
6.6 Intel Core i7 e suas instruções
As instruções no Intel Core i7 têm uma complexidade maior, além de serem mais irregulares, podendo 
ter até seis campos de comprimento variáveis, cinco dos quais são opcionais. O padrão das instruções do 
i7 é mostrado na figura a seguir.
Qual operando é fonte?
Byte/palavra
Mod Reg R/M
Bits 2 3 3
Scale Index Base
Bits 2 3 3
OpcodePrefixo Mode Sib ImediatoDeslocamento
Bytes 0‑5 1‑2 0‑1 0‑1 0‑4 0‑4
Bites 6 1 1
Instrução
Figura 150 – Formatos de instrução no Intel Core i7
Fonte: Tanenbaum e Austin (2013, p. 289).
Nesse caso, a instrução pode conter alguns campos, como o prefixo para a identificação da instrução, 
o código da operação que relaciona a instrução com os operandos de origem, o modo de endereçamento, 
além de campos associados ao deslocamento de busca dos dados na memória principal ou em outros 
registradores. Nas arquiteturas Intel mais antigas, os opcodes possuíam 1 byte de prefixo, o que também 
é interpretado como um opcode extra introduzido na frente da instrução a fim de alterar sua ação.
Os bits individuais nos opcodes do i7 não contêm muitas informações sobre a instrução referida.Uma única estrutura no campo de opcode pode ser usada para um bit de ordem baixa com algumas 
instruções indicando o byte/palavra, e a utilização de um bit adjacente é feita para indicar se o endereço 
da memória é de origem ou destino.
173
ARQUITETURA DE COMPUTADORES MODERNOS
No geral, o opcode deve ser decodificado por completo para que seja possível determinar a qual 
classe de operação esta será executada e, consequentemente, qual deverá ser o comprimento da 
instrução. Isso pode dificultar as implementações que requerem um alto desempenho, pois será preciso 
uma decodificação extensiva antes mesmo de se definir onde a próxima instrução irá começar.
Logo na sequência ao byte de opcode de referência a um operando, há um segundo byte para 
informar tudo sobre o operando, sendo separado em 8 bits, subdivididos em um campo denominado 
MOD de 2 bits e dois campos com registradores de 3 bits (REG e R/M). Geralmente, os três primeiros bits 
desse byte são utilizados como extensão para o opcode, o que resulta em um total de 11 bits. Porém, o 
campo de modo de 2 bits significa que há apenas quatro modos de endereçamento dos operandos, e um 
deles deve ser sempre um registrador.
6.7 Endereçamento de instruções
Os campos de endereços para instruções mais simples possuem um formato relativamente pequeno. 
É de interesse que haja uma grande variedade de técnicas de endereçamento envolvendo alguma troca 
de intervalos de endereços ou mesmo uma flexibilidade para a realização do endereçamento. Além 
disso, é preciso usar um grande número de referências à memória que estão contidas dentro da própria 
instrução e que devem ser atendidas, incluindo o cálculo de endereçamento. Os principais modos de 
endereçamento para memória e/ou para registradores são: imediato, direto, indireto, por registradores, 
indireto por registradores, por deslocamento e endereçamento de pilha.
6.7.1 Tipo de endereçamento imediato
O endereçamento imediato é o formato mais simplificado de endereçamento, e nele o valor do 
operando está presente na própria instrução, por exemplo:
operando=A
Esse tipo de endereçamento é aplicado para definir valores iniciais das variáveis. No geral, o número 
será armazenado em duas formas complementares com o bit à esquerda do operando para bit de sinal, 
de modo que, quando o operando é carregado em um registrador de dados, o bit de sinal será estendido 
para a esquerda até que o tamanho total da palavra de dados seja completado. Em outros casos, o valor 
em binário imediato é interpretado como um número inteiro e sem sinal (negativo ou positivo).
Uma das vantagens do endereçamento imediato é que não há necessidade de referenciar algum 
endereço da RAM, pois a instrução já está contida no próprio operando, economizando ciclos de 
memória principal ou memória cache. Todavia, a desvantagem desse tipo de endereçamento é em 
relação ao tamanho do campo de endereço, que pode ser considerado pequeno se comparado ao 
tamanho da palavra.
174
Unidade II
6.7.2 Tipo de endereçamento direto
Nesse tipo, o próprio campo de endereço contém o endereço efetivo do operando que será utilizado, 
por exemplo:
EA=A
Essa técnica era muito usada nas primeiras gerações dos computadores, mas não é aplicada nas 
arquiteturas atuais. Sua grande vantagem é requerer apenas uma referência de memória e nenhum 
cálculo de endereçamento especial. A principal desvantagem é sua limitação em relação ao espaço para 
o endereçamento dos operandos.
6.7.3 Tipo de endereçamento indireto
Possui o tamanho do campo de endereço menor do que o tamanho da palavra, limitando o intervalo 
de endereços. Uma possível solução para essa limitação é ter um campo de endereço com referência ao 
endereço de uma palavra da memória que, por sua vez, conterá o endereço completo da operação a ser 
executada. Por exemplo:
EA=(A)
Nesse exemplo, os parênteses são interpretados como o conteúdo de um operando, no caso o A. 
Uma das vantagens visíveis desse tipo de endereçamento consiste no tamanho N da palavra, pois será 
disponibilizado um endereçamento de 2N. A desvantagem é que a execução da instrução irá requerer 
duas referências da memória para que o operando seja obtido, isto é, uma para obter o endereço do 
operando e outra para obter o valor do operando. Caso o número de palavras que podem ser endereçados 
seja 2N, o número de endereços diferentes que poderão ser referenciados em qualquer momento será 
limitado a 2k, em que k será o tamanho do campo de endereço.
Em uma variação do endereçamento indireto, é possível o uso de vários níveis de endereços para 
acesso a diferentes conteúdos, como é observado no exemplo:
EA=(...(A)...)
6.7.4 Tipo de endereçamento de registradores
Esse endereçamento é semelhante ao endereçamento direto, sendo sua única diferença o campo de 
endereço se referir a um registrador em vez de um endereço na memória principal, determinado como:
EA=R
Em que R significa referência a um registrador. Por exemplo, se um campo de endereço de um 
registrador dentro de uma instrução for 3, então o registrador R3 será o endereço pretendido, e o valor 
do operando está contido em R3. Geralmente, um campo de endereço para referência de registradores 
possui de 3 a 5 bits, com um total de 8 a 32 registradores de uso geral.
175
ARQUITETURA DE COMPUTADORES MODERNOS
Uma das vantagens do endereçamento baseado em registradores consiste na utilização de apenas 
um pequeno campo de endereço contido na instrução, além de não necessitar de nenhuma referência 
à memória. Como desvantagem pode‑se citar o espaço para o endereçamento de registradores ser 
pequeno e limitado. Quando há um uso muito grande de endereçamento por registradores em um 
conjunto de instruções, por consequência haverá um uso exacerbado dos registradores contidos no 
processador. Como o processador possui um número limitado de registradores, o uso exacerbado destes 
só faz sentido de modo eficiente. Se cada operando for inserido no registrador a partir da memória 
e utilizado apenas uma vez e depois enviado à memória principal, então seu uso não será otimizado, 
sendo necessário um passo intermediário no processo, aumentando uma etapa no ciclo de instrução. 
Por outro lado, se o operando permanecer no registrador durante algumas operações, então haverá 
economia de etapas no ciclo de busca e execução dos operandos.
6.7.5 Endereçamento indireto por registradores
Assim como o endereçamento por registradores é semelhante ao direto (memória), o endereçamento 
indireto por registradores, por sua vez, é semelhante ao indireto (memória). Nos dois casos, a diferença é 
em relação ao campo de endereço, que difere ao se referenciar a um registrador ou à memória principal. 
Outra característica no indireto por registradores é quanto à menor utilização de referências à memória 
se comparada ao endereçamento indireto.
6.7.6 Endereçamento por deslocamento
Combina as capacidades de endereçamento direto e indireto por registradores e pode ser 
representado como:
EA=A+(R)
Nessa modalidade é necessário que a instrução possua dois campos de endereçamento, dos quais 
um deverá ser explícito, ou seja, o valor contido em um campo de endereço como (A) deverá ser 
utilizado diretamente. Em um outro campo de endereço, será aplicada uma referência implícita baseada 
no opcode, que por sua vez refere‑se a um registrador cujo conteúdo é adicionado em A, de modo a 
produzir um endereço efetivo.
Há três usos comuns para o endereçamento por deslocamento: endereçamento relativo, 
endereçamento por registrador base e indexação.
Endereçamento relativo
Ocorre quando o registrador program conter (PC) é referenciado, ou seja, o endereço da próxima 
instrução será adicionado ao campo de endereço da operação. Assim, o endereço efetivo é o 
deslocamento relativo para a operação em uso. O uso de endereçamentos relativos economiza bits, 
pois a maioria das referências de memória já está na próxima instrução a ser executada.
176
Unidade II
Endereçamento por registrador base
Nessavariação, o registrador base contém um endereço de memória, e o campo de endereço possui 
um deslocamento, geralmente um número inteiro sem sinal. As referências aos registradores nesse 
caso podem ser de forma explícita ou implícita, o que também é considerada uma forma eficiente 
para executar a segmentação de instruções. Em algumas implementações de endereçamento, um único 
registrador de segmento pode ser usado implicitamente. Já em outras situações, o programador de 
hardware pode escolher um registrador para guardar o endereço base de um segmento, e a instrução 
deverá referenciá‑lo explicitamente. Nesta última opção, se o tamanho do campo de endereço for k e o 
número de possíveis registradores for N, então uma instrução pode referenciar qualquer uma de N áreas 
de 2k palavras.
Indexação
Nesse caso, o campo de endereço referencia uma posição que contém um endereço na memória 
principal, e o registrador que for referenciado conterá um deslocamento positivo desse endereço. Como 
o campo de endereço é considerado um endereço de memória na indexação, geralmente ele conterá mais 
bits quando comparado a um campo de endereço de uma instrução com endereçamento por registrador 
base. Apesar disso, o método para calcular o EA será o mesmo aplicado para o endereçamento por 
registrador base e indexação, e nos dois casos a referência do registrador será algumas vezes explícita; 
em outras, implícita, em diferentes processadores.
Uma das opções na indexação é a permissão para que algum mecanismo possa efetuar operações 
iterativas. Por exemplo, suponha uma lista de números armazenados, iniciando‑se na posição A. 
Suponha também que se queira adicionar 1 a cada elemento de uma lista. Será necessário obter cada 
valor, adicionar 1 a esse número e armazená‑lo de volta. A sequência de endereçamentos efetivos 
requeridos será A, A + 1, A + 2, A + 3..., até a última posição dessa lista. Ao se utilizar o endereçamento 
por indexação, essa tarefa é realizada de modo mais fácil, pois o valor A será armazenado no campo 
de endereço da instrução, e o registrador indexador será inicializado com zero. Após cada operação, o 
registrador indexador será incrementado por 1. Os registradores indexadores são comumente usados 
em tarefas iterativas, o que torna normal a necessidade de incrementar e decrementar o registrador 
indexador após cada referência a ele. Por se tratar de uma operação muito comum, alguns sistemas 
fazem isso de forma automática no próprio ciclo de instrução, o que é conhecido como autoindexação. 
Se forem utilizados registradores de uso geral para a indexação, a operação de autoindexação pode 
exigir uma sinalização feita por 1 bit dentro da própria instrução. Pode‑se descrever como exemplo de 
autoindexação para o uso de incremento:
EA=A+(R)
(R)←(R)+1
177
ARQUITETURA DE COMPUTADORES MODERNOS
Em alguns computadores, o endereçamento indireto e a indexação fazem parte de sua estrutura, 
sendo possível usar as duas possibilidades em uma mesma instrução. A indexação é executada antes ou 
depois da indireção. Se a indexação for executada depois da indireção, ela será chamada pós‑indexação 
e pode ser representada como:
EA=(A)+(R)
O conteúdo dos campos de endereço é geralmente utilizado para acesso ao local de memória que 
contém o endereço direto. Depois, esse endereço será indexado por um valor contido no registrador. Tal 
técnica será útil para o acesso do interior de vários blocos de dados de formato fixo. Por exemplo, nos 
sistemas operacionais é necessário implementar um bloco de controle de processos (program control 
block – PCB), onde todos os dados referentes ao processo são armazenados. Assim, a operação executada 
será a mesma, independentemente de qual bloco está sendo manipulado no momento, de forma que 
os endereços nas instruções que fazem referência ao bloco podem apontar para um local (valor=A) 
contendo um ponteiro para o início do PCB. Ao utilizar a pré‑indexação antes da indireção, tem‑se:
EA=(A+(R))
O endereçamento é calculado da mesma forma que na indexação simples, pois, nesse caso, o 
endereço calculado não contém o operando, mas o endereço de onde o operando se encontra. 
Por exemplo, pode‑se citar uma tabela contendo múltiplos endereços de desvio. Em um certo ponto 
do programa, pode haver uma ramificação para uma série de posições diferentes que dependem de 
sua condição. Uma tabela de endereços poderá ser definida com início em A. Baseando‑se na indexação 
dessa tabela, a localização desejada poderá ser encontrada.
6.7.7 Endereçamento de pilha
Uma pilha pode ser definida como um vetor linear de posições e contém um conjunto de elementos 
em que somente um deles pode ser acessado de cada vez. Uma pilha tem um tamanho variável, e 
o ponto de acesso à pilha é denominado topo da pilha, assim como o último elemento da pilha é 
conhecido como base da pilha. Os itens adicionados ou removidos da pilha só podem ser acessados do 
seu topo e, por esse motivo, uma pilha também pode ser conhecida como último a entrar, primeiro a sair 
(Last In First Out – LIFO). A figura a seguir mostra algumas operações básicas de uma pilha.
178
Unidade II
SP → SP → I
J J SP → J
K K K SP → J × K
L L L L
M M M M
• • • •
• • • •
• • • •
BP → • BP → • BP → • BP → •
SP = stack pointer (ponteiro de pilha)
BP = base pointer (ponteiro de base)
Estado inicial Após PUSH Após POP Após operação 
de multiplicação
En
de
re
ço
s d
ec
re
sc
en
te
s
Figura 151 – Operações básicas de pilha
Fonte: Stallings (2010, p. 321).
No exemplo da figura anterior, nota‑se que a pilha é constituída de alguns elementos em seu estado 
inicial. O estado irá se modificar através da operação PUSH, que tem como função acrescentar um 
elemento novo ao topo da pilha. A operação POP, na sequência, irá retirar o elemento do topo da 
pilha. Nesses dois casos, o topo da pilha se modifica de acordo com a operação realizada. Operadores 
binários também podem ser usados e exigirão dois operandos (multiplicar, dividir, somar, subtrair). Nesse 
caso, ao utilizar dois itens no topo da pilha como operandos, serão removidos dois itens relacionados 
à operação e o resultado será colocado novamente no topo da pilha. Em outras operações, conhecidas 
como unárias, exige‑se apenas um operando (NOT) para modificar o topo da pilha. Algumas operações 
em pilhas podem ser observadas no quadro a seguir.
Quadro 1 – Operações orientadas à pilha
PUSH Acrescenta um novo elemento ao topo da pilha
POP Retira um elemento do topo da pilha
Operação unária Realiza operação sobre o elemento do topo da pilha. Substitui o elemento do topo pelo resultado
Operação binária
Realiza operação sobre os dois elementos do topo da pilha. 
Exclui os dois elementos da pilha. Coloca o resultado da 
operação no topo da pilha
Fonte: Stallings (2010, p. 322).
179
ARQUITETURA DE COMPUTADORES MODERNOS
A tabela a seguir mostra, de forma resumida, as possíveis operações de cálculo de endereçamento 
discutidas até o momento.
Tabela 8 – Modos básicos de endereçamento
Modo Algoritmo Principal vantagem Principal desvantagem
Imediato Operando=A Nenhuma referência de memória Magnitude de operando limitada
Direto EA=A Simples Espaço de endereçamento limitado
Indireto EA=(A) Espaço de endereçamento grande Múltiplas referências de memória
Registrador EA=R Nenhuma referência de memória Espaço de endereçamento limitado
Indireto por registrador EA=(R) Espaço de endereçamento grande Referência extra de memória
Deslocamento EA=A+(R) Flexibilidade Complexidade
Pilha EA=topo da pilha Nenhuma referência de memória Aplicabilidade limitada
Fonte: Stallings (2010, p. 331).
6.8 O computador e as interrupções
Todo computador ou sistema embarcado oferece algum mecanismo para que operações que envolvam 
alguma comunicação com a memória, o processador ou dispositivos de E/S possam ser interrompidas 
em algum momento de sua operação.
 Observação
Embora possa parecer ao usuário que uma máquina trabalhe melhor 
sem ser interrompida, as interrupções na verdadegarantem uma operação 
otimizada de um computador.
No quadro a seguir, destacam‑se os tipos mais comuns de classes de interrupções.
Quadro 2 
Programa
Gerada por alguma condição que ocorre como resultado da execução de uma 
instrução, como o overflow aritmético, divisão por zero, tentativa de executar 
uma instrução de máquina ilegal ou referência fora do espaço de memória 
permitido para o usuário
Timer Gerada por um timer dentro do processo. Isso permite que o sistema operacional realize certas funções regularmente
E/S Gerada por um controlador de E/S para sinalizar o término normal de uma operação ou para sinalizar uma série de condições de erro
Falha de hardware Gerada por uma falha como falta de energia ou erro de paridade de memória
Fonte: Stallings (2010, p. 60).
180
Unidade II
As interrupções são inseridas durante o ciclo de instruções como uma forma de otimizar a 
eficiência do processamento das instruções. Em um exemplo simulado, imagine que um processador 
esteja transferindo dados a um dispositivo (impressora) utilizando o esquema de ciclo de instrução. 
Após cada operação para realização de escrita (gravação dos dados), o processador deve permanecer 
ocioso até que o dispositivo de impressão o acesse. O tempo dessa pausa deve ser da ordem 
de centenas de ciclos de instrução que não envolverão acesso à memória, o que ocasiona uma 
ociosidade de uso do processador, que ficará aguardando instruções nesse período. A figura a 
seguir ilustra essa situação, em que o programa de usuário realiza uma série de chamadas WRITE 
intercaladas com algum processamento. É possível observar também que os segmentos de código 
1, 2 e 3 referem‑se às sequências de instruções que não envolvem alguma comunicação com 
dispositivos de E/S.
Programa 
do usuário
Write
Write
Write
Programa 
de E/S
Comando 
de E/S
End
1
2
3
5
4
Figura 152 – Fluxo de controle de programa sem interrupções
Fonte: Stallings (2010, p. 61).
181
ARQUITETURA DE COMPUTADORES MODERNOS
Geralmente, o programa de E/S consiste em três seções:
• Uma sequência de instruções (anotado como 4 na figura anterior) é utilizada a fim de preparar 
a operação de E/S, o que pode incluir a cópia dos dados para a saída alocada em um buffer 
(memória auxiliar temporária).
• O comando de E/S (sem o uso de interrupções) é emitido e o programa precisa esperar até que o 
dispositivo de E/S esteja pronto para realizar a função desejada ou sondar, de forma periódica, se 
a operação de E/S terminou.
• A instrução seguinte (anotada como 5 na figura anterior) completará a operação, o que pode 
incluir uma notificação (flag) para indicar o sucesso ou falha na operação.
 Lembrete
As operações de E/S levam um longo tempo para serem finalizadas e o 
programa de E/S geralmente fica esperando que a operação termine.
6.8.1 As interrupções e o ciclo de instrução
O uso de interrupções durante o ciclo operacional do computador pode otimizar o desempenho 
do processador. Considere, como exemplo, o fluxo de controle de um programa da próxima figura. 
Nessa operação, o programa de usuário alcança um ponto em que é realizada uma chamada sistema 
(system call) na forma de uma chamada WRITE. O programa de E/S será invocado depois que algumas 
poucas instruções tiverem sido executadas. Então, o controle retorna ao programa de usuário enquanto 
o dispositivo externo está ocupado aceitando/imprimindo dados oriundos da memória principal. 
A  operação de E/S será realizada simultaneamente com a execução de instruções no programa de 
usuário. Quando algum dispositivo de E/S estiver pronto para aceitar mais dados do processador, o 
módulo de E/S para o dispositivo externo enviará um sinal de interrupção ao processador, de modo 
que o processador responderá suspendendo a operação do programa em execução, desviando para 
um programa do sistema operacional (tratador de interrupção) atender a algum dispositivo de E/S, 
retomando a execução original depois que o dispositivo for atendido.
182
Unidade II
Programa 
do usuário
Write
Write
Write
Programa 
de E/S
Comando 
de E/S
End
Tratador de 
interrupção
1
3b
2b
3a
2a
5
4
Figura 153 – Fluxo de controle de programa com interrupções de curta espera
Fonte: Stallings (2010, p. 61).
Uma interrupção é definida, simplificadamente, também como uma quebra na sequência de 
execução normal de algum software ou hardware. Quando o tratamento da interrupção tiver finalizado, 
a execução retornará do mesmo ponto de onde foi interrompida. O processador e o sistema operacional 
são os responsáveis pela suspensão do programa de usuário para depois retorná‑lo ao mesmo ponto. 
Dessa forma, o programa de usuário não precisará conter qualquer outro código especial para acomodar 
as interrupções, como mostra o esquema da figura a seguir.
183
ARQUITETURA DE COMPUTADORES MODERNOS
Programa do usuário Tratador de interrupção
Interrupção 
ocorre aqui
1
2
i
i + 1
M
Figura 154 – Transferência de controle de tarefas via interrupções
Fonte: Stallings (2010, p. 62).
Para que as interrupções ocorram, um novo ciclo de interrupção será acrescentado ao ciclo de 
instrução simples, como pode ser observado na figura a seguir.
Ciclo de busca Ciclo de execução Ciclo de interrupção
Interrupções 
desabilitadas
Interrupções 
habilitadas
Início
Fim
Buscar próxima 
instrução
Executar 
instrução
Verificar interrupção: 
processar interrupção
Figura 155 – Ciclo de instruções com interrupções
Fonte: Stallings (2010, p. 62).
No ciclo de instrução onde ocorrerão interrupções, o processador verifica se há algum sinal de 
interrupção. Se nenhuma interrupção ocorrer ou estiver pendente em um certo período, o processador 
pode seguir para a próxima etapa do ciclo de busca, que será ler a próxima instrução do programa em 
execução. Porém, se alguma interrupção estiver pendente, o processador executará as seguintes tarefas 
(STALLINGS, 2010):
184
Unidade II
• Primeiro suspenderá o programa que está em execução e salvará o endereço da próxima instrução 
(indicada pelo program counter – PC) a ser executada ou qualquer outro dado relacionado à 
operação em atividade.
• Depois irá armazenar no program counter o endereço inicial da rotina que será tratado 
a interrupção.
Como observado na figura anterior, o ciclo de busca obtém a primeira instrução da rotina de 
tratamento de interrupção que irá atender à interrupção solicitada. Então, o tratador de interrupção 
determina qual é a finalidade da interrupção e executa as ações necessárias para sua realização. 
No exemplo da figura 153 (fluxo de interrupção de curta espera), o tratador define qual módulo de E/S 
foi o responsável pelo sinal de interrupção e desvia a solução para um programa que escreverá os dados 
no dispositivo de E/S. Quando a rotina de tratamento de interrupção terminar, o processador poderá 
retomar a execução do programa de usuário que estava em operação antes da interrupção justamente 
do ponto de parada.
Esse tipo de operação de tratamento de interrupção geralmente engloba o uso excessivo de memória, 
conhecido como overhead; apesar disso, devido à quantidade de tempo relativamente grande envolvida 
no processo, o uso indevido de tempo do processador pode ser desperdiçado simplesmente pela longa 
espera de um sinal que envolva a comunicação do processador com algum dispositivo de E/S, tornando 
muito mais eficiente o uso de interrupções durante o processo. O tempo exigido para a operação de E/S 
será relativamente mais curto (interrupção de curta espera), ou seja, menos do que o tempo total para 
completar a execução das instruções entre as operações de escrita no programa de usuário. Situações 
com respostas mais lentas, como dispositivos de impressão, resultarão em operações de E/S com muito 
mais tempo de execução para uma sequência de instruções do usuário.
A figura a seguir mostra uma situação em que o programa de usuário alcança a segunda chamada 
WRITE antes do término da primeira operação de E/S. O resultado dessa operação é que o programado 
usuário ficará travado nesse ponto, de modo que, quando a operação de E/S anterior tiver terminado, 
essa nova chamada WRITE será processada, fazendo com que uma nova operação de E/S seja iniciada.
185
ARQUITETURA DE COMPUTADORES MODERNOS
Programa 
do usuário
Write
Write
Write
Programa 
de E/S
Comando 
de E/S
End
Tratador de 
interrupção
1
2
5
4
3
Figura 156 – Fluxo de controle de programa com interrupções de longa espera
Fonte: Stallings (2010, p. 61).
Já a figura a seguir mostra o diagrama de ciclo de instruções revisado, onde é possível verificar 
a inclusão do ciclo de interrupção. Como pode ser observado, o processo se inicia geralmente com 
o cálculo do endereço da próxima instrução. Após esse primeiro estágio, são realizadas a busca da 
instrução e a decodificação dos operandos envolvidos no processo.
186
Unidade II
Armazenamento 
do operando
Busca do 
operando
Busca da 
instrução
Cálculo do 
endereço da 
instrução
Cálculo do 
endereço do 
operando
Decodificação 
da operação da 
instrução
Cálculo do 
endereço do 
operando
InterrupçãoVerificação da interrupção
Operação 
dos dados
Múltiplos 
operandos
Instrução completa, busca a 
próxima instrução
Retorna dados de string 
ou vetor
Nenhuma 
interrupção
Múltiplos 
resultados
Figura 157 – Diagrama de ciclo de instruções com interrupções
Fonte: Stallings (2010, p. 64).
Na sequência, é realizado o cálculo do endereço de onde estão esses operandos para que eles sejam 
buscados e, finalmente, a operação de dados seja executada. O processo é finalizado com um novo 
cálculo do endereço para que seja possível armazenar o resultado em um novo operando. Note que, 
na figura, durante esse ciclo inicial não houve nenhuma interrupção, o que poderia ter ocorrido em 
qualquer momento do ciclo. Se houver uma interrupção, é possível observar que ela será atendida 
prioritariamente e um novo ciclo será iniciado com a busca da instrução de interrupção requerida. Após 
o término do tratamento da interrupção, o ciclo voltará a ser executado do estágio em que havia sido 
interrompido inicialmente.
 Lembrete
As interrupções abordadas até o momento destacaram a ocorrência de 
interrupções simples, ou seja, que ocorrem uma a uma.
6.8.2 Interrupções múltiplas
Em uma nova situação, podemos incorporar um caso em que ocorram múltiplas interrupções, em 
que um programa receberá dados de um controlador de linha de comunicações e precisará imprimir 
o resultado disso, de forma que a impressora gere uma interrupção toda vez que dados unitários 
chegarem. Nessa situação, pode‑se empregar duas técnicas para tratar as múltiplas interrupções. Na 
primeira, desativam‑se as interrupções enquanto uma interrupção já estiver sendo tratada, o que 
significa que o processador poderá ignorar qualquer tipo de sinal de requisição de interrupção novo. 
Se alguma interrupção ocorrer durante esse período, ela permanecerá pendente e será averiguada 
pelo processador após ele ter habilitado novamente as operações de interrupções. Depois que a rotina 
de tratamento de interrupção tiver sido finalizada, as interrupções são novamente habilitadas antes 
187
ARQUITETURA DE COMPUTADORES MODERNOS
que o programa de usuário dê continuidade do ponto da parada inicial, de modo que o processador 
verificará se houve interrupções adicionais durante o período em que as interrupções adicionais foram 
desabilitadas. Apesar de simples, essa técnica é muito boa, pois as interrupções são tratadas de forma 
sequencial, como pode ser observado na figura a seguir. Uma desvantagem dessa técnica é que ela não 
considera a prioridade relativa ou mesmo necessidades de tempo crítico em que, por exemplo, a entrada 
chega à linha de comunicações e precisa ser absorvida rapidamente para que seja liberado mais espaço 
para outras entradas, de forma que, se o primeiro lote de entrada não for processado antes da chegada 
do segundo lote, alguns dados ou todos poderão ser perdidos.
Programa 
de usuário
____
____
____
____
____
____
____
____
____
____
Tratador de 
interrupção X
____
____
____
____
____
Tratador de 
interrupção Y
____
____
____
____
____
Figura 158 – Transferência de controle de execução de processos com interrupção sequencial
Fonte: Stallings (2010, p. 65).
Em uma outra técnica de interrupções múltiplas, definem‑se as prioridades de interrupção a fim de 
permitir que uma interrupção de maior prioridade possa ter um tratamento de interrupção distinto ao 
de menor prioridade, inclusive ocasionando a pausa deste último, como se observa na figura a seguir.
Programa 
de usuário
____
____
____
____
____
____
____
____
____
____
Tratador de 
interrupção X
____
____
____
____
____
Tratador de 
interrupção Y
____
____
____
____
____
Figura 159 – Transferência de controle de execução de processos com interrupção aninhada
Fonte: Stallings (2010, p. 65).
188
Unidade II
Por exemplo, considere um sistema formado por três dispositivos de E/S (impressora, disco rígido 
e alguma linha de comunicação com dispositivos externos) constituídos com as prioridades 2, 4 e 5, 
respectivamente. Um usuário inicia uma tarefa em t = 0, e em t = 10 ocorre uma interrupção ocasionada 
pela impressora. A informação do usuário é posta na pilha do sistema, e a execução continua na rotina 
de serviço de interrupção, como mostra a figura a seguir.
Programa 
de usuário
____ 
____
____
____
____
____
____
____
____
____
Rotina de serviço 
de interrupção 
de impressora
____
____
____
____
____
____
____
Rotina de serviço 
de interrupção 
de comunicação
____
____
____
____
____
Rotina de serviço 
de interrupção 
de disco
____
____
____
____
____
t = 0
t = 10 t =
 15
t = 40
t = 25
t = 25
t = 35
Figura 160 – Sequência de tempo para múltiplas interrupções aninhadas
Fonte: Stallings (2010, p. 66).
Durante a execução dessa rotina, temos que em t = 15 ocorre uma interrupção de comunicação, 
de forma que, como a linha de comunicação possui prioridade maior se comparada à impressora, a 
interrupção será aceita. Sendo aceita a interrupção da impressora, seu estado será colocado na pilha de 
execução contínua. Contudo, para complicar a situação, ocorre uma nova interrupção de disco em t = 20 
durante o processo em execução (serviço de comunicação). Como esse tipo de interrupção tem menor 
prioridade (disco rígido) do que o serviço de comunicação, ela será retida, e o serviço de comunicação 
será executado até o final. Quando o serviço de comunicação termina em t = 25, o estado anterior do 
processador (impressora) é restaurado. Entretanto, antes que uma instrução da rotina seja executada, 
o processador aceita a interrupção de disco rígido que estava em espera e que possuía maior prioridade 
que a impressora, transferindo o controle para a rotina de serviço de interrupção. Por fim, quando t = 40 
(última rotina), o controle retorna para o programa de usuário, aguardando novas instruções.
6.9 Pipeline de instruções
As etapas de pipeline podem ser entendidas como um processo de linha de montagem de uma 
fábrica, como na figura a seguir, onde um produto na linha de montagem passa por vários estágios que 
podem ser trabalhados de forma simultânea. Esse processo ficou conhecido como pipelining, pois, como 
em uma esteira, novas entradas serão aceitas em um lado da linha de fabricação antes que as entradas 
aceitas anteriormente apareçam finalizadas na saída do outro lado da linha de produção, ou seja, antes 
do término de todo o processo.
189
ARQUITETURA DE COMPUTADORES MODERNOS
Figura 161 – Linha de montagem de placas‑mãe
Disponível em: https://bit.ly/3DeMRwC. Acesso em: 24 jan. 2023.
Aplicando esse conceito aos computadores, sabe‑se que uma instrução também possui vários 
estágios de processamento, como observado na figura anterior onde se nota a fabricação em série 
de placas‑mãe. Utilizando instruções a serem processadas como exemplo, considere dividir todo o 
processamento das instruções em apenas dois estágios: ler instrução e executar instrução. Nessecaso, 
haverá momentos durante a execução de uma instrução em que a memória principal não será acessada, 
ou seja, ficará ociosa. Essa “fatia” do tempo poderia ser usada para obter a próxima instrução, de forma 
paralela e não interferindo na execução da instrução atual, como está exemplificado na figura a seguir.
Instrução Instrução Resultado
Leitura Execução
Figura 162 – Pipeline de instruções de dois estágios simplificados
Fonte: Stallings (2010, p. 365).
Como observado na figura anterior, o pipeline possui dois estágios independentes, e o primeiro 
deles obtém a instrução e a coloca em espera (buffer). Após o segundo estágio estar liberado, o 
primeiro estágio repassa para ele a instrução do buffer. Enquanto o segundo estágio está em execução, 
o primeiro aproveita qualquer ciclo de memória que não está sendo utilizado para obter a próxima 
instrução a ser executada e a coloca no buffer. Esse processo ficou conhecido como busca antecipada 
(prefetch) ou busca sobreposta (STALLINGS, 2010). Uma possível desvantagem nessa abordagem de 
tratamento de instruções em paralelo é a grande utilização de registradores que são aplicados para 
guardar não só instruções, mas também dados usados entre os estágios. Apesar disso, o processo de 
pipelining irá acelerar a execução das instruções, e se os estágios de leitura e execução tiverem o 
190
Unidade II
mesmo tempo de duração, o ciclo de instrução poderá ser reduzido pela metade do tempo. Porém, ao 
verificar o esquema da próxima figura, nota‑se que seria pouco provável dobrar a taxa de execução 
em razão dos seguintes aspectos:
• O tempo de execução, que é maior do que o tempo de leitura da instrução, de forma que o estágio 
de leitura poderá ter que esperar por algum tempo antes de esvaziar seu buffer.
• Uma instrução de desvio condicional pode ocorrer durante a execução da instrução, o que faz 
com que o endereço da próxima instrução, que ainda será obtida, não seja conhecido. Dessa 
forma, o estágio de leitura precisará esperar até que receba o endereço da próxima instrução 
contida no estágio de execução, daí o estágio de execução também precisará esperar até que a 
próxima instrução seja recebida.
Instrução Instrução Resultado
Leitura Execução
Descartar
Espera EsperaNovo endereço
Figura 163 – Pipeline de instruções de dois estágios expandidos
Fonte: Stallings (2010, p. 362).
Nesse exemplo com desvio incondicional, uma instrução passa do estágio de leitura para o estágio de 
execução. O estágio de leitura obtém a próxima instrução na memória principal após a instrução de desvio; 
se o desvio requerido não for atendido, nenhum tempo será perdido durante o processo. Entretanto, se 
o desvio for atendido, a instrução ativa no processo poderá ser descartada e uma nova instrução será 
lida e executada. De fato, esses fatores podem reduzir a eficiência do processo de pipeline de dois 
estágios, mas algum ganho na aceleração ainda ocorrerá, de forma que, para obter mais velocidade, o 
pipeline deverá conter mais estágios a fim de tratar possíveis atrasos em estágios de forma individual. 
Para que o  pipeline obtenha maior desempenho, mais estágios serão necessários, de forma que os 
estágios possam ser decompostos, possuindo menos operações a cada ciclo. Essa divisão de estágios 
varia em tamanho, de acordo com a capacidade do hardware de conter ou não mais registradores 
em seu processador, possibilitando maior armazenamento de instruções em um buffer. Um sistema de 
pipeline padrão é constituído por seis estágios, divididos em:
• Buscar instrução (fetch instruction – FI): tem como objetivo ler a próxima instrução esperada 
em um buffer.
• Decodificar instrução (decode instruction – DI): tem como meta determinar o código da 
operação (opcode) e a especificação dos operandos.
191
ARQUITETURA DE COMPUTADORES MODERNOS
• Calcular operandos (calculate operand – CO): tem como fito o cálculo do endereço de cada 
operando. Essa operação pode envolver o endereçamento por deslocamento, o indireto por 
registrador, o endereçamento indireto pela memória e outros tipos.
• Obter operandos (fetch operands – FO): tem como propósito obter cada operando da memória 
principal. Nesse caso, os operandos que estão nos registradores não precisarão ser lidos da memória.
• Executar instrução (instruction execution – IE): tem como intuito executar a operação indicada 
após a obtenção dos operandos e armazena o resultado em algum local específico.
• Escrever operandos (write operands – WO): tem como objetivo o armazenamento do resultado 
da operação na memória principal.
A partir dessa decomposição de uma instrução, baseada em seis estágios, é possível quantificar 
qual o tempo de duração de cada etapa. A figura a seguir destaca essa situação hipotética de 
processamento paralelo utilizando o pipeline; vê‑se que é possível reduzir o tempo de execução das 
instruções em paralelo (tempo 14) em vez de executá‑las todas em série (enfileiradas).
Tempo 
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Instrução 1 FI DI CO FO EI WO
Instrução 2 FI DI CO FO EI WO
Instrução 3 FI DI CO FO EI WO
Instrução 4 FI DI CO FO EI WO
Instrução 5 FI DI CO FO EI WO
Instrução 6 FI DI CO FO EI WO
Instrução 7 FI DI CO FO EI WO
Instrução 15 FI DI CO FO EI WO
Instrução 16 FI DI CO FO EI WO
Figura 164 – Diagrama temporal para operação de instruções em paralelo
Fonte: Stallings (2010, p. 366).
O esquema apresentado na figura anterior mostra que cada instrução atravessa os seis estágios do 
pipeline e que todos os estágios podem ser executados em paralelo, supondo‑se também que não haverá 
em nenhum momento algum conflito de memória. Todavia, os estágios FI, FO e WO geralmente envolvem 
acesso à memória, o que implica que nesses casos os acessos podem ocorrer de forma simultânea, o que 
fará com que sistemas de memória não permitam tais acessos simultâneos. Porém, o valor desejado na 
operação pode estar contido na memória cache ou mesmo os estágios FO ou WO podem estar nulos, 
causando diversos conflitos, mas que, por sua vez, não irão desacelerar o processo de pipeline.
192
Unidade II
 Observação
Outros fatores poderão limitar o desempenho no pipeline. Em uma 
situação real, os seis estágios não terão a mesma duração, ocasionando 
espera em vários estágios diferentes.
Uma instrução de desvio condicional pode invalidar várias leituras de instruções, de modo semelhante 
ao mostrado no esquema da figura a seguir.
Tempo Penalidade por desvio 
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Instrução 1 FI DI CO FO EI WO
Instrução 2 FI DI CO FO EI WO
Instrução 3 FI DI CO FO EI WO
Instrução 4 FI DI CO FO
Instrução 5 FI DI CO
Instrução 6 FI DI
Instrução 7 FI
Instrução 8 FI DI CO FO EI WO
Instrução 9 FI DI CO FO EI WO
Figura 165 – Diagrama temporal para operação de instruções em paralelo com desvio condicional
Fonte: Stallings (2010, p. 367).
Como ilustrado na figura anterior, o tempo 3 (eixo Y) representa um desvio condicional para a 
instrução 15 (eixo X). Antes de a instrução ser executada não há como prever qual instrução entrará 
na sequência. Dessa forma, o pipeline irá carregar a próxima instrução (instrução 4) na sequência e 
prosseguirá com o carregamento das próximas instruções. Na figura 164 não ocorre nenhum desvio; 
assim, houve um benefício total do aumento do desempenho do pipeline. Entretanto, na figura anterior 
o desvio ocorre sem ser interpretado até o fim da unidade de tempo 7 (eixo Y), sendo que nesse ponto 
será necessário que o pipeline seja limpo das instruções que não serão úteis. Assim, durante o tempo 8 
(eixo Y) a instrução 15 (eixo X) entra no pipeline, fazendo com que nenhuma instrução seja completa 
durante as unidades de tempo de 9 a 12 (eixo Y). Isso caracteriza uma penalidade de desempenho do 
pipeline, pois não foi possível, durante todo o processo, antecipar o desvio como sendo uma interrupção 
a ser tratada pelo tratador de interrupção e depois retornar ao ponto da parada do processo. Como 
observado, o fato de “limpar” as instruções do pipeline faz

Outros materiais