Professional Documents
Culture Documents
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
Pr-histria dos computadores Primeira gerao vlvulas Segunda gerao transistores Terceira gerao circuitos integrados
Sistema Numrico
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
Nmeros Negativos
Overflow
Uso da localidade Mapeamento direto Mapeamento associativo Mapeamento associativo por conjunto Polticas de substituio em cache
Dispositivos de E/S Mdulos de entrada e sada Interrupo E/S mapeada na memria Acesso direto memria Discos
Ciclo de instruo
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?
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.
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.
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.
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.
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
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:
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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
N = 10 x 256 + 11 x 16 + 0 x 1
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
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 [ \ ] ^ _
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).
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.
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.
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
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
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.
Vamos passar agora para os nmeros binrios; mais uma vez, as regrinhas:
00=0
10=1
11=0
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
10 11 12 13 14 15
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
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.
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 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.
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:
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
...
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.
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.
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
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:
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.
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:
O circuito controlador ser mais complexo, j que precisa comparar vrias tags simultaneamente. Tomando como exemplo o mesmo computador usado no
MP de 1MByte, Cache de 1K-linhas, linhas de 8 bytes cada uma Campo w = (log2 8) = 3bits Campo t = (20 3) = 17bits
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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:
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 :
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.
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
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:
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:
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:
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:
AC <- MBR;
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:
3. AC <- AC + 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.
Pipeline
Vamos retomar o programinha da ltima aula, reescrevendo-o de forma mais simplificada:
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.
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.
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.
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:
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,
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:
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.
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.
CARTER, N. Teoria e problemas de arquitetura de computadores. Coleo Schaum, Ed. Bookman, 2002.
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.
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.