Buscar

ARQUITETURA DE COMPUTADORES E MICROPROCESSADORES -unidade 3

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

- -1
ARQUITETURA DE COMPUTADORES E 
MICROPROCESSADORES
UNIDADE 3 - O QUE SÃO INTERRUPÇÕES E 
COMO ELAS INTERAGEM COM OS 
DISPOSITIVOS DE I/O E AS PRÓPRIAS 
INSTRUÇÕES?
Autoria: Fernando Cortez Sica – Revisão técnica: Jackson Luis Schirigatti
- -2
Introdução
Olá, cursista! Seja bem-vindo! Conversaremos, inicialmente,
sobre interrupções. Será que podem ser tratadas como
programas? Sim, podem! Apesar de poder ser ativadas por
sinais de , comportam-se como programas. Então,hardware
entrarão no escalonamento e no ? A resposta é,pipeline
também, positiva: o processamento do código relativo ao seu
tratamento será feito pelas mesmas estruturas que executam os
códigos dos usuários e do sistema operacional.
Em seguida, estudaremos um pouco mais dos formatos das instruções. O formato das instruções ditará a forma
como são armazenadas na memória; e impactará no projeto do processador.
Após, conversaremos sobre modos de endereçamento. Isso está relacionado ao formato das instruções? Essa
expressão está ligada ao modo de referenciar os valores a serem processados. Nesse sentido, os modos de
endereçamento devem ser refletidos nos formatos de instruções, para que os dados possam ser lidos e
manipulados.
Por fim, conversaremos sobre os dispositivos de I/O ( / ; em português entrada/saída). Existe apenasInput Output
a forma de manipulação dos dispositivos de I/O por interrupções? Na verdade, existem outras maneiras de
manipulação, as quais veremos oportunamente.
Bons estudos!
3.1 Tratamento de interrupções
Uma interrupção é um evento demandado pelos dispositivos de I/O para haver a coleta ou o envio de
informações aos dispositivos “externos”. Por exemplo, ao movimentarmos o , é gerado um sinal demouse
interrupção para que o cursor seja movimentado e redesenhado na tela. Cada pulso de gera um sinal declock
interrupção, de modo que, por exemplo, o sistema operacional possa atuar no escalonamento de processos.
Falamos de eventos emitidos a partir dos dispositivos. Mas o que acontece no envio de informações aos
dispositivos, quando, por exemplo, imprimimos algo na tela? Quando a demanda parte dos processos do usuário
ou do sistema operacional, o evento é denominado . Portanto, são interrupções geradas pela execuçãotrap traps
de instruções. também podem ser geradas pelo para interromper o processo e para executarTraps hardware
rotinas de exceções – nesse caso, incluem-se as decorrentes de , as falhas de segmentação e atraps overflow
divisão por zero.
3.1.1 Interrupções e o ciclo de interrupções
Mencionamos, há pouco, que o tratamento de uma interrupção envolve um código que deverá ser executado.
Mas, se existe um código a ser executado, como fica a execução dos processos dos usuários? Como o próprio
nome diz, o processo do usuário deverá ser interrompido, e as instruções do tratamento da interrupção
precisam ser carregadas (inclusive no , quando for o caso) para que sejam executadas. Dessa forma, opipeline
seu tratamento segue os princípios da execução de um processo, devendo, portanto, ser realizada a troca de
contexto, conforme a seguinte sequência de operações.
Instaciar o registrador MBR com o valor do PC para o empilhamento na memória.
- -3
Instanciar o registrador MAR com a referência do topo da pilha. O topo da pilha é, geralmente, referenciado por
um registrador do tipo Stack Pointer (ponteiro de pilha), como o SP (na família x86) e o RSP (no x64).
Instanciar o PC com o endereço da primeira instrução do tratamento da interrupção. Esse endereço é coletado a
partir do vetor de interrupções (nas famílias x86 e x64, o vetor é iniciado na posição 0 do mapeamento da
memória).
Efetivar a gravação na memória com os valores de MBR e de MAR.
Tudo isso parece uma troca de contexto de processos ou a chamada de uma função dentro do mesmo processo.
As diferenças estão no local para coletar o novo valor do PC e na instrução indicativa de término – no
encerramento de uma função, é executada uma instrução do tipo ret ou return (retorne). No encerramento do
tratamento de uma interrupção, encontramos uma função do tipo iret (Interrupt Return – em português, retorno
da interrupção), ocorrendo, dentre outras coisas, o desempilhamento do PC, para que a execução do processo
seja reiniciada no ponto de sua interrupção.
Você deve estar perguntando-se o seguinte: o que muda do ciclo de instruções com a introdução da necessidade
de tratamento de interrupções? Para responder a essa questão, vamos observar a figura “Ciclo de instrução
incorporando-se o ciclo de interrupção”.
Assim como as instruções dos processos são quebradas em micro-operações, as etapas acima descritas também
são representadas por micro-operações. Dessa forma, consegue-se seguir a filosofia de aproveitamento do 
.pipeline
- -4
Figura 1 - Ciclo de instrução incorporando-se ao ciclo de interrupção
Fonte: Elaborada pelo autor, 2020.
#PraCegoVer: na figura, temos, em (a), um ciclo iniciado em “iniciar” e formado pelas etapas (na ordem) “buscar
próxima instrução” (ciclo de busca), “executar instrução” (ciclo de execução) e “verificar e processar
interrupção” (ciclo de interrupção). Após “executar instrução”, ocorre “verificar e processar interrupção”, caso
haja “interrupções habilitadas”; volta-se para “buscar próxima instrução”, caso haja “interrupções desabilitadas”;
ou, ainda, segue-se para o estado final, “parar”. Depois de “verificar e processar interrupção”, o ciclo se reinicia
com “buscar próxima instrução”. Em (b), temos o seguinte ciclo: “cálculo de endereço da instrução”, “busca da
instrução”, “decodificação do operando da instrução”, “cálculo do endereço do operando”, “busca de operando”,
“operação de dados”, “cálculo do endereço do operando”, “armazenamento do operando”, “verificação de
interrupção” e “interrupção”. Da “interrupção” e da “verificação da interrupção” (sem interrupção), derivam
linhas que se juntam em direção à primeira ocorrência do “cálculo do endereço do operando” (retorna uma
cadeia de caracteres ou dados de vetor) e em direção ao “cálculo do endereço da instrução” (fim da execução da
instrução e busca da instrução seguinte). As linhas entre a primeira ocorrência de “cálculo do endereço do
operando” e “busca de operando” são bidirecionais (resultados múltiplos). Isso acontece, também, entre a
segunda ocorrência do “cálculo do endereço do operando” e “armazenamento do operando”.
Na figura “Ciclo de instrução incorporando-se ao ciclo de interrupção”, temos, em (a), o ciclo de instrução de
forma resumida, englobando a verificação de interrupções pendentes. Podemos observar que, após a execução
de uma instrução, sempre ocorre a verificação de interrupções pendentes, desde que as interrupções estejam
habilitadas. Em (b), são detalhados os ciclos apresentados em (a). Por exemplo, o ciclo de busca envolve as
etapas “cálculo do endereço da instrução”, “busca da instrução” e “decodificação do operando da instrução”.
Todas as etapas integrantes podem, também, ser mapeadas em micro-operações, que, com a manipulação dos
registradores MAR, MBR e PC, constituem o conjunto de micro-operações do ciclo de busca. É possível, ainda,
- -5
registradores MAR, MBR e PC, constituem o conjunto de micro-operações do ciclo de busca. É possível, ainda,
observar que as instruções inerentes às interrupções são tratadas normalmente, conforme as etapas que
integram o ciclo de instrução.
3.1.2 Tipos de interrupções
Como mencionamos, as interrupções podem ser classificadas em interrupções de e em interrupçõeshardware
por ( ). Vamos abrir um pouco essa classificação, começando a categorizar uma interrupção de software traps
 como mascarável ou não mascarável.hardware
