You are on page 1of 79

Arquitetura de Computadores 1

Objetivo
Ementa
Viso geral do computador. Histrico e evoluo dos computadores. Organizao bsica da mquina de von Neumann. Bits, bytes e palavras. Representao de dados numricos e base. Aritmtica computacional. Memria (hierarquia e tipos de memria, memria principal, memria virtual). CPU (componentes, ciclo de instruo, tipos de instruo, formato de instruo, modos de endereamento). Dispositivos E/S.

Objetivos
Ao final desta Unidade de Estudo o aluno ser capaz de:

Identificar as nomenclaturas utilizadas em computao; Conhecer as principais caractersticas dos computadores; Identificar os diversos componentes de um computador; e Compreender o funcionamento interno de um programa na mquina.

Contextualizao
Nesta Unidade de Estudo, sero apresentados os principais conceitos e caractersticas bsicas sobre o funcionamento de um computador. Os principais componentes, tais como: processador, dispositivos de E/S, memria, sistemas de armazenamento sero vistos detalhadamente. Alm disso, essa unidade servir de base para as demais disciplinas do curso de Gesto da Tecnologia da Informao.

Aproveite

material.

bons

estudos!

Contedo
Aula 1 - Viso Geral do Computador: Histrico e Evoluo dos Computadores

Evoluo dos computadores

Pr-histria dos computadores Primeira gerao vlvulas Segunda gerao transistores Terceira gerao circuitos integrados

Quarta gerao integrao em alta escala

Afinal o que um computador?

Aula 2 Organizao Bsica da Mquina de von Neumann: Bits, Bytes e Palavras



Mquina de von Neumann Ciclo de instruo Bits Bytes Palavras Endereos de memria Grandezas Unidades de medida

Aula 3 Representao de Dados Numricos e Bases Numricas

Sistema Numrico

Sistema Binrio Sistema Hexadecimal

Faixa de representao de um nmero Converses de Bases

Base 10 para Base 16. Base 2 para Base 16 e vice-versa. Converso da Base 2 ou Base 16 para a Base 10 Tabela ASCII ISO 8859-x

Caracteres

Aula 4 Aritmtica Computacional

Aritmtica na Base Dois

Adio Subtrao Sinal e magnitude Complemento a dois Extenso de sinal

Nmeros Negativos

Overflow

Aula 5 Memria (Hierarquia de Memria, Tipos de Memria, Memria Principal)



Definio de memria Tipos de memria Tempo mdio de acesso Tecnologias de fabricao de memria Organizao da memria DRAM

Aula 6 Memria Cache



Localidade

Uso da localidade Mapeamento direto Mapeamento associativo Mapeamento associativo por conjunto Polticas de substituio em cache

Mapeamento da memria cache

Aula 7 - Dispositivos E/S e Sistemas de Interconexo



Barramentos de entrada e sada (E/S)

Larguras dos barramentos

Dispositivos de E/S Mdulos de entrada e sada Interrupo E/S mapeada na memria Acesso direto memria Discos

Organizao fsica dos discos

Aula 8 Processadores (Componentes Bsicos)



Modelo de programao Computador IAS Linguagem Assembly

Tipos de instrues Quantidade de operandos

Ciclo de instruo

Aula 9 Processadores (Paralelizao)

Pipeline Processador Superescalar Paralelismo em nvel de programas

Aula 01 - Viso Geral do Computador: Histrico e Evoluo dos Computadores


Esta a nossa primeira aula de Arquitetura de Computadores, e comearemos a estudar o funcionamento bsico de um computador.

Inicialmente voc tomar conhecimento de uma breve histria da computao mas, antes, veja algumas frases famosas ditas ao longo do tempo por pessoas que fizeram histria.

Atualmente, o ENIAC composto por 18.000 vlvulas e pesa 30 toneladas. Os computadores do futuro, prximos do ano 2000 tero apenas 1.000 vlvulas e pesaro apenas 1,5 toneladas ( parte de um artigo da Popular Mechanics, uma revista conceituada da poca, em maro de 1949).

No acredito que no mundo exista mercado para mais de cinco computadores (Thomas Watson, presidente da IBM em 1943).

No existe motivo para algum em s conscincia querer um computador em casa (Ken Olson, da DEC em 1977).

Por que algum precisaria de mais de 640 KBytes de memria? (Bill Gates em 1981).

Ao ler tais frases, percebemos que arriscado fazer prognsticos quando o assunto evoluo de tecnologias de computadores. Veremos, agora, a evoluo dessas tecnologias para compreendermos melhor os computadores atuais, e quem sabe, fazer previses mais precisas. Voc se arriscaria?

Evoluo dos Computadores


Para compreendermos melhor o funcionamento de um computador, interessante darmos uma olhada na sua evoluo desde os primeiros computadores at os dias de hoje. Vamos enfocar aqui dois aspectos, primeiro os tipos de processamentos desses computadores e depois as tecnologias envolvidas ao longo dessa evoluo. Essas etapas so geralmente denominadas geraes de computadores.

Pr-Histria dos computadores (anteriores a 1945)


Essa no exatamente uma gerao de computadores, pois simplesmente no havia computadores como concebemos hoje, mas mquinas construdas ao longo da histria que auxiliavam pessoas nos clculos.

Em 1642, Blaise Pascal constri uma mquina de somar e subtrair operada por engrenagens. Em 1670, Leibnitz constri outra mquina que tambm multiplicava e dividia. Em 1834, Babbage desenvolve uma mquina analtica. Essa mquina, diferente das anteriores, podia ser programada com cartes perfurados.

Primeira Gerao Vlvulas (1945-1955)

ENIGMA

Vlvula

O grande incentivo criao/evoluo do computador foi sem dvida a Segunda Guerra Mundial. Nessa poca foram construdos os primeiros computadores digitais, utilizando vlvulas para chaveamentos e armazenamento. Podemos listar alguns como exemplos: o COLOSSUS, um computador construdo pelos ingleses em 1943, com o objetivo de quebrar cdigos alemes de outra mquina: o ENIGMA. Esse projeto ficou em segredo at pouco tempo atrs.

Entre

1943

1946,

foi

financiado

pelo

Departamento de Defesa Americano o ENIAC, projetado por John Mauchley. Veja, alguns nmeros desse computador: ele possua 18 mil vlvulas, 1.500 rels e pesava 30 toneladas. Apesar de este computador ter sido concebido no esforo de guerra, ele s foi concludo aps o seu trmino, mas o projeto deu bons frutos, e, a partir, dele foram surgindo vrios projetos de outros computadores. Um deles foi o projeto do IAS, de John von Neumann, no instituto de Estudos Avanados de Princeton. Essa mquina merecer mais ateno em outro momento; por enquanto basta dizer que algumas idias implantadas neste projeto serviram de base para o desenvolvimento de todos os computadores que vieram depois dele, ou seja, este computador que voc est usando agora tem muito das idias desse projeto. No nenhum exagero dizer que o IAS o pai de todos os computadores modernos. Destacam-se nessa poca os computadores IBM da linha 700.

Segunda Gerao Transistores (1955-1965)

Havia um problema com os computadores a vlvulas. Esses componentes eram muito sensveis e queimavam com muita facilidade, alm de ocuparem muito espao e consumirem muita energia. O transistor, uma inveno de 1947, mudaria esse cenrio.

Nessa poca, surgiram novos fabricantes de computadores como NEC e CDC. Antes, o domnio era total da IBM. A NEC lanou uma linha de computadores que fez histria o PDP. A primeira verso desse computador, o PDP-1, foi lanada em 1961 e custava a bagatela de 120 mil dlares. Muito mais barato do que os novos IBM 7090, que custavam na faixa de milhes de dlares. O PDP inaugurava os minicomputadores. Outro fabricante de destaque foi a CDC que construiu o 6600, o primeiro

supercomputador, que podia realizar vrias operaes ao mesmo tempo (paralelismo). Em 1959, a IBM lana o 1401, um computador voltado para aplicaes comerciais.

Terceira Gerao Circuitos Integrados (1965-1980)


Como o tempo no pra, e a evoluo tecnolgica tambm no, surgiram na dcada de 1960 os circuitos integrados, que podiam embutir dezenas de transistores em um nico chip. Essa caracterstica barateou mais os computadores.

Computador System 360

A IBM lana uma nova srie de computadores, o System 360 que permitia a multiprogramao, ou seja, executava vrios programas ao mesmo tempo. Na dcada de 1980, surgiram os primeiros microcomputadores. Com destaque para os

processadores 8080 da Intel e o Apple. No final da dcada de 1980, a IBM entra nesse mercado, mas adotando uma poltica diferente da usada at ento, ela no patenteou o seu projeto de microcomputador permitindo que vrios fabricantes construssem clones desse microcomputador. Foi o incio da massificao do uso do computador.

Quarta Gerao Integrao em Alta Escala (1980-?)


A quarta gerao uma extenso da terceira, pois o conceito o mesmo, ou seja, circuitos integrados. O que distingue esta daquela o volume de integrao; passou de algumas dezenas a centenas, milhares, depois milhes de transstores em cada chip. Os computadores atuais so praticamente todos dessa gerao.

popularizao

dos

computadores

ocorreu

graas

ao

surgimento

dos

microcomputadores nos anos 70; de l para c foram lanados computadores de uso pessoal cada vez mais rpidos, com destaque aos processadores Intel que passaram a equipar a maior parte dos computadores pessoais. Uma caracterstica desses

processadores a manuteno de famlia de processadores, na qual um novo processador geralmente uma verso mais rpida da verso anterior e com algumas

caractersticas tecnolgicas a mais, mas sem perder a compatibilidade por uma questo de mercado de software.

Veja na tabela a seguir alguns processadores Intel: Modelo 8088/8086 80286 80386 80486 Pentium Pentium Pro Pentium II Pentium III Pentium 4 1978 1982 1985 1989 1993 1995 1997 1999 2000 Ano de Lanamento

Afinal, o que um computador?


O computador uma mquina que pode resolver problemas para voc, executando instrues de uma forma ordenada. A princpio, a ordem de execuo das instrues seqencial e essa seqncia de instrues chamada de programa.

Como o computador uma mquina, formada por componentes mecnicos, eltricos e eletrnicos, as instrues que ele compreender sero compostas por sinais eltricos. Essas instrues formam a linguagem de mquina, tambm conhecida como linguagem de baixo nvel.

A linguagem de mquina muito complexa para a compreenso humana, por isso os computadores modernos permitem a utilizao de outros tipos de linguagens mais prximas da nossa compreenso, as chamadas linguagens de alto nvel. Na verdade, existem dezenas de linguagens de alto nvel, como por exemplo, linguagem C, Java, Pascal, etc. Infelizmente, os computadores continuam compreendendo apenas aquela linguagem de mquina.

Assim, necessrio um processo de traduo entre esses nveis de linguagens. Tal processo de traduo feito pelo compilador da linguagem, ou seja, o compilador traduz o programa escrito em uma linguagem de alto nvel para uma linguagem de baixo nvel.

As instrues que so executadas em linguagem de mquina so compostas por tarefas simples, como por exemplo, copiar um valor de um local para outro ou ento somar dois valores. A complexidade desses programas vem da combinao dessas tarefas.

Quando falamos em programas no computador, estamos nos referindo a entidades que no so fsicas, ou seja, no so palpveis como o computador. Esse tipo de entidade recebe o nome de software enquanto as entidades fsicas do computador, que so palpveis, de hardware. O contexto da disciplina Arquitetura de Computadores enfoca basicamente no hardware do computador, mas em alguns momentos devemos fazer uma abordagem do ponto de vista do software.

Geralmente, um programa, quando executado, recebe dados de entrada, processa esses dados e gera dados de sada. Por exemplo, um programa pode receber dois nmeros de entrada, somar esses nmeros (processamento) e mostrar o resultado na tela (sada). Esse procedimento pode ser visualizado no seguinte modelo:

Entrada de Dados --> processamento --> sada de dados

Nesta disciplina Arquitetura de Computadores, veremos como esses dados, de entrada e sada, so formatados e como o computador processar esses dados.

Nesta primeira aula, estudamos um pouco da histria do desenvolvimento da computao e alguns conceitos bsicos da computao para compreendermos a situao atual das tecnologias envolvidas na construo dos computadores. Na prxima aula estudaremos sobre os componentes bsicos do computador e suas funes.

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 02 - Organizao Bsica da Mquina de von Neumann: Bits, Bytes e Palavras

Nesta aula, voc ver os componentes bsicos de um computador e como esses componentes agem em conjunto para executar qualquer programa. Ver tambm como as informaes so organizadas nesse computador.

Mquina de von Neumann


Como visto na aula anterior, um computador recebe dados de entrada, processa esses dados e gera dados de sada. Este modelo pode ser mais bem detalhado se considerarmos as partes fsicas do computador responsveis por essas funes. Ns temos ento o modelo de computador da figura 2.1.

Figura 2.1 Mquina de von Neumann

Para explicar cada uma dessas partes, faremos uma analogia com uma situao que poderia ser o seu local de trabalho. Vamos supor que voc trabalhe em uma seo onde voc recebe solicitaes de compras e tem que providenciar essas compras. Existe um arquivo na sala onde voc pode consultar as pastas dos fornecedores. Sempre que algum vem sua sala e solicita uma compra, voc deve pegar as pastas dos fornecedores no arquivo, levar para a sua mesa e verificar o melhor preo entre os possveis fornecedores. Depois, voc guarda as pastas de volta no arquivo e despacha o pedido para quem solicitou em outra seo (chama o boy para isso).

Bom, trocando os personagens dessa analogia, os dispositivos de entrada seriam as outras pessoas que fizeram o pedido de compra para voc. Os dispositivos de sada so as outras sees para onde voc despachou a solicitao de compras. A memria seria o arquivo, que contm as pastas com as informaes dos fornecedores. Quando voc leva as pastas para a sua mesa, est fazendo um acesso memria do computador e levando os dados para a CPU, ou melhor, para a sua mesa. O caminho que voc tem de percorrer entre sua mesa e o arquivo o chamado sistema de interconexo, ou simplesmente, barramento. A sua sala o gabinete do computador, sendo que o piso

da sala pode-se comparar com a placa-me, que uma placa de circuito integrado onde vrios componentes do computador so conectados.

Como voc far vrias consultas, por telefone, por exemplo, bom anotar em um bloco de rascunho os preos que for obtendo. Esse bloco de rascunho o que chamamos de registradores. Para calcular os preos que for obtendo, deve usar, por exemplo, uma calculadora. Na CPU chamaremos essa calculadora de ULA, ou Unidade Lgica Aritmtica, na qual operaes simples como somas, subtraes so realizadas.

