You are on page 1of 78

Introduo a Arquitetura de Computadores

Introduo a Arquitetura de Computadores

Introduo a Arquitetura de Computadores

Sumrio

Introduo

1.1

O que a Arquitetura de um Computador? . . . . . . . . . . . . . . . . . . . . . . .

1.2

Por que estudar Arquitetura de Computadores? . . . . . . . . . . . . . . . . . . . .

1.3

Um aluno de Licenciatura em Computao precisa estudar . . . . . . . . . . . . . .

1.4

Arquitetura geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.1

Operaes bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5

Sistemas Analgicos x Sistemas Digitais . . . . . . . . . . . . . . . . . . . . . . . .

1.6

O Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7

A Lei de Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.8

A evoluo dos computadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.8.1

O ENIAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.8.2

A Arquitetura de von Neumann . . . . . . . . . . . . . . . . . . . . . . . .

11

1.8.3

A IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.8.4

As geraes dos computadores . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.8.5

Memrias de semicondutores . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.8.6

A Intel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.8.7

A Apple e a Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.10 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

Unidade Central de Processamento (CPU)

16

2.1

O que um programa? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.1.1

Software X Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

Estrutura de uma CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.2.1

Os papis dos barramentos e da memria . . . . . . . . . . . . . . . . . . .

18

2.2.2

Os registradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.2.3

Unidade Lgica e Aritmtica (ULA) . . . . . . . . . . . . . . . . . . . . . .

21

2.2.4

Unidade de Controle (UC) . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.9

2.2

ii

Introduo a Arquitetura de Computadores


2.3

Ciclo de Instruo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.3.1

Busca de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.4

Interrupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.5

Sobre o desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.6

Exemplo de execuo de um programa . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.7

Aumentando o desempenho com Pipeline . . . . . . . . . . . . . . . . . . . . . . .

27

2.8

Limitaes do Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.8.1

Medidas de desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

2.8.2

Exemplos de calcular o desempenho de um processador . . . . . . . . . . .

33

Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

2.9
3

Unidade de Controle

36

3.1

Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.2

Microoperaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.2.1

Busca de Instruo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.2.2

Busca indireta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

3.2.3

Execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.2.4

Salvar resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.2.5

Salto condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.3

Tipos de Microoperaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

3.4

Decodificao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

3.5

Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

3.5.1

Busca de Instruo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

3.5.2

Decodificao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

3.5.3

Busca de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

3.5.4

Execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

3.5.5

Salva Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

3.5.6

Instruo completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

3.6
4

Conjunto de Instrues

45

4.1

Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.2

O projeto de um Conjunto de Instrues . . . . . . . . . . . . . . . . . . . . . . . .

45

4.2.1

Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.2.1.1

Arquitetura de Pilha . . . . . . . . . . . . . . . . . . . . . . . . .

46

4.2.1.2

Arquitetura baseada em Acumulador . . . . . . . . . . . . . . . .

46

iii

Introduo a Arquitetura de Computadores

4.3

4.4

4.5
5

4.2.1.3

Arquitetura Load/Store . . . . . . . . . . . . . . . . . . . . . . .

46

4.2.1.4

Arquitetura Registrador-Memria . . . . . . . . . . . . . . . . . .

47

Aspectos do Projeto do Conjunto de Instrues . . . . . . . . . . . . . . . . . . . .

47

4.3.1

Modelo de Memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

4.3.1.1

Memria alinhada x no alinhada . . . . . . . . . . . . . . . . . .

48

4.3.1.2

Memria para dados e instrues . . . . . . . . . . . . . . . . . .

49

4.3.1.3

Ordem dos bytes . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

4.3.1.4

Acesso aos registradores . . . . . . . . . . . . . . . . . . . . . . .

51

4.3.2

Tipos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

4.3.3

Formato das Instrues . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

4.3.4

Tipos de Instrues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

4.3.5

Modos de Endereamento . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

4.3.5.1

Endereamento Imediato . . . . . . . . . . . . . . . . . . . . . .

54

4.3.5.2

Endereamento Direto . . . . . . . . . . . . . . . . . . . . . . . .

54

4.3.5.3

Endereamento Direto por Registrador . . . . . . . . . . . . . . .

54

4.3.5.4

Endereamento Indireto . . . . . . . . . . . . . . . . . . . . . . .

54

4.3.5.5

Endereamento Indireto por Registrador . . . . . . . . . . . . . .

55

4.3.5.6

Endereamento Indexado . . . . . . . . . . . . . . . . . . . . . .

55

4.3.5.7

Endereamento Indexado por Registrador . . . . . . . . . . . . .

55

RISC x CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

4.4.1

Afinal, qual a melhor abordagem? . . . . . . . . . . . . . . . . . . . . . . .

57

Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

Sistema de Memria

58

5.1

Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

5.2

Princpio da Localidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

5.3

Funcionamento do Sistema de Memria . . . . . . . . . . . . . . . . . . . . . . . .

60

5.4

Memrias de Semicondutores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

5.4.1

Random-Access Memory (RAM) . . . . . . . . . . . . . . . . . . . . . . .

61

5.4.2

