114
Arquitetura de Computadores Osmar Ventura

Livro Arq Comp

Embed Size (px)

Citation preview

Page 1: Livro Arq Comp

Arquitetura de Computadores

Osmar Ventura

Page 2: Livro Arq Comp

Disciplina: Arquitetura de Computadores

1

Sumário

UNIDADE 1 3

Introdução ao estudo da arquitetura de computadores 3Introdução 3Surgimento e evolução dos computadores 6Arquitetura de computadores 11Conceitos complementares 13Referências 17

UNIDADE 2 19

Sistemas de numeração 19Introdução 19Sistemas de numeração posicionais 20Base de um sistema de numeração 20Representação binária 22Representação em octal e em hexadecimal 24Conversões entre bases numéricas 25Referências 32

UNIDADE 3 33

Representações numéricas 33Representação de números inteiros (ponto fixo) 33Representação de números no formato complementar 39Representação de números negativos em complemento a base 46Representação de números reais 52Representação IEEE 754 para números em ponto flutuante 54Referências 58

UNIDADE 4 59

Sistemas digitais 59Circuitos lógicos 59Porta lógica 60Nível lógico 61Expressões boolianas 61Tipos de circuitos lógicos 66Referências 70

Page 3: Livro Arq Comp

Professor: Osmar Ventura

2

UNIDADE 5 71

Organização básica de um computador 71Modelo de máquinas 71Bloco dos dispositivos de I/O 73Bloco de memória principal 73Estrutura interna da UCP e funções 76Principais blocos lógicos que compõem uma UCP 80Funcionamento da UCP 82Referências 84

UNIDADE 6 85

Classificação do conjunto de instruções 85Processamento monociclo e multiciclo85RISC versus CISC 90Referências 94

UNIDADE 7 95

Desempenho de computadores 95Medidas de desempenho 95Avaliando um sistema computacional 96Uso de pipeline 102Uso de memória cache 107Periféricos 110Referências 112

Page 4: Livro Arq Comp

Disciplina: Arquitetura de Computadores

3

UNIDADE 1 Introdução ao estudo da arquitetura de computadores

Objetivos:

Apresentar e discutir os conceitos iniciais da computação; conhecer e entender o processo evolutivo dos computadores; compreender a necessidade e a importância de domínio da matemática no âmbito computacional; conhecer modelos abstratos que podem representar um computador moderno; permitir análise funcional dos modelos abstratos de computadores.

IntroduçãoNo estudo de Arquitetura de Computadores, será necessária a apresentação e o refinamento de

alguns conceitos e definições acerca da computação. Inicialmente serão trabalhados os conceitos

e definições do nosso objeto de estudo: o computador. Posteriormente, o termo arquitetura

será discutido e então associado ao objeto computador.

Provavelmente o computador é um dos inventos mais maravilhosos do homem. Atualmente existem

diversos tipos de computadores nas mais variadas aplicações. Contudo, sua função inicial era

bastante primitiva, ou seja, era usado somente para efetuar cálculos matemáticos básicos, como

adição e subtração.

Pode-se considerar que a história da criação e evolução dos computadores começa na

Antiguidade, juntamente com a necessidade dos homens efetuarem contas. Registros históricos

dão conta de que, quando os pastores buscavam uma forma de contar e armazenar o

número de ovelhas do seu rebanho, usavam pequenas pedras, denominadas “calculus”,

para representar cada uma de suas ovelhas. Tais “calculus” eram então armazenados

em uma bolsa de couro e, em um determinado momento, as pedras armazenadas nas

bolsas eram comparadas com cada uma das ovelhas do rebanho. Sobrando “calculus”,

significava que havia perda de ovelhas; faltando, indicava que o rebanho, de uma forma

ou outra, crescera.

Nesse contexto, podemos entender a origem da palavra “calcular”, que nada mais é do que

o simples fato de juntar pedras e compará-las com algum outro objeto. É claro que hoje, ao

pensarmos em calcular algo, contamos com a formalidade da matemática para regulamentar

Page 5: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

4

a relação de quantidade e, mais especificamente, numérica entre elementos. Na verdade,

hoje temos uma matemática que define algo além do que simplesmente contar e comparar.

À medida que a humanidade foi evoluindo, a necessidade de efetuar cálculos foi aumentando

em importância e dificuldade. Gradativamente foram surgindo operações matemáticas mais

complexas para suprir determinadas necessidades que somente as operações elementares

como somar, subtrair, multiplicar ou dividir não eram suficientemente capazes de atender.

Nesse processo de evolução, o homem sempre desejou usar alguma ferramenta para ajudar

na execução dos cálculos. A primeira ferramenta conhecida e usada para calcular denomina-

se ábaco (Figura 1) e foi criada há aproximadamente 5.500 anos, na Mesopotâmia. Sua forma

principal era baseada em uma tábua com marcações especiais indicando as classes numéricas

(dezena, centena, milhar etc.) e um sistema de representação numérica que considerava a

quantidade de “calculus” em cada marcação. A movimentação das pedras ou outro elemento,

como botões de ossos, esferas, contas, entre cada uma das classes representa efetivamente a

execução das operações matemáticas.

Figura 1: Ábaco Fonte: Disponível em: <http://goo.gl/ZFQ9G>.

Acesso em: 12 mai. 2012.

Então, seguindo a tendência de desenvolver

dispositivos que auxiliassem no processo

de cálculos matemáticos, foram projetadas

e construídas diversas máquinas com

esse propósito. Tais máquinas inicialmente

eram chamadas de computadores,

apesar de algumas realizarem somente as

quatro operações matemáticas básicas

ou somente funções muito específicas.

Podem-se classificar tais máquinas como

Computadores de Propósitos Específicos. Ao longo do processo de evolução tecnológica

e científica, e até mesmo seguindo uma tendência mais revolucionária, os projetistas de

computadores desenvolveram máquinas que podem ser adaptadas às mais variadas

funções, o que, de certa forma, cria uma segunda classe de computadores denominada de

Computadores de Propósito Geral.

Atualmente, o termo Computador de Propósito Específico foi substituído por outros substantivos

que designam uma função primária para o dispositivo ou máquina, por exemplo, calculadora,

celular, videogame, tablet. Ao longo do tempo, o termo Computador de Propósito Geral vem

sendo substituído simplesmente por computador. Assim, deve-se entender que todos os

Page 6: Livro Arq Comp

Disciplina: Arquitetura de Computadores

5

sistemas que se baseiam em operações matemáticas são, na sua essência, computadores,

podendo diferir somente quanto a sua aplicação (genérica ou específica).

Figura 2: Computador Fonte: Disponível em:

<http://goo.gl/ABequ> Acesso em: 12 mai. 2012.

Figura 3: Vídeo-Game AtariFonte: Disponível em:

<http://goo.gl/ABequ> Acesso em: 12 mai. 2012.

Uma segunda abordagem quanto à classificação dos computadores aponta para a modalidade

de processamento numérico, podendo um computador ser classificado em analógico e/ou

digital. Computadores analógicos operam por comparações; normalmente utilizam aparatos

mecânicos para efetuar o posicionamento de engrenagens ou ponteiros. A fim de efetuar a

leitura ou o processamento dos dados em um computador analógico, o sistema deverá possuir

uma marca de referência para todas as suas variáveis e, na computação, considerar a sua

relação com a posição do marcador/ponteiro. Pode-se tomar como exemplo de computador

analógico um termômetro a mercúrio, ou um relógio com ponteiros, bem como uma régua

plástica usada para efetuar medidas.

Figura 4: Termômetros digital e analógico

Page 7: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

6

Por outro lado, encontram-se os computadores digitais, que se caracterizam por efetuarem

os processamentos sem a necessidade de referências ou marcações entre os elementos

que envolvem uma determinada operação matemática. Os computadores digitais necessitam

somente das regras que estabelecem as relações entre os elementos (operandos) de cada

operação matemática. Ainda, nos computadores digitais, para mostrar ou representar o valor de

um determinado dado, por exemplo, o número 2, basta apresentar um símbolo que previamente

foi associado ao algarismo em questão. Pense em um termômetro digital, pelo qual o usuário, ao

efetuar a leitura da temperatura, simplesmente identifica o valor através do símbolo apresentado

em uma unidade de saída apropriada. Nos computadores digitais, assim como nos analógicos,

para indicar um determinado algarismo, será necessário simplesmente representar o número

através da tecnologia adotada para implementação do sistema.

Ao contrário do que muitos pensam, os computadores digitais não são 100% implementados

com tecnologia puramente digital, existe sempre pelo menos uma pequena unidade que opera

no modelo analógico e cuja interação com o restante dos blocos que compõem o computador

digital depende de um processo de conversão, seja de analógico para digital (A/D), seja de

digital para analógico (D/A). Ainda sob essa ótica, deve-se considerar que o mundo real é

essencialmente de natureza analógica e que, se os computadores foram desenvolvidos para

facilitar ou auxiliar os homens em alguma tarefa, ao empregar um computador digital em uma

tarefa específica, deve-se adequar os sinais entre o computador e o mundo externo, o que deve

passar pelo processo de conversão A/D ou D/A.

Como tecnologicamente os computadores digitais evoluíram de forma mais significativa do

que os computadores analógicos, pela facilidade de implementação e custos mais baixos, a

história da computação se fez, em sua maior parte, através de modelos de computadores digitais.

Dessa forma, o escopo da disciplina “Arquitetura de Computadores” engloba somente

os computadores digitais, apesar de, recentemente, modernas tecnologias, como a

nanotecnologia, possibilitarem o projeto de computadores analógicos mais funcionais, de

desempenho e aplicações superiores aos digitais.

Surgimento e evolução dos computadoresBlaise Pascal constrói, em 1642, uma máquina de calcular denominada Pascaline, com

engrenagens mecânicas que permitiam efetuar operações de soma e subtração. Era um

Page 8: Livro Arq Comp

Disciplina: Arquitetura de Computadores

7

dispositivo que operava no sistema decimal e que foi construído para auxiliar no processo

de cálculo de impostos para o governo francês. A máquina encontra-se exposta no Museu

de Artes e Ofícios de Paris.

Figura 5: PascalineFonte: Disponível em:

<http://goo.gl/ABequ>. Acesso em: 12 mai. 2012.

Em 1801, Joseph Marie Jacquard inventa

e constrói um sistema mecânico que

usa cartões perfurados (metálicos)

para codificar operações repetitivas de

comando de teares, transformando parte

do processo de controle das máquinas

em automático. Daí surgiu a ideia de

programar as máquinas de tecer para

produzir padrões de cores diferentes.

A ideia de Jacquard influencia o francês Charles Babbage a projetar uma máquina de calcular

cujo processo de cálculo pudesse ser controlado por cartões. Então, em 1822, Babbage

publica um trabalho intitulado “Differential Engine”, no qual apresenta os princípios para a

construção de uma máquina que pudesse efetuar operações algébricas: o programa deveria

residir na própria máquina, os resultados intermediários de cálculo deveriam ser armazenados

na própria máquina. Deveriam existir, ainda, dispositivos que permitissem a introdução dos

dados e visualização dos resultados.

Tal máquina não pôde ser totalmente construída por Babbage por limitações tecnológicas da

época. Trabalhou junto com ele Ada Byron King, também chamada de Ada Lovelace, historicamente

conhecida como a primeira programadora, pois desenvolvia programas para a máquina que estava

sendo projetada por Babbage. Ada contribuiu para a computação apresentando os conceitos

de subrotina, uma sequência de instruções que pode ser usada várias vezes; loop, estrutura

que permite a repetição de uma série de cartões; salto condicional, que permite saltar um

ou mais cartões caso uma condição seja satisfeita. Todos esses conceitos são base da

computação moderna.

Em 1854, George Boole propõe e apresenta uma nova Álgebra (Álgebra Booleana), tendo

por base a aplicação de operadores lógicos (E, OU, NÃO) a elementos algébricos. Herman

Hollerit, em 1886, inventa um sistema para codificação de letras, algarismos e símbolos, sob a

forma de perfurações realizadas em um cartão de papel, e constrói máquinas eletromecânicas

Page 9: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

8

(tabuladoras) que, mediante um programa armazenado externamente, realizam a leitura dos

dados dos cartões e efetuam cálculos com os dados lidos, de modo a obter resultados sob formas

previamente programadas.

A utilização deste tipo de máquina sofre grande expansão ao longo dos anos, quando

acopladas a calculadoras eletromecânicas (mais tarde foram usadas válvulas eletrônicas),

interpretadoras, separadoras/intercaladoras e impressoras. Existiam equipamentos

especializados para operações específicas, por exemplo, a separadora/intercaladora de

cartões perfurados, as quais funcionavam com programas fixos. Para agrupar em ordem

crescente um conjunto de cartões com um código de 5 algarismos, era necessário repetir

a operação 5 vezes: uma vez para cada coluna perfurada. A construção e comercialização

de tabuladoras deu origem à criação de grandes Empresas nos Estados Unidos, como, por

exemplo, a IBM - International Business Machines.

Em 1936 o alemão Konrad Zuse apresenta o primeiro computador eletromecânico, denominado

Z1. O computador executava cálculos lidos em fitas perfuradas (Figura 6).

Figura 6: Z1Fonte: Disponível em:

<http://goo.gl/ABequ>. Acesso em: 12 mai. 2012

Howard Aiken produz, em 1944, um

computador baseado nos conceitos da

máquina de Babbage. De codinome

Harvard Mark I, era um computador

totalmente eletromecânico, construído

através de uma parceria entre a Universidade

de Harvard e a IBM para a Marinha

Americana, que desejava uma calculadora

de tabelas para uso na navegação.

Paralelamente ao desenvolvimento do Mark I, sob a liderança dos engenheiros J. Presper

Eckert e John Mauchly e com o patrocínio do Exército Americano, em 1946 é construído

o primeiro computador a válvulas da história, o ENIAC – Eletronic Numeric Integrator and

Calculator. Ele foi projetado para auxiliar no cálculo de trajetórias balísticas. A programação do

ENIAC era realizada através de reconexão dos fios de um painel principal, e os ajustes dos

dados eram efetuados por botões rotativos localizados em diversos outros painéis.

Page 10: Livro Arq Comp

Disciplina: Arquitetura de Computadores

9

Figura 7: ENIACFonte: Disponível em:

<http://goo.gl/SGXZl>. Acesso em: 12 mai. 2012.

O Professor John Von Neumann publica,

em 1946, um trabalho intitulado “Electronic

Discrete Variable Automatic Computer”,

em que apresenta uma organização lógica

otimizada para o projeto e desenvolvimento

de computadores, a qual é usada até hoje

nos projetos de computadores sendo

conhecida como Arquitetura de Von Neumann.

A estrutura apresentada é formada pela Unidade

Central de Processamento (CPU ou UCP),

que contém a Unidade Lógica e Aritmética. Externamente a essa UCP, existe o conjunto de dispositivos

denominados genericamente de periféricos e uma unidade de memória de programas e dados. Von

Neumann ainda apresentou outras ideias, o que para a época foi um salto significativo.

Uma segunda ideia foi a proposta de implementar um computador que funcionava com o conceito de

programa armazenado, em contraste ao modelo usado na época, em que o programa era lido diretamente

do dispositivo de entrada e saída, painéis de cabos e conectores. Uma terceira proposta estava relacionada

com a redução do volume de cabos e fios usados nos computadores; a ideia era empregar o sistema

numérico binário em detrimento do decimal. A redução está relacionada na escala de 10:1 pares de fios,

ou seja, para representar números de dois dígitos decimais, eram necessários 10 pares de fios usando o

sistema decimal; para o sistema binário, é necessário usar no máximo 4 pares para representar os mesmos

números. E, ainda com a utilização do sistema binário, a implementação das propostas de Boole era

tecnologicamente mais adequada. Considerando todas as propostas de Von Neumann, em 1946 iniciou a

construção do computador EDVAC, que entrou em operação em 1951.

Figura 8: Arquitetura de Von Neumann

Page 11: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

10

Uma abordagem alternativa a proposta por Von Neumann, é a chamada Arquitetura Harward, diferindo apenas na configuração e acesso a Unidade de Memória, que passa a ser tratada de forma segmentada, ou seja, uma unidade para armazenamento de dados e outra para armazenamento de programas. Esta alternativa apresenta uma melhoria no desempenho, mas

incrementando o custo de produção do computador.

Memória de dados

Memória de Instruções

Dispositivos de eENTRADA SAÍDA

UCP / CPU

Figura 9: Arquitetura Harward

Em 1948, nos Laboratórios BELL, nos Estados Unidos, é descoberto o transistor, que contribuirá, a

partir de 1960, para a miniaturização dos circuitos eletrônicos, para a redução do volume físico dos

computadores, para o aumento do desempenho computacional e a popularização dos computadores.

No final da década de 1970 e início dos anos 1980, Clive Sinclair, no Reino Unido, concebe

um computador minúsculo denominado ZX81, que integra na sua máquina um interpretador

para uma linguagem de programação (BASIC - Beginers All-purpose Symbolic Instruction

Code), utilizando como periféricos, além de um teclado de membrana, um receptor de TV

e um gravador de “cassetes” musical para gravar os dados. A capacidade da memória desse

computador era cerca de 8 vezes maior que a do ENIAC. Paralelamente, Steven Jobs e Steven

Wozinak, nos E.U.A., concebem, segundo os mesmos princípios de miniaturização, facilidade

de utilização e baixo preço, um computador que denominam Apple I.

Vários fabricantes iniciam, nessa época, a produção em larga escala de computadores de uso

pessoal, de fácil utilização e baixo preço. O computador transforma-se num bem para consumo.

Não se pode desconsiderar que, ao longo do processo de evolução e disseminação dos

computadores, não foi somente o hardware que recebeu uma atenção especial da indústria; o

desenvolvimento de softwares cresceu em número, grau e tecnologia. É interessante observar

que, no início do século XIX, não existia tecnologia para a implementação da máquina de

Page 12: Livro Arq Comp

Disciplina: Arquitetura de Computadores

11

Babbage e que vários conceitos de desenvolvimento de software já estavam sendo cunhados,

e os mesmos conceitos são utilizados até hoje. Fica um pergunta: relacionando a evolução

do software e do hardware, qual deles está mais avançado? Com o processo de evolução do

software, é possível estudar, entender e implementar um computador em camadas ou níveis.

Arquitetura de computadoresO termo Arquitetura de computadores é usado para descrever todos os atributos de um

computador que são visíveis ao programador, por exemplo, o conjunto de instruções válidas

para uma determinada máquina, o número de bits usados para a representação de dados, os

mecanismos de acesso aos dispositivos de entrada e saída, as técnicas de endereçamento de

memória, o número de unidades aritméticas de um computador, entre outros atributos. Pode-se

considerar que a arquitetura descreve como será a interseção entre o hardware e o software,

para ilustrar melhor este conceito, considere que um computador pode ser subdividido em

partes dispostas hierarquicamente em diversos níveis, onde a complexidade em termos de

implementação do nível mais baixo não é visível para o nível superior.

Nível 4 Nível da linguagem do montador

Nível 5Nível das linguagens

orientadas para solução de problemas

Nível 3 Nível do sistema operacional

Nível 2Nível da arquitetura do

conjunto de instruções (ISA)

Nível 0 Nível lógico digital

Nível 1 Nível da microarquitetura

Computador de seis níveis

Figura 10: Computador de seis níveis

Page 13: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

12

Pela figura acima, é apresentado um computador que estrategicamente foi subdividido

em 6 níveis. O nível mais baixo, Nível 0, representa o verdadeiro hardware da máquina,

são os circuitos eletrônicos que executam efetivamente cada instrução da máquina,

neste nível os elementos estudados/avaliados são chamados de portas lógicas e quando

tratados individualmente, realizam funções elementares padrão (AND, OR, NOT). O Nível 0

é comumente chamado de Nível Lógico Digital.

No Nível de micro arquitetura, os elementos são uma combinação de portas lógica, os quais

conceitualmente efetuam funções lógicas mais elaboradas. Coisa do tipo, somadores aritméticos,

comparadores, registradores são exemplos dos elementos que estão presentes no Nível 1.

Como no Nível 1 é possível encontrar blocos lógicos capazes de efetuar diversas operações,

como por exemplo, uma adição, é interessante abstrair toda a complexidade que envolve a

execução desta operação, esquecendo efetivamente do circuito eletrônico, da existência

de portas lógicas e simplesmente, definir um código representa toda a operação de

adição. Assim é formado o Nível 2, ou seja, de códigos que representam efetivamente

cada operação que pode ser realizada pelo hardware. Neste nível é definido a linguagem

de máquina de um determinado computador, sendo denominado Nível de Arquitetura do

Conjunto de Instruções (ISA – Instruction Set Architecture). Deve-se observar que o projeto

de qualquer computador começa pela definição do conjunto de instruções do mesmo. É

neste nível que se concentra o estudo da disciplina Arquitetura de Computadores.

O Nível de Sistema Operacional da Máquina esconde a complexidade de entendimento de

hardware e de funcionalidades especificas do computador, como por exemplo, como deve

ser efetivamente o processo de leitura e escrita em uma unidade de armazenamento em

massa. Neste nível, Nível 3, são tratados funcionalidades operacionais que permitem o uso

dos recursos de hardware por grande parte dos usuários.

Finalizando, os níveis 4 e 5, Nível de linguagem de montagem e Nível de linguagem

orientado a problemas, respectivamente, possibilita que usuários mais avançados possam

desenvolver ferramentas/aplicações que fazem do computador uma poderosa ferramenta

para a solução de problemas. A visão do computador através deste nível é mais sofisticada

e não apresenta toda a complexidade dos circuitos eletrônicos.

Page 14: Livro Arq Comp

Disciplina: Arquitetura de Computadores

13

SOFTWARE

ARQUITETURA

HARDWARE

Figura 11: Visão geral de arquitetura

A Organização de computadores é

um termo usado para descrever

como as características arquiteturais

de um determinado computador são

implementadas fisicamente, em termos de

sinais elétricos, interfaces entre unidades

operacionais, tecnologias de memórias,

entre outras. Para entender melhor esse

conceito, a definição de implementação

do subsistema eletrônico que efetua

a multiplicação passa pela escolha do uso de uma unidade especializada, dedicada à

multiplicação, ou o processo de multiplicação é efetuado através de somas sucessivas;

a escolha da forma de implementação é um problema típico tratado em organização de

computadores. E, ainda, a escolha da tecnologia base de implementação do banco de

memória principal do computador, entre memórias estáticas e dinâmicas, é uma característica

organizacional e não arquitetural de um computador.

Conceitos complementaresAbaixo são apresentados alguns conceitos necessários ao entendimento da disciplina Arquitetura

de Computadores.

Hardware: palavra usada para relacionar toda estrutura física empregada na construção de um

computador. As características visuais, mecânicas e elétricas são definições encontradas no

hardware de uma determinada máquina. Até os anos 1980, o hardware desenvolvido para um

computador não era compatível com o hardware de outro computador, mesmo entre computadores

de um mesmo fabricante. Atualmente, existem padrões de desenvolvimento e compatibilidade de

hardwares, sendo possível usar um teclado fornecido pelo “Fabricante X” tanto no “computador

A” quanto no “computador B”.

Software: termo empregado para relacionar todos os elementos abstratos que envolvem

o comportamento e o uso dos computadores. O software não possui características

visuais definidas, ou melhor, não existe uma única forma de ser representado fisicamente.

O formato visual do software depende da experiência e envolvimento com o uso de

Page 15: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

14

computadores. Ao falar sobre o software “Windows” a uma pessoa que não trabalha

diretamente com computadores, ela pode imaginar a tela padrão desse software que

é freqüentemente mostrada pelos agentes de marketing, como sendo o “Windows”.

Por outro lado, se a pessoa envolvida trabalha com vendas de produtos de informática,

pode imaginar, por exemplo, a caixa que contém o produto e que é entregue aos

compradores. Não obstante tudo isso, uma pessoa que trabalha com o desenvolvimento

do software “Windows”, ao falar sobre ele, pode imaginar uma tela de computador

com uma seqüência grande de frases apresentadas em um editor de textos. O que

se quer dizer com tudo isso é que o software não possui uma identidade visual padrão,

não é possível visualizar a sua estrutura física, nem mesmo tocá-lo, contudo é possível

desenvolver um software e simplesmente usá-lo. Assim, o software pode ser classificado

conforme o seu relacionamento direto com o hardware ou com o usuário do computador.

