Você está na página 1de 152

Universidade Federal do Piau

Centro de Educao Aberta e a Distncia

ARQUITETURA DE
COMPUTADORES II

Andr Macdo Santana


Vinicius Ponte Machado
Ministrio da Educao - MEC
Universidade Aberta do Brasil - UAB
Universidade Federal do Piau - UFPI
Universidade Aberta do Piau - UAPI
Centro de Educao Aberta e a Distncia - CEAD

ARQUITETURA DE COMPUTADORES II

Andr Macdo Santana


Vinicius Ponte Machado
PRESIDENTE DA REPBLICA Dilma Vana Rousseff Linhares
MINISTRO DA EDUCAO Aloizio Mercadante
GOVERNADOR DO ESTADO Wilson Nunes Martins
REITOR DA UNIVERSIDADE FEDERAL DO PIAU Jos Arimatia Dantas Lopes
PRESIDENTE DA CAPES Jorge Almeida Guimares
COORDENADOR GERAL DA UNIVERSIDADE ABERTA DO BRASIL Joo Carlos Teatini de S. Clmaco
DIRETOR DO CENTRO DE EDUCAO ABERTA E A DISTNCIA DA UFPI Gildsio Guedes Fernandes

COORDENADORES DE CURSOS
ADMINISTRAO Antonella Maria das Chagas Sousa
ADMINISTRAO PBLICA Fabiana Rodrigues de Almeida Castro
CINCIAS BIOLGICAS Maria da Conceio Prado de Oliveira
FILOSOFIA Zoraida Maria Lopes Feitosa
FSICA Miguel Arcanjo Costa
LETRAS PORTUGUS Jos Vanderlei Carneiro
LETRAS INGLS Lvia Fernanda Nery da Silva
MATEMTICA Jos Ribamar Lopes Batista
PEDAGOGIA Vera Lcia Costa Oliveira
QUMICA Davi da Silva
SISTEMAS DE INFORMAO Arlino Henrique Magalhes de Arajo

EQUIPE DE DESENVOLVIMENTO CONSELHO EDITORIAL DA EDUFPI


TCNICOS EM ASSUNTOS EDUCACIONAIS: Ubirajara Santana Assuno Prof. Dr. Ricardo Alaggio Ribeiro (Presidente)
EDIO: Roberto Denes Quaresma Rgo Des. Tomaz Gomes Campelo
PROJETO GRFICO: Samuel Falco Silva Prof. Dr. Teresinha de Jesus Mesquita Queiroz
DIAGRAMAO: Francinaldo da Silva Soares Prof. Dr. Jos Renato de Sousa
REVISO ORTOGRFICA: Beatriz Gama Rodrigues Prof. Manoel Paulo Nunes
REVISO GRFICA: Carmem Lcia Portela Santos Prof. Iracildes Maria Moura F Lima
Prof. Dr. Joo Renr Ferreira de Carvalho

M152a Santana. Andr Macdo, Machado. Vinicius Ponte


Arquitetura de Computadores II/ Andr MacdoSantana e Vinicius Ponte Machado. Teresina:
EDUFPI/UAPI, 2010.

152 p.

Inclui: Referncias
ISBN:

1- Sistemas de Informao. 2 - Organizao de Computadores. 3 - Educao Aberta a Distncia


I. Ttulo

C.D.D. - 004.6

2013. Universidade Federal do Piau - UFPI. Todos os direitos reservados.

A responsabilidade pelo texto e imagens desta obra dos autores. O contedo desta obra foi licenciado, temporria e
gratuitamente, para utilizao no mbito do Sistema Universidade Aberta do Brasil, atravs da UFPI. O leitor se compromete
a utilizar o contedo desta obra para aprendizado pessoal, sendo que a reproduo e distribuio ficaro limitadas ao mbito
interno dos cursos. A citao desta obra em trabalhos acadmicos e/ou profissionais poder ser feita, com indicao da fonte.
A cpia desta obra sem autorizao expressa, ou com intuito de lucro, constitui crime contra a propriedade intelectual, com
sanes previstas no Cdigo Penal. proibida a venda deste material.
Muita gente ainda desconhece a composio e organizao dos
componentes que integram um instrumento vital para o seu trabalho: o computador.
Tal desconhecimento relacionado, de certa forma, com as inovaes tecnolgicas
que ocorrem quase que diariamente.
Conhecer a organizao e o funcionamento dos principais componentes
desta mquina permitir a voc saber se adquiriu ou indicou o computador mais
adequado determinada funo. Com o intuito de permitir ao leitor conhecer melhor
a Arquitetura de Computadores este material foi desenvolvido.
O objetivo deste livro proporcionar um entendimento da Arquitetura de
Computadores, em especial Processadores e Sistemas de Memria. O texto foi
escrito de forma simples e objetiva e cada captulo acompanhado de embasamento
terico-prtico, bem como de exerccios. A bibliografia e a webliografia ao fim
das notas so mais do que suficientes para que o leitor se aprofunde na teoria
apresentada em cada unidade.
Na Unidade I, so apresentados os conceitos relacionados organizao
de computadores. Nela, descrevemos o funcionamento bsico de um computador
bem como seus principais componentes. A Unidade II trata dos processadores e
contm um captulo relacionado a pipelines e outro comparando as arquiteturas
RISC e CISC. Por fim, a Unidade III traz os sistemas de memria com explicaes
sobre tecnologias, memria cache e memria virtual.

Boa Leitura !!
Andr Macdo
Vincius Machado
UNIDADE 1
09
ORGANIZAO DE COMPUTADORES

Arquitetura de Computadores 11
Introduo 11
Programas 13
Funcionamento bsico 16
Barramento 20
Processador 22
Memria 26

UNIDADE 2
33 PROCESSADORES

Projeto de Processadores 35
Introduo 35
Componentes 38
Funcionalidades 42
Ciclo de instruo e microprogramao 43
Medidas de desempenho 46
Mais de uma instruo por ciclo 46
Pipelines e Mquinas Superescalares 49
Introduo 49
Durao de ciclos 52
Latncia 55
Bolhas 56
Previso de desvios 56
Processamento de excees 58
Bolhas causadas por dependncia 59
Medidas de desempenho 63
Mquinas superpipeline e superescalares 64
Processadores superescalares 65
RISC e CISC 74
Introduo 74
CISC 75
RISC 80
RISC vs CISC 85

UNIDADE 3
91
SISTEMAS DE MEMRIA

Memria 93
Introduo 93
Conceitos bsicos 93
Endereos de memria 94
Ordenao dos bytes 96
Cdigos com correo de erros 98
Hierarquia de memria 100
Propriedades de uma hierarquia 102
Tecnologia de memrias 104
Organizao dos chips de memria 106
Memria Cache 111
Introduo 111
Conceitos bsicos 113
Associatividade 118
Polticas de substituio 124
Polticas de atualizao 127
Caches com vrios nveis 129
Memria Virtual 131
Introduo 131
Traduo de endereos 133
Swapping 136
Tabela de pginas 137
TLBs 141
Proteo 142
UNIDADE 1
ORGANIZAO
DE COMPUTADORES

OBJETIVOS:

Compreender o funcionamento bsico de um computador;


Entender o funcionamento de programas;
Ser capaz de identificar os componentes principais de um computador;
Conhecer os componentes bsicos de um processador,
Estar familiarizado com os sistemas de memrias.
ORGANIZAO DE
COMPUTADORES

Introduo

Numa viso externa de grande parte dos usurios, um computador


composto de CPU, teclado, vdeo e mouse, como ilustrado pela figura
1.1. Esta a viso da maior parte da populao que tenha algum
tipo de interao com o computador, principalmente porque estes
so os elementos de um microcomputador que se deve transportar,
desconectando e reconectando-os para fazer o computador voltar a
funcionar.

Figura 1.1: Viso externa de um computador.

Embora continuar a ter este tipo de viso dos componentes de um


computador no afete profundamente a vida e modo de utilizao destas
mquinas pela maior parte da populao, lgico que esta uma viso
extremamente superficial at para alguns usurios.

Organizao de Computadores 11
Para estudar organizao de computadores, alguns conceitos
bsicos devem ser assimilados/revisados. Estes conceitos abrangem
os componentes funcionais bsicos e as formas de representao/
armazenamento de informaes, alm do funcionamento bsico dos
sistemas de computao.
A maioria dos sistemas de computadores podem ser divididos
em trs subsistemas: o processador (Central Prossessing Unit - CPU), a
memria e o subsistema de entrada e sada (E/S). O processador
responsvel pela execuo dos programas; a memria fornece espao de
armazenamento para os programas e os dados aos quais ele referencia;
e o subsistema de E/S permite que o computador e a memria controlem
os dispositivos que interagem com o mundo externo ou que armazenam
dados, como o DVD-ROM, discos rgidos, placa de vdeo/monitor, etc.
De forma bem resumida, os componentes bsicos de um
computador so:
- Processador ou CPU: o componente vital do sistema
de computao, responsvel pela realizao das operaes de
processamento (os clculos matemticos com os dados, por exemplo) e
pelo controle de quando e o que deve ser realizado, durante a execuo
de um programa.
- Memria: o componente de um sistema de informao cuja
funo armazenar as informaes que so, foram ou sero manipuladas
pelo sistema. Os programas e os dados so armazenados na memria
para execuo imediata (memria principal) ou para execuo ou uso
posterior (memria secundria). Basicamente, h duas nicas aes que
podem ser realizadas: a) a de guardar um elemento na memria, a qual
chamamos de armazenar, sendo que a operao associada a esta ao
a escrita ou gravao (write); ou b) recuperao de um elemento da
memria, ao de recuperar, e operao de leitura (read).
- Dispositivos de entrada e sada: servem basicamente para
permitir que o sistema de computao se comunique com o mundo
externo, realizando, ainda, a interligao, a converso das linguagens do
sistema para a linguagem do meio externo e vice-versa. Os seres humanos
entendem smbolos como A, b, *, ?, etc. e o computador entende sinais
eltricos que podem assumir um valor de +3 Volts para representar 1 e ou
outro valor, 0 Volts para representar 0. O teclado (dispositivo de entrada)
interliga o usurio e o computador, por exemplo, quando pressionamos
a tecla A, os circuitos eletrnicos existentes no teclado convertem a
presso mecnica em um grupo de sinais eltricos, alguns com voltagem

12 UNIDADE 01
alta (bit 1) e outros com voltagem baixa (bit 0), que corresponde, para o
computador, ao caractere A. Os dispositivos de sada operam de modo
semelhante, porm em sentido inverso, do computador para o mundo
exterior, convertendo os sinais eltricos em smbolos conhecidos por ns.
Alm dos trs itens relacionados anteriormente, na maioria dos
sistemas, o processador tem um nico barramento de dados que
conectado ao mdulo comutador, embora alguns processadores integrem
diretamente o mdulo de comutao no mesmo circuito integrado que
o processador de modo a reduzir o nmero de chips necessrios para
construir o sistema, bem como o seu custo.
O comutador se comunica com a memria atravs de um
barramento de memria, um conjunto dedicado de linhas que transfere
dados entre estes dois sistemas. Um barramento de E/S distinto conecta
o comutador com os dispositivos de E/S. Normalmente, so utilizados
barramentos separados porque o sistema de E/S projetado de forma a
ser o mais flexvel possvel para suportar diversos tipos de dispositivos
de E/S e o de memria projetado para fornecer a maior largura de
banda possvel entre o processador e o sistema de memria. A figura 1.2
apresenta a organizao bsica de um computador.

Figura 1.2: Organizao bsica de computadores


Figura adaptada de Carter (2003).
Programas

Programas so sequncias de instrues que dizem ao computador

Organizao de Computadores 13
o que fazer, embora a viso que o computador tenha das instrues que
compem um dado programa seja muito diferente da viso de quem
o escreveu. Para o computador, um programa composto de uma
sequncia de nmeros que representam operaes individuais. Estas
operaes so conhecidas como instrues de mquina, ou apenas
instrues, e o conjunto de operaes que um dado processador pode
executar conhecido como conjunto de instrues.
Praticamente todos os computadores em uso atualmente
so computadores com memria de programa que representam os
programas como nmeros que so armazenados no mesmo espao de
endereamento que os dados. A abstrao de programas armazenados
(representando instrues como nmeros armazenados na memria) foi
um dos principais avanos na arquitetura dos primeiros computadores.
Antes disso, muitos computadores eram programados pelo ajuste de
interruptores ou refazendo a conexo das placas de circuito para definir
o novo programa, o que exigia uma grande quantidade de tempo, alm
de ser muito sujeito a erros.
A abstrao de programas armazenados em memria fornece
duas vantagens principais sobre as abordagens anteriores. Primeiro, ela
permite que os programas sejam armazenados e carregados facilmente na
mquina. Uma vez que o programa tenha sido desenvolvido e depurado,
os nmeros que representam as suas instrues podem ser escritos
em um dispositivo de armazenamento, permitindo que o programa seja
carregado novamente para a memria em algum momento. Segundo,
e talvez de modo ainda mais significativo, a abstrao de programas
armazenados em memria permite que os programas tratem a si mesmo
ou a quaisquer outros programas como se fossem dados.
Os programas que tratam outros programas como dados so
muito comuns e a maioria das ferramentas de desenvolvimento de
programas caem dentro desta categoria. Estas ferramentas incluem os
compiladores que convertem programas em linguagem de alto nvel,
como C e JAVA, em linguagem de montagem (assembly), os montadores
que convertem instrues de linguagem de montagem em representaes
numricas utilizadas pelo processador e os ligadores (linkers) que unem
diversos programas em uma linguagem de mquina em um nico arquivo
executvel. Tambm so includos nesta categoria os depuradores
(debuggers), programas que apresentam o estado de outro programa
medida que este executado, de modo a permitir que os programadores
acompanhem o progresso de um programa e encontre os erros.

14 UNIDADE 01
Os primeiros computadores em linguagem de montagem eram
programados em linguagem de mquina, a representao numrica
das instrues utilizadas internamente pelo processador. Para escrever
um programa, o programador determinava a sequncia de instrues de
mquinas necessrias para gerar o resultado correto e dava entrada nos
nmeros que representavam no computador estas instrues.
O primeiro passo para simplificar o desenvolvimento de programas
veio quando foram desenvolvidos os montadores, permitindo que os
programadores codificassem em linguagem de montagem. Na linguagem
de montagem, cada instruo de mquina tinha uma representao em
texto (como ADD, SUB, ou LOAD) que representava o que ela fazia e
os programas eram escritos utilizando estas instrues. Uma vez que o
programa tivesse sido escrito, o programador executava o montador para
converter o programa em linguagem de montagem para linguagem de
mquina, o qual podia ser executado no computador. As linhas a seguir
mostram um exemplo de uma instruo em linguagem de montagem e a
instruo em linguagem de mquina gerada a partir dela.

Linguagem de montagem: ADD,r1,r2,r3


Linguagem de mquina: 0x04010203

Utilizar linguagem de montagem tornou a tarefa de programao


muito mais fcil ao permitir que os programadores utilizassem um
formato de instrues que era mais fcil de ser entendido por humanos.
A programao ainda era extremamente tediosa porque para executar
operaes mais complexas era necessrio utilizar vrias instrues;
alm disso, as instrues disponveis para os programadores diferiam de
mquina para mquina. Ou seja, se um programador quisesse executar
um programa em um tipo de computador diferente, o programa tinha que
ser completamente reescrito na nova linguagem de montagem desse
computador.
As linguagens de alto nvel foram desenvolvidas para resolver
este problema, uma vez que permitem que os programas sejam escritos
em muito menos instrues do que as linguagens de montagem. Outra
vantagem de escrever programas em linguagem de alto nvel que elas
so muito mais portveis do que programas escritos em linguagem de
mquina. Programas de alto nvel podem ser convertidos para uso em
diferentes computadores pela recompilao do programa, utilizando-se o
compilador adequado ao novo computador.

Organizao de Computadores 15
O problema com as linguagens de alto nvel que os computadores
no podem executar diretamente instrues em linguagem de alto nvel.
Assim, um programa chamado compilador utilizado para converter o
programa em seu equivalente em linguagem de montagem, que , ento,
convertida em linguagem de mquina pelo montador. A figura 1.3 ilustra
o desenvolvimento e execuo de um programa em linguagem de alto
nvel.

Figura 1.3: Desenvolvimento de um programa.


Figura adaptada de Carter (2003).

Uma alternativa para a compilao de um programa utilizar um


interpretador para executar a verso do programa em linguagem de
alto nvel. Os interpretadores so programas que tomam programas em
linguagem de alto nvel como entradas e executam os passos definidos
para cada instruo do programa em linguagem de alto nvel, produzindo
o mesmo resultado que compilar o programa e ento executar a verso
compilada. Os programas interpretados tendem a ser muito mais lentos
do que programas compilados, o que leva os interpretadores a serem
menos utilizados do que os compiladores.

Funcionamento bsico
Os computadores, no seu funcionamento bsico, executam
quatro funes distintas, sendo elas: a) entrada; b) processamento; c)
armazenamento/recuperao de dados; e d) sada. A figura 1.4 ilustra o

16 UNIDADE 01
funcionamento bsico dos sistemas de computao.

Figura 1.4: Componentes bsicos de um computador.


Figura adaptada de Rebonatto (2003).

Para que um computador trabalhe, necessria a insero


de informaes (entrada). Seguindo as instrues fornecidas pelos
programas, o computador processa os dados oriundos da entrada
(processamento) armazenando-os logo em seguida para posterior
utilizao. As informaes produzidas ficam disponveis para utilizao
(sada) e, a menos que se deseje informar e produzi-las novamente, elas
devem ser armazenadas em um dispositivo de armazenamento estvel.
O esquema geral da figura 1.4 seguido por praticamente
todos os computadores, sendo que os dados so produzidos atravs
de instrues durante a etapa de processamento, realizada pela CPU.
Cada processador tem um conjunto nico de instrues para processar
os dados, porm geralmente utilizam a mesma forma de composio
das instrues. As linhas a seguir mostram a forma das instrues
comumente utilizada pelos processadores: OPERAO + OPERANDOS
= INSTRUO.
A operao especifica a funo a ser desempenhada, por exemplo,
some, armazene ou desvie, entre outras. Os operandos fornecem os
dados a serem utilizados na operao ou ainda a forma de alcanar a
posio destes dados na memria.
Todas as informaes manipuladas pelos computadores devem
ser entendidas pela mquina. Como o computador um dispositivo
eletrnico, ele armazena e movimenta as informaes de forma
eletrnica, podendo utilizar um valor de corrente. Para que a mquina
representasse todos os smbolos da linguagem humana eletricamente
seriam necessrias mais de 100 diferentes voltagens (corrente). Uma

Organizao de Computadores 17
mquina deste tipo alm de ser de custo elevado, seria difcil de construir
e de baixa confiabilidade. Desta forma, optou-se por construir mquinas
binrias, capazes de entender apenas dois valores diferentes.
Os computadores digitais so totalmente binrios, isto ,
trabalham apenas com dois valores, tornando assim simples o emprego
da lgica booleana (sim/no, verdadeiro/falso, aberto/fechado, etc.) tanto
na construo de componentes quanto como base para a escrita de
programas (programao).
Convencionou-se chamar os dois nveis eltricos de 0 e 1 sendo que
cada algarismo da representao numrica binria denominado de bit,
correspondente abreviatura de binary digit (dgito binrio). Obviamente
com apenas 1 bit isolado pode-se representar muito pouca coisa (apenas
2 valores), desta forma, usam-se agrupamentos ordenados de bits para
a representao de informaes teis. A menor informao inteligvel
aos seres humanos o caractere, como, por exemplo, o nmero 5
ou a letra a. Existem diversos agrupamentos de bits para representar
caracteres, sendo que o mais popularmente utilizado chamado de byte.
Um byte uma sequncia ordenada de 8 bits, sendo cada bit tratado
de forma independente dos demais e com um valor fixo de acordo com
sua posio. Qualquer sequncia binria pode ser convertida para um
nmero na base decimal, sendo utilizado este valor para encontrar o
caractere correspondente, utilizando uma tabela de caracteres.
As memrias geralmente armazenam e recuperam informaes
byte a byte, ou ainda em mltiplos de bytes. A representao binria de
valores tambm utilizada para a representao de nmeros dentro dos
computadores. A metodologia a mesma, sendo convertido o valor em
base decimal para o correspondente em base binria. Por exemplo, o
nmero 2310 pode ser armazenado no seguinte byte 00010111.
Os dispositivos de memria atuais utilizam agrupamentos de bytes
para representar sua capacidade de armazenamento. Uma vez que tais
agrupamentos so oriundos de uma base binria, o fator de multiplicao
utilizado 1024 (210). Cada faixa possui tambm uma letra para abreviar
a categoria. A Tabela 1 demonstra alguns agrupamentos de bits e bytes
utilizados.
Tabela 01: Agrupamento de bits e bytes
Agrupamento Smbolo Representa
Byte B 8 bits
kilo K 1024 Bbytes
Mega M 1024 Kbytes

18 UNIDADE 01
Giga G 1024 MBytes
Tera T 1024 GBytes
Penta P 1024 TBytes

Estes agrupamentos so utilizados na descrio das capacidades


de armazenamento dos computadores hoje em dia, sendo que esta
capacidade referenciada por um nmero e um smbolo correspondentes.
Por exemplo, 8 GB de memria.
Outro conceito importante muito utilizado na descrio do
mecanismo de transferncia de informaes entre a CPU e a memria
principal o conceito de palavra. A palavra utilizada para indicar
a unidade de transferncia e processamento de um computador. As
palavras so mltiplos de 1 byte, sendo que os microprocessadores
geralmente utilizam 32bits 4 bytes como tamanho da palavra. Porm,
j existem projetos e microprocessadores que utilizam palavras de 64
bits. Em outras palavras, os conceitos de bit, caractere, byte e palavra
podem ser resumidos assim:
- Bit: a menor unidade de informao armazenvel em um
computador. Bit a contrao das palavras inglesas Binary Digit. O
bit pode ter, ento, somente dois valores: 0 e 1. Evidentemente, com
possibilidades to limitadas, o bit pouco pode representar isoladamente;
por essa razo, as informaes manipuladas por um computador so
codificadas em grupos ordenados de bits, de modo a terem um significado
til.
- Caractere: o menor grupo de bits representando uma
informao til e inteligvel para o ser humano. Qualquer caractere a ser
armazenado em um sistema de computao convertido em um conjunto
de bits previamente definidos para o referido sistema (chama-se cdigo
de representao de caractere). Cada sistema poder definir como
(quantos bits e como se organizam) cada conjunto de bits ir representar
um determinado caractere.
- Byte: o grupo de 8 bits, tratados de forma individual, como
unidade de armazenamento e transferncia. Como os principais
cdigos de representao de caracteres utilizam 8 bits por caractere,
os conceitos de byte e caractere tornam-se semelhantes e as palavras,
quase sinnimas.
- Palavra: um conjunto de bits que representa uma informao
til, mas est associada ao tipo de interao entre a memria principal
e a CPU, que individual, informao por informao; ou seja, a CPU

Organizao de Computadores 19
processa informao por informao, armazena e recupera nmero a
nmero (cada uma estaria associada a uma palavra).

Barramento

Os processadores so circuitos integrados passveis de serem


programados para executar uma tarefa predefinida, basicamente
manipulando e processando dados. A CPU manipula dados de acordo
com programas que devero, para isso, estar na memria. Um programa
pode ordenar que dados sejam armazenados de volta na memria ou
recuperar programas/dados armazenados em sistemas de memria de
massa (disquetes, HD, etc.). Os caminhos por onde estas informaes
circulam em um computador so genericamente conhecidos como
barramentos.
Em outras palavras, os barramentos nada mais so do que um
conjunto de condutores (fios, trilhas) por onde passam os bits. Possuem
duas principais caractersticas: a largura do barramento: nmero de bits
transportados numa operao; e a frequncia de operao: velocidade
com que os dados so transmitidos. A figura 1.5 ilustra a funcionalidade
dos barramentos.

Barramento de memria

Barramento AGP Barramento externo

Barramento PCI

Barramento ATA

Figura 1.5: Barramentos de um computador.


Figura adaptada de Rebonatto (2003).

20 UNIDADE 01
Existem diversos barramentos nos computadores atuais, sendo
os principais o barramento local e o barramento de expanso. O
barramento local vital para o funcionamento do computador, pois
interliga o processador a memria. Por outro lado, o barramento de
expanso interliga os demais componentes, tais como perifricos de
entrada, de sada e memria de armazenamento estvel (secundria).
O barramento local, tambm conhecido como interface CPU/
Memria Principal, de vital importncia para o funcionamento do
computador, uma vez que os blocos que formam a CPU no podem
manipular diretamente os dados armazenados na memria, pois somente
operam sobre valores mantidos em registradores. Desta forma, como as
instrues e os dados a serem manipulados esto na memria, para que
uma instruo seja executada, a memria deve ser acessada no mnimo
uma vez.
O barramento local dividido em outros trs: barramento de
dados, barramento de endereos e barramento de controle. A
interface CPU/MP se completa com os registradores auxiliares no acesso
memria. A figura 1.6 ilustra o esquema da interface CPU/MP.

Figura 1.6: Barramento local.


Figura adaptada de Rebonatto (2003).

- Registrador de Endereo da Memria (REM): Armazena o


endereo da clula onde deve ser feita a prxima operao de leitura ou
escrita na memria;
- Barramento de Endereos: Liga o REM memria para
transferncia do endereo da clula a ser lida ou escrita. Sua largura em
bits deve ser igual ao REM;
- Registrador de Dados da Memria (RDM): Armazena os dados
que esto sendo transferidos de/para a memria;
- Barramento de Dados: Liga o RDM memria, possuindo a
mesma largura deste. o caminho por onde feita a transferncia do
contedo;

Organizao de Computadores 21
- Barramento de Controle: Interliga a CPU memria para enviar
os comandos de READ e WRITE e receber WAIT.
Para que uma simples placa de vdeo ou um H.D. possam ser
utilizados em qualquer computador, independentemente do processador
instalado, utiliza-se diversos modelos de barramentos de expanso. Os
barramentos de expanso so disponibilizados na placa-me dos micros
atravs de slots.
Os slots nada mais so do que encaixes para que as conexes
entre placas presentes no sistema computacional utilizem determinados
padres de barramento. Na parte superior dos slots, encontram-se
ranhuras para a conexo de placas de circuito que funcionam com a
placa-me. Sem as ranhuras, os micros ficariam limitados aos circuitos
que estivessem permanentemente montados na placa-me.
Vale ressaltar que, junto com a evoluo dos computadores, o
desempenho dos barramentos tambm evolui. Novos barramentos e/ou
melhorias nos atuais esto sempre surgindo.

Processador

O processador o componente vital de um sistema de computao,


responsvel pela realizao das operaes de processamento (clculos
matemticos, entre outros) e de controle durante a execuo de um
programa.
Como ilustrado na figura 1.7, os processadores so compostos
por vrios blocos: unidades de execuo, banco de registradores e
lgica de controle. As unidades de execuo contm o hardware que
executa as instrues. Isto inclui o hardware que busca e decodifica
as instrues, bem como as unidades lgico-aritmticas (ULAs) que
executam os clculos. Muitos processadores possuem unidades de
execuo diferentes para clculos com inteiros e com pontos flutuantes,
porque necessrio um hardware muito diferente para estes dois tipos de
dados. Alm disso, como veremos na prxima unidade, os processadores
modernos, para melhorar o desempenho, frequentemente utilizam vrias
unidades de execuo para executar instrues em paralelo.

22 UNIDADE 01
Figura 1.7: Diagrama em blocos de um processador.
Figura adaptada de Carter (2003).

O banco de registradores uma pequena rea de armazenamento


para os dados que o processador est usando. Os valores armazenados
no banco de registradores podem ser acessados mais rapidamente que
os dados armazenados no sistema de memria, sendo que os bancos
de registradores geralmente suportam vrios acessos simultneos. Isto
permite que uma operao, como a adio, leia todas suas entradas do
banco de registradores ao mesmo tempo, ao invs de ter que l-las uma
por vez.
A lgica de controle controla o processador determinando quando
as instrues podem ser executadas e quais operaes so necessrias
para executar cada instruo. Nos primeiros processadores, ela era uma
parte muito pequena do hardware do processador, quando comparada
com as ULAs e o banco de registradores, mas a quantidade de lgica
de controle necessria cresceu significativamente medida que os
processadores tornaram-se mais complexos, fazendo com que seja uma
das partes mais difceis de ser projetada.
Em resumo, temos:
- Unidade Lgica e Aritmtica ou ALU (Arithmetic and Logic

Organizao de Computadores 23
Unit): que assume todas as tarefas relacionadas s operaes lgicas
(ou, e, negao, etc.) e aritmticas (adies, subtraes, etc.) a serem
realizadas no contexto de uma tarefa realizada atravs dos computadores.
As primeiras ULAs eram de concepo bastante simples, realizando
um conjunto relativamente modesto de operao, com operandos de
pequena dimenso (no que diz respeito ao tamanho da palavra). Com o
passar do tempo, esses elementos foram se tornando sofisticados para
suportar operaes mais complexas a maiores tamanhos de palavras de
dados para permitir o grande potencial de clculo oferecido pelos atuais
microprocessadores;
- Registradores: como o nome indica, abrigam o conjunto de
registros dos microprocessadores, essenciais para a realizao das
instrues dos programas do computador. De forma mais superficial,
pode-se subdividir o conjunto de registros de um microprocessador em
dois grupos: os registros de uso geral, utilizados para armazenamento de
operandos ou resultados de operaes executadas pelo microprocessador,
e os registros de controle, utilizados como suporte execuo dos
programas do computador;
- Unidade de Controle: a responsvel por tarefas nobres como
a interpretao das instrues de mquina a serem executadas pelo
computador, a sincronizao destas instrues, o atendimento a eventos
de hardware, etc. Esta unidade assume toda a tarefa de controle das
aes a serem realizadas pelo computador, comandando todos os
demais componentes de sua arquitetura, garantindo a correta execuo
dos programas e a utilizao dos dados corretos nas operaes que
as manipulam. a unidade de controle que gerencia todos os eventos
associados operao do computador, particularmente as chamadas
interrupes, to utilizadas nos sistemas h muito tempo.

Execuo de um Programa

Como comentado anteriormente, um programa, para ser


efetivamente executado por um processador, deve ser constitudo de
uma srie de instrues (em linguagem de mquina). Estas instrues
devem estar armazenadas em posies sucessivas da memria principal.
A execuo sequencial, ou seja, se a instruo executada est na
posio x, a prxima instruo a ser executada dever estar na posio
x+1. A sequncia de funcionamento de uma CPU conhecida como ciclo
Busca Decodificao Execuo de Instrues. A figura 1.8 ilustra
este ciclo.

24 UNIDADE 01
Figura 1.8: Ciclo bsico de instruo.
Figura adaptada de Rebonatto (2003).

- Um elemento dentro do processador, denominado contador de