Dynamic RAM (DRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

5.4.3

Static RAM (SRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

5.4.4

Synchronous Dynamic RAM (SDRAM) . . . . . . . . . . . . . . . . . . . .

63

5.4.5

Double-Data Rate SDRAM (DDR-DRAM) . . . . . . . . . . . . . . . . . .

63

5.4.6

Read-Only Memory (ROM) . . . . . . . . . . . . . . . . . . . . . . . . . .

63

5.5

Memrias Secundrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

5.6

Memria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

iv

Introduo a Arquitetura de Computadores


5.7

Memria Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

5.7.1

Tamanho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

5.7.2

Funo de mapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

5.7.2.1

Mapeamento direto . . . . . . . . . . . . . . . . . . . . . . . . .

66

5.7.2.2

Mapeamento associativo . . . . . . . . . . . . . . . . . . . . . . .

68

5.7.2.3

Mapeamento associativo por conjunto . . . . . . . . . . . . . . .

69

Poltica de substituio . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

Recapitulando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

5.7.3
5.8
6

Glossrio

71

ndice Remissivo

73

Introduo a Arquitetura de Computadores

Captulo 1
Introduo
O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:
Definir o que a Arquitetura de Computadores e sua relevncia
Apresentar a Arquitetura Geral de um computador e suas principais operaes
Diferencias sistemas digitais de analgicos
Apresentar o funcionamento de um transistor e sua relevncia para a industria de dispositivos digitais
Destacar a Lei de Moore e seu impacto para a evoluo da industria de dispositivos
eletrnicos digitais
Identificar os principais fatos da evoluo dos computadores
Voc sabe o que Arquitetura de computadores? Voc j se perguntou porque precisa estudar Arquitetura de Computadores? Esse captulo ns vamos aprender que essa uma das principais disciplinas
da Cincia da Computao. No s isso, foi a Arquitetura de Computadores que permitiu que a humanidade avanasse em todos os aspectos da cincia, sade e tecnologia. Ao final desse captulo,
espero que voc concorde comigo.

1.1

O que a Arquitetura de um Computador?

O termo arquitetura principalmente utilizado na construo e decorao de edificaes. Ele diz


respeito forma e a estrutura de uma construo. O termo refere-se arte ou a tcnica de projetar
e edificar o ambiente habitado pelo ser humano. Na computao o termo foi adaptado para denominar a tcnica (talvez at a arte tambm) de projetar e construir computadores. Nesse livro voc
no vai aprender a construir seu prprio computador. Para isso eu recomendo outros autores, John
L. Hennessy, David A. Patterson e Andrew S. Tanenbaum. Esses autores produzem livros para engenheiros de computadores e acompanh-los antes de se tornar um pode ser uma tarefa bastante rdua.
Aqui voc vai conhecer o computador por dentro e saber como ele funciona. Voc no ser capaz
de construir um computador, mas saber o suficiente para entender como os programas funcionam e
at porque o computador para de funcionar as vezes, ou funciona lentamente, e que nessas situaes,
pressionar teclas do teclado rapidamente, ao mesmo tempo que move o mouse aleatoriamente, no
faz o computador voltar a trabalhar novamente.
1 / 73

Introduo a Arquitetura de Computadores

1.2

Por que estudar Arquitetura de Computadores?

essencial que todos profissionais da Computao tenham pelo menos conhecimentos bsicos de
Arquitetura de Computadores. Saber como o computador funciona nos permitir entender sua capacidade (e incapacidade) de resolver problemas, sobre como program-los da melhor forma possvel,
como deixar o computador e os dados contidos neles mais seguros, como ganhar desempenho e o que
faz ele ficar to lento s vezes a ponto de querermos destrui-lo. Ento, estudar Arquitetura de Computadores to importante para um profissional de Computao, como estudar Anatomia importante
para um mdico. Antes de iniciar qualquer estudo na Medicina, um mdico precisa saber em detalhes
o funcionamento do corpo humano. Quais so seus rgos, como eles trabalham individualmente e
como se relacionam para formar um sistema (digestivo, respiratrio, motor etc.). Com a Arquitetura
de Computadores semelhante. Vamos aprender quais so os componentes de um computador, como
eles funcionam e como eles trabalham em conjunto formando um sistema. Sem dvidas o ser humano a mquina mais perfeita j criada, mas vamos ver que o Computador uma das mquinas
mais incrveis que o homem j criou.

1.3

Um aluno de Licenciatura em Computao precisa estudar

Arquitetura de Computadores?
Ao longo de minha experincia como professor de Arquitetura de Computadores para alunos de Licenciatura em Computao, eu sempre ouvi essa pergunta. Por que precisamos estudar Arquitetura
de Computadores?. Espero que isso j esteja claro para voc. Mas se ainda no estiver, aqui vai
uma outra razo. Voc ser um licenciado e vai trabalhar no ensino e aprendizagem da Cincia da
Computao. Como ensinar algum sobre essa cincia se voc no souber em detalhes como um
computador funciona? Isso seria como um professor de Farmcia que no conhece bem a Qumica,
ou um professor de Matemtica que no conhece os nmeros.

1.4

Arquitetura geral

Hoje em dia h muitos tipos de computadores e diversas arquiteturas. Elas so frutos de muitos
estudos, pesquisas e avanos tecnolgicos. Mas todos computadores compartilham uma arquitetura
comum. Essa arquitetura o que separa um computador de uma calculadora de bolso, de um aparelho
de televiso ou um relgio de pulso. Essa arquitetura apresentada na Figura 1.1 [3].

2 / 73

Introduo a Arquitetura de Computadores

CPU

C
a
c
h
e

endereo
dados/instrues

Memria
principal
(RAM)

Sinais de controle

Figura 1.1: Arquitetura bsica de um computador


Todo computador possui uma Unidade Central de Processamento, ou, do ingls, Central Processing
Unit (CPU) e uma Memria Principal. Todos os dados a serem processados pela CPU, para operaes
lgicas e aritmticas, precisam estar na memria. Da memria os dados so transferidos para a CPU
atravs de fios paralelos de comunicao, chamados de Barramento de Dados. Entretando, a CPU
no toma decises por si prpria. Ela no sabe que dados deve trazer da memria, muito menos que
operao executar com eles. Para isso, ela precisa que instrues, tambm armazenadas na memria,
sejam trazidas para a CPU atravs do Barramento de Endereo. Cada instruo informa para a CPU
que operao ela deve executar, com quais dados e o que ela deve fazer com o resultado da operao.
Para poder se localizar, a memria organizada em endereos. Todos os dados e as instrues so
localizadas atravs desses endereos. Cada instruo indica para a CPU que dados devem ser transferidos e processados atravs dos endereos desses dados. Esse endereo transferido para a memria
pela CPU atravs do Barramento de Endereo. A memria localiza o tal dado e o transfere para a CPU
via Barramento de Dados. As instrues so desenvolvidas pelo programador, atravs de linguagens
de programao. As ferramentas de compilao transformam os programas escritos em linguagens
de alto nvel, como C, Java e Phython, em instrues de mquina, que so finalmente copiadas para
a memria no momento em que precisam ser executadas. Cada instruo armazenada em um endereo diferente da memria. Na execuo normal, a CPU passa para a memria, via Barramento de
Endereo, o endereo da primeira instruo do programa, a memria transfere a instruo pelo Barramento de Instruo, a CPU a executa e, em seguida, solicita a instruo do endereo seguinte. Assim,
os programas so executados sempre de forma sequencial, a no ser que uma instruo especial solicite que ela salte para uma instruo que no seja a consecutiva. Isso o caso quando h instrues
condicionais (como o se ou if), instrues de repetio (como while e o for), ou chamadas a
sub-programas, ou mesmo, por ordem do Sistema Operacional, para que o programa pare de executar
para que um outro tome seu lugar.
As memrias so, quase sempre, muito mais lentas do que as CPUs. Isso exigiu, ao longo dos anos,
que as CPUs possussem tambm uma poro interna de memria muito rpida, chamada Memria
Cache. A tecnologia que permite essas memrias serem mais rpidas, tornam-as tambm muito
caras. Por isso que sua capacidade geralmente muito limitada. Para acelerar ainda mais, elas
so instaladas dentro das CPUs. Todos os dados e instrues transferidos da Memria Principal para
a CPU so salvos tambm na Cache. Como a Cache no capaz de guardar todos os dados da
Memria Principal, apenas os dados mais recentes transferidos para a CPU permanecem na Cache.
Tcnicas muito avanadas so aplicadas para que se consiga, no mximo possvel, manter os dados
mais importantes daquele instante na Memria Cache.
A CPU tambm responsvel por enviar sinais de controle aos outros dispositivos do computador,
3 / 73

Introduo a Arquitetura de Computadores


como perifricos, dispositivos de entrada e sada, e memrias externas. Esse sinais so enviados
quando uma instruo d ordem para tal. Por exemplo, quando uma instruo pede que uma mensagem sem impressa na tela, a CPU, ao receber e executar essa instruo, envia para o controle do
monitor que imprima na tela a mensagem contida o endereo que tambm foi passada pela instruo.
esse comportamento que diferencia um computador de outros dispositivos eletrnicos mais simples. A essncia da CPU no muito diferente de uma calculadora de bolso. Ela executa operaes
lgicas e aritmticas. Entretanto, no projeto do computador, o papel do homem foi substitudo pela
programao. Todas instrues das tarefas que a CPU precisa executar so armazenadas na memria
e, a partir de ento, a CPU pode trabalhar sem qualquer interferncia externa. Com a programao,
a CPU pode tambm executar tarefas diversas, desde simulaes, jogos, tocar msicas e vdeos etc.
Simplificando, o computador uma mquina programvel e de propsito geral.

1.4.1

Operaes bsicas

Todos computadores executam trs operaes bsicas:


Movimentao de dados
Processamentos de dados
Armazenamento de dados
A movimentao de dados a transferncia de um dado de um ponto para outro do computador.
Pode ser de um endereo de memria para outro, de um dispositivo de entrada para a memria, ou
da memria para um dispositivo de sada. O processamento de dados ocorre quando a CPU recebe
um determinado dado e executa uma operao que o modifica de alguma forma. J as operaes de
armazenamento ocorre quando a CPU precisa registrar um dado em algum local especfico, como
salvar um dado no disco rgido, ou num pendrive, ou mesmo na Memria Principal.

1.5

Sistemas Analgicos x Sistemas Digitais

Para sabermos a importncia de um computador e sua forma de funcionamento, precisamos conhecer


suas potencialidades e suas limitaes. O computador um dispositivo eletrnico digital. Isso significa que ele armazena, processa e gera dados na forma digital. Por outro lado, o computador no
capaz de processar dados analgicos. Eles antes precisam ser convertidos para digital para poderem
ser utilizados por computadores. Mas o que venha a ser um dado analgico? Qualquer informao
presente na natureza, como uma imagem, um som ou um cheiro, pode ser analisada em no mnimo
duas componentes. Uma seria a sua intensidade e outra o tempo. A Figura 1.2 [4] a seguir apresenta
essa representao, onde o sinal em forma de onda cinza (sinal digital) seria a representao de um
sinal analgico.
Sinal Analgico

Sinal Digital

Figura 1.2: Sinal Analgico versus Sinal Digital


4 / 73

Introduo a Arquitetura de Computadores


Um som, por exemplo, formado por vibraes no ar de diferentes intensidades (amplitudes) ao
longo do tempo. Cada amplitude vai soar para nossos ouvidos como um tom diferente e alguns so
at imperceptveis aos nossos ouvidos. Por outro lado, como o computador um dispositivo baseado
em nmeros, para que ele armazene um som em sua memria e possa fazer qualquer processamento
sobre ele (gravar, transmitir, mixar), ele deve antes represent-lo na forma de nmeros. Ai que est
a dificuldade. As intensidades possveis de um som so tantas que se aproximariam do infinito. Para
tornar essa grandeza mais clara, imagine que pudssemos emitir a intensidade do som emitido por um
pssaro. Se em terminado momento dissermos que essa intensidade tem valor 5. Logo em seguida um
outro som emitido, medidos e constatamos que sua intensidade 4. At a tudo bem! Mas o pssaro
poder em seguida emitir diversos sons que estariam entre 4 e 5, como 4,23, ou 4,88938, ou at uma
dzima peridica, como 4,6666. . . Um ser humano, mesmo que no consiga medir a intensidade do
canto do pssaro, consegue ouvi-lo, apreci-lo e at repeti-lo com uma certa proximidade com alguns
assobios. Mas o computador no trabalha assim! Antes de tudo, um computador teria que discretizar
esses valores medidos, ou seja, pass-los do domnio dos nmeros reais para o domnio dos inteiros.
Assim, o que era 4 permanece 4, o que era 5, continua como 5, mas o que foi medido como 4,23
convertido para 4, e o que era 4,88938 e 4,666 so convertidos para 5. Dessa forma, o computador
passa a tratar com nmeros reais e finitos. Um canto de um pssaro (ou at de uma orquestra sinfnica)
pode ser armazenado e processador pelo computador. Na Figura 1.2 [4] apresentada, a onda quadrada
representa um sinal digital.
Mas perceba que o som emitido pelo pssaro teve que ser modificado. Ele antes era complexo, rico e
cheio de detalhes. Agora se tornou algo mais simples e reduzido. Houve uma perda de informao ao
passarmos o dado do analgico para o digital. Processo semelhante ocorre quando outras informaes
da natureza so passadas para o computador, como uma imagem atravs de uma foto, ou uma cena
atravs de um vdeo. Parte da informao deve ser ignorada para que possa ser armazenada em
computadores. Voc deve estar se perguntando ento, quer dizer que imagens e sons analgicos
possuem mais qualidade do que digitais? A resposta rigorosa para essa pergunta , sim! Mas uma
resposta mais consciente seria, as vezes! Isso porque a perda causada pela digitalizao pode ser
reduzida at nveis altssimos que modo que nem o ouvido, nem a viso humana sero capazes de
perceber.
Como exemplo de dados analgicos podemos citar tudo o que vem da natureza, som, imagem, tato,
cheiro, enquanto que digitais so todos aqueles armazenados por dispositivos eletrnicos digitais,
como computadores, celulares e TVs (exceto as antigas analgicas). Se uma foto digital, por exemplo,
possui menos qualidade do que uma analgica, por que todos procuram apenas mquinas fotogrficas
digitais, transformando as analgicas quase em peas de museu? A resposta est na praticidade. Os
computadores s entendem informaes digitais. Uma mquina fotogrfica, mesmo com qualidade
inferior, vai nos permitir passar as fotos para o computador, compartilhar com os amigos, aplicar
edies e melhorias, ampliar e copiar quantas vezes quisermos. Tarefas que antes eram impossveis
com mquinas analgicas. O mesmo pode ser refletido para msicas, documentos e livros. O mundo
hoje digital, e no h como fugirmos disso!

1.6

O Transistor

O transistor um componente eletrnico criado na dcada de 1950. Ele o responsvel pela revoluo
da eletrnica na dcada de 1960. Atravs dele foi possvel desenvolver sistemas digitais extremamente
pequenos. Todas funcionalidades de um computador so internamente executadas pela composio
de milhes de transistores. Desde operaes lgicas e aritmticas, at o armazenamento de dados em
memrias (a exceo do disco rgido, CD, DVD e fitas magnticas), tudo feito pelos transistores.
5 / 73

Introduo a Arquitetura de Computadores


Os primeiros eram fabricados na escala de micrmetros 10-6 metros). Da surgiram os termos microeletrnica e micro-tecnologia. Depois disso deu-se incio a uma corrida tecnolgica para se desenvolver transistores cada vez mais rpidos, menores e mais baratos. Essa revoluo dura at hoje, mas
foi mais forte nas dcadas de 1980 e 1990. Foi emocionante acompanhar a disputa entre as empresas
norte-americadas Intel e AMD para dominar o mercado de computadores pessoais. A cada 6 meses
um novo processador era lanado por um delas, tomando da concorrente a posio de processador
mais rpido do mercado. Poucos eram aqueles consumidores que conseguiam se manter a atualizados
com tantos lanamentos.
O princpio bsico utilizar a eletrnica (corrente eltrica, resistncia e tenso) para representar dados
e depois poder executar operaes com eles. A forma mais fcil de fazer isso foi primeiramente
limitar os dados a apenas dois tipos. Zero e um. O sistema de numerao binrio muito mais fcil
de representar com dispositivos eletrnicos do que o decimal, por exemplo. O transistor possui dois
estados. Ou ele est carregado, ou est descarregado, assim como uma pilha. Isso facilmente pode ser
mapeado para o bit 1 (carregado) e o bit (0). O revolucionrio, diferente de uma pilha, foi possibilitar
que esse estado pudesse ser mudado eletronicamente a qualquer momento e de forma muito rpida.
Assim, com 8 transistores em paralelo, eu posso representar, por exemplo um nmero de 8 bits. Posso
mudar seus valores mudando suas cargas, e posso ler seus valores chegando se cada um possui, ou
no carga. Esse o princpio bsico de construo de uma memria.
De forma semelhante, possvel integrar transistores para que os mesmos executem operaes lgicas
e aritmticas. As portas lgicas estudadas por voc em Introduo Computao so todas fabricadas
utilizando transistores.
Quanto menores so os transistores, mais dados podem ser armazenados por rea. Ao mesmo tempo,
transistores menores guardam menos carga. Isso torna mais rpido o processo de carregamento e
descarregamento, que, por consequncia, torna o processamento e armazenamento de dados muito
mais rpidos tambm.
Com a evoluo da nanoeletrnica, os transistores so to pequenos que possibilitou a construo de
memrias de 1GB (um giga byte) do tamanho da unha da mo de um adulto. Para ser ter uma ideia,
1 Giga a abreviao de 109 , ou seja, um bilho. Um byte so 8 bits. Ento, uma memria de 1GB
possui, pelo menos, 8 bilhes de transistores. Os processadores tambm se tornaram bastante velozes
com a miniaturizao dos transistores. Os processadores atuais trabalham na frequncia de GHz (Giga
Hertz), ou seja, na casa de bilhes de ciclos por segundo (diferente de operaes por segundo). Isso
muito rpido!
Dreno
-

Porta

VGG Fonte

n +
p+
+
-

Dopado com
cargas negativas

VDD
Dopado com
cargas positivas

Figura 1.3: Estrutura de um transistor tipo MOSFET


Na Figura 1.3 [6] anterior apresentada a estrutura de um transistor MOSFET. Esse transistor o
mais utilizado para se construir sistemas eletrnicos digitais, como os computadores. O nome vem da
abreviao de Metal-Oxide Semiconductor Field-Effect Transistor. Vamos ver o que significa cada
6 / 73

Introduo a Arquitetura de Computadores


palavra dessas, e isso nos ajudar a conhecer um pouco mais o MOSFET e sua relevncia. O termo
MOS (Metal-Oxide Semiconductor) vem dos materiais utilizados para compor um MOSFET, que
so principalmente, xido metlico e semicondutor.
Semicondutores so materiais que possuem propriedades que nem os permitem classificar como condutor, nem como isolante. Em algumas condies ele age como um isolante, e em outras, como um
condutor. O semicondutor mais utilizado em transistores o silcio (smbolo Si na Tabela Peridica).
Em condies ambientes, o silcio age como um isolante, mas se misturado a outros materiais, ele
pode se tornar um condutor at a intensidade desejada.
Nota
O Silcio se tornou to importante que modificou toda uma regio da Califrnia nos Estados
Unidos na dcada de 1950, tornando-a uma das mais promissoras do mundo at hoje. Essa
regio abrigou e abriga as mais importantes empresas do ramo de projeto de computadores, como Intel, AMD, Dell, IBM e Apple, e depois de softwares que iriam executar nesses
computadores, como Microsoft, Oracle e Google. Essa regio chamada de Vale do Silcio.

No transistor da Figura 1.3 [6] o cinza claro representa um cristal de silcio que foi dopado com cargas
negativas. J o cinza escuro, representa a parte que foi dopada com cargas positivas.
Na situao normal (ver Figura 1.4 [7]) uma corrente eltrica aplicada no Dreno consegue percorrer
o estreito canal negativo e seguir at a Fonte. Nessa condio dizemos que o transistor est ativo.
Porm, se for aplicada uma tenso negativa na Porta, as cargas positivas da regio p sero atradas
para mais prximo da Porta, e isso ir fechar o canal por onde passava a corrente eltrica. Nesse caso,
dizemos que o transistor est inativo.

Situao Normal

Tenso negativa aplicada na porta

Dreno

Dreno
Porta
Aberta

VGG
Fonte

n +
p+
+
-

VDD

Porta
Fechada

n +
+
+ p
+

VDD

- -

VGG
Fonte

Figura 1.4: Abertura e fechamento da porta do transistor tipo MOSFET


Por que isso tudo nos interessa? Quando o transistor est ativo, ele pode ser visto com o valor 1, e
quando inativo, ele pode ser visto com o valor 0. Assim, temos a menor memria possvel de ser
construda. Quando quisermos que ela guarde o valor 1, basta desligar a tenso da Porta e aplicar uma
corrente no Dreno. J quando quisermos que ele armazene o valor 0, precisamos aplicar uma corrente
7 / 73

Introduo a Arquitetura de Computadores


na Porta e fechar o canal. Ento, uma memria de 8 bilhes de bits, pode ser elaborada com 8 bilhes
de transistores como esses.
Agora conhecemos o primeiro aspecto que faz dos transistores essenciais para o entendimento do
computador. Eles so usados para a construo de memrias. Memrias feitas a base de transistores
so chamadas tambm de Memrias de Estado Slido. Mas h outras, no to eficientes e miniaturizadas, como memrias pticas e magnticas. O importante percebermos que quanto menores
pudermos construir esses transistores, melhor. O processo de abertura e fechamento do canal no
instantneo. Ele leva um curtssimo tempo, mas quando somados os tempos de todos os bilhes de
transistores, ele passa a se tornar relevante. Quanto menor ele for, mais estreito o canal e, portanto,
mais rpido ele liga e desliga, da mesma forma, menor ser a distncia entre o Dreno e a Fonte, levando tambm menos tempo para os eltrons deixarem o Dreno em direo fonte. Isso tudo far
a memria mais rpida. Transistores pequenos tambm possibilitam que mais dados sejam armazenados por rea. por isso que hoje enormes capacidades de armazenamento so disponveis em
dispositivos to reduzidos, como so os exemplos de pen-drives e cartes de memria.
Os transistores tambm so usados para executar operaes lgicas e aritmticas. A carga retirada
de um transistor pode servir para alimentar um outro e que, se combinados de forma correta, podem executar as operaes lgicas bsicas, E, OU, NO e as aritmticas, adio, subtrao, diviso
e multiplicao. Com isso, os transistores no apenas podem ser utilizados para armazenar dados,
mas como executar operaes lgicas e aritmticas sobre esses dados. Isso fantstico e vem revolucionado todo o mundo. No s na Cincia da Computao, mas como tambm em todas reas do
conhecimento. O que seria da humanidade hoje sem o computador? Sem o telefone celular? Sem os
satlites?

1.7

A Lei de Moore

Durante os anos de 1950 e 1965, a industrias do Vale do Silcio disputavam pelo domnio do recmsurgido mercado da computao e eletrnica. Naquela poca ainda no havia surgido o termo TIC
(Tecnologia da Informao e Comunicao), mas ele seria mais apropriado para definir o nicho de
clientes e servios que eles disputavam. Eles dominavam a produo de circuitos eletrnicos digitais,
dominados pela Intel e AMD, a produo de computadores e equipamentos de comunicao, como a
Dell, Apple, IBM, HP e CISCO, alm da indstria e software e servios, como a Apple, Microsoft e,
mais tarde, a Google. A disputa era grande e nem sempre leal.
Nota
Assista ao filme Piratas do Vale do Silcio (1999) e tenha uma ideia de como essa guerra
estava longe de ser limpa.

Entretanto, no se sabia naquela poca onde essa disputa ia parar, nem quem seriam os vencedores,
nem mesmo, se haveria sequer vencedores. At um dos scios e presidente da Intel, Gordon Moore,
lanou um trabalho minucioso onde ele destacava a experincia que ele adquiriu ao longe de alguns
anos trabalhando na indstria de fabricao de processadores e circuitos para computadores. Ele percebeu que, sempre a indstria avanava em sua tecnologia e conseguia reduzir o tamanho de cada
transistor de um circuito integrado, os computadores tornavam-se tambm muito mais velozes do que
antes. Porm, essa reduo no tamanho dos transistores requer uma total atualizao nos equipamentos da indstria, tornando os equipamentos anteriores obsoletos. Assim, s seria vivel a evoluo
para transistores menores se o lucro da empresa fosse o suficiente para pagar todas essas despesas.
8 / 73

Introduo a Arquitetura de Computadores


Por outro lado, ele tambm percebeu que os computadores e equipamentos mais obsoletos ainda possuam mercado aberto em pases menos desenvolvidos economicamente. Ele concluiu ento que a
indstria seria sim capaz de continuar evoluindo na reduo do tamanho dos transistores porque os
novos computadores, sendo tornando mais velozes, seriam to mais eficientes e atrativos, que todos
os clientes, principalmente as empresas, fariam de tudo para trocar seus computadores antigos por
novos, afim de se tornarem cada vez mais produtivos.
Alm dessa anlise de mercado, ele analisou como o processo industrial era concebido e como os
novos computadores se beneficiariam da reduo do tamanho dos transistores. Ao final, ele afirmou
que A cada ano a quantidade de transistores por chip ir dobrar de tamanho, sem alterao em seu
preo. Essa frase pode ser interpretada tambm pelas consequncias da quantidade de transistores
por chip. Ou seja, a cada ano, com o dobro dos transistores, os chips se tornaro duas vezes mais
rpidos. Um exemplo mais comum de chip so os processadores dos computadores. Ento, por
consequncia, os computadores iro dobrar sua velocidade de processamento a cada ano, e ainda vo
permanecer com o mesmo preo.
Naquela poca essa era uma afirmao muito forte e ambiciosa. Muitos receberam esse estudo com
cautela. Mas no demorou muito para todos perceberem que as previses de Moore estavam se
realizando. Foi tanto, e o trabalho dele foi depois chamado de Lei de Moore e ela ainda vlida at
os dias de hoje. Na Figura 1.5 [9] a seguir possvel perceber como a quantidade de transistores por
processadores cresceu dos anos 1970 at por volta de 2003 (linha contnua). possvel ver que ela
no se afastou muito das previses de Moore (linha tracejada).
1 bilho de
transistores na CPU
109

Transistores por chip

108
107
106

105
104

103
1970

1980

1990

2000

2010

Figura 1.5: Evoluo do nmero de transistores nos processadores em comparao com a Lei de
Moore
A Lei de Moore se tornou to importante que ela no usada apenas como uma meta a ser buscada
e batida a cada ano, mas tambm como um meio para se verificar se a indstria est evoluindo na
velocidade esperada. Apesar de Moore est muito correto em suas previses, todos sabem, inclusive
ele prprio, que esse crescimento no vai durar para sempre. Os transistores hoje esto na escala
de 25 nanometros. Essa a mesma escala de alguns vrus e bactrias. Reduzir mais do que isso
est se tornando cada vez mais difcil. Pesquisadores e cientistas buscam outras formas de fazer
com que os computadores continuem evoluindo em sua velocidade e reduzindo seu tamanho. Alguns
pensam na substituio de transistores de Silcio por outros materiais, como Grafeno. Outros at so
mais radicais e defendem que a forma de computao deve mudar, talvez atravs de Computadores
Qunticos ou de Bio-Computadores.
9 / 73

Introduo a Arquitetura de Computadores


Quanto menores forem os transistores, mais rapidamente eles podem ser carregados e descarregados.
Isso possibilita que o sistema trabalhe cada vez mais veloz. Mas h ainda outra limitao para a reduo do tamanho dos transistores a dissipao de calor. Quanto menores os transistores, mais deles
so adicionados num mesmo circuito. O funcionamento dos transistores, como dito anteriormente,
feito atravs da passagem de corrente eltrica (eltrons em movimento). Como toda mquina eltrica,
nem toda corrente aproveitada. Muito dela desperdiada atravs da dissipao de calor. Ento,
uma vez que h milhes desses transistores trabalhando juntos, a dissipao de calor ainda maior.
muito importante para toda a humanidade que os computadores continuem evoluindo. A reduo
do tamanho dos computadores, aliada ao aumento de desempenho e sem o crescimento dos preos,
permitiu que todas as cincia evolussem ao mesmo tempo, com a mesma velocidade. A metereologia, a medicina, as engenharias e at as Cincias Humanas avanaram sempre em conjunto com
o avano da computao. Para se ter um exemplo, foi a evoluo dos transistores que permitiu que
computadores se comunicassem numa velocidade to grande que permitiu a formao da rede mundial de computadores, a Internet. Qualquer pessoa hoje consegue em poucos milissegundos fazer uma
pesquisa por informaes que esto do outro lado do planeta. Algo que antes s era possvel viajando
at bibliotecas distantes e cheirando bastante mofo e poeira. Hoje, ter em casa bilhes de bytes (Giga
bytes) armazenados num minsculo carto de memria, algo corriqueiro. A informao est hoje
disponvel numa escala to grande e numa velocidade to intensa que parece que mais nada impossvel para a humanidade. Aps a Revoluo Industrial do sculo XVIII que substitui os trabalhadores
braais por mquinas, o sculo XX, puxado pela evoluo dos transistores, passou pelo o que muitos
consideram a Revoluo da Informao e o sculo XXI, j considerado a Era do Conhecimento.

1.8
1.8.1

A evoluo dos computadores


O ENIAC

O primeiro computador criado foi o ENIAC (Electronic Numerical Integrator And Computer), desenvolvido por Eckert e Mauchly na Universidade da Pennsylvania, Estados Unidos. O projeto iniciou
em 1943 financiado pelo governo americano. O perodo era da Segunda Guerra Mundial e o objetivo
era poder calcular de forma mais gil as melhores trajetrias para transporte de armas e mantimentos
em meio aos exrcitos inimigos. Esse o tipo de clculo que pequenos aparelhos celulares fazem hoje
para encontrar rotas nas cidades atravs de GPS (Global Positioning System) e anlise de mapa. O
projeto s foi concludo em 1946, tarde demais para ser utilizado para a Segunda Guerra, mas foi
bastante utilizado at 1955.
O ENIAC ocupava uma rea de 4500 metros quadrados, pesava 30 toneladas e consumia cerca de
140KW. Ele era capaz calcular 5000 somas por segundo. A programao era feita manualmente atravs da manipulao de chaves, ou seja, no havia linguagem de programao, nem compiladores ou
interpretadores de comandos. O Sistema Operacional s surgiu bem depois e tomou o emprego de
muitos funcionrios chamados na poca de operadores de computadores. Profisso hoje extinta! O
ENIAC ainda no utilizada transistores, mas vlvulas que, dependendo de seu nvel de carga, representavam um nmero. Cada vlvula precisava estar devidamente aquecida para funcionar corretamente, ento o processo de ligar o ENIAC era trabalhoso e levava bastante tempo. Ele trabalhava com
o sistema de numerao decimal, o que parecia bvio naquela poca, mas que depois dos transistores,
se tornaram complexo demais e foi adotado o sistema binrio.
Aps a Segunda Guerra iniciou-se o perodo chamado de Guerra Fria, quando a espionagem, sabotagem e muito especulao reinava entre os pases liderados pela Unio Sovittica e Estados Unidos.

10 / 73

Introduo a Arquitetura de Computadores


Prato cheio para os computadores. Possuir um computador que fosse capaz de decifrar mensagens
codificadas dos inimigos era o sonho de consumo de todo general daquela poca.

1.8.2

A Arquitetura de von Neumann

Muitas empresas e governos corriam para construir seu prprio computador que fosse mais avanado
do que os anteriores. Muitos projetos surgiram depois do ENIAC. Mas todos eles eram barrados por
algumas dificuldades e limitaes. Como por exemplo, o fato de no serem programados e trabalharem com nmeros decimais. O problema de trabalhar com decimais que cada algarismo armazenado
possui 10 estados possveis, representando os nmeros de 0 a 9. Dentro de um sistema eletrnico,
isso complicado por que a carga de cada dispositivo, seja transistor, seja vlvula, deveria ser medida
para verificar se que nmero ela estava representando. Os erros eram muito frequentes. Bastava que
uma vlvula estivesse fora da temperatura ideal para que os resultados das operaes comeassem a
sair errado. Von Neumann recomendou em sua arquitetura que os dados e instrues fossem agora
armazenados em binrio, facilitando a anlise dos mesmos e reduzindo a quantidade de erros.
Em 1952, o professor John von Neumann, da Univeridade de Princeton, Estados Unidos, apresentou
um projeto inusitado para a arquitetura de um computador. Ele sugeriu que o computador fosse
organizado em componentes, cada um executando apenas uma nica tarefa e de forma muito mais
organizada. Ele props que o computador fosse composto por (ver Figura 1.6 [11]):
Memria Principal: responsvel por armazenar os programas a serem executados, assim como os
dados a serem processados
Unidade Lgica e Aritmtica (ULA): para realizao das operaes lgicas e aritmticas
Unidade de Controle: que, baseado nas instrues lidas da memria, enviaria sinais de controle
para a ULA para que a mesma executasse as operaes devidas
Unidade Central de Processamento (CPU): que agruparia a ULA e a Unidade de Controle
Unidade de Entrada e Sada: responsvel pela comunicao com os perifricos do computador
(teclado, monitor, memria externa etc.)
Unidade Central de Processamento (CPU)

Unidade
Lgica
Aritmtica
Dispositivos
de Entrada
e Sada
(I/O)

Memria
Principal
(M)
Unidade de
Controlre de
Programa

Figura 1.6: Estrutura da Mquina de von Neumann


11 / 73

Introduo a Arquitetura de Computadores


A Arquitetura de von Neumann deu to certo que todos os fabricantes comearam a segui-la. Os
computadores utilizados at hoje em dia seguem os preceitos bsicos propostos por ele. Muitos
avanos surgiram, melhorias foram feitas, mas at hoje os computadores so formados por Unidades
de Controle, CPU, ULA, memria e Unidades de Entrada e Sada. John von Neumann deixou um
legado para toda a humanidade.

1.8.3

A IBM

A International Business Machines, ou apenas IBM, foi fundada em 1911 com o nome de Computing
Tabulating Recording (CTR) e iniciou produzindo e comercializando calculadoras para empresas e
empresrios. S em 1924 que ela muda de nome para International Business Machines ou apenas
IBM. Ela uma das poucas empresas que sobreviveram a todos os avanos da computao e continua
sendo uma potncia mundial. Apenas em 1953 a IBM entra no mercado de computadores com o IBM
701, tendo sempre as grande organizaes como alvos. S muitos anos depois que os computadores
pessoais foram surgir. O IBM 701 trabalhava com cartes perfurados, ou seja, toda programao dele
era feita atravs de uma perfuradora que marca buracos para representar o bit 1, e deixava ilesa uma
rea para representar o 0. O mesmo acontecia depois que os programas era lidos e processados. Uma
folha de papel era perfurada pelo computador para representar o resultados das operaes executadas.
No preciso nem dizer o que isso era trabalhoso!
Em 1955 a IBM lana o IBM 702 que agora no fazia apenas clculos cientficos, mas tambm
aplicaes comerciais, visando deixar de ser um equipamento apenas para cientistas, mas tambm
para empresrios. Depois desses vrios outros computadores foram lanados nas sries 700. Essas
mquinas ainda utilizavam vlvulas para armazenar os dados. S em 1957 que surge a Segunda
Gerao de computadores, com a utilizao de transistores. Isso tornou os computadores mais leves,
baratos, velozes e mais energicamente eficientes. Os primeiros computadores dessa gerao foram o
IBM 7000 e o PDP-1, da DEC, empresa que no existem mais.
A IBM lana em 1964 o IBM srie 360, substituindo os antigos computadores da srie 7000. O IBM
360 inicia a primeira famlia de planejada de computadores. Isso significava que todos computadores
seguintes da srie 360 seriam compatveis com os anteriores. Todos programas desenvolvidos ou
adquiridos pelas empresas poderiam ser usados mesmo que a empresa substitusse os computadores
pela gerao mais nova. Isso tornou a IBM uma das empresas mais poderosas do mundo na poca,
com filiais e representantes em todos o continentes do planeta.

1.8.4

As geraes dos computadores

As geraes de computadores surgiram com a miniaturizao dos transistores e sua integrao em


chips em escalas cada vez maiores. Podemos ento ver as geraes dos computadores como:
1946 a 1957: computadores baseados em tubos de vcuo
1958 a 1964: surgimento dos transistores
1965: indstrias atingiram a integrao de at 100 transistores num nico chip
1971: chamada de Integrao em Mdia Escala, com at 3000 transistores por chip
1971 a 1977: Integrao em Larga Escala, com at 100.000 transistores por chip
1978 a 1991: Integrao em Escala Muito Grande (VLSI), com at 100 milhes de transistores por
chip
12 / 73

Introduo a Arquitetura de Computadores


1991 at a atualidade: Integrao Ultra-VLSI, com mais de 100 milhes de transistores por chip

1.8.5

Memrias de semicondutores

Em 1970, uma empresa chamada Fairchild desenvolveu pela primeira vez uma memria utilizando
a mesma tecnologia utilizada para fabricar os processadores, os transistores. Isso possibilitou que
memrias muito menores, mais rpidas e mais baratas fossem desenvolvidas. E melhor, elas poderiam
ser inseridas muito prximas, e at dentro dos processadores, acompanhando sua miniaturizao. E
foi o que aconteceu. A medida que a tecnologia foi avanando e produzindo transistores cada vez
menores, as memrias tambm foram encolhendo.
Os processadores tornaram-se cada vez menores e mais velozes, mas infelizmente o avano no ocorreu tambm com a velocidade das memrias, mas apenas com o seu tamanho. Isso at hoje um
problema. Armazenamentos rpidos so muito complexos de fabricar e, por consequncia, caros.
Isso vem limitando o avano da velocidade dos computadores, mas sempre os cientistas vm encontrando alternativas para manter Gordon Moore e todos ns muito orgulhosos.

1.8.6

A Intel

A Intel Corporation, ou simplesmente Intel, surgiu nos Estados Unidos em 1968, como uma empresa
focada no projeto e fabricao de circuitos integrados. Ela foi fundada por Gordon Moore (o mesmo
da Lei de Moore) e Robert Noyce. Ela era inicialmente uma concorrente da IBM, mas logo se tornaram parceiras. A Intel fabricava os processadores e memria, e a IBM fazia a composio deles com
outros componentes para montar os computadores.
Em 1971 a Intel lana seu primeiro processador, o 4004, que trabalhava com operaes e dados de 4
bits. Foi uma revoluo, pois todos componentes da CPU estavam num nico chip. No ano seguinte
eles lanam o 8008, j de 8 bits. Em 1974 lanado o 8080, primeiro processador de propsito geral.
Ou seja, com ela tanto era possvel executar aplicaes cientficas, financeiras, grficas e jogos. O
mesmo princpio dos processadores atuais. Ele foi substitudo pelo 8086 de 16 bit. O prximo foi o
80286 que j era capaz de trabalhar com uma memria de 16MBytes. O 80386 trabalhava com 32
bits e tinha suporte a multi-tarefas, ou seja, era finalmente possvel executar mais de uma aplicao
simultaneamente. Depois veio o 80486 com muito mais memria e bem mais rpido, alm de um
co-processador especfico para aplicaes matemticas. A partir do 80286 as pessoas omitiam o 80
ao falar do processador, chamando-o apenas de 286, 386 e 486.
Em seguida veio a gerao Pentium, focando cada vez mais na execuo de tarefas paralelas, adicionando vrias unidades de processamento e armazenamento de dados dentro processador. Agora os
processadores no teriam apenas uma ULA ou uma memria dentro do processador, mas vrias delas.
Hoje estamos na gerao dos processadores multi-ncleos, ou multi-cores, que nada mais so do que
vrios processadores replicados dentro de um mesmo chip e coordenadores por uma unidade nica.

1.8.7

A Apple e a Microsoft

Em 1974 Steve Jobs e Steve Wosniak trabalhavam noites a fio para tentar, pela primeira vez, criar um
computador que fosse voltado no a empresas, mas a pessoas tambm. Seria a ideia de um computador
pessoal. Eles compraram todos componentes necessrios para montar um computador, fizeram vrias
improvisaes e inovaes, acoplaram uma TV e um teclado. Wosniak, um gnio da eletrnica e
programao, desenvolveu o software para controlar o computador e ainda alguns aplicativos, como
13 / 73

Introduo a Arquitetura de Computadores


uma planilha de clculos e alguns jogos. Assim que o prottipo ficou prontos, Steve Jobs, eximiu
negociador e vendedor, colocou o computador na mala de seu carro e foi visitar vrias empresas para
conseguir algum apoio financeiro para poder fabricar o produto em escalas maiores. Foi at na IBM,
mas ouviu deles que o mercado de computadores pessoais no era promissor e o negcio deles era a
produo de grandes computadores para empresas.
Assim que conseguiram o primeiro cliente, em 1976, Jobs e Wosniak fundaram a Apple e lanaram
o Apple I. Um produto mais maduro e melhor acabado. Jobs sempre gostava de produtos de design diferenciado, que fossem no apenas eficientes, mas bonitos e, principalmente, fceis de usar.
Suas apresentaes anuais de lanamento de novos produtos eram sempre aguardados com grande
expectativa e especulaes.
A IBM inicialmente tambm desenvolvia o Sistema Operacional e os programas que iriam ser executados por suas mquinas. Logo ela percebeu que poderia fazer parcerias com outras empresas e
agregar ainda mais valor aos seus produtos. Foi a que surgiu a Microsoft, liderada pelo seu fundador, Bill Gates, com o seu sistema operacionais MS-DOS. No demorou muito para que todos
computadores lanados pela IBM trouxessem tambm o MS-DOS integrados e eles. Depois surgiram
as evolues do MS-DOS, o Windows e suas vrias geraes. A Microsoft se beneficiou bastante
dessa parceria, j que todos a grande maioria dos computadores do mundo executavam seu sistema,
as pessoas teriam que aprender e se familiarizar com seu sistema operacional. As empresas de desenvolvimento de aplicativos e jogos tinham que faz-los compatveis com o MS-DOS e Windows e foi
a que a Microsoft se tornou uma das lderes do mercado e, por muitos anos, a mais rica empresa do
mundo.
Steve Jobs sempre acusou o Bill Gates de ter copiado dele o cdigo principal para o funcionamento
do primeiro sistema operacional Windows. Gates nunca negou. Eles sempre trocavam acusaes e
isso gerou muito assunto para a impressa e fanticos por tecnologia. A verdade que a Microsoft
cresceu bastante e a Apple passou por vrios apertos. S no ano 2000, quando Jobs retornou Apple
depois de ter sido expulso da prpria empresa que ele fundou, foi que as coisas melhoraram para a
Apple. Eles lanaram produtos em outras linhas que no fossem computadores pessoais, como o iPod
para ouvir msica e o telefone celular iPhone. A Apple passou ento a dominar o mercado de msica
online com sua loja de msicas, iTunes e o iPhone o Smartphone mais vendido do mundo.
Steve Jobs seguia a filosofia no de fazer clientes, mas de criar fs. E deu certo. Hoje h vrios Apple
Maniamos que compram seus produtos antes mesmo deles serem apresentados ao pblico. Nos dias
em que esse livro est sendo escrito, a Apple ultrapassou a IBM e a Microsoft em valor, e a empresa
mais valiosa do mundo.

1.9

Recapitulando

Ao final desse captulo vimos o que a arquitetura de um computador e porque to importante


estud-la. Vimos que o transistor o dispositivo bsico para todo o funcionamento de um computador.
Estudar seu funcionamento e sua evoluo, estudar a prpria Cincia da Computao e a eletrnica
digital. Depois de seu surgimento, os computadores foram possveis e avanaram a medida que eles
encolhiam de tamanho e aumentavam de velocidade, consumindo menos energia. Com a evoluo dos
computadores, cada vez mais rpidos, menores e mais baratos, toda a humanidade avanou na mesma
velocidade. No prximo captulo vamos estudar mais a fundo como os processadores funcionam.
Como os programas so executados e o que feito nos dias de hoje para que eles sejam cada vez mais
eficientes.

14 / 73

Introduo a Arquitetura de Computadores

1.10

Atividades

Quais as quatro funes bsicas que todos os computadores executam? D um exemplo de operao
de cada uma delas.
Quais os elementos bsicos de um computador e quais as funcionalidades de cada um deles?
Quais as diferenas entre um sinal analgico e um digital? Apresente os pontos fortes e fracos de
cada um deles. Na sua opinio, qual dos dois sinais apresentam maior qualidade?
Caracterize o que uma Mquina de von Neumann
O que so transistores? Quais as vantagens na concepo de computadores com o surgimento dos
transistores?
Por que quantos menores os transistores, mais velozes os computadores? H desvantagens nessa
miniaturizao das mquinas? Quais?
O que diz a Lei de Moore? Em sua opinio, h um limite para esse crescimento? Onde vamos
chegar?
Que outras tcnicas podem ser utilizadas para aumento do desempenho dos processadores que no
pela reduo do tamanho dos transistores? Explique cada uma delas.
Feedback sobre o captulo
Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Para compreender melhor como feedbacks funcionam consulte o guia do curso.

15 / 73

Introduo a Arquitetura de Computadores

Captulo 2
Unidade Central de Processamento (CPU)
O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:
Identificar os principais componentes de uma CPU
Conhecer o funcionamento de uma CPU
Saber como um programa executado em ciclos
Definir e explicar o que uma interrupo e suas consequncias
Argumentar sobre aspectos que influenciam no desempenho de uma CPU
Nesse captulo vamos estudar a parte mais importante de um computador, que a Unidade Central
de Processamento, ou UCP, ou, do ingls, CPU. A CPU responsvel no apenas por executar os
programas contidos na memria, mas tambm de controlar todos os dispositivos de entrada e sada.
Seu avano ao longo dos anos tem permitido que programas fossem executados cada vez mais rapidamente. Hoje temos processadores de vrios ncleos capazes de executar vrias atividades ao mesmo
tempo. So esses processadores e funcionalidades que iremos estudar nesse captulo.

2.1

O que um programa?

Nesse momento, voc no apenas deve saber o que um programa, como j deve ter at j escrito seus
prprios programas e entendido um pouco como o computador funciona. Os programas so sequncias finitas de passos que foram definidas por um programador para alcanar um objetivo especfico.
Cada passo desse programa chamado de instruo. No necessariamente, uma instruo escrita
em uma linguagem de alto nvel, como C, Java, Python, por exemplo, diretamente transformada em
uma instruo de mquina e armazenada em memria para execuo da CPU. Na verdade, geralmente,
uma instruo de uma linguagem de alto nvel embute vrios comandos e aes a serem executadas
pela CPU. Essa a principal razo da criao dessas linguagens de alto nvel. O programador deve
ter o menor trabalho possvel ao escrever um programa. Ele deve se preocupar com o problema que
est tentando solucionar, ao invs de memorizar dezenas de comandos de uma linguagem de mquina
extensa e repleta de detalhes.
Aps compilado, o programa de linguagem de alto nvel transformado em um programa apenas
com instrues de mquina. Cada instruo de mquina contm apenas uma nica operao a ser
realizada pela CPU. Para ser executado, esse programa deve ser transferido para a Memria Principal.
16 / 73

Introduo a Arquitetura de Computadores


No princpio, um Operador de Mquina, copiava todas as instrues para a memria de maneira quase
que manual. Hoje em dia essa operao realizada pelo Sistema Operacional (Windows, Linux etc.).
Assim que um usurio clica com o mouse, ou pressiona a tecla Enter do teclado solicitando que um
determinado programa execute, o Sistema Operacional copia o programa para a memria e solicita
que a CPU o execute.
No podemos esquecer que a memria do computador apenas armazena nmeros binrios. Ento,
podemos dizer que um programa em linguagem de mquina formado por instrues em binrio. A
cada instruo trazida da memria, a CPU l seu cdigo binrio de operao para saber do que se
trata, e inicia o processo de execuo. Dependendo da operao, que pode ser de movimentao de
dados, uma operao lgica, ou aritmtica, ou uma operao de armazenamento de dados, a CPU
envia ordens para que os outros dispositivos do computador atuem de forma a completar a operao.
Essas ordens so enviadas atravs de pulsos eltricos passados por fios dentro do computador. Esses
fios so chamados de Barramento de Controle.

2.1.1

Software X Hardware

O computador composto por dois elementos, o software e o hardware. Tanto o hardware quando o
software foram escritos por um programador, ou engenheiro, para se resolver um determinado problema. O incio sempre o mesmo. O profissional se depara com um problema e projeta uma soluo
algortmica para ele. A diferena est na concepo. O hardware concebido em chip, utilizando
transistores interconectados. Uma vez elaborado, o hardware no pode mais ser modificado. Ele
uma soluo rgida (do ingls, Hard) para o problema. J o software elaborado para ser armazenado
numa memria e ser executado com um processador de propsito geral. Ele uma soluo flexvel (do
ingls, Soft) para o problema, j que o programador pode, a cada momento, modificar seu programa
afim de torn-lo cada vez melhor.
Solues em software so sempre mais lentas do que solues equivalentes em hardware. Isso porque
para executar um programa, cada instruo deve antes ser armazenada em memria, transferidas para
a CPU (lembre-se que memrias so muito mais lentas do que CPUs) e, s ento, ser executada pela
CPU. J as solues em hardware no utilizam instrues, elas executam as operaes diretamente.
Por outro lado, as solues em software ganham em flexibilidade, j que os programas podem ser
facilmente modificados. J as solues em hardware, no. Uma vez concebido, um hardware no
pode mais ser modificado, ele deve ser descartado para dar lugar a uma verso mais nova. Isso torna
projetos em hardware muito mais caros.
Para entender melhor, podemos citar alguns exemplos de implementaes em hardware comumente
utilizadas. Todas so escolhidas devido ao seu carter de pouca necessidade de modificao, mas
muito demanda por alto desempenho. Por exemplo, chips de criptografia para celulares (geralmente
smartphones), processadores aritmticos para acelerar o clculos, aceleradores grficos para gerar
grficos mais rpidos, alguns chips para fazer edies rpidas em fotos, geralmente acoplados s
cmeras digitais. As implementaes so feitas em software quando a demanda por desempenho no
tanta, ao mesmo tempo em que as atualizaes so frequentes, como os Sistemas Operacionais, os
jogos e aplicativos em geral.
Apesar de no ser to rpida quanto gostaramos, a CPU uma soluo muito boa por permitir a
execuo de, praticamente, qualquer tipo de programa, se tornando uma mquina de propsito geral.

17 / 73

Introduo a Arquitetura de Computadores

2.2

Estrutura de uma CPU

Toda CPU formada por duas unidades, como podem ser vistas na Figura 2.1 [18]:
Unidade de Controle (UC)
Unidade de Ciclo de Dados (UCD)
clock
Intrues

Controles
externos

Unidade de
Controle
Endereo de
instrues
Controles
internos

Condies
Dados

Dados

Ciclo de Dados
Endereos
dos dados

CPU

Figura 2.1: Estrutura de uma CPU


A Unidade de Controle responsvel por receber instrues pelo Barramento de Instrues. As
instrues vm da memria de acordo com o endereo enviado pela UC para a memria atravs do
Barramento de Endereo das Instrues ( esquerda da UC na Figura 2.1 [18]). J Unidade de Ciclo
de Dados, como o prprio nome deixa entender, responsvel por tratar os dados propriamente ditos.
A Unidade de Controle no executa as instrues. Ela as l, decodifica e passa os comandos para
a UCD determinando como as instrues devem ser executadas e com quais dados. Baseada nesses
comandos, a UCD pode ir buscar os dados necessrios na memria, executar as devidas operaes
e enviar o resultado de volta para a memria para ser armazenado. Tudo controlado de acordo com
os comandos internos enviados pela Unidade de Controle, que por sua vez se baseia na instruo
decodificada. Os dados lidos, ou enviados para a memria, so transmitidos atravs do Barramento
de Dados. Os endereos so enviados para a memria atravs do Barramento de Endereo.
Tudo isso controlado por um sinal sncrono de relgio (clock, do ingls). A cada batida do relgio
a unidade sabe que deve executar um passo, passar os dados para quem deve, e se preparar para o
prximo passo. Quanto mais rpido o relgio mais operaes por segundo o processador consegue
executar e mais rpido pode se tornar. A velocidade do relgio medida em frequncia, utilizando
a unidade Hertz (abreviatura Hz). Um Hertz significa um passo por segundo. Os processadores
atuais trabalham na faixa dos poucos GHz (leia-se Giga Hertz), entre 1 GHz e 5 GHz. Um Giga Hertz
significa um bilho de passos por segundo. por isso que os computadores so to incrveis. Eles
no executam operaes extraordinrias. Pelo contrrio. Executam operaes extremamente simples,
como somas, subtraes e multiplicaes, mas fazem isso numa velocidade incrvel.

2.2.1

Os papis dos barramentos e da memria

Saindo um pouco de dentro da CPU, podemos enxergar os barramentos e a Memria Principal, como
apresentado na Figura 2.2 [19]. Para facilitar a visualizao, os Barramentos de Dados e de Endereo
so apresentados replicados, tanto do lado esquerdo, quanto do direito da figura.
18 / 73

Introduo a Arquitetura de Computadores

Memria Principal

Controles
internos

Dados

Condies

Dados

Ciclo de Dados
Endereos
dos dados

Barramento de Controle

Unidade de
Controle

Barramento de Endereos

Barramento de Dados

Barramento de Endereos

Endereo de
instrues

Barramento de Dados

Controles
externos

Intrues

Barramento de Dados
Barramento de Endereos

Figura 2.2: Estrutura de uma CPU com barramentos


A comunicao da Unidade de Controle e da Unidade de Ciclo de Dados feita sempre com a Memria Principal atravs dos barramentos. Os endereos so transmitidos sempre via Barramento de
Endereos para a memria, sempre de forma unidirecional da CPU para a memria. Quando as instrues so transmitidas da memria para a Unidade de Controle, elas utilizam o Barramento de Dados.
Isso porque as instrues so tratadas pela memria como um contedo como um outro qualquer.
Ela no faz distino entre dados e instrues. O mesmo Barramento de Dados utilizado pela Unidade de Ciclo de Dados para receber os operandos das operaes a serem realizadas e para enviar os
resultados de volta para a memria.
Fica claro ento a importncia da Memria Principal. Todo e qualquer programa s poder ser executado a partir dela. Quando voc, por exemplo, deseja executar um programa de um pendrive conectado
pela USB do computador, ele antes precisa ser copiado para a Memria Principal. S ento ele ser
executado. A memria precisa ser grande o bastante para armazenar a maior quantidade possvel de
programas, e tambm precisa ser rpida o suficiente para buscar os dados e envi-los o mais rapidamente possvel CPU, e tambm salv-los no menor tempo possvel. A velocidade das memrias
determinada essencialmente pela tecnologia de transistores utilizada. Essa tecnologia relacionada
ao preo. Quanto mais rpidas, mais caras elas so.

2.2.2

Os registradores

Os registradores so memrias elaboradas com o mnimo de transistores possvel, utilizando o que h


de mais moderno em tecnologia de armazenamento. Elas so as memrias mais rpidas que podem
ser construdas e por isso so tambm as mais caras. Por essa razo, elas aparecem numa quantidade
muito pequena em um computador, na casa de alguns Kilo Bytes. Eles podem ser divididos em dois
grupos. Os registradores de propsito geral, e os de propsito especfico. Como o prprio nome
diz, os primeiros podem ser utilizados pelos programas para quaisquer objetivos, j os segundos
so especficos para algumas tarefas. Por exemplo, h um registrador na CPU para controlar se o
processador deve continuar em execuo, ou entrar em modo de espera por nova ordem. Se esse
registrador receber um valor diferente de zero, o processador entrar em modo de espera, at que
receba a ordem de modificar esse valor. Na Figura 2.3 [20] os registradores de propsito especfico
apresentados so:
Program Counter (PC): Contador de Programas
19 / 73

Introduo a Arquitetura de Computadores


Instruction Register (IR): Registrador de Instruo
Memory Address Register (MAR): Registrador de Endereo

Endereo de
instrues

PC

Intrues

IR

Memory Buffer Register (MBR): Registrador de Dados


Controles
externos

Unidade de
Controle

Controles
internos

Dados

PC: Registrador de Programa


IR: Registrador de Instruo

Condies

MBR

Dados

MAR
Reg.
Prop.
Geral

Endereos
dos dados

ULA

Figura 2.3: Estrutura de uma CPU com registradores


O PC contm o endereo de memria que ser utilizado para buscar a prxima instruo a ser executada pela CPU. Antes de executar qualquer instruo, a CPU envia o contedo de PC para a memria
atravs do Barramento de Endereo, a memria envia o contedo da memria nesse endereo atravs
do Barramento de Dados. Esse contedo ento armazenado no IR. J o IR, que recebeu a instruo
que veio da memria, tem o objetivo de guardar a instruo e pass-la para a Unidade de Controle,
que quem vai l-la e tomar as decises necessrias para para que ela seja executada pela Unidade
de Ciclo de Dados. Por se tratarem do processo de busca de instrues, o PC e o IR ficam instalados
na Unidade de Controle. O PC possui conexo direta com o Barramento de Endereos, e o IR com o
Barramento de Instrues.
Com relao ao MAR e ao MBR, eles possuem funes anlogas ao PC e IR, respectivamente, mas
referentes a dados e no a instrues. Quando uma operao precisa ser realizada com algum dado
que est na memria (e no em um registrador), o endereo desse dado passado para o MAR. A CPU
ento passa o contedo de MAR para a memria atravs do Barramento de Endereo, que retornar
o contedo da memria nesse endereo atravs do Barramento de Dados. O contedo trazido pela
memria ser armazenado em MBR. S ento o dado poder ser utilizado para o processamento inicialmente planejado. O MBR e MAR possuem, respectivamente, conexes diretas com os Barramentos
de Dados e de Endereos. Ambos so situados na Unidade de Ciclo de Dados, por serem utilizados
nas fases de processamento das instrues.
O tamanho e quantidade dos registradores de uma CPU uma das principais decises de projeto. Se
forem grandes demais, ou em quantidade maior do que a necessria, podem resultar em desperdcio
e aumento desnecessrio no preo do processador. J se forem pequenos, ou em pouca quantidade,
com certeza vo tornar o computador muito mais lento do que o desejado. Encontrar o tamanho e
quantidade ideais trabalhoso e geralmente feito atravs de simuladores e de muito testes e anos de
experincia.
Os registradores de propsito geral so utilizados para guardar as variveis dos programas. Como eles
esto presentes em quantidades muito pequenas, so poucas as variveis que ficam armazenadas em
registradores. As demais ficam na Memria Principal. Quando uma operao precisa ser realizada e
seus dados esto nos Registradores de Propsito Geral, a CPU no precisa busc-los na memria e o
processamento torna-se muito mais rpido.
20 / 73

Introduo a Arquitetura de Computadores

Importante
Lembre-se que as memrias so muito mais lentas do que os processadores!

A CPU tenta ao mximo manter as variveis mais utilizadas nos registradores. Ela faz isso guardando
aquelas mais usadas nas ltimas operaes. Nem sempre isso funciona, mas no geral, a melhor
soluo.
Nota
Faa suas variveis mais importantes serem bastante utilizadas. Usando-as em repeties,
por exemplo. Isso aumentar as chances delas serem armazenadas em registradores, podendo acelerar a execuo dos seus programas.

2.2.3

Unidade Lgica e Aritmtica (ULA)

A Unidade Lgica e Aritmtica, ou ULA, se assemelha muito com uma calculadora convencional. Ela
executa operaes lgicas e aritmticas. As ULAs modernas executam operaes tanto com inteiros,
como com nmeros reais. A ULA recebe como entrada dois diferentes dados que so trazidos para
ela dos registradores (de propsito geral, ou especficos) (veja a Figura 2.3 [20]). Quem decide que
registradores passaro seus dados para a ULA a Unidade de Controle baseada no tipo da instruo
que est sendo executada. A Unidade de Controle tambm envia para a ULA qual operao ser
realizada (soma, multiplicao, diviso, AND, OR etc.). Assim que isso feito, a ULA executa a
operao e gera um resultado na sua sada. Esse resultado tambm passado para um registrador
escolhido pela Unidade de Controle, baseando-se na instruo em execuo.

2.2.4

Unidade de Controle (UC)

A Unidade de Controle, ao receber a instruo que est armazenada em IR, a decodifica e envia os
sinais de controle para onde for necessrio. Decodificar nada mais do que ler um cdigo em binrio
e interpretar a operao relativa a esse cdigo. Dependendo da operao, os sinais de controle podem
ser internos, por exemplo, para a ULA executar uma soma, ou para o contedo de um registrador ser
transferido para a ULA. Ou pode ser externo, para um dispositivo de entrada e sada, por exemplo, ou
mesmo para a Memria Principal. Tudo isso depende da instruo a ser executada.
Na prxima seo ser apresentada a execuo de instrues em mais detalhes, o que facilitar o
entendimento do funcionamento das CPUs.

2.3

Ciclo de Instruo

Toda CPU trabalha em dois ciclos principais, o Ciclo de Busca e o Ciclo de Execuo, como pode
ser visto na Figura 2.4 [22]. Assim que o computador iniciado, a CPU entra no Ciclo de Busca,
em seguida passa para o Ciclo de Execuo e depois volta para o Ciclo de Busca. Ela continua nesse
processo at que precise ser desligada, saindo do Ciclo de Execuo para o estado final.

21 / 73

Introduo a Arquitetura de Computadores

Figura 2.4: Ciclo de Instruo


Durante o Ciclo de Busca, a Unidade de Controle que atua. Uma nova instruo buscada da
Memria para que possa ser decodificada. Nessa fase os registradores [PC] [71] e [IR] [71] so
utilizados, como apresentados na seo anterior. O PC logo lido para se saber que instruo ser
executada, essa instruo trazida para o IR e, finalmente, decodificada pela Unidade de Controle.
Assim que esse processo termina, caso a instruo no diga respeito um lao, ou uma repetio,
o contedo de PC incrementado. Ou seja, PC recebe PC + 1. Assim, no prximo Ciclo de Busca a
instruo do endereo seguinte ser carregada da memria e executada. Esse comportamento garante
a caracterstica de execuo sequencial dos programas.
No passo seguinte a CPU entra em Ciclo de Execuo. Nessa etapa atua a Unidade de Ciclo de Dados.
Agora a Unidade de Controle j sabe exatamente que operao ser executada, com quais dados e o
que fazer com o resultado. Essa informao passada para a ULA e os registradores envolvidos.
Durante o Ciclo de Execuo h cinco possveis tipos de operao que podem ser executadas:
Processador e memria
trata simplesmente da transferncia de dados entre CPU e memria principal;
Processador e Entrada e Sada
diz respeito transferncia de dados entre a CPU e um dispositivo de Entrada e Sada, como
teclado, mouse, monitor, rede, impressora etc.;
Processamento de Dados
so operaes simplesmente de processamento dos dados, como operao aritmtica ou lgica
sobre os registradores da CPU;
Controle
so instrues que servem para controlar os dispositivos do computador, como para ligar um
perifrico, iniciar uma operao do disco rgido, ou transferir um dado que acabou de chegar
pela Internet para a Memria Principal;
Operaes compostas
so operaes que combinam uma ou mais instrues das outras em uma mesma operao.

2.3.1

Busca de Dados

Em operaes entre Processador e Memria, necessrio que dados sejam trazidos da memria para
servirem de entrada para a ULA, e/ou o resultado seja levado para armazenamento na memria no
final da execuo. Para isso acontecer, executada uma Busca de Dados. Isso determinado durante
a decodificaro da instruo, no ciclo de Busca de Instruo. Isso acontece quando um dos parmetros de uma operao aritmtica um endereo de memria, e no um valor diretamente, nem um
22 / 73

Introduo a Arquitetura de Computadores


registrador. Para isso, parte do contedo de [IR] [71] transferido para o [MAR] [71]. Essa parte
justamente o endereo do parmetro da instruo. Em seguida a Unidade do Controle requisita
memria uma leitura. Assim, o endereo, agora em MAR, passado para a memria e o contedo
lido da memria passado para o [MBR] [71]. Agora o contedo transferido para a ULA para que
a operao seja executada (lgica ou aritmtica).
Se a instruo tiver dois ou mais parmetros de memria, sero necessrias outras Buscas de Dados.
Como a memria sempre mais lenta do que a CPU, instrues que necessitam Buscas de Dados so
muito mais lentas do que instrues de Processamento de Dados.
Perceba que cada instruo pode exigir mais tempo de execuo do que outras. Isso depende de
quantos acessos memria ela exigir. Quanto mais acessos memria, mais lenta a instruo.
O ideal sempre usar registradores. Mas nem sempre possvel utilizar registradores. Eles esto
sempre em poucas quantidades e em menores tamanhos. Principalmente por serem caros. O que os
computadores sempre tentam fazer passar os dados da memria para os registradores assim que
puderem, para que as prximas instrues sejam aceleradas.

2.4

Interrupes

Alm do ciclo bsico de instruo apresentado anteriormente, a CPU pode ainda executar outro tipo
de tarefa. Ela diz respeito ao processamento de pedidos oriundos dos dispositivos de Entrada e Sada.
Como o Ciclo de Instruo da CPU que vimos at o momento fechado, ou seja, a CPU sempre fica
em estado de repetio at que seja desligada, ela no pode atender a nenhum evento externo que no
seja a execuo de um programa. Por exemplo, quando um usurio pressiona uma tecla do teclado,
ou faz um movimento com o mouse, ou mesmo, quando uma mensagem chega pela Internet atravs
da placa de rede. O que a CPU deve fazer? Se ela estiver em um Ciclo de Instruo fechado como
mostrado anteriormente, nada. Ela precisa parar o que est fazendo para atender ao evento ocorrido
e, s ento, voltar ao Ciclo de Instrues. Esse processo de parar o Ciclo de Instruo para atender a
um evento externo chamado de Interrupo.
O Ciclo de Instruo pode agora ser visto modificado na Figura 2.5 [23] para atender s Interrupes. Todas as interrupes so recebidas e armazenadas internamente por um dispositivo chamado
Gerenciador de Interrupes. Esse dispositivo um chip, semelhante uma CPU, mas bem mais
simples.

Figura 2.5: Ciclo de Instrues com interrupes


Na maioria dos computadores eles vm soldados na Placa-Me, mas podem tambm vir dentro do
chip da CPU. Toda interrupo possui um cdigo de identificao. Sempre que uma nova interrupo
chega nesse gerenciador, ele armazena esse cdigo em sua memria e manda um sinal para CPU
atravs do Barramento de Controle. Durante seu Ciclo de Instruo, sempre que uma instruo
23 / 73

Introduo a Arquitetura de Computadores


executada, antes de voltar para o Ciclo de Busca, a CPU checa se algum sinal de interrupo foi
enviado pelo Gerenciador de Interrupo.
Quando no h uma interrupo, a execuo volta ao Ciclo de Busca e o programa em execuo
continua a ser executado. Mas se houver uma interrupo, a CPU agora vai parar a execuo do
programa atual para atender a interrupo. Por exemplo, vamos supor que o usurio tenha pressionado
uma tecla do teclado. O cdigo armazenado pelo Gerenciador de Interrupo indica que a interrupo
veio do teclado. A CPU pra sua execuo do programa anterior e vai iniciar a execuo de um
programa especial, o Tratador de Interrupo. O cdigo do dispositivo (aqui seria o teclado) serve
para a CPU saber o endereo do Tratador de Interrupo que ela vai buscar da memria. Ento, ao
sair da Checagem de Interrupo, a CPU muda o endereo do PC para o endereo do Tratador de
Instruo. Assim, no Ciclo de Busca a prxima instruo a ser trazida da memria e posteriormente
executada ser a do tratador do teclado.
Cada tipo de interrupo precisa de um tratamento especfico a ser feito. No caso do teclado, o
tratador vai checar que tecla foi pressionada. Isso feito atravs de uma leitura memria do teclado
(sim, todos os dispositivos possuem uma pequena memria) para saber que tecla foi pressionada.
Dependendo da tecla, uma operao diferente ser executada. Geralmente, a CPU adiciona o cdigo
da tecla pressionada num endereo especfico de memria. Cada programa, lendo essa informao,
tomar sua prpria deciso sobre o que deve ser feito. O que acontece que apenas o programa ativo
no momento, vai ler esse contedo, executar a ao da tecla e limpar essa rea de memria. Se o
programa for um editor de texto, por exemplo, o cdigo pode representar escrever a letra pressionada
na posio atual do cursor dentro do texto.
Quando esse processo encerra, o tratamento encerrado, e a CPU deve voltar execuo do programa
que havia sido interrompido. Isso s possvel porque, antes de passar execuo do Tratador
de Interrupo, a CPU salva os contedos de todos os registradores da CPU (inclusive o PC e o
IR). Ento, antes de devolver a execuo para o programa, a CPU restaura todos os valores dos
registradores antes salvos. Dessa forma, o programa retoma exatamente do ponto em que parou.
As interrupes tambm ocorrem se o prprio programa em execuo executar uma operao ilegal.
Isso feito para evitar que a CPU entre em erro. Por exemplo, se um programa tentar acessar uma rea
da memria que proibida para ele, como a rea de outro programa ou do Sistema Operacional. Nesse
caso, o programa interrompido e no volta mais a executar, ele finalizado e a execuo devolvida
ao Sistema Operacional. Algo semelhante ocorre em caso de defeitos em alguns dispositivos. Por
exemplo, se um programa estiver lendo um arquivo que est em um pendrive, e esse pendrive
removido subitamente, uma interrupo lanada e o programa encerrado, j que ele no faz mais
sentido estar em execuo.

2.5

Sobre o desempenho

possvel agora perceber que o desempenho das CPUs depende de muito outros fatores alm da velocidade do seu clock. O computador precisa ter memrias rpidas para reduzir o tempo dos Ciclos de
Busca, precisam de mais registradores para usar menos a memria e tambm que poucas interrupes
ocorram. Cada vez que uma interrupo ocorre, o programa deve ser interrompido e a chamada deve
ser atendida. Isso vai atrasar demais o tempo de execuo dos programas, dando a impresso de baixo
desempenho.
Basicamente, h dois tipos programas, os orientados CPU e os orientados a Entrada e Sada. Na
Figura 2.6 [25] o comportamento dos primeiros mostrado na parte a) e o dos segundos na parte b).