Os softwares são classificados como básico, quando foram desenvolvidos para controlar

diretamente um determinado hardware. Por outro lado, o software que foi concebido para

relacionar ou facilitar a operação do computador pelo usuário é classificado como software

utilitário. São exemplos de softwares básicos os sistemas operacionais Windows, Linux, Mac

OS, Android; os drivers de dispositivos como impressoras, scanners, câmeras fotográficas,

pendrive; tradutores e compiladores de linguagens para desenvolvimento de softwares;

firmwares, softwares que vêm gravados em alguns dispositivos eletrônicos (Ipod, televisão,

micro-ondas etc.) e que são comumente denominados de BIOS. Os softwares usado para

navegar pela Internet (Firefox, Chrome, Internet Explorer), copiar um arquivo em um pendrive,

ouvir músicas no computador são exemplos de softwares utilitários.

Programa: denominação técnica mais específica de software, que representa os elementos usados

para descrever o comportamento esperado de um computador, ou seja, o que efetivamente o

computador deverá executar em função do tempo e das variáveis de controle do próprio programa.

Num nível mais baixo, entende-se como a descrição da sequência de operações matemáticas,

instruções, que um determinado computador deverá executar para desempenhar uma

tarefa. Essa descrição deverá seguir uma ordem lógica e uma formalidade em suas

sentenças, o que por sua vez caracteriza uma linguagem de programação de computadores.

A linguagem nativa de um computador é chamada de “Linguagem de Máquina”, a qual

pode ser representada por um sequência de zeros e uns (0’s e 1’s) ou mesmo um gráfico

de sinais elétricos. Essa linguagem é considerada a linguagem de mais baixo nível, por estar

relacionada diretamente com o hardware do computador. Visando facilitar o desenvolvimento

Page 16: Livro Arq Comp

Disciplina: Arquitetura de Computadores

15

de softwares, diversos outros níveis e tipos de linguagens foram desenvolvidos, cada um com

características específicas e voltado para uma determinada classe de problema (financeiro,

científico, manipulação de textos etc.), bem como uma maior facilidade de manipulação por

parte do programador, já que programar pensando somente em uma seqüência de zeros e

uns é bastante tedioso e demorado. Como na verdade o computador só entende/executa

instruções na linguagem de máquina, é necessário transformar um programa descrito em

uma linguagem diferente da linguagem nativa de um computador na linguagem de máquina

própria do computador que irá executar o programa (linguagem de máquina). Para efetuar

essa transformação, são utilizados programas tradutores e/ou interpretadores de linguagens

de programação de computadores, o que, de certa forma, permite mudar o nível ou tipo de

linguagem de um programa, bem como adequar um software à linguagem nativa de um

determinado computador.

Tradutor: transforma ou converte o programa descrito na “Linguagem X” para a “Linguagem Y”.

A tradução não é executada parcialmente, o programa descrito na nova linguagem só é gerado

após a tradução de todo o programa na linguagem origem. Assim, para executar o programa

na nova linguagem, o processo de tradução deverá ter sido encerrado com sucesso, sendo

que, de outra forma, o novo programa não é criado. Somente após a criação do programa na

nova linguagem é que ele poderá ser executado pelo computador. Como exemplo de tradutor,

podem-se destacar os compiladores da “Linguagem C” (Dev-C++). Deve-se observar que

o processo de compilação é mais complexo do que parece, e não é assunto abordado no

contexto de arquitetura de computadores.

Interpretador: processo que pode ser implementado por software ou diretamente por

hardware. O interpretador não gera um novo programa, ele simplesmente transforma e

imediatamente executa cada instrução do programa na linguagem origem diretamente na

linguagem destino. Erros no processo de interpretação podem ocorrer, ocasionando ou não

a parada do processo; isso depende exclusivamente da implementação do interpretador.

Diferentemente do tradutor, o interpretador não gera um novo programa para que futuramente

possa ser executado. Como exemplo de interpretador, podem-se citar os navegadores da

Internet, os quais recebem programas na linguagem HTML, interpretando-a e executando cada

um dos seus comandos. Havendo erros de interpretação, o processo não é interrompido e,

por opção dos desenvolvedores dos interpretadores, os erros, às vezes, não são mostrados,

e os resultados referentes à execução do programa são exibidos na tela do computador. Um

segundo exemplo são os interpretadores da Linguagem Basic, que, por sua vez, ao encontrarem

Page 17: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

16

um erro, param a execução do programa no ponto específico do erro, reportando a classe do

erro ao usuário. Atualmente é usado um tipo de interpretador muito interessante e que vem

mudando significativamente o uso de recursos computacionais: são chamados de máquinas

virtuais, implementadas por softwares como Virtual PC e VMware. Esse tipo de interpretador

permite que um computador/hardware possa simular a existência de outros computadores;

é algo como se um único computador pudesse virar vários outros, executando aplicações

variadas e se comunicando como se fossem computadores físicos distintos.

Memória: dispositivo usado para armazenar conteúdos no formato digital. Pode ser

classificado de acordo com a sua proximidade à Unidade Central de Processamento - CPU.

Normalmente seu volume de armazenamento é medido em bytes, o que define a unidade

mínima de armazenamento. Tipicamente são denominados de Memória Principal os dispositivos

externos que estão ligados diretamente à CPU e que armazenam o programa e os dados

que estão em execução/processamento. Os dados e programas que não estão em execução

normalmente são armazenados na memória secundária ou memória de armazenamento em

massa, a qual está ligada à CPU indiretamente através dos dispositivos de entrada/saída

(I/O - Input/Output). É importante observar que é necessário sempre copiar os programas e dados

da memória secundária para a principal a fim de executá-los. As memórias são agrupamentos

de células de tamanho padrão, normalmente bytes, sendo que cada das células possui uma

identificação/endereço exclusivo.

Registrador: tipo especial de memória formada por uma única célula, localizado

na parte interna da CPU. O acesso ao registrador é exclusivo da CPU, e ele possui

um tempo de resposta muito superior ao desempenho da Memória Principal.

O termo “Palavra” está associado ao tamanho ou a largura da célula que forma cada um dos

registradores de uma CPU; expressa o número de bits da célula de cada registrador. Quando

se fala de uma CPU ou Processador de 32 bits, por exemplo, entre outras características, está

sendo informado que normalmente os registradores da CPU possuem 32 bits de largura.

Nesta unidade foram apresentados os conceitos básicos de computação, bem como a

motivação para o surgimento dos computadores. Um modelo clássico de implementação de

computador chamado Arquitetura de Von Neumann, foi mostrado de forma sucinta, sendo

que na Unidade 5, este modelo será discutido de forma mais detalhada. A necessidade de

entendimentos sobre operações e representações numéricas são importantes a medida em

que entendemos que os computadores atuais nada mais são do que complexas máquinas de

calcular. Esta unidade servirá de base de consulta para o andamento da disciplina.

Page 18: Livro Arq Comp

Disciplina: Arquitetura de Computadores

17

ReferênciasLORIN, Harold. Introdução à arquitetura e organização de computadores. ISBN 8570011911

Rio de Janeiro: Campus, 1985. 362p.

MURDOCCA, Miles; HEURING, Vicent. Introdução a Arquitetura de Computadores. Rio de

Janeiro: Ed. Campus, 2000.

PATTERSON, David A.; HENESSY, Jonh L. Organização e Projeto de Computadores. 2. ed.

Rio de Janeiro : LTC Editora S/A, 1998.

STALLINGS, W. Arquitetura e Organização de Computadores. 5. ed. São Paulo:

Pearson Education do Brasil, 2002.

STALLINGS, William. Arquitetura e organização de computadores: projeto para o desempenho.

5. ed. ISBN 85-87918-53-2. São Paulo: Prentice-Hall, 2002. 786 p.

TANENBAUM, A. Organização Estruturada de Computadores. 4. ed. São Paulo:

Prentice-Hall, 2006.

TORRES, Gabriel. Hardware: curso completo. 4. ed. ISBN 85-7323-165-3. Rio de Janeiro:

Axcel Books, 2001. 1398 p.

WEBER, Raul Fernando. Fundamentos de Arquitetura de Computadores. Série Livros Didáticos.

2.ed. ISBN 8524106352. Porto Alegre: Sagra Luzzatto, 2001. 299p.

Links:

COMPUTER HISTORY. The First Mainframes. Disponível em: <http://www.computerhistory.org/

revolution/mainframe-computers/7/166>. Acesso em: 12 mai. 2012.

COMPUTER HISTORY. Timeline - CHM Revolution. Disponível em: <http://www.computerhistory.

org/revolution/timeline>. Acesso em: 12 mai. 2012.

MUSEU DO COMPUTADOR. Disponível em: <http://www.museudocomputador.com.br/>.

Acesso em: 12 mai. 2012.

OLHAR DIGITAL. Museu do Computador. Disponível em: <http://olhardigital.uol.com.br/

produtos/central_de_videos/museu-do-computador>. Acesso em: 12 mai. 2012.

Page 19: Livro Arq Comp

UNIDADE 1 - INTRODUÇÃO AO ESTUDO DO DA ARQUITETURA DE COMPUTADORES

18

WIKIPÉDIA. Ábaco. Disponível em: <http://pt.wikipedia.org/wiki/%C3%81baco#.C3.81baco_

mesopot.C3.A2mico>. Acesso em: 12 mai. 2012.

YOUTUBE. Historia de la computadora para niños. Disponível em: <http://www.youtube.com/

watch?v=OTwqEnrZSQY&feature=related>. Acesso em: 12 mai. 2012.

YOUTUBE. Intro to Computer Architecture. Disponível em: <http://www.youtube.com/

watch?NR=1&v=HEjPop-aK_w&feature=endscreen>. Acesso em: 12 mai. 2012.

YOUTUBE. John Von Neumann (biografia). Disponível em: <http://www.youtube.com/watch?fea

ture=endscreen&NR=1&v=RF_CZpmVGzw>. Acesso em: 12 mai. 2012.

YOUTUBE. Von Neumann architecture and modern PCs. Disponível em: <http://www.youtube.

com/watch?v=eWhnMNjxYDQ&feature=fvwrel>. Acesso em: 12 mai. 2012.

Page 20: Livro Arq Comp

Disciplina: Arquitetura de Computadores

19

UNIDADE 2 Sistemas de numeração

Objetivos:

Rever e discutir os conceitos dos sistemas numéricos usados na computação. Desenvolver habilidades para conversão numérica entre os sistemas numéricos decimal, binário, octal e hexadecimal.

IntroduçãoOs sistemas de numeração são mecanismos que definem os símbolos numéricos e as regras

para a manipulação e representação dos valores a serem registrados. Na Antiguidade, duas

formas de representar quantidades foram inventadas. Inicialmente, os egípcios criaram um

sistema em que cada conjunto de 10 unidades era representado por um símbolo diferente.

Por exemplo, se escolhêssemos símbolos ao acaso e usássemos # para representar uma

centena, & para representar uma dezena e @ para representar uma unidade, teríamos que

###&&@ representaria 321.

O segundo sistema desenvolvido foi o sistema de numeração romano, no qual são usados

símbolos (letras) que representam as quantidades, por exemplo: I (valendo 1), V (valendo

5), X (valendo 10), C (valendo 100) etc. A regra de posicionamento determina que as letras

que representam quantidades menores e precedem as que representam quantidades

maiores sejam somadas; se o inverso ocorre, o menor valor deve ser subtraído do maior

(e não somado). Assim, o número 128 é representado em algarismos romanos por

CXXVIII (= 100 + 10 + 10 + 5 + 1 + 1 + 1 = 128). Por outro lado, o valor 94 é representado

por XCIV (= (-10 + 100) + (-1 + 5) = 94).

Nesses sistemas, os símbolos tinham um valor intrínseco, independente da posição que

ocupavam na representação (sistema numérico não-posicional). Um grande problema desse

sistema é a dificuldade de realizar operações com essa representação. Experimente multiplicar

CXXVIII por XCIV! Assim, posteriormente foram criados sistemas em que a posição dos algarismos

no número passou a alterar seu valor.

Page 21: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

20

Sistemas de numeração posicionaisNos sistemas de numeração posicionais, o valor representado pelo algarismo no número depende da posição em que ele aparece na representação. O primeiro sistema desse tipo foi inventado pelos chineses. Eram usados palitos: 1 a 5 palitos dispostos na vertical representavam os números 1 a 5; 6 a 9 eram representados por 1 a 4 palitos na vertical, mais um palito na horizontal (valendo 5) sobre os demais. Cada número era então representado por uma pilha de palitos, sendo uma pilha para as unidades, outra para as dezenas, outra para as centenas etc.

Esse sistema, com as pilhas de palitos dispostas em um tabuleiro, permitia a realização das quatro operações aritméticas básicas. Não existia representação para o zero (o espaço relativo ficava vazio). O tabuleiro aritmético (chamado swan-pan), além das quatro operações, era usado na álgebra e na solução de equações. Essa técnica era chamada de Método do Elemento Celestial.

Atualmente usamos o sistema de numeração posicional para representar todos os valores numéricos em nosso cotidiano, por exemplo, a quantidade de carros que passam por uma via, o valor em reais de uma televisão, a idade de uma pessoa etc. O uso do sistema posicional significa que a posição ocupada por um algarismo em um número altera seu valor em uma potência de 10 (em sistema decimal) para cada casa à esquerda. Por exemplo, no sistema decimal (base 10), no número 125, o algarismo 1 representa 100 (uma centena ou 102), o 2 representa 20 (duas dezenas ou 1 x 101) e o 5 representa 5 mesmo (5 unidades ou 5 x 100).

Assim, em nossa notação, 125 = 1 x 102 + 2 x 101 + 5 x 100.

Base de um sistema de numeraçãoA base de um sistema de numeração indica a quantidade de algarismos disponíveis para a

representação/formação numérica. A base 10 é hoje a mais comum, embora não seja a única

utilizada. No comércio pedimos uma dúzia de rosas ou uma grosa de parafusos (base 12) e

também marcamos o tempo em minutos e segundos (base 60). Os computadores, por sua

vez, utilizam a base 2 (sistema binário), e os programadores em linguagem de baixo nível, por

facilidade, usam em geral uma base que seja uma potência de 2, tal como 2 4 (base 16 ou

sistema hexadecimal), ou eventualmente ainda 2 3 (base 8 ou sistema octal).

Na base 10, dispomos de 10 algarismos para a representação do número: 0, 1, 2, 3, 4, 5,

6, 7, 8 e 9. Na base 2, são apenas 2 algarismos: 0 e 1. Na base 16, utilizamos 16: os 10

algarismos aos quais estamos acostumados, mais os símbolos A, B, C, D, E e F, representando

respectivamente 10, 11, 12, 13, 14 e 15 unidades.

Page 22: Livro Arq Comp

Disciplina: Arquitetura de Computadores

21

Generalizando, temos que uma base b qualquer disporá de b algarismos, variando

entre 0 e (b-1) algarismos. A representação do número 125,3810 (base 10) significa

1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2. Assim, para representar uma quantidade N

qualquer, numa dada base b, com um número tal como segue, temos:

Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n

(Expressão 1)

Sendo que:

an.bn + .... + a2.b2 + a1.b1 + a0.b0 é a parte inteira (Expressão 2)

e

a-1.b-1 + a-2.b-2 + .... + a-n.b-n é a parte fracionária. (Expressão 3)

Intuitivamente, sabemos que o maior número que podemos representar com n algarismos, na

base b, será o número composto n vezes pelo maior algarismo disponível naquela base (ou

seja, b-1). Por exemplo, o maior número que pode ser representado na base 10 usando 3

algarismos será 999 (ou seja, 103 - 1 = 999).

Genericamente falando, podemos ver que o maior número inteiro N que pode ser representado,

em uma dada base b, com n algarismos (n “casas”), será N = bn – 1, assim como o

menor número inteiro com n algarismos será formado por n vezes o primeiro algarismo da

base em questão, ou seja, o algarismo 0 (zero). Ainda, a quantidade de números distintos

a serem representados em uma base numérica b está relacionada com a quantidade

de algarismos/dígitos ou casas numéricas usadas para a representação numérica.

Então, a quantidade de números distintos a serem representados na base b com n algarismos

é determinada pela equação bn.

Nos sistemas de numeração, usamos o termo algarismo/dígito mais significativo para

referenciarmos o algarismo ou dígito mais à esquerda de uma dada representação numérica.

Por outro lado, o termo algarismo/dígito menos significativo está associado ao dígito mais à direita

de um número. Tomando como exemplo o número 8672, temos como dígito mais significativo

o algarismo 8, e o 2 como o menos significativo. Podemos dizer que o algarismo 7 é o segundo

dígito menos significativo, bem como o terceiro mais significativo e assim por diante.

Page 23: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

22

Representação bináriaOs computadores modernos utilizam o sistema binário, isto é, todas as informações armazenadas

ou processadas no computador são representadas usando apenas DUAS grandezas físicas,

que matematicamente são representadas pelos algarismos 0 e 1. Essa decisão de projeto

deve-se à maior facilidade de representação interna no computador, que é obtida através de

dois diferentes níveis de tensão ou mesmo corrente. Havendo apenas dois algarismos, portanto

dígitos binários, o elemento mínimo de informação nos computadores foi denominado bit, que

é o acrônimo de binary digit.

Na base 2 o número representado pela sequência “10” é correspondente ao número dois na

base 10, ou seja, 102 = 210. Então podemos afirmar que dez é igual a dois?

– Não, dez não é e nunca será igual a dois!

Na verdade, a sequência dos algarismos 1 e 0, ou seja, “10”, não significa necessariamente o

número “dez”. Como estamos acostumados a associar “10” a “dez”, pois sempre pensamos

no sistema de numeração decimal, achamos estranho falar que “10” é igual a 2. Considere as

observações abaixo:

- O número 102 deve ser lido como “um-zero” na base 2 e equivale ao número

2 na base 10 (210).

- O número 105 deve ser lido com “um-zero” na base 5 e equivale ao número 5 na base

10 (510).

- O número 1010 pode ser lido como “um-zero” na base 10 ou então como “dez”

na base dez.

- 1016, lido como “um-zero” na base 16, equivale ao número 1610.

Portanto, 10 só será igual a dez se, e somente se, o número estiver representado na base dez.

Uma curiosidade: O número “10b” é sempre igual à base, porque, em uma dada base b, os algarismos possíveis vão ser sempre de 0 a (b - 1). Como o maior algarismo possível em uma

dada base b é igual a (b-1), o próximo número será (b - 1 + 1 = b) e, portanto, será sempre 10. Assim, numa dada base qualquer, o valor da base será sempre

representado por “10”.

Page 24: Livro Arq Comp

Disciplina: Arquitetura de Computadores

23

Obs.: Toda vez que um número for apresentado sem que seja indicado em qual sistema de numeração ele está representado, entenderemos que a base é dez. Sempre que outra base for

utilizada, a base será obrigatoriamente indicada por um índice na sequência do número.

TABELA 1 – Relação dos pesos de uma sequência binária

Representação Binária Potência Representação decimal1 20 110 21 2100 22 41000 23 810000 24 16100000 25 321000000 26 6410000000 27 128100000000 28 2561000000000 29 512... 2... ...

Pela TABELA 1, pode-se identificar a equivalência de cada sequência binária com o seu

correspondente decimal. Considerando que a representação numérica binária é um sistema de

numeração posicional, o algarismo 1 representa valores (pesos) diferentes e compatíveis com a

sua posição relativa no número. Como o algarismo 0 indica um valor nulo, o valor representado

por ele sempre será zero, independentemente de sua posição no número. Assim, é possível

representar todos os demais números decimais no sistema binário, através da soma dos

pesos dos algarismos 1 na representação numérica binária. Observe pela TABELA 2 como são

formados os números em binário e seus correspondentes em decimal.

TABELA 2 – Exemplos de representação em binário

Representação Binária Potência Representação decimal11 20+21 31010 23+0+21+0 1010011 24+0+0+21+20 19111111 25+24+23+22+21+20 631000110 26+0+0+0+22+21+0 70

Page 25: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

24

Representação em octal e em hexadecimalEm ambientes computacionais, é comum representar números usando sistemas numéricos em

potências de dois, como o sistema octal e o sistema hexadecimal. Essa técnica visa reduzir o

número de algarismos da representação numérica e, consequentemente, facilitar a compreensão

da grandeza e evitar erros. No sistema octal (base 8), cada três algarismos do sistema binário

são representados por apenas um algarismo octal (de 0 a 7). No sistema hexadecimal (base 16),

cada quatro bits são representados por apenas um algarismo hexadecimal (de 0 a F).

A seguir, a TABELA 3 apresenta os números em decimal e sua representação correspondente

em binário, octal e hexadecimal:

TABELA 3 Equivalência entre as bases numéricas

BASE 10 BASE 2 BASE 8 BASE 160 0 0 01 1 1 12 10 2 23 11 3 34 100 4 45 101 5 56 110 6 67 111 7 78 1000 10 89 1001 11 910 1010 12 A11 1011 13 B12 1100 14 C13 1101 15 D14 1110 16 E15 1111 17 F

Obs.: Convencionalmente, em algumas linguagens de programação, os números na base 16 ou sistema hexadecimal são grafados com a letra “H” ou “h” após o número. Por exemplo: FFH

significa que o número FF está em hexadecimal. Não confundir o “H” ou “h” com mais um dígito, mesmo porque em hexadecimal só temos algarismos até “F” e, portanto, não existe um algarismo “H”. Os números na base 8 ou octal são grafados com o algarismo zero na parte mais significativa

do número; por exemplo: 0326.

Page 26: Livro Arq Comp

Disciplina: Arquitetura de Computadores

25

Conversões entre bases numéricas262.1 Conversão de números de uma base b qualquer para a base 10

De um modo geral, o processo de conversão de números reais em qualquer base numérica

para a base 10 deve considerar a Expressão 1:

Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n

A forma mais conveniente de efetuar a conversão é reescrevendo o número a ser convertido na

sua forma de potência usando o formato dado pela Expressão 1 e resolvendo a expressão final.

Exemplos:

a. Converter para a base 10 o número binário 10001110

Usando a Expressão 1, temos:

10001110,012 = 1x27 + 0x26 + 0x25 + 0x24 + 1x23 + 1x22 + 1x21 + 0x20 + 0x2-1 + 1x2-2

= 1x128 + 0x64 + 0x32 + 0x16 + 1x8 + 1x4 + 1x2 + 0x1 + 0x0,5 + 1x0,25

= 128 + 0 + 0 + 0 + 8 + 4 + 2 + 0 + 0 + 0,25

= 142,25

b. Converter para decimal o número 361,458

Pela Expressão 1, temos:

3618 = 3x82 + 6x81 + 1x 80 + 4x8-1 + 5x8-2

= 3x64 + 6x8 + 1x1 + 4x0,125 + 5x0,015625

= 192 + 48 + 1 + 0,5 + 0,078125

= 241,578125

Page 27: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

26

c. Converter para decimal o número 1BC16

Com a Expressão 1, temos:

1BC,416 = 1x162 + B16x161 + C16x160 + 4x16-1

Para o processo de conversão, deve-se considerar que os algarismos da base 16 de A a F

correspondem aos números decimais de 10 a 15, respectivamente. Então, reescrevendo a

expressão, temos:

1x162 + B16x161 + C16x160 + 4x16-1

= 1x162 + 11x161 + 12x160 + 4x16-1

= 1x256 + 11x16 + 12x1+ 4x0,0625

= 256 + 176 + 12 + 0,25

= 444,25

Conversão de números da base 10 para uma base b qualquer

A conversão de números da base dez para uma base qualquer segue um processo inverso

ao descrito acima. O processo é dividido em duas etapas, sendo uma para a parte inteira e

outra para a parte fracionária. No final, os números encontrados em cada etapa deverão ser

concatenados com o separador vírgula.

Processo para a parte inteira do número:

O número decimal deverá ser dividido sucessivas vezes pela base, sendo que o resto de cada

divisão deverá ocupar sucessivamente as posições de ordem menos significativas do número,

até que o resto da última divisão, que resulta em quociente zero, ocupe a posição de ordem mais

significativa. Tome como exemplo a conversão do número 326 para a base 2, base 8 e base 16:

Page 28: Livro Arq Comp

Disciplina: Arquitetura de Computadores

27

2163-162

1

281

- 401

326- 163

0 240

- 200

220

- 200

210

- 100

25

- 21

2220

2101

20