instrues (Program Counter-PC), contm a posio da prxima instruo
a ser executada. Quando uma sequncia de execuo de instrues tem
inicio, a instruo cujo endereo est no contador de instrues trazida
da memria para uma rea chamada registrador de instrues (RI). Este
processo conhecido como busca da instruo.
- A instruo interpretada por circuitos de decodificao
que fazem com que sinais eletrnicos sejam gerados no processador
como resultado do valor do campo de operao; isto , decodificam a
informao correspondente operao a ser realizada.
- Esses sinais resultam na execuo da instruo, isto ,
aplicao da funo contida pela operao sobre os operandos. Quando
a execuo de uma instruo terminada, o contador de instrues
atualizado para o endereo da memria da prxima instruo (x + 1).
A sequncia de instrues pode mudar como resultado de uma

Organizao de Computadores 25
instruo que direciona um desvio (tambm chamado de salto, jump).
Instrues deste tipo contm no campo operandos o endereo da
prxima instruo a ser executada. Elas causam mudanas no fluxo do
programa como resultado das condies dos dados. O desvio condicional
representado por uma instruo de alto nvel IF traduz-se em algum tipo
de instruo de desvio.
As atividades realizadas pela CPU podem ser divididas em duas
grandes categorias funcionais: funes de processamento e funes
de controle. A funo de processamento se encarrega de realizar as
atividades relacionadas com a efetiva execuo de uma operao,
ou seja, processar (executar a instruo) de instrues. O principal
componente da CPU que realiza a funo de processamento a ULA
(unidade lgica e aritmtica), sendo que sua ao complementada pelo
uso de registradores de processamento. A funo de controle exercida
pelos componentes da CPU que se encarregam de atividades de busca,
interpretao e controle da execuo das instrues, bem como do
controle da ao dos demais componentes do sistema de computao
(memria, entrada/sada). O principal componente da CPU responsvel
pela funo de controle a UC (unidade de controle).

Memria

Uma das partes mais importantes do computador a memria. O


processador apenas recebe dados e os processa segundo alguma pr-
programao, logo aps devolvendo-os, no importando de onde vm e
para onde vo. Os programas a serem executados e os dados a serem
processados (inclusive os que j o foram) ficam na memria, visto que a
rea para armazenamento de dados do processador pequena.
Todo computador dotado de uma quantidade (que pode variar de
mquina para mquina) de memria a qual se constitui de um conjunto de
circuitos capazes de armazenar (por perodos mais curtos ou mais longos
de tempo) as unidades de dados e os programas a serem executados
pela mquina. Nos computadores de uso geral, possvel encontrar
diferentes denominaes para as diferentes categorias de memria que
neles so encontradas:
- memria principal: ou memria de trabalho, onde normalmente
devem estar armazenados os programas e dados a serem manipulados
pelo processador;
- memria secundria: que permite armazenar uma maior

26 UNIDADE 01
quantidade de dados e instrues por um perodo de tempo mais longo;
os discos rgidos so exemplos mais imediatos de memria secundria
de um computador, mas podem ser citados outros dispositivos menos
recentes como as unidades de fita magntica e os cartes perfurados
introduzidos por Hollerith;
- memria cache: conceito introduzido mais recentemente e
que se constitui de uma pequena poro de memria com curto tempo
de resposta, normalmente integrada aos processadores e que permite
incrementar o desempenho durante a realizao de um programa.
H basicamente dois tipos de memria:
- ROM (Read-Only Memory): S permitem a leitura de dados e so
lentas; em compensao no perdem seu contedo quando desligadas;
- RAM (Random Access Memory): So rpidas, permitem leitura e
escrita, porm, seu contedo perdido quando so desligadas.
Em geral a ROM utilizada para manter um programa que
executado pelo computador cada vez que ele ligado ou reiniciado. Este
programa chamado de bootstramp e instrui o computador a carregar
o SO. Dentro da ROM existem basicamente 3 programas: BIOS, POST
e SETUP. comum acontecer confuso em relao aos nomes, sendo
usado atualmente o termo BIOS como algo genrico. Para acessar o
programa de configurao, basta acessar um conjunto de teclas durante o
POST (geralmente na contagem da memria). Na maioria das mquinas,
basta apertar a tecla DEL ou Delete, porm, esse procedimento pode
variar de acordo com o fabricante. Quando o computador ligado, o
POST (Power On Self Test) entra em ao, identificando a configurao
instalada, inicializando os circuitos da placa-me (chipset) e vdeo, e
executando teste da memria e teclado. Aps, ele carrega o SO de algum
disco para a memria RAM, entregando o controle da mquina para o
SO.
Na RAM, ficam armazenados o SO, programas e dados que
estejam em processamento. O processador acessa a RAM praticamente
o tempo todo. Atualmente, a memria RAM, formada por circuitos
de memria dinmica (DRAM - Dynamic RAM), mais lenta que o
processador, ocasionando wait states, at que a memria possa entregar
ou receber dados, diminuindo assim o desempenho do micro. Memrias
mais rpidas amenizam este problema, assim como a utilizao de cache
de memria.
A cache uma memria esttica (SRAM - Static RAM) de
alto desempenho, utilizada para intermediar a comunicao com o

Organizao de Computadores 27
processador. Na maioria das vezes, o processador no acessa o contedo
da RAM, mas sim uma cpia que fica na cache. A cache utilizada desde
o 386DX, e a partir dos 486, todos os processadores passaram a conter
uma quantidade de memria esttica, conhecida como L1 ou interna.
A cache fora do processador conhecida como L2 ou externa. Hoje,
existem processadores com mais nveis de cache. Uma ressalva que
os processadores a partir do Pentium II possuem a L2 dentro da caixa
que envolve o processador, no fazendo mais sentido as denominaes
interna e externa.
A DRAM formada por capacitores, que so fceis de construir,
baratos e podem aglomerar muitas clulas de memria em pequeno
espao fsico. O problema que, aps algum tempo, eles descarregam,
dessa forma dever haver um perodo de recarga, chamado refresh.
Durante este perodo, a memria geralmente no pode ser acessada,
limitando assim com uma imposio fsica sua velocidade. Por outro
lado, a SRAM formada por caros circuitos digitais chamados flip-
flops, que armazenam dados sem a necessidade de ciclos para refresh.
Um flip-flop, por ser um circuito completo, maior que um capacitor;
consequentemente, onde cabem muitos capacitores, h somente alguns
flip-flops. Devido ao preo, tamanho e consumo, no possvel que um
micro tenha toda sua RAM de memria esttica, ento, a partir dos 386,
utiliza-se um modelo hbrido com SRAM como cache e DRAM como RAM
propriamente dita.

Operaes no sistema de memria


Um modelo de sistema de memria simplificado pode ser dado
por suportar somente duas operaes: carga e armazenamento. As
operaes de armazenamento ocupam dois operandos: um valor a ser
armazenado e o endereo onde o valor deve ser armazenado. Eles
colocam o valor especificado na posio de memria especificada pelo
endereo. Operao de carga tem um operando que especifica um
endereo e retorna o contedo dessa posio de memria para o seu
destino.
Utilizando este modelo, pode-se imaginar a memria como
funcionando como uma grande folha de papel pautado, onde cada
linha na pgina representa um local de armazenamento para um byte.
Para escrever (armazenar) na memria, conta-se de cima para baixo
na pgina at que se atinja a linha especificada pelo endereo, apaga-
se o valor escrito naquela linha e escreve-se o novo valor. Para ler

28 UNIDADE 01
(carregar) um valor, conta-se de cima para baixo at que se atinja a linha
especificada pelo endereo e l-se o valor escrito naquele endereo. A
maioria dos computadores permite que mais de um byte de memria
seja armazenado ou carregado por vez. Geralmente, uma operao de
carga ou armazenamento opera sobre uma quantidade de dados igual
largura de bits do sistema, e o endereo enviado ao sistema de memria
especifica a posio do byte de dados de endereo mais baixo a ser
carregado ou armazenado. Por exemplo, um sistema de 32 bits carrega
ou armazena 32bits (4 bytes) de dados em cada operao, nos 4 bytes
comeam o endereo da operao, de modo que uma carga a partir da
localizao 424 retornaria uma quantidade de 32 bits contendo os bytes
das localizaes 424, 425, 426 e 427.
Para simplificar o projeto dos sistemas de memria, alguns
computadores exigem que as cargas e armazenamentos sejam alinhados,
significando que o endereo de uma referncia de memria precisa ser
mltiplo do tamanho do dado que est sendo carregado ou armazenado,
de modo que uma carga de 4 bytes precisa ter um endereo que seja um
mltiplo de 4, um armazenamento de 8 bytes precisa ter um endereo
que seja mltiplo de 8, e assim por diante. Outros sistemas permitem
cargas e armazenamentos desalinhados, mas demora mais tempo para
completar tais operaes do que com cargas alinhadas.
Uma questo adicional com carga e armazenamento de vrios
bytes a ordem na qual eles so escritos na memria. H dois tipos de
ordenao diferentes que so utilizados em computadores modernos: little
endian e big endian. No sistema little endian o byte menos significativo (o
valor menor) de uma palavra escrito no byte de endereo mais baixo,
e os bytes so escritos na ordem crescente de significncia. No sistema
big endian, a ordem inversa, o byte mais significativo escrito no byte
de memria com o endereo mais baixo. As linhas abaixo mostram o
exemplo de como os sistemas little endian e big endian escreveriam uma
palavra de 32 bits (4 bytes) no endereo 0x1000.

Palavra = 0x90abcdef
Endereo = 0x1000
' 0x1000 0x1001 0x1002 0x1003
Little endian ef cd ab 90
Big endian 90 ab cd ef

Exemplo retirado de Carter (2003).

Organizao de Computadores 29
O projeto de sistemas de memria tem um impacto enorme sobre
o desempenho de sistemas de computadores e frequentemente o fator
limitante para a rapidez de execuo de uma aplicao. Tanto a largura
de banda (quantos dados podem ser carregados ou armazenados em
um perodo de tempo) quanto a latncia (quanto tempo uma operao de
memria em especial demora para ser completada) so importantes para
o desempenho da aplicao.
Outras questes importantes no projeto de sistemas de memria
incluem a proteo (evitar que diferentes programas acessem dados uns
dos outros) e como o sistema de memria interage com o sistema de E/S.
Existem vrias tecnologias de construo de memria RAM: FPM
(Fast Page Mode), EDO (Extended Data Output), BEDO (Burst Extended
Data Output), SDRAM (Synchronous Dynamic RAM), PC-100, PC-
133, DDR-SDRAM (Double Data Rate SDRAM), ESDRAM (Enhanced
SDRAM), RDRAM (Rambus DRAM), SLDRAM (SyncLink DRAM), etc.
Alm da tecnologia, tambm existem vrios tipos de mdulos de
memria. Como exemplo, temos: SIPP (Single in Line Pin Package),
SIMM30-(Single in Line Memory Module), SIMM-72 (Single in Line Memory
Module), DIMM (Double in Line Memory Module), RIMM (Rambus In Line
Memory Module), etc.

EXERCCIO DE FIXAO

1. Quais so os trs componentes bsicos de um sistema de computador?


Faa um diagrama de blocos ilustrando os componentes bsicos e
comente as funcionalidades de cada um deles.
2. Qual a diferena entre linguagem de mquina e linguagem de
montagem? Por que a linguagem de montagem considerada mais fcil
para seres humanos programarem do que a linguagem de mquina?
3. Explique o processo de desenvolvimento e execuo de um programa
em linguagem de alto nvel.
4. Explique as vantagens de utilizar um compilador em vez de um
montador e diferencie compilador de interpretador.
6. Explique e mostre na forma de esquema grfico o funcionamento
bsico dos sistemas de computador.
7. Para que servem barramentos nos computadores? Explique mostrando
os dois principais tipos.
8. Qual a funo dos barramentos de dados, de endereo e de controle?

30 UNIDADE 01
9. Quais os componentes bsicos de um processador? Explique a funo
de cada um.
10. Explique o ciclo bsico de execuo de um programa.
11. Qual a diferena entre memria RAM e ROM?
12. Explique a diferena entre as ordenaes big endian e little endian.

RESUMO

O alto nvel de popularidade atingido pelos computadores


nos ltimos anos permitiu tambm quebrar uma srie de barreiras,
particularmente no que diz respeito terminologia associada. Atualmente,
expresses como bits, bytes, hard disk, RAM e outras deixaram de fazer
parte do vocabulrio tcnico dos especialistas para compor o de grande
parte dos usurios destas mquinas. Entretanto, os aspectos bsicos de
funcionamento de um computador ainda so reservados aos profissionais
da rea e devem assim permanecer indefinidamente.
Nesta unidade examinaremos, como introduo, alguns aspectos
importantes dos componentes e do funcionamento de computadores,
sendo que mais detalhes sero apresentados ao longo deste curso. O
texto desta unidade influenciado fortemente pelo livro Arquitetura de
Computadores de Nicholas Carter, por ser um exemplar de fcil leitura e
conter uma vasta quantidade de exerccios; e pelas notas de aula, muito
bem elaboradas, do Professor Marcelo Rebonatto.
O captulo acompanhado de exerccios, sem a soluo, porque
preferimos deixar o prazer desta tarefa ao leitor. A bibliografia e a
webliografia ao fim das notas so mais do que suficientes para adquirir
um conhecimento razovel sobre a organizao de computadores. Ao
trmino da leitura desta unidade, o estudante dever: a) compreender o
funcionamento bsico de um computador; b) entender o funcionamento
de programas; e c) ser capaz de identificar os componentes principais de
um computador.

Organizao de Computadores 31
UNIDADE 2
PROJETO DE
PROCESSADORES

OBJETIVOS:

Entender a arquitetura de processadores;


Conhecer algumas medidas de desempenho de sistemas
computacionais;
Compreender o funcionamento dos pipelines;
Estar familiarizado com mquinas superpipelines de mquinas
superescalares;
Ser capaz de diferenciar mquinas RISC de mquinas CISC.
PROJETO DE
PROCESSADORES

Introduo

A primeira caracterstica a considerar num computador sua


Unidade Central de Processamento - UCP, que poder fornecer uma srie
de indicaes sobre o equipamento. A UCP ou CPU (Central Processing
Unit) tambm pode ser chamada de processador ou microprocessador,
os quatro termos so equivalentes.
Tudo o que acontece num computador provm da CPU, que
gerencia todos os recursos disponveis no sistema. Seu funcionamento
coordenado pelos programas, que indicam o que deve ser feito e quando.
Basicamente, a CPU executa clculos muito simples como somas e
comparaes entre nmeros, mas com uma caracterstica muito especial:
uma velocidade extremamente elevada.
A funo das CPUs sempre a mesma. O que as diferencia so
sua estrutura interna e, o mais importante, o fato de cada uma ter seu
conjunto de instrues prprio. Ou seja, um programa escrito para uma
CPU dificilmente poder ser executado diretamente em outra - esse um
dos principais motivos da incompatibilidade entre os computadores.

Os microprocessadores so geralmente circuitos integrados
dispostos em pastilhas onde o nmero de pinos varia de 40 a 132. Como
ilustrado na figura 1.1, os sinais associados a estes pinos permitiro ao
microprocessador a troca de informao com o seu ambiente; ou seja,
memria e circuitos de E/S.

Projeto de Processadores 35
Figura 1.1: Microprocessador.
Figura adaptada de Moresi (2002).

Uma anlise detalhada dos sinais disponveis nos pinos de


um microprocessador permite conhecer os seus diferentes modos de
funcionamento (lgico e eltrico) e as suas possibilidades em termos de
interfaces. Os sinais externos dos computadores so organizados em
trs grupos: os sinais de endereo, os sinais de dados e os sinais de
controle. A cada um destes grupos associada uma linha de comunicao
(ou um barramento), respectivamente, o barramento de endereos, o
barramento de dados e o barramento de controle. Estes barramentos
permitiro conectar os pinos do microprocessador aos pinos de mesma
funo dos circuitos de memria ou de E/S.
A figura 1.2 mostra, de forma bem simplificada, os barramentos
em um microprocessador. Temos o chamado barramento de dados,
atravs do qual trafegam os dados que so transmitidos ou recebidos
pelo microprocessador. Os dados transmitidos podem ser enviados para
a memria ou para um dispositivo de sada, como o vdeo.
Os dados recebidos podem ser provenientes da memria, ou de
um dispositivo de entrada, como o teclado. Cada uma das "perninhas"
do microprocessador pode operar com um bit. No microprocessador da
figura 1.2, temos um barramento de dados com 16 bits. Observe que
as linhas desenhadas sobre o barramento de dados possuem duas
setas, indicando que os bits podem trafegar em duas direes, saindo
e entrando no microprocessador. Dizemos ento que o barramento de
dados bidirecional.

36 UNIDADE 02
Figura 1.2: Representao simplificada de um microprocessador.
Figura adaptada de Moresi (2002).

Um exemplo de funcionamento o carregamento de uma instruo.


O microprocessador inicialmente carrega o endereo da instruo no
barramento de endereos; em seguida, ele ativa um sinal no barramento
de controle para especificar memria uma operao de leitura; em
resposta, a memria vai colocar, no barramento de dados, a palavra
representando a instruo requisitada e previnir o microprocessador
(com um sinal no barramento de controle); ao perceber o sinal de
validao, o microprocessador l a palavra no barramento de dados e a
armazena num de seus registros internos.
Alm dos barramentos, a figura 1.2 mostra ainda dois sinais de
controle que servem para definir se a operao a ser realizada uma
leitura ou uma gravao, e se deve atuar sobre a memria ou sobre um
dispositivo de E/S. So eles:
- MIO: Este sinal indica se a operao diz respeito memria ou
a E/S;
- RW: Este sinal indica se a operao uma leitura ou uma
gravao;
Atravs desses dois sinais, podem ser definidas 4 operaes
bsicas: a) leitura da memria; b) escrita na memria; c) leitura de E/S

Projeto de Processadores 37
(Ex: do teclado); e d) escrita em E/S (Ex.: no vdeo).
Outros exemplos de sinais do barramento de controle:
- INT: Este sinal uma entrada que serve para que dispositivos
externos possam interromper o microprocessador para que seja realizada
uma tarefa que no pode esperar. Por exemplo, a interface de teclado
interrompe o microprocessador para indicar que uma tecla foi pressionada.
Esta tecla precisa ser lida e seu cdigo deve ser armazenado na memria
para processamento posterior. As interfaces de drives e do disco rgido
interrompem o microprocessador para avisar o trmino de uma operao
de leitura ou escrita. Vrios outros dispositivos tambm precisam gerar
interrupes. Como existe apenas uma entrada INT, o microprocessador
opera em conjunto com um chip chamado Controlador de Interrupes.
Este chip encarregado de receber requisies de interrupo de vrios
dispositivos e envi-las ao microprocessador, de forma ordenada, atravs
do sinal INT.
- NMI: Este um sinal de interrupo especial para ser usado
em emergncias. Significa Non Maskable Interrupt, ou interrupo no
mascarvel. Em outras palavras, esta interrupo deve ser atendida
imediatamente. Ao contrrio do sinal INT, que pode ser ignorado pelo
microprocessador durante pequenos intervalos de tempo (isto se chama
"mascarar a interrupo"), o sinal NMI uma interrupo no mascarvel.
Nos PCs, o NMI usado para informar erros de paridade na memria.
- INTA: Significa Interrupt Acknowledge, ou seja, reconhecimento
de interrupo. Serve para o microprocessador indicar que aceitou
uma interrupo e que est aguardando que o dispositivo que gerou
a interrupo identifique-se, para que seja realizado o atendimento
adequado.
Existem ainda mais de uma dzia de sinais no barramento de
controle. Seu estudo muito interessante para quem est preocupado
em aprender detalhadamente como funciona um microprocessador e
uma placa de CPU. Aqui no iremos abord-los. Nosso objetivo apenas
fazer uma apresentao simplificada.

Componentes

As funes de controle e processamento necessitam de


componentes, compostos de circuitos digitais, para sua realizao.
Estes componentes so interligados interna e externamente atravs de
barramentos. A seguir detalharemos os principais componentes de um

38 UNIDADE 02
processador.
Unidade Lgica e Aritmtica (ULA):
A ULA o dispositivo da CPU que executa realmente as operaes
matemticas com os dados. Estas operaes podem ser, por exemplo,
soma, subtrao, multiplicao, diviso, operaes lgicas AND, OR,
XOR, NOT, deslocamento de bits direita e esquerda, incremento
e decremento, comparaes. A ULA um aglomerado de circuitos
lgicos e componentes eletrnicos simples que, integrados, realizam as
operaes j mencionadas. Ela pode ser uma parte pequena da pastilha
do processador, usada em pequenos sistemas, ou pode compreender
um considervel conjunto de componentes lgicos de alta velocidade. A
despeito da grande variao de velocidade, tamanho e complexidade, as
operaes aritmticas e lgicas realizadas por uma ULA seguem sempre
os mesmos princpios fundamentais.
O circuito de clculo mais simples o somador, que adiciona dois
nmeros de n bits. A ULA o circuito que efetua diversas operaes
aritmticas e lgicas entre dois operandos. O tipo de tratamento a efetuar
deve ser informado atravs de sinais de seleo de operao. Para
revisar, a figura 1.3 mostra a composio de uma ULA, capaz de realizar
quatro diferentes operaes com dois nmeros binrios A e B: A e B, A ou
B, Complemento de B e A+B.

Figura 1.3: ULA de quatro operaes sobre 1 bit. (desenhar)


Figura retirada de Moresi (2002).

Projeto de Processadores 39
Registradores:
um dispositivo capaz de memorizar uma informao. Na
arquitetura de um microprocessador, os registradores, geralmente
numerosos, so utilizados para assegurar o armazenamento temporrio
de informaes importantes para o processamento de uma dada instruo.
Para que um dado possa ser transferido para a ULA, necessrio
que ele permanea, mesmo que por um breve instante, armazenado
em um registrador. Alm disso, o resultado de uma operao aritmtica
ou lgica realizada na ULA deve ser armazenado temporariamente,
de modo que possa ser utilizado mais adiante ou apenas para ser, em
seguida, transferido para a memria. Para atender a estes propsitos, a
CPU fabricada com certa quantidade de registradores destinados ao
armazenamento de dados. Servem, pois, de memria auxiliar da ULA.
No projeto de processadores, os registradores so normalmente
divididos de forma a trabalharem com dados inteiros e em ponto
flutuante. Os processadores implementam o bando de registradores
separados por dois motivos. Primeiro, isto permite que sejam colocados
fisicamente prximos s unidades de execuo que os utilizam: o banco
de registradores para inteiros pode ser colocado prximo s unidades que
executam operaes inteiras e o de ponto flutuante prximo s unidades
de execuo de ponto flutuante. Isto reduz o comprimento da fiao que
liga o banco de registradores s unidades de execuo e, portanto, reduz
o tempo necessrio para enviar dados de um para outro. O segundo
motivo que bancos de registradores separados ocupam menos espao
nos processadores que executam mais de uma instruo por ciclo. Os
detalhes disto esto alm do escopo deste curso, mas o tamanho de
um bando de registradores cresce aproximadamente com o quadrado do
nmero de leituras e escritas simultneas que o banco permite.
Conceitualmente, registrador e memria so semelhantes. So a
localizao, a capacidade de armazenamento e os tempos de acesso s
informaes que os diferenciam. Os registros se localizam no interior de
um microprocessador, enquanto a memria externa a este.
Unidade de Controle (UC):
o dispositivo mais complexo da CPU. Alm de possuir a lgica
necessria para realizar a movimentao de dados e instrues de
e para a CPU, atravs dos sinais de controle que emite em instantes
de tempo programados, esse dispositivo controla a ao da ULA. Os
sinais de controle emitidos pela unidade de controle ocorrem em vrios
instantes durante o perodo de realizao de um ciclo de instruo e, de

40 UNIDADE 02
modo geral, todos possuem uma durao fixa e igual, originada em um
gerador de sinais usualmente conhecido como relgio. Ao contrrio de
circuitos integrados mais comuns, cuja funo limitada pelo hardware,
a unidade de controle mais flexvel. Ela recebe instrues da unidade
de E/S, as converte em um formato que pode ser entendido pela unidade
de aritmtica e lgica, e controla qual etapa do programa est sendo
executada.
Relgio ou clock:
o dispositivo gerador de pulsos cuja durao chamada de
ciclo. A quantidade de vezes em que este pulso bsico se repete em um
segundo define a unidade de medida do relgio, denominada frequncia,
a qual tambm usamos para definir velocidade na CPU. A unidade de
medida usual para a frequncia dos relgios de CPU o Hertz (Hz), que
significa 1 ciclo por segundo. Como se trata de frequncias elevadas,
abreviam-se os valores, usando-se milhes de Hertz, ou de ciclos por
segundo (MegaHertz ou simplesmente, MHz). Assim, por exemplo, se
um determinado processador funciona como seu relgio oscilando 25
milhes de vezes por segundo, sua frequncia de operao de 25 MHz.
Como a durao de um ciclo, seu perodo o inverso da frequncia,
ento cada ciclo, neste exemplo, ser igual ao inverso de 25.000.000 ou
1/25.000.000=0,00000004 ou 40 nanossegundos.
Registrador de Dados da Memria (RDM):
Armazena os dados que esto sendo transferidos de/para a
memria. Em geral, o RDM possui um tamanho igual ao da palavra do
barramento de dados.
Registrador de Endereos da Memria (REM):
Armazena o endereo da clula onde deve ser feita a prxima
operao de leitura ou escrita na memria. O REM possui um tamanho
igual ao dos endereos da memria.
Registrador de Instrues (RI):
o registrador que tem a funo especfica de armazenar a
instruo a ser executada pela CPU. Ao se iniciar um ciclo de instruo,
a UC emite o sinal de controle que acarretar a realizao de um ciclo
de leitura para buscar a instruo na memria, e que, via barramento de
dados e RDM, ser armazenada no RI.
Contador de Instrues ou Program Counter (PC):
o registrador cuja funo especfica armazenar o endereo
da prxima instruo a ser executada. To logo a instruo que vai
ser executada seja buscada (lida) da memria para a CPU, o sistema

Projeto de Processadores 41
providencia a modificao do contedo do PC de modo que ele passe a
armazenar o endereo da prxima instruo na sequncia. Por isso,
comum definir a funo do PC como sendo a de "armazenar o endereo
da prxima instruo", que o que realmente ele faz durante a maior
parte da realizao de um ciclo de instruo.
Decodificador de instrues:
um dispositivo utilizado para identificar as operaes a serem
realizadas, que esto correlacionadas instruo em execuo. Em
outras palavras, cada instruo uma ordem para que a CPU realize
uma determinada operao. Como so muitas instrues, necessrio
que cada uma possua uma identificao prpria e nica. A unidade de
controle est, por sua vez, preparada para sinalizar adequadamente aos
diversos dispositivos da CPU, conforme ela tenha identificado a instruo
a ser executada. O decodificador recebe na entrada um conjunto de bits
previamente escolhido e especfico para identificar uma instruo de
mquina e possui 2N sadas, sendo N a quantidade de algarismos binrios
do valor de entrada. Se o valor presente sobre as entradas k, apenas
a sada de ordem k ser ativa. O decodificador analisa a informao nas
suas entradas e fornece na sada, de maneira exclusiva, a indicao ou
significado desta informao dentre vrias possibilidades.

Funcionalidades

Muitos autores dividem as atividades realizadas pela CPU em


duas grandes categorias funcionais:
Funo Processamento:
Encarrega-se de realizar as atividades relacionadas com a efetiva
execuo de uma operao, ou seja, processar. O dispositivo principal
desta rea de atividades de uma CPU chamado de Unidade Lgica
Aritmtica - ULA. Os demais componentes relacionados com a funo
processamento so os registradores, que servem para armazenar dados
a serem usados pela ULA. A interligao entre estes componentes
efetuada pelo barramento interno da CPU.
A capacidade de processamento de uma CPU em grande
parte determinada pelas facilidades embutidas no hardware da ULA
para realizar as operaes matemticas projetadas. Um dos elementos
fundamentais a definio do tamanho da palavra. Um tamanho maior
ou menor de palavra acarreta, sem dvida, diferenas fundamentais no
desempenho da CPU e, por conseguinte, do sistema como um todo.

42 UNIDADE 02
Funo Controle:
exercida pelos componentes da CPU que se encarregam das
atividades de busca, interpretao e controle da execuo das instrues,
bem como do controle da ao dos demais componentes do sistema
de computao. A rea de controle projetada para entender o que
fazer, como fazer e comandar quem vai fazer no momento adequado.
Uma analogia pode ser feita com os seres humanos, imaginando que
a rea de controle o crebro que comanda o ato de andar, enquanto
a rea de processamento so os msculos e ossos das pessoas que
realizam efetivamente o ato. Os nervos podem ser relacionados com os
barramentos entre os diversos elementos envolvidos.
O componente vital para as funes de controle a Unidade
de Controle (UC). Ela recebe como entrada o valor do registrador de
instrues e decodifica-o (atravs do decodificador de instrues). Para
cada cdigo de instrues, ela gera uma sequncia de sinais diferentes,
ativando os circuitos correspondentes para cada uma das tarefas
necessrias para a busca e execuo da instruo a ser executada.
Cada sinal de controle comanda uma microinstruo (que denota
uma tarefa a ser executada para a execuo de uma operao). Uma
microinstruo pode ser responsvel pela realizao de uma carga em um
registrador, uma seleo de um dado para entrada em um determinado
componente, uma ativao da memria, a seleo de uma operao da
ULA ou a habilitao de um circuito lgico, para citar alguns exemplos.
Os dispositivos bsicos que devem fazer parte daquela rea
funcional so: unidade de controle, decodificador, registrador de
instruo, contador de instruo, relgio e os registradores de endereo
de memria e de dados da memria.

Ciclo de instruo e microprogramao

A CPU trabalha diretamente com a memria principal e o


processamento feito por ciclo regulado pelo clock (relgio). Estas
etapas compem o que se denomina ciclo de instruo. Este ciclo se
repete indefinidamente at que o sistema seja desligado, ocorra algum
tipo de erro, ou seja encontrada uma instruo de parada.

A sequncia resumida desse ciclo :


- Buscar (cpia) instruo na memria principal;
- Executar aquela instruo;

Projeto de Processadores 43
- Buscar a instruo seguinte;
- Executar a instruo seguinte;
- E assim por diante (milhes de vezes por segundo).

Primeiro, o processador busca a instruo na memria. Ento,


a instruo decodificada para determinar qual instruo ela e quais
so os seus registradores de entrada e sada. A instruo decodificada
representada por um conjunto de bits que dizem ao hardware como
executar a instruo. Estes padres de bits so enviados para a prxima
seo da unidade de execuo, a qual l as entradas da instruo a partir
dos registradores. A instruo decodificada e os valores dos registradores
de entrada so encaminhados para o hardware que calcula o resultado
da instruo, e o resultado escrito de volta no banco de registradores.
As instrues que acessam o sistema de memria tm fluxo de
execuo semelhante, exceto que a sada da unidade de execuo
enviada ao sistema de memria por ser o endereo de uma operao de
leitura, ou o endereo e o dado de uma operao de escrita.
A figura 1.4 exemplifica a execuo de instrues. Os mdulos
que implementam os diferentes passos na execuo da instruo so
fisicamente dispostos prximos um ao outro interconectados atravs de
barramento. medida que a instruo executada, os dados fluem pelo
barramento, de um mdulo para o seguinte, com cada mdulo executando
o seu trabalho em uma sequncia.