24 / 73

Introduo a Arquitetura de Computadores


(a)
curta rajada de CPU

esperando por E/S

longa rajada de CPU

Tempo

(b)

Figura 2.6: Execuo com vrias interrupes


Quando um programa orientado CPU, h momentos longos de processamento de CPU e curtos
momentos de espera por um evento de Entrada e Sada. o exemplo de programas que fazem muitos
clculos matemticos, como ferramentas de simulao, projetos de engenharia, computao grfica e
planilhas de clculos. Inicialmente os dados de entrada so passados por um dispositivo de entrada,
h longos momentos de clculos e depois os resultados so passados para um dispositivo de entrada
e sada.
J nos programas orientados Entrada e Sada (b), que so aqueles chamados tambm de interativos,
h muitos momentos de interao e uso de dispositivos de Entrada e Sada, e poucos momentos de
uso de CPU. Esse o caso de programas que utilizam muito o mouse e o teclado, como os jogos e a
prpria navegao na internet.
O que temos que ter em mente que o desempenho de um computador est muito ligado ao perfil
de cada usurio. Os Sistemas Operacionais so os responsveis por escolher que tarefa colocar para
executar a cada momento e por quanto tempo ela deve executar at que uma nova tarefa entre em
execuo. Assim, o papel do Sistema Operacional tambm fundamental e determinante no desempenho do sistema. O que ele tenta fazer no mximo que pode, tentar ocupar os tempos de espera de
um programa com a execuo de outro. Tarefa nada fcil!