1 0 1 0 0 0 1 1 032610 =

Dígito menos significativo

Dígito mais significativo

Figura 12: Processo de conversão de decimal para binário

840

- 400

85

- 0 5

80

326- 320

6

5 0 632610 =

Dígito menos significativo

Dígito mais significativo

Figura 13: Processo de conversão de decimal para octal

820

- 164

161

- 0 1

160

326- 320

6

1 4 632610 =

Dígito menos significativo

Dígito mais significativo

Figura 14: Processo de conversão de decimal para hexadecimal

Page 29: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

28

Pelas figuras 12, 13 e 14, é possível verificar o procedimento de conversão de um número inteiro

na base 10 para os sistemas binário, octal e hexadecimal. Deve-se observar que os restos das

divisões são escritos na forma inversa, ou seja, do algarismo menos significativo para o mais

significativo. Ainda, considerando o processo de conversão para a base 16, quando o resto

for maior que 9, deve-se utilizar os respectivos algarismos hexadecimais – A, B, C, D, E ou F –

conforme o caso.

Processo para a parte fracionária do número:

O procedimento para encontrar a parte fracionária de um número na nova base consiste em

um processo de multiplicação sucessiva da parte fracionária do número em decimal pela base

destino. A parte inteira do resultado da primeira multiplicação será o valor da primeira casa

fracionária, e a parte fracionária desse número será de novo multiplicada pela base e assim por

diante, até o resultado ser zero ou até encontrarmos o número de casas fracionárias desejado.

Por exemplo, vamos converter 326,651 para a base 2, 8 e 16, com 5 algarismos fracionários:

1. A parte inteira será convertida pelo procedimento descrito no item anterior.

2. A parte fracionária será determinada pelo processo de multiplicações sucessivas,

conforme verificamos nas figuras 15, 16 e 17.

Passo

0,651 = 1 0 1 0 0 1

Algarismo da parte fracionária

1º2º3º4º5º6º

0,651 x 2 = 1.302 10,302 x 2 = 0,604 00,64 x 2 = 1,208 10,208 x 2 = 0,416 00,416 x 2 = 0,832 00,832 x 2 = 1,662 1

Figura 15: Conversão de decimal fracionário para binário fracionário

Passo

0,651 = 5 1 5 2 3 7

Algarismo da parte fracionária

1º2º3º4º5º6º

0,651 x 8 = 5,208 50,208 x 8 = 1,664 10,664 x 8 = 5,312 50,312 x 8 = 2,496 20,496 x 8 = 3,968 30,968 x 8 = 7,744 7

Figura 16: Conversão de decimal fracionário para octal fracionário

Page 30: Livro Arq Comp

Disciplina: Arquitetura de Computadores

29

Passo

0,651 = A 6 A 7 E F

Algarismo da parte fracionária

1º2º3º4º5º6º

A

A

EF

0,651 x 16 = 10,416 100,416 x 16 = 6,656 60,656 x 16 = 10,496 100,496 x 16 = 7,936 70,936 x 16 = 14,976 140,976 x 16 = 15,616 15

Figura 17: Conversão de decimal fracionário para hexadecimal fracionário

3. Cada número será montado através da concatenação da parte inteira com a parte

fracionária, separadas por vírgula:

Binário 326,651 = 101000110, 10100

Octal 326,651 = 506, 51523

Octal 326,651 = 146, A6A7E

Figura 18: Formatação final dos números

Em todos os casos, a conversão foi interrompida quando encontramos o número de algarismos

fracionários solicitado no enunciado. No entanto, como não encontramos resultado 0 em

nenhuma das multiplicações, poderíamos continuar efetuando multiplicações indefinidamente

até encontrar (se encontrarmos) resultado zero. No caso de interrupção por chegarmos ao

número de dígitos especificado sem encontramos resultado zero, o resultado encontrado é

aproximado, e essa aproximação será função do número de algarismos que calcularmos. Assim,

se convertermos os números da Figura 18 em decimal, chegaremos a um valor aproximado.

Conversões entre as bases 2, 8 e 16

As conversões mais simples são as que envolvem bases que são potências entre si. Para

converter da base 2 para a base 8, considere que 8 = 23. Então, deve-se separar os bits de um

número binário em grupos de três bits, começando sempre do menos significativo para o mais

significativo, e depois converter cada grupo de três bits para seu equivalente em octal. Ao final,

tem-se a representação do número binário em octal. Por exemplo:

Page 31: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

30

101010012 = 10.101.0012 (separando em grupos de 3, sempre começando da direita para a esquerda)

Considerando que: 0102 = 28

1012 = 58

0012 = 18

Portanto: 101010012 = 2518

Nas conversões entre as bases 2 e 16, deve ser considerado que 24 = 16. Assim, basta separar

o número binário em grupos de 4 bits e converter parcialmente cada um dos grupos de 4 bits

para hexadecimal. Observe no exemplo abaixo o processo:

110101011012 = 110.1010.11012 (separando em grupos de 4 bits, sempre começando

do algarismo menos significativo para o mais significativo)

Considerando que: 1102 = 616

10102 = A16

11012 = D16

Portanto: 110101011012 = 6AD16

Para convertermos números escritos em hexadecimal ou octal para binário, devemos efetuar a

operação inversa ao processo de binário para as bases 8 e 16. Perceba pelos exemplos abaixo

como operar nesse processo de conversão:

a. Converter o número CAFE16 para binário:

1. Como cada dígito hexadecimal corresponde a 4 dígitos binários, então deve-se

converter parcialmente cada um dos dígitos em hexadecimal:

C16 = 1210 = 11002

A16 = 1010 = 10102

Page 32: Livro Arq Comp

Disciplina: Arquitetura de Computadores

31

F16 = 1510 = 11112

E16 = 1410 = 11102

2. Agora é só concatenar cada um dos números em binário, obedecendo àposição

relativa de cada um deles. O número final será:

CAFE16 = 1100.1010.1111.11102

b. Converter o número 36218 para binário:

1. Como cada dígito octal corresponde a 3 dígitos binários, então deve-se converter

parcialmente cada um dos dígitos em hexadecimal:

38 = 310 = 0112

68 = 610 = 1102

28 = 210 = 0102

18 = 110 = 0012

2. Para finalizar, é só concatenar cada um dos números em binário, obedecendo à

posição relativa de cada um deles. O número final será:

36218 = 011.110.010.0012

Conversão de números entre duas bases quaisquer

Para converter números de uma base b qualquer para outra base qualquer, o processo prático

utilizado é o de converter da base origem para a base 10 e depois da base 10 para a base

destino. Por exemplo: converter o número 567 (base 7) para a base 9.

567 = (5x71 + 6x70)10 = 35 + 6 = 4110

41/9 = 4 e resto 5. Logo: 567 = 459

Observe que o processo de conversão entre as bases 7 e 9 foi efetuado utilizando as teorias

abordadas nas sessões anteriores, podendo ser aplicado para qualquer processo de conversão,

desde de que envolva a base 10 como a base de referência. Para melhorar as habilidades de

manipulação numérica, procure fazer vários exercícios.

Page 33: Livro Arq Comp

UNIDADE 2: SISTEMAS DE NUMERAÇÃO

32

ReferênciasGONICK, Larry. Introdução Ilustrada à Computação. Rio de Janeiro: Ed. Harper & Row do

Brasil, 1984.

MONTEIRO, Mário. Introdução à Organização de Computadores. 2 ed. São Paulo: Editora LTC.

STALLINGS, W. Arquitetura e Organização de Computadores. 5. ed. São Paulo:

Pearson Education do Brasil, 2002.

TANENBAUM, A. Organização Estruturada de Computadores. 4. ed. São Paulo: Prentice-Hall, 2006.

Links:

AREASEG (Site de Segurança do Trabalho). Disponível em:

<http://www.areaseg.com/sinais/numeros.html>. Acesso em: 20 mai. 2012.

CALCULADORA ONLINE. Disponível em:

<http://www.calculadoraonline.com.br/conversao-bases>. Acesso em: 15 mai. 2012.

LINHARES, Robson Ribeiro. Bases numéricas. UTPR (Universidade Tecnológica Federal do

Paraná). Disponível em: <http://www.dainf.ct.utfpr.edu.br/~robson/prof/aulas/common/bases.

htm#exerc>. Acesso em: 18 mai. 2012.

CONVERSÃO DE BASES. 2008. Disponível em:

<http://bitsebites-sistemasnumericos.blogspot.com.br/2008/05/converso-de-bases.html>.

Acesso em: 18 mai. 2012.

Page 34: Livro Arq Comp

Disciplina: Arquitetura de Computadores

33

UNIDADE 3 Representações numéricas

OBJETIVOS

Desenvolver habilidades para a manipulação e interpretação de números binários inteiros e reais, tanto positivos quanto negativos. Apresentar o processo aritmético binário visando o entendimento de desempenho computacional. Entender o processo de representação e armazenamento de dados numéricos nos computadores modernos. Facilitar o entendimento para diferenciação dos tipos de dados de uma linguagem de programação de computadores.

Representação de números inteiros (ponto fixo) Nos computadores digitais modernos, a forma mais natural de representação numérica

é o sistema binário, pois o hardware foi projetado para trabalhar com a interpretação

de somente dois sinais elétricos distintos. Assim, para a formação dos algarismos que

compõem os números nos computadores, devem-se considerar somente esses dois

sinais. Essa é a forma mais adequada e eficiente para representar e manipular números

em um computador.

Sabemos, contudo, que os números inteiros podem ser positivos ou negativos. Então, um

aspecto primordial a ser definido é como representar o sinal de um número, pois existem

somente dois símbolos disponíveis, e eles já são usados nas representações numéricas.

A solução adotada utiliza um bit para representar o sinal do número. Convencionalmente, é

usado o dígito mais significativo para indicar o sinal, comumente chamado de bit de sinal.

Como um bit pode assumir somente os valores 0 e 1, ficou convencionado ainda que, se o

bit de sinal tiver valor 0, o número é positivo; caso contrário (1), o número é negativo.

Na Tabela 4 são apresentados dois exemplos da representação de números negativos em

binário, bem como em hexadecimal e octal. É importante observar que, nas representações

na base 16 e 8, o bit de sinal é sempre considerado no processo de conversão, e os

símbolos que indicam se o número é positivo ou negativo (+ e -) só devem aparecer nas

representações em decimal.

Page 35: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

34

TABELA 4Visualização da representação de números inteiros

DECIMAL BINÁRIO HEXADECIMAL OCTAL

+9-9

127-127

0000100110001001

0111111111111111

0 Bit com valor 0 indica número positivo1 Bit com valor 1 indica número negativo

0989

7FFF

011211

177377

Observando-se a Tabela 4, verifica-se que, em uma representação binária com n bits, é possível

representar números com (n - 1) bits, pois o bit mais significativo representa o sinal, e somente

os demais bits representam o valor numérico. Essa forma de representar tem o nome de

representação em Sinal e Magnitude (S/M).

Representações em Sinal e Magnitude – S/M

Nessa representação, o número deve ser avaliado por dois campos, sendo que um deles

indica o sinal do número, e o outro, a sua magnitude. Veja pela Figura 19 uma representação

gráfica desse formato.

Sinal Magnitude

NÚMERO

FIGURA 19: Visão geral do formato Sinal e Magnitude

Page 36: Livro Arq Comp

Disciplina: Arquitetura de Computadores

35

A palavra “magnitude”, nesse contexto, significa o valor absoluto de um número. Em outras

palavras, refere-se ao módulo de um número, que pode estar representado tanto em decimal

quanto em binário, octal, ou mesmo no formato hexadecimal.

Os valores dos dígitos usados para representarem a magnitude de um número independem do

sinal desse número, isto é, sendo o número positivo ou negativo, a representação da magnitude

será a mesma; o que varia na representação é apenas o dígito de sinal.

Além da magnitude do número, deve ser avaliado o seu sinal, que é sempre determinado pelo

seu dígito mais significativo. O valor zero (0) para esse dígito indica que o número é positivo.

Para os números negativos, o valor desse dígito depende da base numérica utilizada na

representação do número. Como no sistema binário existem somente dois símbolos disponíveis

para a formação dos números, quando o valor do bit de sinal for 0 (zero), significa que o número

é positivo e, quando o seu valor for 1, indica um número negativo. Tecnicamente falando, o

algarismo usado para indicar o sinal de negativo é sempre o último símbolo disponível no sistema

numérico. Assim como no sistema binário o algarismo 1 indica o sinal de negativo, o algarismo

9 é usado no sistema decimal para indicar o sinal de negativo.

É importante ressaltar que, nos sistemas numéricos octal e hexadecimal, os algarismos 7 e F são usados para indicar o sinal de negativo somente quando o número em questão não está relacionado com algum número em binário. Por outro lado, havendo uma relação, o sinal é obrigatoriamente associado ao dígito mais significativo do número em binário.

Observe, na Figura 20, que a sequência binária 0112 equivale ao valor absoluto 3, ou seja, módulo

de 3. Verifique, ainda, as representações desse mesmo número nos sistemas octal e hexadecimal.

Representação em Sinal e Magnitude Representação ConvencionalBinário Decimal Octal Decimal Hexadecimal

0011 03 03 03 3 +31011 93 13 93 B -3

Figura 20: Equivalência das representações positivas e negativas de um número

Page 37: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

36

Faixa de representação

A representação na base b em Sinal e Magnitude com n bits (incluindo o bit de sinal) possui

bn representações, o que permite representar (bn-1) números distintos, uma vez que há duas

representações para o zero: uma para o + 0 e outra para o - 0. Deve-se observar que, no

contexto da matemática, o número 0 não tem sinal, contudo, na computação, dada a natureza

dos formatos de representações numéricas, devem ser consideradas as duas representações,

ou seja, a positiva e a negativa.

A faixa de representação de números na base 2 em Sinal e Magnitude com n bits (incluindo o

bit de sinal) possui 2n representações, sendo possível apresentar os números de - (2n-1-1) a +

(2n-1-1). Dessa forma, o maior valor inteiro possível é então + (2n-1-1), e o menor valor inteiro é -

(2n-1-1). Veja a aplicação das fórmulas pelos exemplos abaixo:

1. Considerando que uma determinada máquina trabalha com a representação de números

inteiros no formato S/M de 8 bits, indique, em decimal, o maior e o menor valor que pode

ser representado diretamente nessa máquina.

Desenvolvimento:

Como o menor valor é determinado pela equação - (2n-1-1), então:

Menor valor = - (2n-1-1), onde n é igual a 8

Menor valor = - (28-1-1) = - (128 -1) = - (127) = - 127

O maior valor é determinado pela equação + (2n-1-1), então:

Maior valor = + (2n-1-1), onde n é igual a 8

Maior valor = + (28-1-1) = + (128 -1) = + (127) = + 127

Resposta: menor valor = - 127; maior valor = + 127

2. É possível que em uma máquina que trabalha com a representação de números inteiros

no formato S/M em 13 bits represente o resultado da multiplicação dos números 1024 e

-4 diretamente?

Desenvolvimento:

Primeiro deve-se considerar que a palavra “diretamente” está se referindo à possibilidade

de representação numérica sem o uso de artifícios matemáticos e computacionais

que permitem a concatenação de números. Em linhas gerais, um computador pode

Page 38: Livro Arq Comp

Disciplina: Arquitetura de Computadores

37

manipular números que vão além da sua capacidade máxima de representação. É claro

que diversos artifícios matemáticos e computacionais devem ser empregados, mas eles

estão fora do escopo inicial desta disciplina.

Num segundo momento, deve-se calcular o limite mínimo de representação numérica na

máquina estudada pela equação - (2n-1-1). Então:

Menor valor = - (2n-1-1), onde n é igual a 13

Menor valor = - (213-1-1) = - (4096 - 1) = - (4095) = - 4095

Para finalizar, deve-se efetuar a multiplicação dos números envolvidos:

1024 x -4 = - 4096.

Resposta: Não é possível representar o resultado da multiplicação do número 1024 pelo

número -4 em uma máquina que manipula números de 13 bits no formato S/M.

Sobre o processo de manipulação numérica, observe as seguintes considerações:

a. O número de bits para a representação é determinado no projeto do computador.

b. Em situações nas quais o número a ser representado excede a capacidade máxima

que uma determinada máquina pode representar, é caracterizada um situação

denominada overflow.

c. A situação denominada underflow é tipicamente caracterizada pela impossibilidade

de representação de números menores que o menor número manipulado diretamente

pela máquina.

d. Em Sinal e Magnitude, existem duas representações para o zero.

Aritmética em Sinal e Magnitude

Algoritmo da soma

1. Verificar o sinal das parcelas.

2. Se os sinais forem iguais:

- repetir o sinal;

- somar as magnitudes.

Page 39: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

38

3. Se os sinais forem diferentes:

- verificar qual parcela tem maior magnitude;

- repetir o sinal da maior magnitude;

- subtrair a menor magnitude da maior magnitude.

4. Verificar se o resultado final está dentro dos limites possíveis (situações de underflow e overflow).

5. Apresentar o resultado da operação.

Algoritmo da subtração

1. Processar a subtração:

- verificar qual parcela tem maior magnitude;

- repetir o sinal da maior magnitude;

- subtrair a menor magnitude da maior magnitude.

2. Verificar se o resultado final está dentro dos limites possíveis (situações de underflow e

overflow).

3. Apresentar o resultado da operação.

O algoritmo da subtração é o mesmo da soma nos casos em que as parcelas possuem

sinais diferentes. Nesses casos, a subtração é feita como se fosse uma soma de dois números

que têm sinais diferentes.

Observa-se que, no processo aritmético na representação S/M, existe custo adicional, pois ele

exige um grande número de comparações para realizar uma simples soma ou subtração de

dois números inteiros. Os algoritmos acima descritos são mais onerosos de serem realizados

no computador, pois resultam em uma baixa eficiência computacional (execução lenta), tendo

em vista a necessidade de comparações entre os operandos. Outro ponto negativo dessa

representação está associado ao fato de que existem duas representações para o número

zero, o que torna mais trabalhoso o desenvolvimento de programas numa linguagem de alto

nível, pois, ao comparar o conteúdo de uma variável com o zero, devem-se considerar os dois

formatos do zero. Assim, uma simples comparação com o número zero leva o programador à

seguinte estrutura: if ( (Cont == –0) or (Cont == +0) ).

Page 40: Livro Arq Comp

Disciplina: Arquitetura de Computadores

39

Diante das dificuldades apresentadas pela representação S/M, os engenheiros passaram a usar

a representação complementar de números negativos no projeto de sistemas digitais. É claro

que ainda existem máquinas que manipulam números no formato S/M, como os processadores

de sinais da Motorola (XC5630P) ou da Texas (TMS320C62x).

Representação de números no formato complementarUma segunda alternativa de representação numérica que utiliza os mesmos algarismos tanto para

indicar a magnitude quanto para indicar o sinal do número é a representação complementar. Nela,

deve-se considerar que o complemento de qualquer número é a diferença entre o valor de cada

algarismo desse número e o valor do maior número possível com um mesmo algarismo, da base.

Tomando como exemplo o sistema decimal, no qual o maior número possível é formado pela

repetição do algarismo 9, pode-se considerar que o complemento do número 385 é 614, pois:

999385614

Note que o maior algarismo da base deve ser repetido o número de vezes igual à quantidade de

algarismos do número cujo complemento se deseja calcular. Para o sistema binário, é simples

calcular o complemento de um número, pois, como só existem dois símbolos, o complemento

de 0 é 1 e o complemento de 1 é 0. O complemento do número 1001102 é 0110012.

Uma vantagem da utilização da representação em complemento é que as operações aritméticas

são efetuadas diretamente, sem a necessidade de avaliação inicial dos operandos, e a subtração

entre dois números pode ser substituída pela sua soma em complemento.

Representação de números positivos em complemento

A representação de números positivos em complemento não tem qualquer alteração, isto é,

é idêntica à representação em Sinal e Magnitude, observando-se que o dígito de sinal é o

algarismo zero (0 indica positivo).

Page 41: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

40

Representação de números negativos em complemento a (base -1)

Nesse formato de representação, os números inteiros negativos são obtidos a partir da

representação positiva de cada um dos números, com o cálculo do seu complemento. Dessa

forma, ao calcular o complemento a (base -1) de um número positivo, encontramos a sua

representação em negativo e vice-versa. Deve-se lembrar que o dígito de sinal sempre será o

dígito mais significativo do número. Por convenção, o algarismo/símbolo usado para indicar o sinal

de negativo é o ultimo algarismo do sistema numérico, ou seja, o algarismo/símbolo (base -1).

Para entender melhor, observe os exemplos abaixo:

1. Calcule o complemento a (base - 1) do número +26110 com 4 algarismos decimais.

Desenvolvimento:

- Determinar (base-1). Como a base é 10, então (base - 1) = (10 – 1) = 9 e o

complemento a (base -1) será igual a complemento a 9, ou simplesmente C9.

- Normalizar o número para 4 algarismos. Como o número +26110 é positivo, então o

dígito de sinal será 0. Portanto +26110 normalizado para 4 dígitos é 026110

- Calcular o C9 do número 0261:

999902619738

Resultado:

- Complemento a 9 do número +26110 = 973810

2. Calcule o complemento a (base - 1) do número 951C16, usando 4 algarismos em

hexadecimal.

Desenvolvimento:

- Convencionalmente, para a computação, não existe sinal de positivo ou negativo

nas representações em binário, octal e hexadecimal. Para essa indicação, deve

ser considerado o número no formato em binário e avaliar o valor do bit mais

significativo (um valor zero indica um número positivo e 1 indica um número negativo).

De toda forma, é só processar o cálculo do complemento a (base-1) diretamente.

Page 42: Livro Arq Comp

Disciplina: Arquitetura de Computadores

41

- Considerando que a base é 1610 e o número 1610 é igual ao número 1016, então (base -

1) = (1016 – 1) = F16 e o complemento a (base -1) será igual a complemento a F.

- Assim, o CF do número 951C:

FFFF951C6AE3

Resultado:

- Complemento a F do número 951C16 = 6AE316

Considerando os exemplos apresentados, é possível inferir que, para obter o

complemento a 1 de um número binário, deve-se subtrair cada algarismo do número de 1.

Uma particularidade dos números binários é que, para efetuar essa operação, basta

inverter todos os bits. Observe, na Tabela 5, a relação dos números binários de 4 dígitos

na representação em C1.

TABELA 5

Representação binário em C1 com 4 bits

Binário C1

0000000100100011010001010110011111111110110111001011101010011000

1111111011011100101110101001100000000001001000110100010101100111

Page 43: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

42

Tal como na representação em Sinal e Magnitude, sempre que em uma representação em

complemento o primeiro dígito binário for 1, o número representado é negativo, sendo que

o dígito mais significativo igual a zero indica que o número é positivo. Assim, o zero pode ser

representado tanto por 00002 quanto por 11112.

Faixa de representação

A representação na base b em complemento a (base -1), com n bits, possui bn representações,

o que permite representar (bn–1) valores. O problema de haver duas representações para o zero

não está solucionado com essa representação. A faixa numérica da representação na base 2

no formato complemento a (base-1), com n bits, é a mesma que no formato Sinal e Magnitude,

podendo ser calculada como 2n valores, variando de -(2n-1-1) a +(2n-1-1), de forma que o maior

valor inteiro positivo será então +( 2n-1-1), e o menor valor inteiro negativo será -(2n-1-1). Abaixo,

são apresentados exemplos de aplicação das fórmulas:

1. Considerando que uma determinada máquina trabalha com a representação de números

inteiros no formato C1 com 8 bits, indique em decimal o maior e o menor valor que pode

ser representado diretamente nessa máquina.

Desenvolvimento:

Como o menor valor é determinado pela equação - (2n-1-1), então:

Menor valor = - (2n-1-1), onde n é igual a 8

Menor valor = - (28-1-1) = - (128 -1) = - (127) = - 127

O maior valor é determinado pela equação + (2n-1-1), então:

Maior valor = + (2n-1-1), onde n é igual a 8

Maior valor = + (28-1-1) = + (128 -1) = + (127) = + 127

Resposta: menor valor = - 127; maior valor = +127

2. É possível que uma máquina que trabalha com a representação de números inteiros no formato

C1 em 13 bits represente o resultado da multiplicação dos números 1024 e -4 diretamente?

Desenvolvimento:

Novamente, deve-se considerar primeiro que a palavra “diretamente” está se referindo