Figura 1.4: Execuo de instrues.


Figura adaptada de Carter (2003).

44 UNIDADE 02
Este ciclo de instruo pode ser descrito em LTR (Linguagem de
Transferncia entre Registradores), de modo que possamos acompanhar
sua realizao com a movimentao de informaes entre os componentes
da CPU. As linhas abaixo ilustram este Algoritmo de funcionamento.

Iniciar
CICLO RI MEM[PC]
PC PC + 1
Interpretar o cdigo da operao
Enquanto houver operandos no carregados
Buscar operandos
PC PC + 1
Executar a instruo
Ir para CICLO
Fim

Inicialmente, o contedo de memria no endereo da prxima


instruo a ser executada (PC) tem seu valor transferido para RI.
Logo aps, o valor de PC incrementado para o endereo da prxima
instruo a ser executada. O decodificador de instrues ir receber os
bits referentes ao cdigo da operao e decodific-lo, dando entrada
na UC este valor. A UC gera os sinais necessrios para a execuo da
Instruo.
Em um processador microprogramado, o hardware no precisa
executar diretamente as instrues do conjunto de instrues. Ao
invs disso, o hardware executa microoperaes muito simples, e
cada instruo determina uma sequncia de microoperaes que so
utilizadas para implementar a instruo. Essencialmente, cada instruo
do conjunto de instrues traduzida pelo hardware em um pequeno
programa de microinstrues, de modo semelhante ao modo como o
compilador traduz cada instruo de um programa em linguagem de alto
nvel para uma sequncia de instrues em linguagem de mquina.
Processadores microprogramados possuem uma pequena
memria que mantm a sequncia de microoperaes utilizadas para
implementar uma instruo do conjunto de instrues. Para executar uma
instruo, o processador acessa essa memria para localizar o conjunto
de microinstrues necessrias para implementar a instruo e, ento,
executa as microinstrues em sequncia.
Processadores modernos tendem a no utilizar microprogramao

Projeto de Processadores 45
por dois motivos. Primeiramente porque agora se tornou prtico
implementar a maior parte das instrues diretamente no hardware,
por causa dos avanos na tecnologia VLSI, o que torna o microcdigo
desnecessrio. Em segundo lugar, processadores microprogramados
tendem a ter um desempenho pior que os processadores no
microprogramados por causa do tempo adicional envolvido na busca de
cada microinstruo na memria de microinstrues.

Medidas de desempenho

A medida geral de desempenho de um sistema de computao


depende fundamentalmente da capacidade e velocidade de seus
diferentes componentes, da velocidade com que estes componentes se
comunicam entre si e do grau de compatibilidade entre eles (p. ex., se
a velocidade da CPU de um sistema muito maior que a da memria).
Considerando a existncia de tantos fatores que influenciam o
desempenho de um sistema de computao, desenvolveram-se diversos
meios de medir seu desempenho, entre os principais relacionados
exclusivamente com a CPU, destacam-se MIPS e FLOPS.
O desempenho dos processadores, em geral, medido em
termos de sua velocidade de trabalho. Como o trabalho da CPU
executar instrues, criou-se a unidade MIPS Milhes de instrues por
segundo. O MIPS muito questionado, pois mede apenas a execuo
de instrues, sendo que existem diferentes instrues, com tempos
de execuo distintos, como, por exemplo, multiplicao de nmeros
inteiros e multiplicao de nmeros reais (ponto flutuante). Em contraste
com o MIPS, FLOPS Operaes de ponto flutuante por segundo, mede
basicamente o desempenho da ULA, analisando apenas as instrues
mais complexas (as que envolvem ponto flutuante). Hoje em dia, os
microprocessadores esto na faixa de MFLOS (milhes de flops) sendo
encontradas mquinas com GFLOPS (supercomputadores).

Mais de uma instruo por ciclo

Durante a descrio do funcionamento da CPU na realizao de


seus ciclos de instruo, foi observado que, embora o ciclo de instruo
seja composto de vrias etapas, ele realizado de forma sequencial; isto
, uma etapa se inicia aps a concluso da etapa anterior. Desta forma,
enquanto a fase de decodificao da instruo estava sendo executada,

46 UNIDADE 02
a busca (RDM e REM) e a execuo (ULA) estavam ociosas.
A situao acima leva a crer que a CPU no pode executar mais
de uma instruo por ciclo, mas isso no verdade. Graas aos avanos
da tecnologia, existem CPUs que executam mais de uma instruo por
ciclo, sendo chamadas de superescalares.

Pipeline
O pipeline uma tcnica de implementao de CPU onde
mltiplas instrues esto em execuo ao mesmo tempo. O processador
construdo em diversos estgios distintos, cada um responsvel pela
execuo de uma parte da instruo e possuindo o seu prprio bloco de
controle. Assim que um estgio completa sua tarefa com uma instruo,
passa esta para o estgio seguinte e comea a tratar da prxima
instruo. Uma vez que diversas instrues so executadas ao mesmo
tempo, obtm-se um acrscimo no desempenho do processador.
A figura 1.5 exemplifica um pipeline na produo em srie de
bicicletas. A diviso das tarefas resultou em 5 etapas. Na primeira, feita
a estrutura da bicicleta com pedais e correia; na segunda instalada a
roda dianteira, na terceira colocada a roda traseira, na quarta colocado
o assento e, por fim, na quinta e ltima etapa colocado o guidom.
conveniente lembrar que o tempo para a produo de uma bicicleta no
diminui, mas o tempo entre bicicletas sim: a primeira bicicleta demora
cinco unidades de tempo para ser produzida, mas, logo a seguir, em
cada unidade de tempo, uma nova bicicleta produzida (se no houver
problemas).

Figura 1.5: Pipeline.


Figura adaptada de Rebonatto (2003).

Projeto de Processadores 47
Processadores superescalares
Processadores superescalares possuem vrias unidades de
execuo permitindo que diversas instrues sejam executadas ao
mesmo tempo. Um aspecto importante neste tipo de processador que
como mais de uma instruo executada simultaneamente e devido a
tempos de execuo diferentes entre elas ou a conflitos ocorridos, pode
se dar a execuo de instrues fora da ordem original do programa. A
figura 1.6 ilustra este tipo de organizao de CPUs.

Figura 1.6: Maquina superescalar.


Figura adaptada de Rebonatto (2003).

Estes processadores possuem unidades funcionais especficas


para cada tipo de instruo. As unidades funcionais podem internamente
ser divididas em vrias etapas cada uma. Desta forma, tem-se pipelines
distintos: para execuo de instrues envolvendo nmeros inteiros,
reais e desvios.

EXERCCIO DE FIXAO

1. Defina processador enfocando qual tipo de operaes ele responsvel.


2. Mostre e explique de forma resumida os componentes de um processador.
3. Explique as funes de controle e processamento de um processador.
4. Quais as etapas de ciclo de instruo? Explique-as.
5. Se ler uma instruo da memria gasta 5 ns, decodificar gasta 2ns, 3 ns
para ler o banco de registradores, 4 ns para executar o clculo exigido pela
instruo e 2 ns para escrever o resultado no banco de registradores, qual
a frequncia mxima de relgio do processador sabendo que fmax = 1/
durao do ciclo?
6. O que microprogramao? Por que foi utilizada em computadores
antigos? Por que os processadores atuais abandonaram essa tcnica?
7. Explique a ideia de pipeline e processadores superescalares.
8. Por que processadores implementam bancos de registradores separados

48 UNIDADE 02
para inteiros e ponto flutuante?
__________________________________________________________

PIPELINE E MQUINAS SUPERESCALARES

Introduo

A maioria das arquiteturas e processadores projetados depois


de 1990 possui uma organizao chamada pipeline. A traduo literal
de pipeline seria linha de dutos, uma traduo mais aproximada do
significado que este termo assume em arquiteturas de computadores
seria linha de montagem. Organizar a execuo de uma tarefa em
pipeline significa dividir a execuo desta tarefa em estgios sucessivos,
exatamente como ocorre na produo de um produto em uma linha de
montagem.
Considere uma tarefa que utiliza, para sua execuo, um mdulo
de processamento executando k subtarefas. No esquema apresentado na
figura 2.1, se cada subtarefa requer um tempo de execuo t segundos,
a tarefa como um todo ser executada em kt segundos. Para a execuo
de uma sequncia de tais tarefas, cada nova tarefa na sequncia s
poder ter sua execuo iniciada aps kt segundos, o tempo necessrio
para a liberao do mdulo de processamento.

Figura 2.1: Execuo de tarefas.


Figura adaptada de Ricarte (1999).

Considere uma abordagem alternativa (figura 2.2) na qual o mdulo


de processamento dividido em k mdulos menores (estgios), cada um
responsvel por uma subtarefa, cada um operando concorrentemente
aos demais estgios:

Projeto de Processadores 49
Figura 2.2: Princpio de pipeline.
Figura adaptada de Ricarte (1999).

O princpio da tcnica de pipelining poder iniciar uma nova tarefa


antes que o resultado para a tarefa anterior na sequncia de tarefas
tenha sido gerado. A utilizao dos estgios de um pipeline pode ser
graficamente representada atravs de um diagrama de ocupao espao
tempo. Por exemplo, para um pipeline de quatro estgios mostrado na
figura 2.3. Na execuo em pipeline, cada tarefa individualmente ainda
requer kt segundos. Entretanto, o mdulo capaz de gerar um novo
resultado a cada t segundos.

Figura 2.3: Pipeline de quatro estgios.


Figura adaptada de Ricarte (1999).

Existem algumas regras muito importantes que devem ser


seguidas quando se projeta uma arquitetura em pipeline:
- Todos os estgios devem ter a mesma durao de tempo;
- Deve-se procurar manter o pipeline cheio a maior parte do tempo;
- O intervalo mnimo entre o trmino de execuo de duas instrues
consecutivas igual ao tempo de execuo do estgio que leva mais tempo;

50 UNIDADE 02
- Dadas duas arquiteturas implementadas com a mesma tecnologia,
a arquitetura que construda usando pipeline no reduz o tempo de
execuo de instrues, mas aumenta a frequncia de execuo de
instrues (throughput).
O tempo total para a execuo de uma operao em pipeline
, em geral, ligeiramente maior que o tempo para executar a mesma
operao monoliticamente (sem pipeline). Um dos overheads associados
operao de um pipeline decorrente da necessidade de se transferir
dados entre os estgios.
H duas estratgias bsicas para controlar a transferncia de
dados entre os estgios de um pipeline: o mtodo assncrono e o mtodo
sncrono. No mtodo assncrono, os estgios do pipeline comunicam-se
atravs de sinais de handshaking, indicando a disponibilidade de dados
do estgio corrente para o prximo estgio (RDY) e indicando a liberao
do estgio corrente para o estgio anterior (ACK).

Figura 2.4: Mtodo assncrono.


Figura adaptada de Ricarte (1999).

No mtodo sncrono, os estgios do pipeline so interconectados


por latches que armazenam os dados intermedirios durante a
transferncia entre estgios, que controlada por um sinal de relgio.
Neste caso, o estgio com operao mais lenta determina a taxa de
operao do pipeline.

Figura 2.5: Mtodo sncrono.


Figura adaptada de Ricarte (1999).

Projeto de Processadores 51
O mtodo assncrono o que permite maior velocidade de
operao do pipeline. Entretanto, o mtodo sncrono o mais adotado
devido sua simplicidade de projeto e operao.
A figura 2.6 mostra a execuo tpica de instrues em um
pipeline. Cada um dos retngulos mostrados representa um banco de
flip-flops que so elementos de memria utilizados para armazenar os
resultados no final de cada estgio do pipeline. Os pipelines utilizados
em microprocessadores normalmente so sncronos, portanto um sinal
de relgio no mostrado na figura 2.7 habilita o elemento de memria a
passar seus resultados para o estgio seguinte. Como existe um nico
relgio para comandar o pipeline, o tempo gasto em todos os estgios
do pipeline idntico e no pode ser menor o que o tempo gasto no
estgio mais lento. Este tempo gasto em cada estgio o perodo do
clock utilizado para comandar o pipeline e ele determina a velocidade de
execuo das instrues.

Figura 2.6: Estrutura de uma mquina pipeline.


Figura adaptada de Vargas, 2006.

Figura 2.7: Execuo de uma sequncia de instrues em um pipeline.


Figura adaptada de Vargas, 2006.

Durao de ciclos

Para implementar pipelines, os projetistas dividem o caminho


de dados de um processador em sees e colocam latches entre cada

52 UNIDADE 02
seo, como mostra a figura 2.6. No incio de cada ciclo, os latches leem
as suas entradas e as copiam para suas sadas, as quais permanecero
constantes por todo o ciclo. Isto divide o caminho de dados em diversas
sees, cada uma das quais tem latncia de um ciclo de relgio, uma vez
que a instruo no pode passar atravs de um latch at que o prximo
ciclo seja iniciado.
Se for considerado apenas o nmero de ciclos necessrios para
executar um conjunto de instrues, pode parecer que um pipeline no
melhora o desempenho do processador. De fato, como veremos adiante,
projetar um pipeline para um processador aumenta o nmero de ciclos de
relgio que so necessrios para executar um programa, porque algumas
instrues ficam presas no pipeline esperando que as instrues que
geram suas entradas sejam executadas. O benefcio de desempenho
do pipeline vem do fato que, em um estgio, menos lgica necessita
ser executada sobre os dados, o que possibilita que processadores
com pipelines tenham ciclos de tempo reduzido comparados aos de
implementaes sem pipeline do mesmo processador. Uma vez que um
processador com pipeline tem uma taxa de rendimento de uma instruo
por ciclo, o nmero total de instrues executadas por unidade de
tempo maior em um processador com pipeline que, assim, oferece um
desempenho melhor.
A durao do ciclo em um processador com pipeline dependente
de quatro fatores: a durao do ciclo por parte do processador que
no tem pipeline, o nmero de estgios do pipeline, a homogeneidade
com que a lgica do caminho dos dados dividida entre os estgios e
a latncia dos latches. Se a lgica pode ser dividida homogeneamente
entre os estgios do pipeline, o perodo de tempo de um processador
com pipeline :
durao do ciclo com pipeline
Durao do ciclo = + latncia do tatch
com pipeline
Nmero de estgios de pipeline

Uma vez que cada estgio contm a mesma frao da lgica


original, mais um latch. medida que o nmero de estgios aumenta, a
latncia do latch torna-se uma parte cada vez menor da durao do ciclo,
limitando o benefcio de dividir um processador em um nmero muito
grande de estgios de pipeline.

Exemplo: Um processador sem pipeline tem uma durao de ciclo


de 25 ns. Qual a durao do ciclo de uma verso desse processador

Projeto de Processadores 53
com pipeline de 5 estgios divididos homogeneamente, se cada latch tem
uma latncia de 1 ns? E se o processador for dividido em 50 estgios?
Que concluso podemos tirar quando comparado os dois processadores?
Soluo: Aplicando a equao, a durao do ciclo para o pipeline
de 5 estgios (25ns/5) + 1 = 6 ns. Para o pipeline de 50 estgios a
durao do ciclo (25ns/50)+1 = 1,5 ns. No pipeline de 5 estgios a
latncia do latch de apenas 1/6 da durao global do ciclo, enquanto
que no pipeline de 50 estgios a latncia de 2/3 da durao total do
ciclo. Isso mostra que aumentando a quantidade de estgios, a latncia
do latch influencia muito na durao total do ciclo.
Exemplo retirado de Carter (2003).

Com frequncia, a lgica do caminho de dados no pode ser


dividida em estgios de pipeline com latncia igual. Por exemplo, acessar
o banco de registradores pode demorar 3 ns, enquanto que decodificar
uma instruo pode demorar 4 ns. Quando esto decidindo a forma de
dividir o caminho de dados em estgio de pipeline, os projetistas devem
equilibrar o seu desejo de que cada estgio contenha a mesma latncia
e a quantidade de dados que precisa ser armazenada no latch.
Algumas partes do caminho de dados, como a lgica de
decodificao das instrues, so irregulares, fazendo com que seja difcil
dividi-las em estgios. Para outras partes que geram grande quantidade
de valores intermedirios, necessrio colocar os latches em locais onde
haja menos resultados e, assim, menos bits precisam ser armazenados.
Quando um processador no pode ser dividido em estgios de
pipeline com latncia igual, a durao do ciclo de relgio do processador
igual latncia do estgio de pipeline mais longo, mais o atraso do
latch, uma vez que a durao do ciclo tem que ser longa o suficiente para
que o estgio de pipeline mais longo possa completar e armazenar os
resultados no latch que est entre ele e o prximo estgio.

Exemplo: Suponha que um processador sem pipeline, com uma


durao de ciclo de 25 ns, esteja dividido em 5 estgios com latncias
de 5, 7, 3, 6 e 4 ns. Se a latncia do latch for de 1 ns qual a durao
do ciclo?
Soluo: O estgio de pipeline mais longo demora 7 ns. Somando
o atraso de latch de 1 ns a este estgio, resulta em uma latncia de 8 ns,
que a durao do ciclo.
Exemplo retirado de Carter (2003).

54 UNIDADE 02
Latncia

A latncia de um pipeline o tempo necessrio para uma instruo


atravessar todo o pipeline. Portanto, para calcular o tempo de latncia
de uma mquina com pipeline, basta multiplicar o perodo do clock pelo
nmero de estgios no pipeline. A latncia importante apenas para se
determinar quanto tempo a execuo da primeira instruo leva para ser
completada.
Enquanto o pipeline pode reduzir a durao do ciclo de um
processador, aumentando, assim, a taxa de rendimento das instrues,
ele aumenta a latncia do processador em, pelo menos, a soma de todas
as latncias dos latches. A latncia de um pipeline a soma do tempo
que cada instruo demora para passar atravs do pipeline, o que o
produto do nmero de estgios pela durao do ciclo de relgio.

Exemplo: Se o processador sem pipeline com durao de ciclo de


25 ns for dividido homogeneamente em 5 estgios utilizando latches de
latncia de 1 ns, qual a latncia total do pipeline? E se o processador
for dividido em 50 estgios?
Soluo: Aplicando a equao, a durao do ciclo para o pipeline
de 5 estgios (25ns/5)+1 = 6 ns. Para o pipeline de 50 estgios, a
durao do ciclo (25ns/50)+1 = 1,5 ns. Dado isto, podemos calcular a
latncia de cada pipeline multiplicando a durao do ciclo pelo nmero
de estgios. Isto resulta em uma latncia de 30 ns para o pipeline de 5
estgios e 75 ns para o pipeline de 50 estgios.
Exemplo retirado de Carter (2003).

Este exemplo mostra o impacto que o pipeline pode ter sobre a


latncia, especialmente medida que o nmero de estgios cresce. O
pipeline de 5 estgios tem uma latncia de 30 ns, 20% mais demorado
que o processamento sem pipeline, cuja durao do ciclo de 25 ns,
enquanto que o pipeline de 50 estgios tem latncia de 75 ns, trs vezes
a do processador original.
Pipelines com estgios no uniformes utilizam a mesma frmula,
embora tenham um aumento ainda maior na latncia, porque a durao
do ciclo precisa ser longa o suficiente para acomodar o estgio mais
longo do pipeline, mesmo que os outros sejam mais curtos.

Exemplo: Suponha que um processador sem pipeline, com uma

Projeto de Processadores 55
durao de ciclo de 25 ns, esteja dividido em 5 estgios com latncias de
5, 7, 3, 6 e 4 ns. Se a latncia do latch for de 1 ns, qual ser a latncia
resultante?
Soluo: O estgio de pipeline mais longo demora 7 ns. Somando-
se o atraso de latch de 1 ns a este estgio, resulta em uma latncia de 8
ns, que a durao do ciclo. Para obtermos a latncia resultante, basta
multiplic-la pelo nmero de ciclos obtendo 40 ns de latncia total.
Exemplo retirado de Carter (2003).

Bolhas

Uma bolha em um pipeline consiste em uma sequncia de um ou


mais perodos de clock em que um estgio do pipeline est vazio. Se um
estgio do pipeline estiver vazio no ciclo de clock n, consequentemente o
estgio seguinte estar vazio no ciclo de clock n+1. Desta forma, bolhas
formadas na entrada de um pipeline propagam-se atravs do pipeline
at desaparecerem no ltimo estgio. Situaes que geram bolhas em
pipelines incluem:
- a execuo de instrues de desvio;
- o atendimento de interrupes;
- o tratamento de excees;
- o retardo na execuo de instrues devido a dependncias
existentes com instrues que a precedem.
No caso de atendimento de excees e interrupes, no existem
muitas tcnicas efetivas para minorar o problema da formao de bolhas
no pipeline, pois estas ocorrncias so bastante imprevisveis. Quando
da execuo de desvios condicionais, a formao de bolhas pode ser
reduzida atravs da utilizao de predio de ocorrncia e desvio. J em
se tratando de dependncias, a formao de bolhas pode ser minorada
atravs do re-ordenamento de instrues.

Previso de desvios
O problema introduzido por desvios condicionais em arquiteturas
organizadas em pipeline que quando o desvio decodificado na
unidade de decodificao de instrues impossvel decidir se o desvio
ser executado ou no. Isto , no se pode determinar a priori qual a
prxima instruo a ser executada. Existem duas possibilidades:
- a condio que determina o desvio falsa e o desvio no
executado, neste caso a prxima instruo a ser executada a instruo

56 UNIDADE 02
seguinte instruo de desvio no programa;
- a condio verdadeira e o endereo da prxima instruo a ser
executada determinado pela instruo de desvio.
A forma mais simples e menos eficaz de tratar um desvio
condicional consiste em simplesmente paralisar a busca de instrues
quando uma instruo de desvio condicional decodificada. Com esta
forma de tratamento de desvio, garantimos que todo desvio condicional
gerar uma bolha, pois a busca de instruo ficar paralisada at que
se possa decidir se o desvio ser executado ou no. Esta tcnica s
deve ser utilizada quando o custo de buscar e depois ter que descartar a
instruo errada muito alto.
Outra forma tentar prever o que vai acontecer com o desvio.
Neste caso, a previso pode ser esttica ou dinmica. A previso esttica
aquela em que dada uma instruo de desvio em um programa ns
vamos sempre fazer a mesma previso para aquela instruo. Na previso
dinmica, podemos mudar a previso para uma mesma instruo
medida que o programa executado.

Previso esttica
A forma mais simples de previso esttica aquela em que a
mesma previso feita para um dado desvio condicional. Esta tcnica de
previso simples de implementar e pode tomar duas formas:
Os desvios condicionais nunca ocorrem: Assumindo que
os desvios condicionais nunca ocorrem, simplesmente se continua o
processamento normal de instrues incrementando o PC e buscando a
instruo seguinte. Se for determinado mais tarde que o programa deve
desviar, as instrues buscadas tero que ser descartadas e os efeitos
de quaisquer operaes realizadas por elas devem ser anulados.
Os desvios condicionais sempre ocorrem: Assumindo que os
desvios condicionais sempre ocorrem, necessrio calcular o endereo
de desvio muito rapidamente j na unidade de decodificao de instruo
para dar tempo de buscar a nova instruo no endereo especificado
pela instruo de desvio.
Algumas observaes feitas por projetistas de computadores
aps analisar diversos programas indicam que um grande nmero de
desvios ocorre no final de laos de programa. Se um lao de programa for
executado n vezes, o desvio que se encontra no final do lao ir ocorrer
n vezes e no ocorrer uma vez no final do lao. Alguns programadores
tambm observaram que desvios condicionais originados por comandos

Projeto de Processadores 57
IF em linguagens de alto nvel tendem a no ocorrer. Portanto, existem
evidncias de que seria desejvel possuir-se a capacidade de fazer
previso esttica diferenciada para diferentes instrues de desvio em
um mesmo programa.
Uma soluo para esta situao consiste em adicionar um bit no
cdigo de instrues de desvio condicional para informar o hardware
se aquele desvio ser provavelmente executado ou provavelmente no
executado. Este bit dever ser especificado pelo compilador. Como a
determinao de que a previso ser de execuo ou no do desvio
feita em tempo de compilao, este mtodo de previso tambm
esttico.

Previso dinmica
Na previso dinmica de desvios condicionais, uma mesma
instruo de desvio pode receber uma previso de ser ou no executada
em diferentes momentos do programa. Uma soluo comum criar uma
tabela de desvios em hardware. Esta tabela pode ser gerenciada na forma
de uma cache. Cada vez que uma instruo de desvio executada, ela
adicionada tabela e um bit setado ou resetado para indicar se o
desvio foi executado ou no. Na tabela tambm registrado o endereo
para o qual o desvio foi realizado. Desta forma, na prxima vez que a
mesma instruo de desvio for decodificada, esta tabela consultada e
a previso feita de que a mesma coisa (execuo ou no execuo do
desvio) vai ocorrer de novo. Se a previso for de execuo do desvio, o
endereo no qual a nova instruo deve ser buscada j se encontra nesta
tabela.

Processamento de excees

A ocorrncia de excees em um computador imprevisvel e,


portanto, numa mquina em pipeline, uma exceo normalmente resulta
na formao de bolhas. Uma complicao adicional que como existem
vrias instrues em diferentes estgios de execuo ao mesmo tempo,
difcil decidir qual foi a instruo que causou a gerao da exceo.
Uma soluo para minorar este problema categorizar as excees de
acordo com o estgio do pipeline em que elas ocorrem. Por exemplo,
uma instruo ilegal s pode ocorrer na unidade de decodificao de
instrues (ID) e uma diviso por zero ou uma exceo devida a overflow
s pode ocorrer na unidade de execuo (EX).

58 UNIDADE 02
Algumas mquinas com arquitetura em pipeline so conhecidas por
ter excees imprecisas. Nestas mquinas no possvel determinar qual
a instruo que causou a exceo. Outra complicao nas arquiteturas
em pipeline o aparecimento de mltiplas excees no mesmo ciclo de
clock. Por exemplo, uma instruo que causa erro aritmtico pode ser
seguida de uma instruo ilegal. Neste caso, a unidade de execuo (EX)
gerar uma exceo por erro aritmtico e a unidade de decodificao
(ID) gerar uma exceo por instruo ilegal, ambas no mesmo ciclo
de clock. A soluo para este problema consiste em criar uma tabela de
prioridade para o processamento de excees.

Bolhas causadas por dependncia

Outra causa de formao de bolhas em arquiteturas com pipeline


so as dependncias existentes entre instrues num programa.
Para ilustrar este problema, vamos considerar o exemplo de um
pseudoprograma assembler apresentado a seguir. O trecho de programa
abaixo permuta os valores armazenados nas posies $800 e $1000 da
memria.

A MOVE $800, D0 copia o valor do endereo $800 no registrador D0


B MOVE $1000, D1 copia o valor do endereo $1000 no registrador D1
C MOVE D1,$800 copia o valor do registrador D1 no endereo $800
D MOVE D0,$1000 copia o valor do registrador D0 no endereo $1000

Figura 2.8: Formao de bolha devido dependncia de instrues.


Exemplo retirado de Vargas (2006).

Projeto de Processadores 59
Observe na figura 2.8 que no perodo de clock 6 quando a instruo
C deveria executar no estgio de escrita na memria (ME) para escrever
o valor de D1 no endereo $800, o valor lido do endereo $1000 ainda
no est disponvel em D1, pois ele s ser escrito quando a instruo
B tiver executado o estgio de escrita nos registradores (WB), o que
ocorre tambm no perodo de clock 6. Portanto, a execuo da instruo
C necessita ser atrasada por dois ciclos de relgio, gerando uma bolha
no pipeline.
Uma forma simples de resolver este problema consiste em
reordenar as instrues no programa, conforme ilustrado a seguir.

B MOVE $1000, D1 copia o valor do endereo $1000 no registrador D1


A MOVE $800, D0 copia o valor do endereo $800 no registrador D0
C MOVE D1,$800 copia o valor do registrador D1 no endereo $800
D MOVE D0,$1000 copia o valor do registrador D0 no endereo $1000

Figura 2.9: Minimizao de bolhas por reordenao de instrues.


Exemplo retirado de Vargas (2006).

A figura 2.9 ilustra que um simples reordenamento de instrues


suficiente neste caso para minimizar a bolha gerada pela dependncia.
Observe que o tempo total para a execuo da sequncia de instrues
foi reduzido de 1 ciclo de clock.
Existem situaes em que um simples reordenamento de
instrues no suficiente para minimizar (ou eliminar) bolhas causadas
por dependncias. Considere o programa abaixo que realiza a inverso
de uma tabela de palavras localizada entre os endereos $1000 e $9000
da memria.

60 UNIDADE 02
A MOVEA #$1000, A0 inicializa A0
B MOVEA #$9000, A1 inicializa A1
C loop MOVE (A0), D0 copia em D0 dado apontado por A0
D MOVE (A1), D1 copia em D1 dado apontado por A1
E MOVE D0, (A1) copia o valor em D0 no end. indicado em A1
F MOVE D1, (A0) copia o valor em D1 no end. indicado em A0
G ADDQ #2, A0 incrementa o valor de A0
H SUBQ #2, A1 decrementa o valor de A0
I CMPA A0, A1 compara os endereos em A0 e A1
J BGT LOOP enquanto A1 maior que A0, continua
K MOVE #$500, A0 i nicia outro procedimento
L MOVE #$17000, A1 inicia outro procedimento

Figura 2.10: Execuo do programa com loop.


Exemplo retirado de Vargas (2006).

Conforme ilustrado na figura 2.10, o lao do programa que


efetivamente transfere os dados para fazer a inverso da tabela de
palavras necessita de 12 ciclos de clock para executar. Para inverter
uma tabela com n palavras, necessrio executar este lao n/2 vezes.
Portanto, o nmero de ciclos de clock necessrio para realizar a inverso
da tabela 6n (supondo que cada instruo executada em apenas 1
ciclo de clock).
A figura indica a formao de 3 bolhas dentro da execuo do
loop:
1) a primeira bolha aparece no ciclo de clock 7 quando a instruo
E tem que esperar at o fim do WB da instruo C. Em outras palavras,
ela tem que aguardar at que o novo valor do registrador D0 produzido
pela instruo C seja escrito no estgio de escrita em registradores WB,
o que s vai ocorrer no ciclo de clock 6. Esta bolha tem o tamanho de 1
ciclo de clock.
2) a segunda bolha, com tamanho de 2 ciclos de clock, aparece

Projeto de Processadores 61
no ciclo de clock 12 quando a instruo I tem que esperar at o fim do
WB da instruo H.
3) a terceira bolha aparece no final do loop devido ao uso de
uma previso de que o desvio no ser executado, o que faz com que
o processador busque as instrues K e L que no sero executadas.
Quando determinado que estas instrues no sero executadas, elas
so eliminadas do pipeline, gerando uma bolha de dois ciclos de clock.
O programa foi reescrito para que fosse eliminada a dependncia
entre as instrues de atualizao dos endereos em A0 e A1 e a instruo
de comparao. Para que isto ocorresse, a atualizao dos valores dos
registradores foi feita no incio do lao e a inicializao de A0 e A1 foi
alterada apropriadamente. O novo programa apresentado a seguir:

A MOVEA #$0FFF, A0 inicializa A0


B MOVEA #$9002, A1 inicializa A1
C loop ADDQ #2, A0 incrementa o valor de A0
D SUBQ #2, A1 decrementa o valor de A0
E MOVE (A0), D0 copia em D0 dado apontado por A0
F MOVE (A1), D1 copia em D1 dado apontado por A1
G MOVE D0, (A1) copia o valor em D0 no end. Indicado em
A1
H MOVE D1, (A0) copia o valor em D1 no end. Indicado em
A0
I CMPA A0, A1 compara os endereos em A0 e A1
J BGT LOOP enquanto A1 maior que A0, continua
K MOVE #$500, A0 inicia outro procedimento
L MOVE #$17000, A1 inicia outro procedimento

Figura 2.11: Eliminao de bolhas dentro do loop.


Exemplo retirado de Vargas (2006).

62 UNIDADE 02
Para eliminar a bolha no final do loop, as instrues foram
reordenadas dentro do lao e a previso esttica do desvio foi alterada
para uma previso de que o desvio sempre ocorre. Assim, obtemos a
execuo mostrada na figura 2.11.
Conforme mostrado na figura 2.11, a modificao da previso
esttica de desvio para desvio executado e a eliminao de bolha por
reordenao de instrues dentro do lao causaram uma reduo de 30
no nmero de ciclos de clock necessrios para executar o lao. Com um
lao de 8 ciclos de clock, uma tabela com n palavras pode ser invertida em
4n ciclos de clock. Observe que a instruo C no faz nada e foi inserida
apenas como uma reserva de espao de tempo para que o lao pudesse
comear ordenadamente. A insero da instruo C necessria por
causa da dependncia existente entre a instruo B e a instruo D.

Medidas de desempenho

As medidas para comparar desempenhos de pipelines no diferem


daquelas para comparao de sistemas computacionais em geral. As
principais mtricas utilizadas so latncia, vazo, speedup e eficincia.
- Latncia: o tempo necessrio para completar uma operao
ao longo do pipeline. Em geral, maior para sistemas com pipeline do
que para sistemas monolticos. Entretanto, uma medida de interesse
menor, pois raramente um pipeline seria utilizado para realizar uma nica
operao. Para um pipeline com k estgios executando com um ciclo de
, a latncia para a execuo de uma instruo :

Lk = k .

- Vazo (throughput): Expressa o nmero de operaes


executadas por unidade de tempo. Esta uma medida mais utilizada
para avaliao de pipelines, pois usualmente grupos de tarefas so neles
executados. Para um pipeline com k estgios executando n operaes
com um ciclo de , o primeiro resultado s estar disponvel aps um
perodo Lk (tempo de preenchimento do pipeline). Aps este perodo,
as n-1 operaes restantes so entregues a intervalos de segundos.
Portanto, para a execuo do grupo de n operaes, a vazo :

Hk = n / [ (k + n-1) ]

Projeto de Processadores 63
- Fator de acelerao (Speedup): Expressa o ganho em
velocidade na execuo de um grupo de tarefas em um pipeline de k
estgios comparado com a execuo sequencial deste mesmo grupo de
tarefas. Para a execuo de n tarefas em um pipeline de k estgios,
sendo o tempo sequencial kn, o fator de acelerao :
Sk = nk / ( k+n-1)
Quanto maior o tempo de uso consecutivo (n) de um pipeline,
melhor ser o fator de acelerao obtido. Quanto maior o nmero de
estgios em um pipeline (k), maior o potencial para melhorar o fator de
acelerao. Na prtica, o nmero de estgios em pipelines varia entre
quatro e dez, dificilmente ultrapassando 20 estgios. As principais
limitaes para a ampliao do nmero de estgios em um pipeline
incluem custo, complexidade de controle e implementao de circuitos.
Superpipelining a estratgia de processamento que busca acelerar
o desempenho atravs da utilizao de grandes nmeros de estgios
simples.
- Eficincia: Medida de speedup normalizada pelo nmero de
estgios.

Ek = Sk/k = n/ [ k + (n - 1) ]

Mquinas superpipeline e superescalares

O perodo de clock de uma mquina pipeline determinado pelo


estgio que leva maior tempo para ser executado. Uma tcnica utilizada
para acelerar uma mquina pipeline subdividir os estgios mais lentos
em subestgios de menor durao. Uma mquina com um nmero de
estgios maior do que cinco chamada de superpipeline.
A figura 2.12 ilustra uma organizao superpipeline obtida pela
diviso do estgio de busca de instrues (IF) em dois subestgios e do
estgio de acesso memria em trs subestgios.

Figura 2.12: Arquitetura superpipeline.


Figura adaptada de Vargas (2006).

Outra tcnica para acelerar o processamento em mquinas

64 UNIDADE 02
pipeline a utilizao de mltiplas unidades funcionais que podem operar
concorrentemente. Numa arquitetura deste tipo, mltiplas instrues
podem ser executadas no mesmo ciclo de clock. necessrio realizar
anlise de dependncias para determinar se as instrues comeadas
ao mesmo tempo no possuem interdependncias.

Figura 2.13: Arquitetura superescalar.


Figura adaptada de Vargas (2006).
.
A figura 2.13 ilustra uma arquitetura superescalar com dois
pipelines que podem operar em paralelo. Uma preocupao que surge
com a implementao de mquinas superescalar a possibilidade de
trmino de execuo fora de ordem. Isto ocorreria quando suas instrues
so iniciadas ao mesmo tempo em dois pipelines e uma bolha surge em
um deles fazendo com que uma instruo leve mais tempo do que a
outra. Uma soluo adotada para este problema consiste em criar um
buffer de reordenao que armazena o resultado das instrues at que
os resultados possam ser escritos na ordem correta.
A maioria dos processadores RISC so arquiteturas superescalar
e superpipelined. Isto , eles possuem mais de cinco estgios no pipeline
devido subdiviso de alguns estgios e eles possuem mltiplas unidades
funcionais em cada estgio. Uma configurao tpica o uso de quatro
unidades funcionais em cada estgio.

Processadores superescalares

Paralelismo no nvel de instruo


O pipeline melhora o desempenho, ao aumentar a taxa pela qual
as instrues podem ser executadas. No entanto, existem limites para um
pipeline melhorar o desempenho. medida que mais e mais estgios do
pipeline so inseridos no processador, o atraso nos registros de pipeline
necessrios em cada estgio torna-se uma parte significativa da durao
do ciclo, reduzindo o benefcio de aumentar a profundidade do pipeline.
De modo mais significativo, aumentar a profundidade do pipeline aumenta
o atraso de desvios e a latncia de instrues, aumentando o nmero de
ciclos de adiamento que ocorrem entre instrues dependentes.

Projeto de Processadores 65
Devido a estas restries, projetistas voltaram-se para o paralelismo
de modo a melhorar o desempenho pela execuo de vrias tarefas ao
mesmo tempo. Sistemas de computadores em paralelo tendem a ter uma
de duas formas: vrios processadores e processadores com paralelismo
no nvel de instruo. Em sistemas com vrios processadores, tarefas
relativamente grandes, como procedimentos ou iteraes de laos, so
executados em paralelo. Em contraste, processadores com paralelismo
no nvel de instruo executam instrues individuais em paralelo.
A figura 2.13 mostra um diagrama de bloco de alto nvel de um
processador com paralelismo no nvel da instruo. O processador
contm vrias unidades de execuo para executar as instrues, cada
uma das quais l os seus operandos e escreve o seu resultado no conjunto
nico de registradores centralizado. Quando uma operao escreve o
seu resultado no conjunto de registradores, aquele resultado torna-se
visvel para todas as unidades de execuo do prximo ciclo, permitindo
que operaes sejam executadas em diferentes unidades a partir das
operaes que geraram suas entradas. Processadores com paralelismo
no nvel de instruo frequentemente tm um hardware complexo de
vias secundrias que transmite o resultado de cada instruo para todas
as unidades de execuo, de modo a reduzir o atraso entre instrues
pendentes.

Figura 2.14: Processador com paralelismo no nvel de instruo.


Figura adaptada de Carter (2003).

66 UNIDADE 02
Na figura 2.14, todas as unidades de execuo foram desenhadas
de modo idntico. Na maioria dos processadores reais, algumas ou todas
as unidades de execuo so capazes de executar apenas um subconjunto
de instrues do processador. A diviso mais comum entre operaes
de inteiros e de ponto flutuante, porque estas operaes exigem um
hardware muito diferente. Implementar esses dois conjuntos de hardware
em unidades de execuo aumenta o nmero de instrues que podem
ser executadas simultaneamente, sem aumentar significativamente a
quantidade de hardware exigido.
Processadores com paralelismo no nvel da instruo exploram
o fato que muitas das instrues em um programa sequencial no
dependem das instrues que as precedem imediatamente no programa.
Por exemplo, considere o fragmento de programa abaixo. As instrues
1, 3 e 5 so dependentes umas das outras porque a instruo 1 gera
valores que so utilizados pela instruo 3, a qual gera um resultado que
utilizado na instruo 5. As instrues 2 e 5 no utilizam os resultados
de quaisquer outras instrues no fragmento e no geram quaisquer
resultados que sejam utilizados neste fragmento. Estas dependncias
exigem que as instrues 1, 3 e 5 sejam executadas em ordem para
gerar o resultado correto, mas as instrues 2 e 4 podem ser executadas
antes, depois, ou em paralelo com quaisquer outras instrues, sem
modificar os resultados do fragmento de programa.

1: LD r1,(r2)
2: ADD r5, r6, r7 Ciclo 1: LD r1,(r2) ADD r5, r6, r7
3: SUB r4, r1, r4 Ciclo 2: SUB r4, r1, r4 MUL r8, r9, r10
4: MUL r8, r9, r10 Ciclo 3: ST (r11), r4
5: ST (r11), r4
Exemplo retirado de Carter (2003).

Este exemplo ilustra tanto os pontos favorveis quanto os


desfavorveis do paralelismo no nvel de instruo. Processadores
PNI podem, ao executar instrues em paralelo, atingir aumentos de
velocidade significativos em uma ampla variedade de programas, mas a
melhora mxima do seu desempenho est limitada pelas dependncias
de instrues.

Limitaes
O desempenho de processadores PNI est limitado pela quantidade

Projeto de Processadores 67
de paralelismo no nvel da instruo que o compilador e o hardware podem
localizar no programa. O paralelismo no nvel de instruo limitado
por diversos fatores: dependncia de dados, dependncia de nomes
e desvios. Alm disso, uma determinada capacidade do processador
de explorar o paralelismo no nvel de instruo pode ser limitada pelo
nmero e pelo tipo de unidades de execuo que esto presentes e por
restries aos tipos de instruo do programa que podem ser executadas
em paralelo.
Desvios limitam o paralelismo no nvel da instruo porque o
processador no sabe quais instrues sero executadas depois de um
desvio at que ele seja completado. Isso exige que o processador espere
a concluso do desvio antes que outras instrues sejam executadas.

Exemplo: Considere o seguinte fragmento de programa:

ADD r1, r2, r3


LD r4, (r5)
SUB r7, r1, r9
MUL r5, r4, r4
SUB r1, r12, r10
ST (r13), r14
OR r15, r14, r12

Quanto tempo este programa demoraria para ser executado


por um processador que permita duas instrues executando
simultaneamente? Como seria se o processador permitisse quatro
instrues simultaneamente? Assuma que o processador pode executar
instrues em qualquer ordem que no viole a dependncia de dados,
que todas as instrues tm latncia de um ciclo e que todas as unidades
de execuo do processador podem executar todas as instrues no
fragmento.
Soluo: Em um processador que permita duas instrues
realizadas simultaneamente, este programa demoraria quatro ciclos para
ser posto em execuo. Um exemplo seria:

Ciclo 01: ADD r1, r2, r3 LD r4, (r5)


Ciclo 02: SUB r7, r1, r9 MUL r5, r4, r4
Ciclo 03: SUB r1, r12, r10 ST (r13), r14
Ciclo 04: OR r15, r14, r12

68 UNIDADE 02
Se o processador pudesse executar quatro instrues
simultaneamente, o programa poderia ser posto em circulao em dois
ciclos. Um exemplo seria:

Ciclo 01: ADD r1, r2, r3 LD r4, (r5) ST (r13), r14 OR r15, r14, r12
Ciclo 02: SUB r7, r1, r9 MUL r5, r4, r4 SUB r1, r12, r10

Note que, independente do nmero de instrues que o processador


possa executar simultaneamente, no possvel colocar o programa
em circulao em apenas um ciclo por causa das dependncias. Por
exemplo, as instrues SUB r7, r1, r9 e SUB r1, r12, r10.
Exemplo retirado de Carter (2003).

Processadores superescalares
Processadores superescalares baseiam-se no hardware para
extrair paralelismo no nvel de instruo de programas sequenciais.
Durante cada ciclo, a lgica de circulao de instrues de um processador
superescalar examina as instrues em um programa sequencial para
determinar quais instrues podem ser postas em circulao naquele
ciclo. Se existir suficiente paralelismo no nvel da instruo dentro de um
programa, um processador superescalar pode executar uma instruo
por unidade de execuo por ciclo, mesmo se o programa foi compilado
originalmente para um processador que executa apenas uma instruo
por ciclo.
Esta uma das maiores vantagens de processadores
superescalares e o motivo pelo qual virtualmente todas as CPUs de
PCs e de estaes de trabalho so processadores superescalares.
Processadores superescalares podem executar programas que foram
compilados originalmente para processadores puramente sequenciais
e podem atingir desempenho melhor nestes programas do que
processadores que no so capazes de explorar o paralelismo no nvel
da instruo.
A capacidade de processadores superescalares tem de explorar o
paralelismo no nvel da instruo em programas sequenciais no significa
que os compiladores sejam irrelevantes para sistemas construdos com
processadores superescalares. De fato, bons compiladores so ainda
mais crticos para o desempenho de computadores superescalares do
que eles so para processadores puramente sequenciais. Processadores
superescalares podem examinar em um dado momento apenas uma

Projeto de Processadores 69
pequena janela de instrues de um programa para determinar quais
instrues podem ser executadas em paralelo. Se um compilador for
capaz de organizar as instrues de um programa de modo que grande
quantidade de instrues ocorra dentro desta janela, um processador
superescalar ser capaz de atingir um bom desempenho no programa.

Execuo em-ordem e fora-de-ordem


Uma diferena significativa de complexidade e desempenho no
projeto de processadores superescalar se o processador executa
as instrues na ordem em que elas aparecem no programa ou se ele
as executa em qualquer ordem, desde que no mude o resultado do
programa. A execuo fora-de-ordem pode fornecer um desempenho
muito melhor que a execuo em-ordem, mas exige um hardware muito
mais complexo para ser implementada.

Processadores em-ordem
Em processadores superescalares em-ordem, o tempo para
colocar um programa em circulao pode ser determinado ao se percorrer
sequencialmente o cdigo para determinar quando cada instruo
pode ser posta em circulao, de modo semelhante tcnica utilizada
para processadores com pipeline que executam apenas uma instruo
por ciclo. A diferena entre processadores superescalares em-ordem
e processadores com pipeline que no so superescalares que um
processador superescalar pode colocar uma instruo em circulao no
mesmo ciclo que a instruo anterior no programa, se as dependncias
de dados permitirem, desde que o nmero de instrues colocado em
cada ciclo no exceda o nmero de instrues que o processador pode
executar simultaneamente.

Exemplo: Em quanto tempo a seguinte sequncia de instrues


deveria ser executada em um processador em-ordem, com duas unidades
de execuo, cada uma das quais podendo executar qualquer instruo?
As operaes de carga tm latncia de dois ciclos e as demais operaes
tm latncia de um ciclo.
LD r1, (r2)
ADD r3, r1, r4
SUB r5, r6, r7
MUL r8, r9, r10

70 UNIDADE 02
Soluo: Assumindo que a operao LD posta em circulao
no ciclo n, a ADD no pode ser posta em circulao at n+2 porque ela
dependente de LD. A SUB independente de ADD e LD, de modo
que tambm no pode ser posta em circulao no ciclo n+2 devido
necessidade do processador gastar um ciclo para carregar as instrues
em-ordem. A MUL tambm independente de todas as instrues
anteriores, mas precisa de n+3 para ser posta em circulao, porque o
processador s pode colocar duas instrues em circulao. Portanto,
demora quatro ciclos para que todas as instrues do programa sejam
postas em circulao.
Exemplo retirado de Carter (2003).

Processadores fora-de-ordem
Determinar o tempo de circulao de uma sequncia de instrues
em um processador fora-de-ordem mais difcil que determinar o
tempo de circulao em um processador em-ordem porque h muitas
possibilidades de ordens nas quais as instrues podem ser executadas.
Geralmente, a melhor abordagem comear pela sequncia de
instrues para localizar as dependncias entre as instrues. Uma vez
que as dependncias entre as instrues sejam entendidas, elas podem
ser designadas para ciclos de circulao de modo a minimizar o atraso
entre a execuo da primeira e da ltima instruo na sequncia.
O esforo para encontrar a melhor ordem possvel de um
conjunto de instrues cresce exponencialmente com o nmero de
instrues no conjunto, uma vez que todas as ordens possveis devem
ser potencialmente consideradas. Assim, assumiremos que a lgica
de instrues em um processador superescalar estabelece algumas
restries sobre a ordem na qual as instrues circulam, de modo a
simplificar a lgica de circulao das instrues. A suposio que o
processador tentar executar uma instruo to logo as dependncias de
um programa permitam. Se existirem mais instrues que unidades de
execuo, o processador privilegiar as instrues que ocorrem primeiro
no programa, mesmo que, eventualmente, houvesse uma ordem que
implicasse em um menor tempo de execuo.
Com esta suposio para a circulao de instrues, torna-se
muito mais fcil encontrar o tempo de circulao de uma sequncia de
instrues em um processador fora-de-ordem. Iniciando com a primeira
instruo de um sequncia, seguimos instruo por instruo, atribuindo
cada uma ao primeiro ciclo no qual suas entradas j esto disponveis.

Projeto de Processadores 71
Deve-se respeitar as limitaes de que o nmero de instrues que
circulam no seja maior que o nmero mximo de instrues simultneas
que o processador suporta e que no ultrapasse o nmero de unidades
de execuo.

Exemplo: Por quanto tempo a seguinte sequncia de instrues


deveria ser executada em um processador fora-de-ordem, com duas
unidades de execuo, cada uma das quais podendo executar qualquer
instruo? As operaes de carga tm latncia de dois ciclos e as demais
operaes tm latncia de um ciclo.

LD r1, (r2)
ADD r3, r1, r4
SUB r5, r6, r7
MUL r8, r9, r10

Soluo: A nica dependncia nesta sequncia entre as


instrues LD e ADD. Por causa dessa dependncia, a instruo ADD
precisa entrar em circulao pelo menos dois ciclos antes de LD. A SUB
e a MUL poderiam ser postas em circulao no mesmo ciclo que a LD.
Assumindo que SUB e LD so postas em circulao no ciclo n, a MUL
posta em circulao no ciclo n+1 e ADD posta em circulao no ciclo n+2,
dando um tempo de circulao de trs ciclos para este programa.
Exemplo retirado de Carter (2003).

EXERCCIO DE FIXAO

1. Explique o princpio por trs da tcnica de pipeline e mostre por que


melhora o desempenho.
2. Explique a estrutura de execuo de uma mquina pipeline.
3. Dado um processador sem pipeline, com durao de ciclos de 10 ns e
latches com 0,5 ns de latncia, quais as duraes de ciclos das verses
do processador com pipeline de 2, 4, 8 e 16 estgios? Qual a latncia de
cada uma das verses? Que concluses podemos tirar sobre isso?
4. O que so bolhas em pipelines? Quais situaes as geram?
5. Explique as tcnicas de previso de desvios estticas e dinmicas.

72 UNIDADE 02
6. Mostre trs mtricas utilizadas para medir desempenho de
processadores.
7. O que paralelismo no nvel de instruo? Como os processadores o
exploram para melhorar o desempenho?
8. Comente sobre as limitaes do paralelismo no nvel de instruo.
9. Quanto tempo demora para que as seguintes instrues sejam
executadas por um processador superescalar em-ordem, com duas
unidades de execuo, onde qualquer unidade de execuo pode executar
todas as instrues, as operaes de carga tm latncia de 3 ciclos e
todas as outras tm latncia de 2 ciclos? Assuma que o processador tem
pipeline de 6 estgios.
LD r4, (r5)
LD r7, (r8)
ADD r9, r4, r7
LD r10, (r11)
MUL r12, r13, r14
SUB r2, r3, r1
ST (r2), r15
MUL (r22), r23
ST (r22), r23
ST (r24), r21
10. Repita a questo anterior considerando um processador fora-de-
ordem.

__________________________________________________________________

Projeto de Processadores 73
RISC e CISC

Introduo

Antes da dcada de 1980, havia um grande foco na reduo


do intervalo semntico entre as linguagens utilizadas para programar
computadores e as linguagens de mquina. Acreditava-se que tornar
as linguagens de mquina mais parecidas s linguagens de alto nvel
resultaria num melhor desempenho, pela reduo do nmero de
instrues exigidas para implementar um programa e tornaria mais fcil
compilar um programa em linguagem de alto nvel para a linguagem de
mquina. O resultado final disto foi o projeto de conjuntos de instrues
que continha instrues muito complexas.
medida que a tecnologia de compiladores era aperfeioada,
os pesquisadores comearam a questionar se estes sistemas com
instrues complexas, conhecidos como computadores com conjunto
de instrues complexas CISC (Complex Instruction Set Computer)
forneciam desempenho melhor que sistemas baseados em conjuntos
de instrues mais simples. Esta segunda classe ficou conhecida como
computadores de conjunto de instrues reduzidas RISC (Reduced
Instruction Set Computer).
O argumento principal a favor dos computadores CISC que
esses geralmente exigem menos instrues que os computadores
RISC para executar uma dada operao, de modo que um computador
CISC teria um desempenho melhor que um computador RISC que
executasse instrues mesma taxa. Alm disso, programas escritos
para arquiteturas CISC tendem a tomar menos espao na memria que
programas escritos para a arquitetura RISC. O principal argumento a
favor dos computadores RISC que os seus conjuntos de instrues
mais simples frequentemente permitem que eles sejam implementados
com frequncia de relgio mais altas, permitindo executar mais instrues
na mesma quantidade de tempo. Com frequncia de relgio maior, um
processador RISC permite que ele execute programas em menos tempo
do que um processador CISC levaria para executar os programas.
Durante a dcada de 80, e no incio dos anos 90, houve muita
controvrsia na comunidade de arquitetura de computadores com
relao a qual das duas abordagens era a melhor, e, dependendo do
ponto de vista, qualquer uma das duas pode ser considerada vencedora.
Ao longo dos ltimos 20 anos, tem havido certa convergncia entre as

74 UNIDADE 02
arquiteturas, tornando difcil determinar se uma arquitetura RISC ou
CISC. As arquiteturas RISC incorporam algumas instrues complexas,
mas teis, das arquiteturas CISC que por sua vez abandonaram
instrues complexas que no eram utilizadas com frequncia suficiente
para justificar a sua implementao.
Uma diferena clara entre as arquiteturas CISC e RISC refere-
se ao acesso memria. Em muitas arquiteturas CISC, instrues
aritmticas e outras podem ler as suas entradas ou escrever as suas
sadas diretamente na memria, em vez de faz-lo sobre os registradores.
Por exemplo, uma arquitetura CISC pode permitir uma operao ADD, na
forma ADD(r1)(r2)(r3), onde os parnteses em volta do nome do registro
indicam que o registro contm o endereo de memria onde um operando
pode ser encontrado ou o resultado pode ser escrito. A mesma operao,
para ser realizada nas arquiteturas RISC, que utilizam o modelo carga-
armazenamento ou load-store, necessitaria da seguinte sequncia de
instrues:

LD r4, (r2) :. Carregar r2 em r4


LD r5,(r3) :. Carregar r3 em r5
ADD r6,r4,r5 :. Somar r4 e r5 e guardar o valor em r6
ST (r1), r6 :. Gravar r6 em r1
Exemplo retirado de Carter (2003).

Este exemplo mostra que uma arquitetura RISC pode exigir muito
mais operaes para implementar uma funo do que uma arquitetura
CISC, se bem que o exemplo bem extremo. Este exemplo tambm
mostra que arquiteturas RISC normalmente utilizam mais registradores
para implementar uma funo que as arquiteturas CISC, uma vez que
todas as entradas de uma instruo precisam ser carregadas em um
banco de registradores antes que a instruo possa ser executada. No
entanto os processadores RISC tm a vantagem de dividir uma operao
CISC complexa em vrias operaes RISC, permitindo ao compilador
organizar as operaes RISC para um desempenho melhor.

Atualmente, vemos processadores hbridos, que so
essencialmente processadores CISC, porm que possuem internamente
ncleos RISC. Assim, a parte CISC do processador pode cuidar das
instrues mais complexas, enquanto que o ncleo RISC pode cuidar das
mais simples, nas quais mais rpido. Parece que o futuro nos reserva
uma fuso destas duas tecnologias. Um bom exemplo de processador

Projeto de Processadores 75
hbrido o Pentium Pro.

CISC

No inicio dos anos 70, quer porque os compiladores eram muito


pobres e pouco robustos, quer porque a memria era lenta e cara
causando srias limitaes no tamanho do cdigo, uma certa corrente
chegou a prever uma crise no software. O hardware era cada vez
mais barato e o software cada vez mais caro. Um grande nmero de
investigadores e projetistas defendiam que a nica maneira de contornar
os grandes problemas que se avizinhavam era mudar a complexidade
do (cada vez mais caro) software e transport-la para o (cada vez mais
barato) hardware.
Se houvesse funes mais comuns que o programador tivesse
de escrever vrias vezes em um programa, por que no implement-
las em hardware? Afinal de contas, o hardware era barato e o tempo
do programador no. Esta ideia de mover o fardo da complexidade do
software para o hardware foi a ideia impulsionadora por trs da filosofia
CISC, e quase tudo o que um verdadeiro CISC faz tem este objetivo.
Alguns pesquisadores sugeriram que uma maneira de tornar o trabalho
dos programadores mais fcil seria fazer com que o cdigo assembly se
parecesse mais com o cdigo das linguagens de alto nvel (C ou Pascal).
Os mais extremistas falavam j de uma arquitetura de computao
baseada numa linguagem de alto nvel. Este tipo de arquitetura era CISC
levado ao extremo. A sua motivao primria era reduzir o custo global do
sistema fazendo computadores mais fceis de programar. Ao simplificar o
trabalho dos programadores, pensava-se que os custos seriam mantidos
em um nvel razovel.
Uma lista das principais razes para se promover este tipo de
arquitetura :
- reduzir as dificuldades de escrita de compiladores;
- reduzir o custo global do sistema;
- reduzir os custos de desenvolvimento de software;
- reduzir a diferena semntica entre linguagens de programao
e mquina;
- fazer com que os programas escritos em linguagens de alto nvel
corressem mais eficientemente;
- melhorar a compactao do cdigo;
- facilitar a deteco e correo de erros.

76 UNIDADE 02
Resumindo, se uma instruo complexa escrita numa linguagem
de alto nvel fosse traduzida exatamente em uma instruo assembly,
ento:
- Os compiladores seriam mais fceis de escrever. Isto pouparia
tempo e esforo para os programadores, reduzindo, assim, os custos de
desenvolvimento de software;
- O cdigo seria mais compacto, o que permitiria poupar em
memria, reduzindo o custo global do hardware do sistema;
- Seria mais fcil fazer a deteco e correo de erros o que, de
novo, permitiria baixar os custos de desenvolvimento de software e de
manuteno.
At este momento, centramos a ateno nas vantagens econmicas
da arquitetura CISC, ignorando a questo do desempenho. A abordagem
utilizada neste tipo de arquitetura para melhorar o desempenho das
mquinas CISC foi, conforme j referido, transferir a complexidade do
software para o hardware. Para melhor se compreender como que este
tipo de abordagem afeta o desempenho, vamos analisar um pouco a
seguinte equao - equao do desempenho de um processador , uma
mtrica normalmente utilizada para avaliar o desempenho de um sistema
de computao:
Tempo instrues ciclos Tempo
= x x
Programa Programa instruo ciclo

Melhorar o desempenho significa reduzir o termo esquerda do


sinal de igualdade, porque quanto menor for o tempo que um programa
demora a ser executado, melhor ser o desempenho do sistema. As
mquinas CISC tentam atingir este objetivo reduzindo o primeiro termo
direita do sinal de igualdade, isto , o nmero de instrues por programa.
Os pesquisadores pensaram que, ao reduzir o nmero de instrues que
a mquina executa para completar uma determinada tarefa, poder-se-ia
reduzir o tempo que ela necessita para completar essa mesma tarefa,
aumentando, assim, o seu desempenho.
Assim, ao reduzir o tamanho dos programas, conseguiam-se
dois propsitos: por um lado era necessria uma menor quantidade de
memria para armazenar o cdigo; e por outro o tempo de execuo era,
tambm, diminudo, pois havia menos linhas de cdigo para executar.
Alm de implementar todo o tipo de instrues que faziam um
variado nmero de tarefas como copiar strings ou converter valores,
havia outra ttica que os projetistas utilizavam para reduzir o tamanho do

Projeto de Processadores 77
cdigo e a sua complexidade: os modos de endereamento complexos.
A figura 3.1 ilustra um esquema de armazenamento para um computador
genrico. Se quisssemos multiplicar dois nmeros, teramos primeiro
que carregar cada um dos operandos de uma localizao na memria
para um dos registradores.

Figura 3.1: Esquema de armazenamento.

Vejamos o seguinte exemplo, meramente ilustrativo, da


multiplicao de dois nmeros armazenados em memria. Uma vez
carregados nos registradores, os operandos poderiam ser multiplicados
pela unidade de execuo. Utilizaramos as seguintes linhas de cdigo
para multiplicar o contedo das posies de memria [2:3] e [5:2] e
armazenar o resultado na posio [2:3]:

MOV [A, 2:3]


MOV [B, 5:2]
MUL [A, B]
MOV [2:3, A]

Este exemplo de cdigo explicita os passos que tm de ser dados


pelo processador para multiplicar os contedos de duas posies de
memria. Deve-se carregar os dois registros com o contedo da memria
principal, multiplicar os dois nmeros e guardar o resultado de novo na
memria principal. Se quisssemos tornar o assembly menos complicado
e mais compacto, poderamos modificar a arquitetura de forma a realizar
a operao descrita com uma instruo apenas. Para atingir esse
objetivo, a instruo MUL teria que ser alterada de forma a aceitar como
parmetros duas posies de memria:
MUL [2:3, 5:2]
Evoluir de quatro instrues para apenas uma uma grande