2.6

Exemplo de execuo de um programa

Suponha que queiramos executar uma instruo de mquina que soma dois nmeros que esto na
memria e salve o resultado em outro endereo de memria. Para tal, vamos indicar que a memria
(M) se comporta como um vetor (um array) e entre colchetes indicaremos o endereo do dado, ou da
instruo. Sendo assim, a instruo que gostaramos de executar seria:
200: M[100] = M[101] + M[102]

Nesse caso, vamos ler que no endereo 200 da memria h uma instruo que precisa somar o
contedo do endereo 101, com o contedo do endereo 102 e salvar o resultado no endereo 100
da memria. Supondo que M[101] contenha o valor 10, e M[102] contenha o valor 20, ao final da
execuo, o endereo 100 de memria (M[100]) dever conter o valor 30.
Como uma instruo como essa ser executada depende de cada arquitetura. Aqui vamos utilizar
uma abordagem que quebra as instrues em pequenos passos simples, que facilitam o trabalho de
decodificaro da CPU.
Sendo assim, esse programa seria transformado na seguinte sequncia de instrues e executado.
PC = 200;
//Envia comando de leitura de instruo para a memria

25 / 73

Introduo a Arquitetura de Computadores


IR <- (M[100] = M[101] + M[102]) // Busca instruo da memria
PC = PC + 1
//Instruo passada do IR para a Unidade de Controle

A primeira ao seria realizar o Ciclo de Busca, visando trazer a instruo a ser executada da memria
para o processador. O endereo da instruo (200) seria passado para o PC e um comando de leitura
de instruo seria passado para a memria. Baseada no endereo trazido por PC, a memria localizaria
a instruo e a enviaria para o processador, que a armazenaria no registrador IR. Antes de passar a
instruo para a Unidade de Controle para dar incio execuo, o registrador PC atualizado para o
prximo endereo de memria, no caso, 201.
O prximo passo ser iniciar o Ciclo de Execuo:
//O primeiro dado trazido da memria para o registrador R1
MAR = 101
//Envia comando de leitura de dado para a memria
MBR <- 10
R1 = MBR

// valor lido da memria passado para o registrador R1

Como os dados a serem operados esto tambm na memria, antes necessrio executar uma operao de Busca de Operando, ou Busca de Dado. O primeiro operando est no endereo 101. Sendo
assim, o endereo 101 passado para o registrador de endereo (MAR). Esse endereo passado para
a memria e enviado um comando de leitura de dado. O contedo, o valor 10, ento localizado
pela memria e enviado para o processador, que o armazena no registrador de dados (MBR). Como
o MBR ser utilizado nas prximas etapas de execuo, seu contedo salvo em um registrador de
propsito especfico, o R1.
Em seguida, a Unidade de Controle passa para a busca do segundo operando, contido no endereo
102:
//O segundo dado trazido da memria para o registrador R1
MAR = 102
//Envia comando de leitura de dado para a memria
MBR <- 20
R2 = MBR

// valor lido da memria passado para o registrador R2

Essa etapa ainda faz parte do Ciclo de Execuo, e tambm diz respeito uma Busca de Dado. A
busca mesma do passo anterior, mas agora o endereo buscado o 102, e o contedo o 20, que
repassado para o registrador R2.
O prximo passo do Ciclo de Execuo executar a operao aritmtica propriamente dita. Isso
geralmente feito entre registradores de propsito geral, por serem mais rpidos do que se fosse
tratar dados da memria. Os contedos de R1 e R2 so somados e armazenados em R3:
R3 = R1 + R2
26 / 73

Introduo a Arquitetura de Computadores


Para finalizar o processo, o resultado deve ser armazenado de volta na memria:
MAR = 100

// Endereo passado para MAR

MBR = R3

// Resultado da operao passado para MBR

// Comando de escrita passado para a memria


M[100] <- 30

// Endereo 100 da memria recebe o valor 30

Para isso ser realizado, preciso executar uma operao de escrita na memria. O endereo 100
ento passado para MAR e o resultado da operao, salvo em R3 passado para MBR. Quando
o comando de escrita enviado pela Unidade de Controle para a memria, ela l o endereo 100
pelo Barramento de Endereo e o valor 30 pelo Barramento de Dados e salva, ento, o valor 30 no
endereo 100.
Com isso a operao finalizada. Essa operao foi executada em aproximadamente 14 passos. Esse
valor aproximado porque alguns deles so apenas o envio de sinal para a memria, e isso geralmente
feito em paralelo com o passo seguinte. Se cada passo for executado dentro de uma batida do relgio
(ou ciclo de clock), teremos 14 ciclos de clock para uma nica instruo. Mas perceba que o acesso
memria sempre mais lento do que a execuo do processador. Se cada acesso memria levar 3
ciclos de clock, teremos um total de 20 ciclos de clock.
Nota
Apenas uma memria tipo Cache poderia ser acessada com apenas 3 ciclos de clock. Uma
memria principal convencional precisa de entre 10 e 15 ciclos de clock para ser lida. Depende de sua tecnologia (e preo!).

Parece bastante, mas algumas instrues podem levar muito mais ciclos do que isso, como operaes
com Ponto Flutuante (nmeros reais), ou de acesso a um perifrico, como o disco rgido. Isso depende
muito de como o projeto do computador elaborado.
Apesar do computador parecer pouco efetivo na execuo de uma simples soma, como ele executa
numa frequncia de clock muito alta, ele acaba executando muitas operaes por segundo. Ento,
utilizar apenas a frequncia de clock como medida de desempenho no uma boa ideia. O mais
utilizado medir a quantidade de operaes aritmticas que o processador capaz de executar por
segundo. Hoje em dia um computador pessoal est na escala dos alguns Milhes de Instrues por
Segundo (ou MIPS). Mais a seguir vamos estudar como essas e outras medidas de desempenho podem
ser calculadas.
O que vem por a
At o momento vimos como um processador bsico trabalha. Nas prximas sees deste
captulo vamos ver como o desempenho pode ser aumentado, ainda mais, aumentando adicionando tcnicas avanadas de execuo paralela e de anlise de programas.

2.7

Aumentando o desempenho com Pipeline

Pelo o que foi visto, at o momento, a execuo de um programa essencialmente sequencial, ou


seja, uma instruo s executada quando a anterior termina. Ao longo do nosso curso veremos que
27 / 73

Introduo a Arquitetura de Computadores


h dois modos de paralelismo que podem ser utilizados para melhorar ainda mais o desempenho do
processador. O primeiro deles atravs do chamado Paralelismo em Nvel de Hardware, que
obtido quando replicamos unidades do processador para que elas funcionem em paralelo, reduzindo
assim o tempo de execuo dos programas. A segunda forma atravs do Paralelismo em Nvel de
Instrues, ou ILP (do ingls, Instruction Level Parallelism). Nesse caso, as unidades do processador
no so duplicadas, mas melhores organizadas para que no fiquem ociosas. H duas formas principais de implementar o ILP, uma delas atravs do Pipeline e a outra atravs de processadores
Superescalares. Aqui vamos tratar do Pipeline, e no captulo sobre Processamento Paralelo, vamos
tratar as outras formas de paralelismo.
Imagine que possamos dividir o Ciclo de Instruo de um determinado processador nas cinco etapas
seguintes:
Carregar instruo (FI)
Traz a instruo da memria para o processador, armazena em IR (essa etapa tambm chamada
de Fetch de Instruo) e a decodifica para execuo no passo seguinte.
Carregar operandos (FO)
Traz os operandos da operao dos registradores para a ULA, para que a operao seja realizada
sobre eles, tambm chamada de Fetch de Operandos.
Executar instrues (EI)
Executa operao lgica ou aritmtica propriamente dita.
Escrever em memria (WM)
Escreve o resultado da operao em memria, se necessrio.
Escrever em registrador (WR)
Escreve o resultado da operao em um dos registradores, se necessrio.
Esse um dos Ciclos de Instruo mais simples que poderamos imaginar, organizado em apenas 5
etapas.
Nota
Processadores convencionais, como os da Intel que usamos em nossos computadores, executam instrues em cerca de 18 etapas.

Cada instruo deve passar pelos cinco passos descritos para ser executada. Suponha que cada etapa
necessite de apenas 1 ciclo de clock para ser executada. Quantos ciclos seriam necessrios para
executar um programa de 20 instrues? Essa conta simples. Cada instruo deve passar pelas
cinco etapas, e cada etapa leva 1 ciclo de clock, sendo assim, o programa levar 20 vezes 5 ciclos, ou
seja, 100 ciclos de clock.
Agora vamos analisar o que acontece com cada etapa a medida em que o programa executado.
A primeira instruo vai passar pela etapa FI, que a leva para o IR e a decodifica. Em seguida
ela passada para a etapa FO, e os dados necessrios para a operao so levados dos respectivos
registradores para a ULA. Agora, observe. Neste exato momento, a segunda instruo do programa
est parada na memria, aguardando sua vez para ser executada. Ao mesmo tempo, a etapa FI est
ociosa. Por que a etapa FI no pode entrar em ao e trabalhar com a segunda instruo do programa,
enquanto a primeira est na etapa FO?
28 / 73

Introduo a Arquitetura de Computadores


O mesmo vai ocorrer com todas as etapas de execuo da primeira instruo do programa. Ela vai ser
executada na etapa EI, depois vai passar para a etapa WM que checar se h necessidade de copiar o
resultado para a memria e, finalmente, para a WR, que copiar o resultado para um dos registradores.
Quando a primeira instruo estiver na etapa WR, as etapas anteriores estaro todas ociosas. Por que
no aproveitar o tempo ocioso para colocar as etapas anteriores para irem adiantando a execuo das
prximas instrues? isso que prope o Pipeline!
O Pipeline vai separar as etapas de execuo de instrues em unidades fsicas independentes, assim,
uma etapa pode trabalhar com uma instruo, ao mesmo tempo em que uma outra unidade trabalha
com uma outra instruo. a mesma estratgia utilizada pela indstria de produo em massa para
fabricar carros, por exemplo. Enquanto um chassi est sendo montado, outro est recebendo a carroceria, outro o motor, outro sendo pintado e outro recebendo o acabamento interno. Todas etapas
trabalhando em paralelo e vrios carros sendo tratados ao mesmo tempo. Esta estratgia aumenta o
desempenho da execuo das instrues de forma grandiosa.
Na Figura 2.7 [29] so apresentadas as adequaes necessrias no processador para que as etapas possam ser organizadas em Pipeline. Dizemos ento que esse processador trabalha com cinco Estgios
de Pipeline.

FI

FO

EI

WM

WR

Fetch

REG

ULA

DMem

REG

Figura 2.7: Processador adaptado para trabalhar com Pipeline de cinco estgios
A primeira mudana necessria a separao da memria em duas partes independentes (ou duas
memrias mesmo). Uma parte ser utilizada apenas para instrues (representadas na figura pela
palavra Fetch), e outra apenas para os dados (representada por DMem). Isso necessrio para que a
etapa FI acesse a memria para buscar a prxima instruo, ao mesmo tempo em que a WM acessa
a memria para salvar o resultado de outra instruo anterior. Se houvesse apenas uma memria
para dados e instrues, isso no seria possvel. Essa mudana vai contra o que foi projetado na
((Arquitetura de von Neumann)), e foi considerado um grande avano. Ela foi batizada de Arquitetura
Harvard.
Outra mudana importante foi a adio de memrias intermedirias entre cada etapa. Na Figura 2.7
[29] essas memrias so representadas pelos retngulos preenchidos e sem nenhuma palavra sobre
eles. Essas memrias so utilizadas para armazenar o resultado da etapa anterior e pass-lo para a
etapa posterior no ciclo seguinte. Elas so necessrias porque as etapas no executam necessariamente
sempre na mesma velocidade. Se uma etapa for concluda antes da etapa seguinte, seu resultado deve
ser guardado nessas memrias para aguardar que a etapa seguinte conclua o que estava fazendo. S
ento ela poder receber o resultado da etapa anterior.
O mesmo ocorre na produo de um carro. A etapa de instalao do motor pode ser mais rpida
do que a de pintura, por exemplo. Ento, se um carro acabou de receber um motor, ele deve ser
guardado num local temporrio at que o carro anterior tenha sua pintura concluda. Assim, a etapa
de instalao do motor pode receber um novo carro.
Qual o benefcio da execuo em Pipeline? Para isso, vamos analisar a Figura 2.8 [30].

29 / 73

Introduo a Arquitetura de Computadores

Instrues

Tempo (ciclos de clock)

I1

I2

I3

Fetch

REG

ULA

DMem

Fetch

REG

ULA

DMem

Fetch

REG

ULA

DMem

Fetch

REG

ULA

DMem

Fetch

REG

ULA

I4

I5

REG

REG

REG

REG

DMem

REG

Figura 2.8: Execuo em pipeline de cinco estgios


Nesse exemplo a dimenso horizontal (eixo X) representa o tempo, e a dimenso vertical (eixo Y)
representa as instrues a serem executadas (I1, I2, I3, I4 e I5). Nessa imagem, a instruo I1 j
passou por todas as etapas e est em WR, enquanto isso, I2 est em WM, I3 est em EI, I4 est em
FO e I5 ainda est em FI. Como o Pipeline possui 5 estgios, ele precisa, no mnimo, de 5 instrues
para encher o Pipeline e, a partir da, inicia-se o ganho de desempenho.
Voltando ao exemplo anterior, considerando que cada etapa leve 1 ciclo de clock para ser concluda.
Quantos ciclos so necessrios para executar 20 instrues agora com Pipeline? No incio, o Pipeline
no est cheio, ento a instruo I1 deve passar por todas as 5 etapas para ser concluda, levando
ento 5 ciclos de clock. Mas, a instruo I2 acompanhou I1 durante toda execuo e terminou no
ciclo seguinte, ou seja, em 6 ciclos de clock. Em seguida, a instruo I3 foi concluda em 7 ciclos
de clock, I4 em 8 ciclos, I5 em 9 ciclos, assim em diante, at a concluso da vigsima instruo, que
ocorreu em 24 ciclos.
Comparado com o exemplo sem Pipeline, que executou o mesmo programa em 100 ciclos, o ganho
foi de 4,17 vezes. Se o programa tivesse 200 instrues, levaria 1000 ciclos de clock sem Pipeline e
204 ciclos com Pipeline, o resultaria num ganho de 4,9 vezes. Onde queremos chegar com isso?
Importante
A medida em que a quantidade de instrues aumenta, o ganho de desempenho com Pipeline vai se aproximando da quantidade de estgios, que foi 5 nesse exemplo. Ento, quanto
mais instrues forem executadas e mais estgios de Pipeline tiver o processador, maior
ser o benefcio de usar o Pipeline.

2.8

Limitaes do Pipeline

Infelizmente, nem sempre o processador consegue usufruir do ganho mximo de desempenho ao usar
o Pipeline. H vrios riscos que podem fazer com que o Pipeline seja interrompido e precise ser
reiniciado, ou impossibilitado at de iniciar. Os riscos so:
Riscos Estruturais
Riscos de Dados

30 / 73

Introduo a Arquitetura de Computadores


Riscos de Controle
Os Riscos Estruturais so limitaes fsicas do processador. O exemplo mais simples a separao
da memria em Memria de Dados e Memria de Instrues. Se isso no ocorrer, as etapas de FI e
WM no podem ser executadas ao mesmo tempo.
J o Risco de Dados ocorre quando uma instruo depende do resultado de uma instruo anterior
que est no Pipeline e ainda no est pronta. Imagine o trecho de programa a seguir:
I1: r1 = r2 + r3
I2: r4 = r1 - r3

A instruo I1 inicia primeiro e logo avana nas etapas do Pipeline. Logo depois dela vem I2. Quando
I2 for buscar o valor de r1 na etapa FO, ele ainda no estar pronto, porque I1 ainda est em EI. A
instruo I1 precisaria concluir a ltima etapa (WM) para que I2 pudesse executar FO. Nesses casos,
dizemos que h uma Dependncia de Dados. Isso cria uma bolha no Pipeline, o processador tem que
avanar I1 at a concluso de WM, e parar a execuo de I2 e todas instrues seguintes at ento.
S depois da concluso de I1 que o I2 e as prximas instrues seriam liberadas para continuar a
execuo.
O ltimo tipo de risco o Risco de Controle. Esse ocorre quando qualquer mudana no fluxo de
controle do processador. Ou seja, quando a execuo deixa de ser meramente sequencial. Como
vimos anteriormente, o Pipeline vale a pena quando temos uma grande sequncia de instrues sendo
executadas. O processador confia que depois da instruo I1 ele executar a I2, depois a I3, e assim
sucessivamente. Mas o que acontece, por exemplo, se o processador estiver executando a instruo
I10, e essa instruo ordenar que o programa salte para a instruo I30? Isso pode ocorrer se a
instruo se tratar de uma repetio, ou uma chamada a uma funo. A mudana de controle tambm
pode ocorrer por meio de interrupo, provocada por um dispositivo de entrada e sada, ou pelo
pelo prprio Sistema Operacional, quando determina que um programa seja interrompido para passar
a execuo para um outro. Quando h uma mudana no fluxo de execuo desta maneira, todas
instrues que esto no Pipeline so removidas, o fluxo modificado, e o Pipeline comea a ser
preenchido todo novamente.
As tcnicas de Pipeline avanaram bastante e vrias medidas foram tomadas para amenizar o prejuzo
causado pelos riscos mencionados. Entretanto, nenhuma tcnica capaz de evitar todas as possveis
perdas de desempenho. At boas prticas de programao podem ajudar a otimizar a execuo dos
programas, e os compiladores tambm ajudam bastante neste aspecto.
Na prxima sesso vamos estudar um pouco como podemos realmente medir o desempenho dos
processadores e entender melhor o que faz um processador mais eficiente do que outro.