Uma interrupção mascarável é aquela que pode ser desabilitada – ou seja, ignorada –, caso venha a ocorrer. Por
outro lado, a não mascarável sempre será executada – não poderá ser desabilitada (tal como interrupção do clock
).
Para desabilitar uma interrupção, podemos atuar de dois modos. O primeiro consiste em desabilitar todas as
interrupções que atuam no registradorPSW ( – em português, palavra de estado doProcessor Status Word
processador) por meio de instruções dos tipos CLI ( – em português, limpa deClear Interrupt Flag flag
interrupção) e STI ( – em português, seta de interrupção). Outra maneira consiste emSet Interrupt Flag flag
atuarmos nos registradores de máscaras de interrupção associados aos dispositivos de I/O.
Podemos, também, relacionar a interrupção ao modo de sua sinalização; à possibilidade ou não de termos
interrupções paralelas; e às suas prioridades. Para isso, teremos que conversar sobre o controlador de
interrupção.
Um controlador de interrupção é um processador auxiliar ou um subcircuito do processador principal que visa
ao recebimento de sinais de requisição de interrupção (IRQ – ); e a sinalizar ao processador aInterrupt Request
necessidade de interrupção do processo corrente, passando as informações necessárias à troca de contexto.
A figura “Interligação básica entre o processador, controlador de interrupções e os dispositivos de I/O”, a seguir,
ilustra um cenário típico com a utilização de um controlador de interrupção.
Figura 2 - Interligação básica entre o processador, o controlador de interrupções e os dispositivos
Fonte: Elaborada pelo autor, 2020.
- -6
#PraCegoVer: na figura, temos um “processador” interligado ao “controlador de interrupções” por meio das
linhas “INT” e “Dados”. O controlador de interrupções, por sua vez, encontra-se conectado aos dispositivos de I
/O por meio de canais dedicados (uma linha para cada dispositivo de I/O).
Na figura “Interligação básica entre o processador, o controlador de interrupções e os dispositivos de I/O”, temos
a presença de um controlador de interrupções que utiliza canais dedicados de IRQ para que possa, dentre as
várias possíveis demandas de interrupção (interrupções paralelas), selecionar a mais prioritária. Na ocorrência
de demandas de interrupções, o controlador sinaliza o processador por meio do pino “INT”, a fim de proceder
com o tratamento da interrupção cujas informações são direcionadas pelo do canal “Dados”.
Uma interrupção pode ocorrer quando alguma anterior estiver, ainda, sendo tratada? Sim, o tratamento das
interrupções pode ocorrer ou de forma sequencial ou de forma aninhada. Na forma sequencial, uma segunda
interrupção é tratada apenas ao término da primeira. Por sua vez, a forma aninhada ocorre quando o tratamento
de uma segunda interrupção se inicia antes da finalização da anterior (é como, na programação, evocar uma
função dentro de outra função). Nesse cenário, as interrupções podem ser classificadas como reentrantes e não
reentrantes. A reentrância denota o tratamento aninhado de interrupções do mesmo tipo (fazendo um paralelo
com a programação, seria como executar funções recursivas).
3.2 Formatos de instruções
Todas as instruções, para serem mapeadas no nível da palavra de instrução, seguem um formato geral:
<opcode + operandos>
O campo “opcode” corresponde ao código da instrução: trata-se de um valor numérico para que seja
decodificada pela unidade de controle do processador. Os operandos remetem às informações a serem
processadas.
Cada grupo de instruções manipula operandos distintos. Qual será a quantidade e quais serão os operandos a
manipular? Conversaremos, agora, sobre isso.
3.2.1 Instruções de zero, de um, de dois e de três operandos
Durante a evolução dos sistemas computacionais, houve a expansão da largura das palavras manipuladas e o
incremento da capacidade de memória, possibilitando, inclusive, a incorporação dos registradores no
processador. Essa evolução impactou o projeto do conjunto de instruções dos processadores (ISA – Instruction
 – em português, arquitetura do conjunto de instruções).Set Architecture