78 UNIDADE 02
economia. Apesar da nova arquitetura ainda ter que carregar o contedo
das duas posies de memria para os registradores, multiplic-los e
voltar a armazenar na memria o resultado (no h como contornar isso),
todas essas operaes de baixo nvel so feitas em hardware e so
invisveis para o programador. Este um exemplo de endereamento
complexo. Uma instruo assembly, na realidade, leva em considerao
uma srie complexa de operaes. Uma vez mais isto um exemplo da
filosofia CISC de transferir a complexidade do software para o hardware.
Outra caracterstica das mquinas CISC era a utilizao de
microcdigo. A microprogramao era uma das caractersticas primordiais
que permitia aos projetistas a implementao de instrues complexas
em hardware. Para melhor compreender o que a microprogramao,
vamos considerar, resumidamente, a execuo direta.
Usando execuo direta, a mquina carrega a instruo da
memria, decodifica-a e envia-a para a unidade de execuo. Esta
unidade de execuo pega na instruo a sua entrada e ativa alguns
circuitos. Se, por exemplo, a mquina carrega a instruo de ADD com
operadores em ponto flutuante e a fornece unidade de execuo, existe
um circuito que a carrega e direciona as unidades de execuo para
garantir que todas as operaes de deslocamento, adio e normalizao
sejam executadas corretamente. A execuo direta , na realidade, o que
se poderia esperar que acontecesse dentro de um computador se no
houvesse conhecimento do microcdigo.
A principal vantagem da execuo direta que ela rpida. No
existe qualquer tipo de abstrao ou traduo extra; a mquina apenas
decodifica e executa as instrues em hardware. O seu maior problema
que pode ocupar algum espao. De fato, se todas as instrues tm
que ter um circuito que as execute, ento, quanto maior for o nmero de
instrues, maior vai ser o espao ocupado pela unidade de execuo.
Por isso, executar diretamente as instrues no era uma boa abordagem
para o projeto de uma mquina CISC. At porque os recursos (transistores)
disponveis eram bastante escassos.
Chegamos assim microprogramao. Com a microprogramao,
quase como termos um miniprocessador dentro do processador. A
unidade de execuo um processador de microcdigo que executa
microinstrues. Os projetistas usam estas microinstrues para escrever
microprogramas que so armazenados numa memria de controle
especial.
Quando uma instruo normal de um programa carregada da

Projeto de Processadores 79
memria, decodificada e entregue ao processador de microcdigo, este
ltimo executa a sub-rotina de microcdigo adequada. Esta sub-rotina
diz s vrias unidades funcionais o que fazer e como fazer.
Com a evoluo da tecnologia, o microcdigo estava cada vez
mais rpido. Os processadores de microcdigo nos processadores
modernos conseguem velocidades da ordem de 95% em relao
execuo direta. Como o microcdigo era cada vez melhor, fazia cada
vez mais sentido transferir funcionalidades do software para o hardware.
Assim, os conjuntos de instrues cresceram rapidamente e o nmero
mdio de instrues por programa decresceu.
Contudo, medida que os microprogramas cresceram para fazer
frente ao crescente nmero de instrues, alguns problemas comearam
a surgir. Para manter um bom desempenho, o microcdigo tinha que
ser altamente otimizado, eficiente e bastante compacto para que os
custos de memria no comeassem a crescer demasiadamente. Como
os microprogramas eram, agora, to grandes, era mais difcil test-
los e detectar e corrigir erros. Como resultado, o microcdigo includo
nas mquinas que vinham para o mercado tinha, algumas vezes, erros
e tinha que ser corrigido. Foram estas dificuldades de implementao
do microcdigo que levaram os pesquisadores a questionar se a
implementao de todas estas instrues complexas e elaboradas em
microcdigo seria, realmente, o melhor caminho para fazer uso dos
limitados recursos (transistores) existentes.

RISC

Como j foi referido, muitas das implementaes da arquitetura


CISC eram to complexas que eram distribudas por vrios chips. Esta
situao no era, por razes bvias, ideal. Era necessria uma soluo em
um nico chip, uma soluo que fizesse melhor uso dos escassos recursos
disponibilizados (transistores). No entanto, para que todo um processador
coubesse num s chip, algumas das suas funcionalidades teriam que
ser deixadas de fora. Nesse intuito, realizaram-se estudos destinados
a descobrir que tipos de situaes ocorrem mais frequentemente na
execuo de aplicaes. A ideia era descobrir em que tipo de tarefas o
processador passava mais tempo e otimizar essas mesmas tarefas. Se
tivessem que ser feitos compromissos, estes deviam ser feitos em favor
da velocidade de execuo das tarefas nas quais o processador passa
mais tempo a trabalhar, ainda que isso pudesse atrasar outras tarefas

80 UNIDADE 02
no to frequentes.
Esta abordagem quantitativa, de fazer mais rpidas as tarefas
mais comuns, provocou a inverso da filosofia iniciada pelos CISC e a
complexidade teve que ser retirada do hardware e ser passada para o
software. A memria estava mais barata e os compiladores eram cada
vez mais eficientes, por isso muitas das razes que conduziram os
projetistas a complicar o conjunto de instrues deixaram de existir.
Os pesquisadores diziam que o suporte para as linguagens de alto nvel
poderia ser mais eficiente se fosse implementado em software, gastar
recursos (transistores) preciosos para suportar as linguagens de alto
nvel em hardware era um desperdcio. Esses recursos poderiam ser
utilizados em outras tecnologias para melhorar o desempenho.
Quando os investigadores tiveram que decidir quais as
funcionalidades que teriam que ser retiradas, o suporte para o microcdigo
foi o primeiro a sair, e com ele saram tambm um grupo de instrues
complexas que, alegadamente, tornava o trabalho dos compiladores e
dos programadores mais fcil. A ideia era que quase ningum utilizava
aquelas instrues to complexas. Ao compilar o cdigo, os compiladores
preteriam este tipo de instrues em favor da gerao de um conjunto de
instrues mais simples que realizassem a mesma tarefa.
O que os pesquisadores concluram dos estudos realizados foi
que um pequeno conjunto de instrues estava fazendo a maioria do
trabalho. Aquelas instrues que raramente eram usadas poderiam ser
eliminadas sem que houvesse perda de qualquer funcionalidade.
Esta ideia da reduo do conjunto de instrues, deixando de
fora todas as instrues que no fossem absolutamente necessrias,
substituindo as instrues mais complexas por conjuntos de instrues
mais simples, foi o que esteve na origem do termo Reduced Instruction
Set Compute - RISC. Ao incluir apenas um pequeno e criteriosamente
escolhido grupo de instrues numa mquina, poder-se-ia deixar de fora
o suporte do microcdigo e passar a usar a execuo direta.
No s o nmero de instrues foi reduzido, mas tambm o
tamanho das mesmas. Foi decidido que todas as instrues RISC
deveriam, sempre que possvel, demorar apenas um ciclo de relgio
para terminar a sua execuo. A razo por trs desta deciso foi
baseada em algumas observaes feitas pelos pesquisadores. Em
primeiro lugar, percebe-se que tudo o que poderia ser feito usando as
instrues de microcdigo, tambm poderia ser feito com pequenas e
rpidas instrues de assembly. A memria que estava sendo usada

Projeto de Processadores 81
para armazenar o microcdigo poderia simplesmente ser usada para
armazenar o assembler, assim a necessidade de microcdigo seria pura
e simplesmente eliminada. por esta razo que muitas das instrues
de uma mquina RISC correspondem a microinstrues numa mquina
CISC. A segunda razo que levou o formato a ser uniformizado e demorar
apenas um ciclo de relgio foi a observao de que a implementao do
pipelining s realmente vivel se no tiver que lidar com instrues de
diferentes graus de complexidade. Como o pipelining permite a execuo
de vrias instrues em paralelo, uma mquina que o suporte consegue
reduzir drasticamente o nmero mdio de ciclos por instruo (CPI
Cycles Per Instruction). Baixar o nmero mdio de ciclos que as instrues
necessitam para terminar a sua execuo uma maneira efetiva de
baixar o tempo total que necessrio execuo de um programa.
Relembremos de novo a equao do desempenho. Os projetistas
deste tipo de arquitetura tentaram reduzir o tempo por programa reduzindo
o segundo termo direita do sinal de igualdade (ciclos/instruo),
permitindo que o primeiro termo (instrues/programa) aumentasse
ligeiramente. Pensava-se que uma reduo no nmero de ciclos por
instruo, alcanada custa da reduo do conjunto de instrues, da
introduo da tcnica de pipelining e de outras funcionalidades (das
quais j falaremos) compensariam largamente o aumento do nmero de
instrues por programa. Verificou-se que esta filosofia estava correta.
Alm da tcnica de pipelining, houve duas inovaes importantes
que permitiram o decrscimo do nmero de ciclos por instruo, mantendo
o aumento do tamanho do cdigo em um nvel mnimo: a eliminao
dos modos de endereamento complexos e o aumento do nmero de
registradores internos do processador. Nas arquiteturas RISC existem
apenas operaes registrador-registrador e apenas as instrues LOAD
e STORE podem acessar a memria. Poder-se-ia pensar que o uso de
LOADs e STOREs, em vez de uma nica instruo que operasse na
memria, iria aumentar o nmero de instrues de tal modo que o espao
necessrio em memria e o desempenho do sistema seriam afetados.
Como posteriormente se verificou, existem algumas razes que fazem
com que este pensamento no seja correto.
Verificou-se que mais de 80% dos operandos que apareciam
em um programa eram variveis escalares locais. Isto significa que, se
fossem adicionados mltiplos bancos de registradores arquitetura,
estas variveis locais poderiam ficar armazenadas nos registradores,
evitando ter que ir memria todas as vezes que fosse necessria

82 UNIDADE 02
alguma delas. Assim, sempre que uma subrotina chamada, todas as
variveis locais so carregadas para um banco de registradores, sendo
a mantidas conforme as necessidades.
Esta separao das instrues LOAD e STORE de todas as outras
permite ao compilador programar uma operao imediatamente a seguir
ao LOAD (por exemplo). Assim, enquanto o processador espera alguns
ciclos para os dados serem carregados para o(s) registrador(es), pode
executar outra tarefa, em vez de ficar parado espera. Algumas mquinas
CISC tambm tiram partido desta demora nos acessos memria, mas
esta funcionalidade tem que ser implementada em microcdigo.
Como se pode ver, a partir da discusso acima, o papel do
compilador no controle dos acessos memria bastante diferente nas
mquinas RISC em relao s mquinas CISC. Na arquitetura RISC, o
papel do compilador muito mais proeminente. O sucesso deste tipo de
arquitetura depende fortemente da inteligncia e nvel de otimizao
dos compiladores que se aproveitam da maior responsabilidade que
lhes concedida para poderem gerar cdigo mais otimizado. Este fato
de transferir a competncia da otimizao do cdigo do hardware para
o compilador foi um dos mais importantes avanos da arquitetura RISC.
Como o hardware era, agora, mais simples, isto significava que
o software tinha que absorver alguma da complexidade, examinando
agressivamente o cdigo e fazendo um uso prudente do pequeno
conjunto de instrues e grande nmero de registradores tpicos desta
arquitetura. Assim, as mquinas RISC dedicavam os seus limitados
recursos (transistores) para providenciar um ambiente em que o cdigo
poderia ser executado to depressa quanto o possvel, confiando no
compilador para fazer o cdigo compacto e otimizado.
Em resumo, existe um conjunto de caractersticas que permite
uma definio de arquitetura bsica RISC. So elas:

Execuo de uma instruo por ciclo de clock:


Esta a caracterstica mais importante das mquinas RISC
(e que as distingue das mquinas CISC). Como consequncia disto,
qualquer operao que no possa ser completada em um ciclo no pode
ser includa no conjunto de instrues. Assim, muitas mquinas RISC
no possuem instrues de multiplicao e diviso, executando estas
operaes atravs de sequncias de somas e deslocamentos criadas em
tempo de compilao ou atravs de procedimentos de bibliotecas.

Projeto de Processadores 83
Arquitetura LOAD/STORE
Dada a condio anterior de que todas as instrues devem ser
executadas em um ciclo de clock, cria-se um problema com as instrues
que acessam a memria, pois este tipo de operao leva muito tempo.
A soluo adotada que todas as instrues comuns (ADD, MOV, AND)
devem ter apenas registradores como operandos, ou seja, apenas
o endereamento de registrador permitido. Entretanto, algumas
instrues tm que referenciar a memria, de modo que duas instrues
especiais, LOAD e STORE, so adicionadas a esta arquitetura. Estas
duas instrues so a nica forma de ler ou escrever dados na memria.

Uso intenso de pipelining


Proibir que as instrues comuns acessem a memria no resolve
o problema de como fazer com que as instrues LOAD e STORE operem
em um ciclo. A soluo neste caso alterar ligeiramente o objetivo: ao
invs de requerer que toda instruo deva ser executada em um ciclo,
deve-se buscar a capacidade de iniciar uma nova instruo a cada ciclo,
sem levar em conta quando ela concluda. Dessa forma, se em N ciclos
consegue-se iniciar N instrues, na mdia se obtm a execuo de
uma instruo por ciclo. Para atingir este objetivo modificado, todas as
mquinas RISC possuem pipeline. No entanto, alguns cuidados devem
ser tomados com o uso do pipeline. Por exemplo, o compilador deve
garantir que qualquer instruo que venha depois de um LOAD no utilize
o dado que est sendo buscado da memria.

Unidade de controle implementada por hardware


Em uma mquina RISC, as instrues so executadas diretamente
pelo hardware, eliminando a necessidade de qualquer microprograma
na UC. Eliminar a necessidade de decodificao das instrues em
microinstrues o segredo da velocidade das mquinas RISC. Se uma
instruo complexa for realizada em uma mquina CISC utilizando 10
microinstrues de 0,1s cada, conclui-se que tal instruo leva 1s para
ser executada. Em uma mquina RISC, para realizar a mesma operao,
seria necessrio utilizar 10 instrues RISC, e se cada uma levar 0,1s
para ser executada, se gasta ento o mesmo tempo que a mquina
CISC. A nica desvantagem da mquina RISC neste caso a ocupao
um pouco superior de memria, visto que os programas tendem a ter
mais instrues.

84 UNIDADE 02
Instrues de formato fixo
Como em uma mquina RISC, a UC implementada atravs
de hardware, os bits individuais de cada instruo so utilizados como
entradas no bloco decodificador de instrues. Neste caso, no faz
sentido utilizar instrues de tamanho varivel, pois no existe nenhum
microprograma embutido, capaz de retirar bytes da fila de instrues e
analis-los um de cada vez por software.

Conjunto de instrues e modos de endereamentos reduzidos


Este o motivo pelo qual as mquinas RISC receberam tal nome.
No entanto, no existe nenhuma objeo em criar muitas instrues,
desde que cada instruo seja executada em um ciclo. Na prtica, a
limitao na quantidade de instrues recai sobre a complexidade do
decodificador de instrues, que cresce gradativamente conforme o
nmero de instrues, aumentando inclusive a rea ocupada da pastilha.
Por razes de velocidade e complexidade, no desejvel ter mais do
que um nmero mnimo de modos de endereamento.

Mltiplos conjuntos de registradores


Por no possuir nenhum microprograma, grande parte da rea da
pastilha liberada para outros propsitos. Muitas mquinas RISC utilizam
este espao para implementar um grande nmero de registradores
de CPU, que so utilizados para diminuir a quantidade de acessos
memria (LOAD e STORE).

Necessidade de compiladores complexos


Ao manter o hardware to simples quanto possvel de modo a
obter a maior velocidade possvel, paga-se o preo de tornar o compilador
consideravelmente mais complicado. Boa parte da complexidade do
compilador reside na grande distncia semntica existente entre as
linguagens de alto nvel e o conjunto de instrues reduzido das mquinas
RISC. Alm disso, o compilador tem que lidar com caractersticas
difceis, como cargas atrasadas e o gerenciamento do grande nmero de
registradores.

RISC vs CISC Comentrios

Armazenamento e memria:
A memria, hoje em dia, rpida e barata; qualquer pessoa que

Projeto de Processadores 85
tenha instalado recentemente um programa da Microsoft sabe que muitas
das companhias que desenvolvem software j no tm em considerao
as limitaes de memria. Assim, as preocupaes com o tamanho do
cdigo que deram origem ao vasto conjunto de instrues da arquitetura
CISC j no existem. De fato, os processadores da era ps-RISC tm
conjuntos de instrues cada vez maiores, com tamanho e diversidade
sem precedentes, e ningum pensa duas vezes no efeito que isso provoca
no uso da memria.

Compiladores
O desenvolvimento dos compiladores sofreu um tremendo avano
nos ltimos anos. De fato, chegou a um ponto tal que a prxima gerao
de arquiteturas (como o IA-64 ou Merced da Intel) depende apenas do
compilador para ordenar as instrues tendo em vista a mxima taxa de
instrues executadas.
Os compiladores RISC tentam manter os operandos em registradores
de forma a poderem usar simples instrues registrador-registrador. Os
compiladores tradicionais, por outro lado, tentam descobrir o modo de
endereamento ideal e o menor formato de instruo para fazerem os
acessos memria. Em geral, os programadores de compiladores RISC
preferem o modelo de execuo registrador-registrador de forma que os
compiladores possam manter os operandos que vo ser reutilizados em
registradores, em vez de repetirem os acessos memria de cada vez
que necessrio um operando. Usam, por isso, LOADs e STOREs para
acessar a memria para que os operandos no sejam, implicitamente,
rejeitados aps terminada a execuo de uma determinada instruo,
como acontece nas arquiteturas que utilizam um modelo de execuo
memria-memria.

VLSI
O nmero de transistores que cabe numa placa de silcio
extremamente elevado e com tendncia a crescer ainda mais. O problema
agora j no a falta de espao para armazenar as funcionalidades
necessrias, mas o que fazer com todos os transistores disponibilizados.
Retirar das arquiteturas as funcionalidades que s raramente so
utilizadas j no uma estratgia moderna de projeto de processadores.
De fato, os projetistas procuram afincadamente mais funcionalidades
para integrarem nos seus processadores para fazerem uso dos recursos
(transistores) disponveis. Eles procuram no o que podem tirar, mas

86 UNIDADE 02
o que podem incluir. A maioria das funcionalidades ps-RISC so uma
consequncia direta do aumento do nmero de transistores disponveis e
da estratgia incluir se aumentar o desempenho.

Conjunto de instrues
Uma instruo um comando codificado em 0s e 1s que leva o
processador a fazer algo. Quando um programador escreve um programa
em C, por exemplo, o compilador traduz cada linha de cdigo C em uma
ou mais instrues do processador. Para que os programadores possam
(se quiserem) ver estas instrues no tendo que lidar com 0s e 1s
as instrues so representadas diferente por exemplo MOV, que
copia um valor de uma localizao para outra ou ADD, que adiciona dois
valores. A seguinte linha de cdigo adiciona dois valores (b e c) e coloca
o resultado em a: a=b+c. Um compilador de C poderia traduzir isto na
seguinte sequncia de instrues:

MOV ax, b
ADD ax, c
MOV a, ax

A primeira instruo copia o contedo da localizao de memria


que contm o valor b para o registrador ax do processador (um registrador
uma localizao de armazenamento dentro do processador que pode
conter certa quantidade de dados, normalmente 16 ou 32 bits. Sendo
uma parte integrante do processador, os acessos aos registrador so
muitssimo mais rpidos que os acessos memria). A segunda instruo
adiciona o valor c ao contedo de ax e a terceira copia o resultado, que
est em ax, para a localizao onde a varivel a est armazenada.
Qualquer programa, por mais complexo que seja, traduzido, em ltima
anlise, em sries de instrues do gnero da anterior.
Os programas de aplicao modernos contm, frequentemente,
centenas de milhares de linhas de cdigo. Os sistemas operativos
so ainda mais complexos: o Microsoft Windows 95 contm cerca de
10 milhes de linhas de cdigo, a maior parte delas escrita em C, e o
Windows NT tem mais de 5 milhes de linhas de cdigo escritas em C e
C++. Imagine-se o que seria ter que traduzir 1 milho de linhas de cdigo
C num conjunto de instrues com uma a vinte ou trinta instrues por
linha de cdigo e fcil de perceber o porqu de o software de hoje em
dia ser to complicado e to difcil de corrigir.

Projeto de Processadores 87
Quando um programa roda, o processador carrega as instrues
uma a uma e as executa. Leva tempo carregar uma instruo e mais tempo
ainda decodificar essa instruo para determinar o que representam os
0s e 1s. E quando comea a execuo, necessrio um determinado
nmero de ciclos para completar a execuo. Em um 386 a 25 MHz, um
ciclo de relgio igual a 40 ns; em um PENTIUM a 120 MHz, um ciclo
igual a menos de 9 ns. Uma maneira de fazer com que um processador
rode o software mais rapidamente aumentar a velocidade do relgio.
Outra diminuir o nmero de ciclos que uma instruo requer para
completar a execuo. Se todo o resto fosse igual, um processador que
funcionasse a 100 MHz teria apenas metade do desempenho de outro
que funcionasse a 50 MHz, se o primeiro requeresse 4 ciclos de relgio
por instruo e o segundo apenas um ciclo.
Desde o incio da era dos microprocessadores, o grande objetivo
dos projetistas de chips desenvolver uma CPU que requeira apenas 1
ciclo de relgio por instruo, no apenas para certas instrues, mas
para TODAS as instrues. O objetivo original dos projetistas de chips
RISC era limitar o nmero de instrues suportadas pelo chip de modo
que fosse possvel alocar um nmero suficiente de transistores a cada
uma delas, para que a sua execuo precisasse apenas de um ciclo de
relgio para se completar.
Em vez de disponibilizar uma instruo MUL, por exemplo, o
projetista faria com que a instruo ADD executasse em 1 ciclo de relgio.
Ento o compilador poderia fazer a multiplicao de a e b somando a a
ele prprio b vezes ou vice versa. Uma CPU CISC poderia multiplicar 10
e 5 da seguinte forma:

MOV ax, 10
MOV bx, 5
MUL bx

Enquanto uma CPU RISC faria o mesmo de outro modo:

MOV ax, 0
MOV bx, 10
MOV cx, 5
begin:
ADD ax, bx
loop begin; loop cx vezes

88 UNIDADE 02
claro que este apenas um exemplo ilustrativo, pois os
RISC atuais tm, de fato, instrues de multiplicao.

Medida de desempenho
Como a medida de desempenho est diretamente relacionada
a um programa em especfico, cria-se uma dificuldade em comparar
processadores RISC e CISC, dadas as diferenas conceituais entre
ambas as arquiteturas. Como comparar adequadamente medidas
de comportamento desigual? A unidade de medida MIPS (milhes de
instrues por segundo) no eficaz para esta comparao, pois pode
facilmente iludir o observador com os resultados, uma vez que um mesmo
programa possui muito mais instrues em uma mquina RISC do que
em uma CISC. Dessa forma, utiliza-se com maior frequncia a unidade
MFLOPS (milhes de operaes de ponto flutuante por segundo), por
medir a velocidade com que o processador efetivamente realiza os
clculos matemticos.
Recentemente, a controvrsia envolvendo RISC x CISC diminuiu,
devido grande convergncia que vem ocorrendo entre as duas
tecnologias. As mquinas RISC tornaram-se mais complexas, em virtude
do aumento da densidade das pastilhas e das velocidades do hardware,
e as mquinas CISC passaram a utilizar conceitos tradicionalmente
aplicados s mquinas RISC, como o nmero crescente de registradores
e maior nfase no projeto do pipeline de instrues.

EXERCCIO DE FIXAO

1. Quais as principais caractersticas dos processadores com arquitetura


RISC?
2. Quais as principais caractersticas dos processadores com arquitetura
CISC?
3. Discorra sobre as principais diferenas entre processadores RISC e
CISC, enfocando as vantagens e desvantagens de cada uma dessas
arquiteturas.
4. Atualmente, fcil diferenciar claramente se um processador segue
uma arquitetura RISC ou CISC? Por qu?

Projeto de Processadores 89
RESUMO

Uma caracterstica extremamente fascinante nos processadores


a sua capacidade de interpretar e executar instrues de programa.
Na arquitetura de qualquer sistema computacional, o processador
o elemento que define a potencialidade da mquina, a partir de sua
velocidade de processamento, do tamanho de palavra que manipulada,
da quantidade de memria interna (registradores) e do seu conjunto de
instrues.
A maior parte destes fatores est intimamente ligada forma
como os diferentes componentes do microprocessador esto associados
e como estes so controlados internamente.
O contedo desta unidade influenciado fortemente pelos
textos de Nicholas Carter, Eduardo Moresi, Marcelo Rebonatto, Ivan
Ricarte e Fabian Vargas. O captulo acompanhado de exerccios sem a
soluo, pois preferimos deixar o prazer desta tarefa ao leitor. A bibliografia
e a webliografia ao fim das notas so mais do que suficiente para adquirir
um conhecimento razovel sobre a organizao de computadores. Ao
trmino da leitura desta unidade, o estudante dever: a) entender a
arquitetura de processadores; b) compreender o funcionamento dos
pipelines; e c) ser capaz de diferenciar mquinas RISC de mquinas
CISC.

90 UNIDADE 02
UNIDADE 3
SISTEMAS DE
MEMRIA

OBJETIVOS:
Entender o funcionamento de um sistema de memria;
Ser capaz de diferenciar as tecnologias de memrias;
Compreender o porqu do uso de hierarquia de memrias;
Ser capaz de implementar os algoritmos de substituio de pginas;
Conhecer a tcnica de memria virtual.
SISTEMAS DE MEMRIA

Introduo

At agora, temos tratado os sistemas de memria como uma


caixa preta na qual o processador pode colocar dados para posterior
recuperao. Vamos explorar esta caixa preta, para explorar como so
implementados os sistemas de memria nos sistemas de memria nos
sistemas de computadores modernos.
Este captulo comea com uma discusso sobre latncia, taxa de
transferncia e largura de banda, as trs grandezas utilizadas para medir
o desempenho de sistemas de memria. Em seguida, abordaremos a
hierarquia de memria explicando como e por que vrias tecnologias de
memria so utilizadas para implementar um nico sistema de memria.
Finalmente, cobriremos as tecnologias de memria explicando como
os chips de memria so implementados, a diferena entre SRAMs e
DRAMs e como os diferentes modos de acesso encontrados em DRAMs
so implementados.

Conceitos bsicos

Quando discutimos pipelines de processadores, utilizamos


os termos latncia e taxa de transferncia para descrever o tempo
utilizado para completar uma operao individual e a taxa na qual as
operaes podem ser completadas. Esses termos tambm so utilizados
na discusso de sistemas de memria com o mesmo significado. Outro
termo tambm utilizado largura de banda, que descreve a taxa total
pela qual os dados podem ser movimentados entre o processador e o

93
Sistemas de Memria
sistema de memria. A largura de banda pode ser vista como o produto
da taxa de transferncia e a quantidade de dados referidos por cada
operao de memria.

Exemplo: Se o sistema de memria tem uma latncia de 10 ns por


operao e uma largura de banda de 32 bits, qual a taxa de transferncia
e a largura de banda do sistema de memria, assumindo que apenas
uma operao pode ser realizada por vez e no existe retardo entre as
operaes?
Soluo: Sabendo que taxa de transferncia = 1/latncia
quando as operaes so realizadas sequencialmente, ento a taxa de
transferncia do sistema de memria de 100 milhes de operaes por
segundo. Uma vez que cada operao faz referncia a 32 bits de dados,
a largura de banda de 3,2 bilhes de bits por segundo.
Exemplo retirado de Carter (2003).

Se todas as operaes de memria fossem executadas


sequencialmente, calcular a latncia e a largura de banda de um sistema
de memria seria simples. No entanto, muitos desses sistemas so
projetados de forma que o relacionamento entre latncia e largura de
banda sejam mais complexos. Sistemas de memria podem utilizar
pipelining do mesmo modo que os processadores, permitindo que as
operaes sobreponham a sua execuo, de modo a melhorar a taxa de
transferncia. Algumas tecnologias de memria empregam um tempo fixo
entre sucessivos acessos a memria. Esse tempo usado para preparar
o hardware para o prximo acesso. Tal procedimento denominado pr-
carregamento e tem o efeito de adiantar parte das tarefas envolvidas
no acesso memria. Isso reduz o retardo entre o tempo no qual um
endereo enviado para o sistema de memria at que a operao de
memria seja completada. Se o sistema de memria estiver ocioso muito
tempo, fazer o pr-carregamento ao final de cada operao de memria
melhora o desempenho, porque normalmente no existe outra operao
esperando para utilizar tal sistema.

Endereos de memria

A memria formada por um conjunto de clulas (ou posies),


cada uma das quais podendo guardar uma informao. Cada clula tem
um nmero associado a ela, nmero esse conhecido como endereo da

94 UNIDADE 03
clula. por meio desse nmero que os programas podem referenciar
a clula. Se a memria tiver n clulas, elas tero endereos de 0 a n1.
Todas as clulas de uma memria dispem do mesmo nmero de bits.
Se uma clula tiver k bits, ela poder armazenar qualquer uma das 2k
combinaes possveis para os bits. A figura 1.1 mostra trs organizaes
diferentes para uma memria de 96 bits. Observe que clulas adjacentes
tm endereos consecutivos (por definio).

Figura 1.1: Organizaes de memria.


Figura adaptada de Pinto, (2007).

Os computadores que usam o sistema de numerao binria


(incluindo aqueles que utilizam a notao octal e/ou a hexadecimal para
nmeros binrios) expressam os endereos de memria como nmeros
binrios. Se um determinado endereo tem m bits, o nmero mximo
de clulas endereveis de 2m. Por exemplo, um endereo utilizado
para referenciar a memria da figura 1.1 (a) precisa de no mnimo 4 bits
para expressar todos os nmeros binrios entre 0 e 11. No entanto, no
caso da figura 1.1 (b) e da figura 1.1 (c), trs bits de endereo sero
suficientes. O nmero de bits no endereo determina o nmero mximo
de endereos que podero ser referenciados diretamente na memria
sendo completamente independente do nmero de bits por clula. Tanto
uma memria com 212 clulas de 8 bits quanto outra memria com 212
clulas de 64 bits precisam de 12 bits para representar o endereo da
clula.
A clula a menor unidade enderevel em um computador. Nos
ltimos anos, quase todos os fabricantes de computadores padronizaram

95
Sistemas de Memria
o tamanho da clula em 8 bits, chamando essa clula de byte. Os bytes
so agrupados em palavras. Um computador com uma palavra de 32
bits tem 4 bytes/palavra, enquanto um computador com uma palavra de
64 bits tem 8 bytes/palavra. A maioria das instrues de uma mquina
opera sobre palavras, da a significncia do conceito. Por exemplo, uma
instruo de soma muito provavelmente vai somar dois valores de 32 bits.
Portanto, uma mquina de 32 bits dever ter registradores e instrues
para tratar palavras de 32 bits, enquanto uma mquina de 64 bits deve
ter registradores de 64 bits e instrues para mover, somar, subtrair, etc.
palavras de 64 bits.

Ordenao dos bytes

Os bytes de uma palavra podem ser numerados da esquerda para