31 / 73

Introduo a Arquitetura de Computadores

O desempenho dos computadores


O desempenho dos processadores e dos computadores muito valorizado pelas empresas
por agregarem muito valor a elas. Como se costuma dizer, tempo dinheiro. Ento quanto
menos tempo se espera para um computador realizar uma tarefa, mais tempo resta para
a empresa se dedicar a outras atividades. O desempenho to importante, que h uma
corrida silenciosa entre empresas, universidades e governos para saber quem capaz de
produzir o computador mais rpido do mundo. A organizao chamada Top 500 organiza
uma competio para conhecer quem so esses campees de desempenho e anualmente
geral uma lista com os 500 computadores mais velozes. Atualmente a China e os Estados
Unidos disputam o topo da lista do Top 500. Nas dcadas aps a Segunda Guerra Mundial
os pases disputavam uma guerra silenciosa (a Guerra Fria) para saber quem era o pas mais
poderoso em poder blico e em tecnologias, como a corrida espacial.
Hoje a Guerra Fria j terminou, mas a corrida pela liderana tecnolgica e econmica mundial continua e possui um novo concorrente forte disputando de igual para igual com os
Estados Unidos, a China. Nessa corrida o poder computacional importantssimo! Ter um
computador poderoso no significa apenas ser capaz de realizar tarefa mais rapidamente,
mas ser tambm capaz de realizar certas tarefas que seriam impossveis em computadores
menos poderosos. Um exemplo disso a construo de um computador que haja de forma
semelhante ao crebro humano. Chegar a esse ponto significa ser capaz de construir sistemas que possam substituir o homem em vrias tarefas complexas, como dirigir mquinas e
at mesmo operar computadores. Outro exemplo seria simular o comportamento perfeito da
reao do corpo humano a drogas. Assim, no seria mais necessrio o uso de cobaias para
testar medicamentos. Esse avano traria um poder incalculvel a quem o dominasse!
Acesse o site da Top 500 em http://www.top500.org e conhea as super mquinas da computao!

2.8.1

Medidas de desempenho

Para medir o desempenho dos computadores, trs mtricas principais so mais usadas:
Ciclos de Clock por Instruo (CPI)
determina quantos ciclos de clock so necessrios para executar uma determinada instruo.
Vimos que o Ciclo de Instruo organizado em vrias etapas e que isso depende de instruo
para instruo. Se uma instruo acessar mais memria do que outra, ela ser mais lenta.
Instrues que operam com Pontos Flutuantes so mais lentas do que as operaes com nmeros
inteiros. fcil perceber a razo disso. Operaes com nmeros reais so mais complexas de
serem resolvidas, porque devem ser realizadas para a parte fracionria e para a inteira, e depois
o resultado deve ser consolidado. Assim, simulaes so realizadas com um processador e
so calculados quantos ciclos de clock cada tipo de instruo necessita em mdia para ser
completada. Este o CPI!
Milhes de Instrues por Segundo (MIPS)
o CPI uma medida utilizada para medir o desempenho do processador para cada tipo de
instruo, mas no muito boa para medir o desempenho para a execuo de programas, que o
objetivo de todo computador. Isso porque os programas so geralmente formados por instrues
de todos os tipos, com inteiros, ponto flutuante, acessando muita ou pouca memria. Outro fator
que fatores como, Pipeline, tecnologia de memria e tamanho da memria Cache, podem fazer
com que uma instruo seja executada lenta agora, e rpida logo em seguida. Para contornar
32 / 73

Introduo a Arquitetura de Computadores


isso, uma mtrica muito utilizada o MIPS. Ela determina quantos Milhes de Instrues so
executadas pelo computador a cada segundo. Nesse caso, programas que demandam muito
esforo do computador so executados, a quantidade de instrues contada e depois dividida
pela quantidade de segundos da execuo. Caso o CPI mdio (tambm chamado de CPI Efetivo)
do computador j tenha sido calculado anteriormente, o MIPS pode ser calculado pela frmula:
MIPS =

Clock
CPIM

Onde, Clock a frequncia do relgio do processador em Hertz, CPI o CPI mdio e M um milho
(106 ). necessrio dividir o resultado por M porque a medida do MIPS sempre dada na escala de
milhes. Por exemplo, se um processador de 2 GHz e CPI mdio de 4 ciclos por instruo, o MIPS
desse processador ser:
2G
MIPS = 4M
O resultado dessa operao ser 0,5M, ou 500K. Isso porque 2 dividido por 4 0,5, e 1 Giga dividido
por 1 Mega, resulta em 1 Mega.
Nota
Lembre-se sempre de considerar a grandeza do Clock no clculo. Um giga Hertz muito
diferente de um kilo, ou um mega Hertz!

Milhes de Instrues em Ponto Flutuante por Segundo (MFLOPS)


uma alternativa para o MIPS o MFLOPS. O MIPS muito eficiente, mas no para comparar
programas diferentes.
Para calcular o MFLOPS, so executadas apenas instrues que operam com Ponto Flutuante e so
calculados quantos segundos se passaram para cada milho delas. Assim, ela pode ser definida da
seguinte forma:
Clock
MFLOPS = CPI
f M
A nica diferena para o clculo do MIPS que apenas as instrues que operam com Ponto Flutuante
so consideradas. Assim, CPI f diz respeito a quantos ciclos de clock em mdia so necessrios para
executar uma instruo de ponto flutuante.
Os computadores pessoais e comerciais de hoje trabalham na escala MFLOPS.
J os supercomputadores trabalham na escala de GFLOPS (Giga FLOPS). Aqueles computadores
que lideram a lista do Top 500, e so capazes at de mudar o PIB de um pas, trabalham na escala do
TFLOPS (Teta FLOPS).

2.8.2

Exemplos de calcular o desempenho de um processador

Suponha que um programa executado num processador de 40MHz. A Tabela 2.1 [34] apresenta os
CPIs coletados para cada tipo de instruo, bem como sua quantidade de instrues para um determinado programa com 100.000 instrues.

33 / 73

Introduo a Arquitetura de Computadores


Tabela 2.1: Exemplo de configurao de um processador
Tipo de instruo
Aritmtica com Inteiros
Operaes de acesso Memria
Operaes com Ponto Flutuante
Instrues de salto e desvio

CPI
1
4
2
5

Nmero de instrues
45.000
32.000
15.000
8.000

Para este exemplo, vamos calcular o CPI efetivo, o MIPS e o MFLOPS.


O CPI Efetivo simplesmente a mdia ponderada dos CPIs apresentados para o programa. Isso pode
ser feito da seguinte forma:
CPI =

(145000)+(432000)+(215000)+(58000)
(45000)+(32000)+(15000)+(8000)

CPI =

45000+128000+30000+40000
100000

CPI =

243000
100000

CPI = 2, 43
J o MIPS pode ser calculado como:
MIPS =

Clock
CPIM

MIPS =

40M
2,43M

MIPS = 16, 46
Ou seja, para o programa examinado, o processador teve um desempenho de 16,46 milhes de instrues por segundo. Se o objetivo for calcular o MIPS geral, e no especfico para esse programa,
deve-se utilizar a mdia aritmtica de todos os CPI calculados, e no a mdia ponderada.
Para calcular o MFLOPS seguimos a mesma estratgia, mas dessa vez utilizamos apenas o CPI para
instrues de ponto flutuante. Ou seja:
MFLOPS =

Clock
CPI f M

MFLOPS =

40M
2M

MFLOPS = 20
Isso significa que esse processador apresentou um desempenho de 20 milhes de instrues de ponto
flutuante por segundo.

2.9

Recapitulando

Vimos em mais detalhe neste captulo como os processadores executam nossos programas, e como
alguns aspectos de organizao e arquitetura so importantes. No apenas a frequncia do clock do
34 / 73

Introduo a Arquitetura de Computadores


processador relevante, mas como o Pipeline aplicado, se h muitas interrupes e se o programa
bem escrito a ponto de explorar melhor o Pipeline. Tambm foram apresentados trs diferentes
mtricas para se avaliar o desempenho de um sistema, o CPI, o MIPS e o MFLOPS.
No prximo captulo vamos estudar mais profundamente a CPU atravs do estudo de sua Unidade de
Controle e como ela faz para decodificar e executar instrues.
Feedback sobre o captulo
Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Para compreender melhor como feedbacks funcionam consulte o guia do curso.

35 / 73

Introduo a Arquitetura de Computadores

Captulo 3
Unidade de Controle
O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:
Conhecer o funcionamento da Unidade de Controle em mais detalhes
Apresentar como as instrues so executadas pela CPU
Neste captulo vamos entrar mais a fundo no estudo das CPUs e vamos apresentar a Unidade de
Controle, principal unidade dos processadores. Conhecer a Unidade de Controle essencial para o
entendimento de como as instrues so executadas pelo computador.

3.1

Introduo

A Unidade de Controle, como visto no captulo anterior, a unidade interna CPU responsvel (como
o prprio nome j diz) pelo controle da execuo das instrues. Como a CPU uma mquina de executar instrues, a Unidade de Controle quem controla o principal funcionamento do computador.
O projeto de uma Unidade de Controle varia de arquitetura para arquitetura, mas h alguns pontos
que so comuns a todas elas. Toda Unidade de Controle trabalha com a execuo de Microoperaes.
Como pode ser visto na Figura 3.1 [37], um programa sempre executado instruo por instruo.
Essas seriam instrues de mquina, compiladas a partir de Assembly, ou antes a partir de uma linguagem de alto nvel e depois compiladas para Assembly. Cada instruo executada atravs de um
Ciclo de Instruo, como visto no captulo anterior. Nessa ilustrao o ciclo de instruo foi apresentado em cinco estgios (Carrega instruo, decodifica, executa, salva resultados e checa interrupo).
Mas ele pode variar de acordo com a arquitetura da Unidade de Controle e tambm de acordo com o
tipo de instruo. Uma instruo com vrios parmetros que esto na memria, por exemplo, pode necessitar de um estgio a mais antes da execuo para buscar os dados na memria. J outra que utiliza
apenas dados de registradores pode omitir esse passo e execut-lo no prprio estgio de execuo.

36 / 73

Introduo a Arquitetura de Computadores


Execuo do Programa
Ciclo de Intruo

Ciclo de Intruo

Ciclo de Intruo

...

...
Carrega

Op

Op

Executa

Decodifica
Op

Op

Op

Op

Op

Op

Interrupo

Salva
Op

...

...

Figura 3.1: Execuo em Microoperaes

3.2

Microoperaes

Ainda na Figura 3.1 [37] pode ser visto que cada estgio do Ciclo de Instruo quebrado em subestgios, chamados de Microoperaes. A Microoperao a operao atmica (indivisvel) realizada
pela Unidade de Controle para a execuo de cada estgio. Cada vez que um estgio do Ciclo de
Instruo for executado, as devidas Microoperaes so executadas pela Unidade de Controle.
Essa organizao necessria para melhorar a organizao da CPU e facilitar o projeto das Unidades
de Controle. Alm disso, nos projetos de Unidades de Controle modernas, possvel reutilizar Microoperaes de um estgio em outro. Por exemplo, para executar uma instruo, necessrio executar
uma Microoperao para buscar um dado que est em um registrador (ou memria) para a ULA. Se
houver vrios dados envolvidos, a nica tarefa a ser realizada pedir para a Unidade de Controle
executar a mesma Microoperao de buscar dado, mas agora com endereo diferente.
Dessa maneira, todas instrues que chegam Unidade de Controle so quebradas em estgios
(lembre-se do Pipeline), que por sua vez, separados em sequncias de Microoperaes e, s ento,
so executadas. Agora vamos apresentar alguns exemplos de como os principais estgios de execuo
so organizados em Microoperaes.

3.2.1

Busca de Instruo

Neste estgio uma nova instruo deve ser buscada da memria e trazida para a CPU para que possa
ser decodificada e executada em seguida. O endereo da instruo a ser buscada est sempre no Contador de Programa (PC) e a instruo buscada da memria armazenada no Registrador de Instruo
(IR). Vamos ento apresentar como seriam as Microoperaes para realizar a Busca de Instruo.
A seguir cada Microoperao apresentada ao lado de uma determinao do tempo em que ela ser
realizada. Nesse caso, trs unidades de tempo so necessrias (t1, t2 e t3). Imagine que cada unidade
de tempo 1 ciclo de clock (as microoperaes mais complexas levam mais tempo do que isso).
t1:
t2:
t3:

MAR <- (PC)


Memria <- fetch;
MBR <- (memria)
PC <- (PC) + 1
IR <- (MBR)

No tempo t1 o endereo guardado no registrador PC copiado para o registrador MAR, que o


registrador conectado ao Barramento de Endereo. Ao mesmo tempo, a CPU envia para a memria
um sinal de fetch, indicando que precisa ser trazida uma nova instruo. No tempo t2 a memria l
37 / 73

Introduo a Arquitetura de Computadores


o endereo contigo no Barramento de Endereo (que sempre o mesmo de MAR), busca a instruo
e a escreve no Barramento de Dados. Como o MBR sempre reflete aquilo que est no Barramento de
Dados, o MBR agora contm a instruo trazida da memria. Esta tarefa realizada essencialmente
pela memria, a ULA est livre para executar outra Microoperao, e aproveita para adicionar 1 ao
endereo do PC. Esta operao de incremento vai garantir que a prxima instruo a ser buscada ser
a do endereo seguinte da memria. Finalmente, no tempo t3, a instruo que foi trazida da memria
e salva em MBR pode ser agora salva em IR.
A instruo precisa sempre estar em IR porque na faze de decodificaro, a Unidade de Controle vai
buscar l que instruo deve executar.
Observe que a mesma Microoperao poderia ser executada de forma diferente, como mostrada a
seguir.
t1:
t2:
t3:

MAR <- (PC)


Memria <- fetch;
MBR <- (memria)
PC <- (PC) +1
IR <- (MBR)

Nesta segunda opo, o incremento de PC foi passado para o tempo t3, ao invs de t2, o que gera o
mesmo resultado.
A quantidade de Microoperaes que podem ser executadas no mesmo ciclo de clock depende da
arquitetura do processador. Por exemplo, se h apenas uma ULA, ento s possvel executar uma
nica operao lgica, ou aritmtica a cada ciclo de clock. O mesmo serve para o uso acesso memria com MAR e MBR. Se houver um barramento exclusivo para instrues, separado do barramento
de dados e uma memria de instruo separada da memria de dados (quase todos processadores hoje
possuem), e ento possvel buscar uma instruo no mesmo ciclo de clock que se busca um dado.

3.2.2

Busca indireta

Outro tipo de Microoperao muito utilizado a Busca Indireta. Ela trata de buscar um dado que est
na memria e trazer para a CPU para ser utilizado pela instruo. O termo indireta indica que o
dado no est diretamente na CPU (em um registrador) mas na memria.
Imagine que a instruo em questo seja a soma de 2 nmeros A e B, ambos na memria. Esta
instruo foi buscada no estgio anterior, portanto no ciclo seguinte ela estar no registrador IR.
Ento, os endereos de A e B esto presentes na instruo que agora est em IR. A Busca Indireta
deve ento ser realizada para A e depois para B, da seguinte forma:
t1:
t2:
t3:

MAR <- (IRendereco)


Memria <- read
MBR <- (memria)
ACC <- (MBR)

No primeiro instante t1 o endereo do dado contido em IR passado para o registrador de endereo


MAR. Ao mesmo tempo a CPU envia para a memria um sinal de leitura (read), avisando que deve
ser feita uma busca indireta. No instante seguinte, t2, o contedo do dado trazido da memria para o
MBR atravs do Barramento de Dados, e no ltimo passo, em t3, o contedo agora em MBR levado
para um registrador para que seja utilizado na operao, geralmente o Acumulador (ACC).

38 / 73

Introduo a Arquitetura de Computadores

3.2.3

Execuo

Aps a busca da instruo e dos dados necessrios, hora de executar a instruo na Microoperao
de execuo. Mantendo o exemplo da soma A e B apresentado anteriormente, a Unidade de Controle
ter que fazer a Busca Indireta de A e B para depois realizar a soma. Supondo que A seja salvo
em ACC, ele deve ser transferido para outro registrador, digamos R1 antes de Busca Indireta por B.
Assim, a execuo seria:
t1:
R1 <- ACC
// Busca indireta por B:
t2:
MAR <- (IRendereco)
Memria <- read
t3:
MBR <- (memria)
t4:
ACC <- MBR
t5:
ACC = R1 + ACC

Em t1 o contedo de A salvo em ACC ser transferido para o registrador R1. Nos intervalos de t2 at
t4 seria feita a Busca Indireta por B. E, finalmente, no instante t5 a soma de R1 e ACC seria realizada
e salva no acumulador ACC.

3.2.4

Salvar resultado

Aps esse ltimo passo, o contedo de ACC com o resultado da operao deve ser transferido para o
local de destino. Isso feito no estgio de Salvar Resultado. Se o resultado for salvo num registrador,
a operao direta e feita num nico ciclo de clock. Mas se precisar salvar o resultado na memria,
uma escrita indireta dever ser realizada para salvar o contedo de ACC na memria.
t1:
t2:

MAR <- (IRendereco)


MBR <- ACC
Memria <- write

Para tal, inicialmente em t1 o endereo da varivel de memria que precisa ser salva passado para o
MAR. O contedo de ACC passado para o MBR no ciclo seguinte (t2), ao mesmo tempo em que a
CPU envia para a memria um sinal de escrita. Ao receber esse sinal, a memria traz o contedo de
MBR e o salva no endereo representado por MAR.

3.2.5

Salto condicional

Uma instruo muito comum executada pelos computadores so os saltos condicionais. Ela indica
que se uma determinada condio for satisfeita, a execuo no deve ser a da instruo seguinte, mas
a indicada pela instruo. Imagine uma instruo Salta se zero, com dois parmetros, X e Y. O X
seria a varivel a ser testada e o Y o endereo para onde a execuo deve saltar caso o valor de X seja
0.
Desta forma, as microoperaes seriam as seguinte:
// Busca indireta por X:
t1: MAR <- (IRenderecoX)
Memria <- read
t2:
MBR <- (Memria)
t3:
ACC <- (MBR)

39 / 73

Introduo a Arquitetura de Computadores


t4:

se ACC == 0, PC = (IRenderecoY)

Inicialmente, de t1 a t3, seria buscado o contedo de X na memria. No ltimo ciclo t4, o contedo
de ACC seria comparado com 0 e se forem iguais, o contedo de PC ser o endereo da varivel Y,
tambm presente em IR. Observe que, caso contrrio, nada precisa ser feito, o PC continuar como
antes e a prxima instruo depois da atual ser executada.

3.3

Tipos de Microoperaes

Como j foi possvel observar atravs dos exemplos apresentados, h quatro tipos bsicos de Microoperaes de uma Unidade de Controle. So eles:
Transferncia de dados entre registradores
Transferncia de dados de registrador para o exterior da CPU
Transferncia de dados do exterior da CPU para um registrador
Operao lgica e aritmtica
A transferncia de dados de um registrador para outro a mais simples das Microoperaes e geralmente feita num nico ciclo de clock. J a movimentao de dados de ou para o exterior da CPU
pode ser mais complexa. Para facilitar muitos computadores mapeiam todos dispositivos de Entrada e
Sada com se fossem memria. Ou seja, para a CPU, enviar um dado para um dispositivo seria como
escrever um dado na memria, bastando usar um endereo diferente. Isso facilita bastante a operao
da Unidade de Controle, mas pode limitar a quantidade de endereos de memria disponveis para os
programas. As operaes de transferncia de dados so complexas tambm porque levam um tempo
no conhecido para serem executadas. Se o dado estiver na memria Cache o acesso mais rpido, se
estiver na Memria Principal levar mais tempo, e se tiver num dispositivo externo, um Disco Rgido,
por exemplo, pode levar ainda mais.
As operaes lgica e aritmticas podem ser mais rpidas ou mais lentas dependendo de cada uma
delas. Operaes com nmeros de Ponto Flutuante tendem a levar mais tempo do que aquelas com
nmeros inteiros. J as operaes trigonomtricas so as mais lentas que o computador pode operar.

3.4

Decodificao

A execuo das Microoperaes sempre ordenada pela Unidade de Controle. Isso feito no estgio
de Decodificao, a partir da leitura da instruo presente em IR. O primeiro da decodificaro ler o
cdigo da instruo para conhecer seu tipo. Dependendo do tipo, a instruo quebrada numa quantidade especfica de Estgios e cada estgio no seu respectivo grupo de Microoperaes. Cada vez
uma que Microoperao se encerra, a Unidade de Controle checa qual ser a prxima e envia os sinais
para os devidos registradores, para ULA e dispositivos envolvidos, como memria ou dispositivos de
Entrada e Sada.
Dessa forma, podemos dizer que a Unidade de Controle possui duas funes principais, a execuo e
o sequenciamento das instrues. Nessa ltima funo a Unidade de Controle deve saber o exato momento que uma Microoperao concluiu para executar a prxima, e quando a ltima Microoperao
for executada, iniciar um novo Estgio, e quando o ltimo Estgio for concludo, executar a prxima
instruo do programa.
40 / 73

Introduo a Arquitetura de Computadores

3.5

Exemplo

Como exemplo, vamos visualizar como seria a execuo de um pequeno programa na forma de microoperaes. Para tal, considere um processador que executa suas instrues em cinco estgios de
execuo:
Busca de Instruo
Decodifica Instruo
Busca de Dados
Executa Instruo
Salva Resultados
Cada instruo do programa decomposta em microoperaes que so executadas, geralmente, uma
a cada ciclo de clock.
Sendo, assim, suponha que o programa a ser executado est na memria de acordo com a Tabela 3.1
[41] a seguir. Cada instruo fica armazenada em um endereo de memria, assim como as variveis
envolvidas.
Tabela 3.1: Exemplo de um programa de duas instrues armazenado na memria
Instruo ou Dado
A=B*C
B=A+2
15 // valor de A
2 // valor de B
4 // valor de C

Endereo
FF01
FF02
FF03
FF04
FF05

A seguir sero apresentadas as microoperaes executadas para a primeira instruo.

3.5.1

Busca de Instruo

Para que esse programa seja executado, necessrio que o registrador PC contenha o endereo FF01
para que a primeira instruo do nosso programa nessa buscada e executa. O incio de execuo de
um programa causado por uma ao do usurio (quando ele clica no cone de um programa, por
exemplo), pelo Sistema Operacional ou um por um outro programa.
Uma vez que o PC tenha o endereo FF01, na prxima instruo a ser buscada, a Unidade de Controle
ir executar as seguintes instrues:
t1:
t2:
t3:

MAR <- PC
Memria <- fetch;
MBR <- A = B * C
PC <- PC + 1
IR <- MBR
41 / 73

Introduo a Arquitetura de Computadores


Neste exemplo, no tempo t1, MAR recebeu o endereo contido em PC, ou seja, FF01. Nesse mesmo
instante, a Unidade de Controle envia o sinal fetch para memria, que por sua vez, passa o contedo
do endereo FF01 para o registrador MBR no instante t2 seguinte. Aproveitando o tempo, enquanto
o contedo da memria era trazido para o MBR, a Unidade de Controle incrementou o endereo de
PC para FF02. S no tempo t3 a instruo est pronta em MBR e ento copiada para IR para que
possa ser Decodificada na prxima microoperao.

3.5.2

Decodificao

Durante a decodificao no so executadas Microoperaes. A instruo que acabou de ser copiada


para IR analisada e a Unidade de Controle vai ento escolher que Microoperaes sero executadas
nas etapas seguintes.

3.5.3

Busca de Dados