O processador o local onde realizado o processamento dos dados. Um nome alternativo ao processador CPU (Central Processing Unit) ou Unidade Central de Processamento. H um vcio entre algumas pessoas de chamar o gabinete do computador de CPU, isso um erro. Na verdade, a CPU apenas uma das partes do computador (um chip).

A CPU tambm chamada de o crebro do computador, e como todo crebro que se preze, a CPU uma das partes mais complexas do computador. Neste curso, dedicaremos algumas aulas para estud-la. Por enquanto suficiente saber apenas esses detalhes que acabamos de ver.

Deixando as analogias de lado, o modelo formado por processador, memria, dispositivos de entrada e sada e interconexo o modelo da mquina de von Neumann que vimos na ltima aula. Essa mquina difere de suas antecessoras por ter o programa armazenado na memria, ou seja, todo o procedimento que deve ser feito pelo computador fica armazenado na memria do computador, como uma receita de bolo que diz passo a passo o que deve ser feito. Antes dessa maravilhosa mquina de von Neumann, os computadores eram programados a mo, atravs de rels que ligavam e desligavam partes de um circuito eltrico.

Ciclo de Instruo
Um programa, como j vimos, executado no processador, mas fica armazenado na memria. Ento para executar um programa, o processador deve pegar as instrues que esto na memria e trazer para seus registradores. Acontece que a quantidade de registradores do processador no suficiente para conter todo o programa, que, alis, pode conter milhes de instrues; ento o processador deve buscar uma instruo de cada vez da memria para executar. Podemos ento imaginar uma instruo em duas etapas: primeiro feita a busca da instruo e depois feita a execuo da instruo. Aps a etapa de execuo da instruo, o processador volta etapa de

busca da instruo para pegar a prxima instruo que ser executada. Esse processo se repete infinitamente pelo processador at que todo o programa seja executado. A figura 2.2 mostra como isso acontece.

Figura 2.2 Ciclo de Instruo

Bits
A memria do computador um componente eletrnico, logo, armazenar informaes (instrues ou dados) de forma eletrnica, ou seja, atravs de cargas ou tenses eltricas. Imagine ento uma carga eltrica em um fio, por exemplo. Voc pode descobrir a tenso dessa linha com um voltmetro. Para representar os valores, so utilizadas faixas de tenses, por exemplo, se uma determinada linha tem uma tenso entre 0 e 0,1 V, ela est representando um nmero. Se a tenso est entre 0,1 e 0,2 V ela est representando outro nmero, e assim sucessivamente. Poderamos graduar vrios nmeros em vrias faixas de tenso, mas por uma questo de preciso dos circuitos, mais fcil graduar apenas dois nmeros. Da tem-se o sistema binrio que trabalha apenas com dois nmeros, o zero e o um. Atualmente em alguns tipos de memria, utiliza-se uma tcnica chamada MLC (multi-level cell), que permite o armazenamento de dois ou mais bits em uma clula de memria, graas graduao de vrias faixas de tenses.

Figura 2.3 Representao de Bits em Faixas de Tenses

Na figura 2.3 possvel notar que, quando uma linha est na faixa de 0 a 0,3 V, assume-se que o valor associado linha zero. E quando a mesma linha est na faixa de 1,0 a 1,5 V, assume-se que o valor associado linha um. Note que h uma faixa intermediria entre 0,3 e 1,0 V, nesse caso, a linha no tem nenhum valor vlido. Isso ocorre na fase de transio entre um valor e outro.

Esse nmero, que pode representar 0 ou 1, o chamado bit, a menor unidade de armazenamento na memria. Vrios bits podem ser agrupados para formar uma unidade de armazenamento maior. Esse grupo maior, formado por 8 bits convencionouse chamar de byte.

Bytes
O byte um padro que se tornou aceito com o passar do tempo, mas ao longo da evoluo dos computadores, o nmero de bits que representava um valor qualquer (uma clula de memria) variava de computador para computador. Veja alguns exemplos: a clula do DEC PDP-8 tinha 12 bits, a do DEC PDP-15 tinha 18 bits, a do Burroughs B1700 apenas 1 bit!

Como cada bit pode assumir dois valores diferentes e cada byte contm 8 bits, ento ns teremos em um byte 28 ou 256 combinaes possveis de bits. Se um bit, ao invs de assumir dois valores diferentes, pudesse assumir mais que isso, dez, por exemplo, ento teramos muito mais combinaes possveis, nesse caso, 108 combinaes diferentes. Ento, o fato de um bit assumir apenas dois valores diferentes no uma vantagem, em termos de possibilidades de representao numrica, mas uma necessidade em termos de preciso eletrnica.

Palavra
Grupos de bytes podem ser agrupados para formarem nmeros maiores. Esses grupos so chamados de palavras. A idia aqui permitir que um computador trabalhe com nmeros com mais de um byte. Geralmente, um computador processa palavras, e no bytes. Por exemplo, ele soma duas palavras. Se uma palavra tem quatro bytes, ele somar dois nmeros de 32 bits cada um. Se, ao invs disso, a palavra tivesse dois bytes apenas, a soma seria entre dois nmeros de 16 bits cada.

Em uma palavra, podemos identificar os bits em funo de sua localizao, o bit mais direita tem o ndice 0, o segundo direita o ndice 1, e assim por diante, at o ndice n1, onde n o tamanho da palavra. O bit de ndice 0 o bit menos significativo, o LSB

(Least Significant Bit), e o bit de ndice n-1 o bit mais significativo, o MSB (Most Significant Bit). Na figura 2.4 voc pode ver a disposio dos bits em uma palavra.

Figura 2.4 Disposio de Bits em Palavras de 16 e 8 bits

Endereos de Memria
A memria do computador acessada por clulas. Cada clula tem uma quantidade fixa de bits, geralmente um byte. Como na memria existem milhes de clulas, necessrio um identificador para cada uma dessas clulas, o endereo de memria. Uma memria ter tantos endereos quantas forem as clulas de armazenamento. Os endereos so nmeros seqenciais que comeam em 0 (zero) e se estendem at p-1, onde p a quantidade de clulas conforme a figura 2.5. O tamanho do endereo de memria sempre uma potncia de 2, sendo que p ser 2n, onde n a quantidade de bits no endereo, por exemplo, se um endereo de memria tem 8 bits, ento o tamanho mximo da memria ser 28 = 256 palavras.

Figura 2.5 Endereos de Memria

Grandezas
Os valores utilizados em computao so, na maioria das vezes, muito grandes, na faixa de milhes, bilhes. Ento, usaremos prefixos para determinar esses nmeros. Mas antes, vamos relembrar um pequeno detalhe: as informaes na memria, no processador, so armazenadas em bits, ou seja, valores binrios, ento usamos a base

dois para representar os nmeros. Sendo assim, o valor 1.000 (103) ser arredondado para 1024 (210). Esse valor corresponde a 1 Kilo ou 1 K. A seguir ilustramos os principais prefixos e valores correspondentes. 1K = 1 Kilo = 210 = 1.024 1M = 1 Mega = 220 = 1024 x 1024 = 1.048.576 (aprox. 1 milho) 1G = 1 Giga = 230 = 1024 x 1024 x 1024 = 1.073.741.824 (aprox. 1 bilho) 1T = 1 Tera = 240 = 1024 x 1024 x 1024 x 1024 = 1.099.511.627.776 (aprox. 1 trilho) 1P = 1 Peta = 250 = 1024 x 1024 x 1024 x 1024 x 1024 = 1.125.899.906.842.624 (aprox. 1 quintilho)

Quando dizemos que uma memria tem 128 Mega Bytes, estamos querendo dizer 128x220 Bytes = 134.217.728, ou simplesmente, 128 MB. H excees para essa forma de representao de grandezas, onde 1 kilo igual a 1000, ou 103, ao invs de 210.

Unidades de Medidas
Quando se fala em computadores, pensa-se sempre em velocidade. Quando um novo modelo lanado no mercado, espera-se que a sua velocidade seja sempre maior. O que quer dizer exatamente uma maior velocidade? Quer dizer levar menos tempo para executar uma instruo simples, e, conseqentemente, menos tempo para executar um programa inteiro. J vimos o modelo de ciclo de instruo, busca e executa a instruo, esse ciclo cadenciado por um relgio que gera sinais em uma determinada freqncia, sendo que a cada sinal gerado por esse relgio (clock) uma pequena operao feita pelo processador. Essa freqncia o que determina a velocidade do processador, por exemplo, uma freqncia de 1 MHz quer dizer que, em um segundo, o relgio gera 1 milho (106) de pulsos, ou seja, que, em um segundo, o processador realizar 1 milho de pequenas operaes ou micro operaes.

Da mesma forma que medimos a velocidade do processador em funo da sua freqncia, podemos tambm determinar o tempo de cada ciclo de clock, ou seja, o tempo de execuo de uma micro operao por parte do processador. Basta calcular o inverso do clock, vamos pegar o exemplo de um processador de 1 MHz que vimos

acima, uma micro operao ser executada em 1/1.000.000s ou 0,000001s que equivale a 1us (microssegundo).

O objetivo desta aula foi compreender a organizao de um computador bsico, a mquina de von Neumann. Nas prximas aulas, esse computador ser aos poucos detalhado. E j te preparando para o prximo assunto, a representao de dados, muito importante no confundir bits com bytes.

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 03 - Conceitos Fundamentais


Na ltima aula, vimos como os dados so manipulados pelo computador: por meio de associaes de tenses de uma linha com nmeros, pois, como se trata de uma mquina, no tem como trabalhar com formas mais abstratas como ns humanos. Agora vamos ver como essas formas so manipuladas pelo computador.

Sistema Numrico
Para escrever nmeros decimais (base 10), ns usamos dez algarismos para representar cada nmero, comeando do zero a nove: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Com esses algarismos possvel representar qualquer valor.

Imagine escrever uma contagem de zero a cem. Voc comea escrevendo nmeros de zero a nove; bom, nesse ponto, quando for passar para o prximo nmero, o dez, voc na verdade far o seguinte procedimento: quando o maior valor entre os algarismos decimais, nesse caso, o nove, for alcanado, no prximo nmero voc recomear a casa da unidade com zero e somar um casa da esquerda (a dezena). Notou? assim que voc consegue passar de 9 para 10. Isso ocorre novamente quando chegar a 19. Aqui, o nove ser reiniciado com zero e a casa da esquerda ser incrementada novamente, agora para 2, formando assim o 20.

Agora imagine que no temos mais dez algarismos para representar todos os nmeros, mas cinco. Ento os algarismos so: 0, 1, 2, 3 e 4. Com esses algarismos possvel representar qualquer valor. Da mesma forma que no sistema decimal. Usamos a mesma regra de contagem quando chegarmos ao maior algarismo na casa da unidade; nesse caso, o quatro, o prximo nmero ser zero na unidade e incremento na casa da

esquerda. Assim, nossa contagem ficaria: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 20, 21... Note que no pulamos do valor quatro para o valor dez, o 10 que aparece na contagem tem o valor 5.

Este sistema numrico obedece a um padro chamado posicional ponderado, ou seja, o valor do nmero determinado em funo da posio do algarismo dentro do nmero.

No sistema decimal que estamos acostumados desde a poca da pr-escola, temos o seguinte padro: unidades, dezenas, centenas, milhares, etc. O algarismo 5, por exemplo, pode valer 5, 50, 500, etc., dependendo da posio dentro do nmero.

Para determinar o valor de um nmero, somamos os produtos dos algarismos pela base elevada potncia correspondente posio. Complicado? Veja o exemplo: o nmero 521 , na verdade, 1x100 + 2x101 + 5x102 = 1 + 20 + 500 = 521. Nesse caso, a base 10 e os expoentes dependero da posio dentro do nmero.

Sistema Binrio
Informaes so representadas no computador atravs de nmeros binrios (zeros e uns). Este sistema numrico o binrio, que s ter dois algarismos: 0 e 1. Usaremos tambm o sistema posicional ponderado. A contagem dos nmeros ser: 0, 1, 10, 11, 100, 101, 110, 111, 1000, etc.

Para no confundir esses nmeros com o sistema decimal, podemos usar vrios mtodos, entre eles, colocar um 2 subscrito no final do nmero, assim: 02, 12, 102, 112, 1002, etc. Outra forma acrescentar o prefixo 0b ao nmero, por exemplo, 0b0, 0b1, 0b10, 0b11, 0b100, etc.

Da mesma forma que no sistema decimal, para sabermos qual o valor correspondente a um determinado nmero, fazemos a soma de produtos. Por exemplo, o nmero 10100 2 vale 2010, pois: 101002 = 0x20 + 0x21 + 1x22 + 0x23 + 1x24 = 0x1 + 0x2 + 1x4 + 0x8 + 1x16 = 2010 Nmeros na base 10 no precisam de nenhum tipo de identificao, nesse caso, o nmero 2010 pode ser escrito simplesmente 20.

Sistema Hexadecimal

Nmeros binrios necessitam de mais dgitos para representar qualquer valor acima de um do que nmeros decimais. Por exemplo, o nmero 12 decimal equivale a 0b1100. Para facilitar a representao de nmeros binrios, usamos outro tipo de base numrica, a base 16 ou hexadecimal. Nessa base, existem 16 algarismos diferentes. Como no temos algarismos maiores que nove, usamos letras para representar esses algarismos faltantes. Sendo assim, os algarismos da base 16 so: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. Sendo que a letra A vale 10, a B vale 11, a C, 12, a D, 13, a E, 14 e a letra F, 15.

Para diferenciar nmeros hexadecimais de outras bases, prefixamos os nmeros hexadecimais com 0x, assim, o nmero 0x15 est na notao hexadecimal. Pode ser colocado tambm o nmero 16 subscrito no final para indicar a base 16. Assim, os nmeros 0x15 e 1516 so equivalentes. Na base 16 tambm usada a soma de produtos para determinar o valor de um nmero. Por exemplo, o nmero 0xA19 equivale a 2585, pois: 9x160 + 1x161 + 10x162 = 9x1 + 1x16 + 10x256 = 9 + 16 + 2560 = 2585