à possibilidade de representação numérica sem o uso de artifícios matemáticos e

Page 44: Livro Arq Comp

Disciplina: Arquitetura de Computadores

43

computacionais que permitem a concatenação de números, já que eles estão fora do

escopo inicial desta disciplina.

Num segundo momento, deve-se calcular o limite mínimo de representação numérica

na máquina estudada pela equação - (2n-1-1). Então:

Menor valor = - (2n-1-1), onde n é igual a 13

Menor valor = - (213-1-1) = - (4096 - 1) = - (4095) = - 4095

Para finalizar, deve-se efetuar a multiplicação dos números envolvidos:

1024 x -4 = - 4096.

Resposta: Não é possível representar o resultado da multiplicação do número 1024

pelo número -4 em uma máquina que manipula números de 13 bits no formato C1.

Assim como no formato S/M, o número de bits dos números manipulados em um

computador que trabalha com o formato de representação C1 depende exclusivamente

do projeto do computador. Situações de overflow e underflow podem ocorrer em função

dos números manipulados. Apesar de continuar com duas representações para o

número zero, a aritmética desse sistema é otimizada, se comparada com a aritmética

praticada no formato S/M, o que torna a representação em C (base-1) mais interessante

do que a representação em S/M.

Aritmética em complemento a (base -1)

Na aritmética em complemento a (base-1), as operações de adição e subtração são efetuadas

diretamente, sem a necessidade de comparações iniciais, como na aritmética em S/M, pois

deve-se levar em conta que os números negativos são representados pelo complemento do

mesmo número em positivo. Dessa forma, não existe um procedimento para adição e outro

distinto para a subtração; essas operações são realizadas diretamente pelo processo de adição

complementar de um número. A única regra diferente daquelas a que estamos habituados é

que, quando existe o chamado “vai um” do dígito mais significativo, esse transbordo deve ser

adicionado ao número final.

Com relação à análise do resultado final, deve-se observar o dígito de sinal, pois, se estamos

somando números positivos, o resultado só pode ser positivo; da mesma forma, quando estamos

Page 45: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

44

somando números negativos, temos como resultado esperado somente um número negativo.

Caso ocorra um resultado diferente do esperado, o número final está sendo considerado um

erro de overflow ou underflow, conforme o caso. Analise os exemplos abaixo.

1. Efetue a adição do número +32610 com o número -13610. A operação deverá ser

realizada em complemento a (base -1) com 4 algarismos.

Desenvolvimento:

- Primeiro passo: determinar (base-1). Considerando que a base é 10, então

(base - 1) = (10 – 1) = 9.

- Segundo passo: normalizar os números para 4 dígitos em C9 e representar no formato

complementar, conforme o caso.

• O número positivo é representado com um zero na casa mais significativa. Assim,

+32610 = 032610 em C9 4 dígitos.

• Para representar o complemento a (base-1) de um número em decimal negativo,

calcula-se o complemento a (base-1) do módulo normalizado do referido número.

Então, para -136, temos o módulo normalizado em 4 dígitos igual a 0136.

• Na sequência determina-se o complemento do módulo obtido no passo anterior.

Assim:

999901369863

• Agora, basta somar os números obtidos após a normalização, ou seja, 0326 + 9863.

032698630189 10190

1 1

O “vai 1” final deve ser adicionado ao resultado final

Page 46: Livro Arq Comp

Disciplina: Arquitetura de Computadores

45

Resultado:

2. O resultado final da operação aritmética de adição realizada entre os números +32610

e -13610 é 0190, ou seja, +190 na interpretação decimal pura. Analisando o resultado

final, como estamos subtraindo um número negativo de um positivo, pode-se esperar

um resultado tanto positivo quanto negativo, dependendo somente da magnitude dos

números envolvidos.

3. Efetue a subtração entre o número +32610 e o número -13610. A operação deve ser

realizada em complemento a (base -1) com 4 algarismos.

Desenvolvimento:

- Primeiro passo: avaliar o que deve ser feito. 326 – (– 136 ), o que de certa forma

é igual à soma 326 + 136. Em outras palavras, ao calcular o complemento do

complemento de um número, estamos voltando ao número original. Verifique os dois

sinais negativos na expressão inicial.

- Segundo passo: normalizar os números para 4 dígitos em C9 e representar no formato

complementar, conforme o caso.

4. O número positivo é representado com um zero na casa mais significativa. Assim, +32610

= 032610 em C9 4 dígitos e o número 13610 = 013610 em C9 4 dígitos.

• Agora, basta somar os números obtidos após a normalização, ou seja, 0326 + 0136.

032601360462 00462

0 1

Resultado:

O resultado final da operação aritmética de subtração entre os números +32610 e -13610 é 0462, ou seja +462 na interpretação decimal pura.

Page 47: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

46

Deve-se observar que, com a representação em complemento a (base-1), os problemas

computacionais da representação em S/M foram parcialmente resolvidos. Na verdade, a

complexidade inicial da aritmética foi diminuída consideravelmente, mantendo-se somente

o problema das duas representações para o número zero. A maioria dos processadores

do mercado possui instruções de compatibilidade com os formatos em complemento

a (base -1), ou melhor, em complemento a 1, pois os sistemas computacionais operam

com o sistema binário (base 2).

Representação de números negativos em complemento a baseA representação dos números inteiros negativos em complemento a base é uma alternativa

melhorada dos formatos anteriormente estudados, pois resolve o problema da dupla

representação para o número zero, bem como apresenta uma melhoria no algoritmo da

aritmética. Quanto ao número positivo, deve-se considerar que sua representação é igual ao

formato Sinal e Magnitude e complemento a (base-1). Para calcular o complemento a base de

um determinado número, basta obter o complemento a (base -1) desse número e somar uma

unidade. Veja pelos exemplos abaixo o procedimento de cálculo:

1. Calcule o complemento a base do número +26110 com 4 algarismos decimais.

Desenvolvimento:

- Como a base é 10, então o complemento a base será igual ao complemento a 9 mais

uma unidade, ou seja, C10 = (C9 +1).

- Normalizar o número para 4 algarismos. Como o número +26110 é positivo, então o

dígito de sinal será 0. Portanto, +26110, normalizado para 4 dígitos, é 026110.

- Calcular o C9 do número 0261:

999902619738

- Somar uma unidade ao resultado do passo anterior, ou seja, como C10 = C9 + 1, então:

9738 19739

Page 48: Livro Arq Comp

Disciplina: Arquitetura de Computadores

47

Resultado:

- Complemento a 10 do número +26110 = 973910

2. Calcule o complemento a base do número 951C16, usando 4 algarismos em hexadecimal.

Desenvolvimento:

- Convém lembrar mais uma vez que convencionalmente, para a computação, não

existe sinal de positivo ou negativo nas representações em binário, octal e hexadecimal.

Para essa indicação, deve ser considerado o número no formato em binário e avaliar

o valor do bit mais significativo (um valor zero indica um número positivo e 1 indica

um número negativo). De toda forma, é só processar o cálculo do complemento a

base diretamente.

- Considerando que a base é 1610, então base -1 = F.

- Para calcular o CF do número 951C, não é necessário normalizar, pois o número

usado já está com 4 dígitos. Assim:

- Incrementar uma unidade ao resultado do item anterior:

Resultado:

- Complemento 16 do número 951C16 = 6AE416

Na adição realizada para calcular o complemento a base, quando houver o “vai 1” do

dígito mais significativo, devemos descartá-lo, ao contrário da operação em complemento

a (base – 1), na qual o excesso é incremento ao número restante. Essa regra faz parte

do procedimento usado para efetuar as operações aritméticas. Na Figura 21, é possível

visualizar o significado da regra.

072693360062

1 1 1O “vai 1” final deve ser desconsiderado

FIGURA 21: Operação aritmética em complemento a base (descartar o “vai 1”)

Adotando o procedimento para cálculo dos números negativos em complemento a base, pode-

se verificar que o número zero possui somente uma representação, ou seja, a representação

Page 49: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

48

positiva; deixa-se a representação negativa para ser usada na representação de mais um número

negativo. Observe na Tabela 6 a relação de números em complemento 2 (C2) de 4 dígitos e o

seu correspondente em decimal.

TABELA 6 Relação de números em C2 4 bits

Decimal Binário C2 Hexadecimal Octal0

+1+2+3+4+5+6+7-8-7-6-5-4-3-2-1

0000000100100011010001010110011110001001101010111100110111101111

0123456789ABCDEF

012345671011121314151617

Faixa de representação

A representação na base b em complemento a base com n bits possui bn representações, o

que permite representar bn valores. Como existe somente uma representação para o zero, há

mais um número negativo representado. Assim, a faixa numérica da representação na base 2

no formato complemento a base, com n bits, é calculada como 2n valores, variando de -(2n-1) a

+(2n-1-1), de forma que o maior valor inteiro positivo será então +( 2n-1-1), e o menor valor inteiro

negativo será -(2n-1). Abaixo são apresentados exemplos de aplicação das fórmulas:

1. Considerando que uma determinada máquina trabalha com a representação de números

inteiros no formato C2 com 8 bits, indique em decimal o maior e o menor valor que pode

ser representado diretamente nessa máquina.

Page 50: Livro Arq Comp

Disciplina: Arquitetura de Computadores

49

Desenvolvimento:

Como o menor valor é determinado pela equação - (2n-1), então:

Menor valor = - (2n-1), onde n é igual a 8

Menor valor = - (28-1) = - (128 ) = - (128) = - 128

O maior valor é determinado pela equação + (2n-1-1), então:

Maior valor = + (2n-1-1), onde n é igual a 8

Maior valor = + (28-1-1) = + (128 -1) = + (127) = + 127

Resposta: menor valor = - 128; maior valor = +127

2. É possível que em uma máquina que trabalha com a representação de números inteiros

no formato C2 em 13 bits represente o resultado da multiplicação dos números 1024 e

-4 diretamente?

Desenvolvimento:

Novamente, considera-se, em primeiro lugar, que a palavra “diretamente” está se

referindo à possibilidade de representação numérica sem o uso de artifícios matemáticos

e computacionais que permitem a concatenação de números.

Num segundo momento, deve-se calcular o limite mínimo de representação numérica na

máquina estudada pela equação - (2n-1). Então:

Menor valor = - (2n-1), onde n é igual a 13

Menor valor = - (213-1) = - (4096) = - 4096

Para finalizar, deve-se efetuar a multiplicação dos números envolvidos:

1024 x -4 = - 4096.

Resposta: Sim, é possível representar o resultado da multiplicação do número 1024

pelo número -4, em uma máquina que manipula números de 13 bits no formato C2.

O número de bits dos números manipulados em um computador que trabalha com

o formato de representação C2 depende exclusivamente do projeto do computador.

Situações de overflow e underflow podem ocorrer em função dos números manipulados.

O procedimento de execução das operações aritméticas é otimizado em relação aos

demais formatos de representação, sendo o mais utilizado nos processadores atualmente.

Page 51: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

50

Aritmética em complemento a base

Na aritmética em complemento a base, as operações de adição e subtração são efetuadas

diretamente, sem a necessidade de comparações iniciais, como na aritmética em S/M, pois

deve-se levar em conta que os números negativos são representados pelo complemento do

mesmo número em positivo. Dessa forma, não existe um procedimento para adição e outro

distinto para a subtração. Essas operações são realizadas diretamente pelo processo de adição

complementar de um número. A única regra diferente daquelas a que estamos habituados é

que, quando existe o chamado “vai um” do dígito mais significativo, esse transbordo deve ser

ignorado, não sendo adicionado ao número final.

Com relação à análise do resultado final, deve-se observar o dígito de sinal, pois, se estamos

somando números positivos, o resultado só pode ser positivo; da mesma forma, quando

somamos números negativos, temos como resultado esperado somente um número negativo.

Caso ocorra um resultado diferente do esperado, o número final está sendo considerado um

erro de overflow ou underflow, conforme o caso. Analise os exemplos abaixo:

1. Efetue a adição do número +32610 com o número -13610. A operação deverá ser realizada

em complemento a base com 4 algarismos.

Desenvolvimento:

- Primeiro passo: determinar base. Considerando que a representação dos números

está no sistema decimal, então base = 10.

- Segundo passo: normalizar os números para 4 dígitos em C10 e representar no

formato complementar, conforme o caso.

• O número positivo é representado com um zero na casa mais significativa. Assim,

+32610 = 032610 em C10 4 dígitos.

• Para representar o complemento a base de um número em decimal negativo, calcula-

se o complemento (base-1) do módulo normalizado do referido número e soma-se

uma unidade. Então, para -136, temos o módulo normalizado em 4 dígitos igual a 0136.

• Na sequência, determina-se o complemento do módulo obtido no passo anterior. Assim:

999901369863

Page 52: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

51

• Soma-se uma unidade ao resultado obtido: 9863 + 1 = 9864

• Agora, basta somar os números obtidos após a normalização, ou seja, 0326 + 9864.

Resultado:

O resultado final da operação aritmética de adição realizada entre os números +32610

e -13610 é 0190, ou seja, +190 na interpretação decimal pura. Analisando o resultado

final, como estamos subtraindo um número negativo de um positivo, pode-se esperar

um resultado tanto positivo quanto negativo, dependendo somente da magnitude dos

números envolvidos.

2. Efetue a subtração entre o número +32610 e o número -13610. A operação deve ser

realizada em complemento a base com 4 algarismos.

Desenvolvimento:

- Primeiro passo: avaliar o que deve ser feito. 326 – (– 136 ), o que de certa forma

é igual à soma 326 + 136. Em outras palavras, ao calcular o complemento do

complemento de um número, estamos voltando ao número original. Verifique os dois

sinais negativos na expressão inicial.

- Segundo passo: normalizar os números para 4 dígitos em C10 e representar no

formato complementar, conforme o caso.

• O número positivo é representado com um zero na casa mais significativa. Assim,

+32610 = 032610 em C10 4 dígitos e o número 13610 = 013610 em C10 4 dígitos.

• Agora, basta somar os números obtidos após a normalização, ou seja, 0326 + 0136.

0326 1

01360462

Resultado:

O resultado final da operação aritmética de subtração entre os números +32610 e -13610

é 0462, ou seja, +462 na interpretação decimal pura.

Deve-se observar que, com a representação em complemento a base, os problemas

computacionais com relação à aritmética e à representação ambígua para o zero

Page 53: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

52

foram resolvidos, mantendo-se somente o inconveniente do desbalanceamento na

representação numérica, ou seja, no formato de representação em complemento a base,

a quantidade de números positivos representados é menor que a de números negativos.

Representação de números reaisPor natureza, os números reais são difíceis de serem representados computacionalmente,

pois exigem técnicas mais refinadas para armazenamento e processamento. Considerando

a classe de problema, os números podem ser muito extensos ou mesmo infinitos, como

dízimas periódicas e números irracionais. Dessa forma, truncá-los é inevitável, o que, no final,

pode influenciar negativamente no processo de cálculo, diminuindo a sua precisão.

Desde os primórdios da computação, duas abordagens prevalecem para representá-los. Uma

é a técnica denominada representação em ponto fixo e outra é a representação em ponto

flutuante. Explicando melhor, a palavra “ponto” pode ser substituída pela palavra “vírgula”, ou

seja, representação em vírgula fixa e em vírgula flutuante. Os problemas apresentados por

essas representações estão relacionados com a maneira de registrar a faixa de variação do

número e a sua precisão numérica.

A representação em ponto fixo é a mais indicada para máquinas projetadas para aplicações

específicas, ou seja, computadores projetados para uma determinada classe de aplicações.

Nesses computadores, os limites máximos e mínimos a serem representados são definidos

diretamente pelo hardware ao longo do projeto. Por exemplo, se uma máquina foi projetada

para manipular somente números de 34 dígitos à esquerda do ponto decimal e 28 dígitos à

direita desse ponto, não será adequado trabalhar com sistemas que necessitam manipular

números que exigem uma precisão de 40 dígitos à esquerda e 22 dígitos à direita. Observe

que a quantidade de dígitos usados nas representações é a mesma, mas existe uma restrição

específica de hardware que não permite a variação da posição do ponto.

As representações em ponto flutuante são mais flexíveis, se considerarmos que é possível

atender a diversas classes de problemas com uma mesma máquina, pois podemos, de forma

dinâmica, ajustar tanto o número de dígitos que precedem o ponto quanto os dígitos que

estão à direita do ponto. Nessa alternativa, a faixa de variação do número está separada

da sua precisão numérica, usando-se o método de notação científica: n = i.f x 10e, onde

n é um número real e i representa a parte inteira, sendo separado por um ponto de f. O f é

Page 54: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

53

conhecido como fração ou mantissa e e é um número inteiro positivo ou negativo conhecido

como expoente. A Figura 22 apresenta alguns exemplos de números expressos nesse formato.

0,000001 3,14

19410,1 x 10-5

0,314 x 101

0,1941 x 104

=

=

=

1,0 x 10-6

3,14 x 100

1,941 x 103

=

=

=

FIGURA 22: Representação em ponto flutuante

Esse método é conhecido como representação em ponto flutuante. Nele, a faixa de variação

dos números é determinada pela quantidade de dígitos do expoente e a precisão é determinada

pela quantidade de dígitos da mantissa. Como há mais de uma maneira de representar números

nessa notação, deve-se escolher uma delas como padrão. Para investigar as propriedades desse

método de representação de números, considere uma representação R, com uma mantissa de

três dígitos com sinal, na faixa de 0.1≤ | f | < 1 ou zero e um expoente de dois dígitos com sinal.

Tais números têm uma faixa de variação que vai de +0.100 x 10-99 a + 0,999 x 10+99, que se

expande por mais ou menos 199 ordens de magnitude, apesar de ser necessário usar só cinco

dígitos e dois sinais para armazenar números expressos nessa notação.

Os números em ponto flutuante podem ser usados para representar o sistema de números

reais da matemática, apesar de haver algumas diferenças importantes. A Figura 23 mostra um

esquema da reta dos números reais visando apresentar essas diferenças.

Overownegativo

Overowpositivo

Underowpositivo

Números negativos expressíveis

Números positivos expressíveis

Overow

3

1 2 6 74

Zero

5

-100100

-100100

-100100

-100100

0

Underownegativo

FIGURA 23: A reta real dividida em regiões

Page 55: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

54

A reta foi dividida em sete regiões:

• Números negativos grandes, menores que – 0.999 x 1099

• Números negativos entre – 0.999 x 1099 e – 0.100 x 10-99

• Números negativos pequenos, com magnitudes menores que 0.100 x 10-99

• Zero

• Números positivos pequenos, com magnitudes menores que 0.100 x 10-99

• Números positivos entre 0.100 x 10-99 e 0.999 x 1099

• Números positivos grandes, maiores que 0.999 x 1099

A principal diferença entre os números representados com mantissas de três dígitos e expoentes

de dois e os números reais é que a primeira representação não pode ser usada para expressar

números nas regiões 1, 3, 5, ou 7. Se o resultado de uma operação gerar um número na região 1

ou 7, vai ocorrer um erro de overflow. A razão dessa incorreção é a natureza finita da representação

desses números. Da mesma maneira, um resultado nas regiões 3 e 5 vai gerar um erro de underflow.

Outra diferença importante entre os números em ponto flutuante e os números reais é a sua

densidade. Entre dois números reais quaisquer, existe outro número real, não importa quanto um

está próximo do outro, pois os números reais variam de forma contínua. Já os números em ponto

flutuante variam de forma discreta, ou seja, existe uma determinada quantidade de números em

ponto flutuante que podem ser representados. Se o resultado de uma operação não puder ser

expresso na representação usada, será efetuado um arredondamento. Essa operação consiste

em escolher o número mais próximo do resultado esperado. Em outras palavras, usando-se a

representação em ponto flutuante, existe um erro relativo introduzido pelo arredondamento, tanto

para números grandes quanto para números pequenos.

Representação IEEE 754 para números em ponto flutuanteNos computadores, é utilizada uma variante da representação em ponto flutuante denominada

IEEE 754, podendo ser de precisão simples ou dupla, com 32 ou 64 bits respectivamente. Por

questões de eficiência, a exponenciação e a representação da mantissa são feitas na base

2, em detrimento da base 10. Deve-se considerar, ainda, que a parte inteira da representação

possui somente um bit, e que o valor desse bit deve ser sempre um. Para satisfazer tal

condição, é necessário que o bit mais à esquerda da mantissa seja deslocado uma posição à

esquerda, sendo o expoente decrementado de uma unidade, sem que o valor do número sofra

modificações, até que a condição seja satisfeita. Essa representação normalizada é melhor que

Page 56: Livro Arq Comp

Disciplina: Arquitetura de Computadores

55

a não normalizada, pois garante somente uma forma de representar o número. Além disso, a

combinação do 1 implícito (parte inteira em binário), do ponto binário implícito e do 23 ou 52 bits

é chamada de significante, em vez de mantissa.

Usando o conceito de significante e visando garantir maior eficiência computacional, a parte

inteira do número, bem como o ponto binário, não são armazenados de acordo com o formato

IEEE 754. Na Figura 24, são apresentados os formatos em precisão simples e dupla. Perceba que

é o somatório da quantidade de bits de cada campo que define a precisão da representação.

Bits

Sinal

Bits

1

1

8

11

23

Bits

(a)

(b)

52

Expoente Significante

Expoente Significante

Sinal

FIGURA 24: Formatos IEEE 754. (a) Precisão simples. (b) Precisão dupla

As características numéricas dos números em ponto flutuante expressos no formato IEEE 754

são apresentadas na Tabela 7. Perceba que o expoente é representado em excesso, de 127 ou

1023, conforme o caso. Esse tipo de representação é usado para não haver necessidade de

armazenamento de números negativos no expoente, pois, se desejamos armazenar o valor -127

como expoente de um número em ponto flutuante, devemos adicionar 127, o que resultará no

valor zero. Expoente menor que -127 ou maior que +127 não é possível armazenar usando o

padrão IEEE 754. Outra consideração sobre a Tabela 7 é sobre o valor do bit de sinal do número.

Quando o valor desse bit for zero, o número é positivo; se o valor for 1, o número é negativo.

TABELA 7Características do formato IEEE 754

Ítem Precisão simples Precisão duplaBits do campo de sinal 1 1Bits do campo de expoente 8 11Bits do campo da mantissa / significante 23 52Número total de bits 32 64Sistema de representação do expoente Excesso 127 Excesso 1023Faixa de variação do expoente -126 a +127 -1022 a +1023

Page 57: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

56

O padrão IEEE 754 define alguns outros tipos numéricos para atender situações nas quais os

números não estão normalizados ou mesmo indicar situações críticas de operações aritméticas.

O formato especial chamado NaN (Not a Number) indica, por exemplo, o resultado de infinito

dividido por infinito, que é indefinido. Veja a relação dos formatos IEEE 754 na Tabela 8.

TABELA 8Tipos numéricos IEEE 754

Normalizado 0<Exp< Max Qualquer configuração de bits+-

+-Não-Normalizado 0 Qualquer configuração de bits

+-Zero 0 0

+-Infinito 111.... 1 0

+-Not a number 111.... 1 Qualquer configuração de bits

Exemplo de representação do número 0,5 nos formatos de precisão simples e dupla.

Desenvolvimento:

1. Converter o número 0,5 para binário. Usando o processo descrito na Unidade 2, temos

que 0,5 = 0,12.

2. Normalizar o número deixando a parte inteira valendo 1, encontrando o significante.

Então, 0,5 normalizado na base 2 é igual a 1,0 x 2-1 (significante = 0).

3. Calcular o valor do expoente com excesso e converter para binário 8 ou 11 bits:

a. Para precisão simples (8 bits) + 127: -1 + 127 = 126

Expoente = 011111102

b. Para precisão dupla (11 bits) + 1023: -1 + 1023 = 1022

Expoente = 011111111102

4. Definir o sinal. Como o número 0,5 é positivo, sinal = 0

5. Montar o número no padrão IEEE, concatenar as seguintes partes:

sinal+expoente+significante:

Page 58: Livro Arq Comp

Disciplina: Arquitetura de Computadores

57

a. Precisão simples:

0+01111110+00000000000000000000000

b. Precisão dupla:

0+01111111110+00000000000000000000000000000000000000000000000

6. Como é trabalhoso manipular números em binário, apresentar a solução em hexadecimal.

Então:

a. Precisão simples:

0011.1111.0000.0000.0000.0000.0000.00002 = 3F00000016

