Академический Документы
Профессиональный Документы
Культура Документы
doc - 08/03/07
APOSTILA DE ARQUITETURA DE
COMPUTADORES
2007
ArquiteturaComputadores.doc - 08/03/07 – página 1
INTRODUÇÃO – CONCEITOS BÁSICOS
Módulos Unidade
Módulos
de Central de
de Saída
Entrada Processamento
Memória
Principal
Memória
Secundária
instrução
endereço conteúdo comentário
rótulo mnemônico operando
0 0
ENT PORTA=>AC 0 lê o primeiro número (A)
1 0
2 5
COP AC=>MEM A guarda o primeiro número (A) na memória (endereço 100)
3 100
4 3 salva o primeiro número (A) num registrador auxiliar (pois
COP AC=>AUX 0
5 0 o acumulador vai ser perdido)
6 0
ENT PORTA=>AC 0 lê o segundo número (B)
7 0
8 5
COP AC=>MEM B guarda o segundo número (B) na memória (endereço 101)
9 101
10 10 soma o segundo número (B) com o primeiro número (A,
SOM AC+AUX 0
11 0 armazenado num registrador auxiliar)
12 1
SAI AC=>PORTA 2 imprime a soma
13 2
14 23
PÁRA 0 pára o programa (A + B)
15 0
... ...
... ... ...
... ...
100 ???
??? ??? números lidos (A e B)
101 ???
2) Carregar dois números previamente armazenados na memória (nas posições A e B, respectivamente 100 e
101), e mostrar no vídeo o maior deles.
instrução
endereço conteúdo comentário
rótulo mnemônico operando
0 4
COP MEM=>AC A pega o primeiro número (A) na memória (endereço 100)
1 100
2 3
COP AC=>AUX 1 salva o primeiro número (A) no auxiliar 1
3 1
4 4
COP MEM=>AC B pega o segundo número (B) na memória (endereço 101)
5 101
6 3
COP AC=>AUX 2 salva o segundo número (B) no auxiliar 2
7 2
8 11 subtrai o primeiro número (A) do segundo (B)
SUB AC−AUX=>AC 1
9 1 (isto é, o segundo menos o primeiro (B-A))
10 22
VAI SE P=1 BMAIOR desvia se o segundo número (B) é maior
11 18
12 2
AMAIOR: COP AUX=>AC 1 recupera o primeiro número (A)
13 1
14 1
SAI AC=>PORTA 1 apresenta o primeiro número (A) no vídeo
15 1
16 23
PÁRA 0 pára o programa
17 0
18 2
BMAIOR: COP AUX=>AC 2 recupera o segundo número (B)
19 2
20 1
SAI AC=>PORTA 1 apresenta o segundo número (B) no vídeo
21 1
22 23
PÁRA 0 pára o programa
23 0
... ...
... ... ...
... ...
100 ???
??? ??? números a serem comparados (A e B)
101 ???
ArquiteturaComputadores.doc - 08/03/07 – página 9
CICLO DE INSTRUÇÃO
ciclo de ciclo de
início fim
busca execução
1 3
−etapas
−1: cálculo do endereço do código da instrução
−2: leitura do código da instrução, na memória
−3: decodificação da instrução
−etapas realizadas obrigatoriamente, para todas as instruções
−“ciclo” de execução: execução da instrução propriamente dita
5 8
4 6 7
−etapas
−4: cálculo dos endereços dos operandos
−5: leitura dos valores dos operandos, na memória (ou em registradores)
−6: execução da operação, com os valores dos operandos
−7: cálculo dos endereços dos resultados da operação
−8: escrita dos valores dos resultados, na memória (ou em registradores)
−etapas que, para algumas instruções, podem não ser realizadas, e, para outras, podem ser realizadas diversas
vezes
ArquiteturaComputadores.doc - 08/03/07 – página 10
−interrupção
−certas operações executadas pelo computador (como, por exemplo, entradas e saídas) consomem um tempo
relativamente grande, quando comparado ao tempo do ciclo de instrução
−ao disparar uma operação de entrada/saída, o processador pode permanecer executando instruções que
verificam se a operação já foi concluída
−quando isto ocorre, o processador executa um tratamento de fim de operação de entrada/saída, e retoma a
execução normal do programa
−essa estratégia é conhecida como “espera por sinalização” (ou “wait for flag”)
A 1 2 3 B 1 2 3 C
tempo
A, B, C: trechos do programa sendo executado
1: disparo da operação de entrada/saída
2: espera pelo fim da operação de entrada/saída
3: tratamento do fim da operação de entrada/saída
−em outra possível estratégia, após disparar uma operação de entrada/saída, o operador prossegue com a
execução normal do programa
−quando a operação de entrada/saída é concluída, o dispositivo por ela responsável avisa o processador, que
interrompe a execução do programa, para executar o tratamento de fim de operação de entrada/saída
−em seguida, o processador retoma a execução do programa, a partir do ponto em que se deu a interrupção
A 1 B1 3 B2 1 C1 3 C2
tempo
2 2
B1, B2: trechos do programa que compõem o trecho B
C1, C2: trechos do programa que compõem o trecho C
−com a estratégia da interrupção, o processador não perde tempo esperando o fim de uma operação de
entrada/saída
−interrupções podem ser geradas, também, por outros motivos
−situações anormais detectadas durante a execução do programa, como tentativa de divisão por zero, de
execução de instrução inválida, ou de acesso a área de memória proibida
−falhas de “hardware” detectadas, como falha na memória ou na alimentação
−fim de uma temporização disparada pelo programa
−para permitir a ocorrência de uma interrupção, o ciclo de instrução ganha um 3o. passo
−“ciclo” de interrupção: atendimento a um pedido de interrupção, caso este tenha ocorrido e
esteja habilitado
9 10
−etapas
−9: verificação da existência de pedido de interrupção
−10: atendimento do pedido de interrupção (desvio para a rotina de seu tratamento)
−etapas que podem ser inibidas ou habilitadas pelo programa
ArquiteturaComputadores.doc - 08/03/07 – página 11
−esquema geral do ciclo de instrução
2
1
ciclo de
busca
início
3
4
5
execução
ciclo de
fim
6
7
8
interrupção
9
ciclo de
10
ArquiteturaComputadores.doc - 08/03/07 – página 12
CONEXÃO ENTRE OS COMPONENTES
−os componentes do sistema computacional se comunicam entre si, trocando informações que
podem ser classificadas em
−dados
−endereços
−sinais de controle
memória memória
"cache" principal
interface de
expansão
regs
"cache"
principal
secundária (disco)
secundária (fita)
ArquiteturaComputadores.doc - 08/03/07 – página 17
MEMÓRIA PRINCIPAL
−armazena as instruções do programa sendo executado pela UCP, e os dados por ele sendo
manipulados (característica da arquitetura de von Neumann)
−nos primeiros computadores, empregou a tecnologia de matrizes de anéis com núcleos de
ferrite (ferromagnético), hoje abandonada
−os computadores atuais utilizam pastilhas de semicondutor (silício)
−produzida com diferentes tecnologias, e, por isso, apresenta diferentes características, para
diferentes aplicações
−célula representativa de 1 bit
controle controle
escrita leitura
sinal de seleção: ativa ou desativa a célula
sinal de controle: se a célula está ativa, indica se a operação é de leitura ou de escrita
ArquiteturaComputadores.doc - 08/03/07 – página 18
−a cada instrução executada, a UCP faz, pelo menos, um acesso à memória, para a leitura do
código da instrução, durante o ciclo de busca (outros acessos, de leitura e/ou de escrita, podem,
também, ser feitos durante o ciclo de execução)
−ao longo dos anos, com os avanços da tecnologia, o desempenho da UCP aumentou num ritmo
acelerado, que não foi acompanhado pelo aumento do desempenho dos dispositivos de memória
principal
−como conseqüência, a memória principal (antes do advento da memória “cache”) passou a ser
uma espécie de “gargalo” dos sistemas computacionais, obrigando a UCP a diminuir um pouco seu
ritmo (através da inclusão de estados de espera, ou “wait states”), para que as operações de
leitura e de escrita na memória pudessem ser completadas
−para contornar esse problema, foi criado um novo nível hierárquico de memória, entre a
memória da UCP (registradores) e a memória principal convencional
−o nome “cache” vem do Francês “caché”, que significa “escondido”, no sentido de que a
introdução dessa memória seja “transparente” ao usuário do sistema computacional (isto é, que
ele não precisa alterar seus procedimentos habituais)
−comparada com a memória principal, a memória “cache”
−é mais rápida (construída com tecnologia mais moderna)
−é mais cara (maior custo por bit)
−é menor (tem menor capacidade de armazenamento)
−procedimento de acesso à memória, pela UCP
−verifica, inicialmente, se a informação desejada já está na memória “cache”
−se estiver, faz o acesso
−se não estiver, faz o acesso à memória principal
−se o acesso for uma leitura, copia o dado lido na memória “cache”
−essa estratégia se baseia nos princípios da localidade
−princípio da localidade temporal: se uma palavra da memória é acessada por um programa, é bastante provável
que essa mesma palavra volte a ser acessada pelo programa num curto intervalo de tempo
−princípio da localidade espacial: se uma palavra da memória é acessada por um programa, é bastante provável
que outras palavras na vizinhança dessa palavra sejam acessadas pelo programa
−no projeto da memória “cache”, devem ser definidos
−o tamanho da memória “cache”
−a função de mapeamento
−o algoritmo de substituição
−a política de escrita na memória
−tamanho do bloco transferido para a memória “cache”
−o número de níveis de “cache”
−essas definições devem procurar maximizar a probabilidade de se encontrar uma informação na
memória “cache”, minimizando a necessidade de acessos à memória principal
−com isso, consegue-se um tempo de acesso ao sistema de memória (“cache” + principal) próximo
ao tempo de acesso da memória “cache”
−tamanho da memória “cache”
−deve ser grande o suficiente para que a necessidade de acessos à memória principal não seja freqüente
−deve ser pequena o suficiente para que não apresente custo elevado, e para que se mantenha com baixo tempo
de resposta
−entre outros fatores, o tamanho ideal depende do tipo de programas sendo executados
−estudos mostram que a memória “cache” deve ter entre 1Kbyte e 512Kbytes (depende do tamanho da memória
principal)
ArquiteturaComputadores.doc - 08/03/07 – página 22
−função de mapeamento
−como a área da memória “cache” é menor do que a da memória principal, é preciso que se defina a posição em
que um bloco de dados deve ser armazenado na memória “cache”, em função do seu endereço na memória
principal
−mapeamento direto: cada bloco da memória principal tem uma única posição na memória “cache” para ser
armazenado
−mapeamento associativo: cada bloco da memória principal pode ser armazenado em qualquer posição da
memória “cache”
−mapeamento associativo por conjuntos: cada bloco da memória principal tem um conjunto de posições na
memória “cache” para ser armazenado
−para o bloco de dados poder ser localizado na memória “cache”, além das informações obtidas na memória
principal, é armazenada, na memória “cache”, a informação que permite a identificação do endereço original
do bloco na memória principal
−algoritmo de substituição
−como a memória “cache” é menor do que a memória principal, o armazenamento de um bloco no “cache”
certamente implica na remoção de outro bloco previamente armazenado
−a escolha do bloco a ser substituído, no caso do mapeamento associativo (em que há mais de uma opção) pode
obedecer ao critério
−do bloco que não é usado há mais tempo (em geral, o mais eficiente, devido ao princípio da localidade
temporal)
−do bloco que foi armazenado há mais tempo
−do bloco que foi menos referenciado
−aleatório (mais simples, e de desempenho levemente inferior ao dos demais)
−política de escrita (ou de atualização) na memória
−quando um dado armazenado na memória “cache” é alterado por um programa, deve-se adotar uma política que
defina como essa alteração deve ser realizada na memória principal
−a escolha dessa política deve considerar se a memória principal, além do “cache”, pode também ser acessada
diretamente por módulo de entrada/saída, ou por outra UCP
−cada possível política apresenta vantagens e desvantagens
−escrita em ambas (“write through”): toda a escrita na memória “cache” causa a respectiva atualização da
memória principal
−vantagem: a memória principal está sempre válida
−desvantagem: há um número excessivo de acessos à memória principal (muitos deles, desnecessários), o que diminui o
desempenho do “cache”
−escrita somente no retorno (“write back”): a memória principal só é atualizada quando o respectivo bloco
na memória “cache” é substituído
−vantagem: minimiza os acessos à memória principal
−desvantagem: a memória principal fica temporariamente desatualizada; um eventual acesso de outro dispositivo pode
acarretar um erro
−sistemas com uma única memória principal compartilhada por diversos processadores, cada um deles possuindo
sua própria memória “cache”, exigem estratégias ainda mais complexas
−tamanho do bloco transferido para a memória “cache”
−bloco muito pequeno não traz todos os vizinhos da posição desejada
−bloco muito grande traz vizinhos muito distantes da posição desejada
−estudos mostram que o bloco deve ter entre 2 e 8 palavras
−número de níveis de “cache”
−o conceito de “cache” pode ser estendido para diversos níveis hierárquicos de memória
−atualmente, alguns sistemas empregam 2 níveis de “cache” (chamados de L1 e L2), dos quais o superior é
implementado na própria pastilha do processador (“cache” interno)
−estudos mostram que a melhoria do desempenho é pequena para mais de 2 níveis de “cache”
−pode-se, também, implementar uma área de “cache” para dados separada da área de “cache” para instruções de
programa
ArquiteturaComputadores.doc - 08/03/07 – página 23
MEMÓRIA SECUNDÁRIA
−outras denominações
−memória de massa, pois armazena grandes quantidades de informações
−memória externa, pois se localiza fora da UCP
−acesso feito através de módulos de entrada e saída
⇒ pode, também, ser considerada entrada/saída
−armazena programas e dados que não necessariamente estejam sendo utilizados correntemente
pela UCP
−comparação com a memória principal
−maior capacidade
−menor velocidade
−menor custo por byte
−principais dispositivos
−disco magnético (rígido ou flexível)
−disco óptico
−fita magnética
−fita e cartões de papel, perfurados (não mais utilizados)
−disco magnético
−prato de metal ou plástico, recoberto por material magnetizável
−mantido em rotação em torno de seu eixo central por um acionador de disco (“disk driver”)
−leitura e escrita de dados feita por uma bobina condutora chamada “cabeçote”
−os dados são gravados em anéis concêntricos, denominados trilhas (tipicamente, de 500 a 2.000 trilhas por
disco)
−cada trilha tem a mesma largura da cabeça
−trilhas adjacentes são separadas por espaços vazios (“gaps”)
−a unidade de transferência é o bloco (tipicamente, composto por algumas centenas de bytes)
−cada bloco ocupa um setor de uma trilha (tipicamente, há entre 10 e 100 setores por trilha)
−setores adjacentes de uma mesma trilha também são separados por espaços vazios (“gaps”) intersetoriais
−trilhas mais internas apresentam maiores densidades de gravação, para possibilitar a manutenção da velocidade
de rotação constante (independentemente da trilha sendo acessada)
−características dos discos
−mobilidade do cabeçote
−cabeçotes fixos (um para cada trilha)
−cabeçote móvel (um cabeçote para cada face, que se move na direção radial)
−portabilidade
−disco não removível
−disco removível
−número de faces de gravação
−face simples
−face dupla
−número de pratos
−prato único
−pratos múltiplos superpostos verticalmente
−neste caso, o conjunto das trilhas na mesma vertical (uma em cada face de cada prato) forma um cilindro
−distanciamento do cabeçote
−em contato com o disco (discos flexíveis)
−distância fixa
−distância aerodinâmica, variável (tecnologia Winchester, para discos rígidos)
−flexibilidade
−rígido (“hard”)
−flexível (“floppy”)
ArquiteturaComputadores.doc - 08/03/07 – página 24
−parâmetros de medida de desempenho
−três componentes que, somados, definem o tempo de acesso, isto é, o tempo decorrido entre a emissão
de um comando de leitura ou escrita e a efetiva execução do comando
−tempo de busca (“seek time”)
−tempo gasto para a movimentação radial do cabeçote, até a trilha desejada
−varia (não linearmente) com o número de trilhas a serem atravessadas
−geralmente, maior componente do tempo de acesso, nos discos de cabeçote móvel (tipicamente, de 5ms a 300ms)
−tempo de busca = tempo de partida do cabeçote +
número de trilhas “atravessadas” * tempo para “atravessar” uma trilha
−= 0, para os discos de cabeçotes fixos
−tempo de latência, ou atraso rotacional (“rotational delay”)
−tempo decorrido entre a chegada do cabeçote à trilha desejada e a passagem, sob o cabeçote, do primeiro setor (bloco)
tempo de uma revolução do disco
− tempo médio de latência =
2
−em média, é dado pela metade do tempo de 1 revolução do disco (isto é, 8,3ms, para uma velocidade típica de 3.600rpm)
−tempo de transferência (“transfer time”)
−tempo decorrido para o cabeçote percorrer o(s) setor(es) (bloco(s)) desejado(s)
−depende do número de bytes a serem acessados, do número de bytes por trilha e da velocidade rotacional do disco
número de bytes a serem acessados
− tempo de transferência =
número de bytes por trilha * velocidade rotacional
−tipicamente, inferior a 1ms, para o acesso a 1 bloco
−tecnologia Winchester, para discos rígidos
−desenvolvida pela IBM, no início dos anos 80
−tomou o nome de um modelo popular de fuzil
−um único dispositivo, selado, composto por disco, cabeçote e acionador
−distância aerodinâmica, variável, entre cabeçote e disco
−viabilizou discos com maior capacidade (superior a 1Gbyte), graças à maior densidade de gravação, e ao
menor tempo de acesso
−tornou-se, popularmente, um sinônimo para disco rígido
−disco óptico (“CD-ROM – compact disk – read only memory”)
−prato de resina (policarbonato), revestido com uma superfície de alumínio, de alta reflexão
−pequenas imperfeições provocam alterações detectáveis na reflexão de raios laser emitidos pelo acionador
−originário do disco compacto utilizado para armazenar informações digitalizadas de áudio
−apenas para operações de leitura (vem gravado de fábrica)
−dados gravados em blocos (setores) de uma trilha única, espiralada
−ao contrário dos discos magnéticos, nos discos ópticos a densidade de gravação é, em geral, igual em todas as
trilhas (logo, as trilhas mais internas têm menos blocos), o que obriga a manutenção da velocidade linear
constante (em conseqüência, a velocidade rotacional é maior para o acesso às trilhas mais internas)
−comparação com o disco magnético rígido
−vantagens
−maior robustez
−maior portabilidade (removível)
−menor custo
−facilidade de produção em massa
−desvantagens
−baixa velocidade
−impossibilidade da operação de escrita
−disco óptico gravável (“escrita única, leitura múltipla”) (“WORM – write-once, read many”)
−compatível com o acionador de CD-ROM convencional
−adequado para o armazenamento de documentos e arquivos
−disco óptico apagável
−pode ser gravado diversas vezes
−em geral, exige equipamentos de maior qualidade
−vantagens sobre os discos magnéticos
−maior portabilidade
−maior confiabilidade
ArquiteturaComputadores.doc - 08/03/07 – página 25
−disco de vídeo digital (“DVD - digital video disk”)
−adaptação do DVD utilizado para gravação de imagens
−capacidade extremente alta
−disco magneto-óptico
−gravação magnética, com o auxílio de raios laser
−leitura óptica
−vantagens sobre o disco magnético convencional
−maior densidade de gravação
−maior durabilidade
−menor custo por byte
−fita magnética
−mais antigo dispositivo de memória secundária
−mesma mídia do disco magnético
−leitura e escrita feitas por uma cabeça, fixa
−os dados são gravados ao longo de trilhas paralelas, longitudinais
−a unidade de transferência é o bloco, ou registro
−blocos adjacentes de uma mesma trilha são separados por espaços vazios inter-registros
−acesso seqüencial, isto é, necessário o acesso a todos os registros existentes entre o registro correntemente
posicionado sob a cabeça, e o registro desejado
−baixo custo, baixa velocidade
−ocupa a posição inferior, na organização hierárquica de memórias
ArquiteturaComputadores.doc - 08/03/07 – página 26
REDUNDÂNCIA NA MEMÓRIA SECUNDÁRIA (“RAID”)
−"ou" ("OR") - resultado é verdadeiro se e somente se pelo menos um dos operandos é verdadeiro
A B X = A OR B = A ∨ B = A + B
0 0 0
0 1 1
1 0 1
1 1 1
−"ou exclusivo" ("XOR") - resultado é verdadeiro se e somente se um número ímpar de operandos é verdadeiro
A B X = A XOR B = A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0
−numérico
−usado para variáveis que exprimem quantidades
−operações numéricas usualmente executadas pela unidade aritmética e lógica
−soma
−subtração
−incremento de 1
−decremento de 1
−multiplicação (menos usual)
−divisão (menos usual)
−representação de dados numéricos
−seqüência de dígitos binários, ou bits (0 ou 1)
⇒ uso da base 2
−representação em ponto fixo, para números inteiros
−sinal e magnitude
−complemento a 2
−representação em ponto flutuante, para números fracionários
−notação científica (mantissa e exponente)
−notação científica normalizada
−representação em código binário decimal (BCD - "binary coded decimal"), para aplicações comerciais
ArquiteturaComputadores.doc - 08/03/07 – página 35
−representação em sinal e magnitude, com n bits
−1 bit de sinal
−0, para número positivo
−1, para número negativo
−n-1 bits de magnitude
−representa números inteiros, de 0 a 2 n-1-1
−faixa de representação: de -(2n-1-1) a +(2 n-1-1)
n = 8 ⇒ de -127 a +127
−desvantagem: duas representações diferentes para o número 0
1000...0 e 0000...0
−aritmética
−soma
−sinais iguais
−soma as magnitudes
−mantém o sinal
−sinais diferentes
−subtrai a magnitude menor da magnitude maior
−mantém o sinal da magnitude maior
−subtração
−inverte o sinal do subtraendo
−executa o algoritmo da soma
−detecção de "estouro" ("overflow")
−ocorrência de "vai-um" no bit de magnitude mais à esquerda
−representação em complemento a 2, com n bits
−número positivo
−representação igual a sinal e magnitude
−número negativo
−invertem-se todos os bits na representação positiva do número, e soma-se 1 ao resultado
−o bit mais à esquerda é o chamado bit de sinal, pois indica o sinal do número
−0, para número positivo
−1, para número negativo
−vantagens:
−uma única representação para o número 0
−exige um único circuito apenas, para operações de soma e subtração
−faixa de representação: de -2 n-1 a +(2 n-1-1)
n = 8 ⇒ de -128 a +127
−aritmética
−soma
−soma, normalmente (se uma parcela for negativa, ela já deve estar representada em complemento a 2)
−subtração
−complementa a 2 o subtraendo
−executa o algoritmo da soma
−detecção de "estouro" (ou “transbordo”) ("overflow")
−ocorrência de apenas um "vai-um" nos 2 bits mais à esquerda (ou para o bit de sinal, ou para fora, mas não ambos); ou
−sinal do resultado diferente dos sinais das parcelas, quando estes são iguais (parcelas com sinais diferentes nunca geram
transbordo)
−representação em notação científica
−N = ±F x B±E, onde
−N - número a ser representado
−± - sinal do número
−F - mantissa, ou parte fracionária do número
−B - base de exponenciação
−±E - expoente
−há diversos pares de valores para a mantissa F e o expoente ±E que representam um mesmo número, mantida
uma base B
ArquiteturaComputadores.doc - 08/03/07 – página 36
−representação em notação científica normalizada
−mantissa fracionária (menor que 1)
−primeiro algarismo da mantissa, após a vírgula, diferente de zero
−há um único par de valores para a mantissa F e o expoente E, mantida a base B (=2)
−formato típico: 32 bits
−1 bit para o sinal do número
−1 bit para o sinal do expoente
−6 bits para a magnitude do expoente
−24 bits para a mantissa
−conversão de um valor decimal para a representação em notação científica normalizada
−converte o número, de decimal (base 10) para binário (base 2)
−desloca a vírgula, até que ela fique à esquerda do dígito mais significativo (o primeiro "1"), obtendo-se a
mantissa
−o número de casas deslocadas indica a magnitude do expoente
−a direção do deslocamento indica o sinal do expoente (à esquerda indica expoente positivo; à direita
indica expoente negativo)
−aritmética
−soma e subtração
−iguala os dois expoentes, em geral, pelo maior (isto é, a vírgula da mantissa de menor expoente é deslocada, à direita, tantas
quantas forma as casas necessárias para os expoentes ficarem iguais)
−soma ou subtrai as mantissas (pelas regras da notação em ponto fixo), e mantém o expoente (agora, único)
−multiplicação e divisão
−o sinal do resultado é positivo (bit de sinal = 0), se os operandos têm sinais iguais; ou negativo (bit de sinal = 1), se os
operandos têm sinais diferentes
−a mantissa do resultado é o produto ou a divisão entre as mantissas dos operandos
−o expoente do resultado é a soma (para a multiplicação) ou a diferença (para a divisão) entre os expoentes dos operandos
−representação em BCD
−codifica cada algarismo decimal em 4 dígitos binários (bits)
−permite obter resultados exatos (necessários, por exemplo, em aplicações financeiras), às custas de maior
complexidade dos cálculos aritméticos
ArquiteturaComputadores.doc - 08/03/07 – página 37
CONJUNTO DE INSTRUÇÕES
−instrução de máquina
−indicação de uma operação básica ("primitiva"), muito simples e objetiva, capaz de ser executada por um
sistema computacional
−um comando (de linguagem de alto nível) é traduzido numa seqüência de instruções de máquina
−depende da estrutura do processador
(na verdade, o projeto do processador parte da definição do conjunto de instruções e, a partir
daí, são implementados os seus componentes)
−para a definição do conjunto de instruções, devem ser definidos
−a função de cada instrução
−o formato de cada instrução
Exemplos:
1) some o conteúdo do acumulador com o conteúdo do registrador de uso geral R1, e guarde o
resultado no acumulador
2) copie o conteúdo do acumulador na posição P da memória
Contra-Exemplos:
calcule X = A + B * C
calcule X = raiz quadrada de A
(não existe processador capaz de executar estes cálculos numa única operação básica)
−implementação física de uma instrução de máquina
−conjunto de bits agrupados em palavras e armazenados na memória principal
−tipos de instrução de máquina
−operações algébricas
exemplos: operações aritméticas, operações lógicas
−operações de movimentação de dados
exemplos: movimentação entre registradores, entre registradores e a memória (e vice-versa)
−operações de entrada e saída
exemplos: leitura em dispositivo de entrada, escrita em dispositivo de saída
−operações de controle
exemplos: desvio da seqüência de execução, suspensão da execução
ArquiteturaComputadores.doc - 08/03/07 – página 38
−o formato de cada instrução de máquina, em geral, apresenta 2 campos de bits
−campo do código da operação
−define a operação a ser executada
−o comprimento do campo do código da operação pode ser fixo (igual para todas as instruções) ou variável
−esse comprimento (n bits) determina o número máximo (N) de códigos diferentes: N = 2n
se n = 8 ⇒ N = 256 (suficiente, em geral, para um conjunto completo de instruções)
se N = 500 ⇒ usar 1 ou 2 bytes:
- se 1o byte ≠ FFh ⇒ código = 1o byte (255 possibilidades)
- se 1o byte = FFh ⇒ código = 2o byte (+256 possibilidades)
−campo dos operandos
−define o(s) valor(es) do(s) dado(s) com os quais a operação deve ser executada
−o comprimento do campo dos operandos também pode ser fixo ou variável
−o próprio número de operandos pode ser sempre o mesmo, ou variar de acordo com a instrução
−instruções com 4 operandos
exemplos:
ADD A, B, X, ENDE ⇒ A+B → X, vai para o endereço ENDE
MPY A, B, X, ENDE ⇒ A*B → X, vai para o endereço ENDE
(hoje, nenhum processador se utiliza do operando do endereço da próxima instrução, a não ser nas instruções de desvio)
−instruções com 3 operandos
exemplos:
ADD A, B, X ⇒ A+B → X
MPY A, B, X ⇒ A*B → X
(em ambos os casos, vai, implicitamente, para a instrução seguinte)
−instruções com 2 operandos
exemplos:
ADD A, B ⇒ A+B → A
(o resultado é implicitamente armazenado no primeiro operando)
MOV A, B ⇒ B→A
−instruções com 1 operando
exemplos:
MOV A ⇒ A → acumulador
ADD A ⇒ acumulador + A → acumulador
(o acumulador é um operando implícito, e também onde é armazenado o resultado)
JMP ENDE ⇒ vai para o endereço ENDE
−instruções sem operandos
exemplos:
STP ⇒ encerra a execução
NOP ⇒ não faz nada
(apenas consome um certo tempo)
−vantagens da instrução com muitos operandos
−completeza (possui todos os operandos explícitos)
−possibilita programas com menor número de instruções
−desvantagens da instrução com muitos operandos
−desperdício de bits, na maioria dos casos
−grande consumo de memória
−grande consumo de tempo (especialmente, no ciclo de busca)
ArquiteturaComputadores.doc - 08/03/07 – página 39
MODOS DE ENDEREÇAMENTO
−os valores dos dados manipulados por uma instrução são obtidos de acordo com o modo de
endereçamento da instrução
−endereçamento imediato
−o campo dos operandos da instrução fornece o próprio valor do dado
−modo mais rápido para a obtenção do valor do dado (lido junto com o código da instrução)
−utilizado, em programas, para iniciar variáveis; nas operações com constantes matemáticas; nas instruções de
desvio
−desvantagem: limitação do valor máximo do dado (≤2n), pelo número de bits (n) do campo dos operandos
−endereçamento direto
−o campo dos operandos da instrução fornece o endereço, na memória, onde está (ou será) armazenado o valor do
dado
−pode indicar o endereço inicial, na memória, a partir do qual podem estar armazenados diversos valores (vetor)
−utilizado, em programas, para manipulação de variáveis
−desvantagem: execução da instrução mais demorada do que no modo imediato (pois requer um acesso extra à
memória)
−endereçamento indireto
−o campo dos operandos da instrução fornece o endereço, na memória, onde está armazenado o endereço,
também na memória, onde está (ou será) armazenado o dado
−duplo endereçamento
−utilizado, por programas, para manipulação de variáveis apontadas por ponteiros
−desvantagem: execução da instrução mais demorada do que no modo direto (pois requer dois acessos extras à
memória)
−endereçamento de registrador
−o campo dos operandos indica o registrador onde está (ou será) armazenado o valor do dado
−possibilita um menor comprimento do campo dos operandos (pois requer poucos bits para indicar o registrador,
devido ao reduzido número de registradores da UCP)
−execução da instrução mais rápida do que nos modos direto e indireto (pois o acesso a um registrador é muito
mais rápido do que um acesso à memória)
−utilizado, por programas, para variáveis muito utilizadas, isto é, com acessos freqüentes (como contadores,
indexadores, indicadores, etc.), ou para resultados intermediários
−endereçamento indexado
−o campo dos operandos fornece um endereço de base, que, somado ao valor armazenado num registrador
(índice), resulta no endereço, na memória, onde está (ou será) armazenado o dado
−execução da instrução um pouco mais demorada do que no modo direto (pois requer um acesso extra, ao
registrador de índice, e uma soma)
−utilizado, em programas, para variáveis indexadas, do tipo vetor ou matriz ("array")
−desvantagem: exige maior complexidade no projeto da UCP (que deve ter um somador para o cálculo do
endereço do dado)
−métodos para indicação do modo de endereçamento utilizado pela instrução
−implícito, pelo próprio código da instrução (cada código já indica um único modo de endereçamento)
−explícito, através de um campo específico de bits (um código pode apresentar modos de endereçamento
diferentes)
ArquiteturaComputadores.doc - 08/03/07 – página 40
Exemplo: Supondo a seguinte configuração da memória e dos registradores:
memória
endereço valor
... ...
15 8
... ...
23 15
... ...
26 12
... ...
registradores
... ...
23 3
... ...