A princpio, pode parecer que esse sistema numrico no tem vantagens sobre o sistema decimal, mas repare que o maior nmero binrio de 4 dgitos o 15, que equivale exatamente ao maior nmero com apenas um dgito hexadecimal. Essa equivalncia no ocorre com o sistema decimal, pois 4 dgitos binrios podem ser um dgito decimal, os nmeros 8 e 9, como podem tambm ser dois dgitos decimais, de 10 a 15. Note tambm que o maior nmero com dois dgitos hexadecimais 0xFF, que igual a 255. 255 tambm o maior nmero que pode ser representado com um byte (8 dgitos binrios).

Faixa de Representao de um Nmero


A faixa de representao de um nmero qualquer dada pela frmula bn, na qual b a base numrica e n a quantidade de dgitos do nmero. Por exemplo, usando a base 10, um nmero com 4 dgitos pode representar 104 nmeros diferentes, ou 10.000 nmeros diferentes. Esses nmeros vo de 0 a 9.999. Na base 2, um nmero com 4 dgitos pode representar 24 nmeros diferentes, ou 16 nmeros diferentes, de 0 a 15.

Como vimos na aula 2, 1 byte formado por 8 bits, sendo assim, 1 byte pode codificar 28=256 nmeros diferentes, de 0 a 255.

Converses de Bases
A tabela a seguir lista os equivalentes entre as bases 10, 16 e 2. Esses valores serviro como meios para as converses entre bases numricas Dec 0 1 2 3 Hex 0 1 2 3 Bin 0000 0001 0010 0011 Dec 4 5 6 7 Hex 4 5 6 7 Bin 0100 0101 0110 0111 Dec 8 9 10 11 Hex 8 9 A B Bin 1000 1001 1010 1011 Dec 12 13 14 15 Hex C D E F Bin 1100 1101 1110 1111

Existem alguns procedimentos para converter um nmero que est em uma base qualquer para outra. Primeiro veremos como converter da base 10 para as demais. A frmula a diviso sucessiva pela base para qual voc quer converter o nmero at que o quociente seja zero. O resultado ser formado pelos restos das divises. Por exemplo: veja a converso da base 10 para a base 2 com o nmero 50.

50 / 2 = 25 e resto 0

25 / 2 = 12 e resto 1

12 / 2 = 6 e resto 0

6 / 2 = 3 e resto 0

3 / 2 = 1 e resto 1

1 / 2 = 0 e resto 1

Pegando os restos das divises, sempre do ltimo para o primeiro, temos o resultado 0b110010. Para representar esse nmero com 1 byte, completamos com zeros esquerda. O resultado ento fica assim: 0b00110010

Por comodidade de visualizao, voc pode separar os nmeros binrios em grupos de 4 dgitos, assim como fazemos com a base 10 em grupos de 3 dgitos. Ento vamos escrever o resultado acima dessa forma: 0b0011.0010. Cada grupo de 4 dgitos binrios chamado de nibble, ou seja, 1 byte equivale a 2 nibbles.

Base 10 para Base 16


Novamente o nmero 50.

50 / 16 = 3 e resto 2

3 / 16 = 0 e resto 3

Pegando os restos das divises, sempre do ltimo para o primeiro, temos o resultado 0x32.

Base 2 para Base 16 e vice-versa


Vamos analisar os dois valores obtidos a partir do nmero 50: 0b0011.0010 e 0x32. Consulte a tabela acima e note que o dgito hexadecimal 3 equivale ao nmero binrio 0011, assim como o dgito hexadecimal 2 equivale ao nmero binrio 0010. Ento, facilmente podemos converter entre as bases 16 e 2 usando essa tabela.

Converso da Base 2 ou Base 16 para a Base 10


Para converter um nmero de uma base qualquer para a base 10 use a seguinte frmula: N = dn-1 x bn-1 + dn-2 x bn-2 + dn-3 x bn-3 + ... + d1 x b1 + d0 x b0 Onde d um algarismo do nmero, n-1, n-2, ..., 1, 0 so os ndices dos algarismos; b a base do nmero (2 ou 16) e n a quantidade de algarismos no nmero.

Vamos pegar um nmero como exemplo: 0b0011.0110. Nesse caso, n=8, pois o nmero tem 8 dgitos. Substituindo os valores na frmula teremos: N = 0 x 27 + 0 x 26 + 1 x 2 5 + 1 x 24 + 0 x 23 + 1 x 2 2 + 1 x 21 + 0 x 20

N = 0 x 128 + 0 x 64 + 1 x 32 + 1 x 16 + 0 x 8 + 1 x 4 + 1 x 2 + 0 x 1

N = 54

Agora um valor na base 16: 0xAB0 N = A x 162 + B x 161 + 0 x 160

N = 10 x 256 + 11 x 16 + 0 x 1

N = 2560 + 176 = 2736

Caracteres
Uma caracterstica importante dos computadores a capacidade de manipular qualquer tipo de informao em cdigos numricos: uma imagem, uma msica, nmeros, um texto, etc., sempre usando nmeros binrios, zeros e uns. Veremos agora como os caracteres so codificados. Caracteres uma variedade de smbolos no tratados como nmeros, uma letra, por exemplo.

Tabela ASCII
H um padro de codificao de caracteres chamado ASCII - American Standard Code for Information Interchange - (pronuncia-se asc), criado em 1961, que codifica um caracter em 1 byte. Antigamente esses caracteres ASCII eram codificados em 7 bits, sendo que o oitavo bit era usado para checagem.

Alguns caracteres dessa tabela no so imprimveis, por exemplo, o caracter que marca o final da linha de um texto, a tabela a seguir mostra os caracteres da tabela ASCII no imprimveis: Decimal 00 01 02 03 04 05 06 07 08 09 Hex 00 01 02 03 04 05 06 07 08 09 Ctrl ^@ ^A ^B ^C ^D ^E ^F ^G ^H ^I Sigla Null SOH STX ETX EOT ENQ ACK BEL BS HT Null - Nulo Start of Header - Incio do cabealho Start of Text - Incio do texto End of Text - Fim do texto End of Tape - Fim de fita Enquire - Interroga identidade do terminal Acknowledge - Reconhecimento Bell - Campainha Back-space - Espao para trs Horizontal Tabulation - Tabulao horizontal Controle

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

^J ^K ^L ^M ^N ^O ^P ^Q ^R ^S ^T ^U ^V ^W ^X ^Y ^Z ^[ ^\ ^] ^^ ^_

LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

Line-Feed - Alimenta linha Vertical Tabulation - Tabulao vertical Form-Feed - Alimenta formulrio Carriage-Return - Retorno do carro (enter) Shift-Out - Sada do shift Shift-In - Entrada no shift Data-Link Escape Device-Control 1 Device-Control 2 Device-Control 3 Device-Control 4 Neg-Acknowledge - No-reconhecimento Synchronous Idle End-of-Transmission Block Cancel End-Of-Medium Substitute Escape File Separator Group Separator Record Separator Unit Separator

A tabela a seguir mostra os caracteres da tabela ASCII que podem ser impressos: Decimal Hex. caracter Decimal Hex. caracter Decimal Hex. Caracter

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37

espao ( ) ! # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7

64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57

@ A B C D E F G H I J K L M N O P Q R S T U V W

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77