b. Precisão dupla:

0011.1111.1110.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.

00002 = 3FE000000000000016

Deve-se registrar que, adotando o procedimento inverso, é possível converter do formato

IEEE para decimal.

Nesta unidade foram apresentados formatos de representações para números positivos

e negativos, tanto inteiros quanto reais. A escolha do formato usado em um determinado

processador é prerrogativa dos engenheiros projetistas, quando estão definindo a arquitetura da

máquina. Deve-se observar que os formatos apresentados estão intimamente associados aos

tipos de dados das linguagens de programação.

Tomando a linguagem C como exemplo, o tipo de int está associado ao formato de representação

complemento a base. Como o computador trabalha com o sistema binário, o tipo int representa

números no formato C2 em 16 bits. Então, é possível explicar por que o maior número

armazenado em uma variável desse tipo é +32767 e o menor é -32768. Com base nos conteúdos

apresentados, também é possível entender mensagens de erros do tipo “NaN error”, geralmente

apresentadas em aplicações Windows. Quando isso acontece, certamente o resultado de uma

operação resultou em um número não identificado pela linguagem, ocasionando a mensagem

e, muito provavelmente, a parada do sistema.

Page 59: Livro Arq Comp

UNIDADE 3: REPRESENTAÇÕES NUMÉRICAS

58

ReferênciasSTALLINGS, W. Arquitetura e Organização de Computadores. 5. ed. São Paulo:

Pearson Education do Brasil, 2002.

TANENBAUM, A. Organização Estruturada de Computadores. 4. ed. São Paulo:

Prentice-Hall, 2006.

Page 60: Livro Arq Comp

Disciplina: Arquitetura de Computadores

59

UNIDADE 4Sistemas digitais

OBJETIVOS

Conhecer e aplicar as propriedades da álgebra booliana no modelamento matemático de problemas computacionais; desenvolver habilidades para solucionar problemas matemáticos usando circuitos lógicos; interpretar o funcionamento de circuitos digitais; reconhecer e construir blocos lógicos usados na Organização de Computadores.

Circuitos lógicos Todos os dispositivos digitais são implementados por circuitos eletrônicos denominados

circuitos digitais. Como os circuitos eletrônicos são mais complexos e, portanto, mais difíceis

de serem analisados e entendidos por pessoas que não possuem uma formação específica

em eletrônica, é comum encontrar representações gráficas de circuitos digitais organizadas em

diagramas de blocos lógicos, estruturados de forma que cada um dos blocos apresenta uma

funcionalidade, sendo, na maioria das vezes, diferente dos demais blocos. Deve-se considerar,

ainda, que cada bloco está projetado para receber sinais de entrada, processá-los e apresentar

os resultados nos seus terminais de saída.

A maneira como um circuito digital responde a um estímulo de entrada é denominada de

“lógica do circuito”; daí surge o nome “circuito lógico”. Matematicamente, a lógica do circuito

é totalmente baseada na álgebra booliana, pela qual é possível expressar a relação entre as

entradas e saídas de um circuito lógico. De acordo com as bases da álgebra booliana, os

resultados de uma expressão lógica, bem como o valor de cada uma das variáveis que formam

uma expressão lógica, podem assumir apenas um de dois valores distintos, por exemplo, falso

ou verdadeiro, ligado ou desligado, sendo o mais comum 0 ou 1. Na prática, esses valores

lógicos estarão associados a grandezas físicas como a tensão ou a corrente elétrica.

Por meio da Figura 25, é possível visualizar as diferenças entre o circuito digital e a representação

do bloco lógico de um circuito somador de 2 bits. Note que toda a complexidade da organização

do circuito eletrônico foi abstraída a partir do uso de símbolos gráficos para descrever a

Page 61: Livro Arq Comp

UNIDADE 4: SISTEMAS DIGITAIS

60

funcionalidade do bloco. Veja pelo sinal de adição e pelos nomes das linhas de entrada e saída,

bem como pela equação matemática que define o comportamento lógico do bloco.

S0

C0

A0

B0+

+ 5v + 5v + 5v

Q2

Q3

Q4

4 kΩ

1130 kΩ

1,6 kΩ1 kΩ

AB

S0

Diagrama Circuito em Bloco

Diagrama Circuito Eletrônico

Figura 25: Representações de um circuito digital

Porta lógicaO termo “porta” surge da necessidade de controlar a passagem de sinais lógicos ao longo do

circuito. O controle é efetuado pelas operações de habilitar/desabilitar, na medida em que cada

porta lógica pode ser utilizada para controlar a passagem de sinal lógico da entrada para a

saída. O valor/nível lógico da entrada de controle determina se o sinal de entrada está habilitado

a alcançar a saída ou impedido (desabilitado) de alcançá-la. Admite-se que as portas lógicas

também são dispositivos, ou circuitos lógicos, que operam um ou mais sinais lógicos de entrada

para produzir uma saída, que depende da função implantada no circuito. Tais dispositivos

implementam fisicamente as funções da álgebra booliana (soma, produto e complementação).

Page 62: Livro Arq Comp

Disciplina: Arquitetura de Computadores

61

Nível lógicoO nível lógico, também denominado valor lógico, que cada uma das entradas e saídas de

um bloco ou porta lógica pode assumir, bem como os valores das variáveis das expressões

boolianas, é o 0 ou o 1, que não representam necessariamente os números, mas os estados

possíveis na lógica booliana. Nos circuitos digitais, esses níveis são representados, na maioria

das vezes, pelo nível de tensão elétrica. A Figura 26 apresenta um gráfico associando a

tensão do circuito elétrico com o nível lógico adotado para os circuitos digitais implementados

usando a tecnologia TTL (Transistor-Transistor Logic) padrão. De acordo com a tecnologia de

implementação, a relação nível lógico e tensão tende a mudar. As diferentes tecnologias de

implementação não são excludentes e nem mesmo concorrentes. Deve-se considerar que são

complementares para circuitos lógicos que necessitam de alta velocidade de comutação dos

sinais lógicos. Ou seja, para portas lógicas mais rápidas, deve ser usada uma tecnologia. Por

outro lado, se o consumo de energia elétrica é mais importante no projeto de hardware do

dispositivo digital, emprega-se outra tecnologia.

5v

2v

0,8v

0v

Nível lógico 1

Faixa de tensão inválida

Nível lógico 0

Figura 26: Níveis lógicos x níveis de tensão para dispositivos TTL

Expressões boolianasComo mencionado anteriormente, o comportamento dos circuitos lógicos é descrito aplicando-

se as regras da álgebra booliana, que, por sua vez, é fundamentada por expressões lógicas ou

Page 63: Livro Arq Comp

UNIDADE 4: SISTEMAS DIGITAIS

62

expressões boolianas. Cada expressão é formada por um conjunto de variáveis lógicas e de

operadores lógicos. Como regra básica, o valor que cada variável pode armazenar é somente

um, de um grupo de dois valores possíveis. Por convenção, serão utilizados somente os valores

0 e 1, mas podem ser quaisquer outros dois valores distintos.

Por outro lado, os operadores boolianos definem as regras de relacionamento entre as

variáveis, e são divididos em classes, conforme sua complexidade. A classe denominada

de operadores básicos é caracterizada pela implementação em uma única porta lógica. Já

a classe chamada de operadores compostos é formada por operadores implementados

por duas ou mais portas lógicas. Ainda sobre operadores, eles também se caracterizam pelo

número de variáveis que estão associadas na operação, podendo ser chamados de unários,

quando admitem somente uma variável na operação, e binários, na medida em que admitem

duas variáveis para a operação.

Operador básico unário

Existe somente um operador unário definido na álgebra booliana: é o operador NOT ou operador inversor,

que efetua a operação de complementação dos valores boolianos, ou seja, o valor 0, ao ser processado

pelo operador NOT, resulta no valor lógico 1, assim como o valor 1, ao ser processado pelo operador

NOT, resulta no valor lógico 0. Na Tabela 9 são apresentados o símbolo lógico definido para a operação

NOT, a regra matemática que define a operação através da tabela verdade e um exemplo de expressão

lógica usando o operador NOT. Nesse exemplo, a variável X armazena o resultado da operação e a

variável A, o valor inicial usado para processamento da operação.

Tabela 9: Apresentação do operador NOT

Tabela verdade Representação gráfica Expressão Booliana

Operadores básicos binários

A classe de operadores binários é caracterizada pelo envolvimento de duas variáveis na operação,

podendo-se considerar um número maior de variáveis com a utilização de mais operadores,

diferentemente do que acontece com o operador unário.

Page 64: Livro Arq Comp

Disciplina: Arquitetura de Computadores

63

Na Tabela 10 são apresentadas as características do operador OR. Como pode ser observado

pela tabela verdade da operação, o resultado é 1 quando o valor de pelo menos uma variável

de entrada for também 1. Deve-se considerar que as variáveis A e B determinam as condições

iniciais de execução da operação, e a variável X armazena o resultado final da operação.

Tabela 10: Apresentação do operador OR

Tabela verdade Representação gráfica Expressão Booliana

A B X = A + B0 0 00 1 11 0 11 1 1

O operador AND define uma operação na qual o resultado 1 só será possível quando o valor de

todas as variáveis de entrada for igual a 1. Observe na Tabela 11 as características do operador

AND. Assim como usado nos demais operadores, a variável X está associada ao resultado da

operação, e as demais variáveis estão associadas às variáveis que determinam a condição

inicial da operação.

Tabela 11: Apresentação do operador AND

Tabela verdade Representação gráfica Expressão Booliana

A B0 0 00 1 01 0 01 1 1

O circuito lógico de qualquer dispositivo digital pode ser descrito usando-se as três operações

boolianas básicas apresentadas. Com a utilização das expressões boolianas de cada porta

lógica, é possível determinar a expressão lógica geral da saída de um circuito lógico f o r m a d o

por mais operadores lógicos. Contudo, deve-se considerar a precedência da operação

AND sobre a operação OR nas expressões algébricas, a menos que existam parênteses na

Page 65: Livro Arq Comp

UNIDADE 4: SISTEMAS DIGITAIS

64

expressão definindo a ordem contrária. Nos exemplos a seguir, são apresentadas as combinações

dos operadores lógicos AND e OR e como tratar os casos de prioridades entre eles.

Exemplos:

a. Considere a expressão lógica X = A + B . C. Nessa expressão, a operação AND tem

precedência sobre a operação OR, representada pela soma lógica. Assim, o circuito/

diagrama lógico formado pela expressão é igual ao apresentado pela Figura 27.

A

B

B . C

Ax = A + B . C

Figura 27: Diagrama lógico da expressão X = A + B . C

b. Neste exemplo, a expressão considerada é X = (A + B) . C. Como existem os parênteses,

na operação OR deve-se realizar primeiro essa operação e depois a operação AND. Pela

figura 28 é possível avaliar o diagrama lógico correspondente à expressão dada.

A

B

A + B

C

x = (A + B) . C

Figura 28: Diagrama lógico da expressão X = (A + B) . C

Ainda sobre a combinação dos operadores básicos, veja, na Figura 29, mais exemplos da

combinação usando-se o operador NOT.

Page 66: Livro Arq Comp

Disciplina: Arquitetura de Computadores

65

A A

B

x = A + B

A

B

A + B x = A + B

Figura 29: Combinações lógicas usando-se o operador NOT

Operadores compostos binários

Todas as expressões boolianas consistem em várias operações AND, OR e NOT combinadas

de diversas formas. Porém, existem outros dois operadores lógicos capazes de implementar

qualquer operação booliana. São os operadores lógicos NAND e NOR, classificados como

compostos, pois são constituídos por dois ou mais operadores básicos. Questionar sobre a

utilização de tais operadores no lugar das já conhecidas operações AND, OR e NOT é bastante

comum, porém pode-se citar um importante motivo para se fazer tal troca: a máxima utilização

das portas de um CI (circuito integrado). Os CIs TTL normalmente possuem 4 (quatro) portas

lógicas idênticas em um mesmo chip, conforme se pode verificar pela Figura 30. Suponha um

circuito lógico com uma porta lógica AND, duas OR e uma NOT. Precisaríamos de 3 CIs diferentes

e todos eles ficariam subutilizados, aumentando, assim, o custo e a área da implementação.

Figura 30: Visões internas de um circuito integradoFonte: WIDMER; TOCCI, 2011.

Page 67: Livro Arq Comp

UNIDADE 4: SISTEMAS DIGITAIS

66

O operador NOR funciona de forma complementar ao operador OR, ou seja, para que a saída

dessa porta seja 1, é necessário que todas as variáveis de entrada sejam 0. Na Tabela 12 são

apresentadas as características do operador NOR.

Tabela 12: Apresentação do operador NOR

Tabela verdade Representação gráfica Expressão Booliana

A B

0 0 10 1 01 0 01 1 0

O operador NAND é complementar ao operador AND, apresentando em sua saída o valor lógico

1, sempre que pelo menos uma variável de entrada possua o valor lógico 0. Conheça mais

características dessa operação pela Tabela 13.

Tabela 13: Apresentação do operador NAND

Tabela verdade Representação gráfica Expressão Booliana

A B

0 0 10 1 11 0 11 1 0

Tipos de circuitos lógicosComo foi apresentado nas seções anteriores, os circuitos lógicos digitais são arranjos de

operadores lógicos capazes de realizar uma determinada tarefa. Esses arranjos trabalham de

acordo com as regras da álgebra booliana, podendo-se construir dois tipos de circuitos lógicos

distintos: os combinacionais e os sequenciais.

Page 68: Livro Arq Comp

Disciplina: Arquitetura de Computadores

67

Circuitos combinacionais

São circuitos que apresentam os resultados de saída tão logo os valores de entrada sejam

alterados; não possuem referência de tempo, sendo denominados circuitos assíncronos. Assim,

à medida que os valores de entrada mudam, automaticamente os valores de saída dos circuitos

lógicos mudam, refletindo imediatamente as condições de entrada. Existem diversos exemplos

de circuitos combinacionais, como os circuitos lógicos apresentados pelas Figuras 27, 28 e

29. Outro exemplo importante, dada sua constante utilização em projetos e diagramas lógicos,

são os circuitos multiplexadores, ou simplesmente MUX. Os multiplexadores possuem diversas

aplicações em sistemas digitais de todos os tipos, tais como:

• Seleção de Dados

• Roteamento de Dados

• Sequenciamento de Operações

• Conversões Paralelo-Série

O MUX é um circuito lógico capaz de trabalhar com “n” fontes de dados, sendo que, através

de outro conjunto de variáveis de entrada, é possível selecionar uma das “n” fontes de dados

de entrada e transmitir o dado selecionado para um único canal de saída. Ou seja, ele funciona

como um seletor de dados, transferindo um dado de uma entrada “E” para a saída “S” de

acordo com as entradas de controle “C”. Veja pela Figura 31 o diagrama esquemático do MUX.

ENTRA

DA

CONTROLE

SAÍD

A

ENTRA

DA

CONTROLE

SAÍD

A

CONTROLE

SAÍD

A

ENTRA

DA

Figura 31: Representação geral de um multiplexador

Os circuitos lógicos que efetuam a operação inversa à multiplexação são os demultiplexadores.

Assim, os demultiplexadores são capazes de selecionar uma saída para o sinal de entrada

através das entradas de controle. Observe pela Figura 32.

Page 69: Livro Arq Comp

UNIDADE 4: SISTEMAS DIGITAIS

68

ENTRADA

CONTROLE

SAÍDA

Figura 32: Visão geral de um demultiplexador

Circuitos sequenciais

São circuitos lógicos que apresentam ou atualizam os valores de saída de um determinado

bloco, assim que uma entrada especial, denominada entrada de clock, estiver mudando o

seu valor, seja de 1 para 0 ou de 0 para 1, tudo conforme o projeto de hardware. São circuitos

classificados como síncronos, ou seja, possuem uma forte relação/referência de tempo e

sincronismo entre os diversos blocos. Caracterizam-se por necessitarem de um circuito

analógico especial, chamado de circuito de clock.

Esse circuito especial está presente em todos os computadores digitais e é responsável por

gerar um sinal periódico regular, denominado sinal de clock, distribuído por toda a parte eletrônica

e usado como referência de tempo para os circuitos sequenciais, promovendo, de certa forma,

o sincronismo dos diversos blocos lógicos. Atualmente o valor do sinal de clock é usado como

referência para o a divulgação dos produtos no comércio de computadores.

O sinal de clock é um sinal elétrico que varia em intervalos de tempo regulares e periódicos.

Possui as seguintes características:

• Amplitude: Propriedade que define/indica o valor máximo da tensão ou corrente

elétrica de um sinal periódico regular, normalmente expressa em volt.

• Frequência (F): Grandeza elétrica que indica a velocidade na qual o sinal

periódico se repete por unidade de tempo, sendo expressa em Hertz (Hz), ou

seja, vezes por segundo.

Page 70: Livro Arq Comp

Disciplina: Arquitetura de Computadores

69

• Período (T): Intervalo de tempo de duração de um ciclo, expresso em segundos.

Relação matemática entre frequência (F) e período (T): F = 1 / T.

• Ciclo: É a característica de um sinal periódico, a qual determina o início da repetição

desse sinal. Os termos “tamanho do ciclo” e “período” possuem o mesmo significado,

ou seja, o tempo que dura um ciclo.

Pela equação matemática, pode-se concluir que a frequência é inversamente proporcional ao

período. Veja pelo exemplo abaixo:

Considerando que a frequência de clock de um determinado computador é de 800MHz,

determine o seu período de clock.

Solução:

Como F = 1/T e F=800MHz, então T = 1/F, assim:

Como M = 106

Os conteúdos apresentados nesta unidade não esgotam o tema “sistemas digitais”, mais

especificamente “circuitos lógicos”. O que foi trabalhado, entretanto, servirá de base para o

entendimento das demais unidades e seus respectivos conteúdos. Se você se interessar pelo

tema, busque mais detalhes nas obras indicadas nas referências.

Page 71: Livro Arq Comp

UNIDADE 4: SISTEMAS DIGITAIS

70

ReferênciasSTALLINGS, W. Arquitetura e organização de computadores. 5. ed. São Paulo: Pearson Education

do Brasil, 2002.

TANENBAUM, A. Organização estruturada de computadores. 4. ed. São Paulo:

Prentice Hall, 2006.

WIDMER, Neal S.; TOCCI, Ronald J. Sistemas Digitais: princípios e aplicações. 11. ed.

São Paulo: Prentice Hall, 2011.

Page 72: Livro Arq Comp

Disciplina: Arquitetura de Computadores

71

UNIDADE 5 Organização básica de um computador

OBJETIVOS

Compreender detalhes técnicos das diferentes implementações de computadores digitais; identificar os elementos que compõem uma Unidade Central de Processamento (UCP); compreender as relações entre os blocos internos da UCP e o seu funcionamento; conhecer o ciclo de busca de instruções; interpretar o processo de execução de uma instrução.

Modelo de máquinasNo projeto e na construção de computadores digitais, são considerados basicamente dois

modelos ou arquiteturas de referência: o modelo de Von Neumann e o modelo Harward. No

primeiro, observa-se o uso de um único canal de comunicação entre os blocos lógicos que

compõem a máquina. O acesso a esse canal é compartilhado entre os blocos. No segundo, a

unidade de memória é subdividida em função do tipo de dado que é armazenado, forçando um

acesso diferenciado por parte da UCP (Unidade Central de Processamento). Essas organizações

podem ser visualizadas pela Figura 33.

Memória de dados

Memória de Instruções

Dispositivos de eENTRADA SAÍDA

UCP / CPU

CPUMemória Principal

Dispositivos de eENTRADA SAÍDA

Von Neumann Harvard

FIGURA 33: Visão geral das arquiteturas de Von Neumman e Harward

A diferença funcional entre os modelos apresentados está associada à forma como a UCP troca

dados com os demais blocos lógicos que compõem o sistema, o que impacta diretamente

o custo e o desempenho geral do sistema, conforme já mencionado na Unidade 1. Contudo,

Page 73: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

72

independentemente do modelo implementado, todos os computadores funcionam de forma similar,

exigindo os mesmos recursos, que são distribuídos por três grandes blocos lógicos: Unidade

Central de Processamento (UCP), memória principal e dispositivos de entrada e saída (I/O).

Tomando como referência a classe de computadores pessoais, genericamente chamados

de PC, os blocos lógicos possuem uma denominação particular: o bloco que representa a

memória principal é chamado de Ponte Norte; o bloco responsável pelo acesso e controle dos

dispositivos de entrada e saída é chamando de Ponte Sul; por último, mas não menos importante,

a UCP, que é representada fisicamente pelo Processador. A título de curiosidade, no mercado,

quando buscamos identificar as características da placa mãe de um PC, na verdade estamos

nos referindo às características dos blocos memória principal e Dispositivos de Entrada e Saída,

comumente chamados de chipset. O processador, ou tecnicamente falando, a UCP, pode ser

adquirida conforme a nossa necessidade e disponibilidade financeira. Deve-se observar que o

desempenho de um sistema computacional não está associado somente ao modelo e tipo de

UCP, mas às características técnicas dos três grande blocos de um computador.

No mercado existem dois grandes fornecedores de UCP para computadores pessoais: a

Intel e a AMD (Advanced Micro Devices). Em termos arquiteturais, os processadores para PC

desses fabricantes são compatíveis, diferindo somente quanto à implementação da arquitetura.

Historicamente, a Intel sempre esteve na vanguarda tecnológica para processadores de PCs, o

que se justificou por muitos anos devido à parceria firmada com a IBM, no final dos anos 1970,

para a produção exclusiva de processadores para os seus computadores.

Atualmente, o status de vanguarda tecnológica alterna com a AMD, tendo em vista que a

empresa mudou sua estratégia comercial e tecnológica, deixando de efetuar clonagens dos

processadores Intel, e passou a investir pesadamente em pesquisas para a implementação

de sua versão da Arquitetura x86. Como característica da implementação de processadores

da AMD, a parte de controle da memória principal está integrada na mesma pastilha (chip)

do processador (UCP), o que, de certa forma, proporciona melhoria no desempenho geral

do sistema e diminuição do custo da placa mãe, fato que chamou a atenção da Intel, que

passou a produzir processadores com a mesma característica, como é o caso dos modernos

processadores das séries i5 e i7.

Em linhas gerais, todos os computadores são compostos pelos três blocos lógicos já

mencionados. A seguir serão apresentadas as funcionalidades básicas de cada um dos

blocos, com destaque especial para a UCP, tendo em vista que os blocos referentes ao

controle dos dispositivos de entrada e saída, bem como a unidade de memória, têm sua

implementação padronizada.

Page 74: Livro Arq Comp

Disciplina: Arquitetura de Computadores

73

Bloco dos dispositivos de I/OO princípio de funcionamento do bloco de controle e acesso aos dispositivos de entrada e

saída é igual para todos os computadores. A ideia básica é possibilitar a entrada de dados

para processamento pela UCP, e a saída de dados, seja para armazenamento externo, seja para

apresentação de resultados de operações de processamento pela UCP.

Atualmente é forte a padronização no processo de comunicação entre o dispositivo de

entrada e/ou saída e o sistema computacional. Existem padrões e protocolos de comunicação

que estabelecem as regras de comunicação, por exemplo, a interface de comunicação

USB (Universal Serial Bus), Fireware, o padrão de conexão de placas denominado

PCI, PCI Express, entre outros.

Como existe um padrão para a comunicação com os mais diversos dispositivos de entrada e

saída, ao implementar o bloco denominado Dispositivos de I/O, o fabricante de um determinado

computador utiliza circuitos integrados específicos para essa função, não necessitando de

investimentos em pesquisa e desenvolvimento de novas tecnologias para a implementação

de um dado padrão de comunicação. Existem diversos fabricantes de circuitos integrados que

se dedicam exclusivamente ao desenvolvimento de circuitos especializados em protocolos de

comunicação, disponibilizando-os em forma de pacotes ou conjunto de circuitos integrados,

denominados chipset. Cabe ao engenheiro de computação escolher o chipset mais indicado

para implementação.

Bloco de memória principalA unidade de armazenamento mais próxima à UCP é denominada memória principal. Conforme

proposto por Von Neumann, os dados e instruções que estão sendo processados pela UCP

devem obrigatoriamente estar armazenados no bloco memória principal.

Essa unidade de memória armazena dados e programas em formato digital, ou seja, somente