Inicialmente, com as limitações de , podíamos encontrar os processadores que manipulavamhardware
Vamos Praticar!
Faça uma pesquisa e relacione os números das interrupções (dentro do vetor de
interrupções) com os seus respectivos dispositivos de I/O de dois processadores de
famílias distintas. Reflita sobre os padrões das famílias e veja como evocar
interrupções com a utilização de API ( – emApplication Programming Interface
português, interface de programação de aplicações).
- -7
Inicialmente, com as limitações de , podíamos encontrar os processadores que manipulavamhardware
instruções de zero operando, que também eram conhecidos como “processadores a pilha”, pois todo o
processamento efetivo era realizado com operandos disponíveis em uma pilha de dados. Nesse caso, utilizavam-
se as instruções e para empilhar e para desempilhar os dados. As instruções efetivas manipulavam ospush pop
dados que se encontravam no topo da pilha, o que permitiu a não necessidade de passagem de parâmetros. Para
exemplificar isso, tomemos, como exemplo, o seguinte cálculo: A = (B + C)*D + B + C. Em uma máquina de zero
operando, teríamos a seguinte sequência de instruções:
PUSHB
PUSHC
ADD
PUSHD
MULT
PUSHB
ADD
PUSHC
POPA
Como podemos observar no código acima, as instruções para o cálculo efetivo não demandam operandos.
Apenas as instruções para a manipulação da pilha ( e ) apresentam operandos. Pode-se observar quepush pop
não há a possibilidade de reaproveitar variáveis previamente utilizadas, visto que são retiradas da pilha ao
serem manipuladas.
Posteriormente, tivemos a incorporação de um registrador especial aos processadores: o acumulador. Diante
desse fato, foi possível a criação de um ISA cujas instruções são de um operando. A manipulação do acumulador
era realizada por meio das instruções carregar) (armazenar). As operações efetivas utilizam oload ( store
acumulador tanto como fonte quanto como destino do resultado. Sendo assim, a mesma operação A = (B + C)*D
+ B + C pode ser implementada desta forma:
LOADB
ADDC
MULTD
ADDD
ADDC
STOREA
No código acima, temos, inicialmente, a carga do valor “B” no acumulador, a fim de, depois, possa ser usado na
soma com o valor “C”. A linha “ADDC” significa Acc = Acc + C. (em que “Acc” denota o acumulador).
Na década de 1980, apareceram os primeiros computadores pessoais, como os da família x86. Com essa família,
popularizou-se a utilização de bancos de registradores e de instruções de dois operandos. Nesse modelo, o
primeiro operando (à esquerda) atua tanto como fonte quanto como destino da operação. A movimentação de
dados (por exemplo, instanciação de registradores) é realizada por uma instrução do tipo MOV (mover).
Escrevendo a mesma operação A = (B + C)*D + B + C no formato de dois operandos, teremos o seguinte:
MOVReg1, B
- -8
MOVReg2, C
MOVReg3,D
ADDReg1,Reg2
MULTReg1,Reg3
MOVReg3,B
ADDReg1,Reg3
ADDReg1,Reg2
MOVA,Reg1
No trecho acima, podemos notar que os parâmetros para as operações aritméticas foram salvos nos
registradores GPR ( – em português, registradores de propósito geral), para queGeneral Purpose Registers
pudessem ser utilizados e reaproveitados oportunamente.
Por fim, nos processadores puramente RISC ( – em português, computador deReduced Instruction Set Computer
conjunto de instruções reduzidas), temos a ocorrência das instruções de três operandos. Nessas instruções,
temos a sintaxe <operação destino, fonte1, fonte2>. Assim, a expressão A = (B + C)*D + B + C poderá ser
expressa da seguinte forma:
MOVReg1, B
MOVReg2, C
MOVReg3,D
ADDReg4,Reg1,Reg2
MULTReg4,Reg4,Reg3
ADDReg4,Reg4,Reg1
ADDReg4,Reg4,Reg2
MOVA,Reg4
O mapeamento das instruções de três operandos permite um maior reaproveitamento dos valores carregados
nos registradores. Outra característica sua está no fato de que as instruções de processamento efetivo são do
tipo “registrador-registrador”. As únicas instruções do tipo “registrador-memória” são aquelas destinadas à
movimentação de dados.
Você o conhece?
A arquitetura RISC pura é implementada com instruções de três operandos. Um dos
pioneiros da arquitetura RISC e dos discos RAID é o Prof. David Patterson. Para ler um
pouco sobre ele e sobre a arquitetura RISC, recomendamos que acesse Patterson
(2019), que está disponívelno endereço eletrônico.
Acesse
http://riscvbook.com/portuguese/guia-pratico-risc-v-1.0.0.pdf
- -9
Essas considerações têm, por consequência, um menos complexo em relação à interface com ahardware
memória; e, também, permitem uma maior eficiência de seu . Esses pontos são primordiais para ospipeline
processadores RISC, sobre os quais conversaremos oportunamente.
3.2.2 Impacto dos formatos de instruções no do processadordatapath
Conversamos sobre instruções de zero, de um, de dois e de três operandos e já podemos adiantar que as
instruções mapeadas em (os seus tipos e os seus formatos) estão intimamente relacionadas ao fluxohardware
dos sinais de controle e dos dados dentro do processador. Justamente, o caminho das informações e as interfaces
entre os submódulos internos constituem o (caminho dos dados) de um processador (datapath PATTERSON,
2017).
Em outras palavras, o representa como os módulos se relacionam entre si e como as informações sãodatapath
direcionadas a eles. Para uma melhor abstração, vamos supor uma instrução de desvio do tipo “jz” ( zero –jump
desvie caso zero). Trata-se de um desvio condicionado ao valor do bit do registrador de . Vamos ver, nazero flags
figura “Parte do de um processador hipotético para a manipulação de desvios”, a parte do datapath datapath
diretamente impactada pela instrução de desvio.
Caso
Após a introdução dos computadores pessoais no mercado, os processadores de dois operandos
dominavam o cenário da informática. Nesses processadores, existiam instruções que poderiam
manipular dados tanto da memória quanto dos registradores. Tal comportamento trazia uma
ineficiência computacional e tornava mais complexo o do processador, em função de haverdatapath
múltiplos caminhos que a informação poderia tomar e, consequentemente, a necessidade de se ter
vários seletores de dados.
Pesquisas demonstraram que a implementação de processadores com instruções mais simples e com
menos alternativas de caminhos de dados tornava o processamento mais eficiente, mesmo que a
funcionalidade de uma instrução do processador de dois operandos tivesse que ser realizada, por
exemplo, por meio da execução de duas instruções em uma máquina de três operandos. Com esse
conceito, surgia, em 1982, a ideia dos processadores RISC com David Patterson e com Carlos Séquin
(PATTERSON, 2019).
- -10
Figura 3 - Parte do datapath de um processador hipotético para a manipulação de desvios
Fonte: Elaborada pelo autor, 2020.
#PraCegoVer: na figura, temos a ligação de IR com “unidade de controle”, por meio dos bits mais significativos;
e com “módulo de desvios” por meio dos bits menos significativos. Da unidade de controle, partem os fios
“OP_Branch?”, para “módulo de desvios”; “OP_ULA”, para “ULA”; e as indicações “OP_Memória” e os demais
módulos com reticências. Um fio ( ) conecta “ULA” ao “módulo de desvios”. Do PC, saem fios para umflags
somador (outra entrada vale 1 – incremento próxima instrução) e para o “módulo de desvios”. A saída do
somador se conecta à entrada de um MUX. Outra entrada do MUX (endereço de desvio) vem do “módulo de
desvios”, que gera, também, o de seleção do MUX (“desvio tomado?”). A saída do MUX é conectada ao PC.bit
Na figura “Parte do de um processador hipotético para a manipulação de desvios”, temos uma parte dedatapath
um que cobre os submódulos relativos aos desvios. O novo valor do PC pode ser proveniente de doisdatapath
caminhos (selecionados pelo MUX): proveniente do incremento do PC (quando não estiver sendo manipulada
uma instrução de desvio; ou quando o desvio não tiver que ser tomado); e proveniente do “módulo de desvios”.
A seleção decorre do valor “desvio tomado?” gerado pelo “módulo de desvios”, quando for habilitado pelo sinal “
OP_Branch?” e quando, nesse caso, o valor do zero do “ ” estiver sinalizado.bit flags
Mas qual é o motivo de a “Unidade de Controle” receber os bits mais significativos de IR; e de o “Módulo de
Desvio” receber os menos significativos? A resposta a esse questionamento está nos chamados “formatos de
instruções”. Falamos que as instruções são formadas por opcode e por operandos. Mas como representamos isso
em palavras que serão armazenadas? Vamos conversar a respeito disso, exemplificando com duas instruções
distintas (uma soma e um desvio condicional) exportadas por um processador hipotético de 16 bits e de dois
operandos.
A instrução de soma poderá ser representada, em , por “Assembly ADD operando1, operando2” – os operandos,
nesse caso, deverão ser referências a registradores. Por sua vez, a instrução de desvio poderá ser representada
por “JZ valor_deslocamento” – em que o valor de deslocamento será aquele a ser direcionado ao “Módulo de
Desvio”, para que possa realizar uma soma com o valor corrente do PC. 
Por que o PC deverá ser somado no desvio? Isso acontece para garantir deslocamentos para frente (por exemplo,
- -11
Por que o PC deverá ser somado no desvio? Isso acontece para garantir deslocamentos para frente (por exemplo,
no caso do “if...else”) e para trás (no caso dos laços de repetição). Dessa forma, para armazenar as duas
instruções ,poderemos utilizar os formatos ilustrados na figura “Sugestões de formatos a serem utilizados pelas
instruções de soma e de desvio de um processador hipotético de 16 bits”, a seguir.
Figura 4 - Sugestões de formatos a serem utilizados pelas instruções de soma e de desvio de um processador 
hipotético de 16 bits
Fonte: Elaborada pelo autor, 2020.
#PraCegoVer: na figura, temos dois vetores (“formato 1” e “formato 2”) de 16 posições numerados de 0 a 15, da
direita para a esquerda (valores 0 a 15). Em ambos os formatos, temos o campo “ ” ( 15 a 10). Noopcode bits
formato 1, temos os campos “registrador” ( 9 a 5 e 4 a 0). No formato 2, temos o campo “valor deslocamento”bits
(bits 9 a 0).
Na figura “Sugestões de formatos a serem utilizados pelas instruções de soma e de desvio de um processador
hipotético de 16 bits”, temos a sugestão de dois formatos para representar instruções em um processador
hipotético de 16 . Para utilizar esses formatos, vamos supor que a função de soma (ADD) tem o 17; ebits opcode 
que a instrução de desvio (JZ) tem o valor 45. Vamos supor, também, que a nossa programação em Assembly
contém as seguintes linhas (em que o desvio terá um deslocamento de 37 ):bytes
ADDReg11, Reg13
JZ37
Utilizando os dois formatos, teremos, então, armazenadas, estas palavras:
0100010101101101
1001010000100101
Portanto, o mapeamento das instruções é o motivo de o conteúdo do IR ter os seus bits mais significativos
direcionados à “Unidade de Controle” (que contém o opcode a ser decodificado para gerar sinais de controle) e
os bits menos significativos direcionados ao “Módulo de Desvio”. 
- -12
Para chegar às propostas dos formatos de instruções, fizemos as seguintes considerações:
• os são formados por 6 – então, teremos, em nosso processador hipotético, no máximo, 64 opcodes bits
instruções mapeadas (2 = 64);6
• o banco de registradores GPR é formado por 32 registradores – então, para referenciá-los, precisaremos 
de 5 bits para cada um (log
2
(32) = 5).
Teste seus conhecimentos
(Atividade não pontuada)
Os formatos de instruções, com os seus mapeamentos em palavras, e o se relacionam com os modos dedatapath
endereçamento? Vamos conversar a esse respeito a seguir.
3.3 Modos de endereçamento
Quando conversamos sobre o formato e sobre a representação de instruções, exemplificamos apenas com o
conteúdo dos registradores. Mas, no caso do exemplo do desvio, o valor foi mapeado diretamente na palavra de
instrução. Então, haveria outras formas de acessar valores para serem processados? De acordo com Monteiro
(2007), podemos contar com vários modos de endereçamento, dentre os quais podemos destacar os seguintes:
Você sabia?
A elaboração do é uma das etapas que precedem a real implementação dedatapath
um sistema computacional. A partir do , pode-se fazer simulações em datapath
 (usando, por exemplo, System C) ou realizar sínteses a partir de linguagenssoftwarede descrição de (HDL), como Verilog. Para saber mais sobre ,hardware datapath
acesse o texto de Francisquini (2018), disponível no seguinte endereço eletrônico.
https://medium.com/@francisquini/projetando-um-processador-simples-em-
verilog-ea1b67f36da2
•
•
Vamos Praticar!
Faça uma pesquisa sobre o Assembly de processadores da família x86 e da família
ARM. Relacione os formatos das instruções ao seu número de parâmetros. Reflita
sobre os motivos de serem diferentes.
https://medium.com/@francisquini/projetando-um-processador-simples-em-verilog-ea1b67f36da2
https://medium.com/@francisquini/projetando-um-processador-simples-em-verilog-ea1b67f36da2
- -13
imediato;
direto;
indireto;
por registrador;
indexado;
deslocamento a partir de um endereço base.
Os exemplos da soma e do desvio sobre os quais conversamos há pouco se enquadram em quais categoriais?
Vamos ver isso agora.
3.3.1 Características dos modos de endereçamento
Como mencionamos, os modos de endereçamento dizem respeito a como podemos fazer para coletar os valores
a serem manipulados. Sabemos que tais valores podem ser o conteúdo de registradores; devem ser buscados na
memória; ou, ainda, devem ser tratados como “constantes” (imediatos).
• Modo imediato
No modo imediato, o valor é passado à própria palavra carregada no registrador RI. Além do desvio
condicional, podemos citar as instruções aritméticas (soma de imediato) ou atribuições de valores aos
registradores por intermédio de uma instrução do tipo “MOV”. Pode surgir uma dúvida nesse processo:
como podemos carregar, por exemplo, uma palavra de 16 se parte dos 16 da palavra debits bits
instrução é gasta com ? Para realizar isso, geralmente os processadores têm uma instrução paraopcode
carregar a parte alta da palavra (os 8 mais significativos); e outra instrução para carregar os bitsbits
menos significativos.
• Modo direto
No modo direto, o valor contido no campo do operando faz referência a uma posição de memória. Já no
modo indireto, o conteúdo do campo da palavra de instrução faz referência a uma posição de memória
que contém, por sua vez, a referência da posição de memória do dado efetivo.
• Modo de endereçamento
No modo de endereçamento por registrador, a palavra de instrução faz referência a um registrador.
O registrador conterá, sempre, o valor a ser manipulado? Nem sempre isso acontecerá. Esse modo de
endereçamento pode ser subdividido em modo por registrador direto e em modo por registrador indireto. No
modo direto, o conteúdo do registrador já representa a informação a ser manipulada. Por sua vez, no modo
indireto, o conteúdo do registrador contém uma referência à memória cujo conteúdo engloba o valor a ser
manipulado.
•
•
•
- -14
A utilização de registradores também pode ser alvo no modo indexado. Em tal modo, o endereçamento de
memória pode ser a soma do conteúdo do registrador ao valor do índice. Sendo assim, o formato de instrução
deve conter a referência ao registrador e o valor do offset (deslocamento).
Por último, encontramos o deslocamento a partir de um endereço base. Nesse tipo de mapeamento, utilizamos
um registrador para servir como base do endereçamento (como o início de um vetor). O deslocamento dentro do
vetor pode ser realizado por meio de um registrador de índice. Em algumas instruções exportadas pelo
processador para cobrir esse tipo de mapeamento, o registrador de índice é incrementado automaticamente,
após cada utilização.
3.3.2 Vantagens e desvantagens dos modos de endereçamento
De acordo com Monteiro (2007) e com Stallings (2017), podemos resumir as vantagens e as desvantagens dos
modos de endereçamento conforme o conteúdo da tabela “Vantagens e desvantagens dos modos de
endereçamento”.
Tabela 1 - Vantagens e desvantagens dos modos de endereçamento
Fonte: Fonte: Elaborada pelo autor, baseada em Monteiro (2007) e em Stallings (2017).
#PraCegoVer: a tabela sumariza as principais vantagens e desvantagens de cada modo de endereçamento
- -15
#PraCegoVer: a tabela sumariza as principais vantagens e desvantagens de cada modo de endereçamento
apresentado no e-book.
Em função dos avanços da eletrônica e do aumento do fator de integração, consegue-se ter bancos de
registradores de maior capacidade de armazenamento. Tal aumento no banco de registradores e em
registradores auxiliares proporcionou vários pontos positivos:
melhor reaproveitamento dos dados carregados nos registradores, diminuindo o acesso à memória;
possibilidade de coletar blocos de informações (instruções e dados), de modo a municiar, de forma mais
eficiente, o pipeline;
otimizar a interface entre os submódulos do processador.
Diante desses fatos, a tendência é que os processadores implementem, em suas instruções de cálculo, apenas
operações do tipo registrador-registrador, ficando as operações registrador-memória vinculadas às operações
de transferência de dados com a memória.
3.4 Dispositivos de entrada e de saída
Um computador é constituído pelo processador, pelos módulos de memória, pelos sistemas de interconexão e
pelos dispositivos de I/O. Os dispositivos de I/O visam a, como o próprio nome diz, permitir a manipulação de
informações do “mundo exterior”, como a do mouse, a do teclado, a do HD e a do vídeo. Nesta seção, vamos
conversar sobre as características dos dispositivos de I/O.
3.4.1 Dispositivos e controladores de I/O
Todo dispositivo de I/O faz o interfaceamento com o barramento do computador por meio de módulos
controladores. Assim, temos, como exemplo, controlador de HD, controlador de vídeo e controlador de teclado. A
figura “Organização genérica de um controlador de I/O” ilustra uma organização genérica de um controlador de I
/O.
Vamos Praticar!
A partir dos modos de endereçamento, esboce formatos de palavras de instruções que
cubram os modos em um processador que manipula operações do tipo registrador-
registrador. O acesso à memória é realizado para a transferência registrador-
memória, a fim de que valores sejam ou carregados nos registradores ou salvos na
memória.
- -16
Figura 5 - Organização genérica de um controlador de I/O
Fonte: Stallings, 2017.
#PraCegoVer: na figura, temos um “controlador de I/O”. No lado esquerdo, há a “interface para barramento do
sistema” com as linhas de dados, com o endereço e com o controle. Do lado direito, há a “interface para
dispositivo externo” com os pinos “dados”, “estado” e “controle” para cada um dos dois módulos internos “lógica
de interface de dispositivo externo”. A indicação de reticências informa a possibilidade de existir mais desses
módulos. No centro, há os registradores de “dados” e de “estado e controle”, que recebem as linhas de dados e se
conectam ao módulo “lógica de E/S”. Por sua vez, “lógica de E/S” se conecta ao módulo “lógica de interface de
dispositivo externo”.
A figura “Organização genérica de um controlador de I/O” ilustra a organização genérica do controlador de I/O.
Podemos notar os pinos de interfaceamento tanto para o barramento quanto para os dispositivos de I/O. Nas
linhas de dados, trafegam os dados sob processamento e as informações sobre erros e sobre estados ( /Busy
 – em português, ocupado/pronto); e as mensagens inerentes ao mecanismo de . Já as linhas deReady handshake
controle são usadas para transmitir, por exemplo, a operação a ser realizada (leitura/escrita) e as informações
relativas à utilização do DMA ( – em português, acesso direto à memória), que veremosDirect Memory Access
adiante.
Ainda em relação à figura “Organização genérica de um controlador de I/O”, temos um módulo responsável pela
lógica de I/O, efetuando o gerenciamento dos dispositivos de I/O. Segundo Stallings (2017), podemos incluir,
como funcionalidades da lógica de I/O, o controle e a temporização (como a execução do ); a interaçãohandshake
com o processador (consequentemente, com o árbitro do barramento) e com os dispositivos de I/O; a detecção
de erros; e a buferização das informações a serem enviadas ao processador ou aos dispositivos de I/O.
Mencionamos que a interaçãodo processador com os dispositivos de I/O se faz por meio das interrupções. Mas,
na verdade, podemos distinguir a sua manipulação em três métodos: I/O programado, I/O baseado em
interrupções e DMA. Observe-os, a seguir, na figura “Fluxogramas relacionados aos métodos de manipulação dos
dispositivos de I/O: (a) E/S programada; (b) controle por interrupção; e (c) acesso direto à memória”.
- -17
Figura 6 - Fluxogramas relacionados aos métodos de manipulação dos dispositivos de I/O: (a) E/S programada; 
(b) controle por interrupção; e (c) acesso direto à memória
Fonte: Stallings, 2017.
: #PraCegoVer na figura, temos I/O programado (a) e I/O controlado por interrupção (b). Ambos apresentam as
seguintes etapas: “Emite comando de leitura ao módulo de E/S” (CPU → E/S); “Lê registrador de estado do
módulo de E/S” (E/S → CPU); “Lê palavra do módulo de E/S” (E/S → CPU); “Grava palavra na memória” (CPU →
Memória); “Terminou?”. Além das etapas, temos os testes condicionais “Verifica Estado” e “Terminou?”. Em
relação ao “Verifica Estado”, em (a), caso a resposta seja “não pronto”, o fluxo volta ao estado anterior – ou seja,
“Lê registrador de estado do módulo de E/S”. Caso seja “pronto”, passa para o estado seguinte – ou seja, “Lê
palavra do módulo de E/S”. A situação “não pronto” não existe em (b). Tanto em (a) quanto em (b), o “Verifica
Estado” gera uma condição de erro. Quanto ao teste condicional “Terminou?”, caso o seu resultado seja “não”,
então o fluxo volta para a primeira etapa (“Emite comando de leitura ao módulo de E/S”); caso seja “sim”, o fluxo
é finalizado, indicando “próxima instrução”. Esse comportamento se aplica tanto a (a) quanto a (b). Já no item
(c), “Acesso Direto à Memória”, temos apenas duas etapas desconectadas: “Emite comando de leitura ao módulo
de E/S” (CPU → DMA) e “Lê registrador de estado do módulo de E/S” (DMA → CPU). A primeira etapa gera “faz
algo mais”, e a segunda etapa recebe “Interrupção”. Ao término da segunda etapa, há um indicativo para
“próxima instrução”.
Observando a figura “Fluxogramas relacionados aos métodos de manipulação dos dispositivos de I/O: (a) E/S
programada; (b) controle por interrupção; e (c) acesso direto à memória”, você pode estar ter tido a seguinte
dúvida: os métodos de I/O programado e controlado por interrupção são iguais? Se prestarmos atenção, vamos
notar uma leve diferença entre eles: o teste “Verifica estado”. No método programado, a verificação deve ser
realizada na própria programação, por meio de alguma condição como esta:
- -18
do
{
estado = LeituraRegistradorDeEstado();
} while (estado == OCUPADO)
No código acima, temos, como desvantagem, a presença da “espera ocupada” – laço de repetição usado apenas
para teste de estado, sem fazer processamento efetivo. Já no método controlado por interrupção, quando for
necessária a utilização do dispositivo de I/O, gera-se um sinal de interrupção. Enquanto a interrupção não for
tratada, o processo solicitante é bloqueado. Por consequência, não consome recursos da CPU, voltando a ser
executado quando o recurso tornar-se disponível.
No DMA, a transferência das informações entre o dispositivo de I/O e a memória ocorre por conta do
controlador de DMA. O processador principal efetuará apenas a configuração do controlador de DMA, passando-
lhe informações sobre os endereçamentos (da memória e do dispositivo de I/O) e sobre a quantidade de abytes
ser transferidos. Nesse método, utilizam-se interrupções em dois momentos: para a configuração do controlador
de DMA e para a sinalização, por parte do controlador de DMA, do término da transferência das informações.
Teste seus conhecimentos
(Atividade não pontuada)
Em algumas situações, há a necessidade de realizar leituras das estruturas de I/O (registradores de estado ou o 
 de informações). Para proceder com o acesso às estruturas, temos dois modos de mapeamento dosbuffer
dispositivos de I/O. Em algumas arquiteturas, como x86, os dispositivos de I/O são mapeados como portas. Para
isso, há a necessidade de utilizar instruções específicas. Em C/C++, podemos usar as funções “inport” e “outport
” (ou suas derivadas). Em outras arquiteturas, como as derivadas do Motorola 68000, os dispositivos de I/O são
mapeados como endereços de memória. Sendo assim, basta criarmos variáveis que apontem para os endereços
específicos.
3.4.2 Dispositivos ópticos
Os dispositivos ópticos, surgidos na década de 1980, compreendem as seguintes mídias: CD, CD-ROM, CD-R, CD-
RW, DVD, DVD-R, DVD-RW e DVD (STALLINGS, 2017). Todas se baseiam na reflexão de um laser sobreBlu-ray
uma superfície lisa ( – em português, pistas) e sobre uma superfície rugosa ( – em português, sulcos). Alands pits
diferença da intensidade das reflexões entre as (reflexões de maior intensidade) e os (reflexões delands pits
menor intensidade) representa os níveis 0 e 1.
As e os se encontram em trilhas concêntricas, apresentando densidades distintas de e velocidadelands pits bits
angular constante. As operações de leitura e de gravação são efetuadas por intermédio de um cabeçote, que
conta com a presença de um emissor e de um foto-sensor.
- -19
Outro tipo de dispositivos importante é o representado pelos dispositivos magnéticos, que veremos a seguir.
3.4.3 Dispositivos magnéticos
Os dispositivos magnéticos, assim como os ópticos, fazem parte da memória secundária. Os magnéticos –
representados, por exemplo, pelos HDs – podem ser utilizados para armazenar arquivos do usuário e do sistema
operacional; e, também, para integrar-se a um mecanismo de memória virtual.
Como os ópticos, os magnéticos têm cabeçotes de leitura e de escrita que se deslocam sobre as trilhas de
informações. Além das informações acerca da estruturação dos blocos, da quantidade de cabeçotes e dos modos
de formatação, vale mencionar algumas métricas e nomenclaturas relacionadas aos discos magnéticos.
Trilhas
Discos concêntricos distribuídos ao longo da superfície do HD.
Setor
Os setores representam “fatias” sobre a superfície.
Cilindros
Em um HD com várias superfícies, um cilindro é representado por um conjunto de trilhas com a mesma distância
em relação ao centro do HD.
Velocidade de rotação
Quantidade de rotação em um segundo.
Tempo de busca
Tempo para o posicionamento do cabeçote sobre a trilha.
Atraso rotacional
Tempo para que a informação seja posicionada sob o cabeçote.
Tempo de transferência
Você quer ler?
Para saber mais sobre densidades de , sobre velocidade angular constante, sobrebit
formato dos blocos e sobre outras informações dos meios ópticos, você poderá
acessar Stallings (2017), que está disponível na Biblioteca Virtual Universitária.
- -20
Relacionado com a velocidade de rotação, de acordo com a fórmula T = b / (r*N), (b = quantidade de bytes;
r=velocidade de rotação; N=quantidade de bytes na trilha).
Atualmente, os discos magnéticos estão sendo substituídos por unidades SSD (Solid State Drive – em português,
unidade de estado sólido), substituindo o meio magnético por memórias flash.
Os discos magnéticos podem ser utilizados segundo a estruturação RAID, que estudaremos agora.
3.4.4 RAID
Na informática, sempre houve a preocupação com dois fatores: eficiência e segurança. A existência dos discos
RAID ( – em português, redundante de discos independentes) éRedundant Array of Independent Disks array
embasada nesses dois pilares.
Segundo Stallings (2017), apesar de o RAID ser composto por vários discos físicos, é mapeado, pelo sistema
operacional, como uma única unidade lógica. Em tais discos, as informações são distribuídas ( ) ou destriping
forma a permitir acessos paralelos (cada unidade detém parte da informação) ou de forma a haver redundância
de informações.
Os acessos paralelos garantem uma maior eficiência nas operações de leitura e de escrita, enquanto a
redundância garante a confiabilidade das informações. 
Você quer ler?
Para ler sobre formas de funcionamento, sobre estruturação dos blocos, sobre modos
de formatação e sobre métricas associadas aos dispositivosmagnéticos, leia Stallings
(2017), que está disponível na Biblioteca Virtual Universitária.
Você quer ver?
Os discos RAID podem ser configurados de acordo com níveis de eficiência e de
confiabilidade. Para conhecer um pouco do assunto, assista ao vídeo “Afinal o que é
RAID (HDs)”, disponível no seguinte endereço eletrônico.
Acesse
https://www.youtube.com/watch?v=4Wm0rvOsoRA.
- -21
Assim como os HDs estão sendo substituídos por unidades SSD, é possível que tenhamos RAIDs implementados
com SSD no lugar de discos magnéticos.
Conclusão
Conversamos sobre as interrupções, sobre os formatos de instrução, sobre os modos de endereçamento e sobre
os dispositivos de I/O. Dentro desse escopo, relacionamos as interrupções aos dispositivos de I/O, por se tratar
de uma das formas de interface entre o processador e o I/O. Relacionamos, também, os formatos de instrução
aos modos de endereçamento, citando o impacto sobre o do processador.datapath
Com esses pontos abordados neste nosso terceiro encontro, esperamos ter contribuído para as suas reflexões
sobre o funcionamento do computador e para a implementação de sistemas de software e de hardware.
Nesta unidade, você teve a oportunidade de:
• identificar mecanismos de interação processador-dispositivos de I/O;
• associar o impacto do conjunto de instruções e dos modos de endereçamento ao projeto de 
processadores;
• analisar e descrever o funcionamento dos controladores de I/O;
• identificar e analisar os formatos de instrução das famílias dos processadores.
Referências
FRANCISQUINI, R. Projetando um processador simples em Verilog. 
, ] 22 jun. 2018. Disponível em Medium [S. l. https://medium.com
/@francisquini/projetando-um-processador-simples-em-verilog-
. Acesso em: 17 nov. 2020.ea1b67f36da2
MONTEIRO, M. A. . 5.Introdução à organização de computadores
ed. Rio de Janeiro: LTC, 2007.
PATTERSON, D. A.; HENNESSY, J. L. Organização e projeto de
Vamos Praticar!
Faça uma pesquisa sobre como programar os dispositivos de I/O. Tente achar
exemplos de programas em que o dispositivo de I/O é programado e controlado por
interrupção e por DMA.
•
•
•
•
https://medium.com/@francisquini/projetando-um-processador-simples-em-verilog-ea1b67f36da2
https://medium.com/@francisquini/projetando-um-processador-simples-em-verilog-ea1b67f36da2
https://medium.com/@francisquini/projetando-um-processador-simples-em-verilog-ea1b67f36da2
- -22
PATTERSON, D. A.; HENNESSY, J. L. Organização e projeto de
: a interface hardware/software. 5. ed. Rio de Janeiro:computadores 
Elsevier, 2017.
PATTERSON, D. A.; WATERMAN, A. : atlas deGuia prático RISC-V
uma arquitetura aberta Berkeley, California: Strawberry Canyon LLC, 2019. Disponível em: . http://riscvbook.com
. Acesso em 17 nov. 2020./portuguese/guia-pratico-risc-v-1.0.0.pdf
AFINAL o que é RAID (HDs). [ ], 2018. 1 vídeo (26m23s). Publicado pelo canal Simplificando TI.S. l.: s. n.
Disponível em: . Acesso em 17 nov. 2020.https://www.youtube.com/watch?v=4Wm0rvOsoRA
STALLINGS, W. . 10. ed. São Paulo: Pearson, 2017.Arquitetura e organização de computadores
http://riscvbook.com/portuguese/guia-pratico-risc-v-1.0.0.pdf
http://riscvbook.com/portuguese/guia-pratico-risc-v-1.0.0.pdf
https://www.youtube.com/watch?v=4Wm0rvOsoRA
	Introdução
	3.1 Tratamento de interrupções
	3.1.1 Interrupções e o ciclo de interrupções
	3.1.2 Tipos de interrupções
	Vamos Praticar!
	3.2 Formatos de instruções
	3.2.1 Instruções de zero, de um, de dois e de três operandos
	Você o conhece?
	3.2.2 Impacto dos formatos de instruções no datapath do processador
	Caso
	Você sabia?
	Teste seus conhecimentos
	Vamos Praticar!
	3.3 Modos de endereçamento
	3.3.1 Características dos modos de endereçamento
	Modo imediato
	Modo direto
	Modo de endereçamento
	3.3.2 Vantagens e desvantagens dos modos de endereçamento
	Vamos Praticar!
	3.4 Dispositivos de entrada e de saída
	3.4.1 Dispositivos e controladores de I/O
	Teste seus conhecimentos
	3.4.2 Dispositivos ópticos
	Você quer ler?
	3.4.3 Dispositivos magnéticos
	Você quer ler?
	3.4.4 RAID
	Você quer ver?
	Vamos Praticar!
	Conclusão
	Referências

Outros materiais