Nas prximas etapas, ser necessrio buscar os dados necessrios para a execuo da instruo. Como
os dados envolvidos (B e C) esto na memria, e no em registradores, sero necessrias duas Buscas
Indiretas. A instruo na verdade nunca chega como sendo A = B * C. Ao invs disso, ela seria
armazenada como (FF03) = (FF04) * (FF05). Por questes didticas, utilizamos ainda as variveis
A, B e C.
Para buscar o contedo da varivel B, as seguintes Microoperaes so executadas.
Na etapa de Decodificao, a instr
t4:
t5:
t6:

MAR <- (FF04)


Memria <- read
MBR <- 2
ACC <- MBR

Aqui, o endereo FF04 passado para o MAR para que seja buscado na memria no tempo t4, em
seguida enviado um sinal de leitura para a memria. Ao receber o sinal de leitura, a memria
busca o contedo do endereo FF04 e o copia para dentro da CPU, no registrador MBR no instante
t5. Finalmente, no tempo t6, o contedo de MBR (valor 2) copiado para o registrador acumulador
(ACC).
Nota
Note que usamos sempre parntesis para indicar que se trata de um endereo, e sem os
parntesis quando se trata de um dado.

O prximo passo seria buscar o contedo da varivel C de forma anloga a utilizada para buscar B.
t7:
t8:
t9:

MAR <- (FF05)


Memria <- read
MBR <- 4
R1 <- MBR

Perceba que na ltima Microoperao o contedo de C foi copiado para R1, para no sobreescrever e
perder o contedo da varivel B que foi armazenado em ACC.
42 / 73

Introduo a Arquitetura de Computadores

3.5.4

Execuo

No prximo passo, a instruo precisa ser executada. Isso feito em um nico passo no tempo t10,
onde ACC, que agora mantm o contedo da varivel B multiplicado por R1, que possui o contedo
da varivel C.
t10:

ACC <- ACC * R1

3.5.5

Salva Resultados

Finalmente, o resultado da operao precisa ser salvo na varivel A. Para tal, o endereo de A (FF03)
copiado para o registrador de endereo (MAR) no instante t11. No instante t12 seguinte, o resultado da
operao aritmtica armazenado em ACC copiado para o registrador de dados (MBR). Neste mesmo
instante, a Unidade de Controle envia o sinal de escrita para a memria, que localiza o endereo FF03
e escreve nele o resultado da operao aritmtica que foi salvo em ACC, ou seja, oito (8).
t11:
t12:

MAR <- (FF03)


MBR <- ACC
Memria <- write

3.5.6

Instruo completa

Podemos agora visualizar a seguir como a primeira instruo do programa (A = B * C) foi executada
em microoperaes.
// Busca de Instruo
t1:
MAR <- PC
Memria <- fetch;
t2:
MBR <- A = B * C
PC <- PC + 1
t3:
IR <- MBR
//Busca de Dados (B)
t4:
MAR <- (FF04)
Memria <- read
t5:
MBR <- 2
t6:
ACC <- MBR
//Busca de Dados (C)
t7:
MAR <- (FF05)
Memria <- read
t8:
MBR <- 4
t9:
R1 <- MBR
//Execuo
t10:
ACC <- ACC * R1
//Salva resultados
t11:
MAR <- (FF03)
t12:
MBR <- ACC
Memria <- write
43 / 73

Introduo a Arquitetura de Computadores


A primeira instruo foi finalizada em 12 passos. Se cada passo for 1 ciclo de clock, ento temos 12
ciclos do relgio para concluir essa instruo. A segunda instruo do programa (B = A + 2) muito
semelhante, e tambm precisar de 12 passos para ser executada. Esse um timo exerccio para
voc praticar. Ao final a memria estar diferente de como iniciou, e dever estar com os contedos
apresentados na Tabela 3.2 [44].
Tabela 3.2: Memria aps execuo do programa.
Instruo ou Dado
A=B*C
B=A+2
8 // valor de A
10 // valor de B
4 // valor de C

Endereo
FF01
FF02
FF03
FF04
FF05

3.6

Recapitulando

Neste captulo vimos que a Unidade de Controle responsvel por controlar como e quando as instrues dos programas so executadas. Elas fazem isso quebrando as intruses em estgios e os estgios
em Microoperaes. Desta forma, as Microoperaes tornam-se as menores unidades de execuo do
computador. Como so muito simples, as Microoperaes so mais fceis de serem implementadas
pelo hardware e o projeto de uma CPU pode ser reutilizado em diversas ocasies.
Feedback sobre o captulo
Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Para compreender melhor como feedbacks funcionam consulte o guia do curso.

44 / 73

Introduo a Arquitetura de Computadores

Captulo 4
Conjunto de Instrues
O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:
Listar as principais caractersticas de um conjunto de instruo
Definir e elencar os prs e contras das arquiteturas RISC e CISC
Neste captulo vamos estudar o que o Conjunto de Instrues e sua relevncia no projeto de um
processador. Sua caractersticas repercutem em todas principais caractersticas do processador, se
tornando a principal e primeira deciso de projeto a ser tomada.

4.1

Introduo

O termo Conjunto de Instrues vem do ingls Instruction Set Architecture (ISA). ISA a interface
entre os softwares que sero executados pelo processador e o prprio processador. Ele define todas
instrues de mquina sero interpretadas pela Unidade de Controle e executadas. Podemos ento
definir Conjunto de Instrues como sendo a coleo completa de todas instrues reconhecidas e
executadas pela CPU. Esse Conjunto de instrues, tambm chamado de Cdigo de Mquina, o
ponto inicial para o projeto de uma arquitetura e essencial na definio de qualidade do sistema
como um todo.

4.2
4.2.1

O projeto de um Conjunto de Instrues


Arquitetura

Um Conjunto de Instrues pode ser classificado como uma das quatro arquiteturas:
Arquitetura de Pilha
Baseada em Acumulador
Registrador-Registrador ou Load/Store
Registrador-Memria
45 / 73

Introduo a Arquitetura de Computadores


4.2.1.1

Arquitetura de Pilha

A Arquitetura de Pilha1 a mais simples possvel. Como pode ser observado na Figura 4.1 [46],
os dados necessrios para a execuo das operaes pela ULA so provenientes de registradores
especiais organizados na forma de uma pilha. Note que toda operao realizada entre o registrador
que indica o Topo de Pilha (apontado pelo registrador TOS) e o registrador seguinte. Esse conjunto
de instrues muito simples porque a Unidade de Controle nunca precisa decodificar a instruo
para saber quais registradores sero utilizados nas operaes lgicas e aritmticas. Sempre ser o
topo da pilha e o registrador seguinte.
Processador

Memria

...

Registrador TOS
(Topo da pilha)
Prximo Registrador

...
ULA
...

Figura 4.1: ISA baseado em Pilha


4.2.1.2

Arquitetura baseada em Acumulador

J na arquitetura baseada em Acumulador (Figura 4.2 [46]) uma complexidade adicionada. Um


dos dados vem sempre do registrador Acumulador, mas o outro mais livre. Na figura esse segundo
dado vem da memria, mas poderia vir de um outro registrador designado na instruo. Neste caso, a
instruo a ser decodificada pela Unidade de Controle precisar trazer de onde vem o segundo dado a
ser utilizado, j que o primeiro sempre proveniente do Acumulador.
Processador

Acumulador
(Registrador)

Memria

...

ULA
...

Figura 4.2: ISA baseado em Acumulador


4.2.1.3

Arquitetura Load/Store

Na sequncia, a terceira arquitetura mais complexa chamada Arquitetura Load/Store ou Arquitetura


Registrador-Registrador (Figura 4.3 [47]). Nesta arquitetura, todas operaes lgicas e aritmticas
executadas pela ULA so provenientes de dois registradores a serem determinados pela instruo. A
nica forma de acessar dados da memria atravs de duas instrues especiais: LOAD, para ler da
memria e STORE para escrever o contedo de um registrador na memria. Assim, toda instruo
a ser decodificada pela CPU dever indicar o endereo de dois registradores que sero utilizados
1O

funcionamento da estrutura Pilha aprofundado na disciplina Estrutura de Dados.

46 / 73

Introduo a Arquitetura de Computadores


na operao lgica ou aritmtica, ou um endereo de memria se a instruo for um LOAD ou um
STORE.
Processador

...
Memria

...
...
ULA
...

Figura 4.3: ISA Registrador-Registrador


4.2.1.4

Arquitetura Registrador-Memria

Por ltimo, a mais complexa arquitetura a Registrador-Memria (Figura 4.4 [47]). Esta arquitetura
permite que a ULA execute operaes lgicas e aritmticas envolvendo ao mesmo tempo um registrador indicado pela instruo e um contedo proveniente da memria. Esse tipo de instruo deve
ento trazer, em seu contedo, o cdigo do registrador a ser utilizado e o endereo de memria do
segundo dado.
Processador

...
Memria

...
...
ULA
...

Figura 4.4: ISA Registrador-Memria


muito importante aqui observar que arquiteturas mais simples, como a de Pilha por exemplo, fazem
com as instrues a serem decodificadas pela Unidade de Controle sejam muito simples. Com instrues simples, a prpria Unidade de Controle ser simples, pequena e barata de produzir. Por outro
lado, instrues simples resultam em operaes limitadas. Assim, uma tarefa bsica, como somar
dois nmeros, em uma Arquitetura de Pilha vai necessitar que pelo menos 4 operaes sejam realizadas: colocar na pilha o primeiro dado, colocar na pilha o segundo dado, somar os dois elementos
da pilha, salvar o resultado na pilha. Essa mesma operao numa arquitetura Registrador-Memria
seria executada numa instruo nica, indicando o registrador utilizado para ser o primeiro dado, o
endereo de memria do segundo dado e o registrador que vai guardar o resultado.

4.3

Aspectos do Projeto do Conjunto de Instrues

A escolha da arquitetura uma questo importantssima de projeto e geralmente baseia-se na relao


entre o desempenho que se quer atingir e o preo do processador ao final.
Aps definida a arquitetura do Conjunto de Instrues, o projetista deve cuidar do projeto das instrues propriamente ditas. Neste projeto cinco pontos devem ser contemplados:
47 / 73

Introduo a Arquitetura de Computadores


Modelo de Memria
Tipos de Dados
Formato das Instrues
Tipo de Instrues
Modo de Endereamento

4.3.1

Modelo de Memria

O modelo de memria define para cada instruo de onde vem e para onde vo os dados. Os dados
podem vir da memria principal, ou memria Cache, de um registrador, ou de um dispositivo de
Entrada e Sada. Alm disso, o projeto do ISA deve definir alguns pontos cruciais.
4.3.1.1

Memria alinhada x no alinhada

As memrias geralmente so organizadas em bytes. Isso significa que o byte a menor unidade de
acesso memria, e assim, cada endereo de memria acessa um byte. A Tabela 4.1 [48] apresenta
um exemplo de organizao de memria por bytes. Neste caso, o endereo 0 diz respeito ao Byte 0 da
primeira linha. J o endereo 1 ao Byte 1, o endereo 2 ao Byte 2 e o endereo 3 ao Byte 3. Enquanto
que os endereos de 4 a 7 j dizem respeitos aos bytes da segunda linha.
Tabela 4.1: Exemplo de uma memria organizada por bytes
Endereo
0
4
8
12
16
...

Byte 0

Byte 1

13

23

Byte 2

Byte 3

A memria organizada desta forma, mas h diferentes tipos de dados. Uma varivel inteira, por
exemplo, pode ser declarada como um byte, ou um inteiro curto de 2 bytes, um inteiro de 4 bytes, ou
at mesmo um inteiro longo de 8 bytes. Se o conjunto de instrues fixar que a memria ser apenas
acessada de forma alinhada, significa que um dado no pode ultrapassar uma linha. Assim, os dados
de 4 bytes devero obrigatoriamente ser armazenados nos endereos 0, 4, 8, 12, 16 etc.
Esta deciso visa facilitar e acelerar o trabalho do processador ao acessar a memria. Cada vez
que a memria precisar ser acessada para buscar um nmero de 4 bytes, o processador deve apenas
verificar se o endereo um mltiplo de 4. Se ele no for, o acesso negado e o programa encerrado.
A desvantagem desta abordagem que muitas reas podem ficar desperdiadas. Por exemplo, se um
dado de 2 bytes armazenado no endereo 4 (como mostra a Tabela 4.1 [48]), os Bytes 0 e 1 so
utilizados, mas os Bytes 2 e ficam disponveis. Mesmo assim, se um dado de 4 bytes precisar ser
armazenado, ele no poder ser feito em uma posio livre mltipla de 4 (0, 8, 12, 6 etc.), como por
48 / 73

Introduo a Arquitetura de Computadores


exemplo, salvando os dois primeiros bytes nos endereos 6 e 7 (segunda linha) e os outros 2 bytes nos
endereos 8 e 9 (terceira linha).
J se o conjunto de instrues permitir o acesso no alinhado memria, todas essas restries se
acabam e os dados podem ser acessados em quaisquer posies. O uso da memria termina tendo um
maior aproveitamento, j que menos reas livres existiro. O problema agora com o desempenho.
Todo processador acessa a memria atravs de um barramento. Para otimizar o acesso, os barramentos
geralmente so largos o suficiente para trazer uma linha inteira de memria, ou mais. Com a memria
alinhada fica mais fcil, porque para buscar um dado a CPU s precisa saber em que linha ele est,
da s traz-la para a CPU.
J na memria no alinhada, quando um dado buscado a CPU precisa saber em que linha ele est,
em que posio exatamente comea, se ele invade a prxima linha, e onde termina. Esta operao
mais uma responsabilidade para a CPU e torna o processo de leitura mais lento.
Processadores da arquitetura Intel, por exemplo, utilizam memrias alinhadas, porque percebeu-se
que o ganho com o desperdcio de memria no compensa o tempo gasto buscando dados em linhas
diferentes.
4.3.1.2

Memria para dados e instrues

Outra deciso importante com relao ao acesso memria se a faixa de endereos da memria
de dados ser a mesma da memria de instrues. Desde a criao das Arquiteturas Harvard (em
substituio s de Von Neumann) os dados passaram a serem armazenados em reas de memria
separadas das instrues. Isso ajuda principalmente no Pipeline, porque a CPU pode, no mesmo
ciclo, buscar uma instruo e buscar os dados de uma outra instruo.
Na definio do Conjunto de Instrues o projetista deve decidir como sero os endereos de dessas
reas de memria. Por exemplo, se uma memria tiver 2 milhes de bytes (2MB), como cada byte
possui um endereo, ela ter endereos de 0 a 1.999.999. Digamos que a primeira parte de memria
seja para os dados e a segunda para as instrues. Neste caso, haver duas opes. A memria pode
ser organizada como uma faixa nica de endereos, ento os endereos de 0 a 999.999 sero utilizados
para armazenar os dados, e os endereos de 1.000.000 a 1.999.999 armazenaro as instrues.
O problema desta abordagem, seguindo o mesmo exemplo, que neste sistema s poder haver 1
milho de dados 1 milho de instrues. No ser possvel o armazenamento de nenhuma instruo a
mais do que isso, mesmo que a rea de dados esteja com posies disponveis.
Como soluo, o Conjunto de Instrues pode definir instrues especiais para buscar dados e instrues para buscar instrues. Quando uma instruo de busca for decodificada a Unidade de Controle
saber que se trata de um dado ou um endereo e vai buscar a informao exatamente na memria especificada. No exemplo dado, as instrues ficariam armazenadas na memria de instruo
nos endereos de entre 0 e 1.999.999, e os dados na memria de dados tambm no endereo de 0
e 1.999.999. Mas observe que a memria do exemplo s possui 2 milhes de bytes (2MB), mesmo
assim, neste exemplo, o sistema seria capaz de enderear 4 milhes de bytes (4MB). Isso a tornaria
pronta para um aumento futuro do espao de memria.
4.3.1.3

Ordem dos bytes

No incio do desenvolvimento dos computadores, os engenheiros projetistas tiveram que tomar uma
deciso simples, mas muito importante. Quando temos dados que ocupam mais de um byte devemos
comear salvando os bytes mais significativos, ou os menos significativos? Esta deciso no afeta em
nada o desempenho ou o custo dos sistemas. simplesmente uma deciso que precisa ser tomada.
49 / 73

Introduo a Arquitetura de Computadores


Aqueles projetos que adotaram a abordagem de salvar os dados a partir dos bytes mais significativos foram chamados de Big Endian, enquanto que aqueles que adotaram iniciar pelo byte menos
significativo foram chamados de Little Endian.
Imagine que uma instruo pede para que a palavra UFPB seja salva no endereo 8 da memria. Uma
palavra pode ser vista como um vetor de caracteres, onde cada caracter ocupa 1 byte. Na Tabela 4.2
[50] apresentada a abordagem Big Endian. Neste caso, o byte mais significativo (o mais a esquerda)
o que representa a letra U. Desta forma, ele armazenado no Byte mais a esquerda, seguido pela
letra F, a letra P e a letra B.
Tabela 4.2: Exemplo de uma memria Big Endian
Endereo
0
4
8
12
16
...

Byte 0

Byte 1

Byte 2

Byte 3

J na abordagem Little Endian mostrada na Tabela 4.3 [50] a mesma palavra armazenada iniciando
pelo byte menos significativo, da direita para a esquerda. Apesar de parecer estranho, note que o que
muda a localizao dos Bytes 0, 1, 2 e 3. Comparando as abordagens Big Endian e Little Endian no
exemplo, em ambos a letra U armazenada no Byte 0, a F no Byte 1, a P no Byte 2 e a B no Byte 3.
A diferena que no Little Endian os bytes so contados da direita para a esquerda.
Tabela 4.3: Exemplo de uma memria Little Endian
Endereo
0
4
8
12
16
...

Byte 3

Byte 2

Byte 1

Byte 0

Importante
O importante observar que se um computador Little Endian precisar trocar dados com
um computador Big Endian, eles precisaro antes ser convertidos para evitar problemas. A
palavra UFPB salva num computador Big Endian, por exemplo, se for transmitida para um
Little Endian, deve antes ser convertida para BPFU para evitar incompatibilidade.

50 / 73

Introduo a Arquitetura de Computadores

Nota
Computadores Intel, AMD e outras arquiteturas mais populares utilizam o modelo Little Endian, enquanto que a arquitetura da Internet (TCP/IP) e mquinas IBM adotam o Big Endian.

4.3.1.4

Acesso aos registradores

A forma de acesso aos registradores tambm essencial para a definio das instrues de mquina.
Cada endereo referenciado atravs de um cdigo, como se fosse um endereo, assim como nas
memrias. O Conjunto de Instrues deve definir quantos endereos de registradores sero possveis
e o tamanho deles, e as polticas de acesso. Essas decises so de extrema importncia para o projeto
do Conjunto de Instrues e do processador como um todo.

4.3.2

Tipos de Dados

Quando escrevemos programas em linguagens de programao somos habituados a utilizar diversos


tipos de dados, como inteiros, caracteres, pontos flutuantes e endereos. O que muitos esquecem,
ou no sabem, esses tipos so definidos pelo processador, no momento do projeto do Conjunto de
Instrues. Os tipos mais comuns de dados so:
Inteiros
Decimais
Pontos flutuantes
Caracteres
Dados lgicos
Cada um destes dados pode ainda possuir diversas variantes, como por exemplo:
Inteiros e Pontos flutuantes: com e sem sinal, curto, mdio ou grande
Caracteres: ASCII, Unicode ou outras
Dados lgicos: booleanos ou mapas de bits
O Conjunto de Instrues de mquina pode adotar todos os tipos e variedades, ou um subconjunto
delas. Se um processador no utilizar um tipo de dado, o compilador dever oferecer uma alternativa
ao programador e, no momento de compilao, fazer a relao entre o tipo utilizado na linguagem de
programao e o tipo existente na linguagem de mquina.
Sempre que for determinado que um tipo de dado ser utilizado pelo processador, tambm necessrio que se criem instrues para manipular esses dados. Por exemplo, se for definido que a arquitetura
vai suportar nmeros de ponto flutuante de 32 bits, ser necessrio tambm criar instrues para executar operaes aritmticas com esses nmeros, criar registradores para armazena-los e barramentos
para transporta-los. uma deciso que impacto em todo o projeto do processador.

51 / 73

Introduo a Arquitetura de Computadores

4.3.3

Formato das Instrues

Em seguida, preciso tambm definir quais sero os formatos de instruo aceitos pela Unidade de
Controle. No geral, toda instruo de mquina deve ter pelo menos o cdigo da operao (ou Opcode)
e os endereos para os parmetros necessrios, que podem ser registradores, posies de memria ou
endereos de dispositivos de Entrada e Sada.
Nesta definio de formatos necessrio que se defina quantos endereos cada instruo poder trazer.
Para ilustrar, suponha que na linguagem de alto nvel a operao A=B+C seja escrita e precise ser
compilada. Se o Conjunto de Instrues adotar instrues com 3 endereos, fica simples. O cdigo
da operao de soma ADD e com 3 endereos ela ficaria algo semelhante a:
ADD A, B, C

Onde A, B e C so endereos que podem ser de memria, registrador ou dispositivo de Entrada e


Sada. Isso no vem ao caso neste momento.
Mas se o Conjunto de Instrues suportar apenas 2 endereos, ele pode adotar que o resultado sempre
ser salvo no endereo do primeiro parmetro, sendo assim, a instruo teria que ser compilada da
seguinte forma:
MOV B, R
ADD R, C
MOV R, A

A instruo MOV teve que ser adicionada para copiar o contedo de B para R (um registrador qualquer).
Em seguida a instruo ADD R, C executa, que soma o contedo de R com C e salva o resultado
em R. No final, a instruo MOV chamada novamente para salvar o resultado de R em A e finalizar a
instruo. Note que todas instrues neste exemplo utilizaram no mximo 2 endereos.
J se a arquitetura utilizar instrues de apenas 1 endereo, ser necessrio utilizar uma arquitetura
baseada em Acumulador e toda operao ser entre o Acumulador e um endereo, e o resultado ser
tambm salvo no acumulador. Assim, a instruo seria compilada como:
ZER
ADD
ADD
STO

ACC
B
C
A

Aqui, quatro instrues foram necessrias. A primeira zeta o contedo do Acumulador (ACC). A
segunda soma o Acumulador com o contedo apontado pelo endereo B e salva o resultado no Acumulador. A terceira soma o contedo do Acumulador com C e salva no Acumulador e, por fim, a
ltima instruo transfere o resultado do Acumulador para o endereo de A. Note aqui tambm que
todas instrues no passaram de um endereo para os parmetros.
A ltima opo seria no utilizar endereos em suas instrues principais. Isso possvel se for
utilizada uma Arquitetura Baseada em Pilha. Neste caso, duas instrues so adicionadas: POP e
PUSH. A instruo PUSH adiciona um valor ao topo da pilha, enquanto que POP remove um elemento
do topo da pilha e adiciona seu contedo em um endereo. Dessa forma, a instruo seria compilada
assim:
POP B
POP C
ADD
PUSH A
52 / 73

Introduo a Arquitetura de Computadores


Neste caso a primeira instruo colocou o contedo do endereo de B na pilha, a segunda instruo
fez o mesmo com C. A terceira instruo a nica que no precisa de endereo. Ela faz a soma
com os dois ltimos valores adicionados pilha (B e C, no caso) e salva o resultado de volta na
pilha. A instruo PUSH vai remover o ltimo valor da pilha (resultado da soma) e salvar na varivel
endereada por A.
possvel perceber que quanto menos endereos, mais simples so as instrues. Isso bom porque
a Unidade de Controle no precisar de muito processamento para execut-las. Por outro lado, o
programa compilado se torna maior e termina consumindo mais ciclos. A deciso se as instrues
sero mais simples ou mais complexas muito importantes e vamos tratar dela mais a frente neste
captulo.
Geralmente as arquiteturas adotam abordagem mistas. Por exemplo, aquelas que suportam instrues
com 2 endereos geralmente tambm suportam instrues com 1 endereo e com nenhum. Isso tambm bastante interessante, porque torna o processador bastante verstil. Por outro lado, aumenta a
complexidade da Unidade de Controle. Cada instruo que for executada precisa antes ser classificada
e depois despachada para uma unidade de execuo especfica.