números, que são copiados e enviados à UCP ou para os dispositivos de entrada e saída, com

o propósito de armazenamento secundário (em massa) ou uso pelos diversos dispositivos de

saída. O bloco de memória principal, conforme sua implementação física, pode ser subdividido

em memória ROM e memória RAM.

Page 75: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

74

A palavra RAM é o acrônimo de Random Access Memory, ou seja, “memória de acesso

aleatório”. São memórias que permitem o acesso a qualquer dado armazenado, na ordem

desejada, diferentemente dos primeiros modelos de memória, nos quais o acesso era

sequencial, ou seja, para acessar o último dado armazenado, era necessário efetuar a leitura

de todos os outros dados armazenados até chegar à posição do dado requerido. Na verdade,

as memórias do tipo ROM (Read Only Memory ou “memória somente para leitura”) também

possuem acesso aleatório. Atualmente a distinção entre RAM e ROM diz respeito ao tempo de

retenção do dado armazenado.

As memórias do tipo RAM são caracterizadas pela volatilidade do conteúdo armazenado, ou

seja, os dados armazenados nesse tipo de memória não são perenes, estão vulneráveis ao

fornecimento de energia elétrica ao módulo de memória. Todas as vezes que a energia do bloco

é desligada, os dados por ela armazenados são perdidos, necessitando ser reescritos todas

as vezes que a energia for restabelecida. Por outro lado, as memórias do tipo ROM não perdem

facilmente os dados armazenados, mas necessitam de um processo técnico especial para a

gravação de seus dados. Nesse tipo de memória, mesmo com a falta de energia elétrica por um

período muito longo – por exemplo, 30 anos –, os dados são mantidos.

Como se pode constatar pelo uso de um computador convencional, quando o usuário

edita um texto e não o salva, o conteúdo trabalhado é perdido sempre que houver falta de

energia elétrica. Por outro lado, todas as vezes que ligamos um computador, ele executa a

contagem e testes de memória, a inicialização de alguns periféricos e, por fim, a carga do

sistema operacional. Na verdade estamos, no primeiro exemplo, usando a memória RAM

e, no segundo, a memória ROM.

Organização básica das memórias

A memória principal é organizada como um conjunto de n células, ou posições de memória,

capazes de armazenar, em cada uma das posições, m bits. Por sua vez, cada célula é

identificada por um único número, chamado de endereço de memória, que nada mais é do

que um código binário de k bits, através do qual cada célula é referenciada. Os endereços

de memória são numerados de zero a n-1 e, como existem 2k possíveis endereços, então a

quantidade máxima de células de memória é 2k. Observe pela Figura 34 a estruturação visual

de um bloco de memória.

Page 76: Livro Arq Comp

Disciplina: Arquitetura de Computadores

75

Conjunto de M bits = célula

Conjunto de N células = MEMÓRIA

Endereço de cada célula

0

1

2

n - 1

FIGURA 34: Representação visual da organização de memória

A célula é a menor unidade de memória endereçável, sendo que uma célula pode armazenar

qualquer uma das 2m possíveis combinações diferentes dos seus m bits. Então, os m bits de

uma célula são acessados simultaneamente. A variável m pode ser qualquer número inteiro,

mas, nos últimos anos, os fabricantes padronizaram um tamanho de 8 bits (1 byte).

A maioria das instruções e dados manipulados em um computador são maiores que 1 byte,

o que, de certa forma, sugere a necessidade de usar mais de uma célula de memória para

armazenar a mesma instrução ou dado. Então, para adequar o modelo de armazenamento

ao modelo de execução, os bytes de memória são agrupados em unidades múltiplas de

bytes, que são chamadas de Palavras. Os computadores, por sua vez, são conhecidos

pela forma como ordenam as palavras na memória principal. Quando a ordenação dos

bytes de uma palavra é feita da parte mais significativa para a menos significativa, temos

a chamada ordenação big endian. De outra forma, quando primeiro é efetuado o

armazenamento da parte menos significativa e depois o da parte mais significativa, temos

a ordenação little endian.

Cabe destacar que não existe problema em armazenar num ou noutro formato. O

problema está no processo de comunicação entre uma máquina big endian e uma

little endian. Veja pela Figura 35 a diferença entre os dois formatos no armazenamento

da palavra 3CB416.

Page 77: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

76

0

1

2

n - 1

3C

B4

?

BIG ENDIAN

0

1

2

n - 1

B4

3C

?

LITTLE ENDIAN

FIGURA 35: Armazenamento no formato big endian e little endian

Estrutura interna da UCP e funçõesO bloco lógico referente à Unidade Central de Processamento é o mais importante dos sistemas

computacionais, pois é ele quem define as características funcionais do computador, através da

organização lógica dos seus diversos blocos internos, bem como a implementação da arquitetura

do seu conjunto de instruções. Tipicamente, as UCP são compostas por uma unidade lógica e

aritmética e uma unidade de controle e, dependendo da arquitetura implementada, existe uma

unidade destinada a armazenamento especial, denominada Banco de Registradores.

O princípio de funcionamento da UCP leva em consideração a existência de diversos blocos

lógicos capazes de executar pequenas operações. Estruturalmente, a UCP possui circuitos

lógicos capazes de executar as operações apresentadas a seguir.

Busca de instruções: para isso, existem mecanismos dedicados ao controle de execução de

programas, que são responsáveis por identificar a próxima instrução a ser executada e promover

a busca dessa instrução na memória principal. Essa operação é cíclica e acontece antes da

efetiva execução de cada instrução.

Page 78: Livro Arq Comp

Disciplina: Arquitetura de Computadores

77

Interpretação de instruções: como não poderia ser diferente, existem internamente na UCP

circuitos digitais responsáveis por decodificar e interpretar o que deve ser efetuado em cada

instrução. Ainda faz parte do processo de interpretação de instruções definir quais dados fazem

parte da instrução e como acessá-los.

Busca de dados: considerando que os dados estão armazenados na memória principal e

que os circuitos de interpretação de instruções já localizaram o endereço de cada dado, um

outro circuito lógico adicional é capaz de efetuar a busca dos dados que fazem parte de uma

determinada instrução na memória principal, tecnicamente chamados de operandos. Eles

podem ser classificados como operando fonte e operando destino. Por exemplo, a operação

de adição de dois números suscita a existência de dois operandos fontes, que são as parcelas

da soma, e um operando destino, o qual deverá armazenar o resultado da operação.

Processar dados: como não poderia ser diferente, a principal operação efetuada pela UCP é

sobre os dados (operandos) de uma determinada operação. Todas as operações efetuadas são

de ordem matemática, podendo ser aritmética, lógica, movimentação ou deslocamento de bits.

Cada uma dessas instruções será apresentada formalmente na próxima unidade.

Escrever dados: os resultados de cada operação deverão ser armazenados em um local

específico (posição de memória), conforme estabelecido em cada instrução. O circuito lógico

especializado na busca de dados possui uma segunda funcionalidade, que permite o acesso

à memória principal para a escrita dos dados. As operações de leitura de dados dessa unidade

fazem somente uma cópia do conteúdo da célula de memória. Por outro lado, a operação de escrita

altera instantaneamente o conteúdo da célula, sobrepondo-se ao valor anteriormente armazenado.

Ainda sobre as características da UCP, deve-se destacar que ela possui um espaço de

trabalho temporário, como área de rascunho, para a execução das instruções chamadas de

registradores. O número e a função de cada registrador existente em uma máquina dependem

do projeto dessa máquina e, mais especificamente, de sua arquitetura, que varia de processador

para processador. O registrador pode ser comparado com uma célula de memória, porém

localizada internamente na UCP, com baixa latência na resposta a solicitações de leitura e escrita,

diferentemente da memória principal, na qual existe uma demora para a resposta às operações

de leitura e escrita.

Uma das maiores decisões a serem tomadas no projeto de uma UCP está relacionada com

o número e a função de cada um dos registradores. Como os registradores são unidades de

armazenamento implementadas internamente à UCP e considerando uma hierarquia do sistema

Page 79: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

78

de memória, os registradores ocupam o topo da pirâmide hierárquica. Convém destacar que

o custo de implementação de cada registrador é elevadíssimo se comparado com o custo de

implementação de cada célula de memória. Os registradores, de acordo com sua especialidade,

são classificados em:

Registradores de propósito geral (RPG): todos os registradores que podem ser usados para

qualquer finalidade que envolva uma operação executada na UCP – por exemplo, operando

fonte, operando destino – ou como unidade de rascunho para a movimentação de dados.

Registradores de propósito específico (RPE): como o próprio nome indica, esses

registradores não podem ser usados em qualquer operação de forma arbitrária. Eles têm sua

funcionalidade definida no projeto da máquina e não podem ser mudados dinamicamente. O

uso dessa classe de registradores torna as operações da UCP mais simples e rápidas, se

comparado com o uso de registradores de propósito geral.

O uso de registradores de propósito geral aumenta a flexibilidade e as opções para os

programadores desenvolverem seus programas, podendo significar um aumento do tamanho

do programa e da complexidade das instruções disponíveis em uma determinada UCP. Por outro

lado, a implementação de unidades centrais de processamento somente com registradores

especializados torna as instruções mais rápidas e menos flexíveis, do ponto de vista do

programador, com um custo operacional e de implementação mais baixo do que o das UCP

baseadas em RPG.

O projeto ideal de uma máquina equilibra o uso desses registradores com base nas

características principais desejáveis para a nova UCP. Na verdade, o projeto de computadores

que visa alto desempenho computacional faz uso intenso de RPE e, por outro l a d o ,

computadores de propósito geral podem fazer uso somente de registradores de propósito

geral, o que compromete o desempenho da máquina. O número de registradores e o tamanho

das palavras manipuladas pela UCP são decisões tomadas pelos projetistas ainda na fase de

levantamento de requisitos. São exemplos de registradores usados nos projetos de UCP:

• Registrador de dados, normalmente usado como operando, fonte ou destino, de

operações aritméticas ou lógicas.

• Registrador de endereço, que, como o próprio nome sugere, é usado para facilitar o

acesso da UCP à memória principal, armazenando endereço de dados ou instruções.

• Registrador de status (SR), que indica a condição atual da máquina. Em todas as

Page 80: Livro Arq Comp

Disciplina: Arquitetura de Computadores

79

operações executadas pela UCP, são registradas as condições finais de execução, ou

seja, se uma operação de adição é executada, o resultado da operação é armazenado

no operando destino, e as condições finais da operação são registradas pelo registrador

de status. As condições finais podem indicar se o resultado da operação foi zero, se

existe uma condição de overflow ou underflow, se o número final é par ou ímpar, positivo

ou negativo, entre outras informações que o arquiteto do computador quiser registrar.

Esse registrador é usado em operações que exigem a tomada de decisão quanto a

alterar o fluxo de execução de um determinado programa.

• Registradores não visíveis aos usuários e/ou programadores. Para que a UCP mantenha

funcionamento perfeito após a execução de cada instrução, devem ser disponibilizadas

internamente unidades de memória adicional, que não podem ser acessadas diretamente

pelos programadores ou usuários do sistema computacional. Como exemplo dessa

classe de registradores, pode-se destacar o Registrador de Instruções (IR), registradores

de endereços – como o Registrador de Retorno (RR), usado para permitir a volta do

programa após a chamada a uma função, procedimento ou interrupção –, ou mesmo o

registrador de pilha (SP – stack pointer). Os mecanismos de pilha serão apresentados na

unidade referente às arquiteturas do conjunto de instruções.

• Acumuladores são registradores especiais normalmente usados como operando destino

das operações aritméticas ou lógicas. A implementação dos acumuladores depende

exclusivamente da arquitetura usada no projeto da UCP.

• Contadores de programa (PC) são registradores de uso específico, e seu conteúdo

é controlado diretamente pelo hardware, podendo existir situações específicas

que requeiram a alteração de seu conteúdo dinamicamente através de software,

por exemplo, instruções de controle de fluxo do programa, para implementar uma

estrutura de repetição ou mesmo uma estrutura condicional. Esse é um tipo especial

de registrador de endereço, que sempre indica qual será a próxima instrução a ser

executada. Quando uma máquina é inicializada (ligada) ou reinicializada através do

botão de reset, o conteúdo desse registrador é zerado e, assim, ele aponta para a

instrução da posição zero de memória. O processo de zerar o valor do PC no momento

em que ele é ligado é tecnicamente chamado cold boot ou hard reset. Já o processo

que usa um botão específico é denominado warm boot ou soft reset. É claro que, em

algumas máquinas, o valor de inicialização desse registrador poderá ser diferente de

zero, mas, na verdade, o efeito operacional é o mesmo, ou seja, inicializar uma nova

instância de execução de instruções.

Page 81: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

80

• Registradores de instruções (IR), que foram projetados exclusivamente para armazenar

a instrução que está sendo executada pela UCP e permitir a decodificação da instrução

pelo bloco lógico responsável. Lembre-se de que a instrução em execução foi buscada

na memória principal em um momento anterior ao início da sua execução.

Os registradores são elementos muito importantes para a formação de unidade de processamento,

contudo existem outros blocos lógicos que devem ser projetados para organizar o uso e

implementar as funções de cada registrador.

Principais blocos lógicos que compõem uma UCP

Unidade Lógica e Aritmética - ULA

A Unidade Lógica e Aritmética, comumente conhecida como ULA, é uma unidade exclusiva

para fins de execução de operações lógicas e aritméticas. É a alma do processador (UCP),

sendo que suas características funcionais definem a área de aplicação do computador. Se uma

determinada UCP possui uma ULA que efetua somente operações com números inteiros, então

não será viável executar programas que necessitam efetuar operações em ponto flutuante, por

exemplo, o cálculo da temperatura de um determinado ambiente, ou mesmo o processamento

de uma folha de pagamento de uma empresa.

Tipicamente, a ULA possui suporte a somente dois operandos de entrada e um operando

de saída. O tamanho ou a largura, em número de bits, do seu operando de saída é usado

como referência do processador no mercado. Assim, quando é anunciado um processador

de 64 bits, normalmente a saída da ULA desse processador possui a largura de 64 bits,

bem como deverá existir um ou mais registradores com essa largura ou tamanho. Pela

Figura 36, é possível identificar os principais sinais de entrada e saída da ULA. Um destaque

deve ser dado à ordem dos operandos de entrada, que influenciará efetivamente a

ordem de execução das operações.

Percebe-se, ainda, que exstem duas saídas: uma identificada como operando de saída, que

sempre possui o resultado da operação executada pela ULA, e outra que possui os sinais que

indicam o estado final de cada operação. Esses sinais serão armazenados no registrador de

status. Uma terceira entrada indica o código da operação a ser realizada.

Page 82: Livro Arq Comp

Disciplina: Arquitetura de Computadores

81

1º OperandoOPERANDO FONTE 1

2º OperandoOPERANDO FONTE 2

Operação Destino

Status da ULASAÍDA DE CONTROLE

Operação

ULA

FIGURA 36: Unidade Lógica e Aritmética (ULA)

Unidade de Controle – UCON

A Unidade de Controle é projetada para efetuar a busca e a decodificação das instruções de

uma determinada UCP. Os códigos de cada instrução, bem como seu formato e modos de

endereçamento, fazem parte do projeto inicial da UCP. Além da decodificação das instruções,

essa unidade é responsável por efetuar os acessos à memória principal, a fim de ler instruções e

ler ou gravar dados. Para executar todas as instruções definidas pelo arquiteto do computador, é

necessário o emprego de vários registradores de uso específico. Na Figura 37, são apresentados

alguns registradores comumente usados na implementação das unidades de controle, bem

como a relação da UCON com os demais blocos. Deve-se destacar que o acesso externo à

UCP é efetuado pela UCON, e é ela quem controla o fluxo de dados para a ULA. A organização

geral de comunicação entre a UCON e a ULA define a arquitetura geral da máquina.

SP

RR

PC

IR

SRUCON

Controle interno

Dados Endereço Controle externo

FIGURA 37: Estrutura básica da Unidade de Controle (UCON)

Page 83: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

82

Funcionamento da UCPQualquer que seja a implementação de Unidade Central de Processamento (UCP), que também

pode ser chamada de CPU ou mesmo Processador, dependendo da literatura estudada, ela possui

o modus operandi igual, estabelecido em três ciclos bem definidos e executados sequencialmente.

Quando uma máquina é inicializada, a frio ou a quente – cold boot, warm boot respectivamente

–, ela sempre vai executar o ciclo de busca de uma instrução, independentemente do modelo,

marca e tipo de computador. Após a busca da instrução, é iniciado o processo de decodificação

e interpretação, bem como são estabelecidas todas as condições necessárias para a execução

da referida instrução.

Na sequência, é iniciado o processo de execução, que normalmente utiliza a ULA, finalizando

com a escrita do resultado no operando destino da instrução executada. Após o encerramento

da escrita do resultado, a UCON inicia automaticamente um novo ciclo de busca de instrução,

a menos que a última instrução executada determine a parada da UCP. Um exemplo típico

desse tipo de instrução é a HALT, que é implementada pela maioria dos processadores. A única

forma iniciar um novo ciclo de busca de instruções é através do soft reset ou hard reset. Veja os

detalhes sobre os ciclos de trabalho de uma UCP:

1º. Ciclo de busca de instrução (Instruction Fetch)

Neste momento a UCON inicia a busca (cópia) da instrução localizada na posição de memória

indicada pelo registrador PC. Assim que uma cópia da instrução é armazenada no registrador IR,

o registrador PC é incrementado em uma unidade de palavra da máquina. Para processadores

de 8 bits, o PC é incrementado em um byte; para processadores de 16 bits, o PC é incrementado

em dois bytes, e assim sucessivamente. Após o incremento do PC, é encerrado o ciclo de

busca e inicializado o ciclo de decodificação de instrução.

2º. Ciclo de decodificação de instrução

Como a instrução a ser executada está armazenada no registrador IR, circuitos lógicos estão

ligados a esse registrador, com a finalidade de identificar as características da instrução, bem

como verificar a origem dos operandos da instrução e efetuar o cálculo do endereço de cada

um dos operandos.

Page 84: Livro Arq Comp

Disciplina: Arquitetura de Computadores

83

3º. Ciclo de busca do operando (Operand Fetch)

Nessa etapa todos os operandos são buscados e encaminhados às respectivas entradas da

ULA. É possível que determinadas operações não necessitem da busca dos operandos, pois

eles já estão embutidos no código da própria instrução, ou a instrução não necessita carregar

os operandos.

4º. Ciclo de execução da operação

É nesse momento que a instrução é realmente efetuada, ou seja, a ULA deverá ser usada nesse

instante para efetuar uma operação lógica ou aritmética. Também existem operações que não

utilizam a ULA, mas é nesse momento que a ação indicada pelo programador é efetuada.

5º. Ciclo de armazenamento do resultado

Havendo necessidade de armazenamento do operando destino, somente nesse momento é

efetuada a escrita do resultado da operação na memória principal ou em outro elemento.

Ao finalizar a passagem pelo quinto ciclo, a UCP comanda automaticamente o início de outro

ciclo de busca, continuando sistematicamente a execução sequencial de cada um dos ciclos

apresentados. A parada desse processo pode ser feita por software, com o uso de uma instrução

específica que determine essa condição, ou por hardware, com o desligamento do sistema, na

incidência de erro interno à UCP, ou mesmo com o desligamento ou acionamento.

Nesta unidade foram apresentadas as características funcionais da Unidade Central de

Processamento (UCP) e seu funcionamento, através da apresentação dos seus ciclos de trabalho.

É importante conhecer esses detalhes técnicos para entender, futuramente, as particularidades

de cada instrução de máquina, bem como conhecer as diferentes implementações de UCP

Page 85: Livro Arq Comp

UNIDADE 5: ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

84

ReferênciasSTALLINGS, W. Arquitetura e organização de computadores. 5. ed. São Paulo: Pearson Education

do Brasil, 2002.

TANENBAUM, A. Organização estruturada de computadores. 4. ed. São Paulo: Prentice-Hall, 2006.

Page 86: Livro Arq Comp

Disciplina: Arquitetura de Computadores

85

UNIDADE 6Classificação do conjunto de instruções

Objetivos: Conhecer as alternativas de implementações de UCP, bem como as suas vantagens e desvantagens; relacionar os modelos de programação com as máquinas disponíveis no mercado; compreender as diferenças técnicas entre os modelos de máquinas RISC e CISC; classificar um conjunto de instruções em função do modelo de implementação da UCP.

Processamento monociclo e multicicloEm Arquitetura de Computadores, o termo processamento é usado para designar, de forma

geral, todo o processo de execução efetiva de uma única instrução. Conforme mencionado na

Unidade 5, mais especificamente quando foi apresentado o princípio básico de funcionamento

de uma UCP, existem pelo menos cinco ciclos de trabalho bem definidos para a efetiva execução

de uma instrução, ou melhor, para o processamento de uma instrução. Para relembrar, os

nomes de cada um dos ciclos são Busca de Instrução, Decodificação, Busca dos Operandos,

Execução e Armazenamento de Resultados.

Associando as tarefas desenvolvidas em cada um dos ciclos aos conceitos de cada arquitetura

do conjunto de instruções, mais especificamente no que tange à manipulação dos operandos,

é possível concluir que, conforme o número de operandos e o modo de endereçamento usado

em cada instrução, o processamento das instruções demanda tempos distintos para processar

cada instrução.

Por exemplo, na operação de adição na Arquitetura Pilha, a busca dos operandos e o

armazenamento do resultado demandam um tempo maior, em comparação com a Arquitetura

Acumulador. Se comparada à Arquitetura RUG, a execução da mesma operação leva um tempo

maior ainda. Isso se deve ao fato de que na Arquitetura Pilha, no ciclo de busca dos operandos

fontes, a UCP deverá efetuar dois acessos à memória principal (pilha); já com a Arquitetura

Acumulador, fará somente um acesso e, na arquitetura RUG, nenhum acesso.

Page 87: Livro Arq Comp

UNIDADE 6: CLASSIFICAÇÃO DO CONJUNTO DE INSTRUÇÕES

86

O que devemos entender nessa situação é que, independentemente da arquitetura, a execução

efetiva de cada uma das instruções que formam o nível ISA demanda tempos diferentes para a sua

conclusão. Como as UCPs são constituídas por vários blocos lógicos, implementando funções

diversas e necessárias ao processamento de instruções, deve haver sincronismo para a troca de

dados entre os blocos, evitando-se que eles trabalhem com dados contaminados, ou seja, com

valores que ainda não fazem parte da instrução corrente. A Figura 45 ilustra uma situação na qual

a falta de sincronismo entre os blocos pode ocasionar um erro no armazenamento do resultado.

Considere a possibilidade de a ULA efetuar uma soma, por exemplo, 5+3, enquanto o bloco da

UCON, responsável pela busca de operando, ainda está carregando o segundo operando na

entrada da ULA e, no mesmo momento, o bloco da UCON projetado para armazenamento de

resultados já está processando a escrita do dado, na memória principal, de um valor qualquer

que está presente na saída da ULA. Se as máquinas digitais trabalhassem dessa forma, não

serviriam para nada.

UCONGrava:

10

Lê: 3

Dados Endereço Controle externo

ULA

5

Figura 45: Escrita de resultado anetecipadamente pode ocasionar erros de processamento

Para evitar esse e outros tipos de erros, os blocos lógicos dos computadores trabalham com um

tipo de circuito lógico que necessita de uma referência de tempo para estabelecer o sincronismo

entre os blocos. São os chamados Circuitos Combinacionais, apresentados na Unidade 4. Sua

referência de tempo é determinada por sinal especial chamado de Sinal de Clock. O período

Page 88: Livro Arq Comp

Disciplina: Arquitetura de Computadores

87

desse sinal está intimamente associado ao tempo de processamento de cada instrução, que

pode ser chamando de Ciclo de Máquina, por ser um sinal que eletricamente estabelece um

padrão de comportamento da máquina. Fica então um dilema: qual deve ser o tamanho do

ciclo, ou período do Sinal de Clock?

Para responder a essa pergunta, os projetistas de hardware usam dois critérios distintos e

excludentes, ou seja, ao adotar um critério no projeto de uma máquina, o outro não será usado

no mesmo projeto. Eles são conhecidos como Monociclo e Multiciclo.

Monociclo

No modelo de processamento Monociclo, o tempo de execução de cada instrução é o mesmo,

independentemente da instrução. Parece que algo não está de acordo com tudo que já foi