a direita ou da direita para a esquerda. primeira vista, pode parecer
que essa escolha no tem a menor importncia, mas, conforme ser
visto em breve, ela tem implicaes muito srias e importantes. A figura
1.2 (a) mostra parte de uma memria de um computador de 32 bits,
cujos bytes so numerados da esquerda para a direita, a exemplo da
arquitetura do SPARC ou dos mainframes da IBM. A figura 1.2 (b) mostra
a representao da memria de um computador de 32 bits, cujos bytes
de uma palavra so numerados da direita para a esquerda, a exemplo
das mquinas da famlia Intel. O computador em que a numerao dos
bytes das palavras atribui um nmero maior parte mais significativa
da palavra chamado de big endian, enquanto o computador da figura
1.2(b) conhecido como computador little endian.

Figura 1.2: Big endian e little endian.


Figura adaptada de Pinto, (2007).

96 UNIDADE 03
muito importante que o leitor entenda que, tanto no sistema
big endian quanto no little endian, um nmero inteiro de 32 bits, com um
determinado valor numrico, digamos 6, representado pelos bits 110
nos trs bits mais direita (de mais baixa ordem) de uma palavra, sendo
os demais 29 bits preenchidos com zeros. No esquema big endian, os
bits 110 estaro no byte 3 (ou 7, ou 11 etc.), enquanto no little endian
esses bits estaro no byte 0 (ou 4, ou 8 etc.). Em ambos os casos, a
palavra contendo esse nmero inteiro estar armazenada no endereo 0.
Ambas as representaes funcionam muito bem e so consistentes.
Os problemas comeam quando uma mquina big endian tenta enviar
um registro a outra mquina little endian por meio de uma rede. Vamos
admitir que a mquina big endian envie o registro byte a byte para a little
endian, comeando do byte 0 e terminando no byte 19. (Sejamos otimistas
e suponhamos que todos os bits transmitidos chegaro inclumes outra
ponta.) Portanto, o byte 0 da mquina big endian vai para a memria da
mquina little endian no byte 0, e assim por diante, conforme mostra a
figura 1.3 (c).
Uma soluo bvia seria um software para inverter os bytes de uma
palavra, depois de eles serem copiados. Isso passa a tratar corretamente
os nmeros, mas incorretamente a string, conforme mostra a figura 1.3
(d). Observe que, ao ler a string de caracteres, o computador primeiro l
o byte 0 (um espao), depois o byte 1 (caractere C), e assim por diante.
Em funo disso, fcil constatar que a leitura feita na ordem inversa.

Figura 1.3: Transmisso entre big endian e little endian.


Figura adaptada de Pinto, (2007).

No h uma soluo simples para esse problema. Se incluirmos


um cabealho na frente de cada item de dados, indicando o tipo
(caractere, nmero inteiro etc.) e o tamanho do dado que se segue,
teremos uma soluo que funciona, mas que extremamente ineficiente.
A incluso desse cabealho permitiria que o receptor fizesse somente as

97
Sistemas de Memria
converses necessrias. Seja como for, deve ter ficado claro que a falta
de um padro para a ordenao dos bytes da palavra dos computadores
um dos principais problemas para a troca de dados entre mquinas
diferentes.

Cdigos com correo de erros

Os dados armazenados na memria dos computadores podem


ocasionalmente ser alterados em razo de oscilaes na tenso de
alimentao ou de outras causas que, no momento, no so importantes.
Para se prevenir contra esses tipos de erro, algumas memrias
armazenam as informaes usando um cdigo que permita a correo ou
a deteco de erros. Quando esses cdigos so usados, h necessidade
de se acrescentarem bits extras a cada palavra de memria, de modo a
permitir a verificao da exatido da informao armazenada. Quando
uma palavra lida da memria, os bits armazenados permitem verificar
a ocorrncia eventual de erros que tenham corrompido a informao
armazenada.
Para entender o tratamento dado aos erros, necessrio examinar
o que vem a ser um erro em uma informao armazenada na memria
de um computador. Suponha que uma determinada palavra de memria
contenha m bits de dados aos quais vamos acrescentar mais r bits de
redundncia ou de verificao. Seja n o novo tamanho da palavra (ou seja,
n = m + r). Uma unidade de n bits, sendo m de dados e r de redundncia,
ser chamada de palavra de cdigo.
Dadas duas palavras de cdigo quaisquer, digamos 10001001 e
10110001, possvel determinar o nmero de bits diferentes que ocupam
a mesma posio nessas duas palavras. Nesse caso, existem trs bits
diferentes em posies correspondentes. Para determinar isso, basta que
seja calculada a funo booleana OU EXCLUSIVO correspondente s
duas palavras de cdigo, contando a seguir o nmero de bits 1 gerados
no resultado.
Chama-se distncia de Hamming ao nmero de bits
correspondentes que diferem em duas palavras de cdigos quaisquer.
O significado desse resultado muito importante, pois, se duas palavras
distam d, ser necessria a ocorrncia de d erros para que uma palavra
seja transformada na outra. Por exemplo, as palavras de cdigo 11110001
e 00110000 distam 3 unidades de Hamming, pois so necessrios trs
erros para que uma se converta na outra.

98 UNIDADE 03
Com uma palavra de memria de m bits, aparentemente todos
os 2m padres de bits so legais, mas, se considerarmos que vamos
acrescentar a esses m bits os r bits de verificao, ento, das 2n
combinaes possveis, somente 2m sero vlidas. Dessa maneira,
quando a memria l um cdigo invlido, o sistema sabe que houve um
erro no valor armazenado naquela posio. Se conhecermos o algoritmo
para clculo dos bits de verificao, ser possvel construir uma tabela
com todas as palavras de cdigo vlidas, e dessa tabela extrair as duas
palavras de cdigo com a menor distncia de Hamming. Essa distncia
ser a distncia para todo o cdigo.
As propriedades de deteco de erros e de correo de erros de
um cdigo dependem fundamentalmente da sua distncia de Hamming.
Para detectar d erros, necessria uma distncia de Hamming de d +
1, pois em tal cdigo no h como a ocorrncia de d erros transformar
uma palavra de cdigo vlida em outra palavra de cdigo vlida. Assim
tambm, para corrigir d erros, precisamos de um cdigo com distncia
de 2d + 1 para permitir que, mesmo em presena de d erros, a palavra
de cdigo original possa ser recomposta por meio dos bits redundantes.
Vamos examinar um exemplo simples de um cdigo com deteco
de erros. Para isto, considere um cdigo no qual um bit de paridade seja
acrescentado aos bits de dados do cdigo. Esse bit de paridade deve ser
escolhido de modo a fazer com que a quantidade de bits 1 na palavra de
cdigo seja sempre um nmero par (ou mpar). Tal cdigo tem distncia
de Hamming igual a 2 portanto, a ocorrncia de um nico erro produz
uma palavra de cdigo invlida. Ou seja, so necessrios dois erros para
transformar uma palavra de cdigo vlida em outra palavra de cdigo
vlida. Esse esquema pode ser usado para detectar a ocorrncia de um
nico erro na informao armazenada. Toda vez que uma informao com
paridade errada for lida da memria, sinalizada uma condio de erro.
Nesse caso, como o erro s detectado, e no corrigido, o programa no
pode continuar seu processamento, porm a ao de deteco impede o
clculo de resultados errados.
Como exemplo de um cdigo com correo de erro, considere o
caso de um cdigo com somente quatro palavras de cdigo vlidas:

Exemplo: 0000000000, 0000011111, 1111100000, e 1111111111

Esse cdigo tem uma distncia de Hamming igual a 5, o que


significa que ele pode corrigir dois erros. Quando o receptor recebe uma

99
Sistemas de Memria
palavra de cdigo igual a 0000000111, ele sabe que o correto deveria ser
0000011111 (considerando a ocorrncia de no mximo dois erros). No
entanto, se ocorrerem trs erros, transformando, por exemplo, a palavra
de cdigo 0000000000 em 0000000111, esses erros no podero ser
corrigidos.

Hierarquia de memria

At agora, tratamos os sistemas de memria como estruturas de


um nico nvel, como mostra a figura 1.4 (a). Na realidade, sistemas de
memria de computadores modernos tm hierarquias de memrias de
vrios nveis, como ilustrado na figura 1.4 (b) e figura 1.4 (c). A figura
1.4 (b) mostra uma hierarquia de memria em dois nveis: uma memria
principal e uma memria secundria. J a figura 1.4 (c) apresenta uma
hierarquia em trs nveis, consistindo de uma cache, uma memria
principal e uma memria secundria. A razo principal pela qual sistemas
de memria so construdos como hierarquias que o custo por bit de
uma tecnologia de memria geralmente proporcional velocidade da
tecnologia.

Figura 1.4: Hierarquia de memria.

Em uma hierarquia de memria, os nveis mais prximos ao


processador contm uma quantidade relativamente pequena de memria
que implementada em uma tecnologia de memria rpida, de modo a
fornecer baixo tempo de acesso. Progredindo para baixo na hierarquia,
cada nvel contm mais capacidade de armazenamento e o acesso
demora mais que o nvel acima dele. O objetivo de uma hierarquia
de memria manter os dados que sero mais referenciados por um

100 UNIDADE 03
programa nos nveis superiores da hierarquia, de modo que a maioria
das solicitaes de memria possam ser tratadas no nvel ou nos nveis
superiores. Isto resulta em um sistema de memria que tem um tempo
de acesso mdio semelhante ao tempo de acesso do nvel mais rpido,
mas com o custo mdio por bit semelhante quele do nvel mais baixo.
Em geral, no possvel prever quais localizaes de memria
sero acessadas com mais frequncia, de modo que os computadores
utilizam um sistema baseado em demanda para determinar quais os
dados manter nos nveis mais altos da hierarquia. Quando a solicitao
de memria enviada para a hierarquia, o nvel mais alto verificado para
ver se ele contm o endereo. Se for assim, a solicitao completada.
Caso contrrio, o prximo nvel mais baixo verificado, com o processo
sendo repetido at que, ou o dado seja encontrado, ou o nvel mais baixo
da hierarquia seja atingido, no qual se tem a garantia que o dado est
contido.
Tradicionalmente, uma hierarquia de memria incluindo os
registradores e colocando informaes em relao capacidade, custo e
tempo de acesso expressa na forma de pirmide, como mostra a figura
1.5. A representao em forma de pirmide facilita a compreenso, pois no
topo esto os registradores, de acesso quase imediato com capacidade
reduzida, enquanto na base encontra-se a memria secundria, disponvel
em grandes quantidades, porm de acesso mais lento.

Figura 1.5: Hierarquia de memria-Pirmide.

101
Sistemas de Memria
Propriedades de uma hierarquia

As principais propriedades de um sistema de hierarquia de


memria so: incluso, coerncia e localidade de referncia. Considere
uma hierarquia de memria como mostra a figura 1.6 onde M1 , M2 , . . .
, Mn tal que Mi mais rpida porm menor que Mi+1 e os registradores
do processador podem ser considerados como o nvel 0 da hierarquia de
memria.

Figura 1.6: Hierarquia de memria.


Figura adaptada de Ricarte, (1999).

Incluso
Cada conjunto de dados em Mi deve estar contido no conjunto
de dados em Mi+1: M1 M2 . . . Mn. Assim, Mn seguramente contm
todos os itens de dados, e os subconjuntos de Mn so copiados para
os outros nveis Mi, i < n, ao longo do processamento. Um item em Mi
seguramente ter cpias em Mi+1 , Mi+2 , . . . , Mn , porm, um item em
Mi+1 no est necessariamente em Mi quando requisitado quele nvel.
Um item miss caracteriza uma falha de acesso ao item no nvel em que
ele foi solicitado.

Coerncia
Cpias de um mesmo item devem ser consistentes ao longo de
nveis sucessivos da hierarquia de memria. H dois mtodos bsicos
para manuteno da consistncia entre os nveis da hierarquia:
- write-through: atualizao imediata em Mi+1 quando item
modificado em Mi;
- write-back: atualizao s realizada quando o item estiver
sendo retirado de Mi.

102 UNIDADE 03
Localidade de referncia
Localidade o conceito fundamental para o funcionamento
adequado da hierarquia de memria. definida como o comportamento
de programas segundo o qual referncias memria gerada pela CPU,
para acesso a instrues ou a dados, fazem com que estes acessos
estejam agrupados em certas regies (ou sequncias) no tempo ou no
espao. As duas principais formas de localidade so:
- Localidade temporal: Os itens referenciados no passado recente
tm maior chance de serem novamente referenciados em um futuro
prximo. Ocorre por exemplo em sub-rotinas, iteraes e referncias a
variveis temporrias.
- Localidade espacial: Tendncia de processos em acessar itens
cujos endereos esto prximos. Ocorre por exemplo em operaes em
arranjos e referncias a segmentos de programas. A localidade espacial
est relacionada com a localidade sequencial, pela qual elementos em
posies consecutivas da memria tm chance de serem acessados em
sequncia, como ocorre, por exemplo, em referncias a instrues de um
programa e a elementos de um arranjo.
Pelo princpio da localidade, possvel construir sistemas
de memria hierrquica de forma eficiente. Exemplos de seu uso
incluem sistemas de memria cache, entre processador e memria
principal; e sistemas de memria virtual, operando com as memrias
principal e secundria. Memrias cache podem estar localizadas no
chip do processador (internas) ou ser construdas externamente, com
dispositivos SRAM. A memria principal geralmente utiliza dispositivos
DRAM, enquanto que a memria secundria usualmente constituda
por discos magnticos.

Tempo mdio de acesso


Foi desenvolvido um conjunto de termos para descrever hierarquia
de memria. Quando um endereo que est sendo referenciado por uma
operao encontrado em um nvel da hierarquia de memria, diz-se
que ocorreu um acerto naquele nvel. Caso contrrio diz-se que ocorreu
uma falha. De modo semelhante, a taxa de acertos (hit ratio) de um nvel
a porcentagem de referncia em um nvel que resulta em acertos, e a
taxa de falhas (miss ratio) o percentual de referncias em um nvel que
resulta em falhas.
Se conhecemos a taxa de acerto e o tempo de acesso (tempo para
completar uma solicitao) para cada nvel na hierarquia de memria,
podemos calcular o tempo mdio de acesso da hierarquia. Para cada

103
Sistemas de Memria
nvel na hierarquia o tempo mdio de acesso :

(Tacerto X Pacerto) + (Tfalha x Pfalha)

onde, Tacerto o tempo para completar uma solicitao que acerte,


Pacerto a taxa de acertos do nvel (expressa como uma probabilidade),
Tfalha o tempo de acesso mdio dos nveis abaixo deste na hierarquia e
Pfalha a taxa de falha do nvel. Uma vez que a taxa de acertos do nvel
mais baixo 100%, podemos comear no nvel mais baixo e trabalhar
em direo ao topo para calcular o tempo de acesso mdio de cada nvel
na hierarquia.

Tecnologias de memria

Hoje em dia, a memria principal fabricada base de pastilhas


de semicondutores. Contudo, existem vrios outros tipos de memrias
que utilizam os semicondutores. A Tabela 1, apresentada a seguir, contm
uma lista dos principais tipos de memrias de semicondutores.

Tipo de Categoria Mecanismo Mecanismo de Volatilidade


memria para apagar escrita
RAM Memria de Eletricamente, Eletricamente Voltil
leitura e escrita em nvel de
bytes
ROM Mscaras
Memria No
apenas de possvel
PROM leitura

No-voltil
EPROM Luz UV, em
nvel de
Memria pastilha Eletricamente
principalmente
Flash Eletricamente,
de leitura
em nvel de
blocos
EEPROM Eletricamente,
em nvel de
bytes
Tabela 1: Memria de semicondutores.

Dentre os tipos de memrias ilustrados anteriormente, a RAM


(Random-Access Memory) a mais conhecida. O objetivo da RAM
permitir que os dados sejam lidos e escritos rapidamente e de modo
fcil. Conforme mostra a tabela, tanto a leitura quanto a escrita so

104 UNIDADE 03
feitas por meio de sinais eltricos. Para manter seus dados, ela requer
o fornecimento de energia constante (voltil). Alm disso, existem RAMs
dinmicas (usam capacitores para armazenar informaes, portanto
requerem sinais de refresh) e estticas (construdas atravs de flip-flops),
mas ambas so volteis. Em geral, as RAMs estticas so mais rpidas
que as dinmicas.
O segundo tipo ilustrado foi a memria ROM (Read-Only Memory),
memria apenas de leitura. Sua principal vantagem que os dados
ficam permanentemente armazenados, no precisando ser carregados a
partir de um dispositivo secundrio. Os dados so gravados na pastilha
durante a fabricao, atravs de mscaras que contm as informaes.
Portanto, no so permitidos erros durante o processo de fabricao.
Consequentemente, para que o processo se torne mais barato
necessria a fabricao de muitas unidades com a mesma informao.
Por outro lado, quando poucas unidades sero fabricadas, a
melhor alternativa a memria ROM programvel (Programmable ROM).
A PROM permite que os dados sejam gravados apenas uma vez tambm,
s que isso feito eletricamente pelo fornecedor ou pelo cliente, aps sua
fabricao. Para isso, necessrio um aparelho de gravao de PROM.
Outra classe de memrias so aquelas destinadas principalmente para
operaes de leitura, tais como: EPROM (Erasable Programmable Read
Only Memory), EEPROM (Electrically Erasable Programmable Read Only
Memory) e FLASH.
A EPROM uma PROM que pode ser apagada. Pode ser
programvel (com queimadores de PROM) e apagada (com mquinas
adequadas, base de raios ultravioletas). Tem utilizao semelhante
da PROM, para testar programas no lugar da ROM, ou sempre que
se queira produzir ROM em quantidades pequenas, com a vantagem
de poder ser apagada e reutilizada. J a EEPROM uma EPROM que
pode ser apagada por processo eletrnico, sob controle da UCP, com
equipamento e programas adequados. mais cara e geralmente utilizada
em dispositivos aos quais se deseja permitir a alterao, via modem,
possibilitando a carga de novas verses de programas distncia ou
ento para possibilitar a reprogramao dinmica de funes especficas
de um determinado programa, geralmente relativas ao hardware (p.ex.,
a reconfigurao de teclado ou de modem, programao de um terminal,
etc.).

105
Sistemas de Memria
Figura 1.7: Tecnologia de memria.
Figura adaptada de Casacurta, (2004).

Organizao dos chips de memria

Os chips de memria SRAM e DRAM tm a mesma estrutura bsica,


que mostrada na figura 1.8. Os dados so armazenados em uma matriz
retangular de clulas de bit, cada uma das quais retm um bit de dados.
Para ler dados da matriz, metade do endereo a ser lido (geralmente os
bits de ordem mais alta) enviado para um decodificador. O decodificador
aciona (vai para o nvel alto) a linha de palavra correspondente ao valor
dos bits de entrada, o que faz com que todas as clulas de bit na linha
correspondente acionem os seus valores sobre as linhas de bit s quais
elas so conectadas. Ento, a outra metade do endereo usada como
entrada para um multiplexador que seleciona a linha de bit apropriada e
orienta a sua sada para os pinos de sada do chip. O mesmo processo
utilizado para armazenar dados no chip, exceto que o valor a ser escrito
orientado para a linha de bit adequada e escrito na clula de bit
escolhida.

106 UNIDADE 03
Figura 1.8: Organizao de chips de memria.
Figura adaptada de Carter, (2003).

A maioria dos chips de memria gera mais de um bit de sada.


Isto feito ou construindo diversas matrizes de clulas de bit, cada uma
das quais produz um bit de sada, ou projetando um multiplexador que
seleciona as sadas de diversas linhas de bit e as orienta para a sada
do chip.
A velocidade de um chip de memria determinada por alguns
fatores, incluindo o comprimento das linhas de bit, de palavra e como
as clulas de bit so construdas. Linhas de palavras e de bits mais
longas tm capacitncia e resistncia mais altas, de modo que, medida
que seus comprimentos aumentam, demora mais para acionar um sinal
sobre elas. Por esse motivo, muitos chips de memria modernos so
construdos com muitas matrizes de clulas de bit pequenas para manter
as linhas de palavra e de bit curtas. As tcnicas utilizadas para construir
tais clulas afetam a velocidade do chip de memria porque elas afetam
quanta corrente est disponvel para acionar a sada da clula de bit sobre
as linhas de bit, o que determina quanto tempo demora para propagar a
sada da clula de bit para o multiplexador. Como veremos nas duas
prximas sees, clulas de bit SRAM podem acionar muito mais corrente
do que clulas de bit DRAM, o que um dos princpios pelos quais as
SRAMs tendem a ser muito mais rpidas do que as DRAMs.

107
Sistemas de Memria
SRAMs
A principal diferena entre SRAMs e DRAMs como as suas
clulas de bit so construdas. Como mostra a figura 1.9, o ncleo de
uma clula de bit SRAM consiste de dois inversores conectados em uma
configurao back-to-back. Uma vez que um valor tenha sido colocado
na clula de bit, a estrutura em anel dos dois inversores manter o valor
indefinidamente, porque cada entrada de um inversor oposta do outro.
Este o motivo pelo qual SRAMs so chamadas de RAMs estticas, os
valores armazenados na RAM permanecem l enquanto houver energia
aplicada ao dispositivo. Por outro lado, DRAMs perdero o seu valor
armazenado ao longo do tempo, motivo pelo qual so conhecidas como
RAMs dinmicas.

Figura 1.9: Clula de bit SRAM.


Figura adaptada de Carter, (2003).

Para ler o valor de uma clula de bit, a linha de palavra tem que
ser colocada no nvel alto, o que faz com que os dois transistores liguem
as sadas dos inversores linha de bit e linha de bit invertido. Estes
sinais, ento, podem ser lidos pelo multiplexador e enviados para fora
do chip. Escrever em uma clula de bit SRAM feito ativando a linha de
palavra e acionando os valores apropriados sobre a linha de bit e a linha
de bit invertido. Enquanto o dispositivo que est acionando a linha de bit
for mais forte que o inversor, os valores na linha de bit sero dominados
pelo valor originalmente armazenado na clula de bit e, ento, sero
armazenados na clula de bit quando a linha de palavra deixar de ser

108 UNIDADE 03
ativada.
DRAMs
A figura 1.10 mostra uma clula de bit DRAM. Em vez de um par de
inversores, utilizado um capacitor para armazenar os dados na clula
de bit. Quando a linha de palavra ativada, o capacitor conectado
linha de bit, permitindo que o valor armazenado na clula seja lido ao
se examinar a tenso armazenada no capacitor, ou escrever colocando
uma nova tenso sobre o mesmo. Esta figura mostra por que as DRAMs
geralmente tm capacidades muito maiores que as SRAMs construdas
com a mesma tecnologia de fabricao: as SRAMs exigem muito mais
componentes para implementar uma clula de bit. Tipicamente, cada
inversor exige dois transistores, para um total de seis transistores em uma
clula de bit (algumas implementaes utilizam pouco mais ou menos
transistores). Em contraste, uma clula de bit DRAM exige apenas um
transistor com um capacitor, o que toma menos espao no chip.

Figura 1.10: Clula de bit DRAM.


Figura adaptada de Carter, (2003).

As figuras 1.9 e 1.10 tambm servem para mostrar por que as


SRAMs so mais rpidas que as DRAMs. Nas SRAMs, um dispositivo
ativo (o inversor) aciona o valor armazenado na clula de bit sobre a linha
de bit e a linha de bit invertido. Nas DRAMs, o capacitor conectado
linha de bit quando a palavra ativada, e esse sinal muito mais fraco do
que o produzido pelos inversores na clula de bit SRAM. Assim, a sada

109
Sistemas de Memria
de uma clula de bit DRAM demora muito mais para que seja acionada
sobre a linha de bit do que a clula de bit SRAM demora para acionar a
equivalente linha de bit.
As DRAMs so chamadas de RAMs dinmicas porque os valores
armazenados em cada clula de bit no so estveis. Ao longo do tempo,
fugas de corrente faro com que as cargas armazenadas nos capacitores
sejam drenadas e perdidas. Para evitar que o contedo de uma DRAM
seja perdido, ela precisa ser refrescada. Essencialmente uma operao
de refrescamento (refresh) l os contedos de cada clula de bit em uma
linha da matriz de clulas de bit e, ento, escreve os mesmos valores de
volta nas clulas de bit, restaurando-os aos valores originais.
Desde que cada linha na DRAM seja refrescada com frequncia
suficiente para que nenhuma das cargas do capacitor caia baixo o
suficiente para que o hardware interprete mal os valores armazenando
em uma linha, a DRAM pode manter o seu contedo indefinidamente.
Uma das especificaes de uma DRAM o tempo de refrescamento
(refresh time), que a frequncia pela qual uma linha pode ficar sem ser
refrescada antes que esteja correndo o risco de perder o seu contedo.

Exemplo: Se uma DRAM tem 512 linhas e o seu refresh time de


10 ms, com que frequncia, em mdia, uma operao de refresh de linha
precisa ser feita?
Soluo: Dado que o refresh time de 10 ms, cada linha precisa
ser refrescada no mnimo a cada 10 ms. Uma vez que h 512 linhas,
temos que fazer 512 operaes de refrescamento de linha em um
perodo de 10 ms que resulta em um refresh de linha a cada 1,95 .
10-5 s. importante comentar que os projetistas devem definir como a
operao de refresh realizada, se uniformemente, por blocos ou outras
alternativas.
Exemplo retirado de Carter (2003).

EXERCCIO DE FIXAO

1. Explique latncia, taxa de transferncia e endereamento, para


sistemas de memria.
2. Explique as tcnicas de armazenamento big endian e little endian.

110 UNIDADE 03
Considerando que a memria de um computador uma matriz 3x3,
como seria a representao, nos dois sistemas, da palavra "MEMORIA"
sabendo que cada clula pode conter apenas um caractere?
3. O que e para que serve a distncia de Hamming? Qual a distncia
de Hamming de 10001001 e 10110001?
4. Por que as memrias so organizadas em nveis hierrquicos? Quais
as propriedades de cada nvel?
5. Em uma hierarquia de memria de dois nveis, se o nvel mais alto tem
tempo de acesso de 8 ns e o nvel mais baixo tem um tempo de acesso
de 60 ns, qual a taxa de acerto no nvel mais alto para obtermos um
tempo de acesso mdio de 10 ns?
6. Se um sistema de memria tem um tempo de acesso mdio de 12 ns,
o nvel mais alto tem taxa de acertos de 90 % e um tempo de acesso de
5 ns, qual o tempo de acesso do nvel mais baixo?
7. Mostre na forma de uma rvore as tecnologias de memria e comente
cada uma delas.
8. Explique a organizao dos chips de memria.
9. Quais as diferenas entre as clulas de bit de uma memria DRAM e
SRAM? H diferena de velocidade entre elas? Qual a mais rpida? Por
qu?
10. Para os seguintes casos, determine se SRAMs ou DRAMs seriam
os blocos de memria mais adequados para o sistema de memria e
explique o porqu. Assuma que existe apenas um nvel de memria.
a. um sistema de memria no qual o desempenho o dispositivo mais
importante;
b. um sistema de memria no qual o custo o fator mais importante;
c. um sistema no qual os dados sejam armazenados por longos perodos
sem qualquer atividade por parte de processador.
__________________________________________________________

MEMRIA CACHE

Introduo

Ao longo do tempo, os processadores tm sido sempre mais


rpidos que as memrias. fato que o tempo de operao das
memrias tem melhorado bastante, mas, como o mesmo ocorre com os
processadores, permanece o descompasso entre as velocidades desses
dois importantes componentes de um sistema computacional. Na medida

111
Sistemas de Memria
em que se torna tecnicamente possvel a colocao de mais e mais
circuitos dentro de um chip, os projetistas dos processadores vm usando
essas novas facilidades para implementar o processamento pipeline e
o processamento superescalar, tornando os processadores ainda mais
rpidos. J os projetistas das memrias tm usado as novas tecnologias
para aumentar a capacidade das memrias e no a sua velocidade
operacional, de maneira que o problema do desbalanceamento das
velocidades de operao entre esses dois dispositivos tem-se agravado
com o tempo. Na prtica, isso significa que um processador deve esperar
vrios ciclos de clock at que a memria atenda a uma requisio sua
para leitura ou escrita. Quanto mais lenta for a memria em relao
velocidade do processador, mais ciclos de espera sero necessrios
para ele compatibilizar a operao desses dois elementos de hardware.
Conforme mencionamos anteriormente, existem duas maneiras
de se lidar com essa questo. Na mais simples delas, as operaes
de leitura da memria devem ser iniciadas sempre que o processador
encontrar uma instruo de READ. Mesmo com a operao de leitura
iniciada, o processador deve continuar seu processamento, s parando
se uma instruo tentar usar a palavra requisitada da memria antes
de ela estar disponvel. Quanto mais lenta a memria, mais frequentes
se tornaro essas paradas e maior ser a penalidade quando elas
ocorrerem. Por exemplo, se o tempo de operao da memria for de 10
ciclos, muito provvel que uma das 10 instrues seguintes tentar
usar a palavra que estiver sendo lida.
A outra soluo fazer com que o compilador gere seu cdigo,
evitando que instrues usem os valores requisitados memria antes
que esses valores estejam disponveis, impedindo assim a parada do
processador. O problema dessa soluo que ela muito simples de
descrever, mas muito difcil de implementar. Muitas vezes, depois de uma
instruo de LOAD nada mais h a fazer, de maneira que o compilador
ser obrigado a inserir instrues NOP (no operation), instrues essas
que nada fazem, a no ser gastar o tempo do processador. Na verdade,
essa soluo substitui a parada por hardware, prevista na soluo anterior,
e institui a parada por software, mantendo inalterada a degradao da
performance do sistema como um todo.
Vale observar que a raiz do problema anteriormente citado
econmica, e no tecnolgica. Os engenheiros j sabem como
construir memrias que sejam to rpidas quanto os processadores.
Acontece que, para operar a essa velocidade, as memrias precisam

112 UNIDADE 03
estar implementadas dentro do chip do processador (a transferncia de
dados no barramento um dos principais ofensores da velocidade das
memrias). A colocao de uma memria muito grande dentro do chip do
processador vai aumentar o seu tamanho e, evidentemente, vai torn-
lo mais caro, mas, mesmo que o custo no venha a ser uma limitao,
existem restries fortes para o aumento indiscriminado do tamanho
do chip. Portanto, a escolha fica entre ter uma pequena quantidade de
memria rpida, dentro do chip, ou uma grande quantidade de memria
lenta, fora do chip. Na verdade, um bom projeto deveria buscar memrias
rpidas, de alta capacidade, a preos baixos.
A busca de tais caractersticas levou a tcnicas que combinam
memrias pequenas e rpidas com memrias grandes e lentas, na
tentativa de fazer com que o sistema opere com a velocidade da memria
mais rpida e com a capacidade da memria mais lenta, tudo isso a um
preo bastante acessvel. A memria pequena e rpida ficou conhecida
pelo nome de cache (da palavra francesa cacher, que significa esconder).
A ideia bsica que h por trs do conceito de memria cache
muito simples: as palavras de memria mais usadas pelo processador
devem permanecer armazenadas na cache. Quando o processador
precisar de uma palavra, ele primeiro busca essa palavra na cache.
Somente no caso de ela no estar armazenada na cache que a busca
se dar na memria principal. Se uma parte substancial dos acessos
for satisfeita pela cache, o tempo mdio de acesso ser muito pequeno,
prximo ao da cache.