` a b c d e f g h i j k l m n o p q r s t u v w

56 57 58 59 60 61 62 63

38 39 3A 3B 3C 3D 3E 3F

8 9 : ; < = > ?

88 89 90 91 92 93 94 95

58 59 5A 5B 5C 5D 5E 5F

X Y Z [ \ ] ^ _

120 121 122 123 124 125 126 127

78 79 7A 7B 7C 7D 7E 7F

x y z { | } ~ Delete

A expresso: Jos e Maria codificada como: 0x4A, 0x6F, 0x73, 0x82, 0x20, 0x65, 0x20, 0x4D, 0x61, 0x72, 0x69, 0x61.

ISO 8859-x
Lembre-se que padro ASCII foi criado pelos americanos; ento muitos caracteres que no existem na lngua inglesa no existiam na tabela ASCII original. Hoje em dia, usase a tabela ASCII estendida, que codifica 256 caracteres diferentes, podendo contemplar parte dos caracteres de outros idiomas alm do ingls. Os ltimos 128 caracteres que compreendem a tabela estendida podem variar conforme a codificao usada. Como existem vrias combinaes de alfabetos de idiomas diferentes, existem vrios padres para definir esses caracteres. O padro ISO/IEC 8859-1 normaliza a codificao de caracteres para lnguas latinas ocidentais (que envolve o portugus).

Caracteres das lnguas latinas ocidentais

Nesta aula, vimos os tipos numricos que podem ser manipulados pelo computador e a forma de lidar com eles por meio de converses de base. Essas caractersticas de sistemas numricos sero usadas em vrias disciplinas do curso, e quem sabe at no dia-a-dia... S no v chegar padaria e pedir 0xF0 pezinhos!

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 04 - Aritmtica Computacional


Vimos na ltima aula que o computador usa bits para representar qualquer informao; mas como representar, por exemplo, nmeros negativos? Como fazer operaes com esses bits? Qual a capacidade de representao de uma palavra no computador? E se o resultado de uma operao no puder ser representado em uma palavra, como proceder? Tentaremos responder a essas questes nesta aula.

Aritmtica na Base Dois


No basta representar valores numricos no computador; necessrio manipular esses valores, geralmente fazendo clculos sobre eles. Como os valores representados so expressos em binrio, precisaremos realizar as operaes aritmticas tambm nesta base numrica. Antes, um detalhe muito importante: qualquer operao aritmtica realizada em um computador feita sempre sobre dois valores. Ento, se o computador for somar trs nmeros e subtrair um quarto nmero, como na operao x = a + b + c d, sero necessrias trs operaes em momentos distintos, por exemplo, primeiro soma-se a e b, depois soma-se o resultado com c e depois subtrai-se d do resultado.

Veremos aqui apenas as duas operaes aritmticas bsicas adio e subtrao.

Adio
Para falarmos de adio em binrio, pense primeiro em uma adio em decimal. Como h dez algarismos diferentes na base 10, existem 102 possibilidades de somas, por exemplo, 0+0, 0+1, 0+2, 1+3, 5+7, etc.

Vamos pegar esses cinco exemplos entre as cem possibilidades de somas:

0+0=0

0+1=1

0+2=2

1+3=4

5 + 7 = 12

Correo 5 + 7 no igual a 12! igual a 2 e vai um para a prxima soma! Ento devemos escrever assim:

5 + 7 = 2 e vai um

Para somar dois dgitos binrios s temos quatro combinaes possveis:

0+0=0

0+1=1

1+0=1

1 + 1 = 0 e vai um!

Esta ltima soma igual a dois. Nesse caso, dois 0b10, como estamos considerando apenas uma soma simples, o resultado 0, e o 1 que sobra vai para a prxima soma (carry).

Voc precisa ento usar trs parcelas na soma, j que temos o vai-um. As combinaes de soma ento ficam:

0 + 0 + 0 = 0 e vai zero

0 + 0 + 1 = 1 e vai zero

0 + 1 + 0 = 1 e vai zero

0 + 1 + 1 = 0 e vai um

1 + 0 + 0 = 1 e vai zero

1 + 0 + 1 = 0 e vai um

1 + 1 + 0 = 0 e vai um

1 + 1 + 1 = 1 e vai um

Considere a soma dos seguintes nmeros binrios: 0b01001101 e 0b01111101.

Subtrao
A subtrao de dois nmeros binrios idntica subtrao decimal; vamos pegar um exemplo novamente em decimal e depois faremos o mesmo procedimento com binrios. Faa 2038 1055.

Primeiro subtramos as unidades 8 5; como 8 maior que 5, basta subtrair os valores sem maiores conseqncias, o resultado 3.

A prxima subtrao das dezenas 3 e 5; nesse caso como 3 menor que 5, voc precisa emprestar um da casa da esquerda no minuendo que passa de 20 para 19 e temos 13 menos 5 que igual a 8. Note que esse 13 3 mais a base numrica que 10. Esse detalhe ser importante quando fizermos a subtrao de binrios.

As prximas subtraes so mais simples, 9 0 e 1 1, com o resultado 983:

Vamos passar agora para os nmeros binrios; mais uma vez, as regrinhas:

00=0

0 1 = 1 e subtrai um da casa da esquerda no minuendo

10=1

11=0

Vamos testar com os nmeros 0b100110 0b001100.

Nas trs primeiras casas, so subtraes simples sem emprstimos. Na quarta casa temos 0 1; nesse caso, o 0 ser somado com dois (0b10), que a base, e do restante do minuendo esquerda ser subtrado 1, como esse valor era inicialmente (0b10) passa para (0b01).

Olhando para essa subtrao, podemos imaginar o seguinte: e se o minuendo for menor que o subtraendo? Nesse caso o resultado ser negativo. Mas como representar nmeros negativos?

Nmeros Negativos
H vrias formas de representar nmeros negativos no computador (sistema binrio). A mais simples definir um bit para o sinal e convencionar um valor para + e outro valor para -, geralmente esses valores so: 0 = + e 1 = -. Esse mtodo conhecido como Sinal e Magnitude.

Sinal e Magnitude
Neste sistema, o primeiro bit de um nmero ser o bit de sinal e os bits restantes sero a magnitude do nmero. Por exemplo, o nmero 0b00000001 vale +1 enquanto 0b10000001 vale -1. A faixa de representao desse sistema numrico vai de -(2n-1-1) a +(2n-1-1), onde n a quantidade de bits do nmero. No caso de nmeros de 8 bits, a faixa de representao vai de -127 a +127. A ttulo de curiosidade, a faixa de representao de um nmero de 8 bits sem sinal (nmero que s assume valores no negativos) de 0 a +255. Ambos os casos contm 256 representaes diferentes; mas note que, no sistema de nmeros com sinal e magnitude, existem duas representaes para o zero, o +0 e o -0, isso um inconveniente para o computador, pois tem que tratar os dois valores como um s. Uma alternativa a esse mtodo o complemento a dois.

Complemento a Dois
O complemento de um nmero qualquer outro nmero que, somado ao primeiro, seja igual a zero. Por exemplo, o complemento de 5 -5, assim como o complemento de -7 7. Existem dois tipos de complementos, o complemento base menos um e o complemento base.

No complemento base menos um, pegamos o maior nmero da base, usando sempre uma quantidade pr-determinada de dgitos, e subtramos do nmero que se pretende descobrir o complemento. Vamos pegar o nmero 150 na base 10 como exemplo, usando 5 dgitos. O nmero que subtrairemos ser 99.999; ento teremos o complemento do nmero: 99.999 150 = 99.849, esse o complemento de 150 com 5 casas. Se, ao invs de 5 casas, usssemos 3 casas, ento a conta seria: 999 150 = 849, esse o complemento de 150 com 3 casas. Vejamos agora na base 2; vamos usar

nmeros com 8 casas (8 bits). O nmero 0b0000.0010 tem como complemento o valor 0b1111.1111 0b0000.0010 = 0b1111.1101. Note que, no caso da base 2, basta inverter todos os bits de um nmero para achar o seu complemento base menos um. Esse tipo de complemento no usado diretamente, ele serve apenas como meio para calcular o tipo de complemento realmente usado, o complemento base que veremos a seguir.

O complemento base de um nmero calculado achando o complemento base menos um de um nmero e depois somando mais um. No caso da base dois, referimonos ao complemento como complemento base dois ou simplesmente complemento a dois. Vamos pegar o exemplo anterior para calcular o complemento a dois: O nmero 0b0000.0010 tem como complemento base o valor 0b1111.1111 0b0000.0010 + 1.

Para facilitar nossos exemplos, vamos diminuir o tamanho dos nmeros para apenas 4 bits. Comecemos com o nmero 1, em binrio de 4 bits fica: 0b0001. O complemento a dois deste nmero : 0b1111 0b0001 + 1 = 0b1110 + 1 = 0b1111. Ento, o complemento a dois de 0b0001 0b1111, ou seja, 0b0001 = +1 e 0b1111 = -1. Agora com o nmero dois, em binrio de 4 bits, tem-se: 0b0010. O complemento a dois deste nmero : 0b1111 0b0010 + 1 = 0b1101 + 1 = 0b1110, ou seja, 0b0010 = +2 e 0b1110 = -2. Vale notar que, se partirmos do nmero negativo (0b1110) e acharmos o complemento a dois deste nmero, chegaremos ao valor positivo deste nmero (0b0010). A essa altura voc j deve ter notado que nmeros negativos comeam com o bit 1 e nmeros positivos comeam com o bit 0.

Enquanto considervamos os nmeros sem o bit de sinal (apenas nmeros positivos), tnhamos os seguintes valores (com 4 bits): Decimal 0 1 0000 0001 Binrio 8 9 Decimal 1000 1001 Binrio

2 3 4 5 6 7

0010 0011 0100 0101 0110 0111

10 11 12 13 14 15

1010 1011 1100 1101 1110 1111

Agora, com o complemento a dois temos os seguintes valores (com 4bits): Decimal 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 Binrio -8 -7 -6 -5 -4 -3 -2 -1 Decimal 1000 1001 1010 1011 1100 1101 1110 1111 Binrio

Note que o complemento a dois de 0 o prprio 0: 0b1111 0b0000 + 1 = 0b0000.

A faixa de representao de um nmero de 4 bits de -8 a +7. Para determinar essa faixa, faa: -(2n-1) a +(2n-1)-1, onde n o nmero de bits do nmero. A faixa de valores de nmeros de 8 bits em complemento a dois : -128 a + 127. Como no complemento, na base dois s existe uma representao do nmero zero, haver um valor negativo a mais do que os positivos.

A figura 4.1 mostra o esquema de representao de nmeros em complemento a dois usando 4 bits e n bits.

Figura 4.1 Representao de Nmeros em Complemento a Dois

Algumas observaes sobre nmeros em complemento a dois: 1. O nmero +1 sempre o dgito 1 seguido de n-1 zeros esquerda, independente da quantidade de bits. Por exemplo, com 4 bits, o nmero 1 0b0001 e com 8 bits 0b0000.0001; 2. O nmero -1 sempre todos os bits iguais a um independente da quantidade de bits. Por exemplo, com 4 bits, o nmero 1 0b1111, e com 8 bits 0b1111.1111; 3. O menor nmero da faixa de representao sempre o dgito 1 seguido de n-1 zeros direita, independente da quantidade de bits. Por exemplo, com 4 bits, o menor nmero, -8, 0b1000, e com 8 bits, o menor nmero, -128, 0b1000.0000; 4. O maior nmero da faixa de representao sempre o dgito 0 seguido de n-1 uns direita, independente da quantidade de bits. Por exemplo, com 4 bits, o maior nmero, +7, 0b0111.

Extenso de Sinal
Um nmero em complemento a dois pode ser estendido a qualquer quantidade de bits maior que o mnimo necessrio. Por exemplo, um nmero de 8 bits pode ser estendido a 16 bits, basta acrescentar bits esquerda, se o nmero for positivo, acrescentam-se zeros esquerda; se o nmero for negativo, acrescentam-se uns esquerda. Por exemplo, o nmero -2 = 0b1111.1110 = 0b1111.1111.1111.1110.

Overflow
Suponha a seguinte soma de dois nmeros positivos de 8 bits: 0b0110.0000 + 0b0010.0001, que equivalem a: 97 + 33:

Como a soma (+130) ultrapassa a faixa de representao do nmero, que de -128 a +127, no possvel representar o resultado corretamente, dizemos que ocorreu um overflow no resultado. O computador geralmente registrar o resultado errado, cabe ao programador tomar os cuidados necessrios.

O overflow ocorre quando a soma de dois nmeros positivos d negativa ou quando a soma de dois nmeros negativos d positiva. No possvel a soma de um nmero positivo com um nmero negativo gerar overflow. Vejamos outras soma:

Nesta soma no temos um overflow, pois o resultado est correto.

Nesta soma temos um overflow. Uma dica para determinar a ocorrncia de overflow : repare nos dois ltimos carrys da soma, o da ltima coluna e o que vai para fora da soma (destacado em magenta nos exemplos acima), se esses valores forem diferentes, 01 ou 10, ocorre overflow, se eles forem iguais, 00 ou 11, no ocorre overflow.

Nesta aula, vimos como o computador manipula os dados atravs de operaes binrias simples, como tambm a representao de nmeros negativos.

A compreenso dos limites dos valores armazenados em variveis aps operaes aritmticas fundamental no momento de escrever programas de computador. Esse fato ter relevncia em outras disciplinas do curso como, por exemplo, a Linguagem de Programao.

Aplicando o Conhecimento

Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 05 - Memria (Hierarquia de Memria, Tipos de Memria, Memria Principal)


A grande sacada da arquitetura de von Neumann foi ter uma memria onde se pode armazenar no apenas os dados que sero manipulados pelos programas, mas tambm os prprios programas. Desde aquela poca, iniciou-se um ciclo vicioso que busca cada vez mais memria, pois quanto mais memria, maiores ficam as necessidades dos programas, de tal forma que a quantidade nunca parecia suficiente, e talvez nunca seja no futuro. Nesta aula, veremos como combinar vrios tipos de memria para obter o melhor desempenho possvel, mesmo quando no temos tanta memria disponvel.

Definio de Memria
Na aula 2, vimos que um sistema de computao utiliza um dispositivo de armazenamento de informaes (a memria). As informaes so armazenadas na memria para uso posterior, sendo que o tempo que as informaes permanecero gravadas vai depender do tipo de memria utilizada.

H duas operaes bsicas que podem ser feitas em uma memria de computador: a leitura e a escrita. Na operao de leitura, um valor armazenado ser obtido da memria geralmente por parte do processador. J na operao de escrita, um valor ser armazenado na memria, geralmente por parte do processador. Ambas as operaes usaro os endereos de memria para referenciar onde ser escrito ou lido o valor.

Tipos de Memria
H vrios tipos de memrias no computador; essas memrias tm caractersticas diferentes em funo do seu uso, como capacidade de armazenamento, velocidade de acesso s informaes, tecnologia envolvida na sua construo, persistncia dos dados armazenados e custo. A figura 5.1 ilustra algumas dessas caractersticas:

Figura 5.1 Hierarquia de Memrias

No nvel mais alto dessa hierarquia de memria, encontram-se os registradores, elementos eletrnicos que geralmente ficam dentro do processador. A velocidade de acesso s informaes nos registradores to alta quanto o processador pode acessar. Veremos mais sobre registradores nas prximas aulas.

Entenda memria como uma forma de armazenamento de informaes. Por isso, consideramos tambm discos como memria. H uma relao direta entre a capacidade de armazenamento da memria e a velocidade de acesso, quanto mais rpido for o acesso a informaes em uma memria, menor ser a capacidade de armazenamento. Isso se d por uma questo de custo, o preo por bit to maior quanto a velocidade de acesso deste bit.

Quanto persistncia dos dados armazenados, podemos dividir as memrias em: memria RAM (Random Memory Access) e memria ROM (Read Only Memory).

A memria ROM uma memria que j vem com os dados pr-gravados no computador. Esse tipo de memria serve, por exemplo, para armazenar programas de inicializao do computador, j que este deve executar alguns passos automaticamente sem a interveno do usurio. A memria RAM uma memria que pode tanto ser lida como escrita. Quando voc se refere memria do computador sem especificar exatamente qual, memria RAM que est se referindo. A traduo literal de RAM, memria de acesso randmico no faz jus ao significado dela, pois memrias ROMs tambm so de acessos randmicos. Seria mais correto o termo em ingls RWM (Read And Write Memory), mas esse termo nunca foi utilizado.

Tempo Mdio de Acesso


A memria um ponto crtico na execuo de programas no computador, pois ela funciona numa velocidade menor que a do processador. Isso limita o desempenho do

sistema como um todo, j que o processador precisa buscar as instrues de um programa na memria. Uma forma de acelerar o acesso s informaes organizar as memrias de forma hierrquica, colocando as mais rpidas mais prximas ao processador. A tentativa de acesso feita sempre partindo do nvel mais alto da hierarquia de memrias. Como essas memrias so mais rpidas, evidentemente o tempo de acesso ser menor. Caso haja a possibilidade de a informao requerida no estar no nvel de memria acessado, nesse caso, feita uma busca no nvel abaixo da hierarquia de memria. Esse processo se repete para todos os nveis de memria at que a informao seja encontrada. A figura 5.1 representa a hierarquia de memrias no computador.

Quando uma informao procurada em um nvel de memria encontrado, chamamos de acerto (hit), quando a informao no encontrada, chamamos de falha (miss).

Para voc determinar o tempo mdio de acesso a uma informao, leve em considerao a seguinte frmula:

ta = (th x ph) + (tm x pm) Onde ta o tempo mdio de acesso a uma informao em um nvel de memria, th o tempo de acesso no caso de um acerto, ph a probabilidade de acerto de acesso, tm o tempo de acesso no caso de uma falha, ou seja, o tempo de acesso aos nveis inferiores na hierarquia de memria; e pm a probabilidade de falha de acesso.

Veja um exemplo: se um nvel de memria tem 75% de chance de conter uma informao, e o tempo de acesso a essa memria seja de 10ns, em caso de acerto, e 100 ns, em caso de falha, teremos ta = (10 x 0,75) + (100 x 0,25) = 7,5ns + 25ns = 32,5ns

Tecnologias de Fabricao de Memria


Em termos de tecnologia de fabricao de memria RAM, temos dois tipos principais: a memria RAM esttica (SRAM) e a memria RAM dinmica (DRAM). A primeira mais antiga, porm, at hoje, a mais rpida e, conseqentemente, mais cara, usada principalmente para a construo de memrias cache, que veremos na prxima aula, j a segunda, mais barata, utilizada para a fabricao de memrias principais (MP).

Memrias so formadas por componentes eletrnicos (sem levar em considerao as memrias secundrias) encapsulados em circuitos integrados. Esses chips atualmente

so colocados em pequenas placas, os mdulos, que se conectam placa me. Os mdulos mais antigos so os chamados SIMM - Single Inline Memory Module, pois s possuem um lado de contato com o slot na placa-me com 30 vias (ligaes). Essas vias transmitem tanto os bits do endereo de memria quanto os bits dos dados e outros de controle do funcionamento da memria. Esses mdulos foram largamente usados nos computadores 386 e 486. Os mdulos SIMM de 72 vias substituram os de 30 vias e foram usados a partir dos primeiros Pentiums. Esses mdulos eram capazes de transmitir 32 bits de cada vez.

Os mdulos DIMM - Double Inline Memory Module, que surgiram na poca do Pentium II, substituram os SIMMs como padres de mdulos de memria, sendo usados at hoje. Esses mdulos podem transmitir 64 bits de cada vez. Os primeiros DIMM eram os mdulos SDR (Single Data Rate), depois surgiram os mdulos DDR (Double Data Rate) e DDR2. A diferena entre esses mdulos a capacidade de transmitir um dado da/para memria em um ciclo de clock: no caso dos mdulos SDR, dois dados em um ciclo, no caso do DDR, e quatro dados em um ciclo, no caso do DDR2. Trocando em midos para voc entender melhor, pense no seguinte, a velocidade do processador medida em pulsos por segundo, como j vimos na aula 2, essa freqncia cresce muito rapidamente medida que novos modelos de processadores so lanados, ao passo que a freqncia que determina a velocidade da memria no aumenta tanto assim, por exemplo um processador de 1.6GHz que acessa uma memria por uma via de 133MHz ser aproximadamente 10 vezes mais rpido do que a memria. A idia ento aumentar o nmero de bytes transmitidos no menor nmero de pulsos. A memria DDR consegue isso transmitindo em um nico pulso de clock mais de um dado por uma mesma via. Em termos de freqncia, uma memria SDR de 133MHz trabalha na mesma freqncia de uma DDR-266, mas esta ltima consegue uma taxa maior de transmisso de dados. A seguir listamos as principais taxas de transmisso das principais memrias: Tipo Modelos Freqncia do barramento PC-66 SDR PC-100 PC-133 DDR PC-1600 ou DDR200 66MHz 100MHz 133MHz 100MHz 528 MBytes/s 800 MBytes/s 1 GByte/s 1,6 GByte/s Taxa de Transmisso (*)

PC-2100 ou DDR266 PC2700 ou DDR333 PC3200 ou DDR400 PC3700 ou DDR466 PC4000 ou DDR500 PC2-4200 ou DDR2-500 PC2-5300 ou DDR2-667 PC2-6400 ou DDR2-800 DDR2 PC2-7500 ou DDR2-933 PC2-8500 ou DDR2-1066 PC2-9600 ou DDR2-1200

133MHz 166MHz 200MHz 233MHz 250MHz 133MHz 166MHz 200MHz 233 MHz 266MHz 300MHz

2,1 GBytes/s 2,7 GBytes/s 3,2 GBytes/s 3,7 GBytes/s 4 GBytes/s 4,2 GBytes/s 5,3 GBytes/s 6,4 GBytes/s 7,5 GBytes/s 8,5 GBytes/s 9,6 GBytes/s

(*) As taxas de transmisso mostradas na tabela so tericas, pois em um acesso memria necessrio enderear o dado e depois transmitir, como veremos na prxima sesso. Essas taxas s ocorreriam se apenas os dados fossem transmitidos. Para calcular essas taxas, basta multiplicar a freqncia do barramento pelo nmero de bytes transmitidos de cada vez, lembrando que, no caso do SDR, o nmero de bytes igual a 8, no DDR 16 e no DDR2 32.

Organizao da Memria DRAM


A organizao de um chip de DRAM tem o formato de uma matriz, como mostrado na figura 5.2. Nesta figura temos uma matriz 4x4 (16bits), onde cada linha e cada coluna so identificadas por dois bits com os valores (00,01,10,11). Para acessar um dos 16 bits individualmente, o controlador da memria divide o endereo em duas partes, de tal forma que consiga identificar a linha e a coluna da matriz. No exemplo da figura, o endereo a ser acessado 0b1001; note a relao entre o tamanho do endereo (4 bits) e o tamanho da matriz (16bits=24). O endereo 1001 (omitiremos o prefixo 0b para facilitar a representao) dividido em 10.01, sendo que os bits mais significativos (10) identificam a linha a ser acessada e os bits menos significativos (01) identificam a coluna a ser acessada. Os bits que ativam a linha da matriz entram em um decodificador (decod) e a linha correspondente ativada (linha vermelha no desenho), todos os quatro bits desta linha so enviados para o multiplexador (mux), mas apenas o

bit da coluna (01) selecionado (linha azul no desenho), graas ao de mux que controlado pelos bits menos significativos do endereo. Na sada da matriz teremos apenas um bit que foi lido.

Figura 5.2 Organizao de um Chip de Memria DRAM

Esse processo se repete em paralelo em vrios chips de memrias ao mesmo tempo, sendo ento acessado vrios bits simultaneamente como mostra a figura 5.3. Neste exemplo, 8 chips so acessados simultaneamente, lendo 1 bit em cada um e totalizando 8 bits lidos. Concluindo o acesso, esses 8 bits (1 byte) so enviados a oito linhas distintas que formam o barramento de dados, onde os dados so transmitidos para o processador. Note tambm que na figura 5.3 os 4 bits (1001) de endereo so levados a todos os 8 chips em paralelo atravs do barramento de endereo.

Figura 5.3 Acesso Palavra de 8 bits em Memria DRAM

Vimos aqui um processo de leitura de um valor da memria, mas a memria pode realizar tambm a operao de escrita. Precisando, para isso, somente inverter o fluxo do bit que foi lido; nesse caso, ele seria enviado para a matriz no local selecionado e gravado.

Nesta aula, vimos as principais tecnologias de memria, diferenciando os vrios tipos e emprego dessas memrias e a forma como as informaes so acessadas. Nas prximas aulas, veremos como o processador executa os programas que esto na memria e como esses programas manipulam os dados da memria.

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 06 - Memria Cache


Na aula anterior, vimos que muitas vezes os dados so acessados pelo processador a uma velocidade mais baixa do que ele poderia acessar em decorrncia da latncia do barramento da memria, e que a soluo para este problema seria usar uma memria mais rpida. Mas, ao contrrio da crendice popular, tempo no dinheiro, pois quanto mais rpida a memria, maior o custo. Nesta aula, vamos ver como essa memria mais rpida funciona.

Localidade
A idia da memria cache aumentar a velocidade de acesso s informaes que, a princpio, estariam na memria principal. Para entender o funcionamento da cache, necessrio ter o conceito de localidade do programa. Essa localidade dividida em dois tipos: localidade espacial e localidade temporal.

A localidade espacial quer dizer que, se um programa acessa uma informao na memria, provvel que venha a acessar outra informao prxima a essa em um curto prazo. Isso quer dizer que, se o programa acessa um endereo n, bem provvel que venha a acessar um endereo n+1, n+2, ..., logo em seguida. Isso uma caracterstica dos programas da mquina de von Neumann.

Figura 6.1 Localidade Espacial

A localidade temporal quer dizer que, se um programa acessa uma informao na memria, provvel que venha a acessar essa mesma informao em um curto prazo. Veja o exemplo: suponha que um programa deve ler um valor da memria e somar esse valor dez vezes, sero feitos dez acessos ao mesmo valor na memria.

Figura 6.2 Localidade Temporal

Uso das Localidades Espacial e Temporal


O conceito de localidade aplicado da seguinte forma: como a memria cache uma memria bem menor que a memria principal, no poder conter todas as informaes que so solicitadas, mas conter as ltimas informaes acessadas. Para tal, o processador procurar o dado primeiro na memria cache, se o dado estiver l (hit cache), o processador no precisar acessar a memria principal, caso contrrio (miss cache), o processador faz um acesso memria principal em busca do dado solicitado. Mas no s isso, alm de acessar o dado na memria principal, uma cpia do dado acessado feita na cache, se um novo acesso for feito a esse dado no futuro, no precisar mais acessar a memria principal, pois o dado j estar na cache.

Essa a idia da cache fundamentada pelo conceito da localidade temporal. Mas h tambm a localidade espacial. Esse fundamento utilizado da seguinte forma: quando o dado levado da memria principal para a cache, no caso de miss cache, no ser levado apenas o dado solicitado, mas um bloco de alguns bytes da rea de memria onde se encontra esse dado solicitado.

Para implementar esse modelo de memria cache, necessrio dividir a memria principal em blocos de palavras, e, quando levar uma palavra de memria para a cache,

deve ser levado o bloco inteiro que contm essa palavra. Esse bloco, quando nos referimos cache, chamamos de linha, tamanhos comuns de linhas vo de 8 a 128 bytes. O que determina os tamanhos dos blocos na memria principal o tamanho das linhas da cache.

A figura 6.3 mostra as possibilidades de situaes no acesso cache, seguindo os seguintes passos: 1. O processador verifica se a palavra solicitada est na cache; 2. Se ocorrer hit cach, a palavra acessada; 3. Seno, o bloco da MP que contm a palavra carregado na cache; 4. A palavra acessada.

Figura 6.3 Acesso Memria Cache

Mapeamento da Memria Cache


A cache usa um conceito de acesso associativo, ou seja, acessa um valor no pelo endereo, mas por uma associao que faz a um determinado contedo. Para que um endereo gerado pelo processador seja associado na cache, necessrio fazer um mapeamento da memria principal na memria cache, ou seja, preciso saber em que local da cache poder estar determinado o endereo da memria. O mapeamento a forma de determinar em qual linha da cache um bloco ser carregado.

H trs tipos, mapeamento em funo da cache: mapeamento direto, mapeamento associativo e mapeamento associativo por conjunto. Para todos esses modelos, considere a cache organizada em C linhas (da linha 0 linha C-1) de K palavras cada linha e a memria principal organizada em 2n palavras. Note que n o tamanho do endereo (em bits) de memria que ser gerado pelo processador. Se h 2n palavras na memria, ento haver (B = 2n/K) blocos. B bem maior que C, pois a memria principal bem maior que a cache. Por exemplo, uma memria principal de 232 bytes e uma cache de 1024 linhas de 64 bytes de comprimento ter essa relao: 1. Tamanho da memria principal: 232 bytes = 4GBytes

2. Tamanho da memria cache: 1024 linhas x 64 bytes por linha = 64KBytes 3. O quanto a MP maior que a cache: 4GB/64KB = 65.536 A memria cache, alm dos dados replicados da memria principal, contm outras informaes que identificam quais os dados esto armazenados na cache, esses identificadores so as tags, ou etiquetas.

Figura 6.4 Memria Cache x Memria Principal

Mapeamento Direto
No mapeamento direto, um bloco da memria principal s pode ser mapeado em uma linha especfica da cache, e apenas nesta linha. Para determinar o nmero da linha da cache onde certo bloco poder ser mapeado faa:

i = j modulo C

Onde i o nmero da linha, j o nmero do bloco na memria principal e C a quantidade de linhas na cache. Por exemplo: o bloco 2000 da memria principal ser mapeado na linha 976 de uma cache de 1024 linhas, pois (2000 modulo 1024) = 976. A figura 6.5 detalha a relao entre os blocos da memria principal e as linhas da cache onde podem ser mapeadas.

Figura 6.5 Relao entre Blocos e Linhas no Mapeamento Direto

Pegando como exemplo as memrias da figura 6.4, o bloco 0 ser mapeado na linha 0, o bloco 1 na linha 1, o bloco 2 na linha 2, etc., at o bloco 1023 que ser mapeado na linha 1023 (a ltima da cache). O prximo bloco, o 1024 ser mapeado na linha 0, o bloco 1025, na linha 1, e assim por diante, at o bloco 2047. Esse mapeamento se repete para todos os blocos. Sendo assim, a linha 0 da cache poder conter os blocos 0, 1024, 2048, 3192, etc. De uma forma mais genrica temos o seguinte: Nmero da Linha 0 1 2 ... C-2 C-1 0 1 2 ... C-2 C-1 Blocos mapeados da memria principal C C+1 C+2 ... 2C - 2 2C - 1 2C 2C + 1 2C + 2 ... 3C - 2 3C - 1 ... ... ... ... ... ... BC BC+1 BC+2 ... B2 B1

* cache de C linhas e MP de B blocos

Uma linha da cache pode conter vrios blocos da memria, em momentos distintos. Mas como saber qual bloco est presente em uma linha da cache? Para responder a esta questo devemos entender como o circuito que controla o acesso cache consegue determinar a linha a ser acessada e qual o bloco presente nessa linha. O circuito controlador divide o endereo de memria gerado pelo processador em trs campos: a tag (t), o nmero da linha (r) e o nmero da palavra (w). A figura 6.6 mostra a distribuio desses campos no endereo de memria.

Figura 6.6 Formato de Endereo de Memria Principal com Mapeamento Direto

Vamos pegar um exemplo bem menor para podermos entender o significado desses campos. Supondo que o endereo de memria tenha apenas 6 bits, teremos uma memria de 26 bytes, ou 64 bytes e a memria cache com 16 bytes organizados em quatro linhas. Como exerccio, escreva todos os 64 endereos de memria em uma folha.

0b000000 <- byte 0 do bloco 0

0b000001 <- byte 1 do bloco 0

0b000010 <- byte 2 do bloco 0

0b000011 <- byte 3 do bloco 0

0b000100 <- byte 0 do bloco 1

0b000101 <- byte 1 do bloco 1

...

0b111011 <- byte 3 do bloco 14

0b111000 <- byte 0 do bloco 15

0b111101 <- byte 1 do bloco 15

0b111110 <- byte 2 do bloco 15

0b111111 <- byte 3 do bloco 15

Como a cache tem 16 bytes em quatro linhas, ento cada linha (ou cada bloco) tem quatro bytes de tamanho, ou seja, a MP tem (64/4=16) blocos. Note as propores que sempre se mantm, MP = 64 bytes, cache = 16 bytes, a MP 4 vezes maior que a cache, a MP tem 4 vezes mais blocos que a cache.

O campo palavra (w) no endereo so os dois bits menos significativos (mais direita, destacados em negrito na listagem acima). Veja que, para cada bloco, esses campos se repetem 00,01,10,11. Esse campo representa a localizao de um endereo dentro de um bloco. Tambm chamamos esse campo de deslocamento.

O campo linha (r) no endereo so os dois bits centrais que indicam em qual linha da cache o conjunto pode ser mapeado. O ltimo campo, a tag (t) no endereo, so os dois bits mais significativos (mais esquerda), esse campo distingue as vrias possibilidades de blocos em uma linha especfica. Cada linha da cache deve armazenar um campo tag, a fim de informar qual bloco est presente no momento.

Note que a juno dos campos t+r no endereo forma o nmero do bloco correspondente na MP, por exemplo, o endereo 0b111011 est no bloco 0b1110 da memria. A figura 6.7 mostra um exemplo de uma memria de 224 palavras organizada em blocos de quatro palavras. O campo tag destacado em amarelo, e o campo linha, em azul. Voc pode deduzir que a cache contm 214 linhas de quatro palavras cada.

Figura 6.7 Exemplo de Organizao de Memria Principal com Blocos de 4 Bytes

O procedimento do controlador da cache com mapeamento direto mostrado na figura 6.8 e funciona da seguinte forma:

O endereo fornecido pelo processador dividido nos trs campos; A linha da cache localizada usando o campo r (1); O campo tag do endereo comparado com o campo tag armazenado na cache (2); Se o campo tag igual tag armazenada na linha da cache, ento um hit cache (3), e o processador acessa a palavra que est na cache usando o campo w;

Se o campo tag diferente da tag armazenada na linha da cache, ento um miss cache (4), nesse caso, o processador acessa a palavra da MP, e uma cpia do bloco copiado da MP para a cache.

Figura 6.8 Acesso Memria Cache com Mapeamento Direto

Vamos pegar outro exemplo, um computador com:

Uma MP de 1MByte Uma cache de 1K-linhas Linhas de 8 bytes cada uma

Tem o seguinte formato de endereo:

20 bits de comprimento (220 = 1Mega) Campo w = (log2 8) = 3bits menos significativos Campo r = (log2 1K) = 10bits intermedirios Campo t = (20 10 3) = 7bits mais significativos

Em qual linha da cache pode ser mapeado o endereo de memria 0xABCDE?

Para responder a essa pergunta, divida o endereo nos campos t+r+w. Para fazer isso mais prtico, transformar o endereo em binrio; ento temos:

0b1010.1011.1100.1101.1110. Agora s dividir os campos:

w = 0b110 = 0x6

r = 0b11.1001.1011 = 0x39B

t = 0b101.0101 = 0x55

O controlador de cache vai verificar se na linha 0x39B o campo tag igual a 0x55. Se sim: hit cache; se no: miss cache.

Mapeamento Associativo
O inconveniente do mapeamento direto que um bloco s pode ser mapeado em uma linha especfica. Sendo assim, se um programa precisa acessar o bloco 0 e o bloco C vrias vezes seguidas, ocorrer vrios miss caches seguidos, pois esses dois blocos so mapeados na mesma linha. Uma soluo para este problema o mapeamento associativo.

No mapeamento associativo, um bloco da memria pode ser mapeado em qualquer linha da cache. A figura 6.9 ilustra esse mapeamento.

Figura 6.9 Acesso Memria Cache com Mapeamento Associativo

Nesse caso, como um bloco pode estar em qualquer linha, quando o processador gera um endereo, o controlador da cache deve testar o campo tag do endereo com todas as tags armazenadas na cache. Sendo assim, no endereo de memria no constar o campo linha (r), o endereo formado apenas por dois campos, a tag (t) e o nmero da palavra (w) conforme a figura 6.10:

Figura 6.10 Formato de Endereo de Memria Principal com Mapeamento Associativo

O circuito controlador ser mais complexo, j que precisa comparar vrias tags simultaneamente. Tomando como exemplo o mesmo computador usado no

mapeamento direto, temos:

MP de 1MByte, Cache de 1K-linhas, linhas de 8 bytes cada uma Campo w = (log2 8) = 3bits Campo t = (20 3) = 17bits

Temos ento os campos do endereo 0xABCDE (0b1010.1011.1100.1101.1110):

w = 0b110 = 0x6

t = 0b1.0101.0111.1001.1011 = 0x1579B

O controlador de cache vai verificar se alguma linha contm o campo tag igual a 0x1579B. Se sim: hit cache; se no: miss cache.

Mapeamento Associativo por Conjunto


H vantagens e desvantagens nos dois mapeamentos vistos anteriormente. No mapeamento direto, voc tem um circuito simples, mas com o inconveniente de mapear vrios blocos em uma linha especfica; no mapeamento associativo, voc tem uma flexibilidade maior nas possibilidades de mapeamento, porm com um custo alto na parte de controle da cache, pois quanto maior a cache, mais linha ela ter e, conseqentemente, a checagem de hit/miss cache ser mais complexa. A soluo para esses problemas a juno dos dois mapeamentos em um terceiro tipo, o mapeamento associativo por conjunto.

No mapeamento associativo por conjunto, a memria cache dividida em S conjuntos, cada qual com V linhas. A quantidade de linhas por conjunto chamada de caminho (way). As caches associativas por conjunto geralmente tm de 2, 4 ou 8 caminhos, ento se diz caches 2-ways, 4-ways ou 8-ways.

A figura 6.11 mostra o esquema de acesso a esse tipo de cache:

O endereo fornecido pelo processador dividido em trs campos: tag t, conjunto s e palavra w; O conjunto da cache localizado usando o campo s (1); O campo tag do endereo comparado com os campos tags armazenados na cache (2);

Se o campo tag igual tag armazenada na linha da cache, ento um hit cache (3), e o processador acessa a palavra que est na cache, usando o campo w. Note que, em uma cache X-way, apenas uma das X linhas do conjunto ter o bloco solicitado, ento s ocorre hit-cache em um dos caminhos;

Se o campo tag diferente de todas as tags armazenadas no conjunto da cache, ento um miss cache (4/5); nesse caso, o processador acessa a palavra da MP e uma cpia do bloco copiado da MP para uma das linhas do conjunto da cache.

Figura 6.11 - Acesso Memria Cache com Mapeamento Associativo por Conjunto 2-way

Nesse tipo de cache, um endereo de memria dividido em trs campos (conforme a figura 6.12), assim como no mapeamento direto, mas o campo central o nmero do conjunto ao invs do nmero da linha.

Figura 6.12 Formato de Endereo de Memria Principal com Mapeamento Associativo por Conjunto

Vamos ver um exemplo de uma cache associativa por conjunto 4-way. Tomando o mesmo exemplo visto anteriormente, temos:

MP de 1MByte, cache de 1K-linhas, linhas de 8 bytes cada uma, 4-way Neste caso, a cache tem 8KB (1K-linhas x 8Bytes) divididos em 4 caminhos; ento cada caminho tem 2KB (256 linhas x 8Bytes), sendo assim, a cache tem 256 conjuntos.

Campo w = (log2 8) = 3bits Campo s = (log2 256) = 8 bits Campo t = (20 3 8) = 17bits

Em qual linha da cache pode ser mapeado o endereo de memria 0xABCDE?

Novamente, dividindo o endereo nos campos temos:

w = 0b110 = 0x6

s = 0b1001.1011 = 0x9B

t = 0b1.0101.0111 = 0x157

O controlador de cache vai verificar se no conjunto 0x9B tem alguma linha cujo campo tag seja igual a 0x157. Se sim: hit cache; se no: miss cache.

Polticas de Substituio em Cache


O processador precisa escrever constantemente na memria, o fato que, como a cache contm apenas uma parte da memria principal, h uma hora que as informaes que so gravadas na cache devem ser gravadas na memria principal para que seja mantida a consistncia dos dados na memria. A escrita dos dados na memria principal pode ocorrer em dois momentos; dependendo do tipo de cache usado, a escrita pode ser no momento em que o dado escrito na cache (write back) ou ento no momento em que a linha na cache substituda por outro bloco da memria (write through).

A figura 6.13 mostra o funcionamento da cache write back: 1. O processador faz uma solicitao de escrita no bloco N, que ser mapeado na linha R da cache, o que gera o miss cache; 2. O bloco N levado da MP para a linha R na cache; 3. feita a primeira escrita na cache; 4. O processador solicita nova escrita no bloco N, como este j est na cache, feita a segunda escrita na cache sem necessidade de acesso MP; 5. O processador faz nova solicitao de escrita, agora no bloco N+C, que ser mapeado na mesma linha R da cache, o que gera o miss cache; 6. O bloco N atualizado com o valor correto da linha R antes de... 7. Levar o bloco N+C da MP para a linha R na cache; e 8. feita a escrita na cache.

Figura 6.13 Operao da Cache Write Back

A figura 6.14 mostra o funcionamento da cache write through: 1. O processador faz uma solicitao de escrita no bloco N, que ser mapeado na linha R da cache, o que gera o miss cache; 2. O bloco N levado da MP para a linha R na cache; 3. feita a primeira escrita na cache; 4. O bloco N atualizado com o valor correto da linha R; 5. O processador solicita nova escrita no bloco N, como este j est na cache, feita a segunda escrita na cach, mas tambm... 6. O bloco N atualizado com o valor correto da linha R; 7. O processador faz nova solicitao de escrita, agora no bloco N+C, que ser mapeando na mesma linha R da cache, o que gera o miss cache; 8. O bloco N+C levado da MP para a linha R na cache; 9. feita a escrita na cache; e 10. O bloco N+C atualizado com o valor correto da linha R.

Figura 6.14 Operao da Cache Write Through

Esta aula concluiu o contedo sobre as formas de armazenamento das informaes que comeamos com a memria principal. Nas prximas aulas, veremos como essas informaes interagem com os sistemas de E/S.

Aplicando o Conhecimento

Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 07 - Dispositivos E/S e Sistemas de Interconexo


A memria armazena dados e programas, o processador executa esses programas, mas sem uma forma de entrar com os dados no programa ou de receber os resultados desses programas no faria sentido existir o computador.

Nesta aula, veremos quais os meios de alimentar (entrada) com dados e receber (sada) resultados de processamento, bem como a forma de conexo entre os diversos componentes do sistema.

Barramentos de Entrada e Sada (E/S)


Barramentos so as vias por onde trafegam as informaes entre o processador, a memria e os dispositivos de E/S. Existem vrios tipos de barramentos, alguns mais rpidos, outros mais lentos, dependendo do uso que ser dado a ele.

Os barramentos geralmente tm entre 50 e 100 linhas paralelas. So divididos em trs classes: 1. Barramento de endereo: por onde trafega o endereo acessado; esse endereo pode ser da memria ou de algum dispositivo de E/S; quem gera esse endereo geralmente o processador, mas h casos em que um dispositivo de E/S pode gerar um endereo; 2. Barramento de dados: por onde trafegam os dados acessados; 3. Barramento de controle: so as linhas que controlam tanto o fluxo de informaes entre os componentes quanto o funcionamento desses componentes; a forma que o processador tem de comandar o restante dos componentes. Essas linhas de controle so tanto linhas de comando, por exemplo, atravs de uma linha que o processador diz memria que quer fazer uma leitura; como linhas de status, por exemplo, quando o disco avisa ao processador que j acabou de fazer uma transmisso para a memria. A idia do barramento fornecer uma via compartilhada entre os componentes. Assim, a mesma via que voc usa para transmitir uma informao da memria para o vdeo, ser usada para enviar um dado do disco para a memria. Como os barramentos so compartilhados, deve haver um mecanismo de arbitragem para determinar quem e quando pode acessar o barramento, geralmente h um circuito que controla o acesso ao barramento. A figura 7.1 mostra uma organizao tpica de barramentos.

Figura 7.1 Configurao tpica de Barramento

Alm dos barramentos listados acima, temos tambm os barramentos de expanso para conectarmos uma grande variedade de perifricos. Esses barramentos variam em velocidade, em funo dos dispositivos conectados, sendo, ento, configurados de forma hierrquica, com os dispositivos mais rpidos conectados nos barramento mais rpidos, e os mais lentos conectados nos barramentos mais lentos. Um exemplo o barramento AGP, que um barramento para placas de vdeo que chegava a atingir uma taxa de 2133 Mbytes/s na sua verso 8X, enquanto outros dispositivos no demandam tanta largura de banda, como por exemplo, as portas seriais.

Larguras dos Barramentos


As larguras dos barramentos (em bits) de dados e de endereos esto relacionadas a caractersticas de desempenho do sistema. A largura do barramento de dados determina a quantidade de dados que podem ser lidas ou escritas ao mesmo tempo entre os componentes do sistema; j a largura do barramento de endereo determina qual o espao de endereamento mximo da memria e/ou dispositivos de E/S. Vejamos alguns exemplos de larguras de barramentos: Processador Largura do Barramento de Dados 8086 Pentium 4 16 bits 64 bits Largura do Barramento de Endereo 20 bits 32 bits

Dispositivos de E/S

So exemplos de dispositivos de E/S: o teclado, o mouse, o monitor, os discos, e uma infinidade de outros que podem ser conectados ao computador (cmeras, pendrive, etc.). Cada um desses dispositivos tem caractersticas diferentes, tais como a velocidade de acesso, a quantidade de dados transmitida e o formato dos dados. Uma coisa que todos eles tm em comum o fato de serem mais lentos do que o processador e a memria.

Pense no seguinte: quando voc abre um documento em um editor de texto, o processador vai ler um arquivo que est no disco rgido e mostrar o seu contedo na tela; assim, o tempo de resposta do disco muito lento comparado velocidade com que trabalha o processador. Esse um dos motivos que obrigam os perifricos, que geralmente envolvem componentes eletromecnicos, a utilizarem um mdulo de interface com a memria e o processador.

Mdulos de Entrada e Sada


O mdulo de E/S um circuito eletrnico, algumas vezes na forma de uma placa controladora que faz a comunicao entre o(s) perifrico(s), ao qual est associada, e o barramento. As funes do mdulo de E/S so: 1. Controlar a temporizao: o controle do tempo necessrio por causa das diferenas entre a velocidade do dispositivo e a velocidade do barramento; 2. Comunicar com o dispositivo e o processador: qualquer informao trocada entre os dois passa pelo mdulo; 3. Armazenar dados temporrios: por exemplo, quando um dado lido do disco, byte a byte, forma-se um bloco maior que transferido de uma s vez para a memria; 4. Detectar erros: caso ocorra algum erro no perifrico, por exemplo, a retirada do disquete durante uma gravao, o processador avisado.

Interrupo
O processador no tem como prever quando uma solicitao de entrada gerada. Por exemplo, quando voc pressiona uma tecla, o processador deve responder

imediatamente a esse evento. A forma que o processador sabe desse, ou qualquer outro evento externo, atravs da interrupo. A controladora do dispositivo, nesse caso, a controladora do teclado, envia um sinal ao processador, atravs do barramento de controle, gerando uma interrupo do processador. Bom, nesse momento, provvel que o processador esteja executando algum programa que no

necessariamente tem algo a ver com a tecla que voc pressionou; ento, o processador

pra a execuo desse programa, salva algumas informaes dele na memria e verifica o que quer dizer a interrupo, passando a executar uma rotina relacionada interrupo que foi gerada. Aps executar essa rotina, o processador volta ao programa que estava executando antes da interrupo.

E/S Mapeada na Memria


O processador precisa ser capaz de enviar comandos para os dispositivos de E/S. Por exemplo, quando voc manda salvar o arquivo no disco, o processador pode usar endereos de memria pr-definidos para enviar os dados para o disco. Nesse caso, os endereos de memria no existem nos mdulos de memria, qualquer operao que o processador fizer nesses endereos ser direcionada para um dispositivo especfico. Essa uma forma de usar o barramento tanto para acessar uma clula de memria como para acessar um dispositivo de E/S. Por exemplo, um barramento de endereos de 32 bits pode acessar 232 = 4G palavras de memria desse espao de endereamento. O processador pode reservar uma faixa desta memria, por exemplo, os primeiros 64K para os endereos de E/S, ento qualquer acesso que encaminhado para essa faixa de endereo ir para um dispositivo de E/S que foi previamente ajustado para esse(s) endereo(s).

Outra forma de referenciar um dispositivo atravs de identificadores dos dispositivos. Nesse caso, cada dispositivo recebe um nmero, conhecido como porta. Como o nmero da porta pode ser confundido com um endereo de memria, ento deve haver uma linha no barramento de controle que diz se o nmero que est no barramento de endereo um endereo de memria ou uma porta de E/S.

Acesso Direto Memria


A transferncia de dados entre os dispositivos de armazenamento em massa (discos) e a memria feita em blocos de palavras. Se o processador for controlar essa transferncia, precisar pegar cada palavra que lida do disco para enviar para a memria. Como a velocidade do disco muito menor do que a do processador, ele ficar dedicado a essa transferncia, no realizando nenhum outro processamento. Uma soluo para esse problema delegar a transmisso dos dados entre o disco e a memria para o mdulo do dispositivo (controladora).

Quando o processador executa uma operao de carga de blocos do disco na memria, ele envia para a controladora os dados referentes operao, como o endereo inicial no disco, o endereo inicial na memria e a quantidade de blocos a serem transferidos. Da em diante, a controladora que faz toda a transmisso. Enquanto isso, o

processador pode realizar outras tarefas. Quando a transmisso concluda, a controladora interrompe o processador. Agora, o programa que solicitou a carga do disco para a memria pode acessar os dados.

Discos
O desempenho do sistema, um dos principais dispositivos de E/S, fortemente dependente da taxa de transmisso dos discos. Como a taxa de transmisso de um disco geralmente menor do que a taxa de transmisso do barramento, possvel conectar vrios discos em uma controladora. Por exemplo, uma controladora Ultra320 SCSI que tem a capacidade de transmisso de 320 MBytes/s pode perfeitamente controlar vrios discos que, por exemplo, atingem 40 MBytes/s.

Organizao Fsica dos Discos


Um disco rgido (figura 7.2) constitudo de vrios pratos nos quais os dados so gravados. Cada prato tem um par de cabeotes de leitura/escrita. Os dados so organizados em trilhas (anis concntricos) e setores (partes de um anel); cada setor contm a mesma quantidade de dados, 512 bytes. Quando um dado lido do disco, no pode ser lido menos do que um setor. Sendo assim, os arquivos so organizados em mltiplos setores. Para determinar a capacidade de armazenamento em um disco, basta saber essas informaes: tamanho do setor (quantidade de bytes), nmero de cabeotes, nmero de cilindros e de setores por trilha. Por exemplo, um disco de 10 cabeotes, 2048 trilhas por superfcie, 1.024 setores/trilha e setores de 512 bytes tem:

512 bytes x 1.024 = 0,5 Mbyte/trilha;

0,5 MByte x 10 x 2.048 = 10 GBytes

Figura 7.2 Organizao de Disco Rgido

Vimos nesta aula os componentes que formam um sistema de E/S, os dispositivos de E/S, os mdulos controladores e as formas que o processador interage com esses dispositivos. Nas prximas aulas, estudaremos o processador, a fim de fecharmos o ciclo dos componentes do computador: computador = processador + memria + E/S.

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 08 - Processadores (Componentes Bsicos)


Nesta aula, retomaremos a antiga mquina de von Neumann, a IAS, que vimos no incio do curso, e faremos uma simulao de execuo de um programa, a fim de que voc tome contato com a estrutura de um computador. Faremos tambm, sempre que possvel, um paralelo das caractersticas do IAS com arquiteturas mais modernas.

Modelo de Programao
O modelo de programao obedece, salvo algumas excees, o seguinte fluxo: percepo do problema -> escrita do algoritmo -> programao em linguagem de alto nvel -> compilao do programa (gerao do programa em linguagem de mquina) -> carga do programa na memria -> execuo do programa. Os dois primeiros passos esto relacionados disciplina de algoritmos, os dois passos seguintes relacionados s disciplinas de linguagem e tcnica de programao, e os dois ltimos passos esto relacionados ao modo como o computador trata o programa, e esse ponto que nos interessa aqui.

Um programa para ser executado deve estar necessariamente carregado na memria, ou pelo menos a parte do programa que ser executada. Podemos encarar um programa como dois blocos distintos: as instrues e os dados (variveis), como mostrados no trecho de programa em linguagem C a seguir:

1 int main() { 2 int x, y; 3 scanf("%d",&x); 4 scanf("%d",&y); 5 x=x+y; 6 printf("%d\n",x); 7} A linha 2 a declarao das variveis (os dados) enquanto as linhas 3, 4, 5 e 6 so as instrues (o cdigo). Depois de carregado na memria, haver uma rea reservada para os dados e uma rea para as instrues do programa. Se pudssemos ver como ele fica na memria, veramos algo como na figura 8.1.

Figura 8.1 reas de Dados e Cdigo de um Programa na Memria

Um programa, para ser executado, deve estar em linguagem de mquina. Para isso, o programa em alto nvel deve ser convertido neste formato. Um programa em linguagem de mquina uma seqncia de bits (instrues) que manipula o hardware.

Um programa escrito em linguagem de montagem (assembly) no precisa do compilador, ao invs disso, usa um montador (assembler) que faz a montagem do programa gerando um cdigo executvel.

A relao de quantidade entre as instrues em linguagem de alto nvel e o cdigo executvel 1 para n, ou seja, uma instruo em linguagem de alto nvel gerar vrias instrues em linguagem de mquina. Ao passo que a relao entre as instrues em linguagem de montagem e o cdigo objeto 1 para 1, ou seja, uma instruo em

linguagem de montagem gerar uma instruo em linguagem de mquina. Esse fato torna a programao assembly mais prtica para quem quer programar em linguagem de mquina, j que o assembly uma forma mais fcil (humana) de representar um programa em linguagem de mquina. A figura 8.2 mostra essa relao.

Figura 8.2 Relao entre Linguagem de Alto Nvel, Assembly e Linguagem de Mquina

Computador IAS
O processador deve executar o programa em linguagem de mquina. Para tanto, ele deve ter uma srie de regras para que esses bits que formam a linguagem de mquina possam controlar o computador e gerar os resultados esperados. Por sua simplicidade, vamos usar a mquina de von Neumann para exemplificar um processador. Esses conceitos, porm, por sua simplicidade, valem para qualquer computador moderno, bastando respeitar as suas diferenas.

O IAS funcionava com instrues de apenas um operando no formato: operador operando. Os blocos do IAS (Figura 8.3) so:

Uma unidade de processamento central, para execuo de operaes lgicas e aritmticas; Uma unidade de controle de programa, para determinar a seqncia das instrues; Uma unidade de memria de 4096 palavras de 40 bits cada; e Uma unidade de entrada e sada.

Figura 8.3 Estrutura do IAS

Na figura 8.3 podem ser notados alguns registradores. Diferente de clulas de memria que so acessadas atravs do endereo, os registradores so acessados atravs de nomes (siglas). So eles: Registrador AC Observao Acumulador. um registrador de uso geral que pode ser usado para operaes lgicas e aritmticas. No caso dos processadores modernos, h vrios desses registradores, os processadores Pentium recebem os nomes EAX, EBX, ECX e EDX. MQ MAR Usado para receber o quociente nas operaes de multiplicao. Registrador de Endereamento da Memria (Memory Address Register). Esse registrador informa para a memria qual endereo o processador quer acessar. MBR Registrador de Dados Temporrios da Memria (Memory Buffer Register). Esse registrador recebe ou envia um dado da/para memria. PC Contador de Programa (Program Counter). Contm o endereo da prxima instruo que ser buscada da memria. IR Registrador de Instrues (Instruction Register). Contm o cdigo da instruo que est sendo executada. No processador Pentium, esse registrador recebe o nome de EIP. IBR Registrador Auxiliar usado em conjunto com o IR. um registrador

particular da arquitetura IAS, por isso, no comentaremos muito sobre ele. O formato das palavras de memria do IAS mostrado na figura 8.4:

Figura 8.4 Formato de Palavra do IAS

Todo computador, e isso se aplica desde o IAS at os computadores modernos, tem um conjunto restrito de instrues, esse conjunto delimita o que o processador pode ou no fazer. Por exemplo, em 1997, a Intel lanou o processador Pentium MMX que continha alm das instrues tradicionais dos Pentiums anteriores uma extenso de 57 novas operaes que visavam a explorao dos recursos multimdias do computador. H uma tendncia natural ao crescimento do conjunto de instrues dos processadores medida que novos modelos so lanados.

A princpio, o conjunto de instrues do IAS poderia ter at 256 instrues diferentes, j que o campo cdigo da operao tinha 8 bits, mas o seu conjunto formado por apenas 21 operaes diferentes, isso se deve ao fato do computador ser muito simples.

Linguagem Assembly
Vejamos como o IAS executa um programa pegando um exemplo simples. Esse programa somar dois valores que esto inicialmente nos endereos 100 e 101 da memria, e o resultado deve ser gravado no endereo 102. O nosso algoritmo fica assim: Algoritmo 1. AC <- M(100) 2. AC <- AC + M(101) 3. M(102) <- AC Linguagem de Mquina 0x01064 0x21065 0x05066 Assembly LOAD M(100) ADD M(101) STORE M(102)

Na linha 1, o acumulador recebe o contedo do endereo 100; na linha 2, o acumulador recebe a soma do acumulador com o contedo do endereo 101; na linha 3, o valor do acumulador gravado no endereo 102.

Este programa bem simples; ele implementa uma soma de duas variveis e coloca o resultado em uma terceira, como na instruo x=y+z; mas note que, no caso do IAS, foram necessrias trs operaes seqenciais para implementar uma instruo simples. Na verdade, essas trs operaes que ns vimos esto especificadas na forma de transferncia de informao. Na prtica, a programao no feita dessa forma, mas sim atravs da escrita do programa em uma linguagem de alto nvel, e depois a compilao, ou atravs da programao em assembly, e depois a montagem do programa.

Na listagem acima, temos trs formas de representao do mesmo programa. Observe os valores em linguagem de mquina 0x01064, 0x21065 e 0x05066; agora veja novamente o formato da instruo do IAS na figura 8.4; fazendo a distribuio dos bits nos dois campos da instruo temos os valores 01, 21 e 05, nos campos cdigo da operao, e os valores 064, 065 e 066, nos campos endereo. Voc consegue imaginar o que significam esses cdigos 01, 21 e 05? O cdigo 01 diz para o processador ler um valor na memria e armazenar no acumulador, o cdigo 21 diz para somar um valor da memria com o acumulador, e o cdigo 05 diz para gravar o valor do acumulador em um endereo da memria. Assim ficou fcil! E os valores 064, 065 e 066? Uma dica: converta esses valores de hexadecimal para decimal.

Obviamente, a forma em linguagem de mquina no a mais prazerosa de se programar, a forma de algoritmo no d para implementar no computador; ento, na prtica, a forma menos difcil a programao assembly. Note que no programa em assembly ns usamos instrues (em ingls) que so fceis de lembrar o significado, como por exemplo, ADD associamos adio, LOAD associamos carga, etc. Por isso chamamos esses termos de mnemnicos.

Tipos de Instrues
Os tipos de instrues que invariavelmente qualquer computador realiza so:

Instrues de transferncia de dados faz com que o processador copie dados de um local para outro: da memria para o acumulador, do acumulador para a memria ou de um registrador para outro. Aqui cabe uma observao: geralmente uma instruo no transfere um valor de um ponto da memria para outro ponto da memria. Se voc quiser fazer isso deve copiar da memria para o acumulador e depois do acumulador para outro ponto da memria.

Instrues de desvios esse tipo de instruo permite ao processador alterar o fluxo seqencial do programa. Por exemplo, voc pode querer testar se determinado valor da memria diferente do acumulador. Se for, deve executar

um trecho especfico do programa, seno, deve executar outro trecho. Para ir de um ponto a outro, que no seja seqencial dentro do programa, voc deve usar instrues de desvios.

Instrues lgicas aritmticas so instrues que envolvem clculos matemticos entre os valores manipulados pelo programa. Essas instrues so executadas na ULA (Unidade Lgica Aritmtica), que um circuito especfico para essas operaes. Aqueles clculos que fizemos na aula 4 so todos realizados nessa unidade.

Instrues de controle do processador essas instrues tm diversas finalidades, como por exemplo, fazer com que o processador termine o programa.

Quantidade de Operandos
O conjunto de instrues do IAS s tem instrues de um operando. Na realidade, porm, ele usa sempre dois operandos. Mas como o segundo sempre o acumulador, este no precisa ser especificado. Nos computadores atuais h mais de um acumulador, portanto, desejvel que se tenha instrues de mais de um operando. Atualmente, h conjuntos de instrues com dois e at trs operandos, sendo que esta quantidade de operandos pode ser malevel. Os processadores Pentium, por exemplo, tm a maioria das instrues de dois operandos, enquanto outras arquiteturas, Workstations, por exemplo, tendem a ter instrues de trs operandos. Os formatos dessas instrues so:

Dois operandos:

Mnemnico operando1, operando2 Exemplo: ADD EAX, EBX Essa operao equivale a: EAX = EAX + EBX Mnemnico operando1, operando2, operando3 Exemplo: ADD r1, r2, r3 Essa operao equivale a: r1 = r2 + r3

Trs operandos:

Os programas com instrues de trs operandos tendem a ser menores do que os seus equivalentes com dois operandos. Veja o exemplo que implementa a operao:

r1 = r2 + r3 r4 2 operandos LOAD r1, r2 3 operandos ADD r1, r2, r3

ADD r1, r3 SUB r1, r4

SUB r1, r1, r4

Ciclo de Instruo
Vamos pegar novamente o exemplo do trecho de programa do IAS e verificar os passos que devem ser seguidos para a execuo na arquitetura da figura 8.3. O trecho de programa :

0x01064 -> LOAD M(100)

0x21065 -> ADD M(101)

0x05066 -> STORE M(102)

Lembre-se de que as instrues em linguagem de mquina esto carregadas na memria, e cada palavra de memria no IAS comporta duas instrues. A figura 8.5 mostra uma possvel configurao inicial do IAS com esse programa.

Figura 8.5 IAS com o programa exemplo (valores iniciais)

Repare nos contedos de cada endereo: no endereo 0x000, temos as duas primeiras instrues, e no endereo 0x001, temos a terceira instruo junto com outra que no nos interessa, seria a quarta instruo na seqncia do programa. Nos endereos 0x64, 0x65 e 0x66, temos valores numricos quaisquer, novamente lembre-se de que 0x64 = 100.

Seguindo o modelo busca-executa instruo, o processador deve buscar a instruo que est na memria e execut-la, depois repetir o processo para as prximas instrues. Como o IAS tem duas instrues por palavra, s precisar fazer a busca duas vezes para pegar as trs instrues. Em computadores modernos, uma instruo pode estar distribuda em vrias palavras da memria, por exemplo, o processador Pentium tem instrues de vrios tamanhos que vo de 1 a 12 bytes.

Voltando ao IAS, o registrador PC contm inicialmente o endereo da primeira instruo. No caso 0x000, esse endereo transmitido para o MAR, a fim de se fazer o acesso memria, conforme mostra a figura 8.6:

MAR <- PC

Figura 8.6 - MAR <- PC

Aqui cabe mais uma observao: qualquer acesso memria deve ser feito via MAR e MBR.

Nesse ponto, MAR=0x000. Depois desse primeiro passo, feito a leitura do endereo apontado por MAR. Essa leitura resulta na gravao do contedo do endereo 0x000 no registrador MBR. Simultaneamente a essa leitura, feita a atualizao do registrador PC, a ele somado +1, a fim de que possa apontar para o prximo par de instrues. Resumindo esse segundo passo temos, conforme a figura 8.7:

MBR <- M(MAR); PC <- PC+1

Figura 8.7 - MBR <- M(MAR); PC <- PC+1

Nesse ponto MBR=0x01064.21065 e PC=0x001. O terceiro passo colocar a instruo no registrador IR para que ela seja executada. Como temos as duas primeiras instrues no MBR, copiamos apenas os primeiros 8 bits correspondentes primeira instruo, os 20 bits da segunda metade de MBR so colocados no IBR, que um registrador auxiliar que serve para armazenar a segunda instruo completa da palavra:

IR <- MBR(0:7); IBR <- MBR(20:39)

Figura 8.8 - IR <- MBR(0:7); IBR <- MBR(20:39)

Nesse ponto termina a busca da instruo. O valor de IR 0x01, e o de IBR 0x21065. Agora vem a execuo.

Para executar a instruo, o processador olha para os bits que esto no IR e faz a interpretao da instruo, nesse caso 0x01. Esse cdigo quer dizer pegue o

contedo do endereo especificado pelo campo operando da instruo e coloque no acumulador. Como o processador sabe o que quer dizer isso? Simples, ele tem uma lista de cdigos e os seus significados! Ento o processador est pronto para executar essa instruo, ele transfere os 12 bits corresponde ao campo operando do MBR para o MAR:

MAR <- MBR(8:19)

Figura 8.9 - MAR <- MBR(8:19)

Nesse ponto MAR=0x064. Depois feito uma nova leitura da memria, agora para buscar o valor que est no endereo 0x64, ou 100 se preferir. A leitura idntica a que vimos antes:

MBR <- M(MAR);

Figura 8.10 MBR <- M(MAR)

Aps esse passo, o valor de MBR 0x00000.00001.

Estamos quase acabando. Agora s falta gravar no acumulador o valor lido:

AC <- MBR;

Figura 8.11 AC <- MBR

Concluda a instruo, o contedo do acumulador AC ser 0x00000.00001.

Vamos fazer um resumo desta busca-execuo da primeira instruo:

1. MAR <- PC;

2. MBR <- M(MAR); PC <- PC+1;

3. IR <- MBR(0:7); IBR <- MBR(20:39);

4. MAR <- MBR(8:19);

5. MBR <- M(MAR);

6. AC <- MBR;

Os trs primeiros passos correspondem ao ciclo de busca, e os trs ltimos ao ciclo de execuo. Cada um desses seis passos realizado em um pulso de clock do processador. Cada passo uma microoperao. Ento, quando dizemos que um processador tem uma freqncia de 1MHz, quer dizer que ele pode fazer 1.000.000 de microoperaes por segundo. Se cada instruo em linguagem de mquina toma seis microoperaes, ento em um segundo esse processador capaz de executar aproximadamente 167 mil instrues. Na prtica, dependendo da complexidade da instruo, o processador pode demorar mais ou menos nos ciclos de clock para executar uma instruo.

A propsito, as microoperaes correspondentes das duas instrues seguintes do nosso programa so:

1. IR <- IBR(0:7); MAR <- IBR(8:19);

2. MBR <- M(MAR);

3. AC <- AC + MBR;

1. MAR <- PC;

2. MBR <- M(MAR); PC <- PC+1;

3. IR <- MBR(0:7); IBR <- MBR(20:39);

4. MAR <- MBR(8:19);

5. MBR <- AC;

6. M(MAR) <- MBR;

Fica como exerccio para voc, deduzir essas microoperaes que sero executadas para concluir o programa ;-)

Nesta aula, vimos a organizao de um computador simples, o IAS, para entender as unidades funcionais de um processador e como um programa executado nesse computador. Fizemos algumas correlaes com processadores mais modernos para voc ter uma idia mais clara de como os vrios tipos de computadores atuais funcionam. Na prxima aula, veremos um pouco mais desses detalhes, enfocando tecnologias que no faziam parte desses processadores mais antigos como o IAS. At a prxima!

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Aula 9 Processadores: Paralelizao


Na aula anterior, vimos o funcionamento de um computador simples, onde as instrues so executadas seqencialmente, e apenas uma de cada vez. Hoje no existem mais computadores que trabalham de uma forma to simples assim, pois se usam vrias tcnicas para acelerar a execuo dos programas. Nesta aula, veremos algumas dessas tcnicas.

Pipeline
Vamos retomar o programinha da ltima aula, reescrevendo-o de forma mais simplificada:

Instruo 1 - LOAD M(100)

Instruo 2 - ADD M(101)

Instruo 3 - STORE M(102)

Na figura 9.1 vemos os ciclos necessrios para executar as trs operaes, sendo 15 ciclos no total. Nessa figura, os ciclos gastos na busca de instruo so mostrados em vermelho e os ciclos gastos na execuo de instruo so mostrados em amarelo.

Figura 9.1 Tempo de Execuo de Instrues (em Ciclos)

Se separarmos o processador em duas unidades semi-independentes que tenham funes especficas durante o ciclo de instruo, como mostra a figura 9.2, podemos separar as atividades dessas unidades e fazer com que elas trabalhem ao mesmo tempo.

Figura 9.2 Unidades de Busca e Execuo de um Processador

Quando o estgio de execuo estiver efetuando uma instruo, o estgio de busca estar buscando a instruo seguinte. Nesse caso, os ciclos necessrios para concluir as trs instrues so mostrados na figura 9.3.

Figura 9.3 Tempo de Execuo de Instrues (em Ciclos) com Pipeline

Esse mecanismo que acabamos de ver conhecido como pipeline. Construmos aqui um pipeline de 2 estgios; veja que ele ainda no est perfeito, pois existem folgas de tempo entre uma unidade e outra e entre o final da busca e o incio da execuo da instruo 2 (destacado em preto). Em um pipeline, o que determina o tempo (em ciclos de clock) de cada estgio o tempo do pior estgio.

No exemplo acima os tempos no so bem definidos. Primeiro precisamos conhecer todo o conjunto de instrues do processador para analisar qual instruo demorar mais. Vamos supor que possamos agilizar o processo de busca da instruo para apenas um ciclo de clock. Os processadores modernos tentam esse objetivo e, nesse caso, o

gargalo passa a ser o estgio de execuo. Durante a execuo, voc pode notar atividades bem distintas, como buscar um operando, fazer um clculo e depois armazenar o resultado. Podemos ento dividir a execuo em vrios estgios. Essa subdiviso de estgios faz com que o tempo de todos os estgios diminua. Uma configurao de estgios de pipeline tpica mostrada na figura 9.4:

Figura 9.4 Pipeline Tpico

Dependendo do processador, pode haver mais estgios, enumerados a seguir:

Pentium - 5 estgios; Pentium 3 - 10 estgios; Pentium 4 - 20 estgios; Modelos mais novos - 31 estgios.

Para determinar o ganho mdio de desempenho (speedup) na utilizao do pipeline, dividimos o tempo que se leva pra executar um programa, sem pipeline, pelo tempo que se leva para executar o mesmo programa, com pipeline. A frmula a seguinte:

Sk = n.k / (k + n 1)

Onde:

Sk o speedup,

k o nmero de estgios do pipeline e

n o nmero de instrues do programa.

Compare os desempenhos do exemplo a seguir, com e sem pipeline:

Execuo de cinco instrues sem pipeline:

Figura 9.5 Execuo sem Pipeline

Execuo das cinco instrues com pipeline de quatro estgios:

Figura 9.6 - Execuo com Pipeline

Aplicando na frmula do speedup temos:

S4 = 5 x 4 / (4 + 5 1) = 20 / 8 = 2,5; o tempo gasto com uso do pipeline corresponde a 40% do tempo sem o pipeline.

Note que o ganho de performance est diretamente relacionado com a quantidade de instrues. Se voc analisar com poucas instrues, o ganho pouco; mas, se analisar com muitas instrues, ser muito. Veja o exemplo:

S4 = 1000 x 4 / (4 + 1000 1) = 4000 / 1003 = ~ 3,99; o tempo gasto com uso do pipeline corresponde a 25% do tempo sem o pipeline.

A m notcia que nem sempre os programas se comportam de uma forma to simtrica como retratam os desenhos acima. s vezes, um valor que gerado no ltimo estgio de uma instruo deve estar disponvel no incio de um dos primeiros estgios da prxima instruo. Nesse caso, o pipeline dever ser esperto o suficiente para atrasar alguns estgios. Outra situao complicada quando o programa executa uma instruo de desvio; ento, as instrues seguintes no devem ser carregadas no pipeline, mas ele s descobrir isso l na frente; da, as instrues seguintes devem ser

descartadas. Ocorre que o pipeline consegue resolver esses problemas, mas h uma pequena perda na performance.

Processador Superescalar
Outra forma de acelerar o desempenho dos processadores aumentar o nmero de pipelines. Processadores que possuem mais de um pipeline so chamados de superescalares; ento, a cada ciclo de clock, duas instrues sero buscadas, ao invs de uma, duas instrues sero decodificadas, ao invs de uma, e assim por diante. O modelo de execuo com um processador superescalar de dois pipelines ficaria assim:

Figura 9.7 Execuo Superescalar

Praticamente todos os processadores atuais so superescalares. O processador Pentium originalmente tinha dois pipelines, o Pipe U e o Pipe V. O Pentium 4 tem, teoricamente, a capacidade de executar at 8 instrues em paralelo, mas isso depende muito das instrues que so executadas. Em alguns casos, um recurso que usado por uma instruo pode ser necessrio para outra instruo.

Paralelismo em Nvel de Programas


Esses modelos de execuo paralelizam o programa, ou seja, permitem que vrias instrues do programa sejam executadas ao mesmo tempo. Mas o que ns temos hoje um ambiente onde vrios programas so executados ao mesmo tempo no computador, sendo, por vezes, at mesmo de usurios diferentes. Ento, uma tendncia atual o paralelismo de vrios programas simultneos, e no apenas vrias instrues.

Existem duas variaes desse mtodo. A primeira, consiste em colocar em uma mesma placa-me dois ou mais processadores (multiprocessador). Nesse caso, os programas so distribudos entre os processadores; como se fossem dois (ou mais)

computadores independentes, mas que compartilham os mesmos recursos, memria e dispositivos de E/S. A outra variao colocar dentro de um processador dois ncleos (cores) que funcionam como processadores independentes. Esses cores compartilham

partes dos recursos internos do processador (como cache, por exemplo), mas mantm outros recursos independentes (registradores). A Intel lanou em 2001 o processador Xeon, que vinha com dois ncleos. De l para c, tem sido uma constncia lanar cada vez mais ncleos em um processador. Recentemente, a Intel demonstrou um processador com 80 ncleos.

Esta aula foi o desfecho da Unidade de Estudo: Arquitetura de Computadores. Nela, vimos algumas tcnicas para acelerar a execuo de programas no apenas no nvel de instrues, mas tambm de programas.

Aplicando o Conhecimento
Antes de finalizar o estudo desta aula, avalie sua aprendizagem realizando as atividades na plataforma de ensino.

Referncias
TANENBAUM, Andrew S. Organizao estruturada de computadores. 5. ed. Pearson Education do Brasil, 2007.

STALLINGS, Willian. Computer organization and architecture. 6nd. ed. 2005.

MONTEIRO, Mrio A. Introduo organizao de computadores. 4. ed. 2001.

CARTER, N. Teoria e problemas de arquitetura de computadores. Coleo Schaum, Ed. Bookman, 2002.

WEBER, R. F. Fundamentos de arquitetura de computadores. 1. ed. Ed. Sagra Luzzatto, 2000.

______. Arquitetura de computadores pessoais. 2. ed. Ed. Sagra Luzzatto, 2001.

Glossrio
A
Assembler tambm chamado de montador; o programa que faz a montagem do programa escrito em assembly, ou seja, traduz o programa de linguagem assembly para a linguagem de mquina.

Assembly tambm chamada de linguagem de montagem; uma linguagem que torna a compreenso de programas em linguagem de mquina mais fcil, usando instrues com mnemnicos ao invs de instrues em cdigo binrio.

C
Carry transporte de um bit nas operaes de soma. Esse bit usado como parcela na soma da coluna esquerda.

Circuito Integrado (CI) um circuito eletrnico, tambm chamado de chip, formado por componentes eletrnicos como, por exemplo, transistores. Encapsulado em uma pastilha de cermica, utilizado na fabricao de placas eletrnicas, como por exemplo, a placa-me e tambm o prprio processador.

Controlador de memria circuito eletrnico que faz o controle do acesso memria. Fica embutido no mdulo da memria.

D
Decodificador (ou decod) circuito digital que tem como finalidade a decodificao de cdigo recebido na entrada. Em funo deste cdigo, uma das sadas selecionada. Por exemplo, um decodificador 4 para 16 tem como entrada um cdigo de 4 bits e, em funo deste cdigo, uma das 16 sadas selecionada.

L
Largura de Banda quantidade de dados (bits ou bytes) que so transmitidos em um perodo de tempo. Por exemplo, uma rede Ethernet tem uma largura de banda de 100 Mbits/s, ou seja, em um segundo capaz de transmitir 100.000.000 de bits.

M
Microcomputador computador de pequeno porte que, a princpio, atende a um nico usurio; so mais baratos e conseqentemente mais populares.

Minicomputador computador de mdio porte que dominou o mercado durante as dcadas de 1960 e 1970. Hoje foram substitudos pelos servidores.

Mnemnico cdigo de algumas letras que identifica um cdigo especfico de linguagem de mquina de uma forma mais fcil de ser lembrada; por exemplo, o

mnemnico ADD mais fcil de saber que uma soma do que o cdigo 0100011001010.

Mdulo em computao, mdulo o resto da diviso, por exemplo, 20 mdulo 6 igual a 2.

Multiplexador (ou Mux) circuito digital que tem como finalidade a seleo de uma das entradas. Esse circuito envia para a sada do circuito a entrada que for selecionada. Por exemplo, um Mux de 8 entradas recebe oito valores de entrada, seleciona um deles e envia para a sada. Para selecionar uma das 8 entradas, deve haver 3 linhas seletoras (3 bits).

N
ns (nanosegundo) frao de segundo equivalente a 10-9 segundos, ou 0,000000001 segundos.

S
Slot conexo entre um componente eletrnico (geralmente um perifrico) e o barramento da placa-me do computador.

Speedup ganho de desempenho ao aplicar uma tcnica computacional na execuo de um programa. obtido pela frmula Sp = T1 / T2, onde T1 o tempo de execuo do programa sem a tcnica e T2 o tempo de execuo do mesmo programa com a tcnica.

Supercomputador computador de grande porte que surgiu nos primrdios da computao digital. Geralmente so usados para processamento pesado.

You might also like