apresentado ao longo desta disciplina, mas é verdade, os projetistas avaliam o comportamento

das instruções isoladamente e calculam o tempo necessário para processar totalmente cada

uma delas. Ao final de tudo, estabelecem o tamanho do Ciclo de Máquina (sinal que controla a

execução de instruções), pelo critério de tempo de execução da instrução mais demorada.

Por exemplo, considere a Tabela 30, na qual estão relacionadas as classes de instruções

empregadas em um determinado projeto, e os respectivos tempos de execução. É importante

observar que, para o cálculo do tempo de execução das instruções, já foi considerada a tecnologia

para a fabricação das pastilhas de circuito integrado, bem como os recursos financeiros a serem

investidos. Os cálculos são efetuados ainda na fase de projeto. Em outras situações, são usadas

ferramentas que permitem a simulação do circuito.

Pela referida tabela, identifica-se que as instruções da classe de Movimentação de Dados

demoram 1,25 nS (1,25 nanossegundos = 1,25 x 10-9 segundos = 0,00000000125 segundos)

e, assim, define-se o tamanho do Ciclo de Máquina. Ainda sobre esse exemplo, como o Ciclo

de Máquina é de 1,25 nS, a frequência de operação do processador é igual ao inverso do Ciclo

de Máquina. Então, nesse caso, o clock é de 800 MHz.

Tabela 30: Tempo de execução por classe de instruções

Classe de instruções Tempo em nSAritmética 1,16 1,16Controle 0,35 0,35Lógica 0,98 0,98

Movimentação de dados 1,25

Page 89: Livro Arq Comp

UNIDADE 6: CLASSIFICAÇÃO DO CONJUNTO DE INSTRUÇÕES

88

No modelo Monociclo, mesmo instruções mais simples como a NOP, por exemplo, gastam

o mesmo tempo de execução de instruções que fazem uso intensivo de acesso à memória

dedados, com instruções de Movimentação de Dados.

As máquinas implementadas usando esse modelo são conhecidas como máquinas que

possuem uma baixa frequência de clock, tipicamente na ordem de 800 MHz. Por assim se

apresentarem, não dissipam tanto calor como as máquinas de clocks bem mais altos, por

exemplo, 2GHz e, consequentemente, tendem a consumir menos energia elétrica. É claro que

esses dados são relativos, pois os demais dispositivos físicos que compõem o hardware podem

impactar diretamente a relação entre calor dissipado e energia elétrica consumida. Dispositivos

móveis normalmente utilizam esse modelo pelas suas características físicas e elétricas (calor e

consumo). Entre os processadores que fazem uso desse modelo mais comuns no mercado,

destacam-se MIPS RS2000, RS3000, Qualcomm MSM7225 do Motorola Spice do Smart Phone

Motorola, que roda o sistema operacional Android, o Samsung Exynos Quad-Core, entre outros.

Multiciclo

Nas implementações Multiciclo, a metodologia para escolha do tamanho do Ciclo de Máquina

possui uma abordagem contrária à do modelo Monociclo, ou seja, a escolha considera o

tempo de execução da instrução mais rápida. Nesse contexto, para executar instruções mais

demoradas, são demandadas múltiplas unidades do Ciclo de Máquina, daí o nome modelo

Multiciclo. Para entender melhor, observe a Tabela 31. Note que o tempo mínimo gasto para

executar uma instrução é de 0,36 nS. Assim, de acordo com o modelo Multiciclo, o tamanho do

Ciclo de Máquina é igual ao tempo de execução da instrução mais rápida.

Na terceira coluna da Tabela 31, são apresentadas as relações entre o tempo de execução de

uma instrução de uma das classes e o tempo da instrução mais rápida. Perceba que o tempo para

executar as demais instruções passa a ser frações de tempo do Ciclo de Máquina. Na primeira

linha da tabela, por exemplo, o tempo mínimo necessário para a execução de uma instrução da

classe Aritmética é de 1,16 nS, necessitando de 3,22 ciclos de clock. Como tecnicamente são

mais onerosas implementações de frações de ciclos de máquina/ clock, criou-se o conceito de

Ciclos por Instrução (CPI), apresentado na quarta coluna da tabela.

Para calcular os CPI de uma determinada classe de instruções, basta efetuar o arredondamento

do valor encontrado na terceira coluna para um valor inteiro da quantidade de ciclos de clock, o

qual permite a execução completa da instrução.

Page 90: Livro Arq Comp

Disciplina: Arquitetura de Computadores

89

Tabela 31: Relação Tempo de execução x CPI, modelo Multiciclo

Classe de instruções Tempo em nS t / ciclo de máquina CPIAritmética 1,16 3,32 4Controle 0,36 1 1Lógica 0,98 2,72 3Movimentação de dados 1,25 3,47 4

Pode-se perceber que, ao estabelecer o tempo base para execução das instruções em 0,36

nS, como no caso da Tabela 31, a frequência de clock é alta, na ordem de 2,7 GHz (2,7 giga-

hertz = 2,7 x 109 = 2.700.000.000 vezes por segundo). Isso significa que as máquinas que

operam no modelo Multiciclo geralmente possuem uma frequência de clock muito maior que as

máquinas do modelo Monociclo. Dessa forma, é natural um consumo de energia elétrica maior

e a necessidade de um sistema de arrefecimento mais eficiente, devido às altas temperaturas

apresentadas pelos processadores desse modelo. Comercialmente existem máquinas com

essa implementação disponíveis para uso pessoal e computação de baixo rendimento, como

as encontradas em escritórios, lojas e empresas de médio e pequeno porte. Os processadores

da Intel Xenon 3500, Core i7, bem como o AMD FX-8320, são exemplos de processadores

implementados segundo o modelo Multiciclo.

Como foi apresentado, os dois modelos de implementação de UCP são usados regularmente para

a produção de computadores comerciais. Existem vantagens e desvantagens no uso de um ou

de outro modelo. Do ponto de vista de implementação física da UCP, o modelo Monociclo é mais

interessante, pois é mais simples de ser construído, uma vez que não é necessário um bloco digital

de controle de número de ciclos para cada classe de instruções. Assim, ocupase menos espaço na

área interna da pastilha de circuito integrado (chip), o que contribui ainda mais para a menor dissipação

de calor e, consequentemente, para um consumo de energia elétrica mais baixo, o que torna esse

modelo mais indicado para aplicações usando dispositivos móveis. Por outro lado, dependendo do

programa a ser executado, o seu desempenho poderá ser pior no modelo Monociclo.

Não é possível afirmar que um modelo é melhor ou pior que o outro, no que se refere a desempenho

computacional, pois tudo está diretamente relacionado com o programa a ser executado, mais

especificamente com o conjunto de instruções que formam o programa. Quando um projetista

de hardware tem que escolher um modelo para a implementação de uma UCP, ele considera

inicialmente a classe de problema com que o novo processador irá trabalhar. Por exemplo, se

os cálculos iniciais de tempo de execução de instruções apontaram para os valores das Tabelas

Page 91: Livro Arq Comp

UNIDADE 6: CLASSIFICAÇÃO DO CONJUNTO DE INSTRUÇÕES

90

30 e 31 e se a natureza dos problemas a serem tratados com o novo processador aponta para

a geração de programas que possuem uma quantidade muito grande de instruções da classe

de Controle e Lógica, é possível que ele tenha um desempenho satisfatório sendo executado

em uma máquina cujo modelo de implementação de UCP é Multiciclo. Por outro lado, se os

programas possuem um conjunto maior de instruções da classe de Aritmética e Movimentação

de Dados, o mais indicado é rodar em um processador que possui a implementação Monociclo.

A escolha do modelo de implementação de processamento envolve outras variáveis que ainda

não foram apresentadas, e que vão além de quesitos técnicos. Envolve questões financeiras,pois

o custo final também influencia o projeto, mas por ora esses aspectos não serão discutidos.

RISC versus CISCAté ao final da década de 1970, os projetos de novas UCPs eram focados na redução do “intervalo

semântico” entre as linguagens utilizadas para programar computadores e as linguagens de

máquina. Acreditava-se que tornar as linguagens de máquina mais parecidas com as linguagens

de alto nível resultaria num melhor desempenho, pela redução do número de instruções exigidas

para implementar um programa, bem como tornaria mais fácil traduzir um programa em linguagem

de alto nível para a linguagem de máquina. O resultado desse movimento culminou em projetos

de conjuntos de instruções que possuíam instruções muito complexas.

À medida que a tecnologia usada no processo de tradução entre as linguagens (compiladores)

se aperfeiçoou, os arquitetos de computadores começaram a questionar se os sistemas com

instruções complexas, conhecidos como Computadores com Conjunto de Instruções Complexas

– CISC (Complex Instruction Set Computer), realmente apresentavam melhor desempenho

que os sistemas baseados em conjuntos de instruções mais simples. Essa nova proposta

deabordagem ficou conhecida como Computadores de Conjunto de Instruções Reduzidas –

RISC (Reduced Instruction Set Computer).

O argumento principal a favor dos computadores CISC é que, para executar uma dada

operação, eles geralmente exigem menos instruções que os computadores RISC, de modo

que um computador CISC teria desempenho melhor que um computador RISC que executasse

instruções à mesma velocidade. Além disso, programas escritos para máquinas CISC tendem

Page 92: Livro Arq Comp

Disciplina: Arquitetura de Computadores

91

a tomar menos espaço na memória que os programas escritos para máquinas RISC. Por outro

lado, os projetistas que acreditavam no projeto RISC alegavam que, com frequência de relógio

maior, um processador RISC permite que ele execute programas em menos tempo do que um

processador CISC.

Ao longo da década de 1980 e no início dos anos 1990, houve muita controvérsia na comunidade

de Arquitetura de Computadores sobre qual das duas abordagens era a melhor e, dependendo

do ponto de vista, qualquer uma das duas pode ser considerada melhor. Nos últimos anos,

tem havido certa convergência entre as duas propostas, o que torna difícil determinar se uma

implementação segue o modelo RISC ou CISC. Os projetos RISC incorporaram algumas

instruções complexas que são bastante úteis em um programa. Por outro lado, nos projetos

CISC, foram abandonadas instruções complexas, que não eram utilizadas com frequência

suficiente para justificar a sua implementação.

Uma diferença clara entre os modelos CISC e RISC refere-se ao acesso à memória. Em muitas

implementações CISC, instruções Lógicas e Aritméticas podem usar operandos diretamente

namemória principal, ao invés de usar somente os registradores de uso geral, como é a proposta

do modelo RISC. Por exemplo, é comum encontrar instruções em uma máquina CISC que podem