Conceitos bsicos

Parte do problema de limitao de velocidade do processador


refere-se diferena de velocidade entre o ciclo de tempo da CPU e
o ciclo de tempo da memria principal, ou seja, a memria principal
transfere bits para a CPU em velocidades sempre inferiores s que a
CPU pode receber e processar os dados, o que acarreta, muitas vezes,
a necessidade de acrescentar-se um tempo de espera para a CPU (wait
state).
O problema de diferena de velocidade se torna difcil de solucionar
apenas com melhorias no desempenho das memrias principais,
devido a fatores de custo e tecnologia. Enquanto o desempenho dos
microprocessadores, por exemplo, vem dobrando a cada 18/24 meses, o
mesmo no acontece com a taxa de transferncia e o tempo de acesso

113
Sistemas de Memria
das memrias DRAM, que vm aumentando pouco de ano para ano.
Na busca de uma soluo para este problema, foi desenvolvida
uma tcnica que consiste da incluso de um dispositivo entre a CPU
e a memria principal, denominado de memria cache, cuja funo
acelerar a transferncia de informaes entre CPU e memria principal
e, com isso, aumentar o desempenho do sistema de computao.
A cache um nvel na hierarquia de memria entre a CPU e a
memria principal. construda com memria SRAM, que muito mais
rpida do que a DRAM, normalmente empregada na construo das
memrias principais. A cache fabricada com tecnologia semelhante
da CPU e, em consequncia, possui tempos de acesso compatveis,
resultando numa considervel reduo da espera da CPU para receber
dados e instrues. Como o custo da memria esttica muito alto, a
cache normalmente muito menor do que a memria principal.
Com a incluso da cache, pode-se enumerar, de modo simplista,
o funcionamento do sistema como segue:
- sempre que a CPU vai buscar uma nova informao (instrues
ou dados), ela acessa a memria cache;
- se a informao estiver na cache (cache hit), ela transferida em
alta velocidade (compatvel com a da CPU);
- se a informao no estiver na cache (cache miss), ento o
sistema est programado para transferir a informao desejada da
memria principal para a cache. S que esta informao no somente
da instruo ou dado desejado, mas dele e de um grupo subsequente,
na pressuposio de que as instrues/dados do grupo sero requeridas
pela CPU em seguida e, portanto, j estaro na cache quando necessrio.
A figura 2.1 ilustra a troca de informaes entre a CPU, cache e memria
principal.

Figura 2.1: Transferncia de dados CPU/Cache/MP.

114 UNIDADE 03
Para haver algum aumento no desempenho de um sistema de
computao com a incluso da memria cache, necessrio que haja
mais acertos (hits) do que faltas (miss). Isto , a memria cache somente
produtiva se a CPU puder encontrar uma quantidade aprecivel de
palavras na cache, suficientemente grande para sobrepujar as eventuais
perdas de tempo com as faltas, que redundam em transferncia de um
bloco de palavras da memria principal para a cache, alm da efetiva
transferncia da informao desejada.
A implementao de memrias foi referendada pela existncia
muito forte de localidades na execuo dos programas. Existem dois
tipos de localidades:
- Localidade temporal: as posies da memria, uma vez
acessadas, tendem a ser acessadas novamente num futuro prximo.
Normalmente ocorrem devido ao uso de laos de instrues, acessos a
pilhas de dados e variveis como ndices, contadores e acumuladores;
- Localidade espacial: se um programa acessa uma palavra de
memria, h uma boa probabilidade de que o programa acesse, num
futuro prximo, uma palavra subsequente ou um endereo adjacente
quela palavra que ele acabou de acessar. Em outras palavras, os
endereos em acessos futuros tendem a ser prximos de endereos de
acessos anteriores. Ocorre devido ao uso da organizao sequencial de
programas.
O tamanho da cache influencia diretamente no desempenho do
sistema, uma vez que para existir um aumento real de desempenho o
nmero de acertos deve superar e muito o nmero de faltas. Com uma
cache maior, h maior probabilidade de a informao desejada estar
contida nela, porm outros fatores tambm devem ser levados em conta,
como o tempo de acesso da memria principal, da memria cache e a
natureza dos programas em execuo (principio da localidade).
Um fator que influencia diretamente o desempenho da cache
a forma de mapeamento dos dados da memria principal nela. Como
o tamanho da cache bem menor que o da memria principal, apenas
uma parte dos dados da memria principal pode ser copiada na cache.
Existem basicamente trs formas de mapeamento:
- Mapeamento completamente associativo: a palavra pode ser
colocada em qualquer lugar da cache. Neste caso deve ser armazenado
na cache no somente o dado, mas tambm o endereo. Para descobrir
se a posio procurada est armazenada na cache, feita a comparao
simultnea de todos os endereos, caso seja localizado (cache hit), o

115
Sistemas de Memria
dado devolvido ao processador. Caso o endereo pesquisado no se
encontre na cache (cache miss), a memria principal acessada.
- Mapeamento direto: cada palavra deve ser armazenada em um
lugar especfico na cache, que depende do seu endereo na memria
principal. O endereo dividido em duas partes: tag e ndice. O ndice
usado como endereo na cache e indica a posio onde pode estar
armazenada a palavra. O tag usado para conferir se a palavra que
est na cache a que est sendo procurada, uma vez que endereos
diferentes, com o mesmo ndice, sero mapeados sempre para a mesma
posio da cache.
- Mapeamento set-associativo: um projeto intermedirio entre
os dois anteriores. Neste caso, existe um nmero fixo de posies onde
a palavra pode ser armazenada (pelo menos duas) que chamado um
conjunto. Como na cache com mapeamento direto, o conjunto definido
pela parte do endereo chamada ndice. Cada um dos tags do conjunto
comparado simultaneamente como tag do endereo. Se nenhum deles
coincidir, ocorre um cache miss.
Outro problema a ser considerado na implementao de uma
memria cache a poltica de substituio das palavras. Deve-se
responder a seguinte pergunta: Em que local da cache ser colocada
a nova linha? A poltica de substituio define qual linha ser tirada
da cache para dar lugar a uma nova. No caso do mapeamento direto,
cada palavra tem um lugar predefinido, ento no existe escolha. Para
o mapeamento completamente associativo, pode-se escolher qualquer
posio da cache e no set-associativo, qualquer posio dentro do
conjunto definido pelo ndice. As principais polticas de substituio so:
- Substituio aleatria: neste caso escolhida uma posio
qualquer da cache aleatoriamente para ser substituda. mais simples de
implementar mas no leva em conta o princpio da localidade temporal.
- FIFO (First-in First-out): remove a linha que est h mais tempo
na cache. Exige a implementao de uma fila em hardware.
- LRU (Least Recently Used): remove-se a linha que h mais tempo
no referenciada. Exige implementao de um contador para cada
linha. Quando um hit ocorre na linha, seu contador zerado enquanto
todos os demais so incrementados. Quando for necessrio substituir
uma linha, ser retirada aquela cujo contador tiver o valor mais alto.
Uma vez que todas as solicitaes feitas memria so
realizadas atravs da cache, caso a CPU fizer a escrita de uma posio
que estiver armazenada na cache, se esta alterao no for repassada

116 UNIDADE 03
para a memria principal, pode-se perder a atualizao quando a linha
da cache for substituda. Para evitar este problema, pode-se adotar duas
estratgias:
- Escrita em ambas (Write-Through): cada escrita na cache
imediatamente repetida na memria principal;
- Escrita no retorno (Write-Back): as escritas so feitas apenas
na cache, mas ela ser escrita na MP quando for substituda. Pode-se
escrev-la mesmo se no foi alterada ou somente se tiver sido modificada.
Com a poltica write-through, pode haver uma grande quantidade
de escritas desnecessrias na memria principal, com natural
reduo do desempenho do sistema. J a poltica write-back minimiza
esta desvantagem, porm a memria principal fica potencialmente
desatualizada para utilizao por outros dispositivos a ela ligados, como
mdulos de E/S, o que os obriga a acessar dados na cache.
Uma vez que tanto os dados como as instrues so mantidos
na memria principal, ambos tiram proveito da memria cache. Pode-
se adotar cache unificada ou separada para cada tipo de contedo. A
soluo que considera uma cache unificada (instrues e dados usando a
mesma cache) mais simples de projetar e estabelece automaticamente
um equilbrio entre as buscas de instrues e as buscas de dados. No
entanto, a tendncia atual para projetos que usem caches divididas,
uma cache para instrues e outra para dados. Esse projeto conhecido
como arquitetura de Harvard, uma aluso ao computador Mark III projetado
por Howard Aiken, que tinha memrias diferentes para instrues e para
dados. O uso cada vez mais difundido dos processadores pipeline o
principal responsvel por levar os projetistas na direo da arquitetura de
Harvard. A unidade de busca das instrues faz o acesso s instrues
ao mesmo tempo que a unidade de busca de operandos faz o acesso aos
dados necessrios execuo de outra instruo buscada anteriormente.
A adoo do modelo de duas caches permite acesso em paralelo a
instrues e a dados, enquanto o modelo da cache unificado no. Alm
disso, considerando-se que as instrues no so modificadas durante
a execuo de um programa, o contedo da memria de instrues no
precisa ser escrito de volta na memria principal. A figura 2.2 ilustra
a arquitetura de cache Harvard, onde caches so implementadas de
maneira separadas.

117
Sistemas de Memria
Figura 2.2: Arquitetura Harvard.
Figura adaptada de Carter, (2003).

Associatividade

A associatividade de uma cache determina quantas posies


dentro dela podem conter um dado endereo de memria. Caches com
alta associatividade permitem que cada endereo seja armazenado em
muitas posies na cache, o que reduz as faltas de cache causadas por
conflitos entre linhas que precisam ser armazenadas no mesmo conjunto
de posies. Caches com baixa associatividade restringem o nmero
de posies nas quais um endereo pode ser colocado, o que aumenta
o nmero de faltas, mas simplifica o hardware da cache, reduzindo a
quantidade de espao ocupado por ela e, frequentemente, reduzindo o
tempo de acesso.

Cache com mapeamento completamente associativo


As caches com mapeamento completamente associativo, ou
simplesmente caches associativas permitem que qualquer endereo
seja armazenado em qualquer linha da cache. Quando uma operao
de memria enviada cache, o endereo da solicitao precisa ser
comparado a cada entrada na matriz de etiquetas para determinar se os
dados referenciados pela operao esto contidos nela.

Cache com mapeamento direto


As caches com mapeamento direto so o extremo oposto das
associativas. Nela, cada endereo de memria s pode ser armazenado
em uma posio da cache. Este mtodo o mais simples, sendo cada

118 UNIDADE 03
bloco da memria principal mapeado em uma nica linha da cache. Para
que isso seja feito podemos pensar no seguinte mecanismo:
i = j mdulo m
onde, i o nmero da linha da cache; j o nmero do bloco da
memria principal; e m o nmero de linhas da cache. Assim, podemos
implementar esta forma de mapeamento de maneira muito fcil, usando
tambm o endereo da informao na memria principal.
Como ilustra a figura 2.3, quando uma operao de memria
enviada a uma cache mapeada diretamente, um subconjunto dos bits do
endereo utilizado para selecionar a linha da cache que pode conter o
endereo e outro subconjunto de bits utilizado para selecionar o byte
dentro de uma linha da cache para o qual o endereo aponta. Em geral,
os n bits menos significativos no endereo so utilizados para determinar
a posio do endereo dentro de sua linha de cache, onde n o log
na base 2 do nmero de bytes na linha. Os m bits mais significativos
seguintes, onde m o log2 do nmero de linhas na cache, so utilizados
para selecionar a linha na qual o endereo pode ser armazenado, como
mostra a figura 2.4.

Figura 2.3: Cache com mapeamento direto.


Figura adaptada de Carter, (2003).

119
Sistemas de Memria
c

Figura 2.4: Desmembramento do endereo.


Figura adaptada de Carter, (2003).

Exemplo: Em uma cache com mapeamento direto, com capacidade


de 16 Kbytes e comprimento de linha de 32 bytes, quantos bits so
utilizados para determinar, dentro de uma linha de cache, o byte ao qual
uma operao de memria faz referncia, e quantos bits so utilizados
para selecionar a linha que pode conter os dados dentro da cache?
Soluo: log 32 na base 2 = 5, de modo que so necessrios 5 bits
para determinar qual p byte, dentro de uma linha de cache, est sendo
referenciado. Com linhas de 32 bits, existem 512 linhas na cache de 16
Kbytes, de modo que so necessrios 9 bits para selecionar qual linha
pode conter o endereo (log de 512 na base 2 = 9).
Exemplo retirado de Carter (2003).

Caches mapeadas diretamente tm a vantagem de necessitar


de uma rea significativamente menor para serem implementadas
fisicamente no chip que as caches associativas, porque requerem
apenas um operador para determinar se houve um acerto. Se o endereo
do item solicitado for igual ao endereo associado quela posio de
memria, a cache hit est caracterizado. Caso contrrio, como nesta
organizao o item no pode estar em nenhuma outra posio, a cache
miss caracterizado. Alm disso, caches mapeadas diretamente tm
tempos de acesso menores porque exigem uma s comparao a ser
examinada para determinar se houve um acerto, enquanto que as caches
associativas precisam examinar cada uma das comparaes e escolher
a palavra de dados adequada para enviar ao processador.
No entanto, caches mapeadas diretamente tendem a ter taxas
de acerto menores do que as associativas, devido aos conflitos entre

120 UNIDADE 03
linhas que so mapeadas na mesma rea da cache. Cada endereo s
pode ser colocado em um local, o que determinado pelos m bits de
endereo, como ilustrado na figura 2.4. Se dois endereos tm o mesmo
valor naquele bit, eles sero mapeados sobre a mesma linha da cache
e no podero residir ao mesmo tempo. Um programa que alterasse
referncias a estes dois endereos nunca geraria um acerto, uma vez que
a linha contendo o endereo estaria sempre sendo descartada antes da
prxima referncia ao endereo. Assim, a cache poderia ter uma taxa de
acerto igual a 0%, ainda que o programa fizesse referncia a apenas dois
endereos. Na prtica, caches mapeadas diretamente, em especial de
grande capacidade, podem obter boas taxas de acerto, embora tendam
a ser menores que aquelas que fornecem vrias posies possveis para
cada linha de dados.
Em resumo, as vantagens deste tipo de organizao incluem:
- simplicidade de hardware e, consequentemente, custo mais
baixo;
- no h necessidade de escolher uma linha para ser retirada da
cache, uma vez que h uma nica opo; e
- operao rpida.
Apesar de simples, esta estratgia pouco utilizada devido sua
baixa flexibilidade. Como h apenas uma posio na cache onde o item
solicitado pode estar localizado, a probabilidade de presena na cache
pode ser baixa. Assim, pode haver queda sensvel no desempenho em
situaes onde o processador faz referncias envolvendo itens que so
mapeados para uma mesma posio da cache.

Cache com mapeamento set-associativo


As caches com mapeamento set-associativo, ou grupo associativo,
so uma combinao de caches associativas e mapeadas diretamente.
Nela, existe um nmero fixo de posies (chamadas de conjuntos ou
grupos), nas quais um dado endereo pode ser armazenado. O nmero
de posies em cada conjunto a associatividade da cache.
Este tipo de organizao oferece um compromisso entre o
desempenho da organizao por mapeamento direto e a flexibilidade da
organizao completamente associativa. A cache particionada em N
conjuntos, onde cada conjunto pode conter at K linhas distintas, onde
K a associatividade da cache; na prtica, 1 < K <= 16.
Uma dada linha s pode estar contida em um nico conjunto, em
uma de suas K linhas. O conjunto selecionado determinado a partir

121
Sistemas de Memria
do endereo do item sendo referenciado. O endereo de um item
particionado em trs segmentos:
- Offset: se uma linha com L bytes contm W palavras, ento os
log2W bits menos significativos identificam qual dos itens em uma linha
est sendo buscado. Se o menor item enderevel for um byte, ento
L = W.
- Lookup: os log2N bits seguintes identificam em qual dos N
conjuntos, de 0 a N-1, a linha deve ser buscada.
- Tag: os bits mais significativos que restam do endereo servem
como identificao da linha, que armazenada no diretrio da cache.
Por exemplo, considere uma cache de 4 Kbytes com linhas de
32 bytes, onde o menor item enderevel fosse um byte e os endereos
gerados pelo processador sejam de 24 bits. Se a associatividade
da cache K = 4, ento esta cache tem espao para 512 conjuntos.
Portanto, o tamanho do tag dever ser 10 bits. O controlador da cache
deve ser capaz de fazer a busca de uma linha em um tempo prximo
a um tempo de ciclo dos dispositivos de memria rpida utilizados no
mdulo cache. A estratgia para tanto comparar o valor de lookup
simultaneamente com os K possveis candidatos do conjunto selecionado
(usando K comparadores). Ao mesmo tempo, K linhas so acessadas
dos dispositivos de memria e trazidas para K registros rpidos caso a
linha buscada esteja presente na cache, ela simplesmente selecionada
de um destes registros. Caso contrrio, um sinal de cache miss ativado.
Para facilitar o entendimento, a figura 2.5 mostra uma cache set-
associativo de dois caminhos, na qual existem duas posies para cada
endereo. De modo semelhante a uma cache mapeada diretamente, um
subconjunto dos bits de endereo utilizado para selecionar o conjunto
que pode conter o endereo. A cache set-associativo de dois caminhos
implica no fato de existirem duas etiquetas que podem ser comparadas
com o endereo de referncia de memria para determinar se houve ou
no um acerto. Se qualquer uma das etiquetas for igual ao endereo,
houve um acerto e a matriz de dados selecionada. Caches com maior
associatividade tm estruturas semelhantes, possuindo apenas mais
comparadores para determinar se houve ou no um acerto.

122 UNIDADE 03
Figura 2.5: Cache com mapeamento set-associatvo de dois caminhos.
Figura adaptada de Carter, (2003).

Uma cache set-associativo, por agrupar linhas em conjuntos,


necessita menos bits para identificar conjuntos do que seria necessrio
para identificar individualmente as linhas onde o endereo pode ser
armazenado. O nmero de conjuntos de uma cache pode ser obtido
calculando-se o nmero de linhas e dividindo-o pela associatividade.

Exemplo: Quantos conjuntos existem em uma cache set-


associativa de dois caminhos, com capacidade de 32 Kbytes e linhas de
64 bytes, e quantos bits de endereo so utilizados para selecionar um
conjunto nesta cache? E em uma cache set-associativa de oito caminhos,
com a mesma capacidade e comprimento de linha?
Soluo: Uma cache de 32 Kbytes, com linhas de 64 bytes, contm
512 linhas de dados. Em uma cache set-associativa de dois caminhos,
cada conjunto contm duas linhas, de modo que existem 256 conjuntos.
Log na base 2 de 256 igual a oito, de modo que so utilizados 8 bits de
um endereo para selecionar um conjunto mapeado por um endereo. A
cache set-associativa de oito caminhos tem 64 linhas e utiliza seis bits do
endereo para selecionar o conjunto.
Exemplo retirado de Carter (2003).

Em geral, caches set-associativas tm taxas de acerto melhores


que as mapeadas diretamente, mas taxas de acerto piores que caches
associativas do mesmo tamanho. As caches set-associativas, por

123
Sistemas de Memria
permitir que cada endereo seja armazenado em vrios locais, eliminam
alguns dos conflitos que ocorrem com caches com mapeamento direto.
A diferena nas taxas de acertos uma funo da capacidade da cache,
do grau de associatividade e dos dados referenciados por um programa.
Alguns programas fazem referncia a grandes blocos de dados contguos,
conduzindo a poucos conflitos, enquanto outros fazem referncia a dados
dispersos, o que pode conduzir a conflitos, se os endereos de dados
mapearem o mesmo conjunto na cache.
Quanto maior uma cache, menos o benefcio que ela tende
a ter da associatividade, uma vez que existe uma probabilidade menor
que dois endereos sejam mapeados para a mesma rea. Ir de uma
cache diretamente mapeada para uma set-associativa de dois caminhos
normalmente causa redues significativas na taxa de faltas. Aumentar
para quatro caminhos tem um efeito menos significativo, e crescer
alm disso tende a ter pouco efeito, exceto para caches extremamente
pequenas. Por esse motivo, caches set-associativas de dois caminhos
so mais comuns nos microprocessadores atuais.

Polticas de substituio

Quando uma linha precisa ser descartada de uma cache para


abrir espao para os dados que esto entrando, ou porque a cache est
cheia, ou ainda por causa de conflitos relacionado a um conjunto, a
poltica de substituio determina qual linha ser descartada. Em caches
mapeadas diretamente, no existe escolha, uma vez que a linha que
est entrando s pode ser colocada em uma nica posio, mas caches
set-associativas e associativas contm vrias linhas que poderiam ser
descartadas para abrir espao para as linhas que esto entrando. Nessas
caches, o objetivo geral da poltica de substituio minimizar as faltas
futuras da cache, ao descartar uma linha que no ser referenciada no
futuro.

Vrios algoritmos so implementados como polticas de
substituio de pginas. Por exemplo, temos:
- Algoritmo timo: proposto por Belady em 1966, o que apresenta
o melhor desempenho computacional e o que minimiza o nmero de faltas
de pginas. No entanto, sua implementao praticamente impossvel.
A ideia do algoritmo retirar da memria a pgina que vai demorar mais
tempo para ser referenciada novamente. Para isso, o algoritmo precisaria
saber, antecipadamente, todos os acessos memria realizados pela

124 UNIDADE 03
aplicao, o que impossvel em um caso real. Por estes motivos, o
algoritmo timo s utilizado em simulaes para se estabelecer o valor
timo e analisar a eficincia de outras propostas elaboradas.
- FIFO (First-in, First-out): um algoritmo de substituio
de pginas de baixo custo e de fcil implementao que consiste em
substituir a pgina que foi carregada h mais tempo na memria (a
primeira pgina a entrar a primeira a sair). Esta escolha no leva em
considerao se a pgina est sendo muito utilizada ou no, o que no
muito adequado, pois pode prejudicar o desempenho do sistema. Por
este motivo, o FIFO apresenta uma deficincia denominada anomalia
de Belady: a quantidade de falta de pginas pode aumentar quando o
tamanho da memria tambm aumenta. Por estas razes, o algoritmo
FIFO puro muito pouco utilizado. Contudo, sua principal vantagem a
facilidade de implementao: uma lista de pginas ordenada pela idade.
Dessa forma, na ocorrncia de uma falta de pgina, a primeira pgina da
lista ser substituda e a nova ser acrescentada ao final da lista.
- LRU (Least Recently Used): um algoritmo de substituio de
pgina que apresenta um bom desempenho substituindo a pgina menos
recentemente usada. Esta poltica foi definida baseada na seguinte
observao: se a pgina est sendo intensamente referenciada pelas
instrues muito provvel que ela seja novamente referenciada pelas
instrues seguintes e, de modo oposto, aquelas que no foram acessadas
nas ltimas instrues tambm provvel que no sejam acessadas nas
prximas. Apesar de o LRU apresentar um bom desempenho, ele tambm
possui algumas deficincias quando o padro de acesso sequencial
(em estruturas de dados do tipo vetor, lista, rvore), dentro de loops, etc.
Diante dessas deficincias, foram propostas algumas variaes do LRU,
dentre elas destacamos o LRU-K. Este algoritmo no substitui aquela
que foi referenciada h mais tempo e sim quando ocorreu seu k-ltimo
acesso. Por exemplo, LRU-2 substituir a pgina que teve seu penltimo
acesso feito h mais tempo e LRU-3 observar o antepenltimo e assim
por diante. A implementao do LRU tambm pode ser feita atravs de
uma lista, mantendo as pginas mais referenciadas no incio (cabea) e
a menos referenciadas no final da lista. Portanto, ao substituir, retira-se a
pgina que est no final da lista. O maior problema com esta organizao
que a lista deve ser atualizada a cada nova referncia efetuada sobre
as pginas, o que torna alto o custo dessa manuteno.
- MRU (Most Recently Used): faz a substituio da ltima
pgina acessada. Este algoritmo tambm apresenta algumas variaes,

125
Sistemas de Memria
semelhante ao LRU. Por exemplo, o MRU-n escolhe a n-ltima pgina
acessada para ser substituda. Dessa forma, possvel explorar com
mais eficincia o princpio de localidade temporal apresentada pelos
acessos.
- NRU (Not Recently Used): procura por pginas que no
foram referenciadas nos ltimos acessos para serem substitudas. Tal
informao mantida atravs de um bit. Este algoritmo tambm verifica,
atravs de um bit de modificao, se a pgina teve seu contedo
alterado durante sua permanncia em memria. Esta informao
tambm vai ajudar a direcionar a escolha da pgina. As substituies
das pginas seguem a seguinte prioridade: pginas no referenciadas e
no modificadas, pginas no referenciadas, pginas no modificadas e
pginas referenciadas e modificadas.
- LFU (Least Frequently Used): escolhe a pgina que foi menos
acessada dentre todas as que esto carregadas em memria. Para
isso, mantido um contador de acessos associado a cada pgina (hit)
para que se possa realizar esta verificao. Esta informao zerada
cada vez que a pgina deixa a memria. Portanto, o problema desse
algoritmo que ele prejudica as pginas recm-carregadas, uma vez
que, por estarem com o contador de acessos zerado, a probabilidade de
serem substitudas maior. Qual seria uma possvel soluo para este
problema? Estabelecer um tempo de carncia. Somente pginas fora
desse tempo que podem ser substitudas. Tal estratgia deu origem ao
algoritmo FBR (Frequency-Based Replacement).
- MFU (Most Frequently Used): substitui a pgina que tem sido
mais referenciada, portanto, o oposto do LFU. O controle tambm feito
atravs de contadores de acesso. O maior problema deste algoritmo
que ele ignora o princpio de localidade temporal.
- WS (Working Set): possui a mesma poltica do LRU. No entanto,
este algoritmo no realiza apenas a substituio de pginas, ele tambm
estabelece um tempo mximo que cada pgina pode permanecer ativa
na memria. Assim, toda pgina que tem seu tempo de permanncia
esgotado retirada da memria. Portanto, o nmero de pginas ativas
varivel. O WS assegura que as pginas pertencentes ao working set
processo permanecero ativas em memria.
Os algoritmos apresentados so alguns dos disponveis na
literatura. Outras implementaes ou variaes dos destacados tambm
podem ser encontradas. Deixamos essa tarefa a cargo do leitor.

126 UNIDADE 03
Polticas de atualizao

Como j discutido, nveis em hierarquia de memria podem usar


uma poltica write-back ou de write-through para tratar o armazenamento.
Se um nvel de hierarquia write-through, quando a operao de escrita
executada, os valores armazenados so escritos no nvel e enviados
para o nvel seguinte mais abaixo. Isso assegura que os contedos do
nvel e do prximo nvel sero sempre os mesmos.
As caches podem ser implementadas tanto como sistemas write-
back quanto write-through e ambas as abordagens tm suas vantagens.
As caches write-through tm a vantagem de que no necessrio
registrar quais linhas foram escritas. Como os dados em uma cache
write-through so sempre consistentes com o contedo do prximo nvel,
descartar uma linha pode ser feito escrevendo-se a nova linha sobre a
velha, reduzindo o tempo para trazer uma linha para dentro da cache.
Em contraste, caches write-back escrevem seu contedo apenas quando
uma linha descartada.
Se uma dada linha recebe vrias solicitaes de armazenamento
enquanto ela est na cache, esperar at que a linha seja descartada pode
reduzir significativamente o nmero de escritas enviadas para o prximo
nvel da hierarquia da cache. Este efeito pode ainda ser mais importante,
se o prximo nvel da hierarquia for implementado com DRAM em modo
de pgina, uma vez que a cache write-back pode usar o modo de pgina
para reduzir o tempo de escrita uma linha no nvel seguinte. No entanto,
caches write-back exigem um hardware para manter controle sobre se
cada linha foi escrita ou no desde que foi copiada.

Write-Through
Na estratgia write-through, quando um ciclo de escrita ocorre
para uma palavra, ela escrita na cache e na memria principal
simultaneamente. A principal desvantagem desta estratgia que o ciclo
de escrita passa a ser mais lento que o ciclo de leitura. No entanto, em
programas tpicos, a proporo de operaes de escrita memria
pequena, de 5 a 34% do nmero total de referncias memria.
Para analisar como fica o tempo efetivo de acesso para uma
cache com a estratgia write-through com alocao em escrita, considere
o seguinte modelo. Seja tc o tempo de acesso a cache, tl o tempo de
transferncia para uma linha da memria principal para a cache e tm o
tempo de acesso a uma palavra da memria principal. Seja ainda h a

127
Sistemas de Memria
probabilidade do item referenciado estar na memria e w a frao das
referncias memria que correspondem a operaes de escrita. As
quatro situaes que podem ocorrer so:
- leitura de item presente na cache: em tempo tc com probabilidade
h x (1-w);
- leitura de item ausente da cache: em tempo tc + tl com probabilidade
(1-h) x (1-w);
- atualizao de item presente na cache: em tempo tm: uma vez
que a atualizao na cache ocorre concorrentemente com a atualizao
em memria, o tempo tc est escondido no tempo maior, tm. Esta situao
ocorre com probabilidade h x w;
- atualizao item ausente da cache: em tempo tm + tl com
probabilidade (1-h) x w.

A partir destas possibilidades, o tempo efetivo de acesso cache


:
tef = (1-w) tc + (1-h) tl + w tm

Write-Back
Na estratgia write-back, quando um ciclo de escrita ocorre para
uma palavra, ela atualizada apenas na cache. A linha onde a palavra
ocorre marcada como alterada. Quando a linha for removida da cache,
a linha toda atualizada na memria principal. A desvantagem desta
estratgia est no maior trfego entre memria principal e cache, pois
mesmo itens no modificados so transferidos da cache para a memria.
Seja wb a probabilidade de uma linha da cache ter sido atualizada.
Em geral, wb < w uma vez que uma linha pode conter mais de uma
palavra atualizada. Ento, a partir de uma anlise similar realizada
acima, obtm-se o tempo efetivo de acesso a cache:
te_ = tc + (1-h)(1-wb) tl
Em geral, caches write-back tm um desempenho melhor que as
write-through. Isso ocorre porque, geralmente, uma linha que escrita uma
vez tem uma probabilidade grande de ser escrita inmeras vezes, dessa
forma o custo (em tempo) de escrever uma linha inteira no nvel seguinte
na hierarquia de memria menor do que escrever as modificaes
medida que elas ocorrem. Sistemas mais antigos frequentemente utilizam
caches write-through por causa da sua complexidade mais baixa de
controle, mas as write-back tornaram-se dominantes nos computadores
modernos. A figura 2.6 ilustra a diferena entre as duas polticas de

128 UNIDADE 03
atualizao de memria apresentadas.

Figura 2.6: Write-Through e Write-Back.

Caches em vrios nveis

Em muitos sistemas, mais de um nvel de hierarquia


