Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARQUITETURA DE
COMPUTADORES II
ARQUITETURA DE COMPUTADORES II
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
152 p.
Inclui: Referncias
ISBN:
C.D.D. - 004.6
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:
Introduo
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.
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.
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.
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.
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
Organizao de Computadores 19
processa informao por informao, armazena e recupera nmero a
nmero (cada uma estaria associada a uma palavra).
Barramento
Barramento de memria
Barramento PCI
Barramento ATA
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.
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
22 UNIDADE 01
Figura 1.7: Diagrama em blocos de um processador.
Figura adaptada de Carter (2003).
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
24 UNIDADE 01
Figura 1.8: Ciclo bsico de instruo.
Figura adaptada de Rebonatto (2003).
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
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.
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
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
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
Organizao de Computadores 31
UNIDADE 2
PROJETO DE
PROCESSADORES
OBJETIVOS:
Introduo
Projeto de Processadores 35
Figura 1.1: Microprocessador.
Figura adaptada de Moresi (2002).
36 UNIDADE 02
Figura 1.2: Representao simplificada de um microprocessador.
Figura adaptada de Moresi (2002).
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
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.
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
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.
Projeto de Processadores 43
- Buscar a instruo seguinte;
- Executar a instruo seguinte;
- E assim por diante (milhes de vezes por segundo).
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
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
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).
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.
EXERCCIO DE FIXAO
48 UNIDADE 02
para inteiros e ponto flutuante?
__________________________________________________________
Introduo
Projeto de Processadores 49
Figura 2.2: Princpio de pipeline.
Figura adaptada de Ricarte (1999).
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).
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.
Durao de ciclos
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
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).
54 UNIDADE 02
Latncia
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
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
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.
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.
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
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:
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
Lk = k .
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) ]
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.
Processadores superescalares
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.
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).
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.
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
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.
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.
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.
LD r1, (r2)
ADD r3, r1, r4
SUB r5, r6, r7
MUL r8, r9, r10
EXERCCIO DE FIXAO
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
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:
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
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
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.
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
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:
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.
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.
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
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
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
Projeto de Processadores 89
RESUMO
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
Conceitos bsicos
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.
Endereos de memria
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).
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.
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.
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.
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:
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
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.
101
Sistemas de Memria
Propriedades de uma hierarquia
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.
103
Sistemas de Memria
nvel na hierarquia o tempo mdio de acesso :
Tecnologias de memria
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.
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).
106 UNIDADE 03
Figura 1.8: Organizao de chips de memria.
Figura adaptada de Carter, (2003).
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.
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.
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.
EXERCCIO DE FIXAO
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
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
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.
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
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.
119
Sistemas de Memria
c
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.
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).
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
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
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.
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.
EXERCCIO DE FIXAO
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
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.
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
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
135
Sistemas de Memria
Swapping
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
137
Sistemas de Memria
Figura 3.5: Tabela de pginas de nvel nico.
Figura adaptada de Carter, (2003).
138 UNIDADE 03
Figura 3.6: Traduo de endereos utilizando tabela de pginas.
Figura adaptada de Carter, (2003).
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.
140 UNIDADE 03
Figura 3.8: Traduo de endereos com tabelas multinvel.
Figura adaptada de Carter, (2003).
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.
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
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
145
Sistemas de Memria
RESUMO
146 UNIDADE 03
CARTER, N. Arquitetura de computadores. Porto Alegre: Bookman,
2003.
147
Sistemas de Memria
TANENBAUM, A. S. Organizao estruturada de computadores. Rio
de Janeiro: Prentice Hall, 2007.
Referncias na Web
Guia do Hardware
http://www.guiadohardware.net
Larcio Vasconcelos
http://www.laercio.com.br
Gabriel Torres
http://www.gabrieltorres.com.br
148
Ivan L. M. Ricarte
http://www.dca.fee.unicamp.br/~ricarte/
Fabian Vargas
http://www.ee.pucrs.br/~vargas
Eduardo Moresi
http://www.intelingencia.blogspot.com
Alexandre Casacurta
http://www.inf.unisinos.br/~coordinf/professores/casacurta.html
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
Ivan L. M. Ricarte
http://www.dca.fee.unicamp.br/~ricarte/
Fabian Vargas
http://www.ee.pucrs.br/~vargas
Eduardo Moresi
http://www.intelingencia.blogspot.com
Alexandre Casacurta
http://www.inf.unisinos.br/~coordinf/professores/casacurta.html
Andr Macdo Santana
CV. http://lattes.cnpq.br/5971556358191272