permitir uma operação de adição na forma ADD R1, R1, [#36], onde o segundo operando é

um dado oriundo diretamente da posição de memória 36. Ao passo que nas máquinas RISC,

primeiro o operando deverá ser carregado em um registrador de uso geral por uma instrução

específica para movimentação de dados com a instrução LOAD, para depois o operando ser

envolvido na operação de adição, sendo necessário o uso de uma instrução de movimentação

de dados antes da operação de adição.

Devemos entender que, no projeto RISC, cada instrução deve realizar operações mais

específicas, como somente somar, ou somente movimentar dados. No modelo CISC de

implementar instruções, uma operação de adição pode envolver mais ações que o simples fato

de somar, como movimentar dados e somar em uma mesma instrução.

Atualmente, encontram-se processadores híbridos, que são essencialmente processadores

CISC, mas que possuem internamente núcleos RISC. Assim, a parte CISC do processador

pode cuidar das instruções mais complexas, enquanto que o núcleo RISC pode cuidar das

mais simples, nas quais é mais rápido. Parece que o futuro nos reserva uma fusão dessas duas

tecnologias. Um bom exemplo de processador híbrido é o Pentium Pro, processadores I3, I5,

I7, todos da Intel.

Page 93: Livro Arq Comp

UNIDADE 6: CLASSIFICAÇÃO DO CONJUNTO DE INSTRUÇÕES

92

A Tabela 32 apresenta uma comparação entre os modelos de RISC e CISC. Considere que, como

os processadores atuais apresentam uma implementação híbrida em sua arquitetura, possuem

características de um modelo e de outro simultaneamente. Em geral, a arquitetura do conjunto

de instruções se refere a qualquer aspecto da arquitetura que é visível por um programador em

linguagem assembly e que, de forma direta, impacta o desempenho do sistema computacional.

Assim, devemos tomar cuidado ao classificar as máquinas novas quanto ao seu conjunto de

instruções. A tabela mostra somente as características que, ao longo da história, apresentaramse

como as principais diferenças entre os modelos RISC e CISC.

Tabela 32: Comparações entre RISC e CISC

RISC CISC

Poucas instruções, podendo chegar em torno de 100. Muitas instruções, variando de 100 a 300 (tipicamente).

Instruções simples - efetuam operações elementares.Instruções mais elaboradas - podem efetuar diversas sub-operações.

Instruções rápidas, com o tempo de execução padronizado em um ciclo por instrução (CPI =1)

Possui instruções que são executadas em termos distintos (CPI varia de acordo com a classe da instrução).

Todos os códigos de máquina possuem o mesmo tamanho, pouca variação no formato.

Os códigos possuem tamanhos diferentes, com uma diversidade no formato das instruções.

Implementação Big-Endian. Implementação Little Endian.

Pouca ou nenhuma variação nos modos de endereçamento de uma instrução.

Uma mesma operação possui muitos modos de endereçamento.

Número razoável de registradores de propósito geral.

Tipicamente 32, havendo implementações com mais de 200.Poucos registradores de uso geral. Tipicamente 16.

Acesso à memória somente através das instruções LOAD e STORE.

Acesso à memória livre, dependendo somente do modo de endereçamento.

Operações Lógicas e Aritméticas somente entre registradores.Operações Lógicas e Aritméticas livre, controlada pelo modo de endereçamento.

Implementação tipicamente Monociclo Implementação tipicamente Multiciclo.

Nesta unidade foram apresentados os modelos de processamento Monociclo e Multiciclo, que

de certa forma impactam o desempenho computacional, o que exige, por parte do projetista

de computador, uma análise detalhada da classe de problemas a serem tratados pelo novo

processador, para a definição do modelo de processamento a ser implementado.

Page 94: Livro Arq Comp

Disciplina: Arquitetura de Computadores

93

A diferença funcional básica entre os modelos encontra-se no tamanho do Ciclo de Máquina,

ou período de clock, que o projetista determina em função do tempo de execução da instrução

mais rápida ou mais lenta, estabelecendo-se, assim, o modelo Multiciclo ou Monociclo,

respectivamente. Nesta unidade, também foram discutidas e apresentadas as características

das máquinas RISC e CISC.

Page 95: Livro Arq Comp

UNIDADE 6: CLASSIFICAÇÃO DO CONJUNTO DE INSTRUÇÕES

94

ReferênciasCARTER, Nicolas. Teoria e problemas de arquitetura de computadores. Porto Alegre: Bookman, 2003.

STALLINGS, W. Arquitetura e organização de computadores. 5. ed. São Paulo: Pearson Education

do Brasil, 2002.

TANENBAUM, A. Organização estruturada de computadores. 4. ed. São Paulo: Prentice-Hall, 2006.

Page 96: Livro Arq Comp

Disciplina: Arquitetura de Computadores

95

UNIDADE 7Desempenho de computadores

Objetivos: Conhecer técnicas para cálculo de tempo de execução de um programa; entender o que é “performance” de computadores; resolver problemas de desempenho de computadores; entender o conceito e o uso de memória cache.

Medidas de desempenho A partir dos anos 1980, o desempenho dos computadores foi impulsionado por melhorias

significativas nas capacidades dos circuitos integrados utilizados para implementar a UCP: os

circuitos integrados de memória e de outros componentes de computadores. Com o passar do

tempo, o processo de fabricação de circuitos integrados incorporou tecnologias que permitiram

o aumento de densidade das pastilhas de circuito integrado, ou seja, o aumento da quantidade

de transistores e conexões por centímetro quadrado em uma pastilha de silício (material básico

para a produção de circuitos integrados). Houve também uma melhoria no tempo de resposta

dos circuitos, permitindo que cada porta lógica básica e dispositivos de memória tivessem

aumento de velocidade de resposta; já o espaço usado para acomodar todo o circuito eletrônico

ficou cada vez menor, consumindo menos energia e com mais eficiência computacional.

A vertiginosa evolução no desempenho dos computadores ao longo das últimas décadas foi

alavancada pelo aumento da velocidade de operação e da densidade de integração dos chips,

que foram aperfeiçoadas em uma escala geométrica, e não linearmente. Isso significa que,

quando se compara a melhoria no desempenho obtida em um determinado ano com a melhoria

alcançada no ano seguinte, a diferença entre o ganho em desempenho se mostra relativamente

constante, em vez de um valor absoluto constante. Em média, o número de transistores que

podem ser produzidos sobre uma pastilha padrão de silício aumenta cerca de 50% ao ano, e a

velocidade de comutação dos transistores aumentou tanto que o atraso no tempo de resposta de

uma porta lógica, que é formada por um conjunto de transistores, diminui 13% ao ano. Na literatura

técnica, a observação de que o desempenho dos computadores melhora geometricamente e

não linearmente é conhecida como a Lei de Moore (Gordon Moore, um dos fundadores da Intel).

Page 97: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

96

Observadas as características dos produtos disponibilizados pela indústria do silício, o volume

de dados que pode ser armazenado em um circuito integrado de memória, por exemplo,

a RAM dinâmica (DRAM), aumentou em quatro vezes a cada três anos, considerando os

dispositivos comercializados desde o início da década de 1980, gerando uma taxa de

crescimento anual próxima de 60%.

Considerando somente o período compreendido entre o final da década de 1970 e o final da

década de 1980, o desempenho das UCPs (processadores) teve como mola propulsora o

aperfeiçoamento da tecnologia de fabricação de circuitos integrados, o que se refletiu num

crescimento anual de 35%. Daí em diante, a taxa de aperfeiçoamento efetivamente cresceu

para mais de 50% ao ano, embora a taxa do progresso de fabricação de semicondutores tenha

permanecido relativamente a mesma no período.

O aumento na taxa de desempenho dos computadores vem crescendo, tendo em vista também

as diversas melhorias na arquitetura e na organização de computadores. Os arquitetos têm

se mostrado cada vez mais capazes de tirar proveito da crescente evolução da densidade

de integração aplicada sobre os circuitos integrados, acrescentando recursos às UCPs, bem

como aos sistemas de memória, os quais proporcionam um ganho no desempenho acima

do aumento da velocidade dos transistores que os implementam. Para ilustrar isso, pode-se

destacar o uso de estruturas lógicas como o pipeline, que será apresentado mais adiante, o uso

de memórias do tipo DDR (Double Data Rate), técnicas como o overclock, implementação de

memórias cache, entre outras.

Avaliando um sistema computacionalNa seção 8.1, foram apresentadas justificativas para o aumento do desempenho dos

computadores, contudo o conceito de “desempenho de computadores” não foi apresentado

formalmente, pois o termo “desempenho” é vago quando utilizado no contexto de sistemas

computacionais. Geralmente, o desempenho descreve a rapidez com a qual um determinado

sistema pode executar um programa ou um conjunto de programas. Tipicamente, sistemas que

executam programas em menor tempo são considerados como de melhor desempenho.

Assim, melhor medida para definir o desempenho de um computador é o tempo de execução

de um programa que o usuário deseja executar. Geralmente é impraticável testar todos os

Page 98: Livro Arq Comp

Disciplina: Arquitetura de Computadores

97

programas que serão executados em um dado sistema antes de decidir qual computador

comprar, ou mesmo quando é necessário tomar decisões durante a fase de projeto da máquina.

Assim, os engenheiros e cientistas da computação criaram algumas métricas para avaliar o

desempenho, e definiram certas unidades de medida para descrever o desempenho de

computadores. Também foram criadas unidades de medida para registrar o desempenho de

alguns subsistemas dos computadores.

Deve-se observar que, além do desempenho, diversos fatores podem influenciar decisões

de projetos ou de compra de computadores, como a facilidade para o desenvolvimento de

sistemas, pois o tempo e os custos necessários para desenvolver programas que sejam

efetivamente úteis podem ser mais significativos do que o benefício com o uso do programa; ou

mesmo a questão da compatibilidade dos programas entre as diversas máquinas disponíveis

no mercado, pois a maioria dos programas é comercializada no formato binário, ou seja, o

programa foi desenvolvido em uma linguagem de alto nível e posteriormente foi traduzido para

uma linguagem de máquina específica e pode ser executado somente por uma família de UCP

em particular. Se um determinado programa de que você necessita não pode ser executado

no computador que você tem, não importa a rapidez com que outro sistema pode executar o

mesmo programa.

Unidades de medidas de desempenho

MIPS

Uma das unidades de medida mais antigas para avaliar o desempenho de computadores

é a taxa pela qual a máquina executa instruções. Isso é calculado dividindo-se o número de

instruções executadas em benefício de um programa pelo tempo necessário para executá-lo,

e é tipicamente expresso em Milhões de Instruções Por Segundo (MIPS). Essa medida caiu em

desuso porque não leva em conta o fato de que diferentes sistemas, frequentemente, precisam de

números diferentes de instruções para implementar um dado programa. Compare os programas

apresentados ao longo da Unidade 6, e observe que, para as diferentes arquiteturas, o número

de instruções de um mesmo programa sofre variação. A taxa de MIPS de um computador nada

diz a respeito de quantas instruções são necessárias para executar uma data tarefa, tornando-a

menos útil do que outras unidades para comparar o desempenho de diferentes sistemas.

Page 99: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

98

CPI

Outra unidade utilizada para descrever o desempenho de computadores está relacionada

com o número de ciclos de clock necessários para executar cada instrução, conhecida como

Ciclos Por Instrução (CPI). O CPI de um programa a ser executado em um sistema é calculado

dividindo-se o número de ciclos de clock usados na execução do programa pelo número de

instruções executadas.

IPC

Em sistemas que podem executar mais de uma instrução por ciclo, o número de Instruções

Por Ciclo, ou IPC, é frequentemente utilizado em detrimento da unidade CPI. O IPC é calculado

dividindo-se o número de instruções executadas pelo número de ciclos de clock necessários

para a execução do programa. Essa unidade está relacionada indiretamente com o CPI. De certa

forma, tanto o CPI quanto o IPC fornecem a mesma informação, e a escolha de qual unidade

deve ser usada geralmente é relacionada com os resultados obtidos usando cada métrica.

Quando se utiliza o IPC e o CPI para comparar sistemas, é importante lembrar que valores altos

de IPC indicam que o programa de referência demorou menos ciclos para ser executado do que

valores baixos de IPC, enquanto que valores altos de CPI indicam que foram necessários mais

ciclos do que valores baixos de CPI. Assim, um IPC alto tende a indicar bom desempenho; um

CPI alto indica um desempenho fraco.

Exemplo:

Um determinado programa é formado somente por uma estrutura de repetição constituída por

um conjunto de 100 instruções, as quais são executadas 42 vezes. Considerando que são

necessários 16.000 ciclos de clock para executar o referido programa em uma determinada

máquina, quais são os valores de CPI e de IPC do sistema para esse programa?

Resposta:

A estrutura de repetição possui 100 instruções e é executada 42 vezes, de modo que o número

total de instruções executadas é 100 x 42 = 4200. São gastos 16.000 ciclos para executar o

programa, de modo que o CPI é 16.000/4200 = 3,81. Para calcular o IPC, basta dividir 4200

instruções por 16.000 ciclos, perfazendo um IPC de 0,26.

Page 100: Livro Arq Comp

Disciplina: Arquitetura de Computadores

99

Em geral, o IPC e o CPI são medidas ainda menos úteis de desempenho para os sistemas

atuais do que o MIPS, porque eles não contêm qualquer informação a respeito da frequência de

clock da máquina ou de quantas instruções o sistema exige para executar uma tarefa.

Sabendo qual é a taxa de MIPS de um sistema para um determinado programa, é possível

multiplicá-la pelo número de instruções executadas no sistema para determinar quanto tempo

levou para o programa ser executado. Por outro lado, conhecendo-se a taxa CPI de um sistema

para um dado programa e multiplicando-se pelo número de instruções executadas, encontra-

se o número de ciclos que foram gastos para completar o programa, contudo, usando-se essa

unidade de medida, deve-se conhecer a frequência de clock do sistema para se determinar o

tempo de execução do programa.

Como resultado, o CPI e o IPC raramente são utilizados para comparar sistemas computacionais

atuais. No entanto, são unidades muito comuns na pesquisa de Arquitetura de Computadores,

porque a maior parte desse tipo de pesquisa é feita com programas que simulam uma arquitetura

em especial, para estimar quantos ciclos um dado programa irá utilizar para ser executado naquela

arquitetura. Esses simuladores geralmente são incapazes de prever o ciclo de tempo dos sistemas

que eles simulam, de modo que o CPI / IPC é a melhor estimativa de desempenho disponível.

FLOPS

Computadores modernos e desenvolvidos com foco em aplicações científicas, ou que necessitam

manipular uma massa muito grande de dados numéricos, possuem unidades operacionais

específicas para cálculos numéricos que empregam número em ponto flutuante, como é o caso

dos processadores Pentium, i3, i5 entre outros, que possuem uma ULA dedicada à execução

de instruções que envolvem números em ponto flutuante. Considerando essa especificidade, foi

criada uma métrica que avalia o desempenho dessas unidades, chamada de FLOPS (Floating-

point Operations Per Second), que expressa a quantidade de operações com ponto flutuante

realizadas em um segundo.

É importante observar que essa unidade de medida deve ser usada somente para comparar

máquinas que possuem uma ULA específica para esse tipo de operação, ou quando se

deseja saber quanto será o ganho, em termos de desempenho, ao comparar máquinas com

implementação que não possuem essas unidades especializadas. Ou seja, a unidade FLOPS

não deve ser usada de forma geral como as unidades de medidas CPI, IPC ou MIPS.

Page 101: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

100

Como os computadores são capazes de realizar milhões de operações por segundo, podem

ser adotados os múltiplos da unidade de medida FLOPS. A Tabela 33 apresenta a relação

entre a unidade básica FLOPS e seus múltiplos, considerando os prefixos oficiais do Sistema

Internacional de Unidades.

Tabela 33: Múltiplos de FLOPS

Prefixo Ordem de grandeza Escala curtaRelação com a unidade

básica

M MFLOPS (megaflops)milhão de operações em ponto flutuante por segundo

1 x106

G GFLOPS (gigaflops)bitão de operações em ponto flutuante por segundo

1 x109

T TFLOPS (teraflóps)trilhão de operações em ponto flutuante por segundo

1 x1012

P PFLOPS (petaflops)quadrilhão de operações em ponto flutuante por segundo

1 x1015

E EFLOPS (exaflops)quintilhão de operações em ponto flutuante por segundos

1 x1018

Z ZFLOPS (zettaflops)sextilhão de operações em ponto flutuante por segundo

1 x1022

Y YFLOPS (yottaflops)septilhão de operações em ponto flutuante por segundo

1 x1024

Conjunto de Benchmark

Como foi apresentado, tanto o MIPS quanto o CPI ou mesmo o IPC possuem limitações

significativas como medidas de desempenho de computadores, principalmente quando

se deseja comparar dois sistemas computacionais distintos. Os Conjuntos de Benchmark

(ferramentas de referência para medição de desempenho) são alternativas para efetuar medidas

e avaliações de desempenho de computadores que foram desenvolvidas para resolver as

limitações apresentadas pelas métricas MIPS, CPI e IPC. Observa-se que o FLOPS possui uma

aplicação específica e é usado pelas ferramentas de Benchmark.

Uma ferramenta de Benchmark é formada por uma série de programas semelhantes a diversos

tipos de programas que serão executados pelos sistemas computacionais. A pontuação de um

sistema na ferramenta de Benchmark é baseada em quanto tempo o sistema leva para executar

todos os programas que compõem a ferramenta. Existem muitas ferramentas de Benchmark

Page 102: Livro Arq Comp

Disciplina: Arquitetura de Computadores

101

diferentes, que geram estimativas do desempenho de um sistema com diferentes tipos de

aplicações. Uma das ferramentas de Benchmark mais conhecidas é a suíte SPEC, produzida

pela Standatd Performace Evaluation Corporation.

As ferramentas de Benchmark apresentam diversas vantagens sobre MIPS e CPI e IPC. Primeiro,

seus resultados de desempenho são baseados em tempos totais de execução, não na taxa de

execução de instruções. Segundo, elas fazem uma média do desempenho do sistema por vários

programas, de modo a gerar uma estimativa de sua velocidade média. Isso torna a avaliação

geral do sistema por uma ferramenta de Benchmark um indicador melhor do seu desempenho

geral do que a avaliação MIPS em qualquer programa isolado. Além disso, muitas ferramentas

de Benchmark exigem que os fabricantes de computadores publiquem os resultados dos

seus sistemas usando programas individuais do Benchmark, bem como a pontuação geral

do sistema no conjunto de Benchmark, tornando possível fazer uma comparação direta de

resultados individuais dessas ferramentas. Assim, é possível identificar que um sistema será

utilizado para uma aplicação em especial.

Média geométrica versus média aritmética

Muitas ferramentas de Benchmark utilizam a média geométrica, em vez de média aritmética, para

calcular a média dos resultados dos programas contidos no conjunto de Benchmark, porque

um único valor extremo tem impacto menor sobre a média geométrica de uma série do que

sobre a média aritmética. Utilizar a média geométrica torna mais difícil que um sistema atinja uma

pontuação alta no Benchmark, ao atingir um bom desempenho em apenas um dos programas

do conjunto, fazendo com que a pontuação geral do sistema seja um indicador melhor do seu

desempenho com a maioria dos programas.

A média geométrica de n valores é calculada multiplicando-se os n valores e tirando-se raiz

enésima do produto. A média aritmética, ou média de um conjunto de valores, é calculada

somando-se todos os valores e dividindo-se o resultado pelo número de valores.

Aceleração

Frequentemente, os projetistas de computadores utilizam o termo aceleração para descrever

como o desempenho de uma arquitetura muda à medida que diferentes melhoramentos são

feitos nela. A aceleração é simplesmente a razão entre os tempos de execução antes e depois

que mudança é feita, de modo que:

Page 103: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

102

Aceleração = Tempo de execuçãoantes / Tempo de execuçãodepois

Por exemplo, se um programa demora 12 segundos para ser executado em uma versão de uma

arquitetura e 7 segundos para ser executado em uma nova versão, a aceleração geral é de 12

segundos / 15 segundos = 1,714.

Lei de AMDAHL

É a regra mais importante para projetar sistemas de computadores de alto desempenho e fazer

com que a instrução mais comum seja a mais rápida. Qualitativamente, isso significa que o

impacto de um dado aperfeiçoamento sobre o desempenho geral do sistema depende tanto

de quanto o aperfeiçoamento melhora o desempenho quando ele é utilizado, como de com que

frequência esse aperfeiçoamento é utilizado. Quantitativamente, essa regra foi expressa pela Lei

de Amdahl, que define:

Tempo de execuçãonovo = Tempo de execuçãoantigo x [Parcelanão_usada + (Parcelausada/Aceleraçãousada)]

Na equação, Parcelanão_usada é a parcela de tempo (não instruções) na qual o aperfeiçoamento

não está em uso; Parcelausada é a parcela de tempo na qual o aperfeiçoamento está em uso

e Aceleraçãousada é a aceleração que acontece quando o aperfeiçoamento é usado (isto é, a

aceleração geral se o aperfeiçoamento fosse utilizado o tempo todo). Note que Parcelausada

e Parcelanão_usada são calculadas utilizando o tempo de execução antes que as modificações

sejam aplicadas.

Uso de pipelineOs processadores mais antigos executam as instruções de modo muito direto, ou seja, a UCON

busca uma instrução na memória principal e a armazena no IR (ciclo de busca de instrução - BI). Na

sequência, a instrução é avaliada e decodificada, permitindo identificar qual operação efetivamente

deverá ser executada e quais operandos estão envolvidos na operação (ciclo de decodificação da

instrução - DI). O próximo estágio do processo de execução é referente à leitura dos operandos

(ciclo de busca do operando - BO), seguido pela fase de execução da operação (EX) e finalizando

com a escrita/armazenamento do resultado (ER). Essa sequência é ilustrada pela Figura 46:

Page 104: Livro Arq Comp

Disciplina: Arquitetura de Computadores

103

BI DI BO EX ER

1º 2º 3º 4º 5º

Figura 46: Estágios de execução de uma instrução

Considerando-se o diagrama funcional apresentado pela Figura 46, pode-se imaginar que as

unidades lógicas usadas para implementar cada um dos ciclos de execução de uma instrução

são teoricamente diferentes, pois envolvem operações lógicas distintas, podendo-se concluir

que, à medida que uma determinada instrução vai sendo executada, as unidades funcionais já

utilizadas ficam ociosas, havendo, de certa forma, um desperdício momentâneo de hardware.

Em analogia ao processo de execução de instruções por parte dos processadores mais antigos,

imagine uma lavanderia que possui os seguintes estágios no seu processo de lavagem:

1º. Receber a trouxa de roupa

2º. Lavar

3º. Secar

4º. Passar

5º. Entregar

Ainda sobre o funcionamento da lavanderia, considere que ela possui a capacidade de

efetuar todo o processo em somente uma trouxa de roupa por vez, demorando cerca

de 10 minutos em cada estágio. Dessa forma, são necessários 50 minutos para atender

cada cliente que chegar com uma trouxa de roupa. Não é difícil imaginar uma melhora nos

processos dessa lavanderia, pois, havendo um investimento em pessoal e sincronismo

entre os processos, é possível atender a mais de um cliente por vez. É claro que o tempo

de lavagem da trouxa não muda, mas a vazão nos processos da lavanderia melhoraria

significativamente.

O que está sendo proposto é a otimização de todas as unidades funcionais da lavanderia,

com pelo menos um funcionário responsável em cada estágio, e a sincronização entre

os processos. Assim, o primeiro estágio só poderá receber uma nova trouxa de roupa

quando finalizar a recepção da trouxa já iniciada. Por sua vez, o estágio de lavagem das

roupas não poderá iniciar uma nova lavagem antes de terminar e entregar a lavagem

Page 105: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

104

corrente. Assim deverá ser a política de trabalho em todos os estágios dessa lavanderia.

A Figura 47 ilustra o funcionamento após a recepção da primeira trouxa de roupa, seguida

pelas demais trouxas. Observe que a primeira trouxa será entregue 50 minutos depois de

recebida, assim como as demais; o que melhorou no processo é que, a cada 10 minutos,

uma trouxa de roupa está pronta para ser entregue, o que aumenta a vazão do sistema

de 1 para 5 trouxas a cada 50 minutos. É claro que a melhoria aparece após a entrega da

primeira trouxa.

Trouxa 2Trouxa 3Trouxa 4Trouxa 5

Trouxa 1

Trouxa 2Trouxa 3Trouxa 4Trouxa 5

Trouxa 1

Trouxa 2Trouxa 3Trouxa 4Trouxa 5

Trouxa 1

Trouxa 2Trouxa 3Trouxa 4Trouxa 5

Trouxa 1

Trouxa 2Trouxa 3Trouxa 4Trouxa 5

Trouxa 1......

...

......

...

...... ...

Processo

Tempo

...

10`20`30`40`50`60`70`80`90`

Receber Lavar Secar Passar Entregar

Figura 47: Temporização do processo de lavagem de roupas

Se a mesma metodologia usada na lavanderia for aplicada para a otimização da execução das

instruções em um processador, será usada uma técnica denominada Pipelining, que na verdade

é usada para sobrepor a execução de diversas instruções, visando reduzir o tempo de execução

de um programa e não de uma instrução propriamente dita.

O pipeline é uma estrutura eletrônica usada para implementar uma lógica adicional de controle de

execução de instruções pela UCON, que permite a utilização de unidades operacionais ociosas

em benefício de um programa. O uso dessa estrutura pode melhorar o tempo de execução de um

programa desde que não ocorram conflitos no pipeline. A Figura 48 apresenta uma implementação

de pipeline em forma de blocos lógicos e o uso de registradores entre cada os blocos da unidade

de controle, o que permite a implementação da metodologia de sobreposição de instrução, em

que cada um dos registradores internos isolam as unidades operacionais envolvidas.

Page 106: Livro Arq Comp

Disciplina: Arquitetura de Computadores

105

Registrador B

I/DI

Registrador D

I/BO

Registrador B

o/EX

Registrador EX/ER

Figura 48: Uso de registradores para implementar um pipeline de 5 estágios

O uso de pipeline não é a solução definitiva para o aumento de desempenho em sistemas

computacionais. Existem diversos problemas com o uso de pipeline que definitivamente

diminuem o seu rendimento geral. A maioria dos problemas pode ser resolvida pelo

programador ou pelo aplicativo tradutor (compilador), seja alterando a ordem de execução

de algumas instruções do programa ou mesmo eliminando estrutura condicionais e/ou

de repetição em um programa. Tipicamente os problemas encontrados com o uso de

pipeline podem ser:

Estruturais

São problemas oriundos da impossibilidade de uso de alguma unidade operacional da UCP;

por exemplo, a unidade lógica responsável pela busca de instruções conflita com a unidade de

busca do operando, no instante da execução de instruções que necessitam efetuar acesso à

memória principal para buscar um operando. Normalmente esse tipo de conflito não pode ser

controlado pelos programadores, sendo possível a solução somente ao longo do projeto do

pipeline, ou seja, é uma solução de implementação física.

Dependência de dados

Frequentemente é necessário executar em um programa uma sequência de operações lógicas

e/ou aritméticas. Estatisticamente, é provável que o resultado de uma instrução seja usado

pelas instruções seguintes. Assim, o problema aparece quando, dependendo do número de

estágios de um pipeline, a instrução imediatamente seguinte ou mesmo a segunda instrução

necessita usar esse resultado como fonte de sua operação, ou seja, o operando destino de

uma instrução será usado como operando fonte de uma operação subsequente.

Page 107: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

106

Observe, na Figura 49, que o resultado da operação de adição ainda não foi gravado pela

unidade de escrita de resultado, e a instrução imediatamente posterior está efetuando a

leitura do valor do operando, ou seja, o dado usado pela operação de multiplicação está

contaminado, pois possui um valor que não pode ser considerado verdade para a operação.

Esse tipo de problema pode ser facilmente resolvido pelo programador/compilador com uma

simples troca da ordem das instruções ou mesmo inserindo-se uma instrução NOP para

estabelecer a distância necessária entre as instruções conflitantes.

Desvio

São raros os programas que não fazem uso de instruções de desvio, como as instruções JMP,

JZ, JNZ. O que deve ser avaliado com o uso de pipeline é que, sempre que houver um desvio,

o pipeline deverá ser esvaziado e carregado com o alvo da instrução de desvio, bem como

as instruções que a seguem, de certa forma, inserindo um atraso significativo no tempo de

execução do programa. Uma proposta de solução para esse conflito passa pela diminuição do

uso de estruturas que efetuam desvios, bem como uma análise detalhada do programa pelo

programador para alocar o trecho de programa que possui a menor probabilidade de execução

como alvo da instrução de desvio.

Para análise de desempenho dos computadores que utilizam pipeline, deve-se considerar a

latência e a taxa de vazão ou throughput. A latência indica o tempo necessário para a execução

de uma única operação. O througput indica a velocidade na qual um conjunto de instruções é

executado, ou taxa de rendimento, que tipicamente são expressas como instruções\segundo

ou instruções\ciclo).

Nos processadores que não utilizam pipeline, o throughput é igual ao inverso da latência (1\

latência), uma vez que cada operação é executada atomicamente (indivisivelmente). Nos

processadores com pipeline, o throughput deve ser maior que o inverso da latência, uma vez

que existe uma sobreposição de instruções. No entanto, a latência de um processador com

pipeline é igualmente importante, na medida em que a latência determina a frequência com que

instruções que geram conflitos podem ser executadas.

Page 108: Livro Arq Comp

Disciplina: Arquitetura de Computadores

107

ADD R1, R2, R3MUL R4, R3, R1SUB R5, R6, R7SUB R5, R6, R7

MOV R1, 0

ADD R1, R2, R3MUL R4, R3, R1SUB R5, R6, R7SUB R5, R6, R7

MOV R1, 0

ADD R1, R2, R3

SUB R5, R6, R7SUB R5, R6, R7

MOV R1, 0

ADD R1, R2, R3MUL R4, R3, R1SUB R5, R6, R7SUB R5, R6, R7

MOV R1, 0

ADD R1, R2, R3MUL R4, R3, R1SUB R5, R6, R7SUB R5, R6, R7

MOV R1, 0......

...

......

...

...... ......

MUL R4, R3, R1

Figura 49: Conflito de dados no pipeline – R1 usado com destino e fonte

Uso de memória cacheOs dispositivos de armazenamento dos sistemas computacionais são hierarquizados em função

da sua proximidade com a ULA. Os elementos mais próximos possuem um tempo de resposta

extremamente rápido se comparados com os mais distantes, e até mesmo com a latência da

própria ULA. Por outro lado, o custo de implementação é inversamente proporcional ao tempo

de resposta de cada um dos elementos, o que de certa forma contrasta com o volume de

dados armazenado em cada nível hierárquico, pois, à medida que aumenta a distância em

relação à ULA, o volume para armazenamento aumenta. A Figura 50 ilustra a relação entre tempo

de resposta, distância e volume armazenado.

< volume armazenadoREGISTRADORES

MEMÓRIA CACHE

MEMÓRIA PRINCIPAL

MEMÓRIA SECUNDÁRIA> volume armazenado

Acesso mais rápido

Acesso mais lento

Figura 50: Hierarquia do sistema de memória dos dispositivos computacionais

Sob o ponto de vista de desempenho computacional, os dispositivos de armazenamento

mais indicados são os registradores, mas, devido ao custo de implementação muito alto, os

processadores/UCP possuem um conjunto limitado desse tipo de dispositivo de armazenamento,

Page 109: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

108

que não é suficiente para armazenar um programa completo. Por outro lado, a memória principal

é um subconjunto do sistema de memória com características operacionais que devem permitir

o acesso à leitura e à escrita de dados e programas em um volume razoavelmente considerável,

mas possui um tempo de resposta alto, o que impacta negativamente o desempenho do

sistema computacional.

Para otimizar o desempenho sem aumentar significativamente o custo dos computadores, os

engenheiros projetaram um subsistema de memória intermediário entre a UCP e a memória

principal, denominado memória cache. A ideia básica na utilização de memória cache é esconder

o baixo rendimento da memória principal com a utilização de um pequeno banco de memória,

constituído de dispositivos com tecnologia similar à dos registradores, que de certa forma se

apresenta como um espelho de parte da memória principal (Figura 51). Para tanto, é necessário

utilizar um sistema auxiliar de controle de cache, que irá registrar quais endereços de memória

estão espelhados e atualizar os dados na memória principal sempre que necessário.

UCP

CACHEMemória Principal

Figura 51: Espelhamento da memória principal (memória cache)

Assim sendo, todas as vezes que a UCON efetuar um acesso à memória principal, deverá

verificar, primeiro, se o endereço acessado está na memória cache. Caso o endereço

acessado esteja na memória cache, o conteúdo é rapidamente lido pela UCON, não sendo

necessário efetuar acesso à memória principal. Nesse caso, dizemos que houve um «acerto

de cache”. Caso contrário, haverá uma “falha de cache”, obrigando a UCON a efetuar um

acesso à memória principal, e o sistema auxiliar de cache a copiar o conteúdo do endereço

acessado, bem como alguns outros endereços de memória da vizinhança, conforme o

comprimento da linha de cache, para atender a UCON em um futuro próximo e evitar acesso

Page 110: Livro Arq Comp

Disciplina: Arquitetura de Computadores

109

à memória principal, ganhando em desempenho. Na verdade, o sistema de controle de

cache considera o princípio computacional da localidade para copiar dados da memória

principal na cache, pois a probabilidade de acessos a endereços próximos a um endereço

já acessado é muito alta.

O comprimento de linha de uma cache está relacionado com o tamanho do grupo de dados

que nela são copiados ou dela são eliminados, em resposta a uma falha na cache. Por

exemplo, se uma cache tem o comprimento de linha igual a 32 bytes, todas as vezes que

buscar um novo dado na memória, será copiado um bloco de 32 bytes de dados contendo

o endereço de falta e descartando outros 32 bytes para liberar espaço na cache.

Com relação ao processo de escrita de dados na memória principal, é possível seguir uma

de duas políticas básicas de escrita. A primeira, conhecida como write-through, orienta que,

todas as vezes que um dado for gravado na cache pela UCON, ele deverá ser gravado

imediatamente na memória principal. A segunda é chamada de write-back, pela qual a

atualização de um dado na memória principal se dá somente quando o sistema de controle de

cache encontrar uma “falha de cache”. Pode-se notar que a primeira política tende a diminuir

o desempenho do sistema, pois, sempre que um único dado for gravado pela UCON, será

necessário esperar o encerramento do processo de escrita na memória principal para efetuar

um novo acesso à memória.

Sob a ótica da segunda política, pode ocorrer a gravação de mais de um dado na memória

principal e, dependendo do programa, essa política será mais eficiente. Como regra geral

de uso de memória cache, programas que fazem acessos de escrita a memória principal

com muita frequência devem utilizar a política write-back, com, por exemplo, programas

de processamento de imagens. Por outro lado, para programas que fazem uso de poucas

variáveis e com uma frequência de atualização baixa é mais indicada a política write-

through. Na verdade, como não conhecemos a fundo a estrutura interna das aplicações, o

recomendado é efetuar testes de funcionamento das duas políticas. A título de curiosidade, a

troca da política de escrita de cache é normalmente efetuada pelo programa de configuração

do hardware (Setup do computador).

Page 111: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

110

PeriféricosAinda sobre desempenho computacional, deve-se levar em conta as características e

a tecnologia dos dispositivos de entrada e saída, pois, sempre que for necessário ler

ou gravar um dado que está associado a um determinado dispositivo, a UCP deverá

aguardar o envio ou o recebimento dos dados por parte do periférico. Como os periféricos

normalmente utilizam sistemas mecânicos, ou dependem da manipulação direta do

homem para o seu funcionamento, há de se considerar que eles são muito mais lentos

que a UCP, contribuindo negativamente para o desempenho geral do sistema.

Periféricos mais modernos utilizam sistemas de memória cache para aumentar a sua

performance, mas deve-se lembrar que o custo de produção desses dispositivos é mais

alto que o dos demais. Outra alternativa para melhorar o desempenho geral dos sistemas

é a utilização de uma técnica conhecida como DMA (Acesso Direto à Memória), como

ilustra a Figura 52. Essa técnica faz uso da comunicação direta com a memória principal,

gravando ou lendo uma massa de dados nos momentos em que a UCP não está fazendo

uso do barramento de comunicação externo, lembrando o modelo de Von Neumman, e

assim evita que a UCP faça acessos diretos aos periféricos para manipulação de dados.

UCP

CACHE

Memória Principal

Dispositivos de Entrada e Saída

Processando ou acessando a cache

Periférico efetuando acesso direto a memória

Figura 52: DMA – Acesso Direto à Memória

Page 112: Livro Arq Comp

Disciplina: Arquitetura de Computadores

111

Esta unidade apresentou alguns conceitos e tecnologias que impulsionam o desempenho

de computadores e forneceu um arcabouço de recursos para a discussão e a avaliação do

desempenho de sistema. Como foi apresentado, há vários modos de medir o desempenho de

computadores, e as medidas mais efetivas do desempenho geral são baseadas no desempenho

de um sistema com uma ampla variedade de aplicação.

Para prever o desempenho de um sistema em uma determinada aplicação, é importante

entender como uma dada unidade de desempenho foi concebida, de modo que se entenda

também qual é a sua utilidade. Vimos que o uso de técnicas de adiantamento de instruções

(pipeline) pode contribuir positivamente para o desempenho, mas cuidados devem ser tomados

para evitar os conflitos no pipeline. Vimos, ainda, como o uso de memórias espelho e técnicas

de DMA podem melhorar o desempenho de um sistema.

Page 113: Livro Arq Comp

UNIDADE 7: DESEMPENHO DE COMPUTADORES

112

ReferênciasCARTER, Nicolas. Teoria e problemas de arquitetura de computadores. Porto Alegre: Bookman, 2003.

STALLINGS, W. Arquitetura e organização de computadores. 5. ed. São Paulo: Pearson Education

do Brasil, 2002.

TANENBAUM, A. Organização estruturada de computadores. 4. ed. São Paulo: Prentice-Hall, 2006.

Page 114: Livro Arq Comp