implementado como uma cache, como mostra a figura 2.7. Quando isto
feito, o mais comum que o primeiro nvel de cache (mais prximo
ao processador) seja implementado como caches distintas para dados
e para instrues, enquanto que os outros nveis sejam implementados
como caches unificadas. Isso d ao processador largura de banda
adicional proporcionada por uma arquitetura Harvard no nvel superior
do sistema de memria, ao mesmo tempo em que simplifica o projeto dos
nveis mais baixos.

Figura 2.7: Hierarquia de caches em vrios nveis.


Figura adaptada de Carter (2003).
129
Sistemas de Memria
Para que uma cache de vrios nveis melhore significativamente,
o tempo mdio de acesso memria de um sistema, cada nvel precisa
ter uma capacidade maior do que o nvel acima dele na hierarquia,
porque a localidade de referncia vista em cada nvel decresce medida
que se vai a nveis mais profundos na hierarquia. (Solicitaes a dados
referenciados recentemente so tratados pelos nveis superiores do
sistema de memria, de modo que a solicitao feita aos nveis mais
baixos tende a ser mais distribudos pelo espao de endereamento.)
Caches com capacidades maiores tendem a ser mais lentas, de modo
que o benefcio de velocidade de caches distintas para dados e instrues
no to significativo nos nveis mais baixos da hierarquia de memria,
o que representa um outro argumento a favor de caches unificadas para
estes nveis.
No incio da dcada de 90, a hierarquia mais comum para
computadores pessoais e para estaes de trabalho era a cache de
primeiro nvel (L1) ser relativamente pequena e localizada no mesmo chip
que o processador. Caches de nvel mais baixo eram implementadas fora
do chip, com o uso de SRAMs. Capacidades de 4 a 16 Kbytes no eram
incomuns em caches L1, com caches L2 atingindo 64 a 256 Kbytes.
medida que o nmero de transistores que podia ser integrado em um chip
de memria aumentou, nveis adicionais de cache foram movidos para
dentro do chip do processador. Muitos sistemas atuais tm tanto caches
de primeiro quanto de segundo nvel no mesmo chip que o processador,
ou ao menos no mesmo encapsulamento. Caches de terceiro nvel so
frequentemente implementadas externamente e podem ter vrios megas
de tamanho. Espera-se que nos prximos poucos anos este nvel tambm
seja integrado no encapsulamento do processador.

EXERCCIO DE FIXAO

1. O que motivou a criao da memria cache?


2. Diferencie localidade temporal de localidade espacial.
3. As caches podem ser unificadas ou separadas. Explique as vantagens
de cada uma delas e mostre a arquitetura Harvard.
4. Discorra sobre cache com mapeamento associativo, com mapeamento
direto e com mapeamento set-associativo. Explique o processo de

130 UNIDADE 03
traduo de endereos e comente sobre as vantagens e desvatagens de
cada uma delas.
5. Explique as polticas de substituio de pginas: FIFO, LRU, MRU,
NRU, LFU, MFU e WS. Considere a seguinte string de referncia de
pgina: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6. Simule a funcionalidade
dos algoritmos listados e diga quantas faltas de pgina ocorrem em cada
um, considerando uma memria com trs pginas.
6. possvel afirmar que para um conjunto de aplicaes X o algoritmo
de substituio de pginas A seja mais adequado, e para um conjunto de
aplicaes Y o algoritmo de substituio de pginas B seja mais eficiente?
Isso verdade? Sim ou no? Justifique.
7. Diferencie as polticas de atualizao write-back e write-through,
comentando as vantangens e desvantagens de cada uma.
8. Explique as vantagens de utilizar caches em vrios nveis e mostre
uma representao grfica desta hierarquia.
__________________________________________________________

Memria Virtual

Introduo

O custo da memria foi uma limitao significativa nos primeiros


sistemas de computador. Antes do desenvolvimento de DRAMs baseadas
em semicondutores, a tecnologia de memria predominante era a
memria de ncleo, nas quais anis toroidais de material magntico
eram utilizados para armazenar cada bit de dados. O custo para produzir
e montar esses anis toroidais, como dispositivos de memria, conduziu
a capacidade de memria limitada em muitas mquinas.
Para resolver este problema, foi desenvolvida a memria virtual.
Em um sistema de memria virtual, discos rgidos, e outros meios
magnticos, formam a camada inferior da hierarquia de memria, com as
DRAMs formando o nvel principal da hierarquia. Como programas no
podem acessar diretamente dados armazenados em meios magnticos,
a rea de endereo de um programa dividida em pginas, blocos
contguos de dados que so armazenados em mdia magntica. Quando
feita referncia a uma pgina de dados, o sistema a copia para a
memria principal, permitindo que ela seja acessada.
A figura 3.1 ilustra muitos dos conceitos-chave de memria virtual.
Cada programa tem seu prprio espao de endereos virtuais, que

131
Sistemas de Memria
um conjunto de endereos que os programas utilizam para carregar e
armazenar operaes. O espao de endereo fsico o conjunto de
endereos que foi utilizado para fazer referncia a posies na memria
principal, e os termos endereo virtual e endereo fsico so utilizados
para descrever endereos que esto nos espaos de endereo virtual e
fsico. O espao de endereos virtuais dividido em pginas, algumas
das quais so copiadas para quadros (janelas na memria principal onde
uma pgina de dados pode ser armazenada) porque recentemente foram
feitas referncias a elas e algumas das quais esto residentes apenas
no disco. As pginas so sempre alinhadas com relao a um mltiplo do
tamanho da pgina, de modo que elas nunca se sobrepem. Os termos
pgina virtual e pgina fsica so utilizados para descrever uma pgina
de dados nos espaos de endereos virtual e fsico. Pginas que foram
carregadas da memria a partir do disco so ditas terem sido mapeadas
para dentro da memria principal.

Figura 3.1: Memria virtual.


Figura adaptada de Carter, (2003).

132 UNIDADE 03
A memria virtual permite que um computador aja como se a
memria principal fosse muito maior do que ela realmente. Quando
um programa faz referncia a um endereo virtual, ele no pode dizer, a
no ser medindo a latncia da operao, se um endereo virtual estava
residente na memria principal, ou se ele teve que ser buscado no meio
magntico. Assim, o computador pode mover pginas de/para a memria
principal, quando necessrio, de modo semelhante como as linhas de
cache so trazidas para dentro e para fora da cache, de acordo com a
necessidade, permitindo que programas faam referncias a mais dados
do que podem ser armazenados em um nico momento na memria
principal.

Traduo de endereos

Programas que so executados em um sistema de memria virtual


utilizam endereos virtuais como argumentos para as instrues de carga
e armazenamento, mas a memria principal utiliza endereos fsicos para
registrar as posies onde os dados esto efetivamente armazenados.
Quando um programa executa uma referncia memria, o endereo
virtual utilizado precisa ser convertido para o endereo fsico equivalente,
um processo conhecido como traduo de endereos. A figura 3.2 mostra
um fluxograma de traduo de endereos.

Figura 3.2: Traduo de endereos.


Figura adaptada de Carter, (2003).

133
Sistemas de Memria
Quando um programa de usurio executa uma instruo que
faz referncia memria, o sistema operacional faz acesso tabela de
pginas, uma estrutura de dados na memria que mantm o mapeamento
dos endereos virtuais para os fsicos, de modo a determinar se uma
pgina virtual contm o endereo referenciado pela operao ou se est
ou no atualmente mapeada sobre uma pgina fsica. Se isto for verdade,
o sistema operacional determina o endereo fsico que corresponde ao
endereo virtual, a partir da tabela de pginas, e a operao continua,
utilizando o endereo fsico para fazer acesso memria principal. Se a
pgina virtual que contm o endereo referenciado no est atualmente
mapeada sobre uma pgina fsica, ocorre uma falta de pgina e o
sistema operacional busca a pgina que contm os dados necessrios
na memria, carregando-a para uma pgina fsica e atualizando a tabela
de pginas com a nova traduo. Uma vez que a pgina tenha sido
lida para a memria principal a partir do disco e a tabela de pginas
tenha sido atualizada, o endereo fsico da pgina pode ser determinado
e a referncia memria pode ser completada. Se todas as pginas
fsicas no sistema j contm dados, o contedo de uma delas deve ser
transferido para meio magntico a fim abrir espao para a pgina que
ser carregada. As polticas de substituio utilizadas para escolher a
pgina fsica que ser transferida so semelhantes quelas discutidas
no captulo anterior.
Como tanto, pginas virtuais quanto fsicas so sempre alinhadas
sobre um mltiplo do seu tamanho, a tabela de pginas no precisa
armazenar completamente o endereo virtual, nem o endereo fsico. Ao
invs disso, os endereos virtuais so divididos em um identificador de
pgina virtual, chamado nmero de pgina virtual, ou NPV, e o conjunto
de bits que descreve o deslocamento, a partir do incio da pgina virtual
at o endereo virtual. Pginas fsicas so divididas de modo semelhante
em nmero de pginas fsicas (NPF) e um deslocamento a partir do incio
da pgina fsica at o endereo fsico, como mostra a figura 3.3.

134 UNIDADE 03
r

Figura 3.3: Endereos fsicos e virtuais.


Figura adaptada de Carter, (2003).

As pginas virtual e fsica de um dado sistema so geralmente


do mesmo tamanho, de modo que o nmero de bits (log2 do tamanho da
pgina) necessrios para manter o campo de deslocamento dos endereos
fsicos e virtuais o mesmo, embora o nmero de bits empregados para
identificar o NPV e o NPF possa ter comprimentos diferentes. Muitos
sistemas, em especial sistemas de 64 bits, tm endereos virtuais mais
longos que os endereos fsicos, dada a impraticabilidade atual de se
construir um sistema com 264 bytes de memria DRAM.
Quando um endereo virtual traduzido, o sistema operacional
procura pela entrada correspondente ao NPV na tabela de pginas e
retorna o NPF correspondente. Os bits de deslocamento do endereo
virtual so, ento, concatenados ao NPF para gerar o endereo fsico,
como mostra a figura 3.4.

Figura 3.4: Convertendo endereos virtuais em fsicos.


Figura adaptada de Carter, (2003).

135
Sistemas de Memria
Swapping

O sistema de memria virtual recm-descrito um exemplo de


paginao por demanda, atualmente o tipo de memria virtual mais
comumente utilizado. Na paginao por demanda, as pginas de
dados s so trazidas para a memria principal quando acessadas por
um programa. Quando uma mudana de contexto ocorre, o sistema
operacional no copia qualquer pgina do programa antigo para o disco
ou do novo programa para a memria principal. Em vez disso, ele apenas
comea a executar o novo programa, buscando as pginas medida que
so referenciadas.
Swapping uma tcnica relacionada que utiliza meio magntico
para armazenar programas que no esto sendo atualmente executados
no processador. Em um sistema que utiliza swapping, o sistema
operacional trata todos os dados de um programa como uma unidade
atmica e move todos os dados para dentro e para fora da memria
principal em uma operao.
Quando um sistema operacional em um computador que utiliza
swapping escolhe um programa para ser executado no processador,
ele carrega todos os dados do programa na memria principal. Caso
o espao no disponvel em memria no seja suficiente, o sistema
operacional transfere outros programas para o disco, liberando assim
espao de memria.
Se todos os programas que esto sendo executados em um
computador cabem na memria principal (contando tanto as suas
instrues como os dados), tanto a paginao por demanda quanto o
swapping permitem que o computador opere em modo multiprogramado
sem ter que buscar dados no disco.
Sistemas de swapping tm a vantagem de que, uma vez que o
programa tenha sido buscado no disco, todos os dados do programa
estaro mapeados na memria principal. Isto faz com que o tempo de
execuo de um programa seja mais previsvel, uma vez que faltas de
pgina nunca ocorrero durante a execuo.
Sistemas de paginao por demanda tm a vantagem de que
eles buscam no disco apenas as pginas que um programa efetivamente
utiliza. Se um programa precisa fazer referncia a apenas uma parte dos
seus dados durante cada fatia do seu tempo de execuo, isso pode
reduzir significativamente a quantidade de tempo utilizada para copiar
dados de/para o disco. Alm disso, sistemas que utilizam swapping no

136 UNIDADE 03
podem, geralmente, utilizar sua capacidade de armazenamento em meio
magntico para permitir que um nico programa faa referncia a mais
dados que cabem na memria principal, porque todos os dados de um
programa tm que ser transferidos para dentro ou para fora da memria
principal, como uma unidade.
Em um sistema de paginao por demanda, as pginas individuais
dos dados de um programa podem ser trazidas para dentro da memria,
quando necessrio, fazendo com que o espao disponvel no disco seja
o limite da quantidade mxima de dados a que o programa pode fazer
referncia. Para a maioria das aplicaes, as vantagens da paginao
por demanda so maiores que as desvantagens, tornando a paginao
por demanda a opo para a maioria dos sistemas operacionais atuais.

Tabela de pginas

Como j discutido anteriormente, o sistema operacional utiliza


uma estrutura de dados conhecida como tabela de pginas para
identificar como os endereos virtuais so mapeados endereos fsicos.
Cada programa tem seu prprio mapeamento virtual-fsico, tabelas de
pginas diferentes so necessrias para cada programa no sistema. A
implementao mais simples de tabelas de pginas apenas uma matriz
de entrada de tabelas, uma entrada por pgina virtual, e conhecida
como tabela de pginas de nvel nico, para diferenci-las das tabelas de
pginas multinvel, que descreveremos adiante.
Para executar uma traduo de endereo, o sistema operacional
utiliza o nmero de pgina virtual do endereo como um ndice para
acessar a matriz de entradas da tabela de pginas, de modo a localizar o
nmero da pgina fsica correspondente pgina virtual. Isto mostrado
na figura 3.5, que apresenta um sistema cujo espao de endereos
virtuais tem um tamanho de apenas oito pginas.

137
Sistemas de Memria
Figura 3.5: Tabela de pginas de nvel nico.
Figura adaptada de Carter, (2003).

Como ilustrado na figura 3.5, as entradas na tabela de pginas


geralmente contm um nmero de pgina fsica, um bit de vlido e um bit
de sujo. O bit de vlido indica se a pgina virtual corresponde entrada
est atualmente mapeada na memria fsica. Se o bit de vlido est ativo,
o campo do nmero da pgina fsica contm o nmero da pgina fsica
que contm os dados da pgina virtual. O bit de sujo registra se a pgina
foi ou no modificada desde que ela foi trazida para a memria principal.
Isto utilizado para determinar se o contedo da pgina deve ser escrito
de volta no disco quando a pgina for retirada da memria principal.
A figura 3.6 traz um diagrama de uso de uma tabela de pginas
para traduzir um endereo virtual. Sistemas com tabelas de pgina de
nvel nico geralmente exigem que toda a tabela de pginas seja mantida,
o tempo todo, na memria fsica, de modo que o sistema operacional
possa acessar a tabela para traduzir endereos.

138 UNIDADE 03
Figura 3.6: Traduo de endereos utilizando tabela de pginas.
Figura adaptada de Carter, (2003).

Tabelas de pginas multinveis


Tabelas de pginas podem exigir um grande espao de
endereamento. Para resolver este problema, os projetistas utilizam
tabelas de pginas com vrios nveis, as quais permitem que muito da
tabela de pginas seja armazenada na memria virtual e mantida em
disco quando no estiver em uso. Em uma tabela de pginas multinvel,
a prpria tabela de pginas dividida em pginas e distribuda em uma
hierarquia. As entradas no nvel mais baixo da hierarquia so semelhantes
s entradas de uma tabela de pginas de nvel nico, contendo o NPF
da pgina, junto com os bits de vlido e de sujo. As entradas nos nveis
da tabela de pginas identificam a pgina na memria que contm o
prximo nvel da hierarquia para o endereo que est sendo traduzido.
Quando se utiliza este sistema, apenas a pgina que contm o nvel
mais alto da tabela de pginas precisa ser mantida na memria o tempo
todo. Outras pginas da tabela de pginas podem ser copiadas de/para
o disco, quando necessrio.

139
Sistemas de Memria
Para executar uma traduo de endereo, o NPV de um endereo
dividido em grupos de bits, onde cada grupo contm o nmero de bits
igual ao log2 do nmero de entradas na tabela de pginas em uma pgina
de dados, como mostrado na figura 3.7. Se o nmero de bits no NPV no
divisvel pelo log2 do nmero de entrada na tabela de pginas de uma
pgina de dados, necessrio arredondar o nmero de grupos, para
cima, para o prximo nmero inteiro.

Figura 3.7: Diviso de endereos para tabela de pginas multinvel.


Figura adaptada de Carter, (2003)

O nmero de bits mais significativo ento utilizado para selecionar


uma entrada na pgina de nvel mais alto da tabela de pginas. Esta
entrada contm o endereo da pgina de dados que contm o prximo
conjunto de entradas a ser pesquisado. O grupo seguinte de ordem
menos significativa ento utilizado para indexar a pgina apontada pela
entrada que est no nvel superior da tabela de pginas e o processo
repetido at que o nvel mais baixo da tabela de pginas seja encontrado,
o qual contm o NPF para a pgina desejada. A figura 3.8 mostra este
processo em um sistema com NPVs de 6 bits e quatro entradas em cada
pgina. Se qualquer uma das pginas na tabela de pginas solicitadas
durante a traduo do endereo no estiver mapeada na memria
principal, o sistema simplesmente busca no disco e continua a traduo.

140 UNIDADE 03
Figura 3.8: Traduo de endereos com tabelas multinvel.
Figura adaptada de Carter, (2003).

Translation Lookaside Buffers - TLBs

Uma das desvantagens principais de usar tabelas de pginas para


a traduo de endereos que a tabela de pginas precisa ser acessada
a cada referncia feita memria. Para reduzir esta desvantagem,
processadores so projetados para utilizar memria virtual incorporando
estruturas especiais denominadas de translation lookaside buffers (TLBs)
que atuam como caches para a tabela de pginas. Quando um programa
executa uma referncia memria, o endereo virtual enviado ao TLB
para determinar se ele contm a traduo do endereo. Se verdadeiro,
o TLB retorna o endereo fsico dos dados e a referncia memria
continua. Caso contrrio, ocorre uma falta no TLB e o sistema procura a
traduo na tabela de pginas. Alguns sistemas fornecem hardware para
executar o acesso tabela de pginas em uma falta de TLB, enquanto
que outros exigem que o sistema operacional acesse a tabela de pginas
via software. A figura 3.9 mostra o processo de traduo de endereos
em um sistema contendo um TLB.

141
Sistemas de Memria
Figura 3.9: Traduo de endereos com TLB.
Figura adaptada de Carter, (2003).

Organizao de TLBs
Os TLBs so organizados de modo semelhante s caches,
possuindo uma associatividade e um nmero de conjuntos. Enquanto os
tamanhos de cache so, geralmente, descritos em bytes, os tamanhos
dos TLBs so normalmente descritos em termos do nmero de entradas,
ou tradues, contidas no TLB, uma vez que o espao ocupado para
cada entrada irrelevante para o desempenho do sistema.
A figura 3.10 mostra uma entrada tpica de TLB. O seu formato
semelhante a uma entrada na tabela de pginas e contm um NPF, um
bit de vlido e um bit de sujo. Alm disto, a entrada do TLB contm o NPV
da pgina, que comparado ao NPV do endereo de uma referncia
memria para determinar se ocorre um acerto. De forma semelhante, a
uma entrada na matriz de etiqueta de uma cache, os bits do NPV que so
utilizados para selecionar uma entrada no TLB so geralmente omitidos
do NPV armazenado na entrada, para economizar o espao. No entanto,
todos os bits do NPF precisam ser armazenados no TLB porque eles
podem ser diferentes dos bits correspondentes no NPV.

Figura 3.10: Entrada TLB.


Figura adaptada de Carter (2003).

142 UNIDADE 03
Os TLBs so geralmente muito menores que as caches, porque
cada entrada em um TLB faz referncia a muito mais dados do que uma
linha de cache, permitindo que um nmero de entradas TLB relativamente
menor descreva o conjunto de trabalho de um programa. Os TLBs contm
mais entradas do que seriam necessrias para descrever os dados
contidos na cache porque desejvel que ele contenha tradues para
dados que residam na memria principal, bem como na cache.

Proteo

Alm de permitir o emprego de meios magnticos como um nvel


de hierarquia de memria, a memria virtual tambm muito til em
sistemas de computadores multiprogramados porque fornece proteo de
memria, evitando que um programa acesse dados de outro. A figura 3.11
ilustra como isso funciona. Cada programa tem o seu prprio endereo
virtual, mas o espao de endereamento fsico compartilhado entre
todos os programas que esto sendo executado no sistema. O sistema
de traduo de endereos assegura que as pginas virtuais utilizadas
por cada programa sejam mapeadas sobre pginas fsicas diferentes e
posies diferentes no meio magntico.

Figura 3.11: Proteo atravs de memria virtual.


Figura adaptada de Carter, (2003).

143
Sistemas de Memria
Isso traz dois benefcios. Primeiro, evita que os programas
acessem dados um do outro, porque qualquer endereo virtual ao
qual o programa faz referncia ser traduzido para o endereo fsico
pertencente a ele. No existe maneira de um programa criar um endereo
virtual que seja mapeado sobre um endereo fsico que pertena a outro
programa e, portanto, no h modo de um programa acessar os dados
de outro programa. Se os programas querem compartilhar dados um com
o outro, a maioria dos sistemas operacionais permite que eles solicitem
especificamente que a parte das suas pginas virtuais sejam mapeadas
sobre os mesmos endereos fsicos.
O segundo benefcio que um programa pode criar e utilizar
endereos no seu prprio espao de endereamento virtual sem
interferncia de outros programas. Assim, os programas independem de
quantos programas mais esto sendo executados no sistema e/ou quanta
memria aqueles outros programas esto utilizando. Cada programa tem
o seu prprio espao de endereamento virtual e pode fazer clculos de
endereos e operaes de memria naquele espao de endereos, sem
se preocupar com quaisquer outros programas que possam est sendo
executados naquela mquina.
A desvantagem desta abordagem que o mapeamento de
endereos virtuais-fsicos torna-se parte do estado de um programa.
Quando o sistema faz a comutao da execuo de um programa
para outro, ele precisa mudar a tabela de pginas que ele utiliza e
invalidar quaisquer tradues de endereos no TLB. De outro modo, o
novo programa utilizaria o mapeamento de endereos fsico-virtuais do
programa antigo, sendo capaz de acessar os dados. Isto aumenta o nus
de uma troca de contexto, devido ao tempo necessrio para invalidar o
TLB e trocar a tabela de pginas e porque, tambm, o novo programa
sofrer um nmero maior de falta de TLB quando ele comear a ser
executado com um TLB vazio.
Alguns sistemas tratam desta questo acrescentando, a
cada entrada no TLB, bits adicionais para armazenar a identificao
do processo ao qual a entrada se aplica. O hardware emprega o
identificador do processo para o qual est sendo feito a traduo como
parte da informao utilizada para determinar se houve um acerto de
TLB, permitindo que tradues a partir de vrios programas residam no
TLB ao mesmo tempo. Isto elimina a necessidade de invalidar o TLB
em cada troca de contexto, mas aumenta a quantidade de espao de
armazenamento exigido para o mesmo. Em sistemas modernos, a

144 UNIDADE 03
memria virtual mais frequentemente utilizada como uma ferramenta
para apoiar a multiprogramao que como uma ferramenta para permitir
que os programas utilizem mais memria do que aquela que fornecida
na memria principal do sistema. No entanto, extremamente valioso ter
memria virtual para fornecer proteo entre programas e permitir, em
uma mudana de contexto, a substituio dos dados de cada programa
entre a memria principal e o disco, o que explica por que praticamente
todos os sistemas operacionais e hardware modernos suportam memria
virtual.

EXERCCIO DE FIXAO

1. Explique o que memria virtual?


2. Qual a diferena entre endereo fsico e endereo virtual?
3. Explique o processo de traduo de endereo virtual para fsico.
4. Por que os sistemas de memria utilizam pginas fsicas e virtuais do
mesmo tamanho?
5. O que swapping? Para que usado? Quais so suas vantagens e
desvantagens?
6. Discorra sobre tabela de pginas.
7. Um sistema tem endereo virtual de 32 bits, endereo fsico de 24 bits
e pginas de 2KB.
a) Qual o tamanho de cada entrada na tabela de pginas (um nico
nvel)?
b) Quantas entradas na tabela de pginas so necessrias para este
sistema?
c) Quanta rea de armazenamento necessria para a tabela de pgina?
8. Explique o que so TLBs. Como se procede a traduo de endereo
utilizando-as?
9. Como o sistema de memria virtual evita que os programas acessem
dados uns dos outros?

145
Sistemas de Memria
RESUMO

Os sistemas de memria tm papel crtico no desempenho de


um sistema computacional. Estes sistemas recebem dados do mundo
externo transferidos para processador e tambm recebem dados do
processador a transferir para mundo externo.
A memria um conjunto de clulas, todas com o mesmo nmero
de bits, sendo cada clula identificada por um nmero nico que seu
endereo. Os acessos memria so realizados atravs de palavras
de memria, sendo que a velocidade da memria, indicada pelo seu
tempo de acesso, significativamente inferior velocidade com que o
processador trabalha.
O contedo desta unidade influenciado fortemente pelos
textos de Nicholas Carter, Rossano Pinto, Jean Laime, Ivan Ricarte
e Alexandre Casacurta. O Captulo acompanhado de exerccios, sem
soluo, pois preferimos deixar o prazer desta tarefa ao leitor. A bibliografia
e a webliografia ao fim das notas so mais do que suficiente para adquirir
um conhecimento razovel sobre a organizao de computadores. Ao
trmino da leitura desta unidade, o estudante dever: a) entender o
funcionamento de um sistema de memria; b) compreender o porqu
do uso de hierarquia de memrias, c) ser capaz de implementar os
algoritmos de substituio de pginas; e d) conhecer a tcnica de
memria virtual.

146 UNIDADE 03
CARTER, N. Arquitetura de computadores. Porto Alegre: Bookman,
2003.

HEURING, V. P; MURDOCCA, M. J. Introduo arquitetura de


computadores. Rio de Janeiro: Campus, 2002.

MONTEIRO, M. A. Introduo organizao de computadores. Rio de


Janeiro: LTC, 2007.

MORIMOTO, C. E. Hardware: o guia definitivo. Porto Alegre: Sulina,


2007.

PARHAMI, B. Arquitetura de computadores: de microprocessadores


a supercomputadores. So Paulo: McGraw- Hill do Brasil, 2008.

PATTERSON, D. A ; HENNESSY, J. L. Arquitetura de computadores:


uma abordagem quantitativa. Rio de Janeiro: Campus, 2003.

______. Organizao e projeto de computadores. Rio de Janeiro:


Campus, 2005.

REBONATTO, Marcelo Trindade. Organizao de Computadores


- Notas de aula. Passo Fundo, 2003. Disponvel por WWW em http://
vitoria.upf.tche.br/~rebonatto/

RIBEIRO, C ; DELGADO, J. Arquitetura de computadores. Rio de


Janeiro: LTC, 2009.

STALLINGS, W. Arquitetura e organizao de computadores. So


Paulo: Prentice Hall, 2008.

147
Sistemas de Memria
TANENBAUM, A. S. Organizao estruturada de computadores. Rio
de Janeiro: Prentice Hall, 2007.

TORRES, G. Hardware: curso completo. Rio de Janeiro: Axcel Books,


2001.

WEBER, R. F. Fundamentos de arquitetura de computadores. Porto


Alegre: Bookman, 2008.

Referncias na Web

Universidade Aberta do Piau UAPI


http://www.ufpi.br/uapi

Universidade Aberta do Brasil- UAB


http://www.uab.gov.br

Secretaria de Educao a Distncia do MEC SEED


http://www.seed.mec.gov.br

Associao Brasileira de Educao a Distncia ABED


http://www.abed.org.br

Apostilas, Tutoriais e Documentos


http://gabriel.sg.urcamp.tche.br/beraldo/arquitetura_2.htm

Guia do Hardware
http://www.guiadohardware.net

Larcio Vasconcelos
http://www.laercio.com.br

Gabriel Torres
http://www.gabrieltorres.com.br

Csar Augusto M. Marcon


http://www.inf.pucrs.br/~marcon/

148
Ivan L. M. Ricarte
http://www.dca.fee.unicamp.br/~ricarte/

Marcelo Trindade Rebonatto


http://vitoria.upf.tche.br/~rebonatto

Fabian Vargas
http://www.ee.pucrs.br/~vargas

Eduardo Moresi
http://www.intelingencia.blogspot.com

Rossano Pablo Pinto


http://www.dca.fee.unicamp.br/~rossano

Alexandre Casacurta
http://www.inf.unisinos.br/~coordinf/professores/casacurta.html

Universidade Aberta do Piau UAPI


http://www.ufpi.br/uapi

Universidade Aberta do Brasil- UAB


http://www.uab.gov.br

Secretaria de Educao a Distncia do MEC SEED


http://www.seed.mec.gov.br

Associao Brasileira de Educao a Distncia ABED


http://www.abed.org.br

Apostilas, Tutoriais e Documentos


http://gabriel.sg.urcamp.tche.br/beraldo/arquitetura_2.htm

Guia do Hardware
http://www.guiadohardware.net

Larcio Vasconcelos
http://www.laercio.com.br

149
Sistemas de Memria
Gabriel Torres
http://www.gabrieltorres.com.br

Csar Augusto M. Marcon


http://www.inf.pucrs.br/~marcon/

Ivan L. M. Ricarte
http://www.dca.fee.unicamp.br/~ricarte/

Marcelo Trindade Rebonatto


http://vitoria.upf.tche.br/~rebonatto

Fabian Vargas
http://www.ee.pucrs.br/~vargas

Eduardo Moresi
http://www.intelingencia.blogspot.com

Rossano Pablo Pinto


http://www.dca.fee.unicamp.br/~rossano

Alexandre Casacurta
http://www.inf.unisinos.br/~coordinf/professores/casacurta.html
Andr Macdo Santana
CV. http://lattes.cnpq.br/5971556358191272

Mestre em Engenharia Eltrica pela Universidade


Federal do Rio Grande do Norte-UFRN, Natal RN
Brasil (2007). Graduado em Cincia da Computao
pela Universidade Federal do Piau-UFPI, Teresina
PI, Brasil (2004). Atualmente Professor Assistente
do Departamento de Informtica e Estatstica (DIE)
da UFPI e aluno de doutorado do Programa de Ps-
Graduao em Engenharia Eltrica e Computao (PPGEEC da UFRN). Atua
principalmente nos seguintes temas: robtica mvel, viso computacional, filtragem
estocstica, inteligncia artificial.

Vinicius Ponte Machado


CV. http://lattes.cnpq.br/9385561556243194

Mestre em Informtica Aplicada pela Universidade


de Fortaleza (2003) e graduado em Informtica pela
mesma instituio. Atualmente professor assistente
da Universidade Federal do Piau, afastado para
doutoramento no Programa de Ps-Graduao
em Engenharia Eltrica e Computao (PPGEEC)
da Universidade Federal do Rio Grande do Norte.
Tem experincia na rea de Cincia da Computao, com nfase em Gesto do
Conhecimento e Inteligncia Artificial, atuando principalmente nos seguintes temas:
sistemas multiagentes, redes neurais artificiais e redes industriais.