Sei sulla pagina 1di 162

Unidades Bsicas de um computador

Um computador digital consiste em um sistema interconectado de processadores, memrias, e dispositivos de entrada/sada. Processadores, memrias, e dispositivos de entrada/sada so conceitos fundamentais em computao.

Subsistemas de Memria
A memria a parte do computador onde so armazenados programas e dados. Alguns cientistas da computao usam o termo armazm ou armazenagem em vez de memria. Sem uma memria da qual os processador possam ler e na qual possam gravar ou escrever informaes, no haveria computadores digitais com programas armazenados. A unidade bsica de memria o digito binrio, denominado bit. Um bit pode conter um valor 0 ou um 1. a unidade mais simples possvel. Um dispositivo capaz de armazenar somente zeros dificilmente poderia formar a base de um sistema de memria; so necessrios ao menos dois valores. O computador usa aritmtica binria pois as informaes digitais podem ser armazenadas distinguido entre valores diferentes de alguma quantidade fsica contnua, tal como tenso ou corrente eltrica. Quanto maior for o nmero de valores que precisam ser distinguidos, menores sero as separaes entre valores adjacentes e menos confivel ser a memria. O sistema numrico binrio requer a distino entre apenas dois valores. Por consequncia, o mtodo mais confivel para codificar informaes digitais. H empresas que anunciam que seus computadores tm aritmtica decimal, bem como binria, como o caso da IBM e seus grandes mainframes. Essa faanha realizada usando-se 4 bits para armazenar um dgito decimal que utiliza um cdigo denominado BCD (Binary Coded Decimal cdigo decimal codificado em binrio). O nmero 1944 mostrado a seguir codificado em formato decimal e em formato binrio puro, usando 16 bits em cada exemplo;

Memrias consistem em uma quantidade de clulas ou endereos, cada uma das quais podendo armazenar uma informao. Cada clula tem um nmero, denominado seu endereo, pelos quais os programas podem se referir a ela. Se a memria tiver n clulas, elas tero endereos de 0 a n-1. Todas as clulas em uma memria possuem o mesmo nmero de bits. Se uma clula consistir de k bits, ela pode conter quaisquer das 2k diferentes combinaes de bits. A figura 2.9 mostra trs organizaes diferentes para uma memria de 96 bits. Note que clulas adjacentes tm endereos consecutivos (por definio).

Computadores que usam o sistema de nmeros binrios expressam endereos de memria como nmeros binrios. Se um endereo tiver m bits, o nmero mximo de clulas endereveis 2m. Por exemplo, um endereo usado para referenciar a memria da figura 2.9(a) precisa de no mnimo 4 bits para expressar todos os nmeros de 0 a 11. Contudo, um endereo de 3 bits suficiente para as figuras 2.9(b) e (c). O nmero de bits no endereo determina o nmero mximo de clulas diretamente endereveis na memria e independente do nmero de bits por clula. Uma memria com 212 clulas de 8 bits cada e uma memria com 212 clulas de 64 bits cada precisam de endereos de 12 bits. A tabela 2.1 mostra o nmero de bits por clula para alguns computadores que j foram vendidos comercialmente.

A significncia da clula que ela a menor unidade enderevel. H poucos anos, praticamente todos os fabricantes de computadores padronizaram clulas de 8 bits, que denominada um byte. Bytes so agrupados em palavras. Um computador com uma palavra de 32 bits tem 4 bytes/palavra, enquanto um computador com uma palavra de 64 bits tem 8 bytes/palavra. A significncia de uma palavra que grande parte das instrues efetua operaes com palavras inteiras, por exemplo, adicionando duas palavras. Assim, uma maquina de 32 bits ter registradores 2

de 32 bits e instrues para manipular palavras de 32 bits, enquanto uma maquina de 64 bits ter registradores de 64 bits e instrues para movimentar, somar, subtrair e, em geral, manipular palavras de 64 bits. Ordenao de bytes: os bytes em uma palavra podem ser numerados da esquerda para a direita ou da direita para a esquerda. A princpio essa opo pode aparecer sem importncia mas ela tem implicaes. A figura 2.10(a) retrata parte da memria de um computador de 32 bits cujos bytes so numerados da esquerda para a direita, tal como os grandes mainframes da IBM. A figura 2.10(b) d uma representao anloga de um computador de 32 bits que usa uma numerao da direita para a esquerda, como a famlia Intel. O primeiro sistema, no qual a numerao comea na ordem grande, isto , na ordem alta, denominado computador big endian, ao contrrio do little endian da figura 2.10 (b). importante entender que tanto no sistema big endian, quanto no sistema little endian um inteiro de 32 bits com o valor numrico de, digamos, 6 representado pelos bits 110 no trs mais a direita (baixa ordem) de uma palavra e os zeros nos 29 bits da esquerda. No esquema big endian, os bits 110 esto no byte 3 (ou 7, ou 11, etc.), enquanto no esquema little endian eles esto no byte 0 (ou 4, ou 8, etc.). Em ambos os casos, a palavra que contm esses inteiros tem o endereo 0. Se os computadores somente armazenassem inteiros, no haveria nenhum problema. Contudo, muitas aplicaes requerem uma mistura de inteiros, cadeias de caracteres e outros tipos de dados.

Uma soluo que funciona, mais ineficiente, incluir um cabealho na frente de cada item de dado que informa o tipo de dado que vem a seguir e qual o seu comprimento. Isso permite que os destinatrios efetuem apenas as converses necessrias. De qualquer modo, preciso que fique claro que a falta de um padro para a ordenao de bytes um grande aborrecimento quando h troca de dados entre mquinas diferentes.

Operaes Realizadas em uma Memria Sabemos que uma memria dispositivo de armazenamento (depsito) de informaes. Quando se organiza um depsito, tem-se por objetivo permitir que elementos possam ser guardados (armazenados) de uma forma organizada que possibilite sua identificao e localizao, quando se deseja recuper-los (apanhar para uso). Pode-se, ento, realizar duas operaes distintas em uma memria. - guardar o elemento (armazenar): escrita ou gravao ou armazenamento (write ou record); e - retirar o elemento (recuperar): leitura ou recuperao (read ou retrieve). Ambas as operaes so possveis graas tcnica utilizada para identificar cada elemento (ou grupo de bits) por um nmero, seu endereo, que permite identifica o local de armazenamento (para escrita) ou de recuperao (para leitura). A operao de escrita naturalmente destrutiva, ou seja, ao armazenar-se um dado em uma clula o contedo anterior destrudo, visto que os bits que chegam so gravados por cima dos que estavam no local. O processo semelhante ao realizado para grava uma musica em uma fita cassete a msica que vai sendo gravada apaga a anterior. A figura 5.3 (a) mostra um exemplo de operao de escrita. A operao de leitura, cujo exemplo apresentado na figura 5.3 (b), no deve ser destrutiva. Ela , na realidade, uma ao de copiar um valor (dado ou informao) em outro local, permanecendo o mesmo valor no local de origem.

Hierarquia de Memria

H muitas memrias no computador, as quais se interligam de forma bem estruturada, constituindo um sistema em si, fazendo parte do sistema global de computao, que pode ser denominado subsistema de memria. Esse subsistema projetado de modo que seus componentes sejam organizados hierarquicamente, conforme mostrado na estrutura em forma de pirmide da figura 5.4. A pirmide em questo projetada com uma base larga, que simboliza a elevada capacidade, o tempo de uso e o custo do componente que a representa.

A variao crescente dos valores de certos parmetros que caracterizam um tipo de memria pode ser mostrada no formato inclinado de uma pirmide. A seguir so definidos os principais parmetros para anlise das caractersticas de cada tipo de memria componente da hierarquia apresentada na figura 5.4. O valor maior (base) ou menor (pico) de algum parmetro foi o motivo de utilizarmos uma pirmide para representar a hierarquia do sistema de memria de um computador. Tempo de Acesso indica quanto tempo a memria gasta para colocar uma informao na barra de dados aps uma determinada posio ter sido endereada. Isto , o perodo de tempo decorrido desde o instante em que foi iniciada a operao de acesso (quando a origem em geral a UCP passa o endereo de acesso para o sistema de memria) at que a informao requerida (instruo ou dado) tenha sido efetivamente transferida. um dos parmetros que pode medir o desempenho da memria. Pode ser chamado de tempo de acesso para leitura ou tempo de leitura. O valor do tempo de acesso de uma memria dependente da sua tecnologia de construo e da velocidade de seus circuitos. Ele varia bastante para cada tipo, de alguns poucos nanossegundos, no caso de memrias tipo RAM (DRAM, SRAM, etc.) at dezenas ou centenas de milissegundos, no caso de memria secundria (discos magnticos, CD-ROMs, e fitas). Deve ser mencionado tambm que o tempo de acesso das memrias eletrnicas (do tipo RAM, ROM, etc.) o mesmo, independente da distncia fsica entre o local de um acesso e o local do prximo acesso, ao passo que, no caso de dispositivos eletromecnicos (discos, CD-ROMs, etc.), o tempo de acesso varia conforme a distncia fsica entre dois acessos consecutivos. Outro parmetro (utilizado apenas em memrias eletrnicas) o chamado ciclo de tempo do sistema de memria ou ciclo de memria, que o perodo de tempo entre duas operaes sucessivas de acesso memria, sejam de escrita ou de leitura. Esse tempo depende de outros fatores relacionados aos tempos de funcionamento do sistema. Esses outros fatores podem, em certas memrias, impedir, por um pequeno intervalo de tempo, o uso do sistema de memria para 5

um novo acesso, logo aps a concluso do acesso anterior. Nesses casos, o ciclo de memria compreende o tempo de acesso mais um certo tempo para essas outras atividades, a serem descritas mais adiante. Outras memrias no requerem esse tempo adicional entre acessos e, portanto, o ciclo de memria igual ao tempo de acesso. O ciclo de memria usualmente empregado como elemento de medida de desempenho das memrias eletrnicas, sendo indicado nos manuais e demais documentos descritivos das caractersticas de um tipo de memria. Capacidade: a quantidade de informao que pode ser armazenada em uma memria. A unidade de medida mais comum o byte, embora possam ser usadas outras unidades como clulas (como no caso da MP e da memria cache), setores (no caso de discos) e bits (no caso de registradores). Dependendo do tamanho da memria (i.e., de sua capacidade, indica-se o valor numrico total de elementos de forma simplificada, atravs da incluso e K (quilo), M (mega), G (giga), T (ter) ou P (peta). Volatilidade: memrias podem ser do tipo voltil ou no-voltil. Uma memria no-voltil a que retm a informao armazenada quando a energia eltrica desligada. Memria voltil aquela que perde a informao armazenada quando o equipamento desligado (interrupo de alimentao eltrica ou desligamento da chave ON/OFF do equipamento). Uma vez que o processador nada pode fazer sem instrues que indiquem a prxima operao a ser realizada, obvio que todo o sistema de computao deve possuir alguma quantidade de memria no-voltil. Isto , ele deve possuir, pelo menos, algumas instrues armazenadas em memria no-voltil para serem executadas inicialmente, sempre que se ligar o computador. Registradores so memrias do tipo voltil, como tambm memrias de semicondutores, do tipo RAM. Memrias magnticas e ticas, como discos e fitas, e memrias de semicondutores do tipo ROM, EPROM etc. so tambm do tipo no voltil. possvel manter a energia em uma memria originalmente no-voltil, com o emprego de baterias. Tecnologia de Fabricao: diversas tecnologias vm sendo empregadas ao longo do tempo. Atualmente, algumas dessas tecnologias j esto obsoletas, como as memrias de ncleo de ferrite (magnticos), e outras ainda no tm uma aplicao comercial ampla, como as memrias de bolha. Algumas das tecnologias mais conhecidas e usadas so: a) Memrias de semicondutores so dispositivos fabricados com circuitos eletrnicos e baseados em semicondutores. So rpidas e relativamente caras, se comparadas a outros tipos. Dentro da categoria geral h vrias tecnologias especficas, cada uma com suas vantagens, desvantagens, velocidade, custo, etc. b) Memrias de meio magntico so dispositivos, como disquetes e discos rgidos (hard disks), fabricados de modo a armazenar informaes sob a forma de campos magnticos. Elas possuem caractersticas magnticas semelhantes s das fitas cassetes de som, que so memrias no-volteis. Devido natureza eletromecnica de seus componentes e tecnologia de construo em comparao com memrias de semicondutores, esse tipo de memria mais barato e permite, assim, o armazenamento de grande quantidade de informao. O mtodo de acesso s informaes armazenadas em discos e fitas diferente,

resultando em tempos de acesso diretos (por possurem acesso direto, discos so mais rpidos do que fitas, que operam com acesso sequencial). c) Memria de meio tico so dispositivos, do tipo CD-ROM. permitida apenas a sua leitura, por isso o nome ROM aps o CD. Tais dispositivos utilizam um feixe de luz para marcar o valor (0 ou 1) de cada dado em sua superfcie. Temporariedade: trata-se de uma caracterstica que indica o conceito de tempo de permanncia da informao em um dado tipo de memria. H memrias do tipo permanente (um considervel perodo de tempo) e transitria (dura pouco tempo, como o tempo de execuo do programa). Custo: o custo de fabricao de uma memria bastante variado em funo de diversos fatores, entre os quais se pode mencionar principalmente a tecnologia de fabricao, que redunda em maior ou menor tempo de acesso, ciclo de memria, quantidade de bits em certo espao fsico e outros. Uma boa unidade de mdia o preo por byte armazenado, em vez do custo total da memria em si. Registradores Em um sistema de computao, a destinao final do contedo de qualquer tipo de memria o processador (a UCP). Isto , o objetivo final de cada uma das memrias (ou subsistemas de memria) armazenar informaes destinadas a serem, em algum momento, utilizadas pelo processador. Ele o responsvel pela execuo das instrues, pela manipulao dos dados e pela produo dos resultados das operaes. Um registrador o elemento superior da pirmide de memria por possuir a maior velocidade de transferncia dentro do sistema (menor tempo de acesso), menor capacidade de armazenamento e maior custo. Analisando os diversos parmetros que caracterizam as memrias, temos: Tempo de acesso: 1 ciclo de memria por serem construdos com a mesma tecnologia da UCP, estes dispositivos possuem o menor tempo de acesso/ciclo de memria do sistema. Capacidade: os registradores so fabricados com capacidade de armazenar um nico dado, uma nica instruo, ou at mesmo um nico endereo. Dessa forma, a quantidade de bits de cada um de uns poucos bits (de 8 a 64), dependendo do tipo de processador e, dentro deste, da aplicao dada ao registrador em si. Registradores de dados tm, em geral, o tamanho definido pelo fabricante para a palavra do processador, tamanho diferente dos registradores usados exclusivamente para armazenar endereos (quando h registradores especficos para essa funo no processador). Volatilidade: registradores so memrias de semicondutores e, portanto, necessitam de energia eltrica para funcionar. Assim, registradores so memrias volteis. Tecnologia: registradores so memrias de semicondutores, sendo fabricados com tecnologia igual dos demais circuitos da UCP, visto que eles se encontram inseridos em seu interior. No entanto, h diversos modelos de tecnologia de fabricao de semicondutores, uns com tempo de acesso maior que outros, custos e capacidade de armazenamento, no mesmo espao fsico, diferentes. Tecnologia bipolar e MOS (Metal Oxide Semiconductor) so comuns na fabricao de registradores. Temporariedade: os registradores so memrias auxiliares internas UCP e, portanto, tendem a armazenar informao (dados ou instrues) por muito pouco tempo. Acumuladores ou

registradores de dados armazenam os dados apenas pelo tempo necessrio para sua utilizao na UAL. Custo: devido tecnologia mais avanada de sua fabricao, os registradores encontram-se no topo da pirmide em termos de custos, sendo os dispositivos de maior custo entre os diversos tipos de memria. Memria Cache Na pirmide de memria, abaixo dos registradores, encontram-se a memria cache. Em sistemas de computao mais antigos, a pirmide no possua memria cache e, desse modo, os registradores eram ligados diretamente memria principal. A figura 5.5 mostra uma pastilha (chip) de memria cache (cache externa).

Em toda execuo de uma instruo, a UCP acessa a memria principal (sem cache), pelo menos uma vez, para buscar a instruo (uma cpia dela) e transferi-la para um dos registradores da UCP. Muitas instrues requerem outros acessos memria, seja para a transferncia de dados para a UCP (que sero processados na UAL), seja para a transferncia do resultado de uma operao da UCP para a memria. Em resumo, para a realizao do ciclo de uma instruo h sempre a necessidade de ser realizado um ou mais ciclos de memria. Considerando-se que um ciclo de memria atualmente bem mais demorado do que o perodo de tempo que a UCP gasta para realizar uma operao na UAL, fica claro que a durao da execuo de um ciclo de instruo bastante afetada pela demora dos ciclos de memria. Desde h muito, ento, esta interface entre o processador e a memria principal vem sendo um ponto frgil no que se refere performance do sistema. Na busca de uma soluo para o problema, foi desenvolvida uma tcnica que consiste na incluso de um dispositivo de memria entre UCP e MP, denominando memria cache, cuja funo acelerar a velocidade de transferncia das informaes entre UCP e MP e, com isso, aumentar o desempenho dos sistemas de computao. Para tanto, esse tipo de memria fabricado com tecnologia semelhante da UCP e, em consequncia, possui tempos de acesso compatveis com a mesma, resultando numa considervel reduo da espera da UCP para receber dados e instrues da cache, ao contrrio do que acontece em sistemas sem cache. As memrias cache podem possuir diversos tipos, como RAM cache ou cache para a memria principal e cache para disco. Alm disso, deve-se mencionar que as memrias RAM cache podem ser inseridas em dois (ou at trs) nveis. O primeiro nvel denominado L1 (nvel 1), uma 8

memria cache inserida diretamente no processador, isto , encapsulada na mesma pastilha, enquanto a de nvel 2, L2 ou cache externa (ou ainda cache secundria) consiste em uma pastilha (chip) separada e prpria, instalada na placa-me do computador. A memria cache apresenta os seguintes parmetros: Tempo de acesso ciclo de memria: sendo as memrias de semicondutores, fabricadas com tecnologia e recursos para prover menores ciclos de memria do que as memrias RAM comuns (memria principal do tipo dinmica), elas possuem velocidade de transferncia tal que lhes garante tempos de acesso menores que 5 a 7 ns (nanossegundos), sendo por esta razo situadas, na pirmide, logo abaixo dos registradores. Capacidade: tendo em vista que a UCP acessa primeiramente a memria cache, para buscar a informao requerida (a prxima instruo ou dados requeridos pela instruo em execuo), importante que a referida memria tenha capacidade adequada para armazenar uma aprecivel quantidade de informaes, uma vez que, se essas informaes no foram encontradas na cache, ento o sistema dever sofrer um atraso para que as mesmas sejam transferidas da memria principal para a cache. Por outro lado, uma grande capacidade implicar certamente em elevao de seu custo, muitas vezes inaceitvel para compor o preo total do sistema. Dessa forma, deve-se conciliar o compromisso de uma aprecivel capacidade com a noelevao demasiada de seu preo. Volatilidade: a exemplo dos registradores, memrias cache so dispositivos construdos com circuitos eletrnicos, requerendo, por isso, energia eltrica para seu funcionamento. So, desse modo, dispositivos volteis. Tecnologia: memrias cache so fabricadas com circuitos eletrnicos de alta velocidade para atingirem sua finalidade. Em geral, so memrias estticas, denominadas SRAM. Temporariedade: o tempo de permanncia de uma instruo ou dado nas memrias cache relativamente pequeno, menor que a durao da execuo do programa ao qual a referida instruo ou dado pertence. Isto porque, devido a seu tamanho no ser grande e ser utilizada por todos os programas em execuo, h necessidade de alterao peridica da informao armazenada para permitir a entrada de novas informaes. Memria Principal A UCP pode armazenar imediatamente a instruo uma aps a outra porque elas esto armazenadas internamento no computador. Esta a importncia da memria. E, desde o princpio, a memria especificada para armazenar o programa (e os seus dados) a ser executado a memria que atualmente chamamos de principal (ou memria real), para distingui-la da memria de discos e fitas (memria secundria). A memria principal , ento, a memria bsica de um sistema de computao desde seus primrdios. o dispositivo onde o programa (e seus dados) que vai ser executado armazenado para que a UCP busque instruo por instruo, para execut-las. Seus parmetros possuem as seguintes caractersticas: Tempos de acesso ciclo de memria: a memria principal construda com elementos cuja velocidade operacional se situa abaixo das memrias cache, embora sejam muito mais rpidas que a memria secundria. Nas geraes iniciais de computadores o tipo mais comum de memria principal era uma matriz de pequenos ncleos magnticos, os quais armazenavam o valor 1 ou o 9

valor 0 de bit, conforme a adio do campo magntico armazenado. Essas memrias possuam baixa velocidade, a qual foi substancialmente elevada com o surgimento das memrias de semicondutores. Capacidade: em geral, a capacidade da memria principal bem maior que a da memria cache. Volatilidade: sendo atualmente construdo com semicondutores e circuitos eletrnicos correlatos, este tipo de memria tambm voltil, tal como acontece com os registradores e a memria cache. No entanto, h normalmente uma pequena quantidade de memria no-voltil fazendo parte da memria principal, o qual serve para armazenar pequena quantidade de instrues que so executadas sempre que um computador ligado. Tecnologia: nos primeiros sistemas usavam-se ncleos de ferrite (processo magntico) para armazenar os bits na memria principal, at que foram substitudos pela tecnologia de semicondutores. Os circuitos que representam os bits na memrias atuais possuem uma tecnologia bem mais avanada que seus predecessores de ferrite e, portanto, tm velocidade mais elevada de transferncia, garantindo baixos tempos de acesso em comparao com o modelo anterior. So, porm, elementos mais lentos do que aqueles que constituem as memrias cachs. Na maioria dos sistemas atuais esta tecnologia produz memria com elementos dinmicos (DRAM). Temporariedade: para que um programa seja executado necessrio que ele esteja armazenado na memria principal juntamente com seus dados. Atualmente esta afirmao parcialmente verdadeira, visto que no mais necessrio que o programa completo (todas as instrues) esteja na MP. Neste caso, obrigatrio apenas o armazenamento, na MP, da instruo que ser acessada pela UCP (na prtica, no se usa somente a instruo que ser executada, mas sim esta e um grupo de outras). No importa, contudo, se o programa todo, ou parte dele, que deve estar armazenado na MP para ser utilizado pela UCP. Fica claro que, em qualquer circunstncia, as instrues e os dados permanecem temporariamente na MP, enquanto durar a execuo do programa (ou at menos tempo). Esta temporariedade bastante varivel, dependendo de diversas circunstncias, como, por exemplo, o tamanho do programa e sua durao, a quantidade de programas que esto sendo processados juntos, e outras mais. No entanto, a transitoriedade com que as informaes permanecem armazenadas na MP , em geral, mais duradoura que na memria cache ou nos registradores, embora mais lenta que a memria secundria. Custo: memrias dinmicas usadas como memria principal tm um custo mais baixo que o custo das memrias cache, por isso podem ser vendidos computadores com uma quantidade aprecivel de MP sem que seu preo seja inaceitvel. Memria Secundria Na base da pirmide que representa a hierarquia de memria em um sistema de computao encontra-se um tipo de memria com maior capacidade de armazenamento do que os outros tipos j descritos, menor custo por byte armazenado e com tempo de acessos tambm superiores aos outros tipos. Esta memria, denominada memria secundria, memria auxiliar ou memria de massa, tem por objetivo garantir um armazenamento mais permanente aos dados e programas do usurio, razo por que deve naturalmente possuir maior capacidade que a memria principal. A memria secundria de um sistema de computao pode ser constituda por diferentes tipos de dispositivos, alguns diretamente ligados ao sistema para acesso imediato (discos rgidos, por exemplo) e outros que podem ser conectados quando desejado (como disquetes, fitas de armazenamento, CD-ROM, etc.), cuja informao armazenada se torna diretamente conectada e 10

disponvel quando o especfico disquete ou fita estiver inserido no elemento de leitura/escrita (drive ou acionador), enquanto os demais ficam disponveis (offline) para acesso manual pelo usurio. Uma das principais caractersticas dos dispositivos que constituem a memria secundria sua no-volatilidade. A anlise de seus parmetros (considerando uma mdia entre os diversos equipamentos) conduz s seguintes observaes: Tempo de acesso ciclo de memria: dispositivos que podem se constituir em elemento de armazenamento secundrio ou auxiliar em um sistema de computao so, em geral, dispositivos eletromecnicos e no circuitos puramente eletrnicos, como o caso de registradores, memria cache e memria principal. Por essa razo, aquele dispositivos possuem tempo de acesso maiores. Por mais tecnologicamente avanado que seja, um mecanismo que movimenta fisicamente um brao mecnico (no caso dos discos rgidos) requer tempos sempre maiores que o tempo requerido para um sinal eltrico passar por um condutor, j que este no possui elementos mecnicos e caminha com a velocidade da luz. Capacidade: uma das caractersticas que coloca a memria secundria na base da pirmide justamente sua grande capacidade de armazenamento, a qual tambm varia consideravelmente dependendo do tipo de dispositivo utilizado. Volatilidade: como estes dispositivos armazenam as informaes de forma magntica ou tica, elas no se perdem nem desaparecem quando no h alimentao de energia eltrica. Trata-se, pois, de elementos uteis para guardar os programas e dados de forma permanente. Tecnologia: este parmetro possui uma variedade imensa de tipos, visto que, para cada dispositivo entre os j mencionados (discos, disquetes, fitas, discos ticos, CD-ROMs), h diferentes tecnologias de fabricao atualmente em uso, o que dificulta a sua descrio. Temporariedade: conforme j mencionado em Volatilidade, a memria secundria um componente (vendo-se os diversos tipos como um todo) de armazenamento com carter permanente ou, pelo menos, de longo perodo de armazenamento. Ela serve, ento, para armazenar programas e dados que no esto sendo requeridos imediatamente e que exigem tambm grande espao de armazenamento devido sua natural quantidade. Memria Principal A seguir, as caractersticas essenciais da memria principal ou primria de um sistema de computao. Vamos observar a estrutura organizacional da MP, projeto para um acesso rpido e fcil pela UCP. Em seguida, so descritas as operaes que podem ser realizadas entre UCP/MP, bem como detalhes de capacidade, tempo de acesso e ciclo de mquina. Organizao da Memria Principal Para descrever a organizao da memria principal MP dos computadores, bom verificar alguns conceitos: a) MP o depsito de trabalho da UCP, isto , a UCP a MP trabalham ntima e diretamente na execuo de um programa. As instrues e os dados do programa ficam armazenados na MP e a UCP vai buscando-os um a um medida que a execuo vai se desenrolando;

11

b) Os programas so organizados de modo que os comandos so descritos sequencialmente e o armazenamento das instrues se faz da mesma maneira, fisicamente sequencial (embora a execuo nem sempre se mantenha de forma sequencial);

c) Palavra a unidade de informao do sistema UCP/MP que deve representar o valor de um nmero (um dado) ou uma instruo de mquina. Desse modo, a MP deveria ser organizada como um conjunto sequencial de palavras, cada uma diretamente acessvel pela

12

UCP. Na prtica isso no acontece porque os fabricantes seguem ideias prprias, no havendo um padro para o tamanho da palavra e sua relao com a organizao da MP. d) Endereo, contedo e posio de MP em toda organizao composta de vrios elementos, que podem ser identificados e localizados individualmente para, com eles, ser realizados algum tipo de atividade, h a necessidade de se estabelecer um tipo qualquer de identificao para cada elemento e associar a esta identificao um cdigo (ou coisa parecida) que defina sua localizao dentro da organizao, de modo que cada elemento possa ser facilmente identificado e localizado. Este o conceito, j exposto, de endereo, ou posio de MP (vale, alias, para qualquer tipo de memria) (ver item 5.1). A figura 5.7 mostra um exemplo dos significados dos endereos e contedo de uma memria e sua bvia diferena. e) Unidade de armazenamento consiste no grupo de bits que inequivocamente identificado e localizado por um endereo. A MP , ento, organizada em unidades de armazenamento, denominadas clulas, cada uma possuindo um nmero de identificao seu endereo e contendo em seu interior uma quantidade M de bits, que se constitui na informao propriamente dita (pode ser uma instruo ou parte dela, pode ser um dado ou parte dele). Teoricamente, a unidade de armazenamento da MP deveria ser a palavra, isto , palavra e clula deveriam ser especificadas com o mesmo tamanho. Isto, na prtica, no acontece, pois os fabricantes tm preferido organizar as MP com clulas de 1 byte (8 bits) de tamanho, com palavras de 16, 32 e at 64 bits. H autores que definem clula como o local destinado a armazenar 1 bit e, nesse caso, um grupo de clulas (ou de bits) acessado por um nico endereo. f) Unidade de transferncia de ou para a MP, consiste na quantidade de bits que transferida da memria em uma operao de leitura ou transferida para a memria em uma operao de escrita. Tambm, teoricamente, deveria ser igual palavra e unidade de armazenamento, porm na prtica possvel encontrar computadores cuja integrao UCP/MP realizada com uma unidade de transferncia diferente no s da palavra, mas tambm do tamanho da clula (unidade de armazenamento), seja por razes tcnicas, seja apenas por interesses comerciais. O processador Intel Pentium original, por exemplo, possua palavra de 32 bits, barramento de 32 bits (e, portanto, transferia 32 bits em cada operao de leitura ou escrita) e cada clula de memria armazenava 8 bits de informao.

13

A MP de qualquer sistema de computao organizada como um conjunto de N clulas sequencialmente dispostas a partir da clula de endereo igual a 0 at a ltima, de endereo igual a N-1, conforme mostrado na figura 5.8. Cada clula construda para armazenar um grupo de M bits, que representa a informao propriamente dita e que manipulado em conjunto (como se fosse uma nica unidade) em uma operao de leitura ou de escrita. Com o desenvolvimento da tecnologia de microeletrnica e de semicondutores, as antigas memrias de ncleo magntico foram substitudas por dispositivos volteis de estado solido. As memrias de semicondutores possuem vrias caractersticas interessantes que as tornam extremamente vantajosas para constiturem-se na base da MP, quais sejam: So memrias de acesso aleatrio (RAM Random Access Memory); Ocupam relativamente pouco espao, podendo muitos bits ser armazenados em uma pastilha (chip); e Possuem tempo de acesso pequeno. Essencialmente, o espao de armazenamento da memria principal (genericamente chamada de RAM) um grupo de N clulas, cada uma podendo armazenar um grupo de M bits. Esta a memria de trabalho da UCP , portanto, deve permitir o armazenamento de instrues e dados (operao de escrita) e tambm a leitura destas mesma instrues e dados. Chama-se a isso uma memria do tipo Leitura e Escrita (Read/Write). Este tipo de memria tem uma particularidade desvantajosa, que o fato de ser voltil, isto , perde toda a informao nela armazenada se for interrompida a energia eltrica que a alimenta. No entanto, todo sistema precisa, para iniciar seu funcionamento regular, que um grupo de instrues (normalmente programa pequeno) esteja permanentemente armazenado na MP de modo que, ao ligarmos o computador, este programa inicie automaticamente o funcionamento do sistema. Essas instrues vm junto com o hardware e no devem sofrer um acidental apagamento se, inadvertidamente, um programa do usurio tentar gravar em cima delas. Elas devem estar, portanto, em um tipo de RAM que s permita leitura por parte da UCP ou de outros programas. A gravao (escrita) nelas deve ser realizada eventualmente e no atravs de processos comuns. Essas memrias chamam-se memrias somente de leitura (ROM Read Only Memory). O item 5.3.5 descreve outros aspectos relativos s memrias RAM e ROM.

14

Consideraes sobre a Organizao da MP Embora a organizao estrutural das memrias de semicondutores, atualmente adotadas como MP, seja simples do ponto de vista comercial grupo de N clulas com M bits cada , uma anlise mais detalhada dessa mesma organizao permite relacionar algumas observaes interessantes que tm servido de base para modelos diferentes ou discusses tcnicas. a) A quantidade de bits de uma clula (valor de M na fig. 5.8) J mencionamos que cada clula constituda de um conjunto de circuitos eletrnicos, baseados em semicondutores, que permitem o armazenamento de valores 0 ou 1, os quais representam um dado ou uma instruo. A quantidade de bits que pode ser armazenada em cada clula um requisito definido pelo fabricante. Uma clula contendo M bits permite o armazenamento de 2M combinaes de valores, uma de cada vez, claro. A figura 5.9 mostra alguns exemplos de MP com diferentes tamanhos de clulas. Atualmente, praticamente todos os fabricantes vm adotando um tamanho padro de clula de 8 bits. No passado, no entanto, vrios tamanhos foram utilizados. Na tabela 6.1 esto relacionadas diversas caractersticas dos principais sistemas de computao. b) A relao endereo X contedo de uma clula A figura 5.9 mostra exemplos de memria com diferentes tamanhos de clula, porm com a mesma quantidade de clulas (nos exemplos h trs organizaes de MP, cada um com 256 clulas), endereadas de 010 a 25510 ou de 0016 a FF16 ou ainda 000000002 a 111111112.

A fig. 5.10 mostra outros exemplos de organizao de MP, dessa vez com memrias de mesmo tamanho de clula, porm com quantidade diferentes de clulas.

15

A comparao entre os exemplos das figs. 5.9 e 5.10 indica que os valores de endereos e contedo de clula embora associados, ou seja, o endereo IAC5 est associado ao contedo B5 no exemplo da fig. 5.10(a), tm diversas origens. Em outras palavras, a quantidade de bits do nmero que representa um determinado endereo, por exemplo, 16 bits do nmero IAC5 no exemplo da fig. 5.10(a), define a quantidade mxima de endereos que uma MP pode ter, bem como o seu espao de endereamento. No exemplo citado, este espao de endereamento ou capacidade mxima da memria 64 K clulas, porque 216 = 26 210 = 64 K. Operaes com a Memria Principal J sabemos que possvel realizar duas operaes em uma memria: Escrita (write) armazenar informaes na memria; Leitura (read) recuperar uma informao armazenada na memria. Sabemos tambm que a operao de leitura no destri o contedo da memria, ela apenas providencia a transferncia de uma cpia do que est armazenado, enquanto a informao desejada continua armazenada. Somente a operao de escrita destrutiva. Vamos descrever, com um pouco mais de detalhe, como se desenrolar uma operao de leitura e uma de escrita na MP de um sistema de computao. Para tanto, h necessidade de se definirem os elementos que compem a estrutura UCP/MP e que so utilizados naquelas operaes (ver fig. 5.11):

16

Barramento de dados interliga o RDM (MBR) MP, para transferncia de informaes entre MP e UCP (sejam instrues ou dados). bidirecional, isto , ora os sinais percorrem o barramento da UCP para a MP (operao de escrita), ora percorrem o caminho inverso (operao de leitura). Registrador de Dados da Memria (RDM) (Memory Buffer Register MBR) registrador que armazena temporariamente a informao (contedo de uma ou mais clulas) que est sendo transferida da MP para UCP (em uma operao de leitura) ou da UCP para a MP (em uma operao de escrita). Em seguida, a referida informao reencaminhada para outro elemento da UCP para processamento ou para uma clula da MP, conforme o tipo da operao de transferncia. Permite armazenar a mesma quantidade de bits do barramento de dados. Registrador de Endereos da Memria (REM) (Memory Address Register MAR) registrador que armazena temporariamente o endereo de acesso a uma posio de memria, ao se iniciar uma operao de leitura ou de escrita. Em seguida, o referido endereo encaminhado rea de controle da MP para decodificao e localizao da clula desejada. Permite armazenar a mesma quantidade de bits do barramento de endereos. Barramento de endereos interliga o REM (MAR) MP para transferncia dos bits que representam um determinado endereo. unidirecional, visto que somente a UCP aciona a MP para a realizao de operaes de leitura ou escrita. Possui tantos fios (ou linhas de transmisso) quantos so os bits que representam o valor de um endereo. Barramento de controle interliga a UCP (unidade de controle) MP para passagem de sinais de controle durante uma operao de leitura ou escrita. bidirecional, porque a UCP pode enviar sinais de controle para a MP, como sinal indicador de que a operao de leitura (READ) ou de escrita (WRITE), e a MP pode enviar sinais do tipo WAIT (para a UCP aguardar o trmino de uma operao). Controlador tambm conhecido como decodificador. Tem por funo geral os sinais necessrios para controlar o processo de leitura, alm de interligar a memria aos demais componentes do sistema de computao. o controlador que decodifica o endereo colocado no barramento de endereos, localizando a clula desejada. 17

Para simplificar a descrio de procedimentos e operaes realizadas internamente em um sistema de computao vamos adotar uma conveno genericamente conhecida como LTR Linguagem de Transferncia entre Registradores (Register Transfer Language RTL). Princpios bsicos da LTR: a) Caracteres alfanumricos significam abreviaturas de nomes de registradores ou posies de memria. Ex.: REM, MP. b) Parnteses indicam contedo, no caso de registradores, ou que o valor entre parnteses um endereo de MP. c) Uma seta indica atribuio, isto , transferncia de contedo de um registrador para outro ou para a MP, ou vice-versa. Por exemplo: (REM)(CI) significa que o contedo do registrador cujo nome CI copiado para o registrador REM. (RDM)(MP(REM)) significa que o contedo da clula da MP cujo endereo est no REM copiado para o RDM. Operao de Leitura A realizao de uma operao de leitura efetivada atravs da execuo de algumas operaes menores (microoperaes), cada uma consistindo em uma etapa ou passo individualmente bem definido. O tempo gasto para realizao de todas estas etapas caracteriza o tempo de acesso. O intervalo de tempo decorrido entre duas operaes consecutivas (leitura-leitura, leitura-escrita, ou escrita-leitura) denomina-se ciclo de memria. A figura 5.12 mostra um exemplo de operao de leitura de um dado armazenado no endereo 1234 da MP (o valor do dado 5C para a UCP). Os passos que descrevem a referida operao de leitura so: 1) REM de outro registrador da UCP. 1a) o endereo colocado no barramento de endereos. 2) Sinal de leitura colocado no barramento de controle. 2a) Decodificao do endereo e localizao da clula. 3) RDM MP(REM) pelo barramento de dados. 4) Para outro registrador da UCP RDM. No primeiro passo, a unidade de controle UC da UCP inicia a operao de leitura atravs da cpia do endereo 1324 de um de seus registradores especficos (pode ser, p.ex., o CI) para o REM, e coloca um sinal de leitura (READ) no barramento de controle para indicar aos circuitos de controle da MP o que fazer em seguida. A MP decodifica o endereo recebido e cpia seu contedo para o RDM atravs do barramento de dados. Do RDM, ento, a informao desejada copiada para o elemento da UCP, que destinatrio final (normalmente um dos registradores da prpria UCP). A realizao completa dos quatro passos descritos gasta um tempo de acesso, mas no garante que a MP possa realizar logo em seguida uma nova operao. Estar pronta ou no para realizar uma nova operao depende do tipo de memria RAM utilizada. As memrias estticas (SRAM) permitem que outra operao (de leitura ou de escrita) seja imediatamente realizada aps a concluso de um operao de leitura/escrita, enquanto memrias dinmicas (DRAM), no.

18

Operao de Escrita A realizao de uma operao de escrita segue procedimento semelhante ao da operao de leitura, exceto, claro, pelo sentido da cpia, que inverso, isto , da UCP para a MP. A fig. 5.13 mostra um exemplo de operao de escrita de um dado, de valor igual a F7, da UCP para a MP, a ser armazenado no endereo 21C8. Os passos que descrevem a referida operao so: 1) (REM) (outro registrador) - a UCP coloca endereo no REM 1a) o endereo colocado no barramento de endereos. - a UCP coloca no RDM o dado a ser copiado 2) (RDM) (outro registrador) 3) Sinal de escrita colocado no - a UCP aciona o sinal WRITE pelo barramento de barramento de controle. Controle 4) (MP(REM)) (RDM) - o dado transferido para a clula de memria pelo barramento de dados. Nos primeiros passos a UC coloca o endereo desejado no REM e o dado a ser copiado no RDM. O endereo colocado no barramento de endereos, o dado no barramento de dados e o sinal de escrita (WRITE) acionado no barramento de controle.

19

Como resultado da decodificao do endereo pelo dispositivo de controle da memria, o valor F7 copiado na clula desejada, de endereo 21C8. Conforme j explicado para a operao de leitura, a realizao dos passos necessrios efetivao de uma operao de escrita gasta um tempo de acesso e a MP pode ou no estar preparada para realizar imediatamente nova operao. Observao: A descrio dos passos relativos realizao de uma operao de leitura ou de escrita no teve o propsito de ser precisa no tempo e na sincronizao de operaes em um computador. Capacidade de MP Clculos Conforme j exposto, as memrias principais (MP), tambm comercialmente conhecidas como memrias RAM ou simplesmente RAM, so organizadas em conjuntos de clulas, cada uma podendo armazenar uma certa quantidade de bits a informao em si, seja uma instruo (ou parte dela) ou um dado (ou parte dele). Considerando que instrues e dados precisam estar armazenados na MP para que o programa possa ser executado pela UCP, e considerando ainda que possvel, e bastante desejvel, que vrios programas possam ser executados em paralelo pela UCP, importante conceituar o que seja capacidade de uma memria e como podemos calcular e entender aumentos de capacidade e

20

outras informaes concernentes. Neste item, o enfoque que maior do assunto se refere aos clculos de capacidade em memria RAM (MP). Capacidade de memria refere-se genericamente quantidade de informaes que nela podem ser armazenadas em um instante de tempo. Tratando-se de um computador, cuja unidade bsica de representao de informao o bit, pode-se imaginar este elemento como unidade de medida de capacidade. Neste caso, poderia expressar a capacidade de uma memria com valores do tipo: 512 bits, 16384 bits e 8388608 bits. medida que os valores crescem, torna-se mais complicado e pouco prtico indicar o valor pela sua completa quantidade de algarismos. No item 2.2.1 foi mostrado que possvel simplificar esta informao atravs do emprego de unidades como o K (1K = 210 = 1024), o M mega (1M = 220 = 1048576), o G giga (1G = 230 = 1073741824), o T ter (1T = 240 = 1099511627776) e o P Peta (1P = 250 = 1024T). Desse modo, os mesmos valores antes indicados com todos os seus algarismos agora podem ser assim simplificados: 512 bits, 16K bits, e 8M bits. Mas, mesmo simplificando a representao da informao, continua-se, neste caso, a indicar a capacidade da memria pela quantidade de bits. No entanto, esta no a melhor maneira de quantificar a referida capacidade. Na realidade, sabemos que no possvel armazenar 2 (dois) ou mais valores em uma clula de memria, ou seja, em um nico endereo somente um valor (um dado) poder ser localizao e identificado. Isto porque se fossem armazenados dois valores em um endereo (uma clula), o sistema no saberia identificar qual dos dois seria o desejado em uma certa operao de leitura ou escrita (precisar-se-ia, ento, de uma identificao a mais um endereo dentro de um endereo), com todos os bvios inconvenientes. Dessa forma, o mais importante elemento para determinar a capacidade de uma memria a quantidade de endereos que poderemos criar e manipular naquela memria, visto que, na melhor das hipteses, pode-se armazenar um dado em cada endereo. Na realidade, o mais comum, principalmente quando se manipulam valores numricos, um dado ser armazenado ocupando vrias clulas e, consequentemente, vrios endereos. Por exemplo, se a MP de um certo sistema estiver organizada com clulas de 8 bits de tamanho e os dados forem definidos com 32 bits, ento um dado ser armazenado em 4 clulas (a maneira pela qual o sistema recebe a informao de endereo daquele dado no discutida aqui). Como no se pode armazenar dois nmeros no mesmo endereo (mas um nmero pode at ocupar mais de um endereo), a quantidade de endereos tem mais sentido de individualidade de informao do que qualquer outra unidade. Na prtica, ento, usa-se a quantidade de clulas para representar a capacidade da memria e, como no mercado informal de compra, venda, assistncia tcnicas etc. da maioria dos computadores a clula de memria principal (que o mercado denomina informalmente RAM) tem um tamanho de 8 bits 1 byte , usa-se mesmo a quantidade de bytes (e muitos abreviam a informao colocando apenas o valor, sem a unidade de to comum que o uso de bytes). Ainda mais: a) O bit, apesar de ser a unidade elementar de representao de informao nos computadores, individualmente no representa nenhuma informao til (com exceo do valor de uma varivel lgica), pois somente pode assumir dois valores, 0 ou 1;

21

b) Para representar uma informao til, seriam necessrios mais bits (em grupo) para se poder codificar vrios elementos de um conjunto qualquer. Por exemplo, a representao de caracteres maisculos, minsculos, sries de pontuao, grficos, etc., requer, em mdia, 7 ou 8 bits, de modo a se criar um conjunto de 128 ou 256 cdigos. c) Os tempos de transferncia de informaes entre UCP em MP (tempos de acesso) so decorrentes de vrios fatores (tipo de circuitos para construo da memria, distancia fsica entre os elementos, quantidade de etapas durante as operaes de transferncia, durao do pulso do relgio da UCP etc.), dos quais o menos importante a quantidade de bits. Deve ser esclarecido que estamos falando de um nico acesso e no de vrios acessos em conjunto, pois, neste ultimo caso, o desempenho do sistema aumenta sensivelmente se o barramento de dados for maior. Uma outra possvel unidade de capacidade de memria seria a palavra. Expressar uma capacidade da forma 16K palavras mais significativo do que 16Kbytes visto que, neste ultimo caso, no sabemos ao certo quantas palavras h na tal memria (quantos dados ou instrues podem ser armazenados na memria), enquanto, no primeiro exemplo, a palavra deve indicar o tamanho de um dado ou de uma instruo (na prtica, isto tambm no verdade, o que complica muitas vezes os clculos de capacidade). No h uma padronizao para indicar valores de capacidade de memria, embora seja mais comum se usar quantidade de bytes em vez de quantidade de palavras. Para computadores construdos com propsitos comerciais usa-se o byte como unidade bsica de armazenamento (embora isto no seja um padro imutvel), enquanto computadores ditos cientficos, mais habilitados para manipular nmeros (como os supercomputadores), costumam organizar sua MP em palavras. No entanto, a ttulo de esclarecimento e para acostumar-se com jarges da rea, vamos apresentar a seguir alguns exemplos de expresses para representar capacidade de memria. 2 Kbytes = 2x2010 = 2048 bytes 384K clulas = 384x210 = 393216 clulas 384K palavras = 393216 palavras 2 Mbytes = 2x220 = 2097152 bytes. Clculos com capacidade da MP (RAM) A memria principal (RAM) um conjunto de N clulas, cada uma armazenando um valor com M bits. Ento, a quantidade de endereos contida no espao enderevel da referida RAM tambm igual a N, visto que cada contedo de clula est associado um nmero, que o seu endereo. O valor de N representa a capacidade da memria, atravs da quantidade de clulas ou de endereos. O valor de M indica a quantidade de bits que pode ser armazenada em uma clula individual (que a informao propriamente dita). Como 1 bit representa apenas um entre dois valores (base binria), ento podemos concluir que: a) Pode-se armazenar em cada clula um valor entre 0 e 2M-1, porm um de cada vez. So 2M combinaes possveis. Por exemplo, se M = 8 bits, temos 28 = 256. Seriam armazenados valores entre: 00000000 (010 ou 016) e 11111111 (25510 ou FF16). 22

b) A MP tendo N endereos e sendo E = quantidade de bits dos nmeros que representam cada um dos N endereos, ento: N = 2E. Por exemplo, se N = 512 (porque a MP tem 512 clulas), ento, 512 = 2E, e E = 9, pois 29 = 512. c) O total de bits que podem ser armazenados na referida MP denominado T, sendo: T = N X M = 2E X M No exemplo em que a MP (RAM) um espao sequencial de 512 clulas, cada um com 8 bits de tamanho, teremos: N (total de clulas) = 512 clulas; M (tamanho de cada clula) = 8 bits; E (tamanho em bits do nmero que representa cada endereo) = 9 bits; T (total de bits na memria) = 4096 bits. N = 2E; 512 = 2E donde E = 9. T = NxM = 512x8 = 4096 bits = 4 x 1024 (K) bits ou 4K bits. Tambm poder-se-ia obter o valor 4K utilizando potenciao: 512x8 = 29x23 = 212 = 22x210 = 4K. A fig. 5.14 mostra exemplo de configuraes de MP (RAM) com diferentes valores de N, M, E e T.

Exemplo 1: Uma memria RAM (MP) tem um espao mximo de endereamento de 2K. Cada clula pode armazenar 16 bits. Qual o valor total de bits que pode ser armazenado nesta memria e qual o tamanho de cada endereo. Soluo: se o espao mximo enderevel 2K, ento: N = 2K (a quantidade mxima de clulas 2K). 1 clula = 16 bits. Ento: M = 16 bits (tamanho em bits de cada clula). Sendo N = 2E e N = 211, ento 2E=211 e E=11. Se E=quantidade de bits de cada nmero que expressa um endereo, e sendo E = 11, ento os endereos de cada clula so nmeros que tm 11 bits.

23

T = NxM = 211x16 = 211x24 = 215. Convertendo para mltiplo de K = 210, teremos 25x210 = 32 K. Exemplo 2: uma memria RAM (MP) fabricada com a possibilidade de armazenar um mximo de 256K bits. Cada clula pode armazenar 8 bits. Qual o tamanho de cada endereo e qual o total de clulas que podem ser utilizadas naquela RAM? Soluo: Total de bits = T = 256K. Utilizando potenciao, temos: 256K = 28X210 = 218 1 clula = 8 bits. Ento: M (tamanho de cada clula) = 8 = 23. Sendo T = NxM, ento: N (quantidade de clulas) = T/M = 256K / 8 = 32K Pode-se obter o mesmo resultado atravs de potenciao: 256K/8 = 218/23 = 215 = 25x210 = 32K. Se N = 215 e se sabemos que N = 2E, ento: E = 15. Neste instante podemos passar a considerar tambm os elementos bsicos do processo de transferncia de dados entre MP e UCP: REM, RDM, barramentos de dados e barramento de endereos. Alm disso, devem ser efetuadas algumas consideraes sobre os tamanhos de cada um desses elementos, o que permitir realizar os clculos de capacidade desejados. Como o BD barramento de dados interliga o RDM e a memria RAM (MP), ento ambos possuem o mesmo tamanho em bits. O mesmo acontece entre o BE barramento de endereos e o REM. Como o REM e o BE barramento de endereos tm por funo armazenar o endereo de acesso a uma clula da MP, ento seus tamanhos devem corresponder quantidade de bits de cada endereo. Em outras, o tamanho, em bits, do REM e do BE igual ao valor de E na equao N=2E. J o RDM deve ter um tamanho correspondente palavra do sistema, visto que deve transferir os bits de uma palavra entre a UCP e a MP (ou vice-versa, dependendo da operao ser de escrita ou de leitura). Na prtica, no h um padro de tamanho de RDM (ou seja, nem sempre seu tamanho o da palavra) e, portanto, para cada caso deve ser indicado o seu tamanho ou uma indicao de como obt-lo. A ttulo de informao pode-se mencionar que, atualmente, a maioria dos processadores possui um BD barramento de dados com tamanho mltiplo da palavra, de modo a acelerar o processo de transferncia de dados entre UCP/MP, visto que a UCP tem espao de armazenamento interno para receber dados antes que esses sejam processados. Exemplo 3: um computador, cuja memria RAM (MP) tem uma capacidade mxima de armazenamento de 2K palavras de 16 bits cada, possui um REM e um RDM. Qual o tamanho destes registradores? Qual o valor do maior endereo dessa MP e qual a quantidade total de bits que nela pode ser armazenada? Soluo: se a capacidade mxima da MP 2 K palavras, entende-se que o endereamento por palavra (nada foi dito diferente) e, ento: N = 2K. Se cada palavra tem 16 bits e foi entendido que o endereamento por palavra, deduz-se que em cada clula pode ser armazenada uma palavra. Nesse caso, M = 16. Sabe-se que N = 2E e, no exemplo, N = 2K. Ento: 2E = 2K = 21x210 = 211. E = 11 bits. Se cada endereo um nmero de 11 bits, ento o REM (registrador cuja funo armazenar endereos) tambm deve ter um tamanho igual a 11 bits. Se a palavra tem 16 bits e o RDM o registrador cuja funo armazenar uma palavra de dados (no foi especificado outro dado), ento RDM = 16 bits. 24

Com T = NxM, ento: T = 2K x 16 = 32K bits. Finalmente, o maior endereo deve ser igual a (2K-1) ou (2x1024)-1 ou 2048-1 = 2047. Exemplo 4: um processador possui um RDM com capacidade de armazenar 32 bits e um REM com capacidade de armazenar 32 bits e um REM com capacidade de armazenar 24 bits. Sabendo-se que em cada acesso so lidas 2 clulas da memria RAM (MP) e que o barramento de dados (BD) tem tamanho igual ao da palavra, pergunta-se: a) Qual a capacidade mxima de endereamento do microcomputador em questo? b) Qual o total mximo de bits que podem ser armazenados na memria RAM (MP)? c) Qual o tamanho da palavra e de cada clula da mquina? Soluo: RDM = 32 bits e REM = 24 bits. A capacidade mxima de endereamento, isto , total de endereo e de clulas igual a N = 2E. Se REM = 24 bits e se REM armazena valor de endereo, ento: E=24 bits e 2E=224. Separando as potncias, teremos: 224=24x220=16x1M. Assim, N = 16M endereos ou 16M clulas. Total de bits = T = NxM, sendo M = tamanho de 1 clula e N = total de clulas = 16M = 224. Como em cada acesso se leem 2 clulas, e um acesso transfere, pelo BD, uma quantidade de bits, ento: BD = 2 clulas. Como BD = RDM, ento: BD = 32 bits = 2 clulas. Uma clula = BD = 16 bits. Ento: T = 16M clulas x 16 bits = 256 M bits. Por potenciao temos: 224x24 = 228. Como 228 = 28x220, ento: 256 M bits. O tamanho da palavra igual ao do barramento de dados (BD). Como BD = RDM, ento: palavra = 32 bits. O tamanho de cada clula de 16 bits, pois j vimos que clula = BD (em cada acesso so lidas 2 clulas). Exemplo 5: um processador possui um BE (barramento de endereos) com capacidade de permitir a transferncia de 33 bits de cada vez. Sabe-se que o BD (barramento de dados) permite a transferncia de quatro palavras em cada acesso e que cada clula da memria RAM (MP) armazena um oitavo (1/8) de cada palavra. Considerando que a memria RAM (MP) pode armazenar um mximo de 64G bits, pergunta-se: a) Qual a quantidade mxima de clulas que podem ser armazenadas na memria RAM (MP)? b) Qual o tamanho do REM e BD existentes neste processador? c) Qual o tamanho de cada clula e da palavra desta mquina? Soluo: BE = 33 bits BD = 4 palavras por acesso clula = 1/8 da palavra T = 64G bits Sabemos, por definio, que BE = REM, BD = RDM, M = tamanho de cada clula e T =

NxM. Assim, REM = 33 bits. Como, ento, cada um dos N endereos da MP um nmero de 33 bits, E = 33, e N sendo igual a 2E, N = 233 = 23x230 = 8G endereos ou clulas, pois 23=8 e 230 =1G.

25

Como T = NxM, e sendo M = tamanho de 1 clula, ento: M = T/N ou M = 64G (T)/8G (N) = 8 bits. As unidades esto corretas, pois T = bits em clulas e N = total de clulas. Ento, M = bits em clulas/clula = bits. Se 1 clula = 8 bits e cada clula = 1/8 palavra, ento: tamanho de 1 palavra = 8 x 1 clula = 8x8 = 64 bits. Se o BD permite transferncia de quatro palavras de cada vez, ento: BD = 4 x 1 palavra = 4 x 64 = 256 bits. Tipos e Nomenclatura de MP A memria principal dos computadores modernos fabricada com tecnologia de semicondutores, o que lhes permite elevada velocidade de acesso e transferncia de bits, j que so circuitos apenas eltricos em funcionamento (no h partes mecnicas, como acontece nos discos e fitas magnticas, bem, como disquetes e CD-ROMs). A velocidade de propagao de um sinal eltrico nominalmente a velocidade da luz. Tais memrias, no entanto, mantm os valores binrios armazenados apenas enquanto estiverem energizadas, sendo assim do tipo voltil, conforme mencionado anteriormente. O item 5.6 descreve em detalhe mtodos de construo e funcionamento dessas memrias. A memria principal a memria de trabalho da UCP, o seu grande bloco de rascunho, onde os programas (e seus dados) se sucedem em execuo, uns aps os outros. Ou seja, para que um programa seja executado, necessrio que suas instrues e os dados por elas manipulados estejam armazenados, ainda que temporariamente, na memria principal (MP). Este programa e dados esto normalmente armazenados de forma permanente na memria secundria, seja um disco magntico, seja um CD-ROM. Por exemplo, quando vamos trabalhar um texto utilizando um processador de textos, do tipo Microsoft Word, necessrio que o cdigo do Word esteja armazenado na MP para garantir velocidade no processamento (a UCP precisa encontrar na MP as instrues do Word necessrias a um determinado processamento do texto (colocar negrito em uma palavra, por exemplo), assim como o texto trabalhado deve estar armazenado na MP. Na realidade, as coisas ocorrem de modo ligeiramente diferente, visto que atualmente no mais necessrio que o programa inteiro esteja armazenado na MP. Basta que ele seja dividido em pedaos, chamados pginas, e que o sistema transfira apenas algumas das pginas de cada vez da memria secundria para a MP (as que esto ou iro ser usadas em breve). Atualmente a UCP no acessa diretamente a MP, como nos sistemas antigos: ela procura, inicialmente, a instruo desejada no momento ou o dado requerido para um processamento, em outro tipo de memria, a memria cache, j apresentada anteriormente. A figura 5.15 mostra um demonstrativo do fluxo de bits para um determinado processamento, a partir de seu local de armazenamento permanente (o disco rgido) at sua chegada a UCP para efetivar o processamento.

26

A MP dos microcomputadores comercial e popularmente denominada memria RAM ou simplesmente RAM. O termo uma sigla de palavras inglesas Random Access Memory, cuja traduo Memria de Acesso Aleatrio (ou randmico). As memrias RAM so construdas com tecnologia que lhes garante tempos de acesso na faixa dos nanossegundos, tendo uma caracterstica nica e marcante: o tempo de acesso a qualquer de suas clulas igual, independente da localizao fsica da clula. Isso possvel devido tecnologia (circuitos eletrnicos) de construo, da memria onde sinais eltricos percorrem os condutores (cujo comprimento milimtrico) com a velocidade da luz, seja da primeira para a ltima clula, seja da terceira para a quarta. No h movimento fsico de qualquer de seus elementos (o que consumiria tempo), pois uma clula localizada atravs da decodificao de seu endereo (processo quase instantneo) e emisso de sinais eltricos correspondentes para abertura da clula e passagem dos seus bits para o barramento de dados. A tecnologia RAM tem variaes, que foram evoluindo com o tempo, as quais redundaram em vrios diferentes tipos de memria. Esses tipos podem ser primeiramente agrupados em duas vertentes: a SRAM (Static RAM) e a DRAM (Dynamic RAM), isto , a RAM esttica e a RAM dinmica. O primeiro tipo, mais rpido e de custo mais elevado, costuma ser utilizado na construo das memrias cache, e o outro tipo, DRAM, aquele usado genericamente nas memrias principais tradicionais. Este tipo vem evoluindo e sendo produzido pelos diversos fabricantes com diferentes nuances, que lhe valeram diversos nomes, conforme mostrado na tabela 5.2. Ambos os tipos, no ento, so volteis. A memria RAM, constituda de memrias eletrnicas, de tempo de acesos igual independente da clula localizada, pode servir para construo de dois tipos de memria no que se refere sua aplicao em um sistema de computao: memrias que servem para que seus contedos sejam lidos ou escritos (memrias L/E em ingls R/W memory), e memrias em que os programas aplicativos podem apenas ler seu contedo, no lhes sendo permitido gravar em suas 27

clulas, as memrias do tipo ROM (Read Only Memory ou memria somente para leitura). Estas tm uma notvel particularidade que o fato de no serem volteis, como as memrias L/E. Alm da MP permitir que um programa seja armazenado logo depois do outro (isto significa que so realizadas sucessivas operaes de escritas nas mesmas clulas), durante a exceo normal de um programa de suas instrues so sucessivamente lidas pela UCP, que, por sua vez, tambm realiza operaes de escrita sobre a MP, armazenando resultados das operaes realizadas. Se uma memria de acesso aleatrio (RAM) para leitura, invariavelmente tambm o ser para realizar ciclos de escrita. Assim, as memrias do tipo RAM, que permitem leitura/escrita (R/W), so usadas como memria principal (MP), e este termo (RAM) passou a ser to comum que se confundiu com o prprio nome da memria (comumente se usa no comrcio e na indstria o termo RAM quando se refere MP). O uso do termo RAM para definir a memria principal de trabalho, onde nossos programas e aplicativos so armazenados, incorreto, como veremos a seguir. Embora seja rpida (tempo de acesso pequeno) e de acesso aleatrio (mesmo tempo no acesso a qualquer clula), a RAM possui algumas desvantagens, entre as quais a volatilidade, isto , perde seu contedo quando a corrente eltrica interrompida. Por outro lado, as memrias read-write apresentam o inconveniente (nem sempre um inconveniente) de, permitindo que se escreva normalmente em suas clulas, ser possvel a acidental eliminao do contedo de uma ou mais de suas clulas. Uma vez que o processador nada executa sem que haja uma instruo especificando o que ser executado, obvio que ele deve possuir uma certa quantidade de memria no-voltil, para armazenar instrues iniciais. Isto , um local onde estejam permanentemente armazenadas instrues que automaticamente iniciam a operao e a inicializao do sistema, to logo a alimentao eltrica seja ligada. Em microcomputadores costuma-se chamar de programa bootstrap, ou simplesmente boot, enquanto outros fabricantes chamam IPL Initial Program Load (Carregamento do Programa Inicial), entre outros nomes. Esse tipo de memria (ainda de semicondutores e, portanto, RAM), alm de ter que ser novoltil (para no haver a perda do programa de boot), tambm no deve permitir que haja eliminaes acidentais. Trata-se de um programa que deve estar permanentemente armazenado e no sofrer alteraes por parte de nenhum outro programa. Em outras palavras, memrias que armazenam este tipo de programas devem permitir apenas leitura. Chamam-se estas memrias de ROM Read Only Memory (memrias somente para leitura) e elas devem ser no-volteis. No entanto, o tempo de acesso em memrias ROM tambm constante, independentemente da localizao fsica da clula e, por conseguinte, elas tambm so memrias RAM. Porm, o mercado incorreu no engano de chamar de RAM apenas as memrias R/W leitura/escrita, talvez para claramente diferenci-las do outro tipo, ROM (somente para leitura), j que as siglas so bem parecidas. Figura 5.16 apresenta a distribuio espacial das memrias R/W, RAM, e ROM em um microcomputador, indicando o conceito correto usado na prtica pelo mercado.

28

As memria DRAM vm evoluindo em termos de aumento da capacidade e de velocidade (embora esta em menor percentagem do que o desejado em face do aumento da velocidade dos processadores), redundando em diversos tipos: EDO DRAM, BEDO DRAM, SDRAM, RDRAM e outros, conforme apresentado na tabela 5.2 e no quadro resumo a seguir: Podemos classificar as memrias de semicondutores do seguinte modo:

Como podemos observar, tanto as memrias L/E (que permitem leitura e escrita) quanto as memorias ROM (que permitem apenas leitura) so memrias de acesso randmico, isto , so memrias RAM. A descrio dos diversos tipos de RAM e suas aplicaes mais comuns encontram-se no item 5.6, enquanto os modelos de memria ROM so descritos a seguir. Memrias do tipo ROM Memrias ROM so tambm memrias de semicondutores fabricadas para atingir trs objetivos: a) Ter desempenho semelhante ao das memrias R/W de semicondutores (o seu desempenho no igual, pois possuem menor velocidade de acesso, mas pode-se dizer que semelhante); b) No ser voltil (caracterstica essencial para que o computador possua memrias rpidas e permanentes);

29

c) Ter segurana, permitir apenas leitura de seu contedo por determinados programas. H determinados programas crticos que no gostaramos de ver infectados por vrus, por exemplo. Todo sistema de computao utiliza uma parte do espao de endereamento da memria principal com memrias do tipo ROM. Os microcomputadores do tipo PC, por exemplo, vm da fbrica com um conjunto de rotinas bsicas do sistema operacional armazenadas em ROM, denominadas em conjunto de rotinas bsicas do sistema operacional armazenadas em ROM, denominadas em conjunto de BIOS Basic Input Output System, ou Sistema Bsico de Entrada e Sada. Outra aplicao importante das ROM o armazenamento de microprogramas em memria de controle (ROM). Como tambm em sistema de controle de processos, como sistemas de injeo eletrnica de automveis, fornos de microondas e outros eletrodomsticos controlados por computadores, assim como em jogos eletrnicos (vdeo games). As memrias ROM tambm sofreram uma evoluo tecnologia ao longo do tempo, principalmente para torn-las mais prticas e comercialmente aceitveis, sem perder a sua principal caracterstica de serem memrias somente para leitura por parte dos programas aplicativos (embora, com sua evoluo, elas possuam tipos que permitem a troca do seu contedo, sempre atravs de processos especiais e nunca por um simples programa aplicativo). O primeiro e original tipo chamada memria ROM pura (usamos o nome pura para diferenciar de outros tipos de ROM, mais flexveis), que tambm conhecida tecnicamente como programas por mscara (mask programmed), devido ao processo de fabricao e escrita dos bits na memria. Nessa ROM pura, o conjunto de bits (programa especificado pelo usurio) inserido no interior dos elementos da pastilha durante o processo de fabricao. Em ingls chama-se a isto de processo hardwired, pois cada bit criado j na clula apropriada. Aps o trmino da fabricao, a pastilha ROM est completa, com o programa armazenado, e nada poder alterar o valor de qualquer de seus bits. Por ser dessa forma, a ROM se torna um dispositivo muito mais simples do que uma RAM, necessitando apenas de um decodificador de endereos, as correspondentes linhas de barramento de sada e alguns circuitos lgicos (p. ex., operadores OR). A figura 5.17 mostra um exemplo de uma memria ROM, constituda de 4 clulas de 4 bits cada uma, possuindo, ento, 4 endereos de 2 bits cada um.

30

Esse tipo de memria relativamente barato se fabricado em grandes quantidades, porque, nesse caso, o custo de fabricao da mscara de programa diludo para cada pastilha. No entanto, h certas desvantagens: a) No h possibilidade para recuperao de qualquer erro eventual no programa. Se inserir um nico bit errado na pastilha (em geral no conjunto fabricado, devido ao processo de mscara), o lote deve ser destrudo e fabricada nova partida correta. Isto pode acarretar problemas de custo do sistema; b) O custo (que no pequeno) da criao da mscara para insero dos bits o mesmo, seja para fabricar uma pastilha ou milhares delas. Para atenuar o problema do custo fixo da mscara (matriz), desenvolveu-se uma variao daquele tipo de memria ROM pura, denominada PROM (Programmable Read Only Memory) ROM programvel. Na realidade, no se trata propriamente de ser programvel, porque no possvel a reutilizao da PROM (como tambm no se reutiliza a ROM). Nela, como nas ROM puras, somente possvel gravar os bits desejados uma nica vez, porm com a diferena de que a gravao dos bits posterior fase de fabricao da pastilha, embora deva ser realizada por um dispositivo especial. Uma PROM , ento, fabricada virgem (sem qualquer bit armazenado) e depois, seja pelo usurio, seja pelo fabricante do programa ou por qualquer agente especializado, que possua a mquina especfica para inserir os bits, ocorre a etapa de gravao da informao. Aps o trmino da gravao, tambm no possvel efetuar qualquer alterao. Esta etapa de gravao conhecida como processo de queimar a pastilha. Trata-se de um processo semelhante ao utilizado atualmente pelos dispositivos gravadores de CD, que produzem os CD-R. nestes tambm se usa um CD virgem e o gravador de CD insere os elementos de informao no CD-R, o qual , em seguida, queimado, inviabilizando outras gravaes. Uma pondervel diferena entre ROM e PROM reside no seu custo individual. Como j mencionado, as ROM s se tornam atraentes se fabricadas em grande quantidade, pois, neste caso, o custo da matriz dividido por uma grande quantidade de cpias. Para menores quantidades, a PROM se torna mais conveniente devido ao menor custo individual, o qual independe da quantidade. Posteriormente foram desenvolvidos outros dois tipos de ROM, os quais possuem uma particularidade interessante. Conquanto se mantenham somente para leitura (ROM) de programas aplicativos, durante uma execuo normal, elas podem ser apagadas (atravs de um processo especial, que depende do tipo) e regravadas, sendo portanto reutilizveis. So elas: EPROM (erasable PROM) PROM apagvel, - EEPROM (Electrically ou Electronically EPROM) ou EPROM eletrnica, tambm chamada EAROM (Electrically Alterable ROM) e a memria Flash ou Flash-ROM. So memrias uteis no caso de aplicaes que requerem muito mais leitura de dados do que escrita, sendo o caso, por exemplo, de programas de sistemas (controle do vdeo, de modems, de dispositivos de entrada/sada), onde o fabricante escreve o programa, que intensamente lido pelos aplicativos, mas que no deve ser por eles modificado (escrito por cima). Eventualmente, o fabricante precisa modificar seu programa, criando uma nova verso, o que pode ser realizado nesses memrias. 31

A EPROM pode ser utilizada diversas vezes porque os dados nela armazenados podem ser apagados ao se iluminar a pastilha com luz ultravioleta, a qual incide em uma janela de vidro, montada na parte superior da pastilha. O processo de apagamento, que completo (todo contedo da memria apagado), dura em mdia cerca de 20 a 25 minutos. Uma vez apagada, a pastilha pode ser reutilizada atravs de novo processo de queima de novos bits. Aps esse passo, a janela de vidro costuma ser coberta para evitar um apagamento acidental. O outro tipo, EEPROM ou EAROM, desenvolvido posteriormente, introduziu uma caracterstica mais verstil e prtica no processo de reutilizao das ROM: a programao (escrita dos bits), o apagamento e a reprogramao so efetuados atravs de controle da UCP, isto , por software. Uma grande vantagem desse tipo de memria o fato das operaes poderem ser realizadas especificamente sobre um byte ou bytes determinados. Com a EEPROM programada, as instrues nela armazenadas so retidas indefinidamente ou at que um sinal de apagamento seja captado por um sensor. Uma boa aplicao para a EEPROM consiste em se utilizar programao das teclas de um teclado. Nesse caso, a funo de cada tecla definida em uma tabela, que reside em uma EEPROM instalada no circuito impresso, normalmente localizado na parte interna do teclado. Programas aplicativos (como processadores de textos), ao serem carregados na memria do sistema para execuo, armazenam na EEPROM funes de teclas especficas para o referido aplicativo. Dessa forma, as funes do teclado podem ser padronizadas para cada aplicao. Finalmente, um outro tipo dessas memrias denominado Flash, tendo processo de funcionamento bastante semelhante ao das EEPROM, ou seja, o contedo total ou parcial da memria pode ser apagado normalmente por um processo de escrita, embora na flash o apagamento no possa ser efetuado ao nvel de byte como nas EEPROM. O termo flash foi imaginado devido elevada velocidade de apagamento dessas memrias em comparao com as antigas EPROM e EEPROM.

Erros Em todo sistema de transmisso de informao a distncia (telecomunicaes) h sempre a possibilidade de ocorrerem deformaes ou at mesmo destruio de parte da informao transmitida (ou toda). Isso ocorre devido a interferncias no meio de transmisso. A memria principal (ou qualquer outro tipo de memria) utiliza um meio de transmisso (barramento de dados) para o trnsito da informao (palavras de dados ou instrues) entre a MP e

32

a UCP. Esse trnsito sofre interferncias que podem alterar o valor de 1 ou mais bits (de 0 para 1 ou de 1 para 0) ou at mesmo destru-los. No entrando no mrito das possveis causas da existncia de erros na transmisso e armazenamento de informaes na MP de um sistema de computao, mas importante sabermos que os atuais sistemas de memria possuem mecanismos capazes de detectar e corrigir tais erros. A figura 5.19 sumariza o processo bsico de deteco e correo de erros, que pode ser resumido nas seguintes etapas: a) Os grupos de M bits de informao que sero gravados nas clulas da MP sofrem um processamento especfico, em um dispositivo prprio para deteco de erros. Esse processamento realizado segundo as etapas de um algoritmo determinado (A) e produz, como resultado, um conjunto de K (M) bits. b) Sero gravados, ento, em clulas com capacidade para armazenar M+K bits (e no apenas o M bits de informao). c) Ao ser recuperado o valor em bits de uma determinada clula (operao de leitura), o sistema de deteco acionado; o mesmo algoritmo inicial (A) executado sobre os M bits de informao armazenados, obtendo-se um novo conjunto de K bits (K2). d) Os K (M) bits armazenados so comparados com os K (K2) bits calculados, obtendo-se um entre os seguintes possveis resultados: 1 ambos os conjuntos de K bits tm o mesmo valor, o que significa ausncia de erros. Neste caso, os M bits da clula desejada so transmitidos; 2 os conjuntos so diferentes, concluindo-se pela existncia de erro no bloco de M bits. O erro pode ser corrigido ou no, dependendo de como o sistema foi projetado. O processo de correo de erros, denominado comumente ECC (Error Correction Code ou Cdigo de Correo de Erro) baseia-se no cdigo utilizado para constituir os K bits adicionais de cada clula. Em geral, este mtodo utilizado em computadores com aplicaes mais sensveis, tais como um servidor de arquivos ou servidor de rede. Eles podem detectar a ocorrncia de erros em 1 ou mais bits e corrigir 1 bit errado. Ou seja, se for detectados mais bits errados, ento, o ECC somente indica o erro sem poder identificar (e corrigir) os bits errados.

Sobre Tecnologias de Fabricao de Memria As memria principal e cache de um sistema de computao moderno so constitudas de dispositivos de armazenamento fabricados com tecnologia de semicondutores, cuja principal 33

caracterstica garantir o mesmo tempo de acesso (da ordem de poucos nanossegundos) a qualquer de suas clulas. Esta forma de atuar originou o nome Memria de Acesso Randmico ou Aleatrio, ou simplesmente RAM; em contrapartida as antigas memrias de acesso sequencial. Tambm foi mostrado que, em termos de tecnologia de fabricao e processo de funcionamento, as memrias RAM evoluram em diferentes tipos, a saber: - memrias para Leitura/Escrita (L/E) ou R/W que o mercado tradicionalmente chama de RAM e no L/E, como deveria; - memrias somente para leitura ou ROM. As memrias L/E, popularmente conhecidas como RAM (embora as memrias ROM tambm sejam RAM, porque o tempo de acesso a qualquer de suas clulas igual), podem ser fabricadas atravs do uso de dois elementos diferentes, redundando em dois grande tipos: - a memria SRAM (RAM esttica) e, - DRAM (RAM dinmica). As memrias do tipo SRAM so utilizadas na fabricao de memrias cache, L1 ou L2, enquanto as memrias DRAM so empregadas na constituio das memrias principais (MP), sendo, como j mencionado, conhecidas como RAM ou MP. Assim, popularmente, usam-se os termos SRAM (para cachs), DRAM ou simplesmente RAM (para memria principal) e ROM (parte da memria que no voltil). As memrias RAM (SRAM ou DRAM) so bem mais rpidas que as memrias ROM, razo por que em muitos sistemas se usa transferir o contedo da ROM BIOS para uma parte da RAM (MP) de modo a melhorar o desempenho da execuo dos cdigos da BIOS. Este processo de transferncia para uso denomina-se shadow, sendo, no caso, shadow the ROM BIOS. Efetuando-se uma breve comparao entre as memrias SRAM e DRAM podem-se identificar alguns pontos significativos de cada uma delas: As memrias SRAM no necessitam de recarga (refresh) para manter o valor de 1 bit armazenado, enquanto as memrias DRAM sim. Isso acontece devido ao processo de funcionamento delas e favorece a SRAM em termos de velocidade de acesso, pois o recarregamento das DRAM acarreta uma perda de tempo aprecivel. As memrias DRAM ocupam menos espao fsico que as memrias SRAM, devido menor quantidade de componentes requeridos para armazenar cada bit. Nas DRAM h um capacitor e apenas um transistor (responsvel pela leitura do bit), enquanto nas SRAM h a necessidade de vrios transistores, o que acarreta mais espao fsico na pastilha. As DRAM ocupam cerca de da rea das SRAM, o que se torna uma vantagem aprecivel em termos de economia de espao. As memrias SRAM carregam um custo maior de fabricao que as DRAM devido ao maior nmero de componentes (transistores) por bit que apresentam. Ainda que, nas DRAM, haja um acrscimo de custo para introduo do circuito de recarregamento, este acrscimo, bem menor que a economia de componentes, especialmente em memrias com grande capacidade de armazenamento. Algumas dos tipos de memria RAM: DRAM original a memria com tecnologia DRAM mais antiga; utiliza o processo convencional de endereamento linha/coluna, isto , primeiro enviada parte do endereo de linha e depois a 34

parte da coluna. Apesar de antiga e de baixa velocidade, ainda continua a ser usada em certos sistemas. Fast Page Mode (FPM) DRAM uma tecnologia que produz memrias com velocidade pouco maior que as DRAM originais, tendo, no entanto, sido usada com frequncia em sistemas mais antigos, devido a sua excelente compatibilidade com diversos tipos de placa-me. Ela funciona de modo que, em vez de o controlador ter que enviar um endereo de linha por linha, ele precisa apenas enviar o endereo da primeira linha de acesso e o endereo das colunas, de modo que o sistema vai lendo as clulas contguas. Isso reduz o tempo de acesso em relao ao processo anterior. Extended Data Out (EDO) DRAM trata-se de um avano em relao tecnologia FPM, produzindo memrias com um pouco mais de velocidade. No caso, essas memrias possuem um circuito de tempo diferente, de modo que um acesso memria possa ser iniciado antes que o anterior tenha terminado. Ela produz uma aumento de desempenho da ordem de 5% sobre as memrias FPM e cerca de 20 a 25% sobre as DRAM originais. Este tipo tem sido bastante usado em sistemas Pentium e similares, porm com o aumento da velocidade dos processadores, vem sendo substituda por verses de DRAM mais rpidas. Burst Extended Data Out (BEDO) DRAM um tipo de tecnologia que produz resultados de desempenhos melhores que os tipos anteriores FPM e EDO. No caso, o sistema da memria acelera o processo de leitura atravs do envio de trs endereos de coluna sucessivos, aps a leitura de uma coluna, de maneira que 4 bits so lidos de uma vez (em modo burst). Apesar do incremento de velocidade, este tipo no muito usado devido ao fato dos principais fabricantes de placas-me e processadores, especialmente a Intel, no terem manifestado interesse, preferindo o tipo SDRAM. Na realidade, uma memria somente se torna popular se houver placas de suport-la. Synchronous DRAM (SDRAM) a grande diferena de tecnologia deste tipo para os anteriores consiste no fato de que as memrias DRAM anteriores funcionam de modo assncrono, enquanto as SDRAM funcionam sincronizadas no relgio velocidade do processador. A velocidade da memria SDRAM funcionam sincronizadas no relgio velocidade do processador. A velocidade da memria SDRAM informada em MHz (como a dos relgios) e no em nanossegundos, o que torna mais fcil a comparao entre a velocidade do barramento e a da memria embora alguns ainda usem os valores em ns. Direct Rambus DRAM (DRDRAM) trata-se de uma nova tecnologia de fabricao de memrias RAM bastante diferente das anteriores, sendo propriedades de um fabricante denominado Rambus Inc., no sendo, pois, de uso pblico. No entanto, a Intel, a AMD e Cyrix, vem se posicionando altamente favorveis ao seu uso, o que torna a RDRAM um tipo frequente nos futuros microcomputadores, como as SDRAM. Esta memria usa um barramento prprio, que lhe permite altssimas velocidades de transferncia de dados. Entretanto, ele transfere 16 bits de cada vez, em vez de 64 como nas SDRAM, o que no problema em razo das elevadas taxas de transferncia, que suprem a diferena de largura de bits e barramento. Observao: importante ressaltar uma notvel diferena de caractersticas entre esses incontveis tipos de tecnologia de fabricao de memrias RAM, que o fato de algumas serem assncronas e outras sncronas. Uma memria trabalha no modo assncrono, quando seu funcionamento no cadenciado, no regido pelo batimento do relgio do processador, enquanto uma memria do tipo sncrona funciona na frequncia do sistema, o que lhes permite naturalmente maiores velocidades 35

de acesso. As memrias do tipo DRAM original, FPM, EDO e BEDO so assncronas, e as SDRAM e RDRAM so do tipo sncronas. Os termos DRAM e SIMM significam coisas diferentes relacionadas com fabricao e instalao das memrias em um computador. Um item ou grupo de itens (DRAM, SRAM, EDO DRAM, RDRAM, RDRAM, etc.) refere-se ao tipo de tecnologia de fabricao de uma memria, ao modo pelo qual os circuitos fsicos so dispostos na pastilha e ao seu processo de funcionamento para realizar operaes de leitura e de escrita. J os termos SIMM, DIMM, etc. esto relacionados com o modo pelo qual as pastilhas so instaladas na placa de circuito impresso dos computadores. Os modelos atuais de mdulos de memria denominam-se SIMM (Single In Line Memory Module), que podem ser do tipo SIMM-30 e SIMM-72, DIMM (Double In Line Memory Module) e RIMM (Rambus In Line Memory Module), cujos formatos so apresentados abaixo:

O mdulo SIMM-30 possui 30 terminais (endereos, dados e controle) e permite a passagem de 8 bits em cada ciclo do barramento, enquanto os mdulos SIMM-72 possui 72 terminais, permitindo a transferncia de 32 bits em cada ciclo. O mdulo DIMM possui 168 terminais, possibilitando a transferncia de 64 bits de cada vez, sendo atualmente empregado com memrias SDRAM; finalmente, o mdulo RIMM utilizado apenas para receber pastilhas de memria RDRAM.

Os elementos SIMM, DIMM e RIMM so placas utilizadas para facilitar a instalao das pastilhas de memria, o que se faz apenas por encaixe nos circuitos impressos, em vez do processo antigo de soldar os pinos da prpria pastilha, com todos os bvios inconvenientes deste processo. Nas referidas placas podem ser fixadas pastilhas de qualquer tipo de tecnologia, como DRAM, EDO DRAM, etc.

36

Unidade Central de Processamento


O processador central ou Unidade Central de Processamento UCP desempenha um papel crucial no sistema de computao. O processador responsvel pela atividade-fim do sistema, isto , computar, calcular e processar. Os processadores atuais so fabricados de modo que, em um nico invlucro (pastilha chip), so inseridos todos os elementos necessrios realizao de suas funes. Cada vez mais, a tecnologia tem avanado nessa rea, de modo a se fabricar processadores mais complexos e poderoso, como o Pentium III, da Intel, cuja pastilha fabricada contendo cerca de 10 milhes de transistores, ou o Pentium III Xeon, com cerca de 28 milhes de transistores, ou ainda o Athlon (K7), da AMD, que encapsulado com cerca de 22 milhes de transistores. A tabela 6.1 apresenta as principais caractersticas de alguns processadores, o que nos permitir comparar e observar sua evoluo tecnolgica. Funes Bsicas da UCP O processador central ou UCP o componente vital do sistema de computao. Na realidade, a UCP responsvel pela realizao de qualquer operao realizada por um computador. Isto quer dizer que a UCP comanda ao somente as aes efetuadas internamente, como tambm, em decorrncia da interpretao de uma determinada instruo, ela emite os sinais de controle para os demais componentes do computador agirem e realizarem alguma tarefa. Um processador tem, por propsito, realizar operaes com os dados (chamadas de processamento) normalmente numricos. Para realizar essas operaes, o processador necessita, em primeiro lugar, interpretar que tipo de operao a que ele ir executar (pode ser a soma de dois nmeros, pode ser a subtrao de dois valores e assim por diante). Em seguida, antes da realizao propriamente dita da operao necessrio que os dados estejam armazenados no dispositivos que ir executar a operao.

Portanto, a UCP no somente realiza o processamento (executa a operao com os dados), como tambm controla todo o funcionamento do sistema (bisca a descrio da operao a ser realizada chamada instruo; interpreta que tipo de operao dever ser realizado; localiza e busca os dados que sero processados e assim por diante). 37

Todo processador construdo de modo a ser capaz de realizar algumas operaes, denominadas primitivas, tais como: somar, subtrair, mover um dado de um local de armazenamento para outro, transferir um valor (dado) para um dispositivo de sada, etc. Essas operaes e a localizao dos dados que elas manipulam tm que estar representadas na nica forma inteligvel pelo sistema, que uma sequencia de sinais eltricos, cuja intensidade corresponde a 0s e 1s (uma sequencia de bits). A sequencia de 0s e 1s que formaliza uma determinada operao a ser realizada pelo processador denomina-se instruo de mquina. Uma instruo de mquina a identificao formal do tipo de operao a ser realizado (portanto, cada operao consiste em uma instruo diferente), contendo um grupo de bits que identifica a operao a ser realizada e outro grupo de bits que permite a localizao e acesso aos dados que sero manipulados na referida operao. Ou seja, se a operao desejada uma soma, a instruo de mquina correspondente deve conter os bits necessrios para indicar que se trata de soma e onde esto armazenados os valores que devero ser somados. Um programa executvel constitudo de um conjunto de instrues de mquina sequencialmente organizadas. Para que a execuo do referido programa tenha incio necessrio que: 1) As instrues a serem executadas estejam armazenadas em clulas sucessivas, na memria principal; 2) O endereo da primeira instruo do programa esteja armazenado na UCP para que o processador possa busca essa primeira instruo (os endereos das instrues so armazenados em um registrador especfico para isso). A funo do processador central (UCP) consiste, ento, em: a) Buscar uma instruo na memria (operao de leitura), uma de cada vez (cujo endereo deve estar armazenado no registrador existente na UCP e especfico para esse fim); b) Interpretar que operao a instruo est explicitando (pode ser uma soma de dois nmeros, uma multiplicao, uma operao de entrada ou de sada de dados, ou ainda uma operao de movimentao de um dado de uma clula para outra); c) Buscar os dados onde estiverem armazenados, para traz-los at a UCP; d) Executar efetivamente a operao com o(s) dado(s), guardar o resultado (se houver algum) no local definido na instruo; e, finalmente, e) Reiniciar o processo buscando uma nova instruo.

38

Estas etapas compem o que se denomina um ciclo de instruo. Este ciclo se repete indefinidamente (ver fig. 6.2) at que o sistema seja desligado, ou ocorra algum tipo de erro, ou ainda, que seja encontrada uma instruo de parada. Em outras palavras, a UCP projetada e fabricada com o propsito nico de executar sucessivamente pequenas operaes matemticas (ou outras manipulaes simples com dados), na ordem e na sequencia definidas pela organizao do programa. A fig. 6.2 mostra uma sequencia simplificada do funcionamento de uma UCP e mesmo do conjunto de etapas que constituem efetivamente o ciclo de uma instruo. Os termos INCIO e TRMINO, constantes na figura, podem ser entendidos como o incio e trmino do funcionamento da mquina, isto , quando se liga a chave de alimentao (Power on) e quando se desliga o computador (Power off). Durante todo o tempo em que a mquina est liga, ela executa initerruptamente ciclo de instruo, como mostrado na figura a seguir:

Mais adiante, iremos observar que um ciclo de instruo constitudo de etapas mais detalhadas do que as que mostramos at o momento. Por exemplo, antes de realizar a operao o processador deve buscar o(s) dado(s) que ser(o) manipulado(s) durante a execuo da operao, quando for o caso de uma operao com dados.

As funes realizadas pela UCP As atividades realizadas pela UCP podem ser divididas em duas grandes categorias funcionais: Funo de processamento; e Funo de controle.

39

A fig. 6.3 mostra o diagrama de blocos de uma UCP simples, com os principais elementos que compem cada categoria funcional. Naturalmente que se trata de uma organizao lgica, funcional, e no da organizao fsica, de como os dispositivos esto fisicamente organizados no interior do processador. O diagrama baseia-se em uma UCP de um dos principais microprocessadores lanados no mercado, sendo, portanto, bem simples, escolhidos justamente para facilitar as primeiras explicaes sobre o assunto. Mesmo assim, foram inseridos apenas os elementos bsicos, necessrios ao entendimento do seu funcionamento. Escolheu-se uma arquitetura do tipo SISD, em que os programas so executados de forma sequencial, isto , uma instruo completada, passo a passo, e somente aps o seu trmino se inicia a prxima. Tal procedimento torna a execuo dos programas lenta, porm nos permite compreender melhor o processo de realizao dos ciclos de instruo. As arquiteturas modernas executam o ciclo de instruo de forma concorrente (linha de montagem ou pipelining), acelerando o trmino progressivo das instrues. No entanto fica mais difcil a compreenso do funcionamento bsico de um ciclo de instruo com essas arquiteturas modernas em vez da antiga e mais simples SISD dos processadores Intel 8080/8085. A funo processamento se encarrega de realizar as atividades relacionadas com a efetiva execuo de uma operao, ou seja, processar. A funo controle exercida pelos componentes da UCP que se encarregam das atividades de busca, interpretao e controle da execuo das instrues, bem como do controle da ao dos demais componentes do sistema de computao (memria, entrada/sada). Conceitualmente, podemos imaginar que uma UCP simples, sem elementos mais complexos, pode ser dividida nestas duas reas. Esta diviso bem apropriada para caracterizarmos e entendermos melhor o processo de execuo sequencial e serial de um ciclo de uma instruo. Processo sequencial ou serial aquele tpico das mquinas com arquitetura SIMD, no qual cada pequena atividade do ciclo de instruo realizada em sequencia anterior (algumas poucas atividades podem ser realizadas simultaneamente). Como j mencionamos mais de uma vez, um processo lento e pouco eficiente, se desejarmos maior velocidade de processamento. Na maior parte das vezes, vamos tratar do funcionamento de uma UCP que funciona de modo sequencial. Os sistemas de computao modernos so montado em torno de processadores que buscam maior velocidade na realizao de suas atividades. Um dos processos mais usados para o aumento de velocidade o que conhecemos na indstria como linha de montagem (pipeline), no qual a UCP se divide em vrias partes funcionais distintas (estgios), cada uma correspondendo a uma determinada atividade. Dessa forma, vrias instrues so realizadas de forma simultnea, embora em estgios diferentes, exatamente como ocorre em uma linha de montagem de uma montadora de automveis. Os processadores Intel 8086 e 8088 introduziram, na linha de microprocessadores, dois estgios de pipelining. J o processador Intel 80486 atingiu 5 estgios de processamento independente; o Intel Pentium Pro e PowerPC operam com 6 estgios funcionais; o Intel Pentium II trabalha com 10 estgios. Funo Processamento Processamento a ao de manipular um ou mais valores (dados) em uma certa sequencia de aes, de modo a produzir um resultado til. O resultado muda conforme o tipo de operao realizada (ou seja, de acordo com a sequencia de aes de acordo com a instruo especfica). 40

Esta a essncia dos sistemas de computao comerciais, que combinam o hardware, fixo e imutvel, capaz de realizar diferentes tarefas conforme a ordem e sequencia de instrues que recebe, com o software. Processar o dado executar com ele uma ao que produza algum tipo de resultado. Esta , pois, a atividade-fim do sistema; ele existe para processar dados. Entre as tarefas comuns a esta funo processamento podem ser citadas as que realizam: Operaes aritmticas (somar, subtrair, multiplicar, dividir); Operaes lgicas (and, or, xor etc.) Movimentao de dados (memria UCP, UCP memria, registrador registrador, etc.); Desvios (alterao de sequencia de execuo de instrues); Operaes de entrada ou sada. O dispositivo principal desta rea de atividades das UCP chamado de UAL Unidade Aritmtica e Logica. Os demais componentes relacionados com a funo processamento so os registradores, que servem para armazenar dados (ou para guardar resultados) que sero usados pela UAL. A interligao entre estes componentes efetuada pelo barramento interno da UCP. A fig. 6.4 repete o diagrama em bloco da fig. 6.3, com a diferena que nesta ltima os elementos relacionados com a funo processamento esto realados.

Unidade Aritmtica e Logica UAL A UAL o dispositivo da UCP que executa realmente as operaes matemticas com os dados. Tais operaes podem ser: - soma - subtrao - multiplicao - diviso - operao lgica AND - operao lgica XOR - deslocamento direita - incremento - operao lgica OR - operao complemento - deslocamento esquerda - decremento

41

Tais operaes podem utilizar dois valores (operaes aritmticas, operaes lgicas), por isso a UAL possui duas entradas ou apenas um valor (como, por exemplo, a operao de complemento). Ambas as entradas se conectam sada (resultado da operao efetuada) pelo barramento interno de dados. Nos processadores mais antigos, o barramento interno conduz os bits de dados de e para a memria cache L1 (e L2 quando ambas so internas, como acontece com o processador Intel Pentium Pro) e da para as UAL que processam valores inteiros e fracionrios. Qualquer UAL um aglomerado de circuitos lgicos e componentes eletrnicos simples que, integrados, realizam operaes j mencionadas. Ela pode ser uma parte pequena da pastilha do processador, usada em pequenos sistemas, ou pode compreender um considervel conjunto de componentes lgicos de alta velocidade, sendo que os processadores mais modernos utilizam em sua arquitetura mais de uma UAL, de modo a tornar a execuo das instrues mais rpida. A fig. 6.5, que apresenta uma parte da arquitetura dos processadores Pentium, j mostra essa particularidade, contendo 3 UAL, duas delas para processarem nmeros inteiros e a terceira, denominada FPU Float Point Unit, para processamento de nmeros fracionrios. Atualmente, mais UAL so inseridas nos processadores, com o consequente aumento de rendimento nas operaes matemticas. A despeito da grande variao de velocidade, tamanho e complexidade, as operaes aritmticas e lgicas realizadas por uma UAL seguem sempre os mesmos princpios fundamentais das UAL mais antigas. Registradores Para que um dado possa ser transferido para a UAL, necessrio que ele permanea, mesmo que por um breve instante, armazenado em um registrador (a memria especfica da UCP). Alm disso, o resultado de uma operao aritmtica ou lgica realizada na UAL deve ser armazenado temporariamente, de modo que possa ser reutilizado mais adiante (por outra instruo) ou apenas para ser, em seguida, transferido para a memria. Mesmo no caso dos atuais processadores, dotados de uma quantidade aprecivel de espao de armazenamento nas memrias cache interna, L1, o registradores continuam a existir e ser importantes. Nos processadores com arquitetura do tipo RISC, por exemplo, a importncia dos registradores considervel e sua quantidade, por isso, maior que a dos processadores com arquitetura do tipo CISC. Para atender aos propsitos mencionados, as UCP so fabricadas contendo uma certa quantidade de registradores, destinados ao armazenamento de dados. Servem, pois, de memria auxiliar bsica da UAL. Os sistemas mais antigos, possuam um registrador especial, denominado acumulador (ACC), o qual, alm de armazenar dados, servia, tambm, de elemento de ligao da UAL com os restantes dispositivos da UCP. Com o surgimento da segunda gerao de microprocessadores (8086/8088), o ACC desapareceu, optando-se por inserir no processador registradores especializados no armazenamento de dados, de endereos e de segmentos. Em geral, os registradores de dados da UCP tm a mesma largura (quantidade de bits que podem armazenar) igual ao tamanho estabelecido pelo fabricante para a palavra do referido processador. Os processadores Pentium de 6 gerao possuem palavras de 32 bits e 8 registradores de mesmo tamanho, denominados de emprego geral. A quantidade e o emprego dos registradores variam bastante de modo para modelo de UCP. Alm dos registradores de dados, a UCP possui sempre outros registradores (que no participam diretamente da funo processamento), com funes especficas ou que funcionam para a rea de 42

controle, os quais sero descritos mais adiante. Entre estes registradores podemos citar desde j o registrador de instruo (RI) e o contador de instruo (CI) ou PC Program Counter, que a Intel denomina EIP Instruction Pointer, alm do registrador de endereos de memria (REM) e registrador de dados de memria (RDM). Influncia do Tamanho da Palavra A capacidade de processamento de uma UCP (a velocidade com que realiza o ciclo de uma instruo) em grande parte determinada pelas facilidades embutidas no hardware da UAL (ela , alis, s hardware) para realizar as operaes matemticas projetadas. Um dos elementos fundamentais para isso a definio do tamanho da palavra da UCP. O valor escolhido no projeto de fabricao da UCP determinar o tamanho dos elementos ligados rea de processamento, a UAL e os registradores de dados. Nos processadores mais antigos o barramento interno tinha uma largura, em bits, igual ao tamanho da palavra. Com a insero de uma memria interna nos processadores, tornou-se mais vantajoso buscar mais dados de cada vez das memrias externas ao processador, j que estes poderiam ser armazenados na cache L1 antes de requeridos pelo processador, acelerando a velocidade de processamento. Desta forma, os barramentos de dados passaram a ter uma largura, em bits, maior do que o tamanho da palavra. Nos Pentium originais, o barramento interno de dados tinha largura de 64 bits, atualmente aumentado para 128 bits. Um tamanho maior ou menor de palavra (e, por conseguinte, da UAL e dos registradores de dados) acarreta, sem dvida, diferenas acentuadas de desempenho da UCP. Com o nico propsito de mostrar de forma prtica a influncia do tamanho da palavra na capacidade de processamento de um processador, vejamos um exemplo simples de clculo. Seja, por exemplo, a execuo de uma operao de soma de dois valores A = 3A25 e B =172C, ambos inteiros, sem sinal, com 16 bits de tamanho cada um (os dois nmeros esto representados em hexadecimal, sendo por isso armazenados de forma visual mais inteligvel, denominada big-endian, isto , a parte mais significativa no endereo mais baixo e a parte menos significativa no endereo mais alto. Esta forma utilizada por alguns processadores, mas nem todos. Nos processadores Intel utiliza-se a forma oposta, denominada little-endian. A referida soma ser simulada nos dois sistemas de computao, sistema 1 e sistema 2. O sistema 1 possui palavra de 8 bits, e a memria principal tem 64K clulas de 8 bits cada uma, conforme mostrado na figura 6.6. O sistema 2 possui palavra de 16 bits, e a memria principal um espao de endereamento de 1M clulas, todas tambm com 8 bits cada uma, conforme mostrado na figura 6.7. Em resumo, a unidade de processamento, a palavra, diferente nos dois sistemas, sendo a do sistema 2 o dobro do tamanho da do sistema 1, enquanto a unidade de armazenamento de ambos os sistemas tem o mesmo valor 8 bits. A ttulo de informao pode-se afirmar que ainda nos processadores mais modernos a unidade de armazenamento continua sendo o byte, isto , as clulas so organizadas de modo a cada uma armazenar um byte de dados; enquanto isso, o tamanho da palavra vem evoluindo sistematicamente do valor inicial de 4 bits do primeiro microprocessador para 64 bits dos processadores mais modernos e para o futuro. Operao de soma no sistema 1

43

a) A operao realizada em duas etapas lgicas (na prtica, so gastos diversos tempos de relgio), porque cada valor tem 16 bits e a UCP (UAL, registrador ACC e barramento de dados) s permite armazenar, processar e transferir dados com 8 bits de tamanho. b) Na primeira etapa transferida para a UAL, via ACC e barramento de dados, a 1 metade de cada nmero (25 para o nmero A e 2C para o nmero B) e eles so somados. c) Na segunda etapa a operao realizada de forma idntica, exceto para a 2 parte dos valores (3A para o nmero A e 17 para o nmero B). d) A operao completa gasta um perodo de tempo igual a T1 (soma dos tempos T1/2 da etapa 1 e T1/2 da etapa 2). Operao de soma no sistema 2 a) A operao realizada em uma nica etapa lgica, porque a UCP fabricada para operar valor de 16 bits de tamanho, mesmo tamanho dos nmeros. Desse modo, os nmeros no necessitam ser divididos em duas partes como no sistema 1. b) A operao completa gasta um perodo de tempo igual a T2. Considerando que a operao de soma no sistema 1 realizada em duas etapas e a mesma operao no sistema 2 realizada em uma etapa, o tempo T2 deve ser aproximadamente a metade do tempo T1. Isto torna a capacidade da UCP do sistema 2 bem maior que a capacidade do sistema 1. No projeto de uma UCP, a definio do tamanho da palavra tem enorme influencia no desempenho global de toda a UCP e, por conseguinte, do sistema como um todo. Vejamos; a) Influncia ou desempenho devido ao maior ou menor tempo na execuo de instrues com operaes matemticas na UAL. b) Influncia no desempenho devido ao tamanho escolhido para o barramento interno e externo da UCP. Obtemos o mximo de desempenho quando a largura (tamanho) do barramento de dados , no mnimo, igual ao tamanho da palavra. Se a largura do barramento for, por exemplo, igual a 16 bits em um sistema com palavras de 32 bits (UAL e registradores de 32 bits), ento o movimento de 4 bytes de um dado tipo de caractere requerer dois ciclos de tempo do barramento, ao passo que em barramento de 32 bits requereria apenas um ciclo de tempo. c) Influncia tambm na implementao fsica do acesso memria. Embora atualmente a capacidade das memrias seja medida em bytes (porque sistema operacional clulas so sempre de largura igual a 8 bits), o movimento de dados entre UCP e memria normalmente medido em palavras, porque o barramento de dados que une o RDM (MBR) memria deve acompanhar em largura o valor da palavra. Para uma UCP de 32 bits de palavra, por exemplo, desejvel que a memria seja organizada de modo que sejam acessadas 4 clulas contguas (4 bytes = 32 bits) em um nico ciclo de memora. Se isto no ocorrer, a UCP dever ficar em estado de espera (wait state). Como observamos, atualmente, o barramento de dados ainda maior que o tamanho d palavra, em geral, mltiplo j do tamanho da palavra, em geral, mltiplo j do tamanho da palavra, acarretando um desempenho ainda melhor do sistema. Funo de controle 44

As instrues de mquina que compem um programa em execuo devem estar armazenadas sequencialmente na memria principal (e na cache, se houver uma). J verificamos tambm que a UAL o dispositivo da UCP responsvel por realizar a operao matemtica definida pela instruo que estiver sendo executada no momento. Falta conhecermos mais detalhes sobre as instrues de mquina, a saber: a) O que e como funciona uma instruo de mquina; b) Como a referida instruo de mquina movimentada da memria para a UCP; c) Onde a instruo de mquina movimentada da memria para a UCP; d) Como ser identificada e controlada a ao (a operao) que deve ser realizada. A resposta para estas indagaes est no conhecimento das funes desempenhadas pela rea de controle de uma UCP. A rea de controle de uma UCP a parte funcional que realiza (uma etapa de cada vez em sistemas de execuo sequencial, ou vrias etapas simultaneamente, me sistemas de execuo pipelining) as atividades de: a) Busca da instruo que ser executada, armazenando-a em um registrador especialmente projetado para esta finalidade; b) Interpretao das aes a serem desencadeadas com a execuo da instruo (se uma soma, uma subtrao, uma complementao etc. e como realiz-las). Em ingls essas duas etapas compem o que se denomina fetch cycle, ou ciclo de busca da instruo; e c) Gerao dos sinais de controle apropriados para ativao das atividades requeridas para a execuo propriamente dita da instruo identificada. Esses sinais de controle so enviados aos diversos componentes do sistema, sejam internos da UCP (como a UAL) ou externo (como a memria ou E/S). esta etapa denominada em ingls execute cycle ou ciclo de execuo da instruo. Em outras palavras, a rea de controle projetada para entender o que fazer, como fazer e comandar quem vai fazer no momento adequado. Podemos fazer uma analogia com os seres humanos, imaginando que a rea de controle o crebro que comanda o ato de andar, e a rea de processamento so os msculos e ossos das pessoas que realizam efetivamente o ato. Os nervos so anlogos ao barramento de interligao entre os diversos elementos. A figura abaixo apresenta o diagrama em bloco da UCP, com realce para os dispositivos que fazem parte da rea de controle da referida UCP. Os dispositivos bsicos que devem fazer parte daquela rea funcional so: - Unidade de Controle (UC); - decodificador; - registrador de instruo (RI) ou IR instruction register; - contador de instruo (CI) ou PC program counter; - relgio ou clock; - registradores de endereo de memria (REM) e de dados da memria (RDM). A quantidade, a complexidade e a disposio dos componentes que realizam as funes de controle variam consideravelmente de UCP para UCP, porm, essencialmente, os dispositivos indicados so os mesmos.

45

Unidade de Controle o dispositivo mais complexo da UCP. Ele possui a lgica necessria para realizar a movimentao de dados e de instrues de e para a UCP, atravs dos sinais de controle que emite em instante de tempos programados. A fig. abaixo mostra um diagrama em bloco simplificado com um dos principais elementos da funo controle de um processador, ressaltando a Unidade de Controle, UC. Como tambm se observa na fig. 6.12, a UC se conecta a todos os principais elementos do processador e ao barramento de controle, como, por exemplo, a UAL. Os sinais de controle, emitidos pela UC, ocorrem em vrios instantes durante o perodo de realizao de um ciclo de instruo e, de modo geral, todos possuem uma durao fixa e igual, originada em um gerador de sinais denominado relgio (clock).

46

Os microeventos ou microoperaes comandadas pelo funcionamento da UC podem ser iniciados segundo um de dois princpios de arquitetura: - por microprogramao; - por programao prvia diretamente no hardware. Assim, por exemplo, o incio de um ciclo de instruo consiste em buscar (fetch) a referida instruo e trazer uma cpia sua da MP para o processador (para o registrador de instruo). Para efetivar esta ao so realizadas algumas aes menores que, em conjunto, constituem a desejada transferncia (na realidade, constituem os passos de um ciclo de leitura). Tais operaes menores denominam-se microoperaes, por se constiturem a menor parte individualmente executvel pelo processador. A fig. 6.14 mostra as microoperaes realizadas para completar o referido ciclo de busca. Cada microoperao realizada por iniciativa de um pulso originado na UC em decorrncia de uma prvia programao (diretamente no hardware ou pela execuo de um microinstruo, se a arquitetura do processador microprogramada).

Uma outra caracterstica de funcionamento dos sistemas de computao na rea de controle, mais especificamente com relao Unidade de Controle, refere-se ao modo pelo qual o sistema conduz a execuo das instrues, redundando em diversos tipos de arquiteturas de processadores, tais como: - processadores que executam instrues de modo exclusivamente sequencial ou serial (SISD); - processadores que executam instrues de modo concorrente, ou tipo pipeline ou por linha de montagem. - processadores que executam vrias instrues simultaneamente ou por processamento paralelo; - processadores que realizam processamento vetorial. Relgio o dispositivo gerador de pulsos cuja durao chamada de ciclo. A quantidade de vezes em que este pulso bsico se repete em um segundo define a unidade de medida do relgio, denominada frequncia, a qual tambm usamos para definir velocidade na UCP. A fig. 6.15 mostra um exemplo de um relgio (em geral, um gerador de cristal de quartzo) e os pulsos por ele gerados. Um ciclo de relgio ou de mquina (machine cycle) o intervalo de tempo entre o incio de um pulso e o incio do seguinte. Este ciclo est relacionado realizao de uma operao elementar, durante o ciclo de uma instruo. No entanto, mesmo esta operao no se realiza em um s passo e, por essa razo, consuma-se dividir o ciclo de mquina em ciclos menores (subciclos), defasados no tempo, de modo que cada um aciona um passo diferente da operao elementar. Esses diferentes passos de uma operao elementar denominam-se microoperaes.

47

Na fig. 6.14 apresentamos um exemplo de microoperaes realizadas para completar a busca de uma instruo da MP para o Registrador de Instruo, RI, na UCP. Cada microoperao realizada em um instante de tempo Tn. Esses instantes de tempo so originados no relgio. Se as operaes, para realizar um ciclo de instruo, duram o tempo definido por um ou mais pulsos do relgio, e se estes pulsos tiverem curta durao, mais operaes podem ser realizadas na mesma unidade de tempo (o perodo-base utilizado o segundo, ciclos por segundo, milhes de instrues por segundo, etc.). A unidade de medida utilizada para a frequncia dos relgios de UCP o hertz (Hz), que significa 1 ciclo por segundo mesma unidade de medida de frequncia de sinais analgicos, como a voz. Como se trata de frequncias elevadas, abreviam-se os valores usando-se milhes de hertz, ou de ciclos por segundo (megahertz, ou simplesmente MHz). Assim, por exemplo, se um determinado processador funciona com o seu relgio oscilando 25 milhes de vezes por segundo, sua frequncia de operao de 25 MHz. E como a durao de um ciclo, seu perodo, o inverso da frequncia, ento cada ciclo, ser igual ao inverso de 25.000.000 ou 0,00000004 sistema operacional ou 40 nanossegundos. Uma das caractersticas de processadores mais conhecida dos usurios que trabalham com computadores ou pretendem adquirir um justamente a frequncia do relgio da UCP. Ela realmente pode ser considerada tambm um indicador de desempenho, menos tcnico para os leigos. No entanto, no absolutamente verdade que um processador com velocidade de relgio maior que o outro seja mais eficiente que aquele. Isto porque, se verdade que a maior velocidade de relgio implica pulsos de durao menores, a tecnologia e a arquitetura de projeto do processador podem torn-lo mais eficiente que um outro, mesmo que funcionando com velocidade de relgio menor. O processador Pentium possui uma arquitetura superior ao do processador 80486, com mais estgios de pipelining, memria cache maior, entre outras caractersticas melhores que as do 486. Neste caso, um Pentium funcionando a 66 MHz ter desempenho superior a um 486 que pudesse funcionar a uma velocidade de 80 ou 100 MHz. O processador Intel 8088 foi lanado com velocidade de 4,77 MHz, enquanto atualmente temos processadores funcionando em velocidades muitas vezes maiores, como o Pentium II, o AMD K6 e o Cyrix M1. Registrador de Instruo (RI) Instruction Register (IR): o registrador que tem a funo especfica de armazenar a instruo a ser executada pela UCP. Ao se iniciar um ciclo de instruo, a UC emite sinais de controle em sequencia no tempo, de modo que se processe a realizao de um ciclo de leitura para busca a instruo na memria (uma cpia dela). Conforme definido na programao do ciclo de instruo, ao trmino deste ciclo de leitura a instruo desejada ser armazenada no RI, via barramento de dados e RDM. Contador de Instruo (CI) Program Counter (PC): o registrador cuja funo especfica armazenar o endereo da prxima instruo a ser executada. To logo a instruo que vai ser executada seja buscada (lida) da memria para a UCP (incio do ciclo de instruo), o sistema automaticamente efetiva a modificao do contedo do CI de modo que ele passe a armazenar o endereo da prxima instruo na sequencia. Por isso, comum definir a funo do CI como a de

48

armazenar o endereo da prxima instruo; na realidade, durante a maior parte da realizao de um ciclo de instruo, o CI contm o endereo j da prxima instruo. O CI um registrador crucial para o processo de controle e de sequenciamento da execuo dos programas. Decodificador de Instruo: um dispositivo utilizado para identificar que operao ser realizada, correlacionada instruo cujo cdigo de operao foi decodificado. Em outras palavras, cada instruo uma ordem para que a CPU realize uma determinada operao. Como so muitas instrues, necessrio que cada uma possua uma identificao prpria e nica. A Unidade de Controle est por sua vez, preparada para sinalizar adequadamente aos diversos dispositivos da UCP, conforme ela tenha identificado a instruo a ser executada. O decodificador recebe em sua entrada um conjunto de bits previamente escolhido e especfico para identificar uma instruo de mquina (cada instruo tem um valor prprio, denominado cdigo de operao), e possui 2N sadas, sendo N a quantidade de algarismos binrios do valor de entrada.

A fig. 6.16 mostra um exemplo de configurao de decodificar com entrada de 4 bits e 16 sadas. Cada linha de sada aciona de modo diferente a UC e esta, por sua vez, emite sinais de controle por diferentes caminhos, conforme a linha de sada decodificada. A fig. 4.5 mostra um exemplo do emprego de um sinal de controle para efetivar a abertura de portas lgicas, transferindo dados de um ponto para outro do sistema. Registrador de Dados de Memria RDM e Registrador de Endereos de Memria REM: so registradores utilizados pela UCP e memria para comunicao e transferncia de informaes. Eles sero novamente mencionados durante a descrio de um ciclo de instruo. Em geral, o RDM (ou MBR Memory Buffer Register) possui um tamanho (capacidade de armazenamento de bits) igual ao do barramento de dados; este, atualmente, tem sido construdo com largura, em bits, mltipla do

49

tamanho da palavra do processador. Assim que o Pentium II, por exemplo, possui palavras de 32 bits e seu barramento de dados tem uma largura de 64 bits. O REM (ou MAR Memory Address Register) possui um tamanho igual ao dos endereos da memria (e, consequentemente, do barramento de endereos do sistema). Pela definio do tamanho em bits do REM podemos calcular qual o espao mximo de endereamento da memria principal de um computador. Instrues de mquina A arquitetura bsica dos processadores do tipo Von Neumann, cujos princpios fundamentais ainda so validos, essencialmente calcada na existncia de uma ordem ou instruo para que o processador (o hardware) realize uma determinada operao. Uma mquina pode executar tarefas complicadas e sucessivas se for instruda sobre o que fazer e em que sequencia isso deve ser feito. Uma instruo de mquina a formalizao de uma operao bsica (ou primitiva) que o hardware capaz de realizar diretamente. Podemos, por exemplo, fabricar um processador com uma UAL capaz de somar ou multiplicar dois nmeros, mais ainda no se fabricou uma UAL capaz de executar: X = A+B*C de uma s vez. A UAL tem que ser instruda para executar, em primeiro lugar: T = B*C e, em seguida, realizar a operao: X = A+T. Primeiramente, a UAL efetuar a multiplicao, cujo resultado temporariamente armazenado em algum tipo de memria (dependendo do programa e do sistema), que poderia ser um registrador ou uma clula de memria, para, em seguida, este resultado parcial ser recuperado e somado ao valor A. O projeto de um processador centrado no conjunto de instrues de mquina que se deseja que ele execute (na realidade, do conjunto de operaes primitivas que ele poder executar). Uma das mias fundamentais anlises e decises do projeto envolve o tamanho e a complexidade do conjunto de instrues. Quanto menor e mais simples o conjunto de instrues, mais rpido o ciclo de tempo do processador. Atualmente, h duas tecnologias de projeto de processadores empregadas pelos fabricantes de mini, microcomputadores e de estaes de trabalho: Sistemas com conjunto de instrues complexo (complex instruction set computers CISC) e Sistema com conjunto de instrues reduzido (reduced instruction set computers RISC). Na realidade, todo projeto do processador se resume em: Definir o conjunto de instrues (qual o formato e o tamanho de cada uma, quais as operaes a realizar o que caracteriza a quantidade); Implementar os componentes do processador em funo da definio anterior (UAL, registradores, barramentos, etc.). Do ponto de vista fsico (do ponto de vista do hardware), uma instruo de mquina um grupo de bits que indica ao processador uma operao ou ao que ele deve realizar. Um processador fabricado com a capacidade de realizar uma certa quantidade de operaes bem simples (primitivas), cada uma delas associada a uma instruo de mquina.

50

Funcionalmente, um processador possui instrues capazes de realizar os seguintes tipos de operao: Operaes matemticas (aritmticas, lgicas, de complemento, de deslocamento); Movimentao de dados (memria UCP e vice-versa); Entrada e sada (leitura e escrita em dispositivo de E/S); e Controle (desvio da sequencia de execuo, parar, etc.). Quando se escreve conjunto de instrues, estamos nos referindo a todas as possveis instrues que podem ser interpretadas e executadas por um processador. O processador Intel 8080 possua um conjunto de 78 instrues de mquina, enquanto o Intel 8088 possua 117 instrues, o 80486 possua um conjunto com 286 instrues de mquina e o Intel Pentium II tem seu conjunto de instrues com 217 delas. Formato das instrues De modo geral, podemos separar o grupo de bits que constitui a instruo em duas partes: uma delas indica o que a instruo e como ser executada e a outra parte se refere ao(s) dado(s) que ser(ao) manipulado(s) na operao. A primeira parte constituda de um s campo, enquanto a segunda parte poder ter um ou mais campos, conforme a instruo se refira explicitamente a um ou mais dados. Assim, temos os seguintes campos em cada instruo: Um campo (um subgrupo de bits) chama-se cdigo de operao; O restante grupo de bits (se houver) denomina-se campo(s) do operando(s) Cdigo de operao C.Op. o campo da instruo cujo valor binrio a identificao (ou cdigo) da operao a ser realizada. Assim, cada instruo possui um nico cdigo, o qual servir de entrada no decodificador da rea de controle. A figura 6.18 apresenta exemplos de tipos de operaes primitivas normalmente encontradas na implementao dos processadores. Um processador que possua instrues cujo campo C.Op. tenha uma largura de 8 bits poder ser fabricado contendo a implementao de um conjunto de at 256 instrues diferentes, visto que: C.Op. = 8 bits. Ento: 28=256 cdigos de operao. Como cada C. Op. representa uma nica instruo, ento 256 C. Op. indica 256 instrues de mquina. Campo operando Op. (so) o(s) campo(s) da instruo cujo valor binrio indica a localizao do dado (ou dados) que ser(o) manipulado(s) durante a realizao da operao.

51

Como j mencionado antes, a instruo pode ser constituda de um ou mais campos operando, isto , se a operao for realizada com mais de um dado, a instruo poder conter o endereo de localizao de cada um dos dados referidos nela. Por exemplo, uma instruo que defina uma operao de adio de dois valores pode indicar explicitamente o endereo de cada um dos dois valores (operando 1 e operando 2), bem como o endereo no qual o resultado ser armazenado (operando 3). Nesse caso, o seu formato seria:

Utilizando-se uma forma mais especfica para representar a operao que a instruo indica, teramos: (operando 3) (operando 1) + (operando 2) A mesma operao (necessitando da mesma forma de trs operandos) poderia ser realizada com outro tipo de instruo:

Neste ultimo exemplo, a instruo pode indicar (pelo C. Op. especfico e diferente do C.Op. da instruo anterior) que se deve somar o valor indicado pelo operando 1 com o valor indicado pelo operando 2, e que o resultado deve ser armazenado no operando 1 (poderia tambm ser no operando 2). A instruo seria assim representada: (operando 1) (operando 1)+(operando 2) Ou ainda: (operando 2) (operando 1)+(operando 2) Tambm poderamos utilizar o registrador acumulador (ACC) para armazenar inicialmente um dos valores e, posteriormente, depois da realizao da soma, armazenar o resultado. Como em processadores dotados de ACC, ele tende a ser um s, no h necessidade de explicitar seu endereo; basta programa a UC para utiliz-lo quando decodificar o C.Op. especfico. A instruo teria o seguinte formato:

E sua representao: ACC ACC + (Operando) Pode-se observar, ento, que, em um mesmo conjunto de instrues de um processador, podem existir formatos diferentes de instrues, inclusive para a realizao de uma mesma operao. Os formatos apresentados so uma parte da quantidade de formatos que podem existir distribudos em processadores reais. Uma analise mais detalhada sobre os tipos de instruo que podem ser criados e utilizados, bem como uma comparao entre os fatores positivos e negativos de cada caso, quando se trata especificamente do formato e funcionamento das instrues de mquina dos processadores. Outro fator a ser considerado no projeto do conjunto de instrues de um processador refere-se ao significado do valor binrio indicado no(s) campo(s) operando(s) das instrues. Ou seja, o modo de localizar o dado pode variar de instruo para instruo. Chama-se a isto de modo de endereamento; atualmente h vrios destes modos sendo empregados nos processadores.

52

Consideraes sobre o Formato das Instrues No que se refere definio do cdigo de operao, C.Op., h duas maneiras de se criar um conjunto de instrues de um processador: Instrues com C.Op. de tamanho fixo; e Instrues com C.Op. de tamanho varivel. Conjuntos de instrues com C.Op. de tamanho fixo so mais simples de implementar e de manipular durante a execuo de um programa. Porm, em sistemas que possuem uma grande quantidade de instrues, o tamanho do C.Op. tem de crescer o suficiente para acomodar todos os cdigos necessrios; com isso, aumenta o tamanho das instrues e, consequentemente, o tamanho requerido pelo programa na MP, o que , de um modo geral, uma desvantagem. Neste tipo de C.Op. pode-se calcular imediatamente a quantidade mxima de instrues que pode ser implementada no respectivo processador, apenas sabendo-se a quantidade de bits do campo. Por exemplo, um conjunto de instrues que tenham C.Op. de 6 bits pode ter, no mximo, 64 cdigos diferentes, ou seja, 64 instrues podem ser criadas. Nunca se deve esquecer que a memria, apesar dos avanos tecnolgicos que tm reduzido o seu custo e da maior capacidade por pastilha, ainda representa uma parcela razovel no processo total de um sistema de computao, no devendo, portanto, ser desperdiada. Um valor tpico de C.Op. de tamanho fixo 8 bits. Os microprocessadores Intel 8080 e 8085 so exemplos de utilizao de cdigo de operao (C.Op.) de tamanho fixo igual a 8 bits. Embora seja possvel configurar 256 diferentes cdigos com 8 bits, este no foi o caso dos dois processadores referidos (o 8080 possua um conjunto de 78 instrues; e o 8085, um conjunto de 80 instrues), visto que, na realidade, cada cdigo variava os 6 bits mais significativos, deixando os 2 bits mais direita para indicaes de especificidade na instruo. Instrues que possuem C.Op. de tamanho varivel permitem codificar uma quantidade maior de instrues com menor quantidade de bits, embora muitas vezes se personalize o tamanho do campo operando (reduzindo-se, com isso, a quantidade de endereamento de memria), ou se tenha de aumentar o tamanho total da instruo, acarretando os prejuzos de gasto de memria j mencionados. Basicamente, o C.Op. de tamanho varivel permite que se estabelea um compromisso mais verstil entre a quantidade de bits do cdigo de operao e a quantidade de bits do(s) campo(s) operando(s), de modo a ser criar um conjunto de instrues que atenda ao requisito de mais instrues, com quantidades diferentes de operandos, sem aumentar demasiadamente o tamanho total das instrues. Nos processadores Intel 8086, 8088 e 80286 o cdigo de operao tinha 1 byte de tamanho, enquanto nos processadores Intel 386, 486 e Pentium, o cdigo de operao pode ter 1 ou 2 byte de tamanho. Os processadores Motorola possuem instrues de tamanho varivel entre e 2 bytes. O mais comum utilizar um conjunto de instrues com C.Op. de tamanho varivel, com instrues de tamanho total tambm varivel. Funcionamento da UCP. O ciclo da instruo

53

A base do projeto de uma UCP a escolha do conjunto de instrues que ela ir executar (trata-se de definir que operaes o hardware ser capaz de realizar diretamente atravs de seus circuitos), para em seguida definir e especificar os demais componentes da arquitetura e da organizao, os quais contribuiro para os processos de interpretar e executar cada instruo. O ciclo de instruo pode ser descrito em LTR (linguagem de transferncia entre registradores), de modo que possamos acompanhar sua realizao com a movimentao de informaes nos componentes da UCP/MP. Iniciar RI (CI) buscar a instruo, cujo endereo est no CI (CI) (CI)+1 contedo de CI incrementado para o endereo da prxima instruo Interpretar o C.Op. o decodificador recebe os bits do C.Op. e gera uma sada para a UC Busca Op. (se houver) Executar a instruo Retornar

Vamos considerar a execuo de duas das instrues definidas no modelo UCP/MP hipoteticamente. LDA Op e ADD Op e, utilizando a organizao de MP e UCP dessa mesma figura, vamos considerar alguns valores iniciais existentes ao iniciar a execuo do primeiro ciclo de instruo da instruo LDA: a) A instruo LDA est armazenada na MP no endereo decimal 2, que igual a 0216 e a 000000102. Sua descrio em binrio : 000110110100, ou 1B4 em hexadecimal. Os 12 bits que constituem a instruo tm finalidades diferentes conforme o formato j definido para as instrues, sendo os 4 primeiros para o cdigo da operao (C.Op.) e os 8 restantes para indicar o valor do campo operando, endereo do dado a ser manipulado pela operao (Op.). Assim, temos: C.Op. 116 (00012) e Op. = B416 (101101002) (valor escolhido no exemplo).

54

b) O valor do dado armazenado na clula de endereo B4 igual a 42310 ou 1A716 c) A instruo ADD est armazenada no endereo 0316, e sua descrio em binario : 001110110101 ou 3B516. Como na instruo anterior, os 4 primeiros bits constituem o C.Op. e os 8 restantes o valor de Op.

d) e) f) g) h)

Sendo C.Op. = 316 e Op. = B516. O valor do dado armazenado em B516 07D16. O valor armazenado no CI = 0216 (este valor considerado no exemplo com tendo sido atribudo pelo sistema operacional). O valor armazenado no RI = 31716 (provavelmente o valor da instruo anteriormente executada). O valor armazenado no ACC = 20B16 (tambm um valor obtido em operao anterior). O valor armazenado no REM = B3 e no RDM = 7BC.

Ento, ao terminar um ciclo de uma instruo qualquer, a UC reinicia o processo atravs da execuo do ciclo de uma nova instruo:

1 RI (CI) Resultado: RI = 1B4 (02) 55

Descrio passo a passo: a) A UC aciona a transferncia dos bits do CI para o REM (cpia), pelo barramento interno. Resultado: CI REM = 02 b) A UC ativa a linha READ (leitura) do barramento de controle, o qual reconhecido pelo circuito decodificador de endereos da MP. c) O dispositivo de controle da memria decodifica o endereo. Em seguida, aquele circuito transfere os bits (cpia) da clula de endereo 02, cujo valor 1B4 para o barramento de dados e da para o RDM. Resultado RDM = 1B4 d) No instante seguinte, o valor 1B4 transferido do RDM para o RI, pelo barramento interno do processador. NOTAS: 1. Observe a notao usada, (RI) e (CI), ou seja, RI e CI entre parnteses, para indicar contedo, porque (02) significa trazer o contedo do endereo 02. Se fosse usado o termo CI apenas (sem parnteses), o prprio valor 02 seria transferido para o RI. 2. Para simplificar a explicao, foram omitidos alguns eventos que ocorrem na realidade de um ciclo destes, como por exemplo, a colocao, pelo circuito de controle da memria, de um sinal no barramento de controle confirmando o trmino da transferncia do valor no barramento de dados, de modo que o processador possa utiliz-lo (transferncia para o RDM, etc.).

2 CI CI + 1; Resultado: CI = 03 Como no exemplo adotado cada instruo ocupa uma clula da MP, e as instrues esto organizadas em sequencia, a prxima instruo dever ocupar a clula seguinte, cujo endereo ser, ento, 03. Portanto, 02+01=03, que o endereo seguinte. No entanto, em quase todos os sistemas em funcionamento no h processadores to bemcomportados quanto o especificado na fig. 6.19, especialmente no que se refere relao entre o tamanho das instrues das clulas de MP. Por conseguinte, a realidade est mais para: 56

(CI) (CI)+n, sendo n= quantidade de clulas ocupadas por uma nica instruo, em vez de: (CI) (CI)+1 Alm disso, em sistemas em que o tamanho das instrues varivel, o valor de n varivel tambm e a UC deve ser preparada para este fato.

Nos microcomputadores 8080/8085, cujas instrues podiam ocupar 1, 2, ou 3 clulas de memria (cada clula tinha 8 bits de largura), as instrues eram lidas para a UCP um byte de cada vez (tamanho da clula) e o CI era incrementado de 1 em 1, porm mais de uma vez durante o ciclo da mesma instruo (se a instruo ocupasse 2 ou 3 bytes). OBS: Para um melhor entendimento do fluxo de dados nos exemplos, se ocorrer uma operao de escrita em clula de MP ou registrador, a figura mostrar os dois valores: o anterior esquerda, com uma barra diagonal atravessada; e o novo valor direita. 3 Decodificao do cdigo de operao a) A UC emite o sinal apropriado para que o RI transfira para o decodificar de instruo os 4 bits mais significativos que correspondem ao valor do C.Op. Resultado: decodificador 00012 ou 116 (fig. 6.23)

57

b) O decodificar seleciona, atravs da lgica nele existente, a linha de sada correspondente para a UC a qual emitir os sinais adequados e na sequencia preestabelecida que conduziro a execuo da operao definida pela instruo. Na realidade, a ao decorrente da sada decodificada do C.Op. depende do mtodo utilizado pelo sistema para executar as instrues, seja por microprogramao seja por programao diretamente no hardware. 4 Se tiver operandos, busc-lo(s); seno, passar para o item 5 (fig. 6.23) No presente caso, no h operando a ser previamente buscado. 5 Execuo da operao Resultado: ACC = 1A7 (fig. 6.23) a) A UC emite o sinal para que os bits correspondentes ao valor do campo do operando da instruo B4 sejam transferidos para o REM, pelo barramento interno. Na prtica, em geral h um clculo para se achar o valor de um endereo, como acontecia nos microprocessadores de 16 bits e ainda acontece nos processadores de 32 bits atuais. No nosso sistema bem-comportado isto no necessrio, e o endereo B4 transferido diretamente para o REM. b) A UC ativa a linha READ (leitura) do barramento de controle, o qual aciona o circuito de controle da MP para decodificar o endereo B4. c) Decodificando o endereo, o circuito de controle da MP transfere o valor (o contedo) armazenado na clula de endereo B4 cujo valor 1A7 para o RDM, pelo barramento de dados. Resultado: RDM = 1A7 d) No instante seguinte, a UC emite o sinal apropriado para que este valor seja transferido (cpia) para o ACC pelo barramento interno do processador.

58

Os passos 1 e 2 correspondem ao ciclo de busca (fetch), e os seguintes 3, 4, e 5 correspondem ao ciclo de execuo. O ciclo de instruo realizou dois acessos memria para realizao de dois ciclos de leitura. O que, na prtica, realmente diferencia o desempenho de uma instruo em relao outra a quantidade de ciclos de memria (acessos) que cada uma realiza durante seu ciclo de instruo, visto que o ciclo de memria um tempo pondervel se comparado com o ciclo do processador. Vamos, em seguida, descrever o ciclo da instruo ADD Op., considerando que a instruo seguinte na sequencia da execuo. A fig. 6.24 mostra o subciclo de busca de ADD Op., e a Fig. 6.25 mostra o subciclo da execuo. Nesta instruo ser usado o passo 4 do ciclo de instruo (buscar operando) e haver efetivamente a realizao de uma operao (operao aritmtica de adio), com a consequente ao da UAL. Dados a serem inicialmente considerados, referentes ao trmino da instruo anterior: CI = 03; RI = 1B4; ACC = 1A7; REM = B4; RDM = 1A7 Seguindo as etapas indicadas na fig. 6.20, teremos: 1 RI (CI) a) REM CI = 03 b) Ativao da linha READ pela UC. Decodificao pelo circuito de controle da MP do endereo colocado no barramento de endereos. c) RDM 3B5. Naturalmente, o valor copiado da clula (3B5) vai primeiro para o barramento de dados e da para o RDM, conforme j explicado no exemplo anterior. d) RI 3B5. 2 (CI) (CI)+1 CI = 03 +1 = 04 (Fig. 6.24) 3 Decodificao do cdigo de operao C.Op. = 03 a) Decodificador (RI(C.Op.)) A definio da sada decodificada correspondente operao ADD enviada para a UC. b) A UC emite sinais apropriados para a realizao dos passos 4 e 5, de acordo com sua programao prvia para esse cdigo de operao. 4 Buscar o operando na MP (fig. 6.25) Como a instruo determina que o valor armazenado no ACC (1A7) seja somado a um valor que est na MP, no endereo B5, este valor (operando) deve ser transferido da MP para a UAL (na realidade transferida uma cpia do valor, permanecendo este tambm na sua clula) de modo que, em seguida, possa ser somado. Trata-se, ento, de realizar um ciclo de memria para leitura. a) A UC emite sinal de controle de modo que: REM Op. REM B5, pois Op. = B5 b) O valor B5 colocado no barramento de endereos (UC) e a UC ativa a linha READ. c) O controle da MP decodifica o endereo B5 e, em seguida, os bits armazenados no endereo B5 (07D) so transferidos para o RDM. 59

RDM RDM RDM

(M(REM)) (M(B5)) 07D

d) UAL ACC(1A7), que o primeiro operando ACC RDM (07D) UAL ACC (07D), que o segundo operando H diversos modos de implementar a colocao de valores na UAL. Certos sistemas usam registradores temporrios para armazenar os dois operadores imediatamente antes de serem transferidos para a UAL. Em outros, o barramento interno leva dados diretamente para a UAL, quando desejado. No nosso sistema hipottico, vamos utilizar o ACC como meio de ligao entre o barramento interno e a UAL. 5 Execuo da operao (fig. 6.25) Nesta etapa, a UC emite o sinal correspondente que aciona a entrada dos dois valores no circuito lgico que realiza uma adio e se obtm o resultado na sada. 1A7 + 07D = 224 A soma foi realizada usando-se aritmtica hexadecimal para nmeros inteiros sem sinal. O resultado, valor 224, transferido para o ACC, concluindo a execuo do subciclo de execuo e o ciclo completo da instruo. Se o programa continuasse em execuo, neste momento seria iniciado um outro ciclo de instruo, correspondente ao valor armazenado no endereo 04. A instruo ADD consumiu dois ciclos de memria (para leitura), um para a busca da instruo e outro para a busca do 2 operando. 60

Em termos comparativos, seu tempo bsico de execuo praticamente o mesmo da instruo LDA, visto que ambas realizaram a mesma quantidade de acessos MP, ou seja, dois acessos. A pequena diferena existente reside na operao aritmtica realizada pela instruo ADD. No entanto, se a instruo a ser executada possusse dois operandos, sendo, por exemplo, do tipo: ento, a completa realizao de seu ciclo de instruo consumiria 4 ciclo de memrias (4 acessos), o dobro das duas instrues exemplificadas: um ciclo de memria para buscar a instruo e armazenla no RI; um ciclo de memria para buscar o primeiro operando (Op.1); um terceiro ciclo para buscar o segundo operando e, finalmente, o ultimo ciclo de memria para armazenar o resultado da operao na memria, no endereo indicado por Op.2. Ao mencionar ciclo de memria, estamos nos referindo ao conjunto de etapas que leva a concluir um ciclo de leitura ou um ciclo de escrita, e no aos ciclos de relgio que efetivamente acionam a efetivao de uma micro operao (um dos passos de uma das citadas operaes de memria). Na realidade, a execuo de um ciclo de instruo consome vrios pulsos de relgio, variando-se sua quantidade de acordo com o tipo de instruo. Unidade Aritmtica e Logica UAL A UAL o componente da UCP cuja funo reside na realizao das operaes matemticas requeridas por instrues de mquina. Genericamente, podemos esquematizar o posicionamento da UAL em relao aos demais componentes da UCP como mostrado na figura 6.30. Em geral, a UAL basicamente constituda de circuitos dedicados a realizar operaes de soma, praticar operaes lgicas AND e OR, de um circuito inversor (NOT) ou complemento, de um circuito para efetuar deslocamento dos bits de um nmero e realizar operaes de multiplicao.

61

As operaes matemticas antes referidas so usualmente as de adio, deslocamento, rotao e operaes lgicas, todas essas realizadas sobre dois operandos; e a de complemento, que utiliza apenas um nico operando. Nos sistemas mais antigos, havia a possibilidade de utilizao de dois tipos de processadores, sendo um deles exclusivamente para realizar operaes aritmticas com valores fracionrios, representados em ponto flutuante; tais processadores eram denominados coprocessadores matemticos. A partir do Intel 486, a UAL responsvel pelas operaes em ponto flutuante passou a fazer parte integrante da pastilha do processador. Assim, integradas na mesma pastilha (chip) estavam a UAL responsvel pelas operaes com valores inteiros e uma UAL para valores fracionrios (no caso das arquiteturas dos processadores Pentium h duas UAL escalares, para inteiros, denominadas pela Intel de ALU Arithmetic and Logic Unit e uma UAL que executa as operaes aritmticas de valores fracionrios, representados em ponto flutuante, denominadas pela Intel de FPU Floating Point Unit). Atualmente, todos os processadores se valem deste modelo de arquitetura, integrando na mesma pastilha os dois tipos de UAL. De modo simples, podemos exemplificar o funcionamento da UAL como um conjunto de circuitos lgicos, utilizados conforme o tipo de operao a ser realizada, que recebem na estrada dois valores (ou um valor apenas se, por exemplo, a operao de complemento). Esses valores percorrem o circuito lgico determinado pelo sinal da UC e apresentam o resultado na sada, conforme fig. 6.31. Barramento O barramento de um sistema de computao o elemento responsvel pela interligao dos demais componentes, conduzindo de modo sincronizado o fluxo de informaes de uns para outros dados, endereos e sinais de controle de acordo com uma programao de atividades previamente definida na UC. O barramento de dados consiste em mltiplas linhas condutoras, cada uma permitindo a passagem de um bit de informao (seja de uma instruo ou de um dado). Tais barramentos possuem diferentes tamanhos (quantidade de bits), dependendo do modelo do processador utilizado. Valores tpicos so 8, 16, 32, 64 e 128 bits. O barramento de endereos utilizado para o processador indicar de onde quer ler (buscar) ou para onde deseja grav-lo. Normalmente, a quantidade de bits de um endereo especifica a mxima capacidade de um mdulo de memria principal. Mas o valor binrio colocado no barramento de endereos tambm pode representar o endereo de um dispositivo de entrada ou de sada. Em geral, um ou mais bits do endereo, mostram se o endereo indicado se refere a um mdulo de memria principal ou de um dispositivo de E/S. 62

O barramento de controle constitudo de inmeras linhas pelas quais fluem sinais especficos da programao do sistema. Sinais comumente empregados no barramento de controle so: - leitura de dados (memory read) sinaliza para o controlador de memria decodificar o endereo colocado no barramento de endereos e transferir o contedo da(s) clula(s) para o barramento de dados. - escrita de dados (memory write) sinaliza para o controlador de memria decodificar o endereo colocado no barramento de endereos e transferir o contedo do barramento de dados para a(s) clula(s) especificada(s). - leitura de E/S (I/O read) processo semelhante ao de leitura de dados da memria. - escrita de E/S (I/O write) processo semelhante ao de escrita de dados na memoria. - certificao de transferncia de dados (transfer ACK) o dispositivo acusa o trmino da transferncia para a UCP. - pedido de interrupo (interrupt request) indica ocorrncia de uma interrupo. - relgio (clock) por onde passam os pulsos de sincronizao dos eventos durante o funcionamento do sistema. A fig. 6.38 mostra o esquema lgico de um tipo de barramento (mltiplos barramentos, um para cada tipo de informao que flui durante o processo de execuo de uma instruo bits dos endereos, bits dos dados e sinais de controle), enquanto a fig. 6.39 mostra o exemplo de um cabo de ligao (apresentao fsica de um barramento) entre um perifrico e um processador, constitudo de diversos fios paralelos bem prximos uns dos outros, cada um conduzindo um bit da informao que est sendo transferida (ou um sinal de controle diferente). Um dos aspectos fundamentais de um barramento sua capacidade de compartilhamento pelos diversos componentes interconectados. Assim, por exemplo, em um barramento como mostrado na fig. 6.38, que interliga UCP, memria e perifricos, vemos que todos esses elementos compartilham o mesmo caminho e, por essa razo, somente um conjunto de bits pode passar de cada vez. A programao e sincronizao desse processo crucial para o correto funcionamento do sistema.

Uma observao deve ser feita neste ponto: o modelo mostrado na fig. 6.38 de um nico barramento de dados, endereos e controle, interconectando todos os componentes do computador, no mais empregado. As diferentes caractersticas entre os diversos componentes, principalmente 63

perifricos (a velocidade de uma transferncia de dados de um teclado muitas vezes menor que a velocidade de transferncia de dados de um disco magntico) levou os projetistas de sistemas de computao a criarem diversos tipos de barramento, cada um com taxas de transferncia de bits diferentes e apropriadas s velocidades dos componentes interconectados, sendo os barramentos organizados de forma hierrquica.

Atualmente os modelos de organizao de sistemas de computao adotados pelos fabricantes possuem diferentes tipos de barramento: 1. Barramento local o barramento de maior velocidade de transferncia de dados, funcionando normalmente na mesma frequncia do relgio do processador. Este barramento costuma interligar o processador aos dispositivos de maior velocidade (para no atrasar as operaes do processador), que so a memria cache e a memria principal. 2. Barramento do sistema alguns fabricantes adotam o modelo em que o barramento local interliga o processador memria cache e esta se interliga aos mdulos de memria principal (RAM) por um outro barramento denominado barramento do sistema, de modo a no permitir acesso do processador diretamente memria principal. Uma interface de controle sincroniza o acesso entre as memrias. 3. Barramento de expanso onde se interligam os diversos dispositivos de E/S, como discos magnticos, vdeos, impressoras, DVDs, CD-ROMs, etc. Este barramento se conecta ao barramento do sistema por interfaces de controle (costumam ser conhecidas como pontes ou bridges), que sincronizam as diferentes velocidades dos barramentos. Devido s diferentes e acentuadas velocidades de funcionamento dos dispositivos atuais de E/S, os fabricantes de sistemas de computao tm criado alternativas para aumentar o desempenhos nas transferncias de dados, separando o barramento de expanso em dois, um de mais alta velocidade, para dispositivos de E/S rpidos (mquinas SCSI, redes, placas grficas), e o outro de menor velocidade para os modems, dispositivos seriais, como o teclado e mouse. A figura 6.40 (b) mostra um exemplo dessa tecnologia. A largura (ou tamanho) de um barramento uma unidade de medida que caracteriza a quantidade de informaes (bits em geral) que pode fluir simultaneamente pelo barramento. No caso de fiao, consiste na quantidade de fios paralelos existentes no barramento, ao passo que, em circuitos impressos (placas), consiste nos traos impressos na placa com material condutor, por onde flui a corrente eltrica (o cabo mostrado na fig. 6.35 possui apenas um tamanho corresponde aos vrios fios que o compem).

64

Esta largura (ou tamanho), maior ou menor, se constitui tambm em um dos elementos que afetam a medida de desempenho de um sistema, juntamente com a durao de cada bit ou sinal. A taxa de transferncia, que , em geral, especificada em bits (ou K bits, M bits, etc.) por segundo, depende fundamentalmente da largura do barramento. O intervalo de tempo requerido para mover um grupo de bits (tantos quanto a quantidade de bits definida pela largura do barramento) ao longo do barramento denominado ciclo de tempo do barramento ou simplesmente ciclo do barramento (bus cycle), modo anlogo ao que definimos para o ciclo do processador e para o ciclo de memria. Para entender o funcionamento do barramento de um computador, preciso enfatizar o aspecto de compartilhamento que caracteriza aquele componente, ou seja, como um barramento interliga diversos componentes (seja barramento interno ou externo); as informaes s podem fluir uma de cada vez, seno haver coliso entre os sinais eltricos e o resultado ser ininteligvel , qualquer que seja o destinatrio. 65

Em outras palavras, se a memria principal est enviando dados para a memria secundria (componente de E/S, como um disco magntico, por exemplo), os demais componentes tm que esperar a liberao do barramento para utiliz-lo. Este compartilhamento(um caminho para vrios usurios) implica a necessidade de definio de regras bem explcitas de acesso ao barramento por um usurio (quando acessar, como acessar, como terminar) e de comunicao entre eles (como interrogar um componente destinatrio, que resposta deve ser enviada, quanto dura a comunicao, etc.). estas regras costumam ser denominadas protocolos, sendo, no caso, protocolos do barramento, os quais so usualmente implementados atravs de sinais de controle e exata sincronizao entre eles. Assim, o barramento no se constitui to somente na fiao j mencionada, mas tambm na unidade de controle do barramento, que administra o acesso e as transferncias (implementao do protocolo adotado). Para evitar que cada fabricante de UCP crie seu prprio protocolo de barramento com caractersticas diferentes dos demais (e, com isso, componentes fabricados por terceiros tenham dificuldade de se conectar UCP), os prprios fabricantes tm procurado cria uma padronizao na definio de protocolos (embora o sucesso total ainda esteja longe um s padro em todo o mercado). Ao longo do tempo vrios protocolos de barramento de expanso tm sido definidos; alguns tiveram pouca aceitao, outros no, alguns so proprietrios (so definidos por uma nica empresa que cobra royalties pelo seu licenciamento de uso) e outros no. Entre os mais conhecidos temos: UNIBUS (definido pela DEC), praticamente fora de uso; MCA Micro Channel Architecture(IBM). Nunca conseguiu ser adotado por outro fabricante. Nem mesmo a IBM conseguiu adot-lo por completo, tendo sido abandonado. ISA Industry Standard Adapter. Apesar de possuir uma taxa de transferncia baixa, tem ainda sido adotado para os barramentos de perifricos de baixa velocidade. Os sistemas atuais costumam empregar algumas portas para perifricos com o modelo ISA. EISA Extended ISA. No conseguiu ser implantado devido a diversos problemas de especificao, sendo praticamente abandonado pelos fabricantes. PCI Peripheral Component Interconnect desenvolvido pela Intel, tornando-se quase um padro para todo o mercado, como barramento de E/S de alta velocidade. Permite transferncia de dados em 32 e 64 bits a velocidades de 33 MHz e de 66 MHz, no mximo. Interconecta-se ao barramento local e a outro barramento, tipo ISA, atravs de um circuito para compatibilizar as diferentes caractersticas entre eles. Estes circuitos chamam-se pontes (bridges). USB Universal Serial Bus tem a particular funo de permitir a conexo de muitos perifricos simultaneamente (pode-se conectar at 127 dispositivos em um barramento USB) ao barramento e este, por uma nica tomada, se conecta placa-me. AGP Accelerated Graphics Port barramento desenvolvido por vrios fabricantes, porm liderados pela Intel, com o propsito de acelerar as transferncia de dados do vdeo para a memria, especialmente dados para 3D. Trata-se, pois, de um barramento especfico (para vdeo), no genrico, porm de alta velocidade de transferncia por ligar vdeo diretamente memria principal. Para se projetar um barramento a ser utilizado em determinado sistema de computao, devem-se considerar alguns detalhes:

66

a) Mtodo de controle do acesso ao barramento. Um dos mtodos mais empregados o de mestre/escravo (mster/slave). Um dos componentes (em geral a UCP) o mestre. o nico que pode acessar o barramento, seja para colocar informaes para um determinado componente (escrita), seja para obter informaes de um outro componente (leitura). Os demais componentes so os escravos. Este mtodo tem a vantagem de ser simples e barato de implementar, mas possui uma grande desvantagem: toda a comunicao realizada via mestre (UCP). Se h volume de dados envolvidos nas transferncias, pode ocorrer um grande gargalo no funcionamento do barramento, como, por exemplo, durante a transferncia de dados entre memria secundria e a memria principal. Uma alternativa para eliminar a desvantagem deste mtodo consiste em se adotarem mltiplos mestres no sistema e no um s para todo o sistema. Esse novo mtodo emprega um dispositivo denominado Acesso Direto Memria ou DMA Direct Memory Access (utilizado pela maioria dos sistemas atuais). Ele se caracteriza pela possibilidade de um dos componentes que compartilham o barramento pode ganhar seu controle para transmitir ou receber informaes. Este mtodo, ainda que alivie a UCP para realizar outras tarefas enquanto uma transferncia esteja sendo realizada (por exemplo, entre a memria principal e a memria secundria, pelo DMA), requer maior complexidade nos circuitos de controle do barramento e no componentes do sistema para administrar as diversas solicitaes simultneas de acesso ao barramento e os correspondentes sinais de controle. b) Tipo de sincronizao nas operaes com o barramento. Um outro aspecto de projeto de barramento refere-se ao modo pelo qual os eventos so coordenados no barramento. H duas tcnicas disponveis: Operao sncrona; Operao assncrona. Com a operao sncrona, os pulsos emitidos pelo relgio regulam o aparecimento/desaparecimento dos sinais nas diversas linhas do barramento. Isto , o relgio sincroniza o funcionamento do barramento e a ocorrncia e durao de todos os eventos. Para tanto, o barramento de controle possui uma linha para o relgio, por onde circulam os pulsos gerados por aquele dispositivo, sendo cada pulso denominado ciclo de relgio ou ciclo do barramento (bus cycle). Um relgio de 25 MHz tem, por exemplo, um ciclo de barramento de 40 ns. A fig. 6.41 mostra um exemplo de uma operao de leitura sendo realizada em um barramento sncrono: as linhas do relgio (com ciclos de barramento iguais a T1, T2, T3, etc.); a linha de inicio, que ativada durante um ciclo, para indicar que foram colocados endereo e sinal de controle no barramento (quando isto ocorrer); as linhas de endereo (uma linha dupla para indicar que so mltiplas linhas) e de dados (tambm mltiplas); e a linha de confirmao (colocada pelo dispositivo acionado para indicar quem cumpriu). O ciclo de leitura comea (como qualquer evento) no incio de um pulso de relgio (na transio de 0 para 1 do incio da onda quadrada) pela colocao do endereo de leitura no barramento de endereos, emisso de um sinal de leitura (linha READ alta) e alerta desses passos elevando o nvel da linha de incio. Isto ocorre no primeiro ciclo de barramento, T1. Durante o perodo de relgio seguinte, ciclo de barramento T2, nada acontece no barramento, mas a memria usa este tempo para decodificar o endereo e colocar os dados no barramento, emitindo o sinal de 67

confirmao durante este perodo. Aps o inicio do 3 e ltimo ciclo de barramento, T3, a UCP transfere os bits que esto no barramento de dados para o RDM. Se a memria no conseguir (porque lenta) decodificar o endereo e colocar os bits de dados no barramento correspondente no tempo requerido, isto , entre o instante em que o sinal READ e Incio foram detectados e o instante (algum tempo depois do incio de T3) em que o dado colocado efetivamente no barramento, a UCP precisa esperar mais e, para isso, a memria ativa uma linha de espera (WAIT), no mostrada na figura. o que se chama de estado de espera (wait state). Haver tantos ciclos de barramento para espera quantos a memria precisar. Assim que estiver pronta para colocar os dados no barramento, ela desativa a linha de espera.

No exemplo mostrado, um sistema com relgio de 25 MHz gastaria trs ciclos, o mnimo, para realizar a leitura, cerca de 120 ns, caso no houvesse estados de espera no meio. J na operao do tipo assncrona no h relgio sincronizador, nem eventos com durao certa de um ciclo de barramento (j que no h relgio). claro que quando nos referimos ausncia de relgio apenas com relao a no haver pulso de relgio para o barramento. Com o mtodo assncrono, cada evento depende somente da ocorrncia de evento anterior, o qual pode ter durao diferente em tempo. Na fig. 6.42 apresentado o diagrama de tempo da mesma operao de leitura exemplificada para o caso de barramento sncrono, s que, neste caso, ela est sendo realizada para um barramento assncrono. Foram usadas as seguintes linhas para o exemplo em questo: de endereos, de dados, de READ, de iniciao do processo (MSYN mster synchronization ou sincronizao de mestre) e de resposta do escravo (SSYN slave synchronization ou sincronizao de escravo). Quando a UCP deseja realizar uma operao de leitura, a UC coloca o endereo da clula de memria (se o acesso foi memria, o que no necessariamente verdade, pois poderia ser a um perifrico), ativa o sinal de leitura READ, para identificar qual a operao a ser realizada, e ativa o sinal MSYN, para 68

indicar que a ao deve ser realizada, com o endereo no barramento; ele aparece depois, de modo a dar tempo aos sinais de endereo para se estabilizarem na linha. Assim que o escravo detecta (sensa) o sinal MSYN, ele inicia imediatamente a operao requerida, isto , decodifica o endereo e coloca os dados no barramento. Ao concluir esta atividade, o escravo informa atravs da ativao de um sinal de resposta, SSYN. E o barramento volta a estar disponvel para qualquer outra operao. Como mostramos alguns diagramas de tempo, interessante consolidar neste ponto algumas convenes comumente estabelecidas para a representao de informao nestes diagramas.

a) Os sinais que transitam nas linhas podem assumir dois nveis de tenso eltrica; um alto, correspondente ao bit 1, e outro, baixo, correspondente ao nvel 0. b) Linhas que transportam grupos de bits, como as de endereo ou de dados, podem ou no ser representadas como uma linha mais larga para indicar a noo de grupos de bits. c) Em um sistema real, a transio do 0 para o 1, denominada borda frontal (leading edge), e a transio do 1 para o 0, chamada borda traseira (trailing edge), realizada em um perodo de tempo finito (e no instantaneamente), o que acarretaria a representao do sinal como mostrado na fig. 6.43(b). No entanto, costuma-se representa o sinal de forma mais quadrada, como se subida e descida fossem instantneas (fig. 6.43(a)).

69

d) Em um barramento assncrono, tendo em vista que no h unidade fixa de tempo para relacionar as tarefas de uma dada operao, no h qualquer tipo de relao entre os vrios sinais que circulam no barramento. Por essa razo, comum o uso de linhas para unir o sinal que origina um outro (ou outros), terminando com uma seta na ponta do sinal que sucede. No exemplo da fig. 6.42, com os sinais iniciais, READ e de endereos, nada acontece, pois esto sendo ativados pela UC. Em seguida (aps o tempo Ta), ocorre o sinal MSYN, que ativa as linhas de dados (observe a linha partindo da borda frontal do sinal MSYN e a seta na borda frontal da linha de dado) e faz o escravo ativar SSYN. A ativao do sinal SSYN (borda frontal) acarreta a desativao das linhas de endereo (seta na borda traseira), da linha READ e do sinal MSYN. Por sua vez, quando MSYN desativado, SSYN tambm o , e o ciclo de leitura encerrado. Comparao entre o Barramento Sncrono e Assncrono O barramento sncrono simples de implementar e testar, justamente devido sua natureza inflexvel no tempo. Em consequncia, qualquer atividade entre mestre e escravo somente pode se realizar em quantum fixo de tempo, o que se torna uma desvantagem. Isto porque o barramento sncrono pode ter problemas, por exemplo, ao trabalhar com dispositivos que tenham tempos de transferncia diferentes. O que no acontece com o barramento assncrono, que, por no depender de relgio com intervalos fixos de tempo, pode conviver com dispositivos que tenham velocidades baixa e alta, que utilizam tecnologia antiga e avanada. Assim, em um certo momento, a UCP pode operar com um determinado dispositivo (escravo), que opera com certa taxa de transferncia (tempo). Os sinais se sucedem no barramento a partir da colocao do endereo, READ e MSYN na linha, independentemente de sua durao. Por isso, a operao seguinte pode ser realizada com outro dispositivo que tenha velocidade maior ou menor, porque tudo acontecer tambm a partir do MSYN. Tipos de Controle em um Processador A UC o elemento da UCP cuja funo consiste em coordenar a execuo completa de uma instruo de mquina (dos passos que caracterizam um ciclo de instruo), isto , ela emite os sinais de controle para a ativar a realizao de cada etapa do ciclo da instruo (ver fig. 6.20). Os sinais de controle para ativar as etapas so diferentes para cada instruo, pois as tarefas a serem executadas para a ao de somar so diferentes das da ao de subtrair. A UC deve, ento, ser construda contendo a programao de emisso destes sinais conforme a instruo que ser decodificada. A execuo de um programa consiste, na realidade, na consecuo de uma srie de pequenos passos pelo hardware menores talvez do que pudssemos supor inicialmente. A fig. 6.44 mostra um diagrama da decomposio de um programa em etapas cada vez menores, cuja efetiva realizao vai nos auxiliar a entender melhor o funcionamento da rea de controle e seus diferentes modos de implementao. O diagrama mostrado na fig. 6.44 contempla apenas as etapas de realizao de um programa escrito em linguagem de mquina. Na realidade, programas costumam ser desenvolvidos em linguagens menos simples, redundando em comandos mais complexos, estando, pois, em um nvel superior do diagrama.

70

H duas maneiras utilizadas no projeto e no funcionamento de uma UC de caracterizar conceitos diferentes de controle: Controle programado diretamente no hardware (hardwired control); e Controle por microprogramao. A diferena bsica entre os dois tipos est no processo de controle da realizao do ciclo de instruo. No primeiro caso (hardwired), cada etapa realizada segundo uma lgica preestabelecida, implementada fisicamente no hardware da rea de controle. No caso de controle microprogramado, a interpretao e as consequentes etapas do ciclo de instruo so realizadas passo a passo por um programa, denominado microprograma.

Controle programado no hardware Neste tipo de implementao, a Unidade de Controle construda como um conjunto de circuitos logicamente combinados, os quais produzem sinais de controle de sada de acordo com os sinais de entrada recebidos no circuito. As figs. 6.15 e 6.16 mostram, no seu conjunto, as caractersticas de uma UC deste tipo, o que pode ser consolidado no esquema da fig. 6.45, com todos os principais componentes da rea de controle apresentados de forma integrada. Para entender adequadamente como funciona este tipo de controle, vamos apresentar um exemplo prtico: Consideremos uma UCP simples, com um nico ACC, uma UAL, o RI, o CI, o REM, e o RDM e o barramento interno que conduz os sinais de informao entre eles, conforme mostrado na fig. 6.46. A figura no mostra a fiao por onde passam os sinais de controle gerados na UC, mas, para auxiliar o nosso entendimento, ela apresenta os pontos terminais destes sinais, numerados como C, e com um crculo ao lado da correspondente numerao. A Unidade de Controle recebe entrada do relgio, entrada do registrador de instruo (atravs do decodificador) e dos flags. Em cada ciclo de relgio, a unidade de controle realiza a leitura de todas as entradas, as quais passam por alguns de seus circuitos lgicos internos, e emite os correspondentes sinais de sada. A movimentao de dados de um local para outro um dos eventos mais frequentes durante a realizao de um ciclo de instruo. Anteriormente, mencionamos que isto ocorre atravs da 71

abertura de uma porta lgica no caminho entre os dois locais e que esta porta era aberta como consequncia da chegada, em uma de suas entradas, de um sinais de controle. O crculo C4 da fig. 6.46 mostra exatamente a porta lgica que permite, por exemplo, que uma instruo vinda da memria seja transferida do RDM para o RI, durante o ciclo de busca. Isto ocorrer quando, em C, chegar um sinal de controle da UC. A essncia do processo consiste em entendermos como funcionam os circuitos combinatrios internos da UC. Para cada sinal de entrada, produz-se um sinal de sada derivado de uma expresso booleana implementada nos circuitos da UC.

Vamos considerar o sinal C5 de controle. Este sinal acarreta a leitura de dados do barramento externo para o RDM. Alm disso, no ciclo de busca de um ciclo de instruo temos: t1: REM (CI) sinais de controle ativo: C2 t2: (CI) (CI)+1 sinais de controle ativo: C5 e READ 72

RDM T2: RI

Memria (RDM)

sinal de controle ativo: C4

necessrio ainda definir dois novos sinais de controle: P e Q, onde P =0 e Q = 0 para o ciclo de busca. Desta forma, pode-se definir C5 pela seguinte expresso booleana: C5 = P.Q.T2+P.Q.T2 ou C5=(not P and not Q and not T2) or (not P and not Q and not T2) Isto , o sinal C5 ser igual a 1 durante o 2 perodo de tempo (T2) no ciclo de busca (P.Q.T2) e em outro estgio do ciclo de instruo no constante de nosso exemplo. A equao lgica mostrada ainda no est completa. Falta incluir a parte relativa execuo de instrues. Suponhamos, por exemplo, que as instrues LDA e ADD so as nicas (do conjunto de instrues do nosso computador) que realizam leitura de dados da memria. Assim; Onde P = 1 e Q = 0 para o ciclo de execuo e LDA/ADD so resultados da decodificao. O processo exemplificado, que resultou na expresso lgica para C5, deve ser repetido para cada um dos outros sinais de controle gerados pela UCP. A consequncia final a construo de inmeras expresses lgicas que definem o comportamento da UC e, por fim, da UCP. Pelo exemplo da fig. 6.46 podemos imaginar a enorme quantidade de expresses lgicas que devem ser definidas para uma UCP grande e real, o que garante extrema complexidade tarefa. Alm disso, h uma grande inflexibilidade no mtodo, visto que qualquer alterao que se deseja fazer em algum elemento da UCP (incluso de dispositivo, etc.) acarretar a necessidade de redefinio de todo o conjunto de expresses lgicas. A vantagem do processo que a instruo de mquina buscada imediatamente executada pelo hardware, com o consequente ganho de velocidade. Processadores com arquitetura RISC utilizam essa tcnica de funcionamento da UC visando justamente a este ganho de velocidade na execuo dos ciclos das instrues. Como as instrues de mquinas RISC tendem a ser mais simples, tambm a tarefa de especificar as inmeras expresses lgicas tem sua complexidade um pouco reduzida. Controle por Microprogramao O funcionamento da Unidade de Controle de um processador j bastante complexo por sua prpria natureza (sincronizao e gerao de uma enorme quantidade de sinais para controlar, no tempo certo, a efetivao de vrias aes dentro do processador), especialmente se este controle tiver que ser realizado atravs de um conjunto de circuitos lgicos. Em que consiste, na realidade, a execuo de um ciclo de instruo? Na realizao de uma certa quantidade de pequenas operaes, basicamente de transferncia de valores binrios entre registradores e, eventualmente, de uma operao matemtica qualquer. Estas pequenas operaes (pequenas pela sua simplicidade e curta durao) so denominados microoperaes. A fig. 6.47 mostra um exemplo de um ciclo de busca (primeira parte do ciclo de uma instruo) contendo no s as microoperacoes a serem realizadas, mas tambm os perodos de tempo distintos entre elas. Na fig. 6.47(b) cada linha mostrada se constitui em uma microoperao; a linha em que no est mostrado o perodo t aquela que se realiza no mesmo instante que a linha anterior. Uma microoperao a menor ao que pode ser realizada em um processador, consistindo em geral na ativao de um flip-flop (por um pulso de relgio), ou ainda na abertura de uma porta lgica para movimentao de dados de um registrador para outro. 73

Uma microinstruo o processo prtico de definir uma microoperao, determinando qual porta lgica deve ser aberta ou em qual registrador um sinal de relgio deve ser introduzido. Deste modo, para cada microoperao mostrada na fig. 6.47 deve haver uma microinstruo que indique o sinal apropriado a ser emitido para sua realizao. Por exemplo, para efetivar a transferncia dos bits de endereo de uma instruo, os quais esto armazenados no CI (1 linha da fig. 6.47(b)), para o rem, h uma porta lgica no caminho entre CI e REM (uma linha de controle, vindo da UC, une os dois), que ser ativada (bit 1 aparece durante o intervalo de tempo correspondente a t1) pela interpretao da microinstruo correspondente. Para melhor entendimento do que ser descrito a seguir, vamos considerar que macroinstruo (termo utilizado normalmente, sendo adotado aqui em contraposio microinstruo, este sim largamente difundido) uma instruo em linguagem de mquina (mnemnico assembly do tipo ADD, LDA etc.), e que o processo de executar uma macroinstruo denominado interpretao (no confundir com a tcnica de interpretao de programas), se foi realizado, claro, segundo a metodologia de microprogramao. Assim, foi inserido um nvel intermedirio entre o nvel de linguagem de mquina (que era at ento o nvel mais baixo de software) e o nvel de hardware. Este nvel, denominado firmware, constitudo pelo microprograma citado. O primeiro e mais famoso sistema de grande porte microprograma foi o sistema IBM/360 em 1964. Na prtica, parece que temos uma micro-UCP no interior da UCP, visto que deveremos ter para executar o microprograma: Memria usualmente chamada memria de controle, que armazena as microinstrues. , em geral, do tipo no-voltil, isto , ROM, de modo que um usurio no destrua acidental ou intencionalmente seu contedo. Micro contador de instrues para armazenar o endereo da prxima microinstruo. Microrregistrador de instruo que armazena a microinstruo correntemente sendo interpretada. A fig. 6.48 mostra um exemplo de Unidade de Controle microprogramada.

74

Tipos de projeto de microinstrues H dois mtodos de formatar e usar uma microinstruo: Microinstrues horizontais; e Microinstrues verticais. Uma microinstruo horizontal (ver fig. 6.49) projetada de modo que cada bit da macroinstruo tenha uma funo especfica controlar uma linha de controle interna da UCP (p.ex., abrir uma porta lgica); controlar uma linha do barramento externo de controle; definir uma condio de desvio e endereo de desvio, quando for o caso. Uma instruo desse tipo executada atravs: Da ativao das linhas de controle cujo correspondente bit de valor igual a 1 (a microoperao realizada). As demais (valor do bit correspondente igual a zero) permanecem como anteriormente; Da avaliao dos bits de condio: se todos forem iguais a zero, deve-se executar a prxima macroinstruo em sequencia, isto , no h desvio. Se um dos bits de condio for igual a 1, ento ser executada em seguida a macroinstruo cujo endereo na memria de controle consta do campo de endereo. Um formato deste tipo tem a vantagem de ser o mais simples e direto possvel, podendo controlar vrias microoperacoes em paralelo (no mesmo ciclo de relgio). Ele tem uma outra vantagem potencia, referente a uma eficiente utilizao do hardware, pois pode iniciar vrias microoperacoes simultneas. No entanto, tem uma grande desvantagem no que se refere ocupao do espao de 75

memria de controle. Justamente porque usa um bit para cada ao, e como em um computador de razovel capacidade de processamento a quantidade de microoperacoes grande, as microinstrues tm um tamanho normalmente extenso (s vezes, mais de 60 bits so usados em uma macroinstruo) e, em consequncia, o tamanho requerido para a memria de controle tambm o , o que acarreta elevao de custos para o projeto da UCP.

Para evitar o excesso de bits de uma macroinstruo horizontal, pode-se introduzir um passo de decodificao no processamento da macroinstruo. Em outras palavras, em vez dos bits de macroinstruo acessarem diretamente uma linha de controle, esses bits podem significar o cdigo de um grupo de aos. A Unidade de Controle necessitar, ento, de um decodificador extra para identificar quais as linhas que sero efetivamente ativadas. Este tipo de macroinstruo denominado vertical. Assim, por exemplo, possvel incluir na macroinstruo um cdigo de 4 bits, que representa 16 linhas de controle. Desse modo, economizam-se 12 bits (16-4) na instruo. A fig. 6.50 mostra um exemplo de formato de macroinstruo vertical. Um formato do tipo vertical tem a vantagem de reduzir o custo da UC, pois a memria de controle se torna menor em tamanho devido reduo dos bits das microinstrues, embora possa haver mais microinstrues. Por outro lado, ocorre uma perda de tempo devido necessidade de decodificao dos campos de cada microinstruo e, nesse caso, o tempo de processamento da macroinstruo se torna maior do que quando se trata de microinstrues horizontais.

76

possvel criar um projeto de formato misto, de modo que a macroinstruo resultante no seja totalmente horizontal isto , com maior quantidade possvel de bits nem totalmente vertical, isto , com a codificao de todos os campos. Este formato, conquanto reduza a quantidade de bits em relao ao formato horizontal (reduz o custo da memria de controle), no introduz acentuada perda de tempo em decodificao.

Qualquer que seja a considerao, sempre haver a diferena de desempenho e custo entre os dois formatos, induzindo os usurios a diferentes escolhas, de acordo com suas necessidades. O usurio que desejar um sistema de controle rpido, embora caro, certamente optar pelo formato horizontal, ao passo que o usurio cuja prioridade seja baixo custo, mesmo com perda de desempenho em tempo, dever optar pelo modelo de macroinstruo vertical. Na realidade, um microprograma constitudo de vrias microrrotinas (grupos de microinstrues com o mesmo propsito), sequencialmente armazenadas na memria de controle, 77

sendo que, em geral, a primeira rotina refere-se realizao do ciclo de busca de uma macroinstruo. A fig. 6.51 mostra um exemplo de configurao de memria de controle com as diversas rotinas armazenadas em sequencia. O processamento normal consiste em um loop permanente com a 1 rotina (que realiza o ciclo de busca de uma macroinstruo) e, da para diante, acessa-se a rotina referente macroinstruo desejada, identificadas pelo seu cdigo de operao, atravs de desvio para o endereo apropriado, obtido durante a decodificao da C.Op. Elementos Auxiliares Circuitos de Apoio (chipsets): o funcionamento de um sistema de computao envolve o controle do funcionamento de diversos componentes, bem como sua sincronizao e cadencia com que os eventos internos so realizados (dependente da frequncia do relgio utilizado). Entre as diversas atividades que devem ser controladas podem-se citar: as interrupes, a transferncia de dados entre a MP e a memria cache e entra esta e os registradores internos ao processador, o funcionamento de um dispositivo denominado DMA Direct Memory Access, para transferncia direta de dados entre os discos e a MP. Nos primeiros sistemas de computao para microprocessadores (aqueles baseados nos processadores 8088, as funes de controle mencionadas eram realizadas por circuitos separados, existentes em pastilhas especficas para cada finalidade. Se observarmos a placa-me desses antigos computadores poderemos verificar a existncia de muitas dessas pastilhas. Com o passar do tempo esta concepo de pastilhas individuais para o controle de cada funo foi evoluindo para a integrao das funes em um ou poucas pastilhas (chips). A denominao inglesa chipset , ento, decorrente dessa integrao. Em ingls, chipset significa conjunto (set) de chips, pois em uma pastilha (chip) se integram vrias funes anteriormente realizadas por pastilhas (chips) individuais. Atualmente, possvel encontrar placas-me com um ou dois ou at mesmo 4 chipsets, visto que, nem sempre, possvel integrar todas as funes requeridas pela placa-me em uma nica pastilha (chip). A fig. 6.69 mostra exemplos de chipsets, sendo que, como se pode observar, a Intel costuma denominar os chipsets que fabrica conforme o barramento de E/S que ele controla, seja PCI (e, nesse caso, ela o chama de PCIsets) seja AGP (denominado de AGPsets).

Naturalmente que se torna mais barata a fabricao de um pastilha para realizar vrias tarefas em vez de vrias pastilhas para realizar as mesmas tarefas, somente que de forma individual. Alm disso, o projeto e o prprio uso se tornam mais simples no caso dos chipsets, o que permite, tambm, uma maior compatibilizao no uso das placas-me.

78

Atualmente, h vrias empresas que se destacam no mercado como fabricantes de chipsets, enquanto outras se especializam na fabricao de placas-me, uma situao normal, considerando o grau de padronizao hoje existente, para o que o surgimento dos chipsets veio contribuir tambm. Devido natureza dos elementos de desempenho do sistema que os chipsets controlam, seu funcionamento tem um peso considervel no referido desempenho, devendo a escolha do modelo especfico se rum requisito essencial. De uma maneira geral, os chipsets controlam os seguintes elementos em um sistema de computao: - o processador que inclui a velocidade e o tipo do processador, e se a placa-me poder suportar multiprocessamento; - a memria cache o tipo e o nvel, bem como o funcionamento da cache e sua ligao com a MP e o processador; - o funcionamento da MP decodificao dos endereos e controle da transferncia de dados; - a sincronizao dos eventos e o controle do fluxo dos bits; - controle do funcionamento do barramento de E/S; - gerenciamento da alimentao eltrica para o sistema. Organizao de Dados na Memria do Tipo Big-Endian e Little Endian Poucos itens ou elementos podem ser considerados completamente padronizados pelo mercado da computao, de modo que diferentes sistemas possam se comunicar sem problemas ou sem necessidade de elementos intermedirios de interface. Assim com o conjunto de instrues e arquitetura de registradores, que a Intel e a Motorola, por exemplo, projetam de modo diferente, como tambm quanto ao conjunto de cdigos de caracteres (temos ASCII, EBCDIC, Unicode, etc.). No entanto, talvez grande parte das pessoas no possa imaginar que tambm a ordem com que os bytes e bits so armazenados em um sistema no padronizada, o que acarreta, por isso, alguns problemas, requerendo elementos de intermediao quando se transferem dados entre dois sistemas projetados por fabricantes diferentes e que usem mtodos diferentes de ordenar os dados internamente. Quando mencionamos a ordem dos bytes queremos indicar que os bytes que constituem uma palavra podem ser armazenados na MP da direita para a esquerda ou vice-versa, da esquerda para a direita. Em outras palavras, supondo que um certo sistema utilize palavras de dados de tamanho igual a 32 bits (4 bytes ou 8 algarismos hexadecimais), um dado com o valor hexadecimal 6151CE94 pode ser armazenado na memria de um sistema de dois modos: 1) 6151CE94, ou da esquerda para a direita (so armazenados a partir da clula de menor endereo para a clula de maior endereo, conforme mostrado na figura 6.72(a)). 2) 94CE5161, ou da direita para a esquerda (so armazenados a partir da clula de maior endereo para a clula de menor endereo, conforme mostrado na fig. 6.72(b)). O mtodo mostrado inicialmente na fig. 6.72(a) denominado big endian, sendo empregados em mquinas fabricadas pela Motorola, IBM, e Sun, e o outro mtodo (fig. 6.72(b)) denominado little endian, adotado pela Intel, Compaq e outros.

79

Embora haja, como indicado acima, fabricantes que adotam um ou outro mtodo para armazenar os bytes de um valor multibyte, praticamente todos adotam um nico mtodo para armazenar os bits em um byte, o mtodo big endian, ou seja, p. ex., do armazenamento do valor hexadecimal 61 (1 byte), teramos: 01100001 Naturalmente, qualquer dos dois mtodos teria pouco significado se tratarmos de um sistema individualmente. No entanto, se ligarmos duas mquinas em uma rede de comunicao de dados e uma das mquinas (a que usa o mtodo big endian, p.ex.) transferir dados para a outra (que usa o mtodo little endian), teremos um problema de entendimento entre elas sobre qual dados est sendo referido, devido ordem diferente, o que implicar a necessidade de um interfaciamento para compatibilizar os dois mtodos. Entrada e Sada Os componentes bsicos de um sistema de computao so: a unidade central de processamento UCP, a memria principal MP, a memria secundria MS e os mdulos de entrada/sada E/S. A interligao UCP/MP pode ser vista como mostrado na fig. 10.1, atravs do triplo barramento de dados, endereo e sinais de controle.

No entanto, para que possamos desfrutar da rapidez e flexibilidade de um computador, no basta sabermos que ele pode armazenar na memria os programas e dados que desejamos processar, ne3m que ele pode executar mais de um milho de instrues por segundo. preciso que o programa que temos escrito em uma folha de papel e os dados que sero por ele manipulados sejam inseridos no sistema, caractere por caractere, inclusive os espaos em branco entre os caracteres, os 80

sinais de pontuao e os smbolos de operaes matemticas. Para tanto, precisamos de um meio qualquer que faa essa comunicao homem-mquina. Um teclado do tipo semelhante ao de uma mquina de escrever pode servir como elemento de entrada. Em geral, os dispositivos de entrada ou de sada so denominados perifricos (porque se encontram instalados fora do ncleo principal UCP/MP, mas ficam na maior parte das vezes prximos, isto , na sua periferia). A fig. 10.2 mostra um esquema representativo da comunicao entre o usurio e a mquina, para introduzir informaes no sistema.

Da mesma forma que temos a necessidade de comunicao com a mquina, tambm preciso que haja comunicao no sentido contrrio, isto , mquina-homem, de modo que o usurio possa entender os resultados de um processamento . uma impressora ou uma tela de vdeo pode servir como dispositivo de entrada ou de sada ou simplesmente perifrico). A mesma fig. 10.2 mostra este tipo de comunicao. A fig. 10.1 mostra o modo de interligao adotado para a comunicao UCP/MP: o barramento. Este mesmo mtodo define a interligao do conjunto UCP/MP aos perifricos. atravs do barramento do sistema (system bus), j citado no cap. 6, que se pode, ento, interligar todos os componentes de um sistema de computao e por onde fluem os mesmos tipos de informao, dados, endereos e sinais de controle. A fig. 10.3 mostra um diagrama simplificado dessas ligaes.

81

Na realidade, o barramento do sistema permite o compartilhamento de informaes entre os diversos componentes de um computador, da mesma forma que o barramento interno da UCP permite o trnsito de informaes entre os registradores e demais unidades da UCP. A fig. 10.4 mostra dois exemplos do uso do barramento do sistema em computadores, conforme j foi mostrado no item 6.6.3. Na fig. 10.4(a) apresentado um esquema de barramento mltiplo, com canais separados para dados, endereos e sinais de controle, enquanto, na fig. 10.4 (b), mostrado um exemplo de barramento nico (unibus).

Existem diversos tipos de barramento utilizados nos atuais sistemas de computao, os quais podem ser genericamente classificados em trs categorias: Barramento local; Barramento do sistema; Barramento de expanso. Os dois primeiros esto relacionados interligao do processador com os mdulos de memria cache e principal, enquanto o barramento de expanso foi a maneira encontrada para interligar os perifricos, dispositivos de velocidade mais baixa que a UCP/Memria, aos elementos de maior velocidade (UCP/MP). O barramento de expanso pode ser implementado em duas partes, uma para os dispositivos de E/S de maior velocidade, como os discos, modems, rede, e a outra, mais adequada aos dispositivos de menor velocidade, como teclado, mouse e outros. O funcionamento do conjunto de dispositivos de entrada/sada de um computador , em geral, caracterizado pela existncia de diversos elementos que, embora realizem o mesmo tipo de funo (tenham o mesmo objetivo de comunicao homem-mquina), possuem caractersticas bem diversas. Por isso, costuma-se integrar os diversos elementos que cooperam no processo de entrada e sada, em um subsistema, como parte do sistema de computao. Um subsistema de entrada/sada (E/S) deve, em conjunto, ser capaz de realizar duas funes: 82

- receber ou enviar informaes ao meio exterior; - converter as informaes (de entrada ou de sada) em uma forma inteligvel para a mquina (se estiver recebendo) ou para o programador (se estiver enviando). A fig. 10.5(a) mostra exemplos de smbolos utilizados pelos seres humanos para representar informaes, enquanto a fig. 10.5(b) mostra os smbolos usados pelos computadores. No primeiro caso, a grande variedade de formas dos smbolos interpretada pelo ser humano primariamente por observao visual. No caso dos computadores, a variedade se restringe apenas aos valores 0 e 1 e, por serem mquinas, no utilizam o processo visual entendendo dois diferentes nveis de intensidade de sinais eltricos, campos magnticos com dois sentidos de magnetizao, etc. Da termos mencionado a funo converter dos dispositivos ou perifricos de E/S. Eles convertem, por exemplo, o movimento de presso de uma tecla em vrios sinais eltricos, com intensidades diferentes. Sobre a relao e comunicao entre o conjunto UCP/MP e o subsistema de E/S h algumas observaes interessantes a serem mencionadas: a) A primeira observao refere-se s diferentes caractersticas de cada dispositivo de E/S, o que tornaria extremamente complicada a comunicao UCP perifrico, se esta fosse realizada direta e individualmente, isto , se houvesse uma comunicao direta entre a UCP e o teclado, entre a UCP e a impressora, entre a UCP e o vdeo, e assim por diante. A fig. 10.6 mostra um esquema desse tipo de comunicao. Da figura, podemos observar que o teclado um dispositivo lento comparativamente com os discos e que o mouse e o teclado enviam os bits um a um, ao passo que o vdeo e a impressora recebem da UCP as informaes byte a byte. J os discos e os disquetes trocam informaes com o conjunto UCP/MP em blocos de bits para otimizar a transferncia. Obviamente, nessa figura no esto assinaladas todas as diferenas entre os diversos dispositivos, existindo diferenas at mesmo relativas parte eltrica de gerao e interpretao dos sinais de transmisso. A tabela 10.1 apresenta uma relao de dispositivos de E/S e a velocidade mdia com que transferem informaes para o interior do sistema, de modo que possamos entender melhor uma das diferenas entre elas. Devido a essas diferenas, na prtica a UCP no se conecta diretamente com cada perifrico, mas sim com dispositivos que realizam a traduo e a compatibilizao das caractersticas de um (dispositivo de E/S) para outro (UCP/MP), alm de realizar outras tarefas de controle. Esses dispositivos costumam ser chamados de interface de E/S, porm h outros nomes igualmente utilizados pelo mercado, por exemplo, controlador (inserindo-se tambm o nome especfico do perifrico, como controlador de disco, controlador de vdeo), processador de perifricos, canal, adaptador e outros. Mas a funo de todos sempre a mesma: compatibilizar as diferentes caractersticas de um perifrico e da UCP/MP, permitindo um fluxo correto de dados em uma velocidade adequada a ambos os elementos que esto sendo interconectados. No item 10.2 sero apresentados apenas os aspectos mais relevantes sobre interfaces de E/S e, no item 10.5, o assunto ser visto com mais detalhe.

83

b) Os diversos tipos de dispositivos que podem ser conectados em um computador so classificados em trs categorias: 1) Os que transmitem/recebem informaes inteligveis para o ser humano so adequados para estabelecimento de comunicao com o usurio. o caso de impressora, monitores de vdeo, teclados; 2) Os que transmitem/recebem informaes inteligveis apenas para a mquina so adequados para comunicao mquina a mquina ou internamente a uma mquina. Exemplos desta categorias so os discos magnticos e sensores; 3) Os que transmite/recebem de/para outros dispositivos remotamente instalados, tais como os modems e regeneradores digitais em redes de comunicao de dados. c) H duas maneiras bsicas de se realizar transmisso/recepo de dados entre os perifricos/interfaces e UCP/MP, bem como entre dispositivos interconectados entre si, local ou remotamente:

84

1) A informao pode ser transmitida/recebida em grupos de bits de cada vez, isto , um grupo de bits transmitido simultaneamente de cada vez. Chama-se transmisso paralela. 2) A informao pode ser transmitida/recebida, bit a bit, um em seguida ao outro isto caracteriza a transmisso serial. A escolha de um desses tipos para interligar os elementos de E/S ao sistema UCP/MP depende de vrios fatores, tais como: tipo e natureza do perifrico, custo de implementao e velocidade de transmisso desejada. d) Basicamente, um dispositivo de entrada ou sada se comunica com o meio externo (usurio do sistema ou outro dispositivo) e com sua interface de E/S. Esta comunicao compreende o envio e recebimento de dados (bits) e sinais de controle. A fig. 10.7 mostra os tipos de informao, bem como o sentido da direo do fluxo, transmitidas/recebidas entre os elementos que se conectam a um dispositivo perifrico. Embora cada dispositivo tenha caractersticas de funcionamento prprias e distintas dos outros, o fluxo de informaes basicamente o mesmo. Na figura, podemos identificar trs linhas de transmisso de informaes entre o dispositivo e sua interface. Uma consiste na interligao entre o prprio dispositivo e o mundo externo, para transferncia de dados entre ambos. A comunicao de controle entre a interface e o dispositivo se realiza atravs das duas outras vias: uma, de sinais de controle, cuja direo do fluxo o da interface para o dispositivo, onde passam os sinais enviados pela interface para o dispositivo, do tipo: informe seu estado; solicito uma leitura (Read) de dados; solicito uma escrita (Write) de dados. A outra via, de sinais enviados do dispositivo para o interface, do tipo: meu estado pronto (Ready) ou ocupado (Busy ou Not Ready).

85

Interfaces de E/S A interface um elemento entre o conjunto UCP/MP e um perifrico, visando compatibilizar as diferentes caractersticas entre ambos. So aspectos essenciais: a) H no mercado uma quantidade muito grande de dispositivos perifricos que podem ser conectados a uma UCP, cada um possuindo modos prprios e especficos de funcionar, certamente diferentes uns dos outros, bem como diferentes entre cada um deles e a UCP (ver fig. 10.6). Seria impraticvel dotar a UCP de lgica especfica para tratar com cada perifrico. b) A velocidade de transferncia de dados de um perifrico , em geral, muito menor que a da UCP (ver tabela 10.1). ano seria eficaz conectar os perifricos diretamente ao barramento do sistema, pois isto reduziria a velocidade da UCP/MP em sua comunicao. Alm disso, cada perifrico tambm tem velocidade diversa de outro perifrico, o que corrobora ainda mais a afirmao de que no possvel usar o mesmo caminho por diversos usurios. Por exemplo, o teclado muito mais lento do que um disco, que, por sua vez, muito mais lento que a MP. c) Os perifricos costumam usar formatos e tamanhos diferentes de unidades de transferncia de dados, isto , uns transferem 1 bit de cada vez (a unidade de transferncia , ento, o bit), outros transferem um byte ou caractere por vez, enquanto alguns perifricos podem enviar ou receber centenas ou at mesmo milhares de bits em um nico bloco de transferncia. Alm disso, os fabricantes tambm adotam diversos tamanhos de palavra de dados da UCP. Esses aspectos confirmam, portanto, a necessidade do emprego de um dispositivo intermedirio, ligando a UCP/MP a um perifrico ou a um grupo de perifricos, o qual costuma ser chamado de Interface de E/S, mas que, conforme j mencionamos anteriormente, tambm pode ser identificado 86

com vrios outros nomes, dependendo do fabricante ou do mercado. Por exemplo, a IBM criou o nome de channel (canal), enquanto os fabricantes de microcomputadores costumam chamar de adapter (adaptadores) ou controladores, e assim por diante. Popularmente, tambm denominamos um adaptador de placa, visto consistir realmente em um placa de circuito impresso. Assim, adquirimos no mercado uma placa de vdeo (interface para o monitor de vdeo) ou uma placa de fax/modem (interface para os mencionados dispositivos). Uma interface de E/S pode servir apenas para a conexo UCP/MP e para controle de um nico dispositivo de E/S ou pode atender a vrios dispositivos, at mesmo dispositivos diferentes. Um controlador de disco de certos microcomputadores pode controlar a comunicao da UCP/MP com uma unidade de disco e uma unidade de disquete. H certos tipos de controladores, em microcomputadores, que podem controlar at 8 dispositivos perifricos (Interface SCSI Small Computer System Interface). A fig. 10.8 mostra alguns exemplos de conexes de UCP/MP a controladores de E/S ou interfaces. Uma interface ou controlador de E/S , em geral, responsvel pelas seguintes tarefas: a) Controlar e sincronizar o fluxo de dados entre a UCP/MP e o perifrico; b) Realizar a comunicao com a UCP, inclusive interpretando suas instrues ou sinais de controle para o acesso fsico ao perifrico; c) Servir de memria auxiliar para o trnsito das informaes entre os componentes (buffer de dados); e d) Realizar algum tipo de deteco e correo de erros durante as transmisses.

87

Em geral, uma interface de E/S se comunica com o processador e com o perifrico atravs das seguintes aes bsicas: 1) O processador interroga a interface para verificar se o perifrico est pronto para se comunicar ou se est ocupado; 2) A interface responde informando o estado do perifrico; se est pronto (Ready) ou ocupado ou desligado ou outra incapacidade qualquer de atender (Not Ready); 3) Se o dispositivo de E/S (perifrico) estiver pronto para se comunicar (receber ou enviar dados), ento o processador envia os dados pelo barramento para a interface. Deste, os dados iro para o dispositivo ou vice-versa. A utilizao de um buffer interno pela interface um fator fundamental para a compatibilizao de velocidades diferentes entre o barramento do sistema e suas linhas externas. Uma transmisso do perifrico ou do controlador pode ser realizada: - bit a bit e, neste caso, temos a transmisso serial; ou - em grupos de bits de cada vez e, neste caso, temos a transmisso em paralelo. Transmisso serial Na transmisso serial, o perifrico conectado ao dispositivo controlador ou interface de E/S por uma nica linha de transmisso de dados, de modo que a transferncia de dados seja realizado um bit de cada vez, embora o controlador possa ser conectado UCP/MP atravs do barramento com vrias linhas, conforme mostrado na fig. 10.9.

A transmisso serial mais lenta que a transmisso paralela, visto que s envia um bit de cada vez, sendo normalmente utilizada em perifrico de baixa velocidade ou cuja caracterstica tpica da transmisso bit a bit. O teclado e o mouse so dispositivos que realizam a comunicao 88

serial, assim como os modems (equipamentos utilizados para enviar dados, via linhas telefnicas, para outros dispositivos geograficamente distantes). Como a transmisso realizada bit a bit, necessrio que o receptor e o transmissor estejam sincronizados bit a bit, isto , o transmissor transmite os bits sempre com a mesma velocidade e, consequentemente, todos os bits tero a mesma durao no tempo. Por exemplo, se o transmissor estiver funcionando na velocidade de 1000 bits por segundo (1000 bps), isto significa que cada bit dura 1/1000 segundos ou 1 milissegundo. Para que o receptor seja capaz de receber todos os bits (um por um) enviados, ele precisa saber quando um bit inicial e qual a sua durao (tambm se costuma chamar de largura do bit). Se, a cada 1 ms, o transmissor envia um bit (o nvel de tenso alto significa, por exemplo, bit 1 e o nvel de tenso baixo significa bit 0), ento, a cada 1 ms o receptor deve sensar o nvel de tenso da linha para captar o bit que est chegando e identific-lo como 0 ou 1. O receptor deve trabalhar, para isso, com a mesma velocidade (1000 bps, no exemplo) do transmissor. A fig. 10.10 mostra um exemplo desse processo de sincronizao de bits. Este processo eficaz para identificao de cada bit, porm ainda no suficiente para a identificao de um caractere, j que preciso definir quando um caractere inicia (qual seu primeiro bit) e quando ele termina, ou seja, deve-se criar um mtodo de identificao do bit inicial do caractere. Conforme observado na fig. 10.10, transmissor e receptor esto funcionando na mesma velocidade de 1000 bps, o que implica a gerao de bits com durao igual a 1 ms. Dessa maneira, o receptor deve sensar a linha a cada 1 ms e captar o bit adequado, de acordo com o nvel de tenso que foi sensado. Para que haja maior confiabilidade no processo, comum que o receptor sense no instante em que o bit est na metade de sua durao, de modo a evitar possveis erros se ele, por exemplo, detectasse prximo subida do valor 0 para 1 ou vice-versa. Receber bit por bit no suficiente. preciso que o receptor saiba identificar grupos de bits que tenham um significado, como, por exemplo, o da representao de 1 caractere. Dependendo do cdigo de representao utilizado, cada caractere ser representado por um grupo de n bits (em geral, n igual a 8 bits 1 byte). H dois mtodos de ser realizar a transmisso serial: Transmisso assncrona; e Transmisso sncrona. Transmisso Assncrona: o mtodo mais antigo, simples e barato, utilizado por antigos terminais TTY e quase sempre foi utilizado em larga escala por microcomputadores. Ele consiste em um processo de sincronizao do receptor a cada novo caractere transmitido (da o nome assncrono). Para isso, antes de se iniciar a transmisso, cada caractere acrescido de 2 pulsos, um no incio do caractere, denominado START, com durao exata de 1 bit e valor de tenso correspondente ao bit 0, e outro, denominado STOP, tem valor de tenso igual ao do bit 1 e durao varivel entre 1 e 2 bits. No caso do START, trata-se de um bit 0 inserido antes do primeiro bit do caractere, passando a ser o novo primeiro bit do caractere, conforme fig. 10.11. A fig. 10.11 mostra um caractere ASCII transmitido pelo mtodo assncrono, isto , os 8 bits ASCII mais o START no incio e o STOP no final do caractere. Quando no h transmisso, o transmissor envia continuamente bit 1 pela linha (nvel alto de tenso). Quando um caractere enviado, o receptor detecta a queda de tenso (nvel alto quando no h transmisso e nvel baixo do START) e entra em sincronismo, recebendo, da para diante, os demais bits do caractere, at o 89

STOP (ele possui um circuito contador e sabe quantos bits cada caractere tem, j que o transmissor e receptor funcionam com o mesmo cdigo de armazenamento).

Para se realizar a transmisso serial de forma assncrona necessrio que, em ambos os lados da linha de transmisso haja um dispositivo capaz de decompor cada caractere bit a bit e providenciar a incluso dos bits START/STOP na transmisso e sua retirada aps a recepo do caractere. Um dispositivo muito comum, usado em microcomputadores e que faz parte da maioria das pastilhas (chips) de entrada/sada denomina-se UART (Universal Assynchronous Receiver/Transmitter). A UART uma pastilha que emprega integrao em larga escala (LSI), cuja funo bsica a decomposio e composio de um caractere em bits e vice-versa, conforme mostrado esquematicamente abaixo.

90

A fig. 10.13 mostra o diagrama em blocos de uma UART, indicando seus principais componentes: Buffer de sada de dados a serem transmitidos recebe os n bits do caractere e os envia ao registrador de transmisso. Registrador de transmisso desloca os bits do caractere um a um (shift register) para a linha de sada. Este deslocamento realizado a cada pulso de relgio da UART.

Registrador de recepo e buffer de sada de dados recebidos funcionam de modo semelhante, porm em sentido inverso ao dos dois registradores j descritos. O caractere recebido bit a bit no registrador de recepo, que efetua o deslocamento de cada bit at completar todo o caractere e, ento, o encaminha para o buffer de sada. Unidade de controle permite que a UART funcione de modo diferente, conforme a escolha do usurio: opo de paridade ser par ou impar, opo de 1 ou 2 bits STOP. 91

Registrador de estado (semelhante ao flag dos microprocessadores) possui um bit para indicar algumas ocorrncias durante o funcionamento do UART, tais como: erro de paridade, erro de sincronizao (a UART perdeu o bit START), dados disponveis (para que o microprocessador leia o caractere). Relgio divide a frequncia de transmisso (taxa de bands) para permitir o deslocamento de cada bit dos registradores e deslocamento. Em geral, a taxa de transmisso (velocidade de sinalizao o termo mais empregado na rea de teleprocessamento) medida em bauds (quantidade de smbolos transmitidos por segundo), que pode variar de 110 bauds a 38400 bauds. Transmisso Sncrona uma tcnica mais eficiente que a transmisso assncrona, pois so transmitidos de cada vez blocos de caracteres, sem intervalo entre eles e sem pulso START/STOP (isto reduz a quantidade de bits, que no so usados para efetiva representao dos caracteres e que ocupam a capacidade da linha). Por exemplo, uma transmisso de 100 caracteres ASCII de modo assncrono tem uma eficincia de:

A eficincia de 70%, nesse caso em que todos os caracteres esto sendo considerados sem intervalo, a mesma para a transmisso de 1 ou de N caracteres, mas poderia ser menor ainda se ocorresse intervalo entre os caracteres, pois o denominador da frao iria aumentar. Na transmisso sncrona, a eficincia seria:

Os 105 caracteres do denominado compreendem os 100 caracteres da informao que se deseja transmitir mais 5 caracteres especiais necessrios ao controle da transmisso e formato do bloco de caracteres. A fig. 10.14 mostra um esquema de transmisso sncrona, cujas caractersticas principais so: a) No h intervalo entre os caracteres de um bloco, isto , o transmissor monta um bloco, usualmente com cerca de 128 a 256 caracteres, e este transmitido bit a bit sem intervalo entre o primeiro e o ltimo bit; e b) Para que o receptor se mantenha sincronizado (sensar a linha no mesmo intervalo de tempo que dura um bit ver fig. 10.10) necessrio que ele funcione com a mesma frequncia do relgio do transmissor. Uma possibilidade de sincronizar os relgios incluir 92

uma linha de transmisso separada por onde circulam os pulsos de sincronizao. Outra alternativa consiste na incluso dos pulsos de sincronizao junto com os bits de informao, utilizando-se algumas forma de codificao. Ambas as tcnicas tm sido utilizadas com eficincia. No entanto, como os caracteres so agrupados em blocos, surge a necessidade de um outro nvel de sincronizao entre o transmissor e o receptor: para identificao do incio e fim do bloco. Para tanto, usa-se a insero de um grupo de bits no incio do bloco (marca o incio da contagem de bits a serem recebidos) e outro no seu final. H pastilhas (chips) que podem realizar tarefas necessrias formao do bloco de transmisso, incluso dos caracteres especiais de controle e deteco de erros, denominadas USART (transmissor/receptor universal sncrono e assncrono), que tambm pode realizar as atividades de uma UART. Entre as interfaces mais modernas desenvolvidos para controlar a transmisso de dados na forma serial existe o que se denomina USB Universal Serial Bus. Esta interface serve para interligar ao processador dispositivos como: joysticks, teclados, scanners, telefones, impressoras, sem que se necessite de interfaces separados para cada um. O padro de barramento USB foi desenvolvido por um conjunto de fabricantes de equipamentos de computao: Compaq, DEC, IBM, Intel, Microsoft, NEC e Northern Telecom, tornando-se disponvel para o mercado sem nus, como padro aberto. O padro USB suporta velocidades de at 12 Mbps, permitindo a conexo de at 127 perifricos, ligando-se a uma nica porta de sada no microcomputador. Transmisso Paralela Com o uso de transmisso em paralelo, um grupo de bits transmitido de cada vez, sendo cada um enviado por uma linha separada de transmisso, conforme mostrado na fig. 10.15. Esse processo j foi descrito no item 6.6, mas interessante mencionar que sua utilizao mais comum para transmisso interna no sistema de computao e para ligao de alguns perifricos (impressoras, p. ex.) a curta distncia entre os dispositivos, maior ser o comprimento da conexo e maior o custo correspondente. O padro CENTRONICS (padro porque a maioria dos sistemas utiliza esta interface) define um conjunto de sinais que fluem pelas linhas de conexo, bem como estabelece o formato e a quantidade de pontos que devem existir no conector associado. Um outro tipo de interface paralela denomina-se SCSI Small Computer Systems Interface), empregado para controlar dispositivos com elevado volume e velocidade de transmisso, como discos magnticos e CD-ROM, atualmente utilizado em escala crescente.

93

Dispositivos de E/S Um dispositivo de entrada ou de sada (perifrico) o equipamento acoplado a um sistema de computao que efetivamente identifica a funo Entrada ou a funo Sada. Um teclado, um monitor de vdeo e uma impressora caracterizam de modo inequvoco aquelas funes, embora sejam apenas parte de um subsistema de E/S. Um teclado, por exemplo, no tem utilidade sem uma interface que compatibilize sua lentido e transmisso bit a bit com a velocidade e transmisso paralela do barramento do sistema. A seguir vamos efetuar uma breve descrio dos perifricos mais populares, encontrados nos atuais sistemas de computao. No item 10.5, sero descritos outros processos, tecnologia e dispositivos para aqueles interessados em detalhes mais especficos. Os dispositivos de E/S que descreveremos neste item so: a) Teclado b) Monitor de vdeo c) Impressora d) Fita magntica e) Disco magntico f) Mouse Teclado: um dispositivo de E/S da categoria dos dispositivos que se comunicam com o ser humano, como tambm o so o vdeo e as impressoras. Nesse caso, eles precisam ser dotados de mecanismos que reconheam de algum modo os smbolos utilizados pelos humanos (como os caracteres alfabticos e outros smbolos de nossa linguagem). No caso do teclado, este reconhecimento realizado pela interpretao do significado eltrico de cada tecla ao ser pressionada. A fig. 10.16 mostra um exemplo de teclado.

94

De modo geral, h trs categorias de teclado no mercado. Embora todas trs funcionem internamente de modo semelhante, eles apresentam aspecto externo diferente (quantidade e tipo de teclas diferentes), e seu uso particularmente distinto em cada categoria: 1) Teclados apenas numricos: o caso das calculadoras de bolso ou de mesa, p. ex. 2) Teclados para sistemas dedicados: consistem em teclas necessrias apenas para a entrada de informaes relativas tarefa do sistema. Por exemplo, o teclado de um sistema de computao para controle ambiental s teria teclas relacionadas ao controle do sistema: ar condicionado, aquecimento, ventoinha, bomba, etc. 3) Teclado comum para uso geral: constitudo de todas as teclas alfabticas (permite entrada de caracteres maisculos e minsculos), numricas, de sinais de pontuao, de operaes aritmticas e outras teclas para certas funes especiais. Um teclado desta categoria tem normalmente de 80 a mais de 125 teclas. Uma tecla pode ser compreendida como uma chave. Ao pression-la, estamos acionando a chave e, como consequncia, algumas aes vo ser realizadas pelos circuitos de controle inseridos no prprio teclado (no caso de teclados de uso geral). Normalmente, embaixo das teclas h um circuito impresso com vrios componentes eletrnicos, inclusive um microprocessador. H, atualmente, trs tecnologias de fabricao de teclas: Teclas mecnicas (ou de contato direto); Teclas capacitivas; e Teclas de efeito-hall. Grande parte dos teclados utiliza a tecnologia capacitiva e, por essa razo, vamos descrev-la rapidamente. A tecla capacitiva funciona na base da variao de capacitncia (uma propriedade eltrica) do acoplamento entre duas placas metlicas, variao essa que ocorre quando uma tecla pressionada. A grande vantagem desse tipo de tecla o seu baixo custo e pequeno tamanho, alm de no possuir contatos mecnicos, que podem oxidar com o tempo. Tem, portanto, uma vida relativamente longa, certa de 20 milhes de pressionamentos.

95

Os teclados funcionam de modo semelhante, embora com variaes decorrentes de sua capacidade de teclas, rapidez de resposta desejada e custo. Um teclado tpico, o dos microcomputadores atuais, funciona basicamente da seguinte maneira: a) Deteco do pressionamento de uma tecla um processador interno ao teclado efetua periodicamente uma varredura para detectar o pressionamento de uma tecla. b) Realizao do debouncing do pressionamento consiste em confirmar se realmente a tecla foi pressionada. Para tanto, o processador repete vrias vezes a varredura sobre a referida tecla. c) Gerao do cdigo correspondente identificao da tecla pressionada no caso dos microcomputadores PC, isto significa a gerao, por um circuito codificador de colunas e linhas, de um cdigo binrio (8 bits) referente tecla pressionada, denominado cdigo de varredura (scan code) d) Gerao de um sinal de interrupo da UCP do microcomputador referente ao corrente (o pressionar da tecla), de modo a fazer com que a UCP tome providncias relativas identificao da tecla em questo e seu valor seja passado ao programa corrente. e) A UCP troca sinais (relativo interrupo) com o processador do teclado, para finalmente o cdigo de varredura ser transmitido para uma rea de memria principal, onde interpretado por um programa de E/S residente no microcomputador. f) O programa em questo (BIOS Basic Input Output System), sistema bsico de entrada/sada, realiza uma detalhada anlise no cdigo recebido, para verificar, por exemplo, se a tecla foi pressionada sozinha ou em combinao com outra (como ALT), ou se j existe uma tecla acionada anteriormente (a tecla de letras maisculas, por exemplo, CAPS-LOCK) e, finalmente, coloca o cdigo ASCII correspondente na rea de memria apropriada, de modo que aquele valor possa ser utilizado pela aplicao com que o usurio esteja trabalhando no momento em que pressionou a tecla. A grande vantagem dessa metodologia de identificao da tecla pressionada e sua correlao com um determinado cdigo a possibilidade de se alterar, por programa, o significado da tecla ou conjunto de teclas pressionado. Desse modo, um programa aplicativo, como um processador de textos, pode programar o pressionar das teclas ALT e P para acionar o processo de impresso de um arquivo, enquanto outro aplicativo pode programar essa mesma atividade (impresso de um arquivo) atravs do pressionamento de outras teclas. Os teclados, embora tenham uma funcionalidade que obriga o fabricante a manter as linhas gerais de sua estrutura fsica (o conjunto de teclas imutvel, embora se possa acrescentar uma ou outra tecla ou alterar seu posicionamento), tm evoludo ao longo do tempo, principalmente em termos de aspecto externo, em face do desenvolvimento de necessidades ergonmicas. Atualmente tm surgido no mercado teclados com formato ergonmico que facilita o apoio das mos no processo de digitao, principalmente para o caso de pessoas que utilizam o equipamento por longos perodos de tempo. A fig. 10.17 mostra um desses teclados:

96

Basicamente as teclas de caracteres alfabticos seguem o mesmo padro, conhecido como QWERTY devido colocao dessas letras na parte superior esquerda. O padro importante para que os digitadores adquiram prtica e velocidade de digitao independentemente do tipo de equipamento utilizado em seu trabalho. Monitor de Vdeo Um dos perifricos mais populares e tambm um dos mais necessrios) o vdeo (vdeo display). Vivendo na era da informao, necessitamos de ferramentas que nos permitam, da melhor forma possvel, encontrar, assimilar e manipular os dados que precisamos. A maneira mais simples do ser humano identificar uma informao atravs do sentido da viso. Essa a razo da popularidade e importncia vital do monitor de vdeo em um sistema de computao. Nos primrdios da computao, as informao eram apresentadas muitas vezes na porpria forma binaria do computador, atravs de lmpadas na frente do painel da maquina. Essas lmpadas, acesas ou apagadas, indicam o valor 1 ou o valor 0 da informao. Mas como o ser humano possui uma linguagem para comunicao diferente de 0s e 1s, em pouco tempo apareceram dispositivos para apresentar visualmente a informao com os smbolos mais inteligveis pelas pessoas. Na lngua inglesa, o termo utilizado para esse componente display, cuja melhor traduo literal seria elemento de exibio, sempre qualificado por outra palavra complementar. Por exemplo, vdeo display, que simplificamos para vdeo apenas ou monitor de vdeo (expresso menos correta, mas tambm usada). H atualmente diversas tecnologias para fabricao de vdeos, que lhes do diferentes apresentaes fsicas, sendo, por isso, tambm usadas em diferentes aplicaes. A fig. 10.18 apresenta um exemplo de tipo de vdeo utilizado em computadores pessoais.

97

Os vdeos podem ser classificados quanto tecnologia de criao e apresentao da imagem, como tambm quanto forma com que os bits so passados do sistema para o vdeo. Quanto tecnologia: VCR vlvula de raios catdicos (CRT cathode-ray tude); DEL diodos emissores de luz (LED light emitting diodes); VCL vdeos de cristal liquido (TDP flat panel display). Estas so apenas algumas das tecnologias hoje em uso pelos fabricantes de vdeos, sendo que os de painel estreito tm vrias modalidades, como de gs plasma e eletroluminescentes. No entanto, apesar dos avanos atuais, a antiga tecnologia de utilizao de VRC prevalece como componentes de apresentao visual.

Impressoras Assim como o monitor de vdeo, a impresso o perifrico clssico de sada, onde as informaes armazenadas internamente no computador sob a forma binaria so de algum modo convertida em smbolos impressos em um meio externo qualquer (o papel o mais comum) e em um formato inteligvel ao usurio. Ao se examinar uma impressora, devem ser consideradas algumas caractersticas bsicas que podem definir seu desempenho em relao a outros dispositivos. Algumas dessas caractersticas so: O volume de impresso que ela suporta em uma unidade de tempo. Impressoras podem indicar sua vazo de impresso em caracteres por segundo (cps), em linhas por minuto (lpm) e paginas por minuto (ppm), dependendo da tecnologia que utiliza para enviar os smbolos para o meio de impresso. A tecnologia utilizada para gerar os smbolos a serem impressos. Atualmente, impressoras podem ser do tipo: - de impacto (de esfera, margarida e matricial); - sem impacto; - de jato de tinta; - a laser; - por transferncia de cera aquecida (thermal-wax); - por sublimao de tinta (dye sublimation). Fitas magnticas 98

um dos meios mais antigos de armazenamento de informaes em computador, servindo tambm como meio de armazenamento. O princpio de funcionamento das unidades de fita magntica de computadores bastante semelhante ao dos tape-deck de som, consistindo em dois carreteis (a fita com dados sempre se desenrola de um lado para o outro, da esquerda para a direita, onde est o carretel alimentador) e a fita que passa por um par de cabeas de leitura e gravao em velocidade constante. A fig. 10.28 mostra um mecanismo de acionamento das fitas magnticas usadas em computadores de grande porte at a dcada de 1980. Devido ao conceito de funcionamento, as fitas so dispositivos de acesso apenas sequencial, isto , cada informao armazenada aps a ltima. Sua recuperao (leitura) realizada atravs de um processo tambm sequencial, a localizao do registro desejado comea a partir do incio da fita; de registro em registro, at que seja identificado o registro desejado (como usualmente tambm fazemos com o gravador cassete de som. Nesse casso, quando queremos ouvir uma msica que se encontra gravada no meio da fita, comeamos do princpio, desenrolando a fita at o ponto desejado).

Uma fita magntica normalmente constituda de uma tira contnua de material plstico coberto com elementos magnticos, onde os dados (bits) so gravados como campos magnticos (em um sentido representam o bit 0, no outro sentido representam o bit 1). Esses campos so gerados pela passagem de corrente eltrica em uma bobina existente na cabea de gravao. A fig. 10.29 mostra um trecho de fita magntica retificada, onde se observam os bits representados em linhas paralelas (canais).

99

Em geral, as fitas magnticas para computadores so enroladas em carreteis com comprimento de 300 ps, 600 ps, 1200 ps e 2400 ps. Conforme mostrado na fig. 10.29, os dados so armazenados em canais paralelos, denominados trilhas, que percorrem toda a fita. O nmero de trilhas pode ser igual a 7 ou 9, embora fitas e acionadores com 7 trilhas tenham ficado obsoletos h dcadas; somente fitas com 9 trilhas continuaram a ser fabricadas. A razo da escolha desses nmeros advm do padro de bits de cada cdigo de caracteres usado no mercado (antigamente usava-se o cdigo BCD de 6 bits por caractere; em seguida, os cdigos mais populares passaram a ser o ASCII e o EBCDIC, que representam caracteres com 8 bits por caractere 1 byte, mesmo o ASCII de 7 bits, que acrescenta um bit adicional, sem efeito, para manter o total mltiplo de 2. Cada caractere armazenado verticalmente, um bit por trilha, mais um bit de verificao (bit de paridade), completando as 9 trilhas (o conjunto de bits de uma coluna tambm conhecido como quadro ou frame). Uma das caractersticas mais interessantes do sistema de transporte das unidades de fita magntica consiste na rapidez de parada e partida da rotao dos carreteis. importante que o carretel inicie a rotao e pare rapidamente, visto que o processo de leitura e gravao somente se inicia quando a velocidade de passagem da fita pelo cabeote for constante (seno, poder haver erro de leitura/gravao); quanto mais rpida for a partida, mais rpido a velocidade de rotao se estabiliza e no h atrasos acentuados na operao de leitura ou de gravao. O espaamento entre as colunas (que o mesmo espao entre bits por trilha e entre caracteres) obtido automaticamente durante a operao de gravao e varia de acordo com a velocidade de passagem da fita, indicando uma das principais caractersticas do desempenho de unidades de fita sua densidade. Basicamente, as informaes (dados ou programas) so armazenadas em blocos ou registros fsicos (conjunto de registros lgicos), separados por espaos denominados IRG (Inter Record Gap), ou simplesmente gap. Os gaps so includos entre blocos para permitir a acelerao e desacelerao da fita sem haver perda de leitura do incio de cada novo bloco. Como h um gap entre cada par de blocos armazenados, quanto maior a quantidade de blocos, maior ser a quantidade de gaps e, consequentemente, de espao morto na fita. Isso porque, embora indispensvel (devido ao j mencionado problema de desacelerao/acelerao) o gap um espao perdido, que reduz a disponibilidade da fita para armazenar informaes teis. Bloco ou registro fsico (RF) a unidade de armazenamento/transferncia de informao dos sistemas de fita magntica, sendo constitudo de um ou mais registros lgicos (RL) e mais alguns bytes inseridos pelo programa de controle (para do sistema operacional) com dados necessrios identificao e recuperao do bloco. A quantidade de RL em um bloco (RF) define um elemento chamado fator de bloco FB. Vamos imaginar um exemplo de armazenamento/recuperao de arquivo em fita magntica, de modo a verificar o efeito do tamanho do bloco (decorrente da escolha de um valor de fator de bloco) no desempenho de um sistema de fita magntica.

100

Suponhamos que um certo arquivo constitudo de 10000 RL esteja armazenado em uma fita magntica e que o referido arquivo tenha sido armazenado usando-se um FB = 5. Como FB = NRL/NRF e sendo NRL = 10000 e FB = 5 Ento: NRF (n de blocos) = NRL /FB = 10000 / 5 = 2000 blocos. O sistema armazenar 2000 blocos e gastar espao com cerca de 2000 gaps (na realidade seriam 1999 gaps entre o primeiro e o ltimo bloco). Consumir na leitura/gravao de todo o arquivo um tempo correspondente operao de transferncia de 2000 blocos. Caso fosse modificado o fator de bloco para um valor igual a 10, teramos um novo calculo para o armazenamento do mesmo arquivo: NRF = NRL/FB =10000/10 = 1000 blocos. O sistema armazenar o arquivo utilizando a metade da quantidade de blocos do caso anterior, pois agora cada bloco possui 10 RL em vez de 5 RL. Com isso, a quantidade de gaps tambm se reduz pela metade (1000 gaps), com grande economia de espao morto. Conforme se pode verificar dos exemplos anteriores (os clculos foram simplificados para indicar apenas os dados necessrios explicao), o aumento do valor do FB (aumento do tamanho dos blocos) acarreta uma dupla vantagem: Menor tempo de transferncia de dados entre fita e MP a maior parte do tempo de transferncia reside nos procedimentos de localizao do bloco e movimento do carretel para posicionamento da fita sobre bloco desejado e no no tamanho do bloco; Maior economia de espao perdido com gaps sobrando, assim, mais espao para armazenamento de informaes teis. Com os elementos utilizados e sabendo-se que, em geral, um gap ocupa de polegada (0,75) de uma fita, podemos calcular (valores aproximados apenas) o consumo de espao ocupado por um arquivo em fita magntica. 101

Exemplo 10.1: Calcule o espao gasto para armazenar em fita magntica um arquivo A contendo 10000 RL de 100 bytes cada um. O armazenamento ser realizado com FB = 10, densidade de gravao de 1600 bpi. Sabe-se que 1 gap ocupa 0,75, que cada campo de controle de bloco gasta 200 bytes e que 1 p = 12 polegadas. Soluo: Arquivo A = 10000 RL 1 RL =100 bytes FB = 10 Controle = 200 bytes Densidade = 1600 bpi

Tamanho de 1 bloco: 200 + 10 x 100 = 1200 bytes Quantidade de blocos: FB = NRL/NRF. Assim, NRF = NRL/FB = 10000/10 = 1000 RF Espao gasto com gaps: 1000 gaps (=NRF)x0,75 = 750 polegadas Espao gasto com blocos: 1000 blocos x 1200 bytes = 1.200.000 bytes Como a densidade 1600 bpi, ento: 120000/160 = 750 polegadas 1500/12 = 125 ps Discos Magnticos Discos magnticos (tambm disquetes, fitas magnticas, CD-ROM) so componentes de um computador que podem ser enquadrados em duas reas distintas: como memria secundria e como dispositivo perifrico de E/S. atualmente, esses dispositivos so largamente utilizados seguindo dois pontos de vista. Neste item, vamos descrever as principais caractersticas que definem um disco magntico, tais como: a organizao de armazenamento de dados e a base de seu funcionamento. Estaremos nos referindo aqui a discos magnticos de um modo geral, sejam disquetes ou discos rgidos com a tecnologia Winchester. O disco magntico (disco rgido ou hard-disk) uma superfcie circular, fina e coberta com uma camada de material magnetizvel. O material pode estar presente em uma ou em ambas as superfcies do disco, normalmente chamadas faces. Atualmente qualquer disco magntico para sistemas de computao fabricado com dupla face de armazenamento de modo que tenha maior capacidade de armazenamento. A fig. 10.31 mostra um exemplo de um tipo de disco magntico, muito empregado em minicomputadores.

102

A fig. 10.32 mostra o esquema bsico de um disco magntico rgido, aparecendo a superfcie magnetizvel, constituda de reas circulares concntricas, denominadas trilhas, onde so armazenados os bits de informao. Cada bit representado por um campo magntico, cuja direo define o valor do bit, 0 ou 1. O disco gira constantemente em torno do seu eixo central de modo idntico ao da rotao de um disco de som. Sobre a superfcie, um elemento mecnico (brao) transporta a cabea de leitura/gravao, efetuando um movimento transversal sobre as trilhas, de modo a realizar as operaes de leitura e gravao sobre cada trilha. Todas as trilhas armazenam a mesma quantidade de bytes; isso possvel devido diferena de densidade de gravao entre a trilha mais externa e a mais interna. A N trilhas so numeradas (endereos) a partir da trilha mais externa (trilha de endereo 0) at a trilha mais interna (trilha de endereo N -1); como, em geral, cada trilha possui uma grande capacidade de armazenamento de bytes, costuma-se dividir a trilha em pedaos menores, denominados setores (ver fig. 10.32), os quais servem de unidade de transferncia de dados. Na prtica, h diferentes mtodos de acesso aos discos, bem como diversas unidades de transferncia, dependendo do sistema operacional, do prprio sistema de disco, etc. H sistemas que efetuam transferncia de dados disco/UCP-MP setor por setor; outros, devido maior capacidade dos discos e ao volume de transferncias, movimentam um grupo de setores (chamado cluster, denominao utilizada pela Microsoft nos sistemas operacionais DOS e Windows) de cada vez, embora a unidade bsica de armazenamento continue a ser o setor. A IBM utiliza, em seus sistemas de grande porte, o bloco (conjunto de RL) ou cilindro como unidade de armazenamento e transferncia.

O tempo de acesso em disco o perodo gasto entre a ordem de acesso (com o respectivo endereo) e o final da transferncia dos bits. Esse tempo o somatrio de trs tempos menores: a) Tempo de SEEK (busca) gasto para interpretao do endereo pela unidade de controle e movimento mecnico do brao para cima da trilha desejada. o maior componente do tempo de acesso. b) Tempo de latncia perodo decorrido entre a chegada da cabea de leitura e gravao sobre a trilha e a passagem do bloco (setor) desejada sobre a referida cabea (depende da velocidade de rotao do disco). 103

c) Tempo de transferncia gato para a efetiva transmisso dos sinais eltricos (bits) para o destinatrio. H certos dispositivos, em geral discos rgidos de maior capacidade de armazenamento, que so constitudos de vrios discos superpostos, conforme figs. 10.33 e 10.34. O conjunto armado de forma integrada, sendo cada superfcie associada a um brao especfico, com sua prpria cabea de leitura/gravao. o Conjunto formato por todos os braos se move por igual, acionado atravs de um mecanismo atuador nico. Como os braos/cabeas se movimentam juntos, quando o atuador se desloca para acessar uma determinada trilha de certa superfcie (o endereo de acesso pode ser, por exemplo, trilha 12 da superfcie 05), todas as cabeas estacionam sobre a trilha de mesmo endereo (trilha 12, nesse exemplo) em cada superfcie. O conjunto de trilhas de mesmo endereo, acessado em um nico movimento do atuador, denomina-se cilindro, podendo tambm servir como unidade de transferncia em certos sistemas. O acesso por cilindro aumenta a produtividade do sistema de disco, quando se movimentam grandes volumes de dados, visto que se economiza tempo de busca (de seek) comparativamente ao processo de armazenamento trilha por trilha. Se, por exemplo, desejamos armazenar em disco um arquivo que consumir um espao correspondente a 200 trilhas, sero gastos 200 tempos de busca (de seek) no caso da organizao dos endereos por trilha. No entanto, se o sistema de disco for organizado de modo a armazenar e recuperar dados cilindro a cilindro, poderemos verificar que o tempo total de busca ser bem menor. Assim, se no exemplo dado o disco possuir 20 superfcies magnetizveis, cada cilindro compreender 20 trilhas (o cilindro 23 constitudo de todas as 20 trilhas de endereo 23, uma para cada superfcie); nesse caso, seriam consumidos apenas 10 tempos de busca (e no mais os 200 anteriores), um para cada cilindro.

Discos flexveis ou Disquetes (Floppy-Disk)

104

As unidades de disquetes (floppy-disk drivers) possuem caractersticas semelhantes s das unidades de disco rgido, de maior capacidade. A diferena entre os dois dispositivos reside mais na capacidade de armazenamento, na velocidade de acesso e no tempo de transferncia de informaes. As unidades de disquetes (e os prprios disquetes) foram desenvolvidas na dcada de 60 como uma alternativa mais barata para os sistemas de disco. Porm, esse meio se tornou mais popular, crescendo enormemente sua utilizao pelos usurios, com o surgimento dos microcomputadores e a consequente demanda por um perifrico mais rpido e verstil que os cassetes (primeiros dispositivos de armazenamento secundrio usados nos microcomputadores). O disquete um meio de armazenamento removvel, o que permite o transporte de informao de um sistema para outro. As informaes so armazenadas de forma idntica dos discos rgidos, isto , em trilhas e setores de cada superfcie (um disquete possui as duas superfcies magnetizveis, embora apenas uma delas o fosse nos primeiros disquetes). O acionador de disquete em um computador (drive) contm um mecanismo de leitura/gravao para cada superfcie. Os disquetes possuem ainda uma abertura para que a cabea de leitura/escrita tenha acesso s trilhas/setores (nos atuais disquetes de 3,5 esta abertura fica coberta por um elemento metlico). Em geral, quando um usurio se dispe a adquirir um sistema de disco, ele procura comparar os diversos modelos oferecidos atravs de trs fatores principais: A capacidade total de armazenamento do meio; A taxa de transferncia de bits (quantos bits/s); e O tempo mdio de acesso. A taxa de transferncia de unidades de disquete no to grande se comparada com sistemas de disco rgido (disquetes podem alcanar taxas de transferncia da ordem de centenas de Kbytes/s, enquanto os discos rgidos podem transferir alguns Mb/s). O tempo mdio de acesso tambm relativamente elevado nas unidades de disquetes (da ordem de 60 a 100 ms), ao passo que unidades de disco rgido podem realizar acessos com tempos bem menores que 60 ms. Clculo de Espao de Armazenamento em Discos O problema do clculo de espao em disco necessrio para o armazenamento de arquivos semelhante ao que foi mostrado para o calculo de espao em fitas magnticas. Uma das possveis diferenas consiste, em grande parte dos sistemas, na adoo do setor (ou grupo de setores) como unidade de transferncia fixa e, portanto, deixa de existir o fator de bloco varivel. No caso de discos, necessrio calcular quantas trilhas (ou cilindros) sero consumidas por um arquivo constitudo de N registros lgicos. Deve-se considerar a diviso das trilhas em setores, cada um com uma quantidade fixa de bytes para armazenamento. Exemplo 10.2: Deseja-se saber qual ser o dispndio de espao para armazenar em disco um arquivo com 1000 RL de 80 bytes cada um. O disco possui 40 trilhas com 9 setores de 512 bytes para dados em cada um. Soluo: Total de bytes do arquivo: 1000 x 80 = 80000 bytes Quantidade de setores necessria: 80000/512 = 156,25 = 157 setores Quantidade de trilhas: 157/9 = 18 trilhas

105

Exemplo 10.3: Um sistema de armazenamento em disco magntico possui discos com 5 superfcies de dupla face, todas com as respectivas cabeas de leitura/gravao. Cada superfcie contm 115 trilhas, cada uma com possibilidade gravar 9500 bytes de dados (e informaes de controle). Podem ser armazenados nesse disco blocos de tamanho varivel, de acordo com o fator de bloco (H) escolhido; cada bloco contm 80 bytes para informaes de controle. Em cada trilha somente podem ser gravadas quantidades inteiras de blocos (ou RF), no sendo possvel gravar parte de um bloco em uma trilha e o restante em outra. Calcule a quantidade de cilindros a ser consumida com o armazenamento de um arquivo constitudo de 8000 RK de 110 bytes cada, empregando-se um FB de 12. Soluo Tamanho de 1 bloco: 12 x 100 = 1320 bytes (se o FB = 12, ento: 12 RL em cada bloco) Quantidade de blocos por trilha: 9500/1320 = 7,2 = 7 blocos (sobram 260 bytes em cada trilha) Quantidade de blocos necessria: 8000/12 = 666,66 = 667 blocos Se FB = NRL/NRF, entoa: NRF = NRL/FB Quantidade de trilhas = 667/7 = 95,29 = 96 trilhas (porque so 7 blocos/trilha). Como o disco possui 5 pratos de dupla face, h 10 superfcies de armazenamento; h, ento, cilindros com 10 trilhas em cada um (o cilindro 3, por exemplo, compreende todas as trilhas 3 das 10 superfcies). O disco possui um total de 115 cilindros. Clculo da quantidade necessria de cilindros: 96/10 = 9,6 = 10 cilindros. Mouse Em essncia, o mouse um dos dispositivos de entrada de um sistema de computao cujo proposito facilitar o trabalho do usurio em sua comunicao com o sistema. Em vez do usurio ser obrigado a digitar comandos que precisam ser aprendidos, decorados ou lidos em algum lugar, com o mouse o usurio necessita somente de um pouco de coordenao motora para movimentar o dispositivo. A fig. 10.35 mostra um modelo de mouse.

evidente que, sendo um dispositivo basicamente apontador (na realidade, o usurio movimenta o mouse para apontar para alguma figura chama-se cone em uma tela grfica), ele apropriado apenas como elemento de interligao visual do usurio com o sistema. No que se refere ao funcionamento de um mouse, pode-se descrev-lo de modo simples. 106

O dispositivo possui um sensor (h trs tipos de sensores: mecnicos, ticos e ticomecnicos) que capta seu movimento em uma superfcie plana e transmite informaes sobre este movimento ao sistema de computao e dois ou trs botes. Um programa que controla o funcionamento do dispositivo e se comunica com o computador ( parte da interface) converte as informaes de movimento do mouse em movimento de um elemento apontador na tela de vdeo. O usurio escolhe o que quer apontar e seleciona, pressionando um dos botes do mouse. Mouses mecanismos costumam usar uma esfera coberta com borracha (para deslizar melhor) que gira acompanhando escovas colocadas no interior do mouse, completando o circuito. Embora simples e barato, este projeto ineficaz porque volta e meio o mouse tem problemas de fechamento dos contatos devido poeira e sujeira. Os sistemas tico-mecnicos so mais utilizados porque combinam bem as melhores caractersticas de dispositivos puramente mecnicos e ticos, sem absorver seus defeitos. Os mouses do tipo tico-mecnico possuem o mesmo mecanismo de esfera e rolete que os dispositivos mecnicos, exceto que os roletes so conectados a rodas vazadas (com furos). medida que as rodas giram, elas ora bloqueiam, ora permitem a passagem de luz, que produzida por um LED, e estas transies so detectadas por semicondutores sensveis luz. Este tipo tem a vantagem (como os mecnicos) de poder funcionar em qualquer superfcie. A maioria dos mouses atualmente fabricados possui uma resoluo de 400 pontos por polegada, que significa que foram registrados 400 sinais de movimento do mouse, enquanto ele andou 1 polegada. Alm do mouse, tem se usado tambm um outro tipo de dispositivo apontador, a track-ball, popularizada com o aparecimento de laptops e notebooks, por no requerer movimento em uma superfcie. apenas a esfera que gira, movimentando o cursor na tela do vdeo. Mtodos de Realizao de Operaes de E/S Durante a execuo de um programa, por diversas vezes a UCP tem necessidade de enviar ou receber dados de algum dispositivo perifrico. Para tanto, da mesma forma que acontece com a comunicao UCP/MP, necessrio que a UCP indique o endereo correspondente ao perifrico desejado, pois h sempre mais de um perifrico ligado a um sistema de computao. Cada perifrico conectado ao sistema de computao possui um endereo, denominado endereo da porta de E/S (port. Number), visto que cada perifrico se conecta por uma porta. Conforme a quantidade de bits que tenha sido estabelecida no projeto do sistema para definir endereos de E/S, teremos o limite de perifricos que podem ser conectados ao sistema. Se, por exemplo, os endereos de E/S forem nmeros de 8 bits de tamanho, ento somente ser possvel conectar at 256 perifricos ao sistema. O acesso da UCP a um perifrico obtido atravs do barramento do sistema e da respectiva interface do perifrico. A comunicao entre UCP e a interface pode ocorrer atravs de um entre trs possveis mtodos: 1. Entrada/sada por programa; 2. Entrada/sada com emprego de interrupo; 3. Acesso Direto Memria (DMA Direct Memory Access). No primeiro caso, a UCP controla diretamente todas as etapas da comunicao, executando as instrues necessrias, tais como enviar um dado para a interface, ler dados da interface, verificar o 107

estado do perifrico e outras. Considerando que os perifricos transferem dados em um tempo muito maior do que a UCP gasta para processar uma soma, por exemplo, este processo altamente ineficiente. Uma alternativa a este mtodo consiste no emprego da tcnica de interrupo. Neste caso, a UCP comanda, por uma instruo, o incio de uma operao de entrada ou de sada e passa a realizar outras tarefas at que o perifrico sinalize (por um sinal de interrupo) que a operao terminou. com isso, a UCP no perde tempo verificando se a operao do perifrico terminou. Mais ainda assim a UCP participa do processo e, com isso, perde tempo que poderia estar utilizando para realizar um processamento efetivo, como alguma operao matemtica. Por essa razo, h um terceiro mtodo pelo qual a transferncia de dados de/para a interface se realiza entre este e a memria, sem intervenincia do processador. Trata-se do acesso direto memria ou DMA. Entrada/Sada por Programa Com esse mtodo, a UCP executa diretamente instrues de E/S, enviando e recebendo dados da interface de E/S. cada instruo serve para uma ao tpica de E/S, como examinar o estado de uma interface, realizar a operao de E/S com a interface (enviar um byte de dados ou receber um byte de dados). Uma tpica operao de entrada (E) em um microcomputador apresentada no fluxograma da fig. 10.36. O fluxograma considera que um conjunto de bytes ou palavras deve ser introduzido no sistema (operao de entrada) e que cada byte ou palavra trazido para a UCP, sendo modificado de alguma forma e, em seguida, transferido para um buffer de memria. Quando todo o conjunto de dados tiver sido armazenado no buffer, este ser processado. Para executar uma operao de E/S, a UCP deve enviar o endereo do dispositivo e da sua interface e o comando de E/S desejado. Um comando de E/S pode ser de leitura (a interface interpreta o comando e busca um byte ou palavra do registrador interno do dispositivo e o coloca em seu registrador). A UCP necessita posteriormente receber o dado, solicitando que a interface o coloque no barramento (outra instruo). Outro possvel comando de E/S o de escrita, semelhante ao de leitura, exceto que em sentido contrrio. H tambm comandos de verificao de erros e de controle do perifrico. Conforme j mencionado, a grande desvantagem deste mtodo consiste no intenso uso de UCP. Como tem que manter um loop de execuo para diversas atividades (p.ex., verificar o estado de uma interface, se este completar uma operao e estiver com o dado disponvel), ocorre um desperdcio de uso em detrimento de atividades mais importantes. No caso do uso deste mtodo de E/S, uma soluo para compatibilizar as diferentes velocidades entre o processador e o perifrico justamente o loop de interrogao do estado do perifrico, no se devendo enviar o dado enquanto ele no estiver pronto para recebe-lo. H duas possibilidades de se organizar a comunicao entre UCP, MP e interface de E/S: por memria compartilhada (memory-mapped) e E/S isolada (isolated I/O). No primeiro caso, a memria principal compartilhada tanto por instrues e dados comuns de um programa quanto por instrues/dados de operaes de E/S. os endereos tm a mesma quantidade de bits e as instrues o mesmo formato. A fig. 10.37 (a) mostra um exemplo de organizao de memria dos microprocessadores 8086/8088 para o caso de memria compartilhada, enquanto a fig. 10.37 (b) mostra o caso de organizao isolada de E/S (isto , isolada da memria).

108

O processador de entrada/sada isolada consiste me criar um espao de memria prprio de E/S e diferente, portanto, da memria principal. Com memria compartilhada, basta haver no barramento de controle uma nica linha de leitura (read) e de escrita (write), visto que a memria a mesma e, portanto, somente poder ocorrer em cada instante uma operao de leitura/escrita para UCP/MP ou uma para UCP/E/S isolada, isto no possvel. , pois, necessrio haver um sinal de identificao do topo de operao sempre que um endereo for colocado na linha (se da MP ou se de E/S). No caso de microprocessadores da famlia Intel, por exemplo, usa-se mais comumente a tcnica de E/S isolada do que a de memria compartilhada.

109

Os endereos de E/S isolada so chamadas portas (ports). No caso desses microprocessadores, h em geral uma conveno estabelecendo que os endereos de E/S (diferentes dos da MP) podem ter 8 bits ou 16 bits. Com 8 bits so endereados dispositivos localizados na prpria placa principal, como o controlador de tempo (timer) e a interface do teclado, e com 16 bits so endereados os dispositivos externos, como vdeo e controladores de disco. O mtodo de E/S isolada tem a vantagem de no utilizar espao da MP, deixando-a toda para outras aplicaes, mas tem a desvantagem de s ser utilizado com instrues especiais de E/S. alm disso, tambm foram desenvolvidos sinais especiais de controle para o espao de E/S. Por outro lado, o mtodo de memria compartilhada (memory-mapped) tem a vantagem de no necessitar de qualquer instruo especial, ou seja, qualquer instruo que utilize a MP se aplica tambm a E/S. Mas tem a desvantagem de ocupar parte do espao de memria principal para uso de E/S. Entrada e Sada com Emprego de Interrupo O mtodo de realizar E/S atravs da contnua ateno e controle da UCP bastante ineficiente, principalmente devido lentido dos dispositivos de E/S em relao velocidade da UCP. Uma alternativa vlida para evitar a perda de tempo da UCP continuamente interrogar o estado de um perifrico consiste em utilizar uma tcnica denominada interrupo. Nesse caso, a comunicao UCP/interface/perifrico funciona da seguinte maneira: a) A UCP permite a instruo de E/S para a interface e, como no dever haver uma resposta imediata, em vez de ficar continuamente verificando o estado do perifrico, a UCP desviase para realizar outra atividade (provavelmente executar um outro programa, suspendendo a execuo daquele programa que requer a E/S). b) Quando a interface est pronta para enviar os dados do perifrico para a UCP, ele avisa a UCP por meio de um sinal de interrupo. Chama-se interrupo porque realmente o sinal interrompe a atividade corrente da UCP para que esta d ateno ao dispositivo que o interrompeu. c) A UCP inicia, ento, o programa de E/S como se fosse o mtodo anterior. Para que o mtodo seja mais bem assimilado, interessante que o conceito de interrupo seja compreendido um pouco mais. Interrupo consiste em uma srie de procedimentos que suspendem o funcionamento corrente da UCP, desviando sua ateno para outra atividade. Quando esta outra atividade concluda, a UCP retorna execuo anterior do ponto onde estava antes de ser interrompida ( possvel que a UCP, aps concluir a atividade que a interrompeu, no retorne imediatamente ao programa interrompido, fazendo isto um pouco mais tarde). A fig. 10.38 mostra um exemplo de interrupo e seu funcionamento bsico, e a fig. 10.39 ilustra um barramento com uma linha de interrupo. Todo sistema possui, pelo menos, uma destas linhas, por onde circula o sinal de interrupo que desencadeia a suspenso de atividade corrente da UCP. H basicamente duas classes de interrupo: Interrupes internas ou de programas (s vezes chamadas de traps ou exception); Interrupcoes externas.

110

As interrupes internas a um programa ocorrem devido a algum tipo de evento gerado pela execuo de uma instruo ou at mesmo programado. Pode ser, por exemplo, uma diviso por zero, um overflow em uma operao aritmtica, um cdigo de operao invlido, etc. As interrupes externas so causadas por um sinal externo UCP que a interrompe. Em geral, isto est relacionado uma interface de E/S que pretende avisar UCP que um determinado perifrico deseja ateno para transferir dados.

111

A fig. 10.40 mostra, em uma escala de tempo, a relao no tempo entre eventos que ocorrem em um sistema, indicando um digitador utilizando um teclado (cada tecla acarreta uma interrupo para que o caractere seja lido), uma impressora removendo dados da memria e um programa sendo executado. O programa o programa principal, que interrompido a cada pressionamento de uma tecla, bem como a cada caractere transmitido para a impressora. Observe a curta durao de cada procedimento de interrupo em comparao com o tempo gasto durante a execuo do programa (entre as interrupes). Ao se efetivar a interrupo da UCP, algumas aes devem ser tomadas: - Identificao do tipo de interrupo (de que se trata?) - Qual o dispositivo que sinalizou? - Como reagir ocorrncia? - Dar ateno imediata? Aguardar para mais tarde? Ignorar? - O que deve acontecer com o programa interrompido? Quando ele retornar sua execuo? Para atender a quase todas essas questes, o sinal de interrupo acarreta o desvio na sequencia de execuo do programa corrente (fig. 10.38), passando a ser executada uma rotina usualmente denominada Rotina de Tratamento de Interrupo (Interruption Handler). No entanto, desse desvio ocorrer, a UCP termina a instruo corrente e executa uma ao denominada, de um modo geral, salvamento de contexto do programa corrente. O fato que os registradores da UCP esto, no momento da interrupo, armazenando valores usados pelo programa que est sendo interrompido e que continuaro a ser utilizados quando o programa retornar sua execuo. Por outro lado, o novo programa a ser executado vai precisar utilizar os mesmos registradores. Alm disso, o CI (Contador de Interao) contm o endereo da prxima instruo do programa que est sendo interrompido, o qual precisa ser tambm guardado para ser utilizado quando o programa retomar sua execuo. Este conjunto de dados e endereos do programa corrente chama-se contexto e deve ser armazenado em uma rea previamente designada para isto na MP. Aps o salvamento deste contexto, o CI recebe o endereo inicial da rotina de tratamento de interrupo e sua execuo iniciada. Voltando ao problema inicial, podemos observar que esta modalidade de realizar operaes de E/S melhorou o desempenho dos sistemas, mas ainda apresenta algumas desvantagens. Embora a

112

UCP no precise mais interrogar o estado de disponibilidade de um perifrico, ela continua gastando tempo para executar o programa de E/S para efetivar a transferncia de dados. Uma interface muito utilizada com este mtodo denomina-se, em ingls, Programmable Peripheral Interface pela Intel. Acesso Direto Memria DMA A melhor alternativa para se realizar operaes de E/S com o mximo de rendimento da UCP o mtodo denominado acesso direto memria (DMA Direct Memory Access). De modo geral, a tcnica DMA consiste na realizao da transferncia de dados entre uma determinada interface e a memria principal, praticamente sem interveno da UCP. Esta se limita a solicitar a transferncia para um dispositivo denominado controlador de acesso direto memria (DMA controller), o qual realiza por si s a transferncia. A UCP fica liberada para realizar outras atividades. Quando o controlador termina a transferncia, ele sinaliza para a UCP atravs de uma interrupo. Na realidade, o controlador de DMA age como um mestre ou estao principal para controlar o barramento quando entra em funcionamento. A fig. 10.41 mostra um exemplo de E/S com emprego de DMA. Durante o funcionamento normal da UCP, a chave de barramento nmero 1 est ligada, permitindo a passagem de endereos/dados entre UCP e MP, enquanto as chaves de barramento 2 e 3 esto desativadas, no permitindo passagem de informaes. Quando o controlador DMA entra em funcionamento, a chave 1 e as chaves 2 e 3 so ligadas.

O controlador DMA coloca um endereo no barramento de endereos para a MP. Ao mesmo tempo ele autoriza, via sinal de controle, que o perifrico envie ou receba dados diretamente da MP. Quando a operao de transferncia de dados concluda, o DMA retoma o controle do barramento para a UCP. Um controlador de DMA um dispositivo bastante complexo. Ele possui diversos registradores internos: pelo menos um registrador de dados, um registrador de endereos e um registrador que armazena um valor igual quantidade de bytes ou palavras que so transferidas. A fig. 10.42 mostra uma organizao simples de controlador de DMA. 113

Representao das Instrues O funcionamento bsico de um computador est totalmente relacionado s operaes primitivas que a UCP (o hardware) capaz de realizar diretamente. Sabemos tambm que as referidas operaes primitivas, bsicas, tm sua execuo efetivada atravs da realizao, passo a passo, de uma sequencia de aes menores (denominadas microoperaes). Esta sequencia constitui o algoritmo que conduz execuo de operao, o qual chamamos de instruo da maquina para realizar a dita operao. As UCPs (os processadores) so fabricadas contendo internamente a programao para realizao de uma grande quantidade de operaes primitivas, cada uma definida pela respectiva instruo de maquina, que a formalizao da operao em sistema operacional. Denomina-se conjunto de instrues (instruction set) de um processador esta quantidade de instrues que ele pode realizar diretamente.

No entanto, o formato apresentado na figura no o nico utilizado nos sistemas de computao comerciais. Na realidade, h diversas formas de representar instrues, e vrios modos da unidade de controle interpreta a busca do(s) dado(s). Cada formato de instruo tem caractersticas prprias, com suas vantagens e desvantagens, podendo ser eficaz em certas aplicaes e desaconselhvel em outras. Na prtica, o conjunto de instrues definido para uma determinada UCP sempre constitudo de uma mistura de formatos diferentes, justamente para permitir a melhor aplicao em cada caso. interessante observar que h opinies divergentes quanto vantagem de se obter versatilidade com um numeroso conjunto de instrues de mquina. 114

O problema, neste caso, est na dificuldade dos compiladores em escolher a melhor opo de instruo para cada tipo de aplicao. A tendncia fazer com que os compiladores operem quase sempre com uma pequena quantidade de instrues; com isso, perderiam sentido tantas instrues pouco teis (ou pouco utilizadas). conveniente repetir, neste ponto, alguns dos aspectos bsicos sobre o funcionamento de um computador, especificamente referentes aos processadores (UCP). Os processadores so projetados em uma arquitetura definida com o nico proposito de realizar operaes bsicas muito simples, tais como: somar dois valores, subtrair dois valores, mover um valor de um loco para outro. A programao da sequencia de passos para realizar cada uma das mencionadas operaes inserida no processador durante o processo de sua fabricao, caracterizando a instruo de mquina. Como a linguagem utilizada pelas mquinas para realizar suas tarefas binria, tambm uma instruo de mquina deve ser representada nessa linguagem e, assim, ser formada por um conjunto de bits, que indica, conforme seu formato e programao, o que o processador deve realizar (qual a operao) e como realizar (a operao), alm de ter que indicar com que dados a operao ir trabalhar (a localizao do(s) dado(s)). O projetista do processador escolhe, ento, que operaes aquele processador ir realizar e define, para cara uma delas, todos os detalhes de identificao e execuo da operao, estabelecendo, assim, o formato de cada instruo de mquina. Basicamente, uma instruo possui dois elementos: - o que indica ao processador o que fazer e como fazer denominado cdigo de operao (C.Op.); e - o que indica ao processador com que dado ou dados a operao ir se realizar denominado operando (Op.). Esses elementos so identificados para o processador por um grupo de bits especfico, os quais, em conjunto, formam a instruo completa. Toda instruo de mquina possui um cdigo de operao especfico e nico para aquela tarefa. Este cdigo aps ser decodificado durante o ciclo de execuo da instruo, permitir que a unidade de controle emita os sinais necessrios, e previamente programados, para se efetivar a sequencia de passos de realizao da operao indicada. A quantidade de bits estabelecida para esta campo da instruo (C.Op.) define o limite mximo de instrues que o processador poder executar. Se, por exemplo, um determinado processador possui instrues de mquina, cujo C.Op. um campo de 6 bits, ento, este processador somente poder realizar 64 instrues diferentes, dado que 26=64. Alm do cdigo de operao, as instrues podem conter um ou mais campos denominados operando, cada um deles contendo informao sobre o dado a ser manipulado (o tipo da informao sobre o dados seu valor ou o endereo da memria onde localiz-lo). A fig. 8.2 mostra exemplos de alguns formatos tpicos de instrues de mquina. Para compreender, de modo ordenado, a representao de instrues em sistemas de computao, pode-se efetuar a analise do assunto segundo dois aspectos: Quantidade de operandos; Modo de interpretao do valor armazenado no campo operando (modo de endereamento do dado).

115

Quantidade de Operandos Desde os primeiros processadores concebidos at os atuais, os projetistas tm definido conjuntos de instrues do mais variados tipos e formatos, de modo que, mesmo em um nico e especfico processador, as instrues tendem a ter formato diferente, isto , tamanhos e campos diversos, conforme a operao que a instruo indica. Assim, instrues que realizam operaes aritmticas ou lgicas tendem a ter 2 operandos (embora uma instruo deste tipo devesse possuir 3 operandos para se tornar completa), algumas vezes 1 apenas (os outros ficam implcitos) e muito raramente 3 operandos. E assim por diante. Um dos primeiros formatos de instruo idealizados foi includo no sistema SEAC, em 1949 e possua quatro operandos, conforme mostrado na fig. 8.3. Tal instruo (que no mais utilizada nem a mquina) era completa. No s possua indicao explcita da localizada de todos os operandos (no caso, claro, de se tratar de uma instruo que realiza uma operao aritmtica), como tambm j trazia armazenado o endereo da prxima instruo.

116

No caso de um computador com memria de 2K clulas (endereos) e com instruo possuindo um cdigo de operao de 6 bits (conjunto de 64 possveis instrues), cada instruo teria um tamanho total de 50 bits.

Se a memria tem 2K clulas, ento cada endereo seria indicado por um nmero de 11 bits, pois: 211 = 2K. Como cada campo operando contm o endereo de um dado e a instruo possui quatro operandos: 4 (operandos) x 11 (bits de endereos) + 6 (C.Op.) = 50 bits Essa mquina poderia ter, por exemplo, uma instruo de soma do tipo (em Assembler): ADD X,Y,Z,P, cuja descrio para execuo seria: (Z) (X)+(Y), sendo P endereo da prxima instruo. Essa nica instruo permitiria a execuo da expresso: C = A+B, podendo ser representada em linguagem Assembly como: ADD A, B, C, P Muitas consideraes podem ser feitas a respeito das vantagens relativas quantidade de operandos desse tipo de instruo, entre as quais podemos citar: a) Completeza a instruo possui todos os operandos necessrios realizao de uma operao aritmtica, dispensando at instrues de desvio incondicional, pois o endereo do desvio consta no campo P; b) Menor quantidade de instrues em um programa, em comparao ao uso de instrues com menor quantidade de operandos. Mas, apesar dessas vantagens, esse tipo de instruo tem uma grande desvantagem: a ocupao demasiada de espao de memria, principalmente se atentarmos para o fato de que grande nmero de instrues de um programa no necessita de todos os trs operandos (praticamente somente as instrues que tratam de operaes matemtica que poderiam requerer 3 operandos). Uma instruo de desvio incondicional, p.ex., precisaria apenas do campo P (que conteria o endereo da prxima instruo, para onde se estaria querendo desviar), restando inteis 33 bits da instruo (3 x 11 bits). Outras instrues tambm deixam de usar todos os campos operandos. A instruo que transfere um valor da MP para a UCP (LOAD) necessita apenas de dois campos: um para o endereo do dado e outro para indicar o endereo da prxima instruo. Restariam inteis dois campos ou 22 bits. s vezes, este tipo de instruo poderia requerer outro operando, para indicar o destino do dado na UCP, se considerarmos que o local de destino (registrador) poderia ser um dentre vrios. No exemplo, consideramos que o LOAD seria realizado armazenando o dado em um registrador especial e nico, o acumulador, prescindindo, assim, de indicao explcita na instruo. Um dos fatores mais importantes no projeto de uma UCP consiste na escolha do tamanho das instrues. Essa escolha depende de vrias caractersticas da mquina, tais como: Tamanho da memria; Tamanho e organizao das clulas da MP; Velocidade de acesso; 117

Organizao do barramento de dados.

O ponto crucial a ser analisado por ocasio do projeto reside na comparao dentre dois fatores antagnicos: economia de espao x conjunto completo e poderoso de instrues. Um bom conjunto de instrues requer muitas instrues (para atender a diferentes tipos de aplicaes), o que implica definir muitos cdigos de operao (uma para cada instruo, claro) e, consequentemente, mais bits para o campo cdigo de operao. O aumento da quantidade de bits do campo C.Op. acarreta aumento do tamanho da instruo e, principalmente, aumento da tarefa do decodificador durante a execuo do ciclo de instruo (lembre-se da explicao sobre o emprego do decodificador de cdigos de operao). Alm disso, um grande conjunto de instrues pode indicar que elas sejam mais completas e, nesse caso, h necessidade de muitos bits na instruo, j que haver diversos campos de operandos. No entanto, quanto mais bits a instruo possui, mais memria se consome para armazenla. Isso contrrio ao desejo de economia de espao de armazenamento, visando reduo de custos (mesmo atualmente, com a reduo dos preos dos dispositivos eletrnicos, memria sempre um elemento caro). O problema de tal ordem que h uma corrente de pesquisadores e fabricantes que se utiliza de outra tecnologia para definir a arquitetura dos processadores, buscando economia e eficincia nessa rea de especificao de conjunto de instrues. Esta arquitetura diferente conhecida como RISC Reduced Instruction Set Computer (Computador com Conjunto Reduzido de Instrues). Se, por exemplo, na instruo mostrada na fig. 8.3 fosse retirado um operando, ento, os 44 bits seriam usados para trs operandos, o que, mantido o mesmo tamanho da palavra, daria para se acessar endereos de 14 bits (214 = 16K) em vez dos 2K anteriores. Alm disso, os 2 bits restantes poderiam servir para aumentar o campo de cdigo de operao para 8 bits (o que aumentaria o conjunto de instrues para 256). Outra possibilidade seria reduzir o tamanho total da instruo, melhorando o uso da memria e permitindo maiores programas. Na prtica, a busca de instrues menores redundou incialmente na retirada do campo P. Isto foi possvel atravs da concepo de uma tcnica mais aperfeioada de obter, de forma automtica, o endereo da prxima instruo. Esta tcnica consistiu na criao de um registrador especial na UCP, cuja funo indica o endereo da prxima instruo (sendo automaticamente incrementado, est sempre indicando novo endereo). Trata-se, como j vimos, do CI Contador de Instruo (em ingls, MAR Memory Address Register). Instrues com Trs Operandos Uma instruo que trata de execuo de uma operao aritmtica com dois valores requer, naturalmente, a indicao explcita da localizao desses valores. Quando eles esto armazenados na MP, o campo operando deve conter, ento, endereo de cada um deles, o que indica a necessidade 2 campos operandos. Alm disso, se se trata de uma soma de valores natural imaginar que o sistema deve ser orientado para armazenar o resultado em algum local e, assim, deve haver um terceiro campo operando, para indicar o endereo da MP onde ser armazenado o resultado.

118

A fig. 8.4 apresenta o formato bsico de uma instruo de trs operandos. Pode-se estabelecer, por exemplo, que os campos Operando 1 e Operando 2 representem o endereo de cada dado utilizado como operando em uma operao aritmtica ou lgica e que o campo Operando 3 contenha o endereo para armazenamento do resultado dessas operaes. As instrues de trs operandos, empregadas em operaes aritmticas, podem ser do tipo: ADD A, B, X (X) (A)+(B) SUB A, B, X (X) (A)- (B) MPY A,B,X (X) (A)* (B) DIV A, B, X (X) (A)/ (B)

Para exemplificar sua utilizao, consideremos que um programa escrito em linguagem de alto nvel contenha o comando mostrado a seguir, o qual calcula o valor de uma expresso algbrica: X = A*(B+C*D-E/F) Como resultado do processo de compilao, o referido comando ser convertido em instrues de mquina que, em conjunto, representam um programa com resultado idntico ao do comando j apresentado. Para simplificar e melhorar nosso entendimento, vamos utilizar as instrues da linguagem Assembly para montar o programa equivalente, em vez de criarmos instrues em linguagem binria: A sequencia do algoritmo para resolver a equao a seguinte, considerando as regras matemticas usuais: 1) Inicialmente, resolver as operaes internas aos parnteses; 2) Dentre as operaes existentes, a primeira a ser realizada a multiplicao de C por D (o resultado armazenado em uma varivel temporria, T1) e, em seguida, a diviso de E por F (resultado em uma varivel temporria, T2) prioridade dessas operaes sobre soma e subtrao. 3) Posteriormente, efetua-se a soma de B com T1. 4) Subtrai-se T2 do resultado dessa soma. 5) Finalmente, multiplica-se A por esse ltimo resultado e armazena-se em X. Considerando as instrues Assembly de 3 operandos, anteriormente definidas, podemos construir o seguinte programa equivalente ao comando exemplificado: MPY C,D,T1 ; multiplicao de C e D, resultado em T1 DIV E,F,T2 ; diviso de E por F, resultado em T2 ADD B,T1,X ; soma de B com T1; resultado em X SUB X, T2, X ; subtrao entre X e T2, resultado em X MPY A,X,X ; multiplicao de A por X, resultado em X 119

Utilizaram-se duas variveis temporrias, T1 e T2. Todas as letras usadas (A, B, C, D, E, F, T1, T2) representam endereos simblicos de memria. A ordem de expresso foi a normal: da esquerda para a direita, de acordo com a prioridade matemtica. Observamos que h dois operandos com endereos iguais, o que um desperdcio de espao de memria. Tambm deve ser observado que o nmero de instrues igual ao de operaes; isso sempre acontecer com instrues de 3 operandos, pois cada uma delas resolve por completo uma operao. Ainda que se tenha reduzido a quantidade de operandos (de quatro para trs), continuamos a consumir demasiado espao de memria para a efetiva utilizao dos operandos (continua a haver muitas instrues que no requerem todos os campos de operandos). Instrues de mquina de 3 operandos so raramente encontradas em conjuntos de instrues dos atuais processadores existentes no mercado, devido principalmente ao seu grande tamanho. Instrues com Dois Operandos Considerando a importncia do problema de economia de espao de armazenamento, foram criadas instrues com dois campos de operandos, como: ADD A, B (A) (A)+(B) As demais operaes aritmticas seriam realizadas com instrues de formato igual. Na realidade, o conjunto de instrues aritmticas de 2 operandos poderia ser do tipo a seguir indicado: ADD Op1, Op2 (Op1) (Op1)+(Op2) SUB Op1, Op2 (Op1) (Op1)-(Op2) MPY Op1, Op2 (Op1) (Op1)*(Op2) DIV Op1, Op2 (Op1) (Op1)/(Op2) Nesse caso, o contedo da posio de memoria, cujo endereo est indicado em Op.1 (valor do primeiro operando) ser destrudo com armazenamento, naquele endereo, do resultado da operao. Pode-se evitar, quando necessrio, essa destruio, salvando-se o valor da varivel, antes da execuo da instruo. Esse salvamento de varivel pode ser realizado por uma nova instruo: MOVE A,B (A) (B) Com essas instrues de dois operandos, o comando correspondente equao acima poderia ser convertido, para execuo, no programa Assemble apresentado a seguir, ainda de acordo com a sequencia apresentada no item anterior: MPY C,D ;multiplicao de C por D, resultado em C DIV E, F ;diviso de E por F, resultado em E ADD B,C ;soma de B com C, resultado em B SUB B,E ;subtrao entre B e E, resultado em B MPY A, B ;multiplicao de A por B, resultado em A MOVE X, A ;armazenamento do resultado final, A, em X Note, agora, que a sequencia contm uma instruo a mais que o nmero de operaes da expresso; e, tambm, podemos observar que foram destrudos os valores armazenados nos endereos correspondentes variveis A, B, C e E.

120

sempre provvel que se empregue, em um programa, uma varivel mais de um vez. Para evitar que uma determinada varivel tenha seu valor destrudo devido ao armazenamento de um resultado parcial no endereo correspondente, pode-se usar algumas variveis temporrias e instrues MOVE, com o proposito de preservar todos os valores de variveis. Assim, a execuo da instruo MPY C, D acarretaria a destruio do valor da varivel C, j que a descrio da instruo orienta a soma do valor armazenado no endereo indicado no campo (Op1) que, neste caso, correspondente varivel C, com o valor armazenado no endereo indicado no campo (Op2), que, no caso, correspondente varivel D, e que o resultado obtido (valor C+D) seja armazenado na MP no endereo indicado no mesmo campo (Op1), que era o de C. Para evitar essa destruio, o programa anterior poderia ser alterado para o seguinte: MOVE X, C ;move cpia de C para o endereo X MPY X, D ;multiplicar X (cpia de C) por D. O resultado ser armazenado em X e no mais em C e, assim, o valor da varivel no destrudo MOVE T1, E ;mover cpia de E para o endereo T1 DIV T1, F ;dividir T1 (cpia de E) por E. O resultado ser armazenado em T1 e no mais em E ADD X, B ;somar X por B, resultado em X SUB X, T1 ;subtrair T1 de X, resultado em X MPY X, A ;multiplicar A por X, resultado final em X Instrues com Um Operando Considerando as vantagens obtidas com a reduo da quantidade de operandos (instrues menores), forma tambm criadas instrues de apenas um operando. Com esse tipo, o acumulador (ACC) empregado como operando implcito (no necessrio especificar seu endereo na instruo, pois s h um ACC), guardando o valor de um dos dados e, posteriormente, o valor do resultado a operao. ADD Op. ACC ACC + (Op) SUB Op. ACC ACC (Op) MPY Op. ACC ACC*(Op) DIV Op. ACC ACC/(Op) Com o propsito de permitir a transferncia de dados entre o ACC e a MP, forma criadas duas novas instrues: LDA Op que significa ACC (Op) STA Op (Op) ACC Ainda o mesmo comando mostrado na equao poderia ser convertido no programa Assembler, mostrado a seguir, constitudo de instrues de um operando (sem destruirmos valor algum das variveis). LDA C MPY D STA X LDA E DIV F STA T1 121

LDA B ADD X SUB T1 MPY A STA X A comparao entre os diferentes programas (para instrues com 3 operandos, com 2 e com 1 operando) mostra na tab. 8.2, a qual inclui, tambm, a quantidade de memria despendida com cada programa, bem como a quantidade de acessos memria (para ciclos de leitura ou de escrita) em cada caso. Para calcular a quantidade de bits gastos em cada programa foram considerados um tamanho de cdigo de operao de 8 bits (para todos os 3 tipos de instruo) e uma MP com capacidade de armazenamento de 1M clulas, sendo, portanto, cada campo operando de 20 bits (endereo do dado), visto que 220=1M. A tabela 8.1 apresenta o tamanho em bits de cada tipo de instruo, bem como a quantidade de ciclos de memria (de acessos) que so consumidos em cada uma delas. Os programas mostrados na tabela 8.2 indicam que, em termos de gasto de memria, instrues de 3 operandos no servem, razo por que foram abandonados pelos fabricantes h muito tempo. Usualmente, as instrues de dois operando so mais bem empregadas em operaes matemticas (aritmticas e logicas), utilizando-se tambm instrues de 1 operando em outros casos, como instrues de desvio.

122

Na verdade, h ainda muita controvrsia em relao ao projeto e implementao do conjunto de instrues de um processador, no existindo, de modo nenhum, unanimidade para os diversos tpicos, tais como tamanho da instruo, formato e significado do campo operando. Instrues de poucos operandos ocupam menos espao de memria e tornam o projeto do processador mais simples em virtude das poucas aes que elas induzem a realizar. No entanto, o programa gerado em binrio algumas vezes maior devido ao aumento da quantidade de instrues (no o caso do exemplo apresentado na tabela 8.2). Instrues de 1 operando so simples e baratas de implementar, porm somente empregam um nico registrador (o ACC) e, com isso, reduzem a flexibilidade e velocidade de processamento (o emprego de mais de um registrador acelera o processamento devido velocidade de transferncia desses dispositivos). Instrues com mais de 1 operando podem usar tanto endereos de memria como registradores em seu formato, outro item de discusso. Modos de Endereamento So caractersticas importantes do formato bsico de instrues de mquina e o ciclo de execuo de cada instruo: a) O endereamento de uma instruo sempre realizado atravs do valor armazenado no contado de instruo (CI). Todo ciclo de instruo iniciado pela transferncia da instruo para o RI (usando-se o endereo contido no CI). b) Toda instruo consiste em uma ordem codificada (cdigo de operao) para a UCP executar uma operao qualquer sobre dados. No contexto da interpretao de uma instruo, o dado pode ser um valor numrico, um caractere alfabtico, um endereo (instruo de desvio). c) A localizao do(s) dado(s) pode estar explicitamente indicada na prpria instruo, por um ou mais conjunto de bits, denominados campo do operando, ou implicitamente (quando o dado est armazenado no acumulador, que no precisa ser endereado por ser nico na UCP). Todos os exemplos apresentados at esse ponto definiram o campo operando como contendo o endereo da MP onde est localizado o dado referido na instruo. No entanto, essa no a nica maneira de indicar a localizao de um dado, havendo outros modos de endereamento. A existncia de vrios mtodos para localizar um dado que est sendo referenciado em uma instruo se prende necessidade de dotar os sistemas de computao da necessria flexibilidade no modo de atender aos diferentes requisitos dos programas. Conforme ser demonstrado a seguir, h instrues em que ineficiente usar o dado armazenado na MP, como, por exemplo, no caso de um contador, o qual tem um valor fixo inicial e, durante a execuo do programa, sistematicamente atualizado. Nesse caso, melhor seria se o referido contador (dado) fosse inicialmente transferido para um registrador disponvel na UCP e l permanecesse (sendo diretamente atualizado na UCP) at o final da execuo do programa, em vez de ir da MP para a UCP e vice-versa (para atualizao de seu valor), o que acarreta um considervel gasto de tempo para os repetidos ciclos de leitura e gravao. Por outro lado, a manipulao de vetores acarreta a necessidade de se estabelecer um mtodo eficaz de endereamento para variveis que ocupam posies contguas de memria. E assim por diante. Dentre os diversos modos de endereamento atualmente empregados, os principais so: 123

Imediato; Direto; Indireto; Por registrador; Indexado; Base mais deslocamento.

Modo Imediato O mtodo mais simples e rpido de obter um dado indicar seu prprio valor no campo operando da instruo, ao invs de busca-lo na memria. A vantagem desse mtodo reside no curto tempo de execuo da instruo, pois no gasta ciclo de memria para sua execuo, exceto o incio requerido para a busca da instruo. Assim, o dado transferido da memria juntamente com a instruo (para o RI), visto estar contido no campo operando da instruo. Esse modo, denominado imediato, til para inicializao de contadores (um valor sempre fixo em toda execuo do mesmo programa); na operao com constantes matemticas; para armazenamento de ponteiros em registradores da UCP; ou para indicao da quantidade de posies em que um determinado nmero ser deslocado para a direita ou para a esquerda (em operaes de multiplicao e diviso). Uma de suas desvantagens consiste na limitao do tamanho do campo operando das instrues, o que reduz o valor mximo do dado a ser manipulado. Outra desvantagem o fato de que, em programas repetidamente executados, com valores de variveis diferentes a cada execuo, esse mtodo acarretaria o trabalho de alterao do valor do campo operando a cada execuo (dado de valor diferente). Praticamente, todo computador possui um ou mais instrues que empregam o modo de endereamento imediato: para instrues de desvio; de movimentao de um dado; para operaes aritmticas com uma constante, etc. Por exemplo, os processadores da famlia x86 possuem, entre outras, a instruo: MOV R, Op., que pode ser assim usada: MOV AL, 22H (copiar o valor hexadecimal 22 para o registrador AL, sendo o valor de tamanho igual a 1 byte). Com esta mesma instruo possvel copiar um valor de 32 bits. Por exemplo: MOV EBX, 33445566H (copiar o valor hexadecimal 33445566 para o registrador de 32 bits EBX).

124

Modo Direto Nesse mtodo, o valor binrio contido no campo operando da instruo indica o endereo da memria onde se localiza o dado. Tem sido o modo empregado em nossos exemplos anteriores. O endereo pode ser o de uma clula onde o dado est inteiramente contido ou pode indicar o endereo da clula inicial, quando o dado est armazenado em mltiplas clulas. tambm um modo simples de acesso, pois requer apenas uma referncia MP para buscar o dado, sendo, porm, mais lento que o modo imediato, devido naturalmente referncia memria. Quando um dado varia de valor cada execuo do programa, a melhor maneira de utilizlo , inicialmente, armazena-lo na MP (do dispositivo de entrada para a memria). O programa, ento, usa o dado pelo modo direto, em que a instruo indica apenas o endereo onde ele se localiza. Uma possvel desvantagem desse processo est na limitao de memria a ser usada, conforme o tamanho do campo operando. Isto , se o campo tiver um tamanho, por exemplo, de 12 bits, com o emprego do modo direto, somente se pode acessar as clulas de endereo na faixa de 0 a 4095 (decimal), correspondentes aos valores binrios 000000000000 a 111111111111. Atualmente, como o espao de endereamento da MP vem crescendo bastante (usa-se MP com espao de endereamento da ordem de 32M clulas, 64 MB e at 256 MB), no desejvel criar instruo com campo operando de tantos bits para enderear 64M clulas seriam necessrios 26 bits para endereo direto. Os processadores da famlia Intel x86 possuem instrues no modo direto, uma das quais, do tipo MOV R, Op., que pode ser implementada copiando at 4 clulas contguas de memria, 32 bits, para um registrador.

Somar o dado de valor binrio 000100000011 ou hexadecimal 103 armazenado na clula de endereo hexadecimal 5C (Op.1) com o dado de valor binrio 000001011010 ou hexadecimal 05A

125

armazenado na clula de endereo 3B (Op.2) e armazenar o resultado (15D) na clula de endereo hexadecimal 5C (Op.1). Modo Indireto Neste mtodo, o valor binrio do campo operando representa o endereo de uma clula; mas o contedo da referida clula no o valor de um dado (como no modo direto), um outro endereo de memria, cujo contedo o valor do dado. Assim, h um duplo endereamento para o acesso a um dado e, consequentemente, mais ciclos de memria para buscar o dado, comparativamente com os mtodos j apresentados. O endereo intermedirio (contedo da clula endereada pelo valor do campo operando) conhecido como ponteiro, pois indica a localizao do dado (aponta para o dado). O conceito de ponteiro de dado largamente empregado em programao. Com esse processo, elimina-se o problema do modo direto, de limitao do valor do endereo do dado, pois estando o endereo armazenado na memria (pode ocupar uma ou mais clulas), ele se estender ao tamanho necessrio representao do maior endereo da MP do sistema de computao em uso.

H uma variao pouco empregada desse mtodo, em que, em vez de um nvel de indireo, so usados mltiplos nveis. Em lugar do valor do dado (caso de apenas um nvel de indireo), armazena-se novo endereo, que acessa uma clula, que pode conter outro endereo, e assim sucessivamente. Uma das implementaes dessa variao do modo indireto prev a incluso de um bit especial na instruo o qual representa a continuao ou no do endereamento. Se o valor desse bit for igual a 0, o endereamento prossegue com novo acesso, enquanto o valor 1 significa encerramento do processo, isto , o endereo final do dado. Este mtodo atualmente pouco empregado devido quantidade de acessos memria e sua complexidade para programadores em linguagem Assembly. Um dos possveis usos (no passado) para o modo indireto na manuteno de ponteiros de dados. Se tivermos uma relao de dados a serem movimentados para novas posies de memria (caso, por exemplo, de elementos de vetores) usando o modo indireto, basta apenas modificar o valor da clula endereada no primeiro nvel (campo do operando), isto , modificar o valor da clula endereada no primeiro nvel (campo do operando), isto , modificar endereo de acesso ao dado, sem alterar o valor do campo operando. Como j mencionado anteriormente, a grande desvantagem desse mtodo , obviamente, a maior quantidade de ciclos de memria requerida para completar o ciclo da instruo, pois, para se acessar um dado no modo indireto, necessrio efetuar dois acessos memria (um para busca o endereo do dado e outro para efetivamente buscar o dado).

126

Ainda sobre o processo de acesso do modo indireto, deve-se ter ateno para o fato de que, embora seja possvel localizar qualquer endereo de MP (porque o endereo de efetivo acesso ao dado no est mais contido no campo operando da instruo, como no modo direto), em um dado instante somente se pode acessar endereos at o limite do campo operando, pois esse, contendo o endereo de acesso ao ponteiro do dado (endereo do dado), limita o tamanho do maior valor do endereo. Observaes 1) H dois mtodos de indicao do modo de endereamento de instrues: a. Cada cdigo de operao estabelece no s o tipo da instruo como tambm o modo de endereamento. b. A instruo possui um campo especfico para indicar o modo de endereamento; nesse campo, consta um cdigo binrio correspondente ao modo desejado. A fig. 8.6 apresenta um exemplo desse mtodo. 2) Comparando-se as caractersticas dos trs modos de endereamento apresentados, pode-se observar que: a. O modo imediato no requer acesso MP para buscar o dado (exceto, claro, para a busca da instruo); o modo direto requer um acesso e o modo indireto, pelo menos dois acessos para busca do dado na MP. b. Quando ao tempo de execuo das instrues, as que usam o modo imediato so mais rpidas, seguidas das que usam o modo direto e, finalmente, as que usam o modo indireto so executadas mais lentamente. A velocidade de execuo diretamente proporcional quantidade de acessos despendida em cada ciclo da instruo. Endereamento por Registrador Esse mtodo tem caracterstica semelhante aos modos direto e indireto, exceto que a clula (ou palavra) de memria referenciada na instruo substituda por um dos registradores da UCP. Com isso, o endereo mencionado na instruo passa a ser o de um dos registradores, e no mais de uma clula da MP. A primeira vantagem, logo observada, consiste no menor nmero de bits necessrios para enderear os registradores, visto que esses existem em muito menor quantidade que as clulas da memria. Isto reduz o tamanho geral da instruo. Um computador que tenha UCP projetada com 16 registradores requer apenas 4 bits para enderec0los (cada um dos 16 registradores tem um endereo de 4 bits, de 0 a F16, por exemplo); no caso de endereamento de clulas de MP, h necessidade de 20 ou mais bits para indicar o endereo de cada uma das clulas.

127

Outra vantagem est no prprio emprego do dado, que passa a ser armazenado em um meio (registrador) cujo acesso muito mais rpido que o acesso memria. Para mostrar, de modo mais objetivo, a utilidade e as vantagens do uso de registradores no endereamento de instrues, vamos considerar a execuo do conjunto de instrues mostrado a seguir (pode ser parte de um programa), atravs de dois modos diferentes: com emprego do modo de endereamento por registrador e sem emprego desse modo de endereamento.

O trecho de programa descrito executa 100 vezes o mesmo tipo de ao: ler dois valores e soma-los. Para implementar sua execuo direta necessrio definir uma varivel inteira (chamamos de contador); aps a execuo de cada conjunto de instrues de leitura dos dados (Get) e de soma, o contador incrementado de 1, at atingir o valor 100, quando a execuo do trecho de programa se completa. Em linguagem Assembly teramos:

128

Como podemos observar, as instrues LDA I e STA I manipulam com a leitura e gravao de cada um dos 100 valores assumidos por I durante a execuo do programa; gastam-se, com isso, 200 ciclos de memria (100 de leitura de I LDA Op. e 100 de gravao do novo valor de I STA Op.). Vamos agora executar o mesmo trecho de programa de outro forma. Desta vez vamos utilizar o modo de endereamento pro registrador. O objetivo armazenar na UCP (em um dos registradores disponveis), o valor inicial de 1 e efetuar a soma I = I+1, diretamente na UCP (sem necessidade de acesso MP, visto que o valor de I permanece armazenado em um dos registradores da UCP). Esse mtodo ir economizar os 200 acessos gastos pelo processo anterior. O novo trecho de programa em Linguagem Assembly ficaria assim:

As instrues LDI R1, 1 e LDI R2, 100 armazenam em registradores, respectivamente, o valor inicial (1) e o valor final (100) do contador. No exemplo foram indicados os registradores R1 e R2, mas podem ser usados quaisquer registradores disponveis. As instrues SUBR R1, r2 e INC R1 sero executadas manipulando-se os valores armazenados dentro da UCP, nos registradores escolhidos, R1 e R2, cujos endereos constam da instruo (campo R); no h, portanto, acesso MP. 129

Outra vantagem do emprego do modo de endereamento por registrador economia de bits nas instrues pode ser verificada pela seguinte comparao:

H duas maneiras de empregar o modo de endereamento por registrador: Modo por registrador direto; Modo por registrador indireto.

No primeiro caso, o registrador endereado na instruo contm o dado a ser manipulado. No outro, o registrador referenciado armazena o endereo de uma clula de memria onde se encontra o dado. A instruo conter, como sempre, o endereo do registrador. A fig. 8.8 mostra dois tipos de instrues que empregam o modo de endereamento por registrador. Na fig. 8.8(a) observa-se que a instruo possui dois campos contendo, cada um, o endereo de um registrador (um dos 16 possveis), o qual poder ter armazenado o dado (direto) ou o endereo da MP, onde estar o dado (indireto). Embora o modo de endereamento por registrador seja vantajoso em vrios aspectos, tais como rapidez de execuo da instruo e economia de espao de armazenamento das instrues, essas vantagens nem sempre so aplicveis. H certos casos em que no se observa vantagem alguma no referido mtodo, ocorrendo desperdcio de instrues, o que pode vir a constituir uma desvantagem.

No exemplo utilizado, as instrues que efetivamente calculam a equao X = A+B no empregaram modo de endereamento por registrador e sim o modo direto convencional. 130

No eficaz usar o registrador apenas para realizar uma transferncia do tipo: MP R UAL Como podemos verificar, os dados representados pelas variveis A e B estaro, em cada uma das 100 execues, sempre na MP (so lidos do meio exterior para a MP) e tero que ser passados para a UAL as 100 vezes. Assim, se utilizssemos algum registrador para armazenar A ou B, o dispositivo serviria apenas para atrasar a execuo da instruo com mais um armazenamento, sem se obter qualquer vantagem. O uso do registrador somente vantajoso se proporcionar reduo de ciclos de memria, o que no era o caso. Uma outra possvel desvantagem do emprego do modo de endereamento por registrador consiste, em certos casos, na dificuldade em se definir quais dados sero armazenados nos registradores e quais permanecero na MP (por falta de registradores). Isso acontece devido ao reduzido nmero dos registradores existentes nas UCPs a grande quantidade de dados manipulados pelo programas. Modo Indexado Frequentemente, durante a execuo de programas, h necessidade de se manipular endereos de acesso a elementos de certos tipos especiais de dados. Esses endereos servem, na realidade, de ponteiros para os referidos elementos. Por exemplo, o acesso aos elementos de um vetor (array) deve considerar que tais elementos so armazenados sequencialmente na memria e que sua localizao pode ser referenciada por um ponteiro (endereo), que alterado para indicar o elemento desejado (o ndice do elemento identifica individualmente cada um). Portanto, importante que haja, no conjunto de instrues da mquina, algumas capazes de realizar essas manipulaes de endereos, permitindo uma localizao dos dados mais rpida e eficiente. A maioria dos processadores possui uma ou mais dessas instrues; sua descrio caracteriza um modo de endereamento denominado indexado. Essa denominao advm do fato de que a obteno do endereo de um dado (elemento de um array) relaciona-se com seu ndice. Neste tipo de instruo, o endereo do dado a soma do valor do campo operando (fixo para todos os elementos de um dado array) e de um valor armazenado em um dos registradores da UCP (normalmente denominado registrador de ndice). O valor armazenado nesse registrador varia para o acesso a cada elemento (aponta para o elemento desejado). Na verdade, esse modo de endereamento uma evoluo das tcnicas desenvolvidas desde os primrdios da computao para manipulao desses estruturas de dados especiais. Podemos exemplificar essa assertiva apresentando alguns possveis mtodos, evolutivamente usados na manipulao de array, at atingirmos a eficincia do modo indexado. Consideremos, por exemplo, a necessidade de, em certo programa, executar-se a seguinte operao sobre trs vetores (arrays) de 100 elementos cada:

Usando o Modo Direto sem Alterar os Bits que descrevem as Instrues

131

Nesse caso, haveria necessidade de se escrever instrues para cada uma das 100 operaes de soma a serem efetivamente realizadas pela mquina. Exemplificando com as instrues de um operando adotadas neste texto, teramos um programa semelhante ao mostrado na figura 8.9. Evidentemente, essa tcnica de programa ineficiente e trabalhosa, usando o computador apenas como calculadora, j que o programador ter toda a carga de trabalho.

Usando o Modo Direto com Alterao Dinmica do Contedo das Instrues O clculo da soma dos 100 elementos pode ser obtido por um programa com muito menor quantidade de instrues. Nesse caso, emprega-se o automatismo do computador para realizar a tarefa de executar 100 vezes as operaes. Para tanto, necessrio que se determine, em tempo de execuo, o endereo de cada um dos 100 elementos dos vetores. Como esses elementos esto armazenados sequencialmente na MP, basta existir uma instruo que incremente o valor do operando (endereo do dado). Tal instruo executa uma operao aritmtica (X=X+1) sobre um valor binrio (X), que , na realidade, um endereo. O programa, em Assembly, para resolver o algoritmo definido em Prog-1, seria semelhante ao mostrado na fig. 8.10.

132

Observe a fig. 8.11, na qual apresentada uma MP com 64K clulas (cada clula identificada por um endereo com 4 algarismos hexadecimais), todas com capacidade de armazenar valores com 20 bits (5 algarismos hexadecimais) e instrues (de um operando), do tamanho da clula e da palavra. Nessa memria foram armazenados os elementos do vetor A (a partir do endereo hexadecimal 1A00), do vetor B (a partir do endereo hexadecimal 1A64) e, a partir do endereo 1AC8, devero ser armazenados os elementos do vetores C (resultado da soma). O trecho do programa (fig. 8.10) comea a partir do endereo hexadecimal 103A (o contedo da clula tem armazenada a instruo cujo valor em hexadecimal 11A00). A primeira execuo da instruo INC, cdigo de operao igual a 8 (utilizando o modo de endereamento imediato), acarreta a alterao do valor do campo operando das instrues LDA, ADD e STA, respectivamente, para: 1A01 (endereo do segundo elemento do vetor A, identificado por A(2)), 1A65 (endereo de elemento B(2) do vetor B) e 1AC9 (endereo do elemento C(2) do vetor C). Na passagem seguinte do loop, os valores seriam novamente alterados (somando 1 ao valor atual) para, respectivamente: 1A02, 1A66, e 1ACA, endereos dos elementos A(3), B(3) e C(3), dos vetores A, B e C, e assim sucessivamente, at alcanar-se o endereos dos ltimos elementos: A(100), B(100) e C(100). O mtodo adequado e vantajoso, na medida em que so elaboradas apenas nove instrues ( claro que h outras maneiras de se fazer o mesmo programa), e o trabalho de execuo fica por conta da mquina, no do programador.

133

A desvantagem deste mtodo, porm, reside no fato de que o valor de uma instruo (o campo operando) alterado durante a execuo do programa. Caso houvesse alguma interrupo anormal no meio da execuo, seria preciso reinicializar os valores iniciais, bem como a reinicializao dos valores teria que ser realizada em toda nova execuo do programa, pois ele termina com os valores de endereo de A (100), B(100) e C(100). Usando o Modo Indireto Essa uma das aplicaes do modo indireto, pois o endereo de cada elemento do vetor estar armazenado na MP, em uma clula cujo endereo consta no campo operando da instruo. O processo de obteno do endereo de cada elemento, durante a execuo do programa, consiste na alterao (adicionando-se um valor que aponte para o novo elemento) do contedo da posio de memria endereada, no modo indireto, pelo campo operando da instruo. Assim, no h modificao das instrues em tempo de execuo (um dos problemas do mtodo anterior). A fig. 8.12 apresenta um exemplo desta tcnica. Os elementos de cada vetor esto armazenados nos mesmos endereos da figura anterior. As instrues LDA, ADD e STA empregam o modo indireto, enquanto INC usa o modo direto (para incrementar os endereos dos elementos dos vetores).

O programa basicamente semelhante ao do exemplo anterior (modo direto), exceto que a primeira execuo das instrues INC somaria 1 aos valores 1A00, 1A64 e 1AC8 (respectivamente, contedo das clulas de endereos 1503, 1504 e 1505). Isso permitira apontar para os elementos A(2), B(2) e C(2).

134

Outra diferena fundamental em relao ao mtodo anterior que, nesse caso, os valores de endereos dos elementos no fazem parte das instrues; esto armazenados na MP e, portanto, as instrues no so alteradas durante a execuo do programa. Essa uma tcnica mais limpa, e eficiente, em termos de programao, embora haja um gasto maior de tempo na execuo do programa, devido maior quantidade de acessos do modo indireto. Usando o Modo Indexado Nesse modo, o endereo de cada elemento do vetor obtido pela soma (a soma efetuada antes da colocao do valor do endereo de acesso no REM) do valor do campo operando da instruo com o valor armazenado em um dos registradores da UCP (escolhido como registrador ndice). O resultado da soma o endereo efetivo do dado, o qual ser, ento, transferido para o REM. A escolha de qual registrador ser utilizado como registrador-ndice depende da linguagem que se estiver empregando: caso a linguagem seja Assembly, responsabilidade do programador administrar o uso dos registradores da UCP; se, por outro lado, for empregada uma linguagem de alto nvel, a escolha do uso dos registradores fica por conta do programa compilador. Para utilizar esse modo, necessrio haver instrues que manipulem valores em registradores, tais como: Carregar um valor no registrador (armazenar o ndice); Somar um dado valor ao existente do registrador; Desviar para outra instruo, se o valor armazenado no registrador for igual a zero (permite sair de um looping de execuo), e assim por diante. A grande vantagem da tcnica reside na rapidez de execuo das instrues de acesso aos dados, visto que a alterao do endereo dos elementos realizada na prpria UCP. Muitos computadores modernos possuem instrues no modo indexado, cujo exemplo de emprego apresentado nas figs. 8.13 e 8.14 (ainda a mesma soma dos vetores A, B e C, dos mtodos anteriores Prog-1).

135

Em primeiro lugar, move-se (MVI) o valor inicial do ndice para o registrador escolhido como Rx (foi escolhido como exemplo o registrador R4) e, assim, teremos a instruo, em linguagem de mquina: Em seguida, inicia-se o trecho repetitivo do programa, executando o teste de verificao da sada do looping (quando se atingir a soma do centsimo elemento de cada um dos vetores, A e B). A soma propriamente dita obtida pela repetio de: LDA Rx, Op Comea carregando A(1) ADD Rx, Op Somar A e B STA Rx, Op Armazenar resultado em C Em primeiro lugar, o endereo A(1), (1A00), indicado na instruo pela soma do campo Op. (no caso presente seria, por exemplo, o valor hexadecimal 19FF) com o contedo de Rx (no caso presente, o contedo de R4, que dever ser 0001). O resultado dessa soma, 1A00, ser ento, transferido para o REM, iniciando o ciclo de leitura do elemento A(1) do vetor A. A obteno do valor do elemento B(1) do vetor B, cujo endereo em hexadecimal 1A64, tambm ser realizada pela soma do valor 0001 (armazenado em R4) com o valor 1A63 (valor constante do campo Op. sempre o mesmo em todas as instrues que manipulem elementos do vetor B), e assim tambm ser efetuado para o calculo do endereo dos elementos do vetor C. O programa prossegue com o incremento do valor armazenado em R4 (Rx), de modo a partir a soma do elemento A(2) com o elemento B(2). A instruo seria INC Rx. Nesse caso, o valor de R4 passaria de 0001 para 0002, o que, somado ao valor do campo Op apontaria para o segundo elemento de cada vetor. 136

Em seguida, retorna-se ao ponto inicial, para testar se o loop j foi executado 100 vezes. Caso negativo, a soma reiniciada: o valor 19FF ser somado ao valor 0002 (para o endereo de A(2)), bem como 1A63 e 1AC7 com 0002, respectivamente, para endereos de B(2) e C(2). E assim, sucessivamente, at o final. Modo Base Mais Deslocamento Esse modo de endereamento tem caractersticas semelhantes ao modo indexado, visto que o endereo de acesso a uma clula de memria se obtm pela soma de dois valores, um inserido no campo apropriado da instruo (normalmente denominado campo deslocamento displacement) e outro valor inserido em um determinado registrador, denominado registrador-base ou registrador de segmento. A diferena entre eles est na aplicao e no propsito do mtodo e, por conseguintes, na forma de implement-lo. Neste caso, o valor a se manter fixo o do registrador-base/segmento, variando o contedo do campo deslocamento em cada instruo, diferentemente do modo indexado, em que o contedo do registrador que se altera. Os processadores da famlia Intel x86 possuem alguns registradores projetados especificamente com a finalidade de servir como registrador de segmento, como os 6 registradores de 16 bits dos processadores Pentium. Este modo de endereamento acarreta uma reduo do tamanho das instrues (e, com isso, economiza memria), bem como facilita o processo de relocao dinmica de programas. A sua escolha decorre de dois fatores: a) Durante a execuo de uma grande quantidade de programas, as referncias a clulas de memria, onde se localizam os operandos, normalmente so sequenciais, ocorrendo poucos acessos a outras informaes fora de ordem (exceto desvios); e b) A maioria dos programas ocupa um pequeno espao da MP disponvel. Dessa forma, em vez de ser necessrio, em cada instruo, que o campo operando tenha um tamanho correspondente capacidade total de endereamento da MP, basta que o endereo desejado seja obtido pela soma de uma valor existente em um dos registradores da UCP com um valor contido na instruo. Por isso, o mtodo chamado base mais deslocamento, consistindo, ento, na utilizao de dois campos na instruo (que substituem o campo operando): um, com o endereo de um registrador (chamado base ou segmento), e outro, com um valor denominado deslocamento (porque contm um valor relativo 0 que se desloca em relao primeira instruo). Consideremos, por exemplo, o caso de processadores, nos quais as instrues possuem campo de endereo de registrador-base com 4 bits (estipulamos no exemplo que o processador possui 16 registradores e, portanto, ser necessrio se definir 16 endereos, um para cada registrador) e campo deslocamento, com 12 bits. E que o processador pode enderear at 16M clulas (cada endereo linear de memria dever ter 24 bits). Nesse caso, podem-se enderear reas de 4096 bytes (4K) com um valor armazenado no registrador-base, gastando-se apenas 16 bits (4+12), ao contrrio dos 24 bits necessrios para enderear diretamente todas as clulas da MP daquele computador (capacidade mxima da MP igual a 16 Mbytes). Economizam-se, assim, 8 bits em cada instruo.

137

A fig. 8.15 apresenta um exemplo desse modo de endereamento, suando quatro registradores-base e 12 bits para o campo deslocamento. Pode-se observar ento que, um dado instante, h quatro reas de endereamento, cada um correspondente ao valor armazenado em cada registrador-base. Da descrio dos modos indexado e base mais deslocamento, podemos observar que o processo de calculo do efetivo endereo de acesso idntico em ambos os modos. A diferena est no conceito de cada um, no na sua implementao.

A indexao empregada quando se deseja acessar diferentes dados, com alterao do endereo, por incremento (ou decremento) do valor do registrador-ndice. Quando a modificao de endereo realizada para relocao de programa, basta uma nica alterao do contedo do registrador-base (no modo base mais deslocamento). Sobre o que realmente acontece na mquina, podemos observar: rios dados so acessados com diversos valores de registrador-ndice e um nico valor no campo operando; rios dados so acessados com um nico valor de registrador-base e valores diferentes no campo deslocamento da instruo.

138

Execuo de Programas Um computador para realizar uma tarefa especfica, como, por exemplo, somar 10 nmeros em sequencia, precisa ser instrudo, passo a passo, para efetivamente realizar a tarefa. Necessita, pois, que seja projetado com a capacidade de realizar (interpretar e executar) um determinado conjunto de operaes, cada uma sendo constituda de uma instruo especfica (instruo de mquina). O conjunto de instrues ou comandos organizados em uma certa sequencia, para obter o resultado da soma dos 10 nmeros, compe o que denominamos programa de computador (vamos denominar apenas programa). J descrevemos o formato das instrues de mquina normalmente encontradas nas UCP e tambm o procedimento, passo a passo, para a execuo de uma instruo de mquina (ciclo de instruo). Atualmente, raro escreve-se um programa diretamente na linguagem da mquina em virtude da enorme dificuldade de se organizar as instrues sem erros (quanto maior o programa, maior a probabilidade de erros, enganos ou omisses) e dos problemas de entendimento e manuteno do programa tanto por parte de outro programadores como at mesmo por quem criou o referido programa. Linguagens de Programao Uma linguagem de programa uma linguagem criada para instruir um computador a realizar suas tarefas. Um programa completo, escrito em uma linguagem de programao, frequentemente denominado cdigo. Deste modo, codificar um algoritmo significa converter suas declaraes em um comando ou instruo especfico de uma certa linguagem de programao. O tipo mais primitivo de linguagem de programao a linguagem que o computador entende diretamente, isto , as instrues que podem ser diretamente executadas pelo hardware, isto , pela UCP. a linguagem de mquina, que foi utilizada pela primeira gerao de programadores. Conforme j descrevemos anteriormente, uma instruo de mquina um conjunto de bits, dividido em subconjuntos ou campos, com funes determinadas: um subconjunto (um campo da instruo) estabelece o cdigo de operao e o outro define a localizao do(s) dado(s). um programa em linguagem de mquina , em consequncia, uma longa sequencia de algarismos binrios, alguns dos quais representam instrues e outros, os dados a serem manipulados pelas instrues. A fig. 9.1 mostra um exemplo de programa em linguagem de mquina, na sua forma binria pura (fig. 9.1(a)), e uma representao mais compacta e um pouco mais simples, em linguagem hexadecimal (fig. 9.1(b)).

139

Para criar um programa em linguagem de mquina, o programador deve conhecer todas as instrues disponveis para aquela mquina e seus respectivos cdigos de operao e formatos, assim como os registradores da UCP disponveis e os endereos das clulas de memria onde sero armazenadas as instrues e os dados. Um programa real, em linguagem de mquina, pode conter milhares de instrues, o que uma tarefa extremamente tediosa e difcil, pelos detalhes que precisam ser observados pelo programador. , portanto, caro de realizar pelo custo da mo-de-obra envolvida. Para tentar minimizar esta ineficincia (dificuldade de entendimento do significado dos nmeros, todos semelhantes), foi desenvolvida, ainda para a primeira gerao de computadores, uma linguagem que representasse as instrues por smbolos e no por nmeros. Essa linguagem simblica foi denominada Linguagem de Montagem (Assembly Language). Cdigos de operao, como 0101, so mais fceis de serem lembrados se representados como ADD (somar) do que pelo nmero 0101. Alm disso, o programador, ao escrever um programa em linguagem de montagem (Assembly), no precisa mais guardar os endereos reais de memria onde dados e instrues estaro armazenados. Ela pode usar smbolos (caracteres alfabticos ou alfanumricos para indicar endereos ou dados), como MATRCULA, NOME, SALRIO, para indicar os dados que so usados em um programa. Uma instruo em linguagem de mquina do tipo: 1110 0100 1001 1001 ou E499 pode ser mais facilmente entendida se representada na forma simblica: ADD SALARIO A fig. 9.2 apresenta o programa exemplificado na fig. 9.1, porm, neste caso, escrito em linguagem de montagem (Assembly). Para se usar linguagem de montagem em um computador, necessrio que haja um meio de converter os smbolos alfabticos utilizados no programa em cdigo de mquina, de modo a poder ser compreendido pela UCP (pelo processador). O processo de converso (tambm denominado traduo) chamado de montagem e realizado por um programa denominado Montador (Assembler). O montador l cada instruo em linguagem de montagem e cria uma instruo em linguagem de mquina.

140

Embora escrever um programa em linguagem de montagem ainda seja uma tarefa rdua, tediosa e complexa (atualmente poucos programas so escritos nessa linguagem, em comparao com o que ocorria h alguns anos), ainda bem mais atraente do que escrever o mesmo programa entre essas duas linguagens. Um passo mais significativo no sentido de criar uma linguagem de comunicao com o computador, mais simples e com menos instrues do que a linguagem de montagem, foi o desenvolvimento de linguagens que refletissem mais os procedimentos utilizados na soluo de um problema, sem preocupao com o tipo de UCP ou de memria onde o programa ser executado. Tais linguagens, por serem estruturadas de acordo com a compreenso e a inteno do programador, so usualmente denominadas linguagens de alto nvel, nvel afastado da mquina.

141

Uma linguagem de alto nvel, ou orientada ao problema, permite que o programador especifique a realizao de aes do computador com muito menos instrues (chamaremos de comando as instrues referentes s linguagens de alto nvel). Desde o aparecimento de linguagens como Fortran e Algol, na dcada de 50, dezenas de outras linguagens de alto nvel foram desenvolvidas, seja para uso geral seja para resolver tipos mais especficos de problemas. A tabela 9.1 apresenta algumas das mais conhecidas linguagens de programao de alto nvel, indicando-se a poca de seu surgimento no mercado. A fig. 9.3 apresenta partes de um programa em Cobol (fig. 9.3(a)) e de um programa em C (fig. 9.3(b)). Conquanto a simples observao de cada cdigo possa induzir a impresso de uma grande diferena entre os dois cdigos, na realidade eles tm o mesmo propsito e produzem o mesmo resultado. Da mesma forma que os programas com instrues de mquina, os programas da fig. 9.3, ou qualquer outro programa em linguagem de alto nvel, tambm requerem uma converso para instrues de mquinas, processo denominado compilao (ver item 9.3.2). Normalmente, a converso de um simples comando em linguagem COBOL ou C, como os da Fig. 9.3, redunda em dezenas de instrues de mquina, diferentemente de um programa em linguagem de montagem, no qual cada instruo implica essencialmente uma nica instruo de mquina. Montagem e Compilao J vimos que o programa de computador no so escritos na linguagem que a mquina entende, mas sim em outras formas simblicas de representar as instrues que o programador deseja que sejam realizadas. No entanto, verificamos que as mquinas continuam entendendo somente em binrio e, por isso, sempre h necessidade de converso ou traduo de um programa em linguagem simblica para outro equivalente, em linguagem numrica binria. Montagem A traduo mais rpida e simples que existe denomina-se montagem e realizada por um programa denominado montador (Assembler). Como o nome j explica, a montagem realizada para traduzir um programa em linguagem de montagem para seu equivalente em linguagem binria, executvel. A fig. 9.4 mostra o fluxo bsico de uma montagem. Nele, o programa escrito em linguagem de montagem, chamado de cdigo-fonte, examinado instruo por instruo e, em seguida, convertido para um outro programa em linguagem binria de mquina, denominado cdigo-objeto. A fig. 9.5 mostra um exemplo de um programa em linguagem de montagem e o seu respectivo cdigo em linguagem de mquina.

142

Basicamente, as funes de um montador so: Substituir cdigos de operao simblicos por valores numricos, isto , substituir LOAD, STR, ADD, MOV, etc. por 00101101, 100010, 00001110 e 11111100 (os valores binrios mostrados para os cdigos de operao so meros exemplos, sem preocupao com qualquer processador real). Substituir nomes simblicos de endereos por valores numricos dos endereos, isto , substituir o SOMA de ADD SOMA por 1011100011010 (tambm se trata de um valor meramente para exemplo). Reservar espao de memria para o armazenamento das instrues e dados. Converter valores de constantes para cdigo binrio, como, por exemplo, MOV AL, 2214, que converte o valor 2216 para o valor 001000102. Examinar a correo de cada instruo (LDA pode ser uma palavra-chave correta, mas LDB no, acarretando um erro. O montador no pode gerar um cdigo de operao de uma instruo que no existe). Em linhas gerais, estas funes podem ser resumidas no exemplo descries no exemplo descrito a seguir. Consideremos o funcionamento de um montador de mdulos ou de dois passos e a existncia de um determinado sistema de computao que possua no seu conjunto de instrues algumas instrues de um operando relacionadas na fig. 9.6 e que so bastante semelhantes s instrues definidas e exemplificadas anteriormente. Na fig. 9.6(a) apresentado o subconjunto de instrues utilizadas para nosso exemplo, enquanto a fig. 9.6(b) relaciona um programa na linguagem de montagem definida.

143

144

Da verificao do programa observa-se que h dois tipos bsicos de smbolos: de cdigo de operao (LDA, STR, JZ, etc.) e de endereos de dados ou de instrues (INCIO, FIM, CONTADOR, PARCELA 1, etc.). Em um montador de dois passos, o programa examinado, instruo por instruo, duas vezes. Na primeira vez (primeiro passo), o montador verifica a correo da instruo, ou seja, se ela est corretamente escrita (se ela LDA e no LDB) e se possui os campos definidos na estrutura da linguagem de montagem. Se encontrar incorreo, o montador registra, de modo a poder relacionar os erros no final da verificao, interrompendo o processo (se o montador encontra erros durante esta fase, ele no prossegue). Se o cdigo-fonte da instruo estiver correto, ele inicia a descrio de uma tabela, denominada tabela de smbolos, em que cada entrada corresponde a um smbolo. Em geral, temos uma tabela de smbolos de cdigos de operao e uma tabela de smbolos de endereos. A partir da pseudo-instruo ORG (ORG no uma instruo de mquina, mas um smbolo de referncia de incio do programa, utilizado por muitos montadores como ponto de partida de contagem de endereos), o montador vai criando as entradas da tabela de cdigo de operao, uma para LDA, outra para JZ, outra para ADD, STR, DCR, JMP e HLT. A cada entrada o montador atribui o valor binrio do cdigo de operao alm de outros dados pertinentes, como o tamanho da instruo, seus operandos, etc., bem como a posio relativa instruo inicial do programa. O montador tambm cria as entradas na tabela de smbolos de endereos, atribuindo uma entrada a cada smbolo, como CONTADOR, PARCELA 1, etc. Mas o montador no pode concluir a entrada, pois nesse ponto ele no sabe o endereo de memria onde o dado representado simbolicamente por PARCELA 1, por exemplo, ser armazenado, nem poder concluir qualquer outra. Se est examinado a instruo JZ FIM, ele somente sabe o endereo relativo de JZ ( a 2 instruo, depois de ORG), mas no sabe que posio relativo a corresponde a FIM, o que somente poder ser definido no segundo passo. No segundo passo, ento, o montador realiza a criao do cdigo-objeto, completando as entradas das tabelas. Para tanto, ele passa novamente por cada instruo e a localizar na tabela correspondente. Esta tarefa requer procedimentos otimizados de busca nas tabelas para que o processo de montagem seja rpido. Neste ponto, ento, como ele sabe agora qual a posio relativa de FIM, a entrada de JZ FIM pode ser completada e todas as demais entradas das tabelas tambm. Finalmente, todo o cdigo de mquina fica completo. A implementao de uma linguagem de montagem pode ser realizada em um sistema de computao optando-se por um dos dois tipos de montadores: Montador do tipo carrega e monta ou de 1 passo; e Montador do tipo de mdulos onde 2 passos. O segundo tipo, descrito no exemplo anterior, o mtodo de montagem mais empregado atualmente, visto que, apesar de consumir um certo tempo devido ao fato de que o montador precisa examinar duas vezes todo o programa, ele produz um cdigo de mquina direto no final da montagem, sendo portanto conceitualmente mais simples. Por essa razo, ele permite que possam ser criados vrios programas independentes, sendo todos finalmente interligados (ligao ou linkedicao) para constituir um nico programa executvel.

145

J o montador de um passo (carrega e monta) no tem a mesma clareza de execuo do tipo anterior, embora conceitualmente pretenda ser mais rpido. O objetivo deste montador completar a tarefa em um nico passo. Para tanto, durante a avaliao de cada instruo ele vai criando entrada em uma outra tabela, para endereos ainda desconhecidos, como o de FIM no programa da fig. 9.6(b). No final da montagem, quando estes endereos j so conhecidos, o montador vai completando esta tabela de endereos desconhecidos com os dados da tabela de smbolos. uma tarefa adicional montagem, mas no se trata de voltar ao incio do programa. Consiste apenas completar dados de uma tabela cujo valor j est conhecido. O montador de um passo apresenta os seguintes problemas: a) No conclui a tarefa com um cdigo direto e sequencialmente gerado. preciso que haja um rearranjo dos endereos para se inserir os que estavam desconhecidos; b) Se a tabela de endereos desconhecidos foi grande (muitas referncias a endereos ainda inexistentes), a busca s suas diversas entradas ser demorada, talvez no demorada quanto se tivesse realizado um segundo passo, com melhores resultados finais. Compilao Quando se pretende converter para linguagem de mquina um programa escrito em linguagem de alto nvel que o da linguagem de montagem, ento o mtodo utilizado se chama Compilao. Compilao , pois, o processo de anlise de um programa escrito em linguagem de alto nvel, o programa-fonte (ou cdigo-fonte) e sua converso (ou traduo, como alguns preferem) em um programa equivalente, porm descrito em linguagem binria de mquina, denominado programa-objeto (ou cdigo-objeto). O programa que realiza esta tarefa denominado compilador, e o fluxograma bsico do processo de compilao est mostrado na fig. 9.7. A compilao um processo semelhante ao de montagem (na analise de programa-fonte, criao de tabelas auxiliares e gerao de cdigo-objeto final em linguagem de mquina), porm mais complexo e demorado. Na montagem, h uma relao de 1:1 entre as instrues de linguagem de montagem e as instrues de mquina, enquanto na compilao isso no acontece, pois um nico comando em Pascal, por exemplo, pode gerar vrias instrues de mquina. Durante a compilao, o cdigo-fonte analisado, comando por comando; o programa compilador realiza vrias tarefas, dependendo do tipo de comando que ele esteja analisando. Se, por exemplo, ele estiver analisando um comando que esteja declarando uma varivel, ele criar a respectiva entrada em sua tabela de smbolos. Inicialmente, o compilador realizar uma anlise do cdigo-fonte (normalmente esta tarefa realizada por um mdulo de compilador denominado front-end), dividido em trs partes funcionalmente distintas: Anlise lxica; Anlise sinttica; Anlise semntica.

146

Aps esta tripla anlise, gerado um cdigo intermedirio e so construdas vrias tabelas, como a tabela de smbolos, que auxiliar a realizao da segunda fase, que a fase de efetiva criao do cdigo binrio de mquina, o cdigo-objeto. Nesta segunda fase, o mdulo responsvel do compilador (usualmente conhecido como back-end) aloca memria para as variveis e realiza a atribuio dos registradores a serem utilizados, alm da gerao do cdigo-objeto final. A funo da anlise lxica do compilador consiste em decompor o programa-fonte em seus elementos individuais distintos (comandos, operadores, variveis, etc.), os quais so verificados de acordo com as regras da linguagem (p.ex., em Pascal o sinal de igualdade composto por dois smbolos, :=, e no apenas pelo smbolo =), gerando mensagem de erro se for encontrada alguma incorreo. Cada operador ou palavra-chave (comando) identificado com um nmero pelo analisador lxico. A funo do analisador sinttico de um compilador consiste basicamente na criao das estruturas de cada comando, na verificao da correo dessas estruturas e na alimentao da tabela de smbolos com as informaes geradas. Ele realizada esta tarefa a partir de cada elemento obtido na anlise lxica, montando a estrutura apropriada (em geral, uma rvore) de acordo com as regras gramaticas da linguagem. A fig. 9.8 mostra uma rvore de anlise de anlise (parse tree) para o

147

comando

X:=(a+b)*c+d;

Na figura so apresentadas as regras gramaticais da linguagem, referentes aos elementos do comando exemplificado, bem como a arvore da anlise resultante. Na realidade, a rvore mostrada apenas uma parte da arvore completa, que representa o programa-fonte por inteiro. Alm de permitir, com esta estrutura, a futura criao de cdigo de mquina, o analisador verifica a correo do comando em termos de sua conformidade com a regra gramatical especificada na definio da linguagem, gerando uma mensagem de erro quando identifica uma incorreo. A tabela de smbolos gerada durante o processo contm entradas para cada identificador e a cada literal usado no programa-fonte, com as informaes de seus atributos. Por exemplo, os identificadores de dados (nome da varivel usada) tero como atributo seu tipo, isto , se inteiro, se fracionrio, etc., de modo que a operao aritmtica a ser realizada com ele siga o algoritmo apropriado. A anlise semntica realizada pelo compilador verifica as regras semnticas estticas da linguagem, produzindo, da mesma forma que os demais analisadores, mensagem de erro para as incorrees ou inconsistncias semnticas.

148

Usa-se o termo regra semntica esttica porque se refere a regras que podem ser verificadas durante o processo de compilao, diferenciando-se de regras de semntica que s podem ser verificadas durante a execuo do cdigo de mquina. Regras semnticas estticas so, por exemplo, a necessidade de integridade de um tipo de dado em uma expresso, isto , o tipo de dado mostrado na expresso tem que ser coerente com o que foi declarado. Uma declarao de GOTO no poder transferir controle para fora do mdulo ou subprograma um outra exemplo de regra semntica esttica, como tambm usar o comando CASE, que deve conter todos os seus elementos. Como j mencionado, o mdulo de frente de um compilador (front-end) cria a tabela de smbolos durante a tripla anlise do programa-fonte (lxica, sinttica, e semntica), inserindo nela as informaes necessrias para o trabalho do mdulo back-end, de alocao de memria, etc. Por exemplo, considerando uma parte da data division de um programa COBOL, como a seguir ilustrado:

Observamos que se trata da declarao de trs variveis do tipo inteiro, ocupando, cada uma, 6 algarismos decimais. Ao encontr-las em sua anlise, o compilador cria trs entradas na tabela de smbolos, conforme mostrado na fig. 9.9, cada uma contendo o nome da varivel, sue tipo, tamanho e endereo de memria. O tamanho, em bytes, obtido conforme o tipo de dado e sua declarao. O endereo de memria calculado em funo do espao ocupado pelo dado (no exemplo, seria 4 bytes ou 4 clulas de memria, por isso cada endereo defasado do anterior de 4 unidades). O mdulo back-end de um compilador completa o processo, alocando espao de memria, definindo que registradores sero utilizados e que dados sero armazenados neles, e gerando o cdigo-objeto final, em linguagem binaria de mquinas.

O gerador de cdigo a parte do mdulo que converte a representao intermediria, gerada pelo mdulo front-end, em cdigo-objeto. O cdigo-objeto pode ser absoluto, isto , os endereos constantes do cdigo so endereos reais de memria, ou pode ser relocvel, isto , os endereos so relativos ao incio do programa, transformando-se em endereos reais apenas na ocasio da execuo. Cdigos relocveis so mais versteis e, por isso, mais utilizados. Eles podem ser compilados separadamente e, posteriormente, ou logo em seguida, ligados (linkeditados) para formar um mdulo nico que ser executado. Como, em geral, o conjunto de instrues das UCP modernas possui uma grande quantidade de instrues, algumas bem semelhantes (h, por exemplo, mais de 10 instrues de soma nos processadores da famlia Intel x86 e 27 nos processadores VAX-11), o gerador de cdigo pode produzir diferentes sequencia de cdigo de mquina para um mesmo calculo. Na prtica, os compiladores ignoram muitas das instrues existentes, sendo este pouco uso uma das desvantagens 149

alegadas para mquinas deste tipo (CISC) em relao aos processadores com arquiteturas de poucas instrues (RISC). Ligao ou Linkedicao Quando um programador escreve um programa (qualquer que seja a linguagem utilizada), ele no se preocupa em codificar determinadas operaes, porque o cdigo binrio necessrio para realizar aquelas tarefas j existe armazenado no sistema. preciso apenas que o cdigo em questo seja localizado e buscado onde estiver e incorporado ao programa. o caso, por exemplo, de comandos de entrada e sada. Qualquer que seja o programa a ser desenvolvido, se nele foi necessrio realizar uma impresso de informaes, as aes a executar sero sempre as mesmas, pois o hardware o mesmo (a impressora), qualquer que seja o programa. claro que alguns elementos so diferentes em cada programa (p.ex., no caso de impresso, cada programa imprimir uma quantidade de bytes diferentes, podendo ser arquivos diferentes, armazenados em locais diferentes da memria, etc. Portanto, essas informaes tm que ser passadas ao cdigo comum de controle de impresso). Podem ser citados outros exemplos referentes a determinadas rotinas que no fazem parte do programa de aplicao, mas devem ser incorporadas a ele para efetiva execuo. Um desses exemplos pode ser o de certas rotinas matemticas especiais, como o clculo de um seno ou outra operao trigonomtrica qualquer. As rotinas externas ao programa (assim chamadas porque no fazem parte dele) so normalmente organizadas em arquivos (cada rotina consta de um arquivo de cdigo binrio), que constituem diretrios especficos para cada grupo de rotinas (diretrio como rotinas matemticas, diretrio como rotinas de E/S, e outros). Esses diretrios so usualmente denominados bibliotecas (libraries). Uma biblioteca uma coleo de cdigos-objeto, um para cada rotina especfica, e indexada pelo nome da rotina. Quando o programa de aplicao deseja usar uma dessas rotinas, ele insere uma chamada de biblioteca no seu cdigo (library call). Do que foi descrito pode-se concluir que um cdigo-objeto gerado por um compilador no imediatamente executvel, visto que ainda h cdigo binrio a ser includo no programa, como uma chamada de rotina de impresso, ou uma chamada de rotina para calculo de seno, etc. Quando o compilador, ao gerar o cdigo-objeto, encontra um comando da linguagem de alto nvel que exige o uso de uma rotina de biblioteca, ele insere uma chamada para a rotina em cdigo-objeto. Esta chamada (CALL) inclui o nome da rotina, bem como o endereo de qualquer dado que deve ser passado entre o programa e a rotina. Por exemplo, considere o seguinte comando Pascal: X:=A*B Suponha que A, B e X sejam menos representados em ponto flutuante e que o compilador somente suporte aritmtica de ponto flutuante via rotina externa, armazenada em uma biblioteca do compilador. E que, por esta razo, o compilador ir inserir no cdigo-objeto a seguinte chamada: CALL MPY_FP (1AB5, 1AB9, 1ABF) Este nome, MPY_FP, no uma instruo de maquina, mas sim um ndice para a biblioteca, onde se encontra um programa, j compilado, que realiza a operao aritmtica de multiplicao segundo o algoritmo de ponto flutuante. Os nmeros entre parnteses so os endereos de memria dos dados A e B e do resultado X. Para que o programa seja executado, necessrio que a rotina MPY_FP seja incorporada ao cdigo-objeto do programa de aplicao, isto , que haja uma conexo logica entre o cdigo-objeto 150

principal e o cdigo-objeto da rotina. Este processo de interpretao da chamada (CALL) e a respectiva conexo com a rotina chamada denomina-se ligao ou linkedicao e realizado por um programa ligado ou link editor. A fig. 9.10 mostra o fluxograma bsico do processo de execuo de um programa que inclui as duas etapas j descritas: a compilao e a ligao. Como resultado do processo de ligao, obtm-se um conjunto de cdigos de mquina, interligados e prontos para execuo. Chama-se este conjunto de cdigos de mdulo de carga ou cdigo executvel (p.ex., os arquivos gerados no sistema operacional DOS que possuem a terminao EXE e COM so cdigos executveis, enquanto os de terminao OBJ so cdigos-objeto).

Na terminologia comumente adotada para o assunto de ligao, a chamada CALL MPY_FP denominada referncia externa no-resolvida. Como se trata de uma chamada para uma rotina que no pertence ao cdigo-objeto que est sendo gerado pelo compilador, sua localizao desconhecida para ele, por isso diz-se no-resolvida, e externa porque no pertence ao cdigoobjeto referido. O funcionamento do programa ligado consiste em examinar todo o cdigo-objeto, gerado aps a compilao, e procurar as referncias externas no-resolvidas. Para cada uma, procurar sua localizao nas bibliotecas indicadas nos comandos de execuo do programa (estes comandos so diretivas para o sistema operacional realizar seu servio, como, por exemplo, chamar o compilador e iniciar esta etapa, chamar o ligado, etc.). Quando o ligado encontra a rotina chamada em uma das bibliotecas, ele substitui a linha chamada pelo cdigo-objeto da rotina. Isto se chama resolver a referncia externa. Uma das possveis mensagens de erro que podem surgir aps a concluso do processo de ligao a de no se ter encontrado alguma rotina. Nesse caso, o cdigo-objeto continua sem poder ser executado, pois ainda haver uma (ou mais de uma) referncia externa no-resolvida. Na prtica, tanto o processo de compilao quanto o de ligao so fases distintas e independentes do procedimento global de execuo de um programa, embora possam ser realizadas em sequencia e imediatamente uma aps a outra, como se fossem uma nica atividade. Por serem independentes, tambm geram produtos distintos: o cdigo-objeto (ao final da compilao) e o

151

cdigo executvel (aps a ligao), os quais so arquivos de cdigos binrios que podem ser armazenados em memria secundria para uso imediato ou posterior. Em outras palavras, a execuo de um programa se inicia pelo armazenamento, na MP, do cdigo-fonte e do programa compilador e este, aps a realizao de sua tarefa, gera o cdigo-fonte, cirando um arquivo com o nome de programa-objeto (o sistema operacional DOS de microcomputadores costuma usar a terminao OBJ para completar os nomes dos arquivos que contm cdigo-objeto). Este arquivo pode ser armazenado na memria secundria para ser ligado mais tarde ou ser imediatamente carregado na memria principal, juntamente com o programa ligado, e se iniciar a etapa de ligao. A deciso do que fazer depende das diretivas definidas pelo programador quando executa o programa. Da mesma forma que a compilao, aps a fase de ligao, est formado o cdigo executvel ou mdulo de carga. Este cdigo tambm armazenado em um arquivo, que pode ser imediatamente carregado na memria para ser executado efetivamente pela UCP ou pode ser armazenado na memria secundria para uso posterior. Por exemplo, uma empresa desenvolve um sistema que vai calcular a sua folha de pagamento mensal (na realidade, um conjunto de programas). O processo de desenvolvimento inclui a definio dos algoritmos e a codificao dos programas em linguagem de alto nvel. Aps a codificao, cada programa compilado algumas vezes, pois, em geral, so descobertos erros de codificao. To logo todos os programas estejam com seus cdigos-objeto corretos (no se encontram mais erros os famosos bugs), o sistema integrado pelo processo de ligao, que produz o cdigo executvel final (tambm obtido aps correo de eventuais erros). O cdigo executvel , entoa, executado algumas vezes com uma massa de dados de teste para verificao da correo da lgica do sistema, corrigindo-se eventuais erros surgidos nessa ocasio, e, finalmente, ele armazenado na memria secundria, sendo recuperado para execuo sempre que a folha de pagamento da empresa tiver que ser recalculada. Dessa forma, no se perde mais tempo com compilao e ligao. H tambm um tipo de ligado que no cria cdigo executvel, sendo, portanto, um pouco mais rpido. Chama-se carregador, ou loader. O programa carregador realiza em sequencia imediata as duas tarefas: ligao e execuo do cdigo de mquina, sem gerao de cdigo executvel permanente. Ele apenas cria o executvel, sem armazen-lo, e imediatamente inicia a execuo. Interpretao O processo de execuo de um programa atravs das trs fases distintas, descritas nos itens anteriores, apresentado no fluxograma da fig. 9.11. No entanto, este no o nico mtodo de execuo de um programa. H um outro processo, denominado interpretao, que, embora com o mesmo resultado final, apresenta o modo de realizao da interpretao bastante diverso do mtodo compilao/ligao/execuo. Com o mtodo compilao/ligao/execuo, para que um programa possa ser efetivamente executado necessrio que todos os comandos do cdigo-fonte desse programa sejam previamente convertidos para cdigo-objeto e este tenha tido todas as referncias externas resolvidas (etapa de ligao). A compilao no compreende execuao; ela apenas uma fase de traduo, de converso. Alm disso, o mtodo gera produtos bem distintos, como o cdigo-objeto e, mais tarde, o cdigo executvel. Em contrapartida, o mtodo de interpretao se caracteriza por realizar as trs fases (compilao, ligao e execuo), comando a comando, do programa-fonte. No h, pois, um 152

processo explcito de compilao e ligao. Na realidade, um programa-fonte diretamente executado (interpretado) por um outro programa (o interpretador) e produz o resultado. No h produtos intermedirios, como o cdigo-objeto ou cdigo executvel, como acontece no mtodo anterior. Em resumo, pelo mtodo de interpretao, cada comando do cdigo-fonte lido pelo interpretador, convertido em cdigo executvel e imediatamente executado, antes que o comando seguinte seja lido.

H linguagens de programao cujas caractersticas estruturais so tpicas de mtodos de compilao, possuindo, portanto, apenas compiladores. So exemplos deste tipo: Cobol, Fortran, C e Pascal. H outras que possuem apenas interpretadores, como o Apl. A linguagem Basic foi durante algum tempo utilizada apenas com interpretadores, mas j algum tempo foram desenvolvidos compiladores para o Basic, de modo que o usurio atualmente pode optar por um ou outro tipo. A linguagem Java interpretativa. Compilao X Interpretao Ambos os mtodos possuem vantagens e desvantagens, oriundas do modo prprio de funcionamento de cada um. A principal vantagem da interpretao sobre a compilao sua capacidade de identificar e indicar um erro no programa-fonte, seja na etapa de converso da fonte para executvel (esttica), seja na execuo do cdigo binrio (dinmica), isto , erro na logica do algoritmo ou na inconsistncia entre o valor do dado e o tipo de dado definido, por exemplo. Uma razovel desvantagem da interpretao o consumo de memria. Em compensao, o programa interpretador deve permanecer na memria durante toda a execuo do programa, porque cada comando necessita do interpretador. E este so programas grandes, que ocupam uma rea considervel de memria. Uma outra desvantagem da interpretao sobre a compilao consiste na possibilidade de certas partes do cdigo de um programa-fonte (um loop, por exemplo) terem que ser interpretadas tantas vezes quantas definidas no loop, enquanto, no mtodo de compilao, isto sempre acontece uma nica vez. 153

Por exemplo consideremos o trecho de programa a seguir, que contm um loop:

Nos mtodos de compilao, os trs comandos dentro do loop (juntamente com os demais comandos) sero convertidos uma nica vez para cdigo executvel (objeto e depois executvel) e, embora sejam realizadas 1000 leituras de A e B, 1000 somas e 1000 impresses, s ocorre uma traduo de cdigo. Pelo mtodo da interpretao, haveria 1000 converses de fonte para executvel, 999 a mais do na tcnica anterior, o que consumiria mais UCP, aumentando o tempo total de execuo do programa em relao mesma execuo pelo mtodo de compilao. Apesar de j existirem interpretadores mais eficientes, que no realizam todas as 999 interpretaes, ainda assim, nesse particular, no so to eficazes quanto os compiladores. O mesmo problema ocorre com programas que so executados frequentemente. Vejamos, por exemplo, o sistema de folha de pagamento a que nos referimos anteriormente. No caso de se usar o mtodo de compilao, haver uma nica traduo (compilao e ligao) e periodicamente s ser executado o mdulo de carga (cdigo executvel). Com a tcnica de interpretao, o programa seria convertido toda vez que precisasse ser executado, o que gastaria sempre mais tempo. A tab. 9.2 mostra um quadro comparativo que resume as consideraes relativas ao consumo de recursos de computao com os processos de compilao e interpretao feitas anteriormente.

Os interpretadores so, no entanto, bastante vantajosos quando se trata de desenvolvimento de programas e correo de erros nesta fase. A fig. 9.12 mostra os fluxogramas de etapas utilizadas durante o desenvolvimento e depurao de erros em programas-fonte para ambos os mtodos: compilao e interpretao. Quando se utiliza o mtodo de compilao, a identificao de erros no programa se torna mais problemtica medida que o cdigo executvel entra em fase de execuo. Ou seja, parece difcil identificar exatamente a origem do erro, pois no h uma relao entre o comando do cdigofonte e as instrues de mquina do cdigo-executvel. No fonte, temos, por exemplo, nomes simblicos de variveis, enquanto no executvel h endereos de memria (onde as variveis esto armazenadas) e um nome de comando (Do while, p.ex.) que substitudo por um ou mais cdigos de operao numricos. Erros de execuo so, s vezes, bem difceis de identificar devido 154

justamente falta de uma relao mais bem definida entre fonte e executvel. Se, por exemplo, ocorrer um erro do tipo diviso por zero, a mensagem de erro conter como informao o endereo de memria da instruo que resultou no erro. O programador ter de identificar que o comando do cdigo-fonte gerou o referido erro.

Por outro lado, quando se emprega o mtodo de interpretao, mais simples a relao entre o cdigo-fonte e o executvel, porque cada comando-fonte imediatamente traduzido e executado. Assim, se ocorrer um erro, o responsvel deve ser o comando que est sendo executado e, portanto, j est identificado. O interpretador pode informar o erro, indicando diretamente o comando, ou varivel, causador da ocorrncia, pelo seu nome simblico e no por um endereo numrico de memria. Execuo de programas em cdigo de mquina Vamos observar, por meio de um exemplo, as diferenas relativas ao desenvolvimento de programas em linguagem de alto nvel e em linguagem Assembly ou de mquina. Essas diferenas podem ser verificadas no que se refere ao tamanho dos programas em cada linguagem e ao diferente grau de dificuldade que o leitor poder encontrar na simples observao de cada programa. Para tanto, foi criado um algoritmo bem simples, que trata apenas da soma de dois valores (uma operao aritmtica), realiza uma operao de desvio condicional e se utiliza de um funo, conforme mostrado na fig. 9.13(a). Em seguida, o referido algoritmo foi codificado em 2 linguagens de alto nvel, em Pascal, mostrado na fig. 9.13(b), e em C, mostrado na fig. 9.13(c). 155

O referido algoritmo tambm foi codificado na linguagem de montagem do Intel 8088/486, utilizando-se o montador do DOS 5.0. Finalmente, os trs programas foram compilados e montados (os dois primeiro compilados e o ltimo montado), e seus resultados em linguagem de montagem gerada pelos computadores e montador constam das fig. 9.13(a)(b), 9.13(a)(c) e 9.13(a)(d), respectivamente. Para completar o assunto, vamos apresentar a execuo propriamente dita de um programa, com a inteno de mostrar a sistemtica e metdica sequencia de execuo de ciclos de instruo, que caracteriza a ligao UCP/MP.

Por fim, vamos descrever a efetiva execuo, pela UCP, de um pequeno programa. Para simplificar o processo, vamos utilizar o processador cujas caractersticas foram apresentadas na fig. 6.19 e acompanhar, passo a passo, a realizao dos sucessivos ciclos de instruo concernentes completa execuo do programa. Consideremos a expresso matemtica: X = Y+Z-T que imprime o valor de X, se esta no for igual a zero.

156

Poderia ser criado um programa em uma linguagem de alto nvel do tipo Fortran ou C que resolvesse a referida expresso e produzisse a impresso de X sempre que a condio estabelecida fosse verdade. O programa completo poderia ser semelhante ao mostrado na fig. 9.14

157

Para que seja possvel a execuo desse programa, h a necessidade de se utilizar uma instruo de desvio condicional, j que aparece uma condio a ser satisfeita. Ou seja, somente ser impresso o valor de X se esta valor for diferente de zero (a condio especificada : se X0); caso contrrio (ELSE), esse programa termina SEM imprimir o valor de X. Em primeiro lugar, vamos repetir a definio de instruo de desvio, e caracterizar a diferena entre desvio incondicional e desvio condicional, de modo que possamos melhor entender as instrues de desvio mostradas naquela figura. Desvio uma alterao forada da sequencia de execuo de um programa. Em outras palavras, sendo o hardware da UC projetado para, aps a busca de uma instruo, incrementar o contedo do CI e apontar para a instruo imediatamente seguinte, o desvio a possibilidade de alterarmos o contedo do CI, de modo a armazenar-se nesse registador um outro valor de endereo (que no o da prxima instruo na sequencia). Em outras palavras, consiste em se poder alterar a sequencia de realizao de ciclos de instruo. Com desvio incondicional, no h condio a ser satisfeita e o desvio sempre executado; o programa tem alterada a sua ordem normal de execuo, desviando-se para uma instruo fora da sequencia, independentemente de qualquer outra circunstncia. O resultado da execuo de uma instruo de desvio incondicional que, no final da sua execuo, o CI conter o valor existente no campo operando da instruo (endereo de desvio). Com desvio condicional, o valor existente no campo do operando da instruo somente ser transferido para o CI (execuo do desvio) se uma dada condio for satisfeita, como, por exemplo, se ACC = 0, se ACC >0 ou se ACC 0. Caso contrrio, a sequencia de execuo permanece inalterada (sem desvio, a UC comanda a busca da prxima instruo imediatamente seguinte).

158

A fig. 6.19 mostra exemplos de desvio incondicional (JMP Op.) e de desvio condicional (JP Op., JN Op. e JZ Op.). Os processadores Intel 80486 e Pentium possuem vrias instrues de desvio, como: JA, JB, JG, JE, JZ, JNE, JS, JCXZ, JNL Os processadores VAX-11 possuem cerca de 29 instrues de desvio (denominadas genericamente Branch e no Jump, como nos processadores Intel). Vamos tambm utilizar no programa uma instruo de E/S, definida na fig. 6.19. Trata-se da instruo PRT, que significa imprimir o valor armazenado do ACC. A fig. 9.15 mostra o programa em linguagem de montagem (Assembly) para resolver a equao dada (equivalente ao programa da fig. 9.14). Para detalhar a execuo desse programa diretamente pelo computador, isto , acompanhando cada ciclo de instruo, com os fluxos de controle, endereo e dados entre a UCP e a MP, precisamos primeiro converter o programa Assembly em outro, correspondente, porm totalmente em linguagem binria de mquina (na realidade, utilizaremos os valores em hexadecimal e no em binrio, para simplificar os nmeros e facilitar um pouco o entendimento). Para converte o referido programa Assembly em linguagem de mquina e podermos realizar os ciclos de instruo passo a passo (execuo do programa), vamos considerar que: a) O processador/MP utilizado possui as mesmas caractersticas definidas na fig. 6.19, inclusive as mesmas instrues (mesmos cdigos de operao).

159

b) As variveis usadas no programa so:

c) O programa est armazenado na MP a partir do endereo 18h, e no instante inicial vamos considerar que: I) CI = 18h (a letra h colocada ao lado do nmero indica que o valor est em hexadecimal) e II) Que os valores armazenados no RI e ACC so da instruo anterior, no importante para o incio de nosso programa O trecho da MP onde o programa e os dados esto armazenados apresentado na tabela da fig. 9.16 com todos os valores indicados em hexadecimal, correspondentes ao valor real armazenado em binrio na memria. Ao iniciar a execuo do primeiro ciclo de instruo (a partir do endereo armazenado no CI = 18h), os valores iniciais, armazenados no RI e ACC, devero ser destrudos pela execuo desse programa (provavelmente so resultados do programa anterior).

160

A fig. 9.17 mostra a execuo do programa por meio de um quadro com os valores do CI, do RI e do ACC ao final da execuo de cada uma das instrues. A primeira linha do quadro mostra a 1 instruo. A execuo do programa iniciada pela busca de sua primeira instruo, armazenada no endereo 18h (indicado pelo valor do CI). Essa instruo 11F, composta do C.Op. (valor igual a 1h) e operando (valor igual a 1Fh, conforme o formato da instruo descrito na fig. 6.19). O cdigo de operao 1 significa: armazenar no ACC o contedo da clula de endereo 1F (campo Op. da instruo) (LDA IF). Nessa posio (1Fh) est armazenado o valor 051h (endereo simblico Y). Ao concluir a execuo desse ciclo, o CI j estar apontando para a prxima instruo (endereo 19h).

Prossegue a execuo do programa, com a UC comandando a busca da segunda instruo, armazenada no endereo 19h; o valor hexadecimal 320. O cdigo de operao 3h corresponde instruo ADD Op. O endereo 20h est simbolizado pela varivel Z no programa da fig. 9.15. Na realidade, est sendo realizada a soma de Y (j no ACC) com Z, e o resultado ser mantido no ACC. 161

A instruo seguinte, armazenada no endereo 1Ah, 421h. O cdigo de operao 4h (instruo SUB Op.) significa: subtrair, do contedo do ACC, o contedo da clula de endereo 21h (simbolicamente representado por T), armazenando o resultado no ACC. No final do ciclo dessa instruo, o CI aponta para o endereo 1Bh, e o ACC contm o resultado de Y+Z-T, que igual ao valor em hexadecimal 08C. Prossegue a execuo do programa com o ciclo da instruo armazenada em 1Bh, cujo valor 222h. A instruo transferida para o RI, e o CI incrementado de 1, armazenando ento o valor 1Ch (endereo da prxima instruo). A instruo (cdigo de operao igual a 2h) significa: armazenar o contedo do ACC na clula de MP de endereo igual ao valor do campo operando (no nosso exemplo, o valor do campo operando 22h). A execuo da instruo consome um ciclo de escrita para gravar o valor 08Ch no referido endereo. Inicia-se, em seguida, o ciclo da instruo armazenada no endereo 1Ch (o contedo da clula tem o valor hexadecimal igual a 51E), que transferido para o RI; o CI passa a apontar para o endereo da instruo seguinte, que 1Dh. O cdigo 5h (correspondente instruo JZ Op.) significa: desviar para o endereo 1Eh se o valor do ACC=0. Como este valor no igual a zero, no ocorre o desvio (o CI permanece com seu valor anterior 1Dh). Se o valor do ACC fosse igual a zero, o valor corrente do CI (no momento 1Dh) seria alterado para 1Eh e a instruo seguinte a ser buscada pela UC seria 000, que est armazenada no endereo 1E. A instruo seguinte B22h, cujo cdigo Bh significa: imprimir o valor armazenado na MP no endereo 22. O CI, no final, estar apontando para 1Eh, que passa a ser transferida para o Ri, o CI incrementado para 1Fh e, aps sua decodificao, o programa termina. Excetuando o cmputo da instruo PRT, a execuo do programa consumiu 10 acessos memria, isto , 10 ciclos de memria. A efetiva execuo da instruo PRT consome vrios ciclos devido necessria comunicao entre a UCP e o perifrico.

162