4.3.4

Tipos de Instrues

Alm de definir como sero as instrues, necessrio tambm definir que tipos de instrues sero
executadas pelo processador. Os principais tipos de instruo so:
Movimentao de dados
Como os dados sero transferidos interna e externamente ao processador.
Aritmticas
Que operaes sero realizadas, como exponenciais, trigonomtricas, clculos com pontos flutuantes, com e sem sinais, com nmeros curtos e longos etc.
Lgicas
AND, OR, NOT e XOR.
Converso
De caracteres para nmeros, de inteiros para reais, decimal para binrio etc.
Entrada e Sada
Haver instrues especficas ou haver um controlador especfico, como um DMA (Direct
Memory Access).
Controle
Instrues para controlar os dispositivos diversos do computador.
Transferncia de Controle
Como a execuo deixar um programa para passar para outro, para interromper um programa,
chamar subprogramas, instrues de desvio e de interrupo.

4.3.5

Modos de Endereamento

Por ltimo, no projeto de um Conjunto de Instrues necessrio determinar de que forma os endereos das instrues sero acessados. Ou seja, o que cada endereo de parmetros de uma instruo
podem representar.
53 / 73

Introduo a Arquitetura de Computadores


Os principais modos de endereamento so:
Imediato
Direto e Direto por Registrador
Indireto e Indireto por Registrador
Indexado e Indexado por Registrador
4.3.5.1

Endereamento Imediato

O endereamento Imediato o mais simples possvel e indica que o endereo na verdade uma
constante e pode ser utilizada imediatamente.
Por exemplo, na instruo a seguir:
ADD A, 5, 7

Significa que a varivel A deve receber o contedo da soma de 5 com 7. O endereos 5 e 7 so


considerados Imediatos, j que no representam um endereo, e sim uma constante.
4.3.5.2

Endereamento Direto

No endereamento Direto o endereo representa um endereo de memria, como mostrado na instruo a seguir.
ADD A, B, 7

Neste exemplo, o valor 7 continua sendo endereamento de forma imediata, mas os endereos de A e
B so endereos de memria e por isso, so chamados de Endereos Diretos.
4.3.5.3

Endereamento Direto por Registrador

No endereamento Direto por Registrador os endereos representam registradores, e poderamos ver


o exemplo citado da seguinte forma:
ADD R1, R2, C

Neste exemplo R1 e R2 so cdigos para registradores e o endereamento chamado Direto por


Registrador, enquanto que C acessado atravs de Endereamento Direto.
4.3.5.4

Endereamento Indireto

J o endereamento Indireto aplicado quando necessrio que um acesso Direto seja feito antes
para buscar o endereo alvo e s ento o acesso feito. O exemplo a seguir mostra um caso onde este
endereamento utilizado.
ADD A, (B), 7

Neste exemplo o endereo B entre parntesis representa o acesso indireto. Isso indica que primeiramente o endereo de B deve ser acessado, mas l no est o contedo a ser somado com 7, mas o
endereo de memria onde o valor dever ser encontrado. Este tipo de endereamento muito utilizado nas linguagens de programao para representar variveis dinmicas atravs de apontadores (ou
ponteiros).
54 / 73

Introduo a Arquitetura de Computadores


4.3.5.5

Endereamento Indireto por Registrador

O endereamento Indireto tambm pode ser feito por Registrador. No exemplo a seguir o valor sete
no somado ao contedo de R1, mas ao dado que est na memria no endereo apontado por R1.
ADD A, (R1), 7

4.3.5.6

Endereamento Indexado

Outro endereamento possvel o Indexado. Neste modo de endereamento necessrio indicar


o endereo do dado e um valor chamado Deslocamento. No exemplo a seguir, o endereamento
Indexado aplicado para B[5].
ADD A, B[5], 7

Isso indica que o dado a ser utilizado est no endereo B de memria adicionado de 5 posies. Ou
seja, se a varivel B estiver no endereo 1002 de memria, o valor B[5] estar no endereo 1007. O
endereo de B chamado de Endereo Base e o valor 5 chamado de Deslocamento. Para realizar um
endereamento Indexado necessrio um somados que no seja a ULA para agilizar o processamento
e realizar cada deslocamento. Este tipo de endereamento utilizado quando so utilizadas instrues
de acesso a vetores.
4.3.5.7

Endereamento Indexado por Registrador

H tambm a possibilidade de realizar o endereamento Indexado por Registrador, que utiliza um


registrador ao invs da memria para armazenar o Endereo Base, como exibido a seguir:
ADD A, R1[5], 7

4.4

RISC x CISC

O projeto do Conjunto de Instrues inicia com a escolha de uma entre duas abordagens, a abordagem
RISC e a CISC. O termo RISC a abreviao de Reduced Instruction Set Computer, ou Computador de Conjunto de Instrues Reduzido e CISC vem de Complex Instruction Set Computer, ou
Computador de Conjunto de Instrues Complexo. Um computador RISC parte do pressuposto de
que um conjunto simples de instrues vai resultar numa Unidade de Controle simples, barata e rpida. J os computadores CISC visam criar arquiteturas complexas o bastante a ponto de facilitar
a construo dos compiladores, assim, programas complexos so compilados em programas de mquina mais curtos. Com programas mais curtos, os computadores CISC precisariam acessar menos
a memria para buscar instrues e seriam mais rpidos.
A Tabela 4.4 [56] resume as principais caractersticas dos computadores RISC em comparao com os
CISC. Os processadores RISC geralmente adotam arquiteturas mais simples e que acessam menos a
memria, em favor do acesso aos registradores. A arquitetura Registrador-Registrador mais adotada,
enquanto que os computadores CISC utilizam arquiteturas Registrador-Memria.

55 / 73

Introduo a Arquitetura de Computadores


Tabela 4.4: Arquiteturas RISC x CISC
Caractersticas
Arquitetura
Tipos de Dados
Formato das Instrues
Modo de Endereamento
Estgios de Pipeline
Acesso aos dados

RISC
Registrador-Registrador
Pouca variedade
Instrues poucos
endereos
Pouca variedade
Entre 4 e 10
Via registradores

CISC
Registrador-Memria
Muito variada
Instrues com muitos
endereos
Muita variedade
Entre 20 e 30
Via memria

Como as arquiteturas RISC visam Unidades de Controle mais simples, rpidas e baratas, elas geralmente optam por instrues mais simples possvel, com pouca variedade e com poucos endereos.
A pouca variedade dos tipos de instruo e dos modos de endereamento, alm de demandar uma
Unidade de Controle mais simples, tambm traz outro importante benefcio, que a previsibilidade.
Como as intruses variam pouco de uma para outra, mais fcil para a Unidade de Controle prever
quantos ciclos sero necessrios para executa-las. Esta previsibilidade traz benefcios diretos para o
ganho de desempenho com o Pipeline. Ao saber quantos ciclos sero necessrios para executar um
estgio de uma instruo, a Unidade de Controle saber exatamente quando ser possvel iniciar o
estgio de uma prxima instruo.
J as arquiteturas CISC investem em Unidades de Controle poderosas e capazes de executar tarefas
complexas como a Execuo Fora de Ordem e a Execuo Superescalar. Na execuo Fora de Ordem,
a Unidade de Controle analisa uma sequncia de instrues ao mesmo tempo. Muitas vezes h dependncias entre uma instruo e a seguinte, impossibilitando que elas sejam executadas em Pipeline.
Assim, a Unidade de Controle busca outras instrues para serem executadas que no so as prximas
da sequncia e que no sejam dependentes das instrues atualmente executadas. Isso faz com que
um programa no seja executado na mesma ordem em que foi compilado. A Execuo Superescalar
a organizao do processador em diversas unidades de execuo, como Unidades de Pontos Flutuante
e Unidades de Inteiros. Essas unidades trabalham simultaneamente. Enquanto uma instruo executada por uma das unidades de inteiros, outra pode ser executada por uma das unidades de Pontos
Flutuantes. Com a execuo Fora de Ordem junto com a Superescalar, instrues que no esto na
sequncia definida podem ser executadas para evitar que as unidades de execuo fiquem ociosas.
Nota
importante ressaltar que a execuo fora de ordem no afeta o resultado da aplicao pois
foram projetadas para respeitar as dependncias entre os resultados das operaes.

Estas caractersticas de complexidade tornam os estgios de Pipeline dos processadores CISC mais
longos, em torno de 20 a 30 estgios. Isto porque estas abordagens de acelerao de execuo devem
ser adicionadas no processo de execuo. J os processadores RISC trabalham com estgios mais
curtos, em torno de 4 a 10 estgios.
Os processadores CISC tambm utilizam mais memria principal e Cache, enquanto que os processadores RISC utilizam mais registradores. Isso porque os processadores CISC trabalham com um
maior volume de instrues e dados simultaneamente. Esses dados no poderiam ser armazenados
em registradores, devido sua elevada quantidade e so, geralmente, armazenados em memria Cache. Enquanto que os processadores RISC trabalham com menos instrues e dados por vez, o que
possibilita a utilizao predominante de registradores.
56 / 73

Introduo a Arquitetura de Computadores

4.4.1

Afinal, qual a melhor abordagem?

Sempre que este assunto apresentado aos alunos, surge a pergunta crucial sobre qual a melhor
abordagem, a RISC ou a CISC? Esta uma pergunta difcil e sem resposta definitiva. A melhor
resposta que acho de que depende do uso que se quer fazer do processador.
Processadores RISC geralmente resultam em projetos menores, mais baratos e que consumem menos
energia. Isso torna-os muito interessante para dispositivos mveis e computadores portteis mais simples. J os processadores CISC trabalham com clock muito elevado, so mais caros e mais poderosos
no que diz respeito a desempenho. Entretanto, eles so maiores e consomem mais energia, o que os
torna mais indicados para computadores de mesa e notebooks mais poderosos, alm de servidores e
computadores profissionais.
Os processadores CISC iniciaram com processadores mais simples e depois foram incorporando mais
funcionalidades. Os fabricantes, como a Intel e a AMD, precisavam sempre criar novos projetos
mas mantendo a compatibilidade com as geraes anteriores. Ou seja, o Conjunto de Instrues
executado pelo 486 precisa tambm ser executado pelo Pentium para os programas continuassem
compatveis. O Pentium IV precisou se manter compatvel ao Pentium e o Duo Core compatvel
com o Pentium IV. Isso tornou o projeto dos processadores da Intel e AMD muito complexos, mas no
pouco eficientes. Os computadores lderes mundiais em competies de desempenho computacional
utilizam processadores CISC.
J o foco dos processadores RISC est na simplicidade e previsibilidade. Alm do benefcio da
previsibilidade do tempo de execuo ao Pipeline, ele tambm muito interessante para aplicaes
industriais. Algumas dessas aplicaes so chamadas de Aplicaes de Tempo Real. Essas aplicaes
possuem como seu requisito principal o tempo para realizar as tarefas. Assim, o Sistema Operacional
precisa saber com quantos milissegundos um programa ser executado. Isso s possvel com processadores RISC, com poucos estgios de Pipeline, poucos tipos de instruo, execuo em ordem
etc. Mesmo que os processadores RISC sejam mais lentos do que os CISC, eles so mais utilizados
nessas aplicaes crticas e de tempo real, como aplicaes industriais, de automao e robtica.

4.5

Recapitulando

Este captulo apresentou uma etapa de extrema importncia no projeto de um processador, que a
definio do Conjunto de Instrues. O Conjunto de Instrues define no apenas como os programas
sero compilados, mas tambm caractersticas crticas e de mercado, como tamanho, consumo de
energia e preo.
Feedback sobre o captulo
Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Para compreender melhor como feedbacks funcionam consulte o guia do curso.

57 / 73

Introduo a Arquitetura de Computadores

Captulo 5
Sistema de Memria
O BJETIVOS DO CAPTULO
Ao final deste captulo voc dever ser capaz de:
Conhecer o Sistema de Memria e seus componentes;
Descrever as principais caractersticas das tecnologias utilizadas para memrias primrias e secundrias;
Apresentar conceitos detalhados sobre as Memrias Cache e seu funcionamento;
Sistema de Memria uma das principais partes do computador, juntamente com o processador. Todos programas e seus dados so mantidos no Sistema de Memria e ele responsvel por entregar
o mais rapidamente para o processador quando solicitado. No uma tarefa simples porque as memrias tendem a ser muito mais lentas do que o processador e sua tecnologia no tem avanado to
rapidamente quanto a dos processadores. Neste captulo vamos entender um pouco mais sobre esse
sistema e como ele apoia o trabalho dos processadores em busca de sistemas cada vez mais eficientes.

5.1

Introduo

Em todo sistema computacional, a memria componente essencial e de extrema relevncia para


o bom funcionamento do computador. Com o passar dos anos, as memrias evoluram bastante e
so formadas por vrios componentes numa chamada Hierarquia de Memria. Na Figura 5.1 [59]
apresentada como o ela organizada. As memrias de mais velozes possuem custo por bit maior,
devido s suas tecnologias, mais avanadas e mais complexas para fabricao

58 / 73

Introduo a Arquitetura de Computadores

Registradores

Custo Alto
Capacidade Baixa
Velocidade Alta

Memria
Cache
Memria
RAM

Memria
Secundria

Custo Baixo
Capacidade Alta
Velocidade Baixa

Figura 5.1: Hierarquia de Memria


As tecnologias mais avanadas at o momento so as chamadas SRAM (Static Random-Access Memory). Elas so mais utilizadas em registradores e memrias Cache. Por serem mais caras, elas
esto presentes nos computadores em quantidades menores, para no encarecer demais o projeto. J
a memria principal fabricada utilizando tecnologia DRAM (Static Random-Access Memory). Por
serem de tecnologia menos sofisticada, so mais lentas, mas mais baratas do que as SRAM. Por isso
elas so montadas em maior quantidade do que as memrias Cache e os registradores.
J as Memrias Secundrias so formadas por tecnologias de memrias Magnticas e pticas. Suas
principais caractersticas so o baixo preo por bit, baixo preo e, por consequncia, alta capacidade. Alm disso, as Memrias Secundrias so memrias no volteis, ou seja, seus contedos so
preservados mesmo com a interrupo da fonte de energia. Devido ao avano da complexidade das
memrias dos computadores, elas so organizadas formando o chamado Sistema de Memria.

5.2

Princpio da Localidade

Muitos dizem que o Sistema de Memria se inspirou no sistema de memria do corpo humano, onde
lembranas mais recentes so armazenadas em memrias menores de curta durao e lembranas
mais antigas e pertinentes so armazenadas em memrias de longa durao e maior capacidade. No
sistema computacional o Sistema de Memria se baseia no Princpio da Localidade, que se divide em
Temporal e Espacial.
O Princpio da Localidade Temporal diz que um dado acessado recentemente tem mais chances de ser
usado novamente, do que um dado usado h mais tempo. Isso verdade porque as variveis de um
programa tendem a ser acessadas vrias vezes durante a execuo de um programa, e as instrues
usam bastante comandos de repetio e sub-programas, o que faz instrues serem acessadas repetidamente. Sendo assim, o Sistema de Memria tende a manter os dados e instrues recentemente
acessados no topo da Hierarquia de Memria.
J o Princpio da Localidade Espacial diz que h uma probabilidade de acesso maior para dados e
instrues em endereos prximos queles acessados recentemente. Isso tambm verdade porque
os programas so sequenciais e usam de repeties. Sendo assim, quando uma instruo acessada, a
instruo com maior probabilidade de ser executada em seguida, a instruo logo a seguir dela. Para
as variveis o princpio semelhante. Variveis de um mesmo programa so armazenadas prximas
uma s outras, e vetores e matrizes so armazenados em sequncia de acordo com seus ndices.
Baseado neste princpio, o Sistema de Memria tende a manter dados e instrues prximos aos que
esto sendo executados no topo da Hierarquia de Memria.
59 / 73

Introduo a Arquitetura de Computadores

5.3

Funcionamento do Sistema de Memria

O ponto inicial da memria a Memria Principal (por isso ela recebe esse nome). Todo programa
para ser executado deve ser armazenado nesta memria, com todo seus dados e instrues.
Nota
Mais a frente veremos que nem sempre possvel manter todos programas em execuo na
Memria Principal.

Devido ao Princpio da Localidade, sempre que o processador solicita um dado/instruo da memria,


ele e seus vizinhos (Localidade Espacial) so copiados para a Memria Cache no nvel superior a
seguir da hierarquia, Cache L2, por exemplo. Uma parte menor deste bloco transferido para o nvel
seguinte (Cache L1, por exemplo), e uma parte ainda menor (pores individuais) transferida para
registradores.
Quando o processador vai acessar um endereo de memria, ele faz uma consulta no sentido inverso,
do topo da hierarquia at a base. Primeiro ele busca o contedo nos registradores. Se no encontrar,
ele vai buscar no primeiro nvel de Cache. Se no encontrar, ele busca no prximo nvel de Cache e,
por fim, na Memria Principal.
O grande problema que os nveis superiores da Hierarquia de Memria possuem capacidade cada
vez menores a medida que se aproximam do topo. Isso implica na falta de capacidade de armazenar
todos dados e instrues que esto sendo executadas pelo processador. Por isso, o sistema deve decidir
o que mais relevante e fica nos nveis mais altos, e o que menos relevante e deve ficar nos nveis
inferiores da hierarquia.
Perceba que tudo uma questo de aposta. Tudo o que o processador possui a seu favor o Princpio
da Localidade, mas que se baseia em probabilidade. H uma probabilidade de um endereo prximo
(temporal e espacialmente) a um que foi acessado, ser acessado tambm, mas no h garantias. Muitas
vezes ele acerta, mas muitas outras ele erra, e quem perde o desempenho geral do sistema.
Como fazer ento para aumentar a probabilidade de um endereo ser encontrado no topo da Hierarquia
de Memria? A resposta simples, mas no barata! Deve-se investir em registradores e memrias
Cache maiores.
Quando as memrias esto cheias, o Sistema de Memria possui uma tarefa difcil, que remover um
contedo considerado menos relevante no momento, e substituir por um outro mais relevante naquele
momento. A nica memria que continua com uma cpia de todos os contedos a Memria Principal. A escolha de qual contedo deve ser removido se baseia tambm no Princpio da Localidade,
mas h diversas formas de implementar o algoritmo de substituio de contedos, que tambm podem
influenciar no desempenho do sistema.
Nota
Veremos que a Memria Virtual quebra essa ideia de que a Memria Principal sempre mantm cpia de todos programas.

5.4

Memrias de Semicondutores

As memrias de semicondutores so consideradas aquelas que utilizam composio de transistores


como forma principal de armazenamento. Dentro deste grupo esto os registradores, memrias cache,
60 / 73

Introduo a Arquitetura de Computadores


memrias principais e, mais recentemente, cartes de memria, pen-drives e os chamados Discos de
Estado Slido (SSD), que no possuem formatos de disco, mas receberam esse nome por serem os
candidatos mais cotados a substiturem os Discos Rgidos (HD).
Dentro das memrias de semicondutores vamos apresentar:
Random-Access Memory (RAM)
Dynamic RAM (DRAM)
Static RAM (SRAM)
Synchronous Dynamic RAM (SDRAM)
Double-Data Rate SDRAM (DDR-DRAM)
Read-Only Memory (ROM)

5.4.1

Random-Access Memory (RAM)

O termo Random-Access Memory, ou RAM, ou Memria de Acesso Aleatrio em portugus, veio


porque essa tecnologia substituiu as anteriores memrias de Acesso Sequencial. No Acesso Sequencial, os endereos so acessados obrigatoriamente de forma sequencial, 0, 1, 2, 3,. . . Essa a forma
de acesso de memrias magnticas, como fitas cassete e VHS, e os discos rgidos (com alguma melhoria).
J as memrias de acesso aleatrio podem acessar qualquer endereo aleatoriamente, independente
de sua posio. Hoje, o termo Memria RAM utilizado de forma errada para representar a Memria
Principal, mas na verdade, tanto registradores, quanto memria Cache e Memria Principal so feitos
utilizando tecnologia RAM. Assim, RAM uma tecnologia e no uma memria. A partir de hoje
ento, no utilize mais memria RAM, mas Memria Principal quando se referir principal memria
dos computadores.

5.4.2

Dynamic RAM (DRAM)

As memrias Dynamic RAM so as mais simples de serem fabricadas. Como mostrado na Figura 5.2
[61], formada simplesmente por um nico transistor e um capacitor.
Endereo da Linha

Transistor

Capacitor de
Armazenamento
Linha do
Bit B

Terra

Figura 5.2: Estrutura de uma DRAM para amazenar um Bit


61 / 73

Introduo a Arquitetura de Computadores


A figura apresenta uma memria de um nico bit. O transistor cuida de abrir ou fechar a passagem
de corrente para linha B. J a linha de endereo utilizada para fechar a porta do transistor e carregar
o capacitor. Se o capacitor estiver carregado, considerado que a memria contm o bit 1. Caso
contrrio, a memria contm o bit 0.
A simplicidade desta implementao traz resultado no seu principal ponto negativo. Assim como
todo capacitor, o capacitor responsvel por manter a carga da memria s capaz de manter a carga
por um curto tempo. Aos poucos, a carga vai sendo dissipada, at o momento em que era o bit 1, se
torna 0, gerando um erro. Para evitar isso, adicionado um circuito a parte que de l o contedo da
memria periodicamente e recarrega todos capacitores que esto com bit 1.
Vamos lembrar que as memrias hoje esto na casa de Giga Bytes. Ou seja, bilhes de bytes. Ento,
bilhes de capacitores devem ser lidos e recarregados periodicamente para que os contedos no
sejam perdidos. Esta tcnica chamada de Refrescagem. Ela resolve o problema dos dados perdidos,
mas atrapalha bastante o desempenho da memria. Sempre que a Refrescagem precisa ser realizada,
todo acesso bloqueado. Nada pode ser lido ou escrito enquanto isso. Assim, o processador precisa
esperar que o processo de refrescarem termine para poder acessar novamente a memria.
Devido sua simplicidade de fabricao, as memrias DRAM so mais utilizadas para compor a
Memria Principal, devido ao preo mais acessvel do que o das mais modernas SRAM.

5.4.3

Static RAM (SRAM)

As memrias RAM Estticas (Static RAM ou SRAM) se baseiam na composio de transistores


para possibilitar que a carga do bit 1 seja compartilhada entre outros transistores. A Figura 5.3 [62]
apresenta essa composio de transistores.

Terra
Endereo
da linha

Linha do
bit B
|

Linha do
bit B

Figura 5.3: Estrutura de uma SRAM com transistores compartilhando carga do bit 1
Nesta ilustrao, o transistor T5 que determina se o bit 0 ou 1, e os transistores, T1 e T3 so utilizados para recarreg-lo, caso sua carga reduza. J os transistores T2, T4 e T6 so o complemento deles
de forma inversa, adicionando um nvel a mais de segurana. Essa tcnica chamada Complementary
MOS (CMOS).

62 / 73

Introduo a Arquitetura de Computadores


As memrias SRAM no precisam de circuito de refrescarem, por isso, no precisam parar e tornamse muito mais rpidas do que as DRAM. O problema que elas precisam de muito mais transistores
por bit, o que torna o projeto maior e, por consequncia, mais caro.
Devido ao seu preo, elas so mais utilizadas em memrias Cache, mas em menor quantidade do que
as memrias principais.

5.4.4

Synchronous Dynamic RAM (SDRAM)

J a Synchronous Dynamic RAM (SDRAM) uma DRAM com um simples avano. O relgio que
determina o tempo das SDRAM vem diretamente do processador, e no de um relgio prprio, como
nas DRAM convencionais. Isso faz com que o momento exato da Refrescagem seja determinado pelo
processador. Dessa forma, o processador sabe exatamente quando ele no pode acessar a memria,
e dedica seu tempo s outras tarefas, ou seja, o processador no perde mais tanto tempo esperando a
memria.

5.4.5

Double-Data Rate SDRAM (DDR-DRAM)

Aps as SDRAM surgiram as DDR-SDRAM. As memrias DDR so sncronas como as SDRAM,


mas elas possuem um barramento extra que faz com que, a cada ciclo de clock da memria, o dobro
de dados so transferidos. As memrias DDR e suas sucessoras so mais utilizadas para utilizao
como memria principal.

5.4.6

Read-Only Memory (ROM)

As memrias ROM tambm possuem um nome criado h muitos anos e hoje um termo que no faz
tanto sentido. Em portugus significam Memria Apenas de Leitura. Isso porque as primeiras ROM
eram escritas durante a fabricao e no podiam mais ser modificadas. Mas outras geraes foram
desenvolvidas que permitiram a escrita e tornou o termo ROM antiquado. Todas memrias ROM so
no volteis, ou seja, mantm seu contedo mesmo com a falta do fornecimento de energia eltrica.
So tipos de memria ROM:
As memrias PROM (Programmable ROM)
so memrias que vem com a conexes abertas de fbrica e precisam de uma mquina para que
os dados sejam escritos nelas. Uma vez escritos, eles no podem mais ser modificados.
J as memrias EPROM (Erasable PROM)
se baseiam no mesmo princpio das PROM, mas uma mquina especial que utiliza raios UV
pode ser utilizada para apagar todo seu contedo e escrever novamente.
As memrias EEPROM (Electronically Erasable PROM)
possuem o mesmo princpio das PROM, mas a mquina utilizada para escrita e apagar eletrnica. Isso permite que um computador, ou um mquina especial seja utilizada para escrever nas
memrias, as tornando muito mais utilizadas.
J as memrias Flash
se baseiam no princpio das memrias EEPROM, mas o processo de apagar feito em blocos
grandes, o que acelera bastante o processo.
As memrias ROM so muito utilizadas na formao da BIOS dos computadores e as memrias Flash
so o princpio bsico de cartes de memria, pen-drives e memrias de estado slido.
63 / 73

Introduo a Arquitetura de Computadores

5.5

Memrias Secundrias

As memrias que vimos at o momento so chamadas de Memrias Primrias, porque so usadas para
o funcionamento bsico e primrio da CPU. J as memrias secundrias so utilizadas para dar um
suporte a mais ao sistema, ampliando sua capacidade de armazenamento. O objetivo destas memrias
o de trazer mais capacidade, sem o intuito de realizar operaes muito velozes. Se bem que as
memrias virtuais que veremos na prxima seo fez com que a demanda por memrias secundrias
mais velozes crescesse. So as principais tecnologias utilizadas como memrias secundrias:
Memrias magnticas
Memrias pticas
Memrias de estado slido
Memrias magnticas
Utilizam o princpio de polarizao para identificar dados numa superfcie magnetizvel. Assim como num im, cada minscula rea da memria magnetizada como sendo polo positivo
ou negativo (ou Norte e Sul). Quando a regio polarizada com polo positivo, dizemos que
ela armazena o bit 1, e armazena o bit 0, quando a polarizao for negativa. O maior exemplo
de memria magntica utilizado hoje so os Discos Rgidos, ou do ingls Hard Disk (ou HD).
Memrias pticas
Armazenam seus dados numa superfcie reflexiva. Para leitura, um feixe de luz (LASER)
disparado contra um tambm minsculo ponto. O feixe bate na superfcie volta para um
sensor. Isso indicar que naquele ponto h o bit 0. Para armazenar o bit 1, um outro LASER
entra em ao provocando um pequena baixa na regio. Com isso, ao fazer uma leitura no
mesmo ponto, o feixe de luz ao bater na superfcie com a baixa ser refletido mas tomar
trajetria diferente, atingindo um outro sensor diferente daquele que indicou o bit 0. Quando
este segundo sensor detecta o feixe de luz, dito que o bit lido foi o 1. O maior representante
das memrias pticas so os CDs, DVDs e, mais recentemente os Blu-Ray.
Memrias de estado slido (ou em ingls Solid State Disk - SSD)
So memrias feitas com tecnologia Flash mas para ser usadas em substituio ao Disco Rgido. Em comparao com ele, a memria de estado slido muito mais rpida, mais residente
a choques e consome menos energia. Em contrapartida, as memrias de estado slido so bem
mais caras.

5.6

Memria Virtual

Com o crescente aumento da quantidade e tamanho dos programas sendo executados pelos processadores, surgiu a necessidade de cada vez mais memria principal. O problema, com j foi dito, que as
memrias principais (basicamente DRAM) so caras. Ao mesmo tempo, quando h muito programas
sendo executados ao mesmo tempo, h uma grande tendncia de haver muitos deles esquecidos, sem
serem acessados. Esses programas ocupam espao da memria principal de forma desnecessria.
Pensando nisso, foi criado o conceito de Memria Virtual, que nada mais do que a tcnica de utilizar
a Memria Secundria, geralmente HD ou SSD, como uma extenso da Memria Principal. Desta
forma, quando a memria principal est cheia e no h mais espao para novos programas ou dados,
o sistema utiliza a memria secundria. Tudo feito de forma automtica pela Unidade de Gerncia
de Memria (ou Memory Management Unit - MMU) presente nos processadores. Assim, todo dado
64 / 73

Introduo a Arquitetura de Computadores


que acessado antes buscado pela MMU na memria principal. Se ele no estiver l, ela vai buscar
na memria secundria, faz uma cpia na memria principal e libera o acesso ao dado.
A principal tcnica de Memria Virtual a Paginao. Na Paginao, todos os dados so acessados
atravs de pginas. Isso facilita o processo de organizao e localizao dos dados que esto na
memria principal e secundria. Agora, ao invs de gerenciar palavra por palavra, o sistema gerencia
grandes blocos (geralmente de 64KB) chamados de pginas.

5.7

Memria Cache

Como foi dito anteriormente, as memrias Cache vem tendo um papel cada vez mais importante nos
sistemas computacionais. Inicialmente elas nem existiam nos computadores. Depois foram adicionadas fora do processador e em pequena quantidade. Em seguida elas foram levadas para dentro do
processador e hoje em dia ocupam entre 60% e 80% da rea do chip do processador.
O princpio bsico das memria Cache o de manter uma cpia dos dados e instrues mais utilizados
recentemente (Princpio da Localidade) para que os mesmos no precisem ser buscados na memria
principal. Como elas so muito mais rpidas do que a memria principal, isso traz um alto ganho de
desempenho.
A Figura 5.4 [65] apresenta este princpio. Todo dado a ser lido ou escrito em memria pelo processador antes passa para a Cache. Se o dado estiver na Cache, a operao feita nela e no se precisa
ir at a Memria Principal. Caso contrrio, um bloco inteiro de dados (geralmente com 4 palavras de
memria) trazido da Memria Principal e salvo na Cache. S ento a CPU realiza a tarefa com o
dado.

Transfere
blocos

Transfere
palavras
CPU

Cache

Memria Principal

Figura 5.4: Funcionamento da Memria Cache


Sendo assim, o desempenho do computador ao acessar um dado de memria probabilstico. Para
cada dado a ser acessado h uma probabilidade dele estar na memria Cache. Se isso ocorrer dizemos
que houve um Cache Hit e o sistema ganha muito tempo com isso. Caso contrrio, ocorre uma Cache
Miss e o desempenho bastante prejudicado. A grande questo , como fazemos para aumentar a
probabilidade de um determinado dado estar na memria Cache ao invs da Memria Principal?
Podemos tambm refazer esta pergunta de uma forma mais geral. Como aumentar a taxa de Cache
Hit (ou diminuir a taxa de Cache Miss)?
H trs principais estratgias para isso. So elas:
Aumentar o tamanho da Memria Cache
Mudar a funo de mapeamento

65 / 73

Introduo a Arquitetura de Computadores


Mudar a poltica de substituio
Vamos estudar como cada uma delas funciona.

5.7.1

Tamanho

A grande dificuldade das memrias Cache que elas sempre esto presentes em menor quantidade do
que a Memria Principal. Geralmente h a Memria Cache de um computador 1.000 vezes menor
do que a Memria Principal. Se voc tem um computador com 4GB de Memria Principal (no usa
mais RAM para indicar este tipo de memria!), voc ter muita sorte se seu processador tiver 4MB
de Memria Cache.
Como a Memria Cache trabalha armazenando cpias de dados da Memria Principal, quanto maior
for a Memria Cache, mais dados ela capaz de armazenar, sendo assim, maior a probabilidade do
processador buscar por um dado e ele estar na Cache. Entretanto, importante observar que esse
crescimento no constante, muito menos infinito. Veremos a seguir que o ganho de desempenho
com o aumento do tamanho da Cache possui um limite.

5.7.2

Funo de mapeamento

A funo de mapeamento diz respeito a estratgia utilizada para determinar onde cada dado da memria principal estar na Cache. Ela determina onde cada dado da Memria Principal ser copiado
na Cache caso ele seja acessado. Isso muito importante porque o processador vai seguir essa mesma
estratgia para conseguir localizar se o dado est, ou no na Cache. H trs tipos de mapeamento:
Mapeamento direto
Mapeamento associativo
Mapeamento associativo por conjunto
5.7.2.1

Mapeamento direto

Para entendermos a diferena entre os tipos de mapeamento, vamos fazer uma analogia com uma sala
de cinema. Imagine que o cinema a Memria Cache e cada pessoa um dado a ser armazenado na
memria. No mapeamento direto cada pessoa (scia daquele cinema) receber uma cadeira dedicada
a ele. Sempre que ele for ao cinema, dever sentar no mesmo lugar. O problema que a Memria
Principal muito maior do que a Memria Cache, ento no h cadeira para todos. Para resolver, cada
cadeira distribuda por vrias pessoas, apostando que nem sempre as pessoas que compartilham o
mesmo nmero de cadeira iro assistir ao mesmo filme no mesmo horrio. Mas quando isso acontece,
a pessoa que chegou por ltimo no pode sentar em outra cadeira mesmo estando livre. A pessoa que
chega depois toma o lugar da pessoa que est sentada, porque no caso da memria Cache, o ltimo
sempre tem preferncia. Imagine quanta confuso isso geraria nesse cinema!
O bom do mapeamento direto porque ele muito fcil de organizar e a CPU encontra sempre seu
dado muito facilmente. No exemplo do cinema, se algum estiver querendo saber se uma pessoa
est no cinema (na Cache) ou no (na Memria Principal) basta saber o nmero da cadeira dele e ir
l verificar se ele quem est sentado. Isso acelera bastante o trabalho de busca da CPU. Mas se a
memria Cache for muito menor que a Memria Principal, haver muitos blocos com mesmo cdigo
e pode haver muito conflito de posio, reduzindo o desempenho.
66 / 73

Introduo a Arquitetura de Computadores


Por exemplo, imagine uma Cache que armazena apenas 5 linhas ( o termo utilizado o local onde um
bloco da Memria Principal salvo na Cache), com numerao de 1 a 5. A Memria Principal ser
mapeada da seguinte forma, o bloco 1 ser salvo na linha 1 da Cache, o bloco 2 na linha 2 etc. at
o bloco 5 que ser salvo na linha 5. J o bloco 6 da memria ser salvo novamente na linha 1 da
Cache, o bloco 7 na linha 2, bloco 8 na linha 3 etc. Isso ser feito at o que todos blocos da Memria
Principal tenham uma linha a ser armazenada.
Agora suponha que os seguintes blocos da Memria Principal sejam acessados em sequncia: 1, 5, 1,
10, 11, 5. Como ser o mapeamento e quando ocorrer Cache Hit e Cache Miss?
No incio o bloco 1 acessado mas ele no est na Cache, ocorre um Cache Miss e a cpia salva.
Ento temos:
Cache hit: 0
Cache miss: 1
Posio da Cache: 1
Linhas na Cache: 1

2
-

3
-

4
-

5
-

Em seguida o bloco 5 acessado. Ele no est na Cache, ocorre um Cache miss e uma cpia salva
na posio 5. Temos ento:
Cache hit: 0
Cache miss: 2
Posio da Cache: 1
Linhas na Cache: 1

2
-

3
-

4
-

5
5

No terceiro acesso, o bloco 1 buscado. Ele j consta na Cache. Eno ocorre um cache hit e a cache
no precisa ser alterada. Ficando assim:
Cache hit: 1
Cache miss: 2
Posio da Cache: 1
Linhas na Cache: 1

2
-

3
-

4
-

5
5

Ao acessar em seguida o bloco 10 acessado, como ele deve ocupar mesma posio do bloco 5 (isso
porque 10 - 5 = 10), h um cache miss, o 5 removido e substitudo pelo 10.
Cache hit: 1
Cache miss: 3
Posio da Cache: 1
Linhas na Cache: 1

2
-

3
-

4
-

5
10

No prximo acesso o bloco 11 buscado na posio 1 porque 11 - 5 = 6 e 6 - 5 = 1. Ele no


encontrado, mas sim o bloco 1. H um cache miss e o bloco 1 substitudo pelo 11, resultado no
seguinte:
Cache hit: 1
Cache miss: 4
Posio da Cache: 1
Linhas na Cache: 11

2
-

3
-

4
-

5
10
67 / 73

Introduo a Arquitetura de Computadores


Por ltimo, o bloco 5 buscado novamente, mas o bloco 10 quem ocupa esta posio. H um cache
miss e o bloco 10 substitudo pelo 5. Como resultado final, temos:
Cache hit: 1
Cache miss: 5
Posio da Cache: 1
Linhas na Cache: 11

5.7.2.2

2
-

3
-

4
-

5
5

Mapeamento associativo

No mapeamento associativo, o mecanismo de alocao de blocos da Memria Principal na Cache no


segue posio fixa. Cada bloco vai ocupar a primeira posio vazia encontrada. Voltando ao exemplo
do cinema, seria uma sala sem cadeira reservada, mas com um porm. Se uma pessoa chegar e o
cinema estiver cheio, a direo do cinema (no computador o Sistema de Memria) vai escolher uma
pessoa a ser removida para dar lugar a nova pessoa que chegou (talvez algum que estiver dormindo
ou conversando durante o filme).
O mapeamento associativo termina sendo mais eficiente do que o mapeamento direto no momento
de alocar blocos da memria na Cache. S haver espao inutilizado se no houver acesso suficiente Memria Principal. A desvantagem deste tipo de mapeamento est no momento de buscar
um bloco na Cache. Imagine agora que algum chegue no cinema cheio a procura de uma pessoa.
Como encontr-la? Ser necessrio percorrer todas cadeiras para verificar se a pessoa se encontra em
alguma delas. Para o sistema computacional, essa busca custosa o que resulta na utilizao deste
mapeamento apenas se a Cache no for grande demais.
Agora vamos voltar ao mesmo exemplo de acesso uma memria Cache de 5 linhas para a mesma
sequncia de acesso: 1, 5, 1, 10, 11, 5. Como ser o mapeamento associativo e quando ocorrer Cache
Hit e Cache Miss?
No incio o bloco 1 acessado mas ele no est na Cache, ocorre um Cache Miss e a cpia salva.
Sempre h cache miss nos primeiros acessos de um programa e eles so impossveis de serem evitados. Ento temos:
Cache hit: 0
Cache miss: 1
Posio da Cache: 1
Linhas na Cache: 1

2
-

3
-

4
-

5
-

Em seguida o bloco 5 acessado e h novamente um cache miss, mas dessa vez vamos adicion-lo
na primeira posio livre que encontrarmos. Neste caso, na posio 2. Temos ento:
Cache hit: 0
Cache miss: 2
Posio da Cache: 1
Linhas na Cache: 1

2
5

3
-

4
-

5
-

No prximo acesso ao bloco 1 h um cache hit porque o bloco 1 acessado e ele j est presente na
Cache:
Cache hit: 1
Cache miss: 2
68 / 73

Introduo a Arquitetura de Computadores

Posio da Cache: 1
Linhas na Cache: 1

2
5

3
-

4
-

5
-

Em seguida o bloco 10 acessado. Ele no est na Cache e ocorre um Cache Miss e ele salvo na
posio 3.
Cache hit: 1
Cache miss: 3
Posio da Cache: 1
Linhas na Cache: 1

2
5

3
10

5
-

No prximo passo o bloco 11 acessado. Ele tambm no est na Cache e salvo na posio 4.
Cache hit: 1
Cache miss: 4
Posio da Cache: 1
Linhas na Cache: 1

2
5

3
10

4
11

5
-

No ltimo acesso o bloco 5 acusado novamente. Como ele est na Cache, h um cache hit e a cache
no modificada.
Cache hit: 2
Cache miss: 4
Posio da Cache: 1
Linhas na Cache: 1

2
5

3
10

4
11

5
-

Perceba que ao final, o mesmo exemplo com Mapeamento Associativo teve 1 cache miss a menos do
que o Mapeamento Direto, ou seja, ele foi mais eficiente para esse exemplo, j que precisou ir menos
Memria Principal mais lenta para trazer os blocos. Note tambm que a memria Cache permanece
mais utilizada quando o mapeamento associativo aplicado. Isso aumenta bastante a probabilidade
novos cache hit.
5.7.2.3

Mapeamento associativo por conjunto

O problema do Mapeamento Associativo encontrar blocos em memrias Cache grandes. A soluo para isso utilizar uma abordagem mista, que utiliza os princpios dos mapeamentos direto e
associativo. Ela divide a memria em conjuntos. Cada bloco ento mapeado para um conjunto
(semelhante ao que feito para o Mapeamento Direto, mas para o nvel de conjunto). Sempre que um
bloco for ser buscado ou salvo, ele ser feito no conjunto fixo dele, mas dentro do conjunto ele pode
ser armazenado em qualquer posio livre.
Voltando ao cinema, como se uma grande sala fosse dividida em salas menores. Cada pessoa teria
no seu ingresso o nmero da sala, mas a poltrona seria escolhida livremente. Escolhendo a quantidade
certa e o tamanho das salas, possvel utilizar bem os espaos e facilitar o processo de busca por uma
pessoa.

69 / 73

Introduo a Arquitetura de Computadores

5.7.3

Poltica de substituio

Nos mapeamentos associativo e associativo por conjunto uma outra poltica deve ser adotada. Quando
a memria cache enche e um novo bloco precisa ser armazenado, o Sistema de Memria deve escolher
que bloco deve ser removido para dar espao ao novo bloco. No mapeamento direto isso no existe
porque cada bloco sempre fica na mesma posio.
Sendo assim, h 3 principais polticas de substituio de linhas de Cache. So elas:
Randmica
FIFO
LRU
Na substituio randmica o sistema simplesmente escolhe aleatoriamente o bloco que deve ser removido. Ele sai da Cache dando lugar ao novo bloco que foi acessado. Este mtodo tem a vantagem
de ser muito fcil de implementar e, por consequncia, rpido de executar. Porm ele pode no ser
muito eficiente.
J no FIFO (First-In First-Out) adota o princpio de fila. Aquele bloco que chegou primeiro, est h
mais tempo na Cache. J se beneficiou bastante e deve ento dar lugar ao novo bloco.
No LRU (Least-Recently Used), ou Menos Usado Recentemente aplica o Princpio da Localidade
Temporal e torna-se por isso mais eficiente na maioria dos casos. Nesta poltica o sistema escolhe o
bloco que menos foi utilizado recentemente e o remove. Isso faz com que fiquem na Cache aqueles
blocos que so acessados mais vezes nos ltimos instantes.

5.8

Recapitulando

Neste captulo foi apresentado os principais aspectos do principal componente do computador depois
do processador, o Sistema de Memria. Vimos que a memria to complexa e com tantos elementos
que ela organizada e considerada como um sistema por si s. Foram apresentadas as memrias
primrias e suas caractersticas, as memrias secundrias e, por fim, foi melhor detalhada a memria
Cache, to importante para os sistemas computacionais modernos.
Com o entendimento dos contedos visto at o momento, mais o do Sistema de Memria podemos
dizer que o conhecimento introdutrio da Arquitetura de Computadores foi atingido. Cabe a voc
agora explorar novos caminhos. Boa sorte!
Feedback sobre o captulo
Voc pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de
submeter uma sugesto ou crtica?
Para compreender melhor como feedbacks funcionam consulte o guia do curso.

70 / 73

Introduo a Arquitetura de Computadores

Captulo 6
Glossrio

CISC (Complex Instruction Set Computer)


Computador de Conjunto de Instrues Complexo.
PC (Program Counter)
Contador de Programas.
IR (Instruction Register)
Registrador de Instruo.
ISA (Instruction Set Architecture)
O Conjunto de Instrues a interface entre os softwares que sero executados pelo processador e o prprio processador.
MAR (Memory Address Register)
Registrador de Endereo.
MBR (Memory Buffer Register)
Registrador de Dados.
ULA
Unidade Lgica e Aritmtica.
UC
Unidade de Controle.
FI
Ciclo carregar instruo. Traz a instruo da memria para o processador, armazena em [IR]
[71] (essa etapa tambm chamada de Fetch de Instruo) e a decodifica para execuo no
passo seguinte.
FO (Fetch operands)
Clico carregar operandos. Traz os operandos da operao dos registradores para a ULA, para
que a operao seja realizada sobre eles, tambm chamada de Fetch de Operandos.

71 / 73

Introduo a Arquitetura de Computadores


EI (Execute Instructions)
Ciclo executar instrues. Executa operao lgica ou aritmtica propriamente dita.
RISC (Reduced Instruction Set Computer)
Computador de Conjunto de Instrues Reduzido.
TOS (Top of Stack)
Registrador que indica o topo da pilha.
WM (Write to memory):: Ciclo escrever em memria
Escreve o resultado da operao em memria, se necessrio.
WR (Write to register)
Ciclo escrever em registrador. Escreve o resultado da operao em um dos registradores, se
necessrio.

72 / 73

Introduo a Arquitetura de Computadores

Captulo 7
ndice Remissivo
A
Acumulador, 46
Arquitetura
Acumulador, 46
Load/Store, 46
Pilha, 46
Registrador-Memria, 47
Arquitetura Harvard, 29

Interrupes, 23
ISA, 45

B
Barramento, 18
Busca de Dados, 22

P
Pilha, 46
Pipeline, 27, 29, 56
Limitaes, 30
previsibilidade, 56
Processador
desempenho, 32
Programa, 16

L
Limitaes, 30
Load/Store, 46
M
Memria Principal, 19

C
Cdigo de Mquina, 45
Cache, 27
Ciclo de Busca, 21
Ciclo de Execuo, 21
CISC, 55
clock, 18
Contador de Programas, 19
CPU
Estrutura, 18

R
Refrescagem, 62
Registrador de Dados, 20
Registrador de Endereo, 20
Registrador de Instruo, 20
Registrador-Memria, 47
Registradores, 19
registradores de propsito geral, 20
RISC, 55

D
desempenho, 32
E
Estrutura, 18

S
Software, 17

G
Gerenciador de Interrupes, 23
Giga Hertz, 18

T
TOS, 46
transistor MOSFET, 6
Tratador de Interrupo, 24

H
Hardware, 17
Hertz, 18

U
Unidade de Ciclo de Dados, 18
Unidade de Controle, 18
Unidade Lgica e Aritmtica, 21

I
interrupo, 24
73 / 73

You might also like