Você está na página 1de 33

MEMRIA TECNOLOGIAS As primeiras tecnologias utilizadas em memrias foram as memrias de ncleos magnticos, hoje apenas uma curiosidade.

As memrias modernas so compostas por circuitos semicondutores, com novas tecnologias sendo criadas a cada ano permitindo que grandes quantidades de clulas de memria sejam encapsuladas em pequenas pastilhas. HIERARQUIA DE MEMRIA A MP no o nico dispositivo de armazenamento de um computador. Em funo de caractersticas como tempo de acesso, capacidade de armazenamento, custo, etc., podemos estabelecer uma hierarquia de dispositivos de armazenamento em computadores. Tipo Registrador Capacidade Velocidade Custo Localizao Volatilidade muito Bytes muito alta UCP Voltil alto Kbytes alta alto UCP/placa Voltil mdia baixa mdio Placa baixo Externa Voltil No Voltil

Memria Cache Memria Mbytes Principal Memria Auxiliar Gbytes

A UCP v nesta ordem e acessa primeiro a que est mais prxima. Subindo na hierarquia, quanto mais prximo da UCP, maior velocidade, maior custo, porm menor capacidade de armazenamento. REGISTRADORES Registradores so dispositivos de armazenamento temporrio, localizados na UCP, extremamente rpidos, com capacidade para apenas um dado (uma palavra). Devido a sua tecnologia de construo e por estar localizado como parte da prpria pastilha ("chip") da UCP, muito caro. O conceito de registrador surgiu da necessidade da UCP de armazenar temporariamente dados intermedirios durante um processamento. Por exemplo, quando um dado resultado de operao precisa ser armazenado at que o resultado de uma busca da memria esteja disponvel para com ele realizar uma nova operao. Mquinas RISC so geralmente construdas com um grande conjunto de registradores, de forma a trazer os dados para o mais prximo possvel da UCP, de forma a que o programa opere sempre sobre dados que esto em registradores. Registradores so VOLTEIS, isto , dependem de estar energizados para manter armazenado seu contedo. MEMRIA CACHE Com o desenvolvimento da tecnologia de construo da UCP, as velocidades foram ficando muito mais altas que as das memrias, que no tiveram a mesma evoluo de velocidade (o aperfeioamento das memrias se deu mais no fator capacidade). Desta forma, os tempos de acesso s memrias foram ficando insatisfatrios e a UCP ao buscar um dado na memria precisa ficar esperando muitos ciclos at que a memria retorne o dado buscado ("wait states"), configurando um gargalo ("bottleneck") ao desempenho do sistema. Por esse motivo, desenvolveram-se outras arquiteturas de memria privilegiando a velocidade de acesso. A arquitetura da memria cache muito diferente da arquitetura da memria principal e o acesso a ela muitas vezes mais rpido (p.ex: 5 ns contra 70 ns).

No entanto, o custo de fabricao da memria cache muito maior que o da MP. Desta forma, no econmico construir um computador somente com tecnologia de memria cache. Criou-se ento um artifcio, incorporando-se ao computador uma pequena poro de memria cache, localizada entre a UCP e a MP, e que funciona como um espelho de parte da MP. Desenvolveram-se ainda algoritmos que fazem com que, a cada momento, a memria cache armazene a poro de cdigo ou dados (por exemplo, uma sub-rotina) que esto sendo usados pelas UCP. Esta transferncia (MP <--> Cache) feita pelo hardware: ela independe do software, que ignora se existe ou no memria cache, portanto ignora essa transferncia; nem o programador nem o sistema operacional tm que se preocupar com ela. A memria cache opera em funo de um princpio estatstico comprovado: em geral, os programas tendem a referenciar vrias vezes pequenos trechos de programas, como loops, sub-rotinas, funes e s tem sentido porque programas executados linearmente, seqencialmente, so raros. Desta forma, algoritmos (chamados algoritmos de cache) podem controlar qual parte do cdigo ficar copiado na cache, a cada momento. Quando a MP busca um determinado trecho de cdigo e o encontra na cache, d-se um "cache hit" , enquanto se o dado no estiver presente na cache ser necessrio requisitar o mesmo MP, acarretando atraso no processamento e d-se um "cache miss" ou "cache fault". O ndice de cache hit ou taxa de acerto da cache geralmente acima de 90%. Memrias cache tambm so VOLTEIS, isto , dependem de estar energizadas para manter gravado seu contedo. MEMRIAS AUXILIARES Memrias auxiliares resolvem problemas de armazenamento de grandes quantidades de informaes. A capacidade da MP limitada pelo seu relativamente alto custo, enquanto as memrias auxiliares tem maior capacidade e menor custo; portanto, o custo por bit armazenado muito menor. Outra vantagem importante que as memrias auxiliares no so VOLTEIS, isto , no dependem de estar energizadas para manter gravado seu contedo. Os principais dispositivos de memria auxiliar so: discos rgidos (ou HD), drives de disquete, unidades de fita, CD-ROM, DVD, unidades tico-magnticas, etc. OBS.: Cache de disco no a mesma tecnologia da memria cache. Trata-se do emprego do mesmo conceito da memria cache, para acelerar a transferncia de dados entre disco, MP e UCP, usando um programa (um software, por ex.: SmartDrive) para manter um espelho do contedo de parte do disco (a mais provvel de ser requisitada a seguir pela UCP) gravado em uma parte da Memria Principal. Recentemente, as unidades de disco passaram a incorpor em sua interface chips de memria - tipicamente 32 a 64 Kbytes - para acelerar a transferncia de dados, utilizando um algoritmo de cache.

Memria Principal Conforme definimos anteriormente, Memria Principal a parte do computador onde programas e dados so armazenados para processamento. A informao permanece na memria principal apenas

enquanto for necessrio para seu emprego pela UCP, sendo ento a rea de MP ocupada pela informao pode ser liberada para ser posteriormente sobregravada por outra informao. Quem controla a utilizao da memria principal o Sistema Operacional. ESTRUTURA DA MEMRIA PRINCIPAL - CLULAS E ENDEREOS A memria precisa ter uma organizao que permita ao computador guardar e recuperar informaes quando necessrio. No teria nenhum sentido armazenar informaes que no fosse possvel recuperar depois. Portanto, no basta transferir informaes para a memria. preciso ter como encontrar essa informao mais tarde, quando ela for necessria, e para isso preciso haver um mecanismo que registre exatamente onde a informao foi armazenada (lembrando nossa analogia com o computador hipottico, imagine encontrar uma informao guardada ao acaso, se nosso escaninho tivesse 1 milho de compartimentos ...). Clula a unidade de armazenamento do computador. A memria principal organizada em clulas. Clula a menor unidade da memria que pode ser endereada (no possvel buscar uma "parte" da clula) e tem um tamanho fixo (para cada mquina). As memrias so compostas de um determinado nmero de clulas ou posies. Cada clula composta de um determinado nmero de bits. Todas as clulas de um dado computador tem o mesmo tamanho, isto , todas as clulas daquele computador tero o mesmo nmero de bits. Cada clula identificada por um endereo nico, pela qual referenciada pelo sistema e pelos programas. As clulas so numeradas seqencialmente, uma a uma, de 0 a (N-1), chamado o endereo da clula. Endereo o localizador da clula, que permite identificar univocamente uma clula. Assim, cada clula pode ser identificada pelo seu endereo. Unidade de transferncia a quantidade de bits que transferida da memria em uma nica operao de leitura ou transferida para a memria em uma nica operao de escrita. O tamanho da clula poderia ser igual ao da palavra, e tambm unidade de transferncia, porm por razes tcnicas e de custo, so freqentemente diferentes. OBS.: Uma clula no significa o mesmo que uma palavra; uma clula no necessariamente contm uma palavra. Palavra a unidade de processamento da UCP. Uma palavra deve representar um dado ou uma instruo, que poderia ser processada, armazenada ou transferida em uma nica operao. No entanto, em geral no assim que acontece e os computadores comerciais no seguem um padro nico para a organizao da UCP e MP. Computadores comerciais (tais como por exemplo os baseados nos processadores Intel 486) podem ter o tamanho da palavra definido como de 32 bits, porm sua estrutura de memria tem clulas de 16 bits. A estrutura da memria principal um problema do projeto de hardware: - mais endereos com clulas menores ou menos endereos com clulas maiores? O tamanho mais comum de clula era 8 bits (1 byte); hoje j so comuns clulas contendo vrios bytes.

Nmero de bits para representar um endereo Expresso geral: MP com endereos de 0 a (N-1) N = 2x logo: x = log2 N sendo x = n de bits para representar um endereo e N o nmero de endereos. CAPACIDADE DA MEMRIA PRINCIPAL A capacidade da MP em bits igual ao produto do n de clulas pelo total de bits por clula. T=NxM T = capacidade da memria em bits N = n de endereos ( como vimos anteriormente, N=2x sendo x = n de bits do endereo) M = n de bits de cada clula Para encontrar a capacidade em bytes, bastaria encontrar a capacidade em bits e depois multiplicar por 8 (cada byte contm 8 bits) ou ento converter o tamanho da clula para bytes e depois multiplicar pelo nmero de clulas. O ltimo endereo na memria o endereo N-1 ( os endereos comeam em zero e vo at N-1). MEMRIA - EXERCCIOS Numa MP com 1kbyte de capacidade, onde cada clula tem 8 bits: a) quantas clulas tem a MP? b) quantos bits so necessrios para representar um endereo de memria? 2) Um computador enderea 1k clulas de 16 bits cada uma. Pede-se: a) sua capacidade de memria; b) o maior endereo que o computador pode enderear; 3) A memria de um computador tem capacidade de armazenar 216 bits e possui um barramento de dados de 16 bits. Pede-se: a) o tamanho da clula de memria;

4) Calcular e completar os campos: M - Tamanho x - n de bits da clula do endereo 8 bits 16 bits 4 bytes 64 bits 4 bits 0 a (N-1) T - Capac. da Faixa de memria endereos 1 K byte 1 K endereos 256 bits 4 Gbytes 1 Mbyte 0 a 65.535 0 a 262.143 N - n de endereos

UNIDADE CENTRAL DE PROCESSAMENTO A Unidade Central de Processamento - UCP (em ingls, Central Processing Unity - CPU) a responsvel pelo processamento e execuo dos programas armazenados na MP. As funes da UCP so: executar as instrues e controlar as operaes no computador. A UCP composta de duas partes: UAL - Unidade Aritmtica e Lgica - tem por funo a efetiva execuo das instrues

UC - Unidade de Controle - tem por funes a busca, interpretao e controle de execuo das instrues, e o controle dos demais componentes do computador Obs.: Neste curso, por simplicidade, ser considerado apenas o funcionamento serial em uma UCP. Outras abordagens sero discutidas no captulo Tpicos Avanados de Arquitetura (UCP's no pipelined). A seguir apresentado o diagrama esquemtico de uma UCP.

Registradores Importantes na UCP Na UC - CI Contador de Instrues (em ingls: PC - Program Counter) - armazena o endereo da prxima instruo a ser executada - tem sempre o mesmo tamanho do REM. Na UC - RI Registrador de Instruo (em ingls: IR - Instruction Register) - armazena a instruo a ser executada. Na UAL - ACC Acumulador (em ingls:ACC - Accumulator) - armazena os dados (de entrada e resultados) para as operaes na UAL; o acumulador um dos principais elementos que definem o tamanho da palavra do computador - o tamanho da palavra igual ao tamanho do acumulador. Instrues Para que um programa possa ser executado por um computador, ele precisa ser constitudo de uma srie de instrues de mquina e estar armazenado em clulas sucessivas na memria principal. A UCP responsvel pela execuo das instrues que esto na memria. Quem executa um programa o hardware e o que ele espera encontrar um programa em linguagem de mquina (uma sequncia de instrues de mquina em cdigo binrio). A linguagem de mquina composta de cdigos binrios, representando instrues, endereos e dados e est totalmente vinculada ao conjunto ("set") de instrues da mquina. Um ser humano usa seu conhecimento e inteligncia para traduzir uma tarefa complexa (tal como, por exemplo, a tarefa de buscar uma pasta num arquivo) numa srie de passos elementares (identificar o mvel e gaveta onde est a pasta, andar at o mvel, abrir a gaveta, encontrar a pasta, retirar a pasta e fechar a gaveta). Para o computador, uma instruo precisa ser detalhada, dividida em pequenas etapas de operaes, que so dependentes do conjunto de instrues do computador e individualmente executveis. Fazendo um paralelo com linguagens de alto nvel, o programa elaborado pelo programador (o cdigo-fonte, composto de instrues complexas) precisa ser "traduzido" em pequenas operaes

elementares (primitivas) executveis pelo hardware (ver Conceito de Processo). Cada uma das instrues tem um cdigo binrio associado, que o cdigo da operao. Formato geral de uma Instruo Cdigo de operao (OPCODE)

Operando (s) (OP)

Cdigo de Operao ou OPCODE - identifica a operao a ser realizada pelo processador. o campo da instruo cuja valor binrio identifica ( o cdigo binrio) da operao a ser realizada. Este cdigo a entrada no decodificador de instrues na unidade de controle. Cada instruo dever ter um cdigo nico que a identifique. Operando(s) - ou so o(s) campo(s) da instruo cujo valor binrio sinaliza a localizao do dado (ou o prprio dado) que ser manipulado (processado) pela instruo durante a operao. Em geral, um operando identifica o endereo de memria onde est contido o dado que ser manipulado, ou pode conter o endereo onde o resultado da operao ser armazenado. Finalmente, um operando pode tambm indicar um Registrador (que conter o dado propriamente dito ou um endereo de memria onde est armazenado o dado). Os operandos fornecem os dados da instruo. Obs: Existem instrues que no tem operando. Ex.: Instruo HALT (PARE). O Captulo Representao de Instrues detalha esse assunto. Conjunto de Instrues Quando se projeta um hardware, define-se o seu conjunto ("set") de instrues - o conjunto de instrues elementares que o hardware capaz de executar. O projeto de um processador centrado no seu conjunto ("set") de instrues. Essa uma das mais bsicas decises a ser tomada pelo Engenheiro de projeto. Quanto menor e mais simples for este conjunto de instrues, mais rpido pode ser o ciclo de tempo do processador. Funcionalmente, um processador precisa possuir instrues para: operaes matemticas aritmticas: +, - , , ... lgicas: and, or, xor, ... de complemento de deslocamento operaes de movimentao de dados (memria <--> UCP, reg <--> reg) operaes de entrada e saida (leitura e escrita em dispositivos de E/S) operaes de controle (desvio de seqncia de execuo, parada) As estratgias de implementao de processadores so: CISC - Complex Instruction Set Computer - exemplo: PC, Macintosh; um conjunto de instrues maior e mais complexo, implicando num processador mais complexo, com ciclo de processamento mais lento; ou RISC - Reduced Instruction Set Computer - exemplo: Power PC, Alpha, Sparc; um conjunto de instrues menor e mais simples, implicando num processador mais simples, com ciclo de processamento rpido. Obs.: adotaremos o termo instruo para as instrues de mquina ou em linguagem Assembly e comando para linguagens de alto nvel. H hoje uma crescente tendncia a se utilizar um conjunto de instrues reduzido, de vez que os compiladores tendem a usar em geral apenas uma pequena quantidade de instrues. H tambm vantagens na implementao do hardware - maior simplicidade, menor tempo de ciclo de instruo). O projeto de um processador poderia ser resumido em:

a) Definir o conjunto de instrues (todas as possveis instrues que o processador poder executar) definir formato e tamanho das instrues definir as operaes elementares b) Projetar os componentes do processador (UAL, UC, registradores, barramentos, ...) Duas estratgias so possveis na construo do decodificador de instrues da UC: . wired logic (as instrues so todas implementadas em circuito) . microcdigo (apenas um grupo bsico de instrues so implementadas em circuitos; as demais so "montadas" atravs de microprogramas que usam as instrues bsicas. Ciclo de Instruo As instrues so executadas sequencialmente (a no ser pela ocorrncia de um desvio), uma a uma. O CI indica a seqncia de execuo, isto , o CI controla o fluxo de execuo das instrues. A seguir ilustrado o ciclo de processamento de uma instruo.

Descrio do processamento de uma instruo na UCP: - a UC l o endereo da prxima instruo no CI; - a UC transfere o endereo da prxima instruo, atravs do barramento interno, para o REM; COMUNICAO ENTRE MEMRIA PRINCIPAL E UCP BARRAMENTOS Os diversos componentes dos computadores se comunicam atravs de barramentos. Barramento um conjunto de condutores eltricos que interligam os diversos componentes do computador e de circuitos eletrnicos que controlam o fluxo dos bits. Para um dado ser transportado de um componente a outro, preciso emitir os sinais de controle necessrios para o componente-origem colocar o dado no barramento e para o componente-destino ler o dado do barramento. Como um dado composto por bits (geralmente um ou mais bytes) o barramento dever ter tantas linhas condutoras quanto forem os bits a serem transportados de cada vez. Obs.: Em alguns computadores (usando uma abordagem que visa a reduo de custos), os dados podem ser transportados usando mais de um ciclo do barramento.

Assim, se quisermos transferir um byte - por exemplo, 01001010 - da UCP para a Memria Principal, os circuitos de controle se encarregaro de colocar o byte 01001010 no barramento, ou seja, colocariam sinais de tenso "high" nas 2, 4 e 7 linhas do barramento (por conveno, os bits so sempre ordenados da direita para a esquerda) e de informar memria para ler o dado no barramento. Os dados so representados no barramento na forma de sinais de tenso, sendo que um sinal de tenso de uns poucos volts ("high") representa o bit "1" e um sinal prximo de zero volts ("low") representa o bit "0". REGISTRADORES UTILIZADOS A comunicao entre MP e UCP usa dois registradores da UCP chamados de Registrador de Endereos de Memria - REM ou, em ingls, Memory Address Register (MAR), bem o como Registrador de Dados da Memria - RDM ou, em ingls, Memory Buffer Register (MBR). x = no de bits do barramento de endereos; em geral (mas no obrigatoriamente) igual ao n de bits do Registrador de Endereos de Memria - REM. M = n de bits contidos em uma clula; M em geral (mas no obrigatoriamente) igual ao n de bits do Registrador de Dados da Memria - RDM. ESQUEMTICO DE FUNCIONAMENTO DA COMUNICAO MP / UCP

UCP / MP Barramento de endereos - unidirecional (s a UCP envia dados - write - ou l dados - read - da MP) Barramento de dados - bidirecional Barramento de controle - bidirecional UCP ---> MP (controles ... - r/w) MP -----> UCP (wait ... ) ELEMENTOS ENVOLVIDOS:

Barramentos: de dados - bidirecional de endereos -unidirecional de controle - bidirecional Registradores: REM - Registrador de Endereos de Memria (MAR - Memory Address Register) RDM - Registrador de Dados de Memria (MBR - Memory Buffer Register) Exerccios: 1) Quais das seguintes memrias so passveis de implementao? N BITS NO N DE REM CLULAS 10 10 9 11 10 1024 1024 1024 1024 1024 10 10 TAMANHO DA CLULA EM BITS 8 12 10 10 1024 10

MEMRIA a b c d e f

2) Um computador tem 512 endereos e cada clula tem 10 bits. Qual a capacidade: a) do REM; b) do RDM; c) da MP em bits. 3) Um computador tem um RDM de 16 bits e um REM de 20 bits. Sabe-se que a clula desse computador de 8 bits e que ele tem um nmero de clulas igual sua possibilidade de endereamento. Pede-se: a) qual o tamanho da barra de endereos? b) quantas clulas so lidas da memria em uma nica operao? c) quantos bits tem a memria desse computador? PALAVRA (UNIDADE DE INFORMAO) Palavra a unidade de informao do sistema UCP / MP. A conceituao mais usada (IBM, Digital) define palavra como sendo a capacidade de manipulao de bits do ncleo do computador (UCP e MP). Pressupe-se aqui que todos os elementos do ncleo do computador (o que inclue o tamanho da UAL, do acumulador e registradores gerais da UCP e o barramento de dados) tenham a mesma largura (processem simultaneamente o mesmo nmero de bits), o que nem sempre acontece. Muitas vezes encontram-se computadores em que o tamanho da UAL e do acumulador (e registradores gerais) no o mesmo tamanho dos barramentos. Desta forma, encontram-se especificaes de "computadores de 64 bits" mesmo quando seu barramento de dados de 32 bits, nesse caso referindo-se exclusivamente capacidade de manipulao da UCP de 64 bits (isto , sua UAL e acumulador tem 64 bits). Esta conceituao imprecisa (s vezes, enganosa) e pode levar a erros de avaliao da capacidade de processamento de um computador. Como exemplos, citamos os microprocessadores Intel 8086 (16 bits, sendo todos seus elementos de

16 bits) e seu "irmo" mais novo 8088, usado nos primeiros IBM/PC e XT (idntico sob quase todos os aspectos ao 8086 e tambm dito de 16 bits, sendo que UAL e registradores so de 16 bits mas o barramento de dados de apenas 8 bits, por economia e razes de compatibilidade com toda uma gerao de placas de 8 bits). Destaque-se que nesse caso as transferncias de dados atravs do barramento de dados se fazem em duas etapas, um byte de cada vez, e em conseqncia no 8088 elas consomem o dobro dos ciclos de barramento que o 8086), o que torna suas operaes de transferncia de dados mais lentas que as de seu "irmo" 8086. Concluindo, deve-se analisar caso a caso, porque a simples meno ao tamanho da palavra no uma terminologia que permita definir de forma conclusiva sobre a arquitetura do computador. Em geral, o termo "clula" usada para definir a unidade de armazenamento (o tamanho de clulas de memria) e o termo "palavra" para definir a unidade de transferncia e processamento, significando na prtica quantos bits o computador movimenta e processa em cada operao. No confundir: clula no sinnimo de palavra, embora em algumas mquinas a palavra seja igual clula. A palavra de um computador pode ter 1 byte (p.ex, 8080), 2 bytes (p.ex. 80286), 4 bytes (p.ex. 486, o Pentium, e muitos mainframes IBM) e mesmo 8 bytes (p.ex. o Alpha da DEC). Clulas de memria muitas vezes tem o tamanho de 1 ou 2 bytes - de 8 a 16 bits. TEMPO DE ACESSO Tempo de acesso (ou tempo de acesso para leitura) o tempo decorrido entre uma requisio de leitura de uma posio de memria e o instante em que a informao requerida est disponvel para utilizao pela UCP. Ou seja, o tempo que a memria consome para colocar o contedo de uma clula no barramento de dados. O tempo de acesso de uma memria depende da tecnologia da memria. As memrias DRAM (Dynamic RAM - as mais comuns hoje) tem tempo de acesso na faixa de 60 ns. Tempo de ciclo (ou ciclo de memria conceituado como o tempo decorrido entre dois ciclos sucessivos de acesso memria. As memrias dinmicas perdem seu contedo em alguns instantes e dependem de ser periodicamente atualizadas (ciclo de "refresh"). No caso das SRAM (Static RAM ou memrias estticas), que no dependem de "refresh", o tempo de ciclo igual ao tempo de acesso. As memrias dinmicas, no entanto, requerem ciclos peridicos de "refresh", o que faz com que a memria fique indisponvel para novas transferncias, a intervalos regulares necessrios para os ciclos de "refresh". Assim, as memrias DRAM tem ciclo de memria maior que o tempo de acesso. O tempo de acesso de qualquer memria tipo RAM (Random Access Memory ou memria de acesso aleatrio) independente do endereo a ser acessado (a posio de memria a ser escrita ou lida), isso , o tempo de acesso o mesmo qualquer que seja o endereo acessado. ACESSO MEMRIA PRINCIPAL O acesso MP ALEATRIO, portanto qualquer que seja o endereo (a posio) de memria que se queira acessar, o tempo de acesso o mesmo (constante). Obs.: Embora a MP seja endereada por clula, a UCP em geral acessa a MP por palavra. O endereamento por clula d maior flexibilidade de armazenamento, em compensao o nmero de acessos em geral maior. FUNCIONAMENTO A MP pode ser acessada atravs de duas operaes:

ACESSO Tipo LER ou ESCREVER a) LEITURA: LER DA MEMRIA Significa requisitar MP o contedo de uma determinada clula (recuperar uma informao). Esta operao de recuperao da informao armazenada na MP consiste na transferncia de um conjunto de bits (cpia) da MP para a UCP e no destrutiva, isto , o contedo da clula no alterado. SENTIDO: da MP para a UCP PASSOS EXECUTADOS PELO HARDWARE: a.1) a UCP armazena no REM o endereo onde a informao requerida est armazenada; a.2) a UCP comanda uma leitura; a.3) o contedo da posio identificada pelo endereo contido no REM transferido para o RDM e fica disponvel para a UCP. b) ESCRITA: ESCREVER NA MEMRIA Significa escrever uma informao em uma clula da MP (armazenar uma informao). Esta operao de armazenamento da informao na MP consiste na transferncia de um conjunto de bits da UCP para a MP e destrutiva (isto significa que qualquer informao que estiver gravada naquela clula ser sobregravada). SENTIDO: da UCP para a MP PASSOS EXECUTADOS PELO HARDWARE: b.1) a UCP armazena no REM o endereo de memria da informao a ser gravada e no RDM a prpria informao; b.2) a UCP comanda uma operao de escrita; b.3) a informao armazenada no RDM transferida para a posio de memria cujo endereo est contido no REM. CLASSIFICAO DAS MEMRIAS Quanto leitura e escrita, as memrias podem ser classificadas como: R/W - Read and Write (memria de leitura e escrita), comumente (e impropriamente) chamada de RAM (Random Access Memory ou memria de acesso aleatrio), embora no seja a nica RAM. Esta memria permite operaes de escrita e leitura pelo usurio e pelos programas. Seu tempo de acesso da ordem de 70ns e independe do endereo acessado. construda com tecnologia de semicondutores (bipolar, CCD), pode ser esttica (SRAM) ou dinmica (DRAM) e voltil. A MP construda com memria R/W. ROM - Read Only Memory ou memria apenas de leitura Esta memria permite apenas a leitura e uma vez gravada no pode mais ser alterada. Tambm de acesso aleatrio (isto , tambm uma RAM), mas no voltil. utilizada geralmente por fabricantes para gravar programas que no se deseja permitir que o usurio possa alterar ou apagar acidentalmente (tal como por ex..a BIOS - Basic Input Output System e microprogramas de memrias de controle). Quando se liga uma mquina, da ROM que vem os programas que so carregados e processados no "boot" (na inicializao o hardware aponta automaticamente para o primeiro endereo da ROM). Desta forma, parte do espao de endereamento da MP ocupado por ROM. A ROM mais lenta que a R/W e barata, porm o processo produtivo depende de ser programada por mscara ("mask programmed") em fbrica e devido ao alto custo da mscara somente se torna econmica em grandes quantidades.

Obs.: Boot (ou bootstrap loader) o processo de inicializao e carga dos programas bsicos de um computador, automtica, sem interveno externa. Este termo vem de uma analogia com um processo (impossvel) que seria uma pessoa se levantar puxando-se pelos cordes de suas prprias botas. PROM - Programmable Read Only Memory ou memria apenas de leitura, programvel. Esta memria uma ROM programvel (em condies e com mquinas adequadas, chamadas queimadores de PROM) e geralmente comprada "virgem" (sem nada gravado), sendo muito utilizada no processo de testar programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas. Uma vez programada (em fbrica ou no), no pode mais ser alterada. EPROM - Erasable Programmable Read Only Memory ou memria apenas de leitura, programvel (com queimadores de PROM) e apagvel (com mquinas adequadas, base de raios ultra-violeta). Esta memria uma PROM apagvel. Tem utilizao semelhante da PROM, para testar programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas, com a vantagem de poder ser apagada e reutilizada. EEPROM (ou E2PROM) - Electrically Erasable Programmable Read Only Memory ou memria apenas de leitura, programvel e eletronicamente altervel. Tambm chamada EAROM (Electrically Alterable ROM). Esta memria uma EPROM apagvel por processo eletrnico, sob controle da UCP, com equipamento e programas adequados. mais cara e geralmente utilizada em dispositivos aos quais se deseja permitir a alterao, via modem, possibilitando a carga de novas verses de programas distncia ou ento para possibilitar a reprogramao dinmica de funes especficas de um determinado programa, geralmente relativas ao hardware (p.ex., a reconfigurao de teclado ou de modem, programao de um terminal, etc). Lgica Temporizada Conforme vimos ao analisar a comunicao entre UCP e memria, as instrues, os dados e os endereos "trafegam" no computador atravs dos barramentos (de dados, de endereos e de controle), sob a forma de bits representados por sinais eltricos: uma tenso positiva alta ("high" geralmente no entorno de 3 volts) significando "1" e uma tenso baixa ("low" - prxima de zero) significando "0". Mas os dados no computador no ficam estticos; pelo contrrio, a cada ciclo (cada "estado") dos circuitos, os sinais variam, de forma a representar novas instrues, dados e endereos. Ou seja, os sinais ficam estticos apenas por um curto espao de tempo, necessrio e suficiente para os circuitos poderem detetar os sinais presentes no barramento naquele instante e reagir de forma apropriada. Assim, periodicamente, uma nova configurao de bits colocada nos circuitos, e tudo isso s faz sentido se pudermos de alguma forma organizar e sincronizar essas variaes, de forma a que, num dado instante, os diversos circuitos do computador possam "congelar" uma configurao de bits e process-las. Para isso, preciso que exista um outro elemento, que fornece uma base de tempo para que os circuitos e os sinais se sincronizem. Este circuito chamado clock - o relgio interno do computador. Cada um dos estados diferentes que os circuitos assumem, limitados pelo sinal do clock, chamado um ciclo de operao. Clock A Unidade de Controle da UCP envia a todos os componentes do computador um sinal eltrico regular - o pulso de "clock" - que fornece uma referncia de tempo para todas as atividades e permite o sincronismo das operaes internas. O clock um pulso alternado de sinais de tenso, gerado pelos circuitos de relgio (composto de um cristal oscilador e circuitos auxiliares). Ciclo de Operao

Cada um destes intervalos regulares de tempo delimitado pelo incio da descida do sinal, equivalendo um ciclo excurso do sinal por um "low"e um "high" do pulso. O tempo do ciclo equivale ao perodo da oscilao. A fsica diz que perodo o inverso da freqncia. Ou seja, P = 1 / f. A freqncia f do clock medida em hertz. Inversamente, a durao de cada ciclo chamada de perodo, definido por P=1/f (o perodo o inverso da freqncia). Por exemplo, se f = 10 hz logo P = 1/10 = 0,1 s.

1 Mhz (1 megahertz) equivale a um milho de ciclos por segundo. Sendo a freqncia de um processador medida em megahertz, o perodo ser ento medido em nanosegundos, como vemos no exemplo abaixo: f = 10 Mhz = 10 x 106 hz P = 10 / 106 = 100 ns (1 nanosegundo). Sempre que se fala sobre mquinas velozes, citamos nmeros em megahertz. Para um melhor entendimento sobre o que ocorre na mquina, em vez de falar sobre a freqncia do clock seria mais ilustrativo discutirmos uma outra grandeza: o perodo (isto , o tempo de durao de cada ciclo ou simplesmente tempo de ciclo). Quando se diz que um processador de 200 Mhz, est-se definindo a freqncia de operao de seu processador (seu clock), significando que o processador pode alternar seus estados internos 166 milhes de vezes por segundo. Isto acarreta que cada ciclo (equivalente a um estado lgico) de operao dura 1 / 200.000.000 s = 5 x 10-9 s ou seja, 5 nanosegundos. Como podemos ver pelo exemplo a seguir, o processador com o clock ilustrado em (B) teria um tempo de ciclo cinco vezes menor que o (A) e portanto teria (teoricamente) condies de fazer cinco vezes mais operaes no mesmo tempo.

Quando analisamos os nmeros de clock de um processador ou barramento, pode ficar uma impresso que esses nmeros no fazem sentido: 133 MHz, 166 MHz ... Vejamos como ficam seus perodos, e como esses nmeros apresentam um padro regular: Freqncia (MHz) Perodo (ns) 25 40 33 30

40 50 66 100 133 166 200 266

25 20 15 10 7.5 6 5 3.75

Os primeiros computadores tinham um nico sinal de clock geral, vlido para UCP, memria, barramentos de E/S (entrada / sada), etc. medida que a tecnologia foi se aperfeioando, a freqncia de clock de operao dos processadores (e, em menor escala, tambm a das memrias) aumentou em uma escala muito maior que a dos demais componentes. Desta forma, foi necessrio criar diferentes pulsos de clock para acomodar as freqncias de operao dos diferentes componentes. A placa-me de um PC utiliza uma freqncia-mestra (hoje em geral de 66 Mhz, equivalente a um perodo de 15 ns, estando em prancheta placas para 100 MHz) para seu barramento (ciclo de barramento), a qual multiplicada ou dividida para ser utilizada pelos demais componentes: o processador tem essa freqncia multiplicada por 2 (133 Mhz) a 4 (266 MHz), o barramento PCI usa freqncias reduzidas pela metade (33 Mhz), as memrias (ciclos da ordem de 60 ns) usam freqncias reduzidas a um quarto e as cache secundrias (ciclos entre 10 e 20 ns) usam a prpria freqncia da placa-me. As memrias cache primrias so hoje construdas como parte do processador e usam o mesmo clock do processador. O efeito prtico (econmico$$$$) do aumento da freqncia de operao que a preciso de fabricao dos circuitos tem que ser tambm maior. O tamanho de cada juno de transistor fica menor (hoje so construdos chips com 0,35 microns e uma nova gerao com 0,25 microns est em gestao). Uma juno menor requer menor potncia para sua operao, menos eltrons para operar uma transio de estados, menor tempo de propagao do sinal, menor potncia dissipada. Em conseqncia da grande preciso exigida, apenas uma pequena parcela dos processadores fabricados (cerca de 5%) consegue operar na mxima freqncia para a qual foram projetados, e a maioria certificada para operar a freqncias mais baixas. Isto acarreta que, embora todos os processadores de um tipo sejam fabricados pelos mesmos processos e nas mesmas mquinas, apenas alguns sero certificados para a mxima freqncia prevista, o que obriga que o preo dos processadores de clock mximo seja muito mais caro que o dos muitos outros que no obtiveram certificao para aquele elevado clock e sero vendidos com "tags" de 166 ou 133 Mhz, a preos reduzidos. Instrues por ciclo Qual a real importncia e significado da freqncia do processador? Quando se faz uma soma em uma calculadora, basta teclar cada um dos algarismos do 1 nmero, teclar o sinal de mais, depois teclamos os algarismos do segundo nmero e teclamos o sinal de igual. comum pensar que nos computadores as coisas se passam mais ou menos do mesmo jeito. No entanto, a soma propriamente dita a menor das tarefas que um computador executa quando soma

dois nmeros. Neste exemplo, o computador precisaria localizar a instruo de soma na memria e mov-la para a UCP. Esta instruo estaria codificada na forma de dgitos binrios e teria que ser decodificada para determinar a operao a ser realizada (no caso, ADD), o tamanho dos dados (quantas clulas eles ocupam), determinar a localizao e buscar cada um dos nmeros na memria, e s ento, finalmente, fazer a soma. Para o computador, a soma realmente a parte mais simples e mais rpida de toda a operao, j que decodificar a instruo e principalmente obter os dados tomam a maior parte do tempo (este assunto ser discutido no Captulo sobre Representao de Instrues). Cada nova gerao de processadores tem sido capaz de executar as operaes relativas ao processamento de uma instruo em menor nmero de ciclos do clock (ver seo sobre Pipeline em Tpicos Avanados de Arquitetura). Por exemplo, na famlia Intel x86: - 386 - mnimo de 6 ciclos por instruo de soma de 2 nmeros; - 486 - em geral, 2 ciclos por instruo de soma de 2 nmeros; - Pentium - 1 ciclo por instruo de soma de 2 nmeros; - Pentium Pro - 1 ciclo por instruo de soma de 3 nmeros; na soma de mais nmeros, quando um dos nmeros est em memria de baixa velocidade, o Pentium Pro capaz de "pular" este nmero e, enquanto busca o nmero que falta, seguir adiante, buscando e somando os demais nmeros para finalmente incluir o nmero que faltava na soma. Usando uma analogia com um automvel, para andar mais rpido geralmente mais eficaz trocar de marcha do que acelerar. Comparativamente, um processador de 66 Mhz hoje equivaleria a uma pequena presso no acelerador e um de 300 Mhz ao acelerador pressionado at o fundo (p na tbua!). Mas, se um 8088 fosse a 1 marcha, um Pentium II seria equivalente 5 marcha e seria certamente muito mais rpido, mesmo que fosse possvel "acelerar" o 8088 ao mesmo clock do Pentium. Se compararmos um 486 DX4-100 (100 Mhz) com um Pentium tambm de 100 Mhz, veremos que o Pentium 100 ser substancialmente mais rpido, o que se deve sua arquitetura e no ao clock. portanto um engano comparar apenas a freqncia do clock: o desempenho do processador deve ser avaliado por um conjunto de caractersticas da arquitetura, do qual a freqncia do clock apenas um deles - e no o mais importante (mais detalhes sero apresentados no captulo Tpicos Avanados de Arquitetura). REPRESENTAO DE INSTRUES INSTRUO DE MQUINA Quem executa um programa o hardware e o que ele espera encontrar um programa em linguagem de mquina (uma sequncia de instrues de mquina em cdigo binrio). Um programa em linguagem de alto nvel no pode ser executado diretamente pelo hardware. Ele tem que ser transformado (traduzido) para linguagem de mquina por um compilador, antes de ser carregada em memria, para que o hardware possa execut-lo. A linguagem de mquina composta de cdigos binrios, representando instrues, endereos e dados e est totalmente vinculada ao conjunto ("set") de instrues da mquina. Funcionalmente as operaes do computador so: matemticas (aritmticas, lgicas, de complemento, de deslocamento...) movimentao de dados (memria <--> registrador) entrada-sada (leitura e escrita em dispositivos externos - dispositivos de Entrada / Sada) controle (desvio da sequncia de execuo, parar, etc...)

Obs.: O conjunto de instrues de alguns processadores, como por exemplo o Intel 8080, no possui instrues para multiplicao ou diviso; portanto, um programa em linguagem de mquina, nestes processadores, no pode fazer multiplicao ou diviso diretamente (somente atravs de combinao de outras instrues). J um programa em linguagem de nvel mais alto pode implementar comandos de multiplicao (ou diviso) que combinem uma srie de instrues binrias do conjunto de instrues para fazer uma multiplicao (ou diviso) atravs de repetidas somas (subtraes) ou por deslocamento de bits. Ex. de um conjunto de instrues de uma mquina hipottica: Instruo Significado Operao Carregar no Load ACC <-- op acumulador Store Salvar na memria op <-- ACC Add Somar ACC <-- ACC + op Sub Subtrair ACC <-- ACC - op Mult Multiplicar ACC <-- ACC * op Div Dividir ACC <-- ACC / op Jmp Desviar CI <-- op Desviar, se ACC igual Jz CI <-- op, se ACC = 0 zero Desviar, se ACC no Jnz CI <-- op, se ACC != 0 zero Read Ler entrada op <-- entrada Print Imprimir saida <-- op Stop Terminar

Cdigo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1100

Cada uma das instrues tem um cdigo binrio associado, que o cdigo da operao. Sero usadas as seguintes convenes: Operador + * / <-<< >> Significado adio subtrao multiplicao diviso atribuio deslocamento esquerda deslocamento direita Operador ~ = != | ^ & Significado not (negao) igual diferente or (AND) exclusive or (XOR) and (E)

FORMATO DAS INSTRUES Cdigo de operao (OPCODE) Operando 1 (OP1) OP 2 OP 3...

Cdigo de Operao ou OPCODE - identifica a operao a ser realizada pelo processador. o campo da instruo cuja valor binrio identifica ( o cdigo binrio) da operao a ser realizada. Este cdigo a entrada no decodificador de instrues na unidade de controle. Cada instruo dever ter um cdigo nico que a identifique. Operando(s) - o campo da instruo cujo valor binrio sinaliza a localizao do dado (ou o prprio dado) que ser manipulado (processado) pela instruo durante a operao. Em geral, um operando identifica o endereo de memria onde est contido o dado que ser manipulado, ou pode conter o endereo onde o resultado da operao ser armazenado. Finalmente, um operando pode tambm indicar um Registrador (que conter o dado propriamente dito ou um endereo de memria onde est armazenado o dado). Os operandos fornecem os dados da instruo. Obs: Existem instrues que no tem operando. Ex.: Instruo HALT (PARE). H diversos formatos de instrues, com caractersticas particulares, vantagens e desvantagens. O conjunto de instrues de uma mquina pode ser constitudo por instrues de diversos formatos. Esta flexibilidade permite a escolha da instruo adequada para aplicao em cada caso. Conjunto de instrues pode ser analisado sob alguns aspectos, por exemplo: - quantidade de instrues - quantidade de operandos - modo de endereamento ( a forma de sinalizar a localizao de um dado - endereamento imediato, direto, indireto, indexado... ser abordado na prxima seo - Modos de Endereamento). Exemplos: ADD OP1 OP2 ADD OP1 OP2 OP3 ADD OP1 => => => (OP1) <-- (OP1) + (OP2) (OP3) <-- (OP1) + (OP2) (ACC)<--(ACC) + (OP1) Soma contedo de OP1 e OP2 e armazena o resultado em OP1 Soma contedo de OP1 e OP2 e armazena o resultado em OP3 Soma contedo de OP1 e ACC e armazena o resultado em ACC

LTR - Linguagem de Transferncia entre Registradores (register transfer language) A LTR utilizada para sinalizar o processamento de uma operao, mostrando o que acontece com os registradores e posies de memria como resultado do processamento de uma instruo. caracteres alfanumricos significam abreviaturas de nomes de registradores ou posies de memria (ex: REM. MP) parnteses indicam contedo, no caso de registradores, ou o valor um endereo na MP. seta indica atribuio (transferncia de contedo entre registradores ou entre registrador e memria principal) Ex.: REM <--- (CI) - o contedo do CI copiado para o REM Ex.: RDM <--- (MP(REM)) - o contedo da clula da MP cujo endereo est no REM copiado para o RDM TAMANHO (EM BITS) DE UMA INSTRUO PROBLEMA DE PROJETO: Escolha do tamanho das instrues Da escolha do tamanho das instrues depende : tamanho da memria

tamanho das clulas da MP velocidade de acesso organizao do barramento de dados. A soluo desta equao complexa. Basicamente, o projetista decide entre fatores como economia de espao em memria, processamento mais rpido das instrues ou um conjunto de instrues mais completo e poderoso: Maior Conjunto Instrues --> requer muitas instrues (para atendimento a diferentes aplicaes) --->muitos bits por opcode --> requer instrues completas ---> muitos bits para operandos --> requer hardware mais complexo ---> processamento de instrues mais lento CDIGO DE OPERAO (OPCODE) O nmero de bits do cdigo de operao depende de quantas instrues tem o set de instrues da mquina. Ex: um processador com 256 instrues (ou 28 instrues) teria necessidade de 8 bits para representar o cdigo de operao. Lembre-se que cada instruo precisa ter o seu cdigo binrio! Um processador pode ter suas instrues com cdigo de operaes com tamanho fixo ou varivel. Cdigos de operao com tamanho fixo so mais fceis de implementar e manipular durante a execuo de programas. Se uma mquina com cdigo de operao de tamanho fixo tem N instrues, sero necessrios n bits para representar suas instrues, sendo: 2n = N Desta forma, o nmero de bits necessrios ao opcode ser: n = log2 N No caso do microprocessador Intel 8080, o cdigo de operao tem 8 bits e so implementadas 78 instrues. Com 8 bits no cdigo de operao, teria sido possvel implementar 28 = 256 instrues. Assim, o projetista poderia ter utilizado apenas 7 bits, no entanto preferiu utilizar 8 bits, mantendo uma "folga" e os cdigos no utilizados ficaram como reserva para futuras implementaes em outros processadores da mesma "famlia", o que permitiu manter a compatibilidade entre os processadores da famlia. No Intel 8080, o cdigo de operaes varia apenas os 6 bits mais significativos; os 2 bits menos significativos so utilizados para indicaes da especificidade da instruo, conforme veremos na seo sobre o Conjunto de Instrues do Intel 8080. Outros sistemas possuem cdigo de operao de tamanho varivel. Por exemplo, o IBM/370 tem: ---> 166 instrues com cdigo de operao de 8 bits. ---> 11 instrues com cdigo de operao de 16 bits. Opcodes com tamanho varivel permitem codificar maior quantidade de instrues com menos bits e permitem projetar um compromisso mais flexvel entre a quantidade de bits do opcode e do(s) campo(s) de operando(s). Esta organizao bastante comum.

OPERANDO A funo do operando identificar / localizar o dado que ser processado. Quanto ao nmero de operandos, podemos considerar: Um maior nmero de operandos permite maior completeza, por possibilitar ter todos os operandos necessrios indicao dos dados para a realizao de operao. Em conseqncia, embora mais operandos ocupem mais memria, ser necessrio uma menor quantidade de instrues em um programa, ocupando menor espao em memria. Com um menor nmero de operandos, as referncias ficam menos completas, e sero necessrias mais instrues no programa. No entanto, tendo menos operandos, o espao ocupado na memria pelos operandos ser menor. A deciso sobre o nmero de operandos tomada pelo projetista, levando em conta esse balano. Como geralmente o operando contm um endereo da MP, o nmero de bits ocupado por um operando depende do nmero de clulas endereveis de memria, ou seja, preciso saber quantas clulas podem ser endereadas na memria principal para saber quantos bits sero necessrios para o operando. Obs.: desta forma, pode-se concluir que o nmero de bits de cada operando ser igual ao nmero de bits do REM e do CI. Por simplicidade, neste curso vamos considerar que todas as instrues de uma mquina tem o mesmo tamanho. Esta simplificao muitas vezes no corresponde realidade de uma mquina comercial, mas atende aos objetivos deste curso. Exerccio 1: (Adaptado do livro Organizao Estruturada de Computadores, A. Tanembaum, pg. 250) Uma certa mquina tem endereos de 6 bits e instrues de 16 bits. Algumas das instrues deste computador tem um operando e outras tem dois operandos. Se h n instrues de dois operandos, qual o nmero mximo de instrues de um operando? Exerccio 2: As instrues de um certo computador ocupam sempre 1 (uma) palavra de 36 bits. O conjunto de instrues deste computador deve incluir todas as seguintes instrues: a) 7 instrues com 3 operandos (duas referncias memria e uma a registrador); b) 500 instrues com 2 operandos (uma referncia memria e uma a registrador); c) 50 instrues com 1 operando (uma referncia memria). Considerando que esta mquina tem endereos de 15 bits e 8 registradores gerais, elabore um esquema de codificao para os cdigos de instruo. Exerccio 3: Comente quais as conseqncias se, no problema anterior, fosse alterado o item a) para ... 8 instrues ... CICLO DE INSTRUO Primeiramente, o programa a ser executado precisa ser carregado (armazenado) na MP, o que feito pelo Sistema Operacional, que tambm se encarrega de informar UCP onde o programa comea. O Sistema Operacional faz isto "setando" o Contador de Instrues (isto , colocando no CI o endereo da MP onde est localizada a primeira instruo daquele programa). A partir da se realiza o processamento automtico, executando-se as instrues seqencialmente

uma a uma, o que obtido atravs do incremento automtico do CI. Obs: Se o programa inclui uma instruo de desvio, o fluxo seqencial pode ser alterado. A UCP no diferencia um dado de uma instruo. A UCP no "executa" dados devido ao contedo do CI, que incrementado pelo tamanho da instruo e fica sempre apontando para a prxima instruo. Mas se em um programa houver uma instruo de desvio para um endereo em que esteja contido um dado, a UCP interpretaria o valor binrio do dado como se fosse o cdigo de uma instruo, tentaria executar e o resultado seria imprevisvel. Ciclo de Instruo 1 - A UCP busca o cdigo de operao na MP e armazena no Registrador de Instruo da UC Fase: Busca da instruo - (Instruction Fetch) - ciclo de busca RI <--- (CI) Micro-operaes: - a UC l o contedo do CI (endereo da prxima instruo ) e coloca o endereo no REM; - a UC envia um sinal memria de operao de leitura (memory read), via barramento de controle; - a memria l o endereo que est no REM, via barramento de endereos, e busca o contedo da clula referenciada; - a memria coloca no RDM, via barramento de dados, o contedo da clula lida; - a memria envia UC, via barramento de controle, um sinal de "leitura concluda"; - a UC transfere o cdigo de operao (o contedo do RDM) ao RI. 2 - A UC (decodificador de instrues) decodifica o Cdigo de Operao. Fase: Busca da instruo - (Instruction Fetch) - ciclo de busca Micro-operaes: - o Decodificador de Instrues decodifica o opcode; - o Decodificador de Instrues determina quantas clulas a instruo ocupa; - a UC incrementa o CI para apontar para a prxima instruo: CI <--- (CI + n), onde n = n de clulas que a instruo ocupa. - a UC incrementa o REM para apontar para o operando: REM <--- (REM + 1); 3 - A UC busca (se houver) o(s) operando(s) Fase: Busca de operandos (Operand Fetch) - ciclo de execuo RI <--- (Op) Micro-operaes: - a UC envia um sinal memria de operao de leitura (memory read), via barramento de controle; - a memria l o endereo que est no REM, via barramento de endereos, e busca o contedo da clula referenciada; - a memria coloca no RDM, via barramento de dados, o contedo da clula lida; - a memria envia UC, via barramento de controle, um sinal de "leitura concluda"; - a UC transfere o operando (o contedo do RDM) ao RI. * Se o operando o prprio dado: -- a UC transfere o dado (o contedo do RDM) ao ACC. -- vai para operao 4; caso contrrio: * Se o operando um ponteiro para onde o dado est armazenado: -- a UC coloca no REM o endereo de onde o dado est armazenado; -- a UC envia um sinal memria de operao de leitura (memory read), via barramento de controle; -- a memria l o endereo que est no REM, via barramento de endereos, e busca o contedo da clula referenciada; -- a memria coloca no RDM, via barramento de dados, o contedo da clula lida; -- a memria envia UC, via barramento de controle, um sinal de "leitura concluda";

-- a UC transfere o dado (o contedo do RDM) ao ACC; -- vai para operao 4. 4 - A UC comanda a execuo da instruo (a operao executada sobre o dado). Fase: Execuo da instruo - ciclo de execuo - UAL executa a instruo. 5 - Se o programa tiver terminado, Para; seno, volta ao passo 1.

Exemplo 1: Formato da Instruo de Mquina: Cdigo Operao Operando 8 bits 8 bits tamanho da instruo = 16 bits

Contedo da Memria Principal: MP ENDEREO 00 01 02 03 04 ..... 0C 0D

CONTEDO da CLULA 2A 0C 2B 04 56 ..... 01 00

Nesta mquina, considere que o cdigo de operao 2A significa LDA Op ==> ACC <--- (Op) Obs.: A instruo do exerccio LDA Op (LDA um mnemnico para "load accumulator") significa "carrega no acumulador o contedo da posio de memria indicada no operando". Soluo: Neste exemplo: O CI tem 8 bits porque o operando tem 8 bits; o mapa de memria tambm mostra isso, com os endereos ocupando 2 dgitos hexadecimais (cada dgito hexadecimal requer 4 bits). A clula de memria tem 8 bits, conforme vemos pelo mapa de memria, em que os contedos das clulas ocupam 2 dgitos hexadecimais. O RI tem 16 bits porque a instruo tem 16 bits. ACC - no daria para assegurar porque depende do tamanho da palavra; vamos assumir 8 bits, de vez que como o operando, o opcode e a clula tm 8 bits, o RDM e o Acumulador provavelmente tambm tero 8 bits A instruo LDA Op ocupar 2 clulas, logo o incremento do CI = n = 2 Vamos acompanhar o processamento da instruo LOAD (2A neste exemplo) => colocar o contedo do endereo indicado pelo operando no ACC (carrega dado no acumulador); T0, T1 e T2 representam os diversos estados dos registradores (nos respectivos tempos do ciclo de busca da instruo). n=2 (2 acessos MP para buscar instruo) CICLO de CI ACC REM RDM TEMPO T0 00 x 00 2A T1 02 x 01 0C

RI (16 bits) 2Axx 2A0C

OPERAO

L opcode L operando Carrega T2 02 0C 01 0C 2A0C Acumulador Obs.: usamos um x para indicar que o contedo de uma clula ou de parte da clula no importa ("don't care") e no considerado ( desprezado) para a presente operao, podendo ser nulo ou ento conter o resultado de uma operao anterior. Exemplo 2: Considerando a mesma mquina do exemplo anterior, qual seria o processamento da instruo LDIA Op ==> ACC <--- ((Op)) Obs.: A instruo do exerccio LDIA Op (LDIA um mnemnico para "load accumulator indirect") significa "carrega no acumulador o contedo da posio de memria apontada pela posio indicada no operando". Portanto, a posio de memria indicada pelo Operando um ponteiro para a posio onde est o dado e existe uma indireo. Esse assunto ser tratado em detalhe na prxima seo Modo de Endereamento. CICLO de CI ACC REM RDM RI (16 bits) OPERAO TEMPO T0 00 x 00 2A 2Axx L opcode T1 02 x 01 0C 2A0C L operando T2 02 x 0C 01 2A0C L dado Carrega dado no T3 02 01 0C 01 2A0C acumulador

Exemplo 3: Numa mquina de 2 operandos, a MP tem 256 clulas com 20 bits, o RDM tem 20 bits e cada instruo ocupa 1 clula. Em seu conjunto de instrues, o cdigo binrio 6 tem o seguinte significado: 6 => ADD Op1, Op2 ==> (Op1) <---- (Op1) + (Op2) - soma o contedo da posio de memria indicada em Op1 com o contedo da posio de memria indicada em Op2 e coloca o resultado na posio de memria indicada em Op1. Mostre o contedo dos registradores da UCP e das posies de memria que se alterarem aps a execuo da instruo dada. Mapa da memria: ENDEREO 10 .... B2 B3 .... MP (T1) 6B2B3 ..... 03210 04591 .....

Soluo: A MP tem 256 clulas = 28 clulas ----> REM = 8 bits ----> CI = 8 bits Clula = 20 bits e 1 instruo = 20 bits RDM = 20 bits e RI = 20 bits Operando = 8 bits ---> 8 bits x 2 operandos = 16 bits (cada instruo tem 2 operandos); logo, o opcode tem 4 bits. Cada instruo ocupa uma clula, logo n=1 (o incremento do CI ser sempre 1). Formato da operando operando opcode instruo: 1 2 (20 bits) 4 bits 8 bits 8 bits T0 T1 T2 T3 CI 10 11 11 11 REM 10 B2 B3 B2 RDM 6B2B3 03210 04591 077A1 ACC 0 03210 077A1 077A1 OPERAO L instruo (opcode + 2 operandos) L 1 dado L 2 dado Executa instruo

CLCULO DO VALOR DO ACUMULADOR 03210 04594+ -------077A1 Resp.: A posio de memria B2 ser alterada para o valor 077A1. Nenhuma outra posio de memria alterada. Exemplo 4: Mquina com Instrues de 3 operandos Resolver a expresso: X = A * (B + C * D - E/F)

Conjunto de Instrues: ADD X,A,B ===> (X) <--- (A) + (B) => soma contedo das posies de memria A e B e coloca o resultado em X SUB A,B,X ===> (X) <--- (A) - (B) => subtrai contedo da posio de memria B da A e coloca o resultado em X MULT A,B,X ===> (X) <--- (A) * (B) => multiplica contedo das posies de memria A e B e coloca o resultado em X DIV A,B,X ===> (X) <--- (A) / (B) => divide contedo da posio de memria A pela B e coloca o resultado em X Soluo: MULT C, D, X ----> (X) <--- (C) * (D) DIV E, F, T ------> (T) <--- (E) / (F) (sendo T uma varivel temporria - nenhuma varivel deve ser sobrescrita) ADD B, X, X ----> (X) <--- (B) + [(C) * (D)] SUB X, T, X -----> (X) <--- (B) + [(C) * (D)] - [(E) / (F)] MULT A, X, X ----> (X) <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]} Obs: o nmero de instrues igual ao nmero de operaes da expresso. Exemplo 4: Mquina com Instrues de 2 operandos Resolver a expresso: X = A * (B + C * D - E/F) Conjunto de Instrues: ADD X,A ===> (X) <--- (X) + (A) ===> Soma o contedo de X e A e coloca o resultado em X SUB X,A ===> (X) <--- (X) - (A) MULT X,A ===> (X) <--- (X) * (A) DIV X,A ===> (X) <--- (X) / (A) MOV X,A ===> (X) <--- (A) ==> copia o contedo de A para X. Obs.: observar que, ao no dispor do 3 operando (o qual indica uma terceira posio de memria, onde ser colocado o resultado), o contedo do 1 operando sobrescrito (portanto, destrudo) pela instruo, pois o resultado vai para ele; desta forma, necessrio uma outra instruo, para mover o contedo de uma posio de memria para outra posio, de forma a permitir salvar o contedo de uma varivel e tambm mover o resultado, se necessrio: Soluo: MOV X, C ==> (X) <--- (C) (copiou o contedo de C para X) MULT X, D ==> (X) <--- (C) * (D) (desta forma no se perde o contedo de C) MOV T, E ==> (T) <--- (E) (copiou o contedo de E para uma varivel temporria T) DIV T, F ==> (T) <--- (E) / (F) ADD X, B ==> (X) <--- (B) + [(C) * (D)] SUB X, T ==> (X) <--- (B) + [(C) * (D)] - [(E) / (F)] MULT X, A ==> (X) <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]} OBS: o nmero de instrues maior que o nmero de operaes da expresso Exemplo 5:

Mquina com Instrues de 1 operando Resolver a expresso: X = A * (B + C * D - E/F) Conjunto de Instrues: ADD X ==> ACC <--- ACC + (X) ==> soma os contedos do acumulador e de X e coloca o resultado no acumulador. SUB X ==> ACC <--- ACC - (X) MPY X ==> ACC <--- ACC * (X) DIV X ==> ACC <--- ACC / (X) LOAD X ==> ACC <---- (X) ==> carrega o contedo de X no acumulador STORE X ==> (X) <--- ACC ==> salva o contedo do acumulador na posio de memria X. Obs.: Observe que, ao dispor de apenas 1 operando (portanto, teria a indicao de apenas 1 dado da operao), o 2 dado e o local onde ser colocado o resultado so substitudos pelo ACUMULADOR que funciona como um OPERANDO IMPLCITO. O contedo do acumulador sobrescrito (destrudo) pela instruo, pois o resultado vai para ele; desta forma, so necessrias duas outras instrues, para carregar o contedo de uma posio de memria para o acumulador e para salvar o contedo do acumulador para outra posio de memria, de forma a permitir mover dados e o resultado da instruo, entre o acumulador e a a memria: Soluo: LOAD E ==> ACC <--- (E) (carregou o contedo de E no acumulador) DIV F ==> ACC <--- (E) / (F) (no se perde o contedo de E ou F) STORE X ==> (X) <--- (E) / (F) (salvou o contedo do acumulador em X) LOAD C ==> ACC <--- (C) (carregou o contedo de C no acumulador) MULT D ==> ACC <--- (C) * (D) (no se perde o contedo de C ou D) ADD B ==> ACC <--- (B) + [(C) * (D)] SUB X ==> ACC <--- (B) + [(C) * (D)] - [(E) / (F)] MULT A ==> ACC <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]} STORE X ==> (X) <--- (A) * {(B) + [(C) * (D)] - [(E) / (F)]} (salva o contedo do acumulador na posio de memria X) OBS: o nmero de instrues maior que o nmero de operaes da expresso. No foi necessrio utilizar qualquer varivel temporria. Exerccio 6 Compare os exemplos anteriores em relao ao tempo de execuo, nmero de instrues e memria. Experimente resolver as expresses executando as instrues em ordem diferente, e seus efeitos em relao ao nmero de instrues e de variveis temporrias usadas. MODOS DE ENDEREAMENTO MODO IMPLCITO (Implied Addressing) A funo da instruo traz implcito o endereamento. Exemplo No microprocessador Intel 8080 essas instrues ocupam apenas 1 byte; so as seguintes as instrues com endereamento implcito: STC (set carry flag) - "seta" o bit de carry e CMC (complement carry) - complementa o valor do bit de carry; - o operando implcito o carry flag. RAL (rotate accumulator left), RAR (rotate accumulator right) - instrues de deslocamento de bits, esquerda e direita - o operando implcito o acumulador; RLC (rotate accumulator left through carry) e RRC (rotate accumulator right through carry) -

instrues de deslocamento de bits, esquerda e direita, atravs do carry flag - os operandos implcitos so o acumulador e o carry flag; DAA (decimal adjust accumulator) - instruo para aritmtica em BCD - o operando implcito o acumulador. MODO IMEDIATO O valor do campo operando o prprio dado. usado para trabalhar com valores constantes. O operando dito operando imediato (o operando o prprio valor a ser operado, ou seja, o prprio dado a ser processado). Vantagem O operando obtido durante o ciclo de busca, em apenas 1 acesso. No necessrio fazer nenhum acesso MP no ciclo de execuo, acarretando maior rapidez na execuo. Desvantagens a) O tamanho do dado fica limitado ao nmero de bits do operando (campo operando da instruo). A limitao de tamanho do campo operando reduz o valor mximo do dado que pode ser armazenado. No Intel 8080, o campo Operando tem 8 bits, portanto o maior valor deste campo ser limitado a 28 = 256. Existem instrues que permitem carregar doublewords, isto , palavras duplas que ocupam 2 clulas de memria, em que o maior valor ser limitado a 216 = 65.536 (64 k). b) Este modo de endereamento no permite flexibilidade para alterar dados que variam a cada execuo do programa, portanto no adequado para variveis repetidamente operadas com diferentes valores a cada execuo do programa. Utilizao - Inicializao de contadores - Constantes - Armazenamento de ponteiros em registradores - Indicao de quantidade de posies em operaes de deslocamento de bits (multiplicao e diviso) Exemplos Obs.: Instrues do Intel 8080. LDI Op ==> ACC <--- Op = carrega o valor (hexadecimal) do operando no acumulador. LDI 50 (load immediate) ==> ACC <---- 50 (carrega o valor hexadecimal 50 no acumulador) LDI 'Op' ==> ACC <--- 'Op' = carrega o caractere representado no operando no acumulador. LDI 'C' (load immediate) ==> ACC <---- C (carrega o caractere C (ASCII 43) no acumulador) JMI Op (jump immediate) ==> CI <--- Op = carrega o CI com o valor (hexadecimal) do operando JMI 1000H ==> CI<--- 1000 = causa um desvio para o endereo 1000 (hexadecimal) Obs.: O Intel 8080 armazena o byte menos significativo do operando na posio de memria que segue o opcode e o byte mais significativo do operando na segunda posio de memria que segue o opcode. MVI R, Op (move immediate) ==> R <--- Op = move o valor do operando para o registrador R MVI B, 7AC1 ==> B <--- 7AC1 (como o operando de 16 bits, B estar representando o par B, C) CPI C (compare immediate) ==> compara os valores do ACC com o caractere C (ASCII 43) LXI Op (load register pair immediate) ==> RP <--- Op = carrega o valor do operando em um par

de registradores. LXI SP, 31FFH ==> SP <--- 31FF (carrega o valor hexadecimal 31FF no Ponteiro de Pilha - SP) Nota: No Intel 8080, as instrues com endereamento imediato so sempre codificadas com mnemnicos de 3 letras terminados pela letra I. Exemplos instruo de soma ==> mnemnico para endereamento direto = ADD instruo de soma ==> mnemnico para endereamento imediato = ADI; instruo move ==> mnemnico para endereamento direto = MOV instruo move ==> mnemnico para endereamento imediato = MVI; instruo load (carrega) ==> mnemnico para endereamento direto): LDA instruo load ==> mnemnico para endereamento direto = LDI Obs.: No Intel 8080, quase todas as instrues imediatas usam o acumulador como operador implcito. As excees so: MVI (move immediate) - pode mover o dado para qualquer registrador de trabalho ou posio de memria; LXI (load register pair immediate) - move um dado de 16 bits (geralmente um endereo) para qualquer par de registradores. MODO DIRETO O valor do campo operando indica o endereo do dado na MP. No Intel 8080, como um endereo requer 16 bits, o operando (no modo direto) ter 16 bits, ocupando 2 clulas e as instrues no modo de endereamento direto tero 3 bytes. Vantagens a) aplicado em mais situaes que o modo imediato; b) Requer apenas uma referncia memria para busca do dado (alm de uma para a busca da instruo), sendo mais rpido que o modo indireto. Desvantagens a) Limitao do endereo da MP que pode ser indicado pelo tamanho do campo operando. b) mais lento que o modo imediato. Utillizao Quando o dado varia de valor a cada execuo. Exemplos de Instrues do Intel 8080: LDA Op (load accumulator), sendo Op um endereo na memria ==> ACC <--- (Op) (carrega o contedo da posio de memria indicada pelo operando no acumulador). LDA 978A ===> ACC <--- (978A) = carrega no acumulador o contedo da posio de memria 978A. JMP Op ("jump") ==> CI <--- (Op) JMP 1000H ==> CI<--- (1000H) = causa um desvio para o endereo contido nas posies 1000 e 1001 (hexadecimal) da memria, carregando o contedo das posies 1000 e 1001H no CI Obs: como o CI contm 16 bits (um endereo), sero necessrias DUAS clulas de memria (uma clula contm 8 bits), o que requer dois ciclos de busca memria.

MOV R, Op ==> R <--- (Op) MOV B, 7AC1 ==> B <--- (7AC1), move o contedo da posio de memria (8 bits) indicada pelo operando - 7AC1 - para o registrador B (8 bits). Exerccio: Comparar o efeito das instrues acima no modo direto com as instrues equivalentes no modo imediato, em termos de acessos memria. Resp: No modo de endereamento direto, so necessrios mais de 1 acessos MP para a busca do dado, sendo 1 no ciclo de busca para busca do operando e pelo menos 1 no ciclo de execuo para a busca do dado propriamente dito. No modo imediato, necessrio apenas um acesso memria no ciclo de busca para a busca do dado (o operando o prprio dado). No necessrio nenhum acesso de busca memria no ciclo de execuo. MODO INDIRETO O campo operando contm um endereo de memria cujo contedo o endereo do dado a ser operado. Portanto, h um duplo endereamento. O endereo intermedirio chamado ponteiro (pointer) DESENHO (a incluir) Exemplo: LDID Op ==> ACC <--- ((Op)) So necessrios 3 ou mais acessos memria: 1 para buscar o opcode, 1 (ou 2, quando for uma referncia memria) para buscar o operando (Op) e mais 1 para buscar o dado ((Op)) propriamente dito (ou 2, quando o dado for um endereo de memria; por exemplo, quando for uma instruo de desvio). Vantagem a) Permite implementar estruturas de organizao de dados mais complexas, mais sofisticadas. b) Elimina a limitao de clulas endereveis. Desvantagem Requer maior quantidade de acessos MP para completar o ciclo de execuo da instruo, acarretando que o tempo requerido para a execuo da instruo maior. Obs.1: possvel haver vrias indirees. Em algumas mquinas, existe 1 bit que sinaliza no caso de existirem vrias Indirees. Enquanto este bit for 0, continua com as indirees, at encontr-lo ligado. Obs.2: O Intel 8080 somente dispe de instrues com modo de endereamento indireto usando registradores como ponteiro. Os exemplos dessa aplicao so apresentados no item sobre ENDEREAMENTO POR REGISTRADOR. Utilizao Manuteno de ponteiro de dados Exemplo: Relao de dados a serem movimentados para novas posies de memria (por exemplo, elementos de vetores), basta modificar o valor da clula endereada pela instruo (no necessrio mudar o

valor do operando). ENDEREAMENTO POR REGISTRADOR Existem outros modos de endereamento, que usam registradores para indicar a posio onde esto os dados. Os modos de endereamento direto e indireto por registrador funcionam de forma semelhante aos modos de endereamento direto e indireto vistos anteriormente (em que o operando aponta para uma posio de memria), porm o operando aponta para um registrador (onde est o dado - endereamento direto - ou ento faz referncia memria - endereamento indireto). Modo por registrador direto O operando aponta para um registrador, o qual contm o dado. Modo por registrador indireto O operando aponta para um registrador, o qual contm um endereo de memria (ponteiro) para o dado. Vantagens Maior velocidade / rapidez de execuo - o acesso ao registrador muito mais rpido que o acesso memria. Economia de espao de armazenamento de instruo (o tamanho da instruo menor porque como so poucos registradores, so menos bits para seus endereos). Desvantagem No so adequados para transferncia de variveis da MP para ULA. Pequeno nmero de registradores - se forem muitos os dados endereados por registrador, os registradores disponveis podem no ser suficientes. Utilizao Implementao de contadores. Exemplo de uso: vetor E(1) ... E (100) Ri contm E ( i ) para incrementar e percorrer o vetor Obs.: No Intel 8080, a identificao do registrador envolvido na operao faz parte do prprio opcode. Exemplos Os exemplos usam instrues do Intel 8080: ADD r (add register) ==> (ACC) <--- (ACC) + (r) - soma o contedo do registrador r ao contedo do acumulador (endereamento por registrador, direto) ADD M (add memory) ==> (ACC) <--- (ACC) + ((M)) - soma o contedo da posio de memria indicada pelo registrador M ao contedo do acumulador (endereamento por registrador, indireto) INR M (increment memory) ==> ((M)) <--- ((M)) + 1 - incrementa o contedo da posio de memria indicada pelo registrador M (endereamento por registrador, indireto) DCR r (decrement register) ==> (r) <--- (r) - 1 - decrementa o contedo do registrador r (endereamento por registrador, direto) MOV r1, r2 (move register) ==> (r1) <--- (r2) - o contedo do registrador r2 copiado para o

registrador r1 (endereamento por registrador, direto). MOV M, r (move to memory) ==> ((M)) <--- (r) - o contedo do registrador r copiado para a posio de memria cujo endereo est no registrador M (endereamento por registrador, indireto). MODO INDEXADO O endereo de cada elemento obtido atravs da soma do campo Operando com o contedo de um registrador (Registrador de ndice). O endereo de cada elemento (por exemplo, de um vetor) a soma (antes da colocao do endereo no REM) do valor do campo operando com o contedo de um registrador (escolhido como registrador ndice). Vantagem Rapidez na execuo das instrues de acesso aos dados (a alterao dos endereos realizada na UCP. Utilizao Manipulao de estruturas de dados mais sofisticadas (vetores). Obs.: O Intel 8080 no possui nenhuma instruo com modo de endereamento indexado, o qual somente foi introduzido na famlia Intel a partir do 8086. Exemplos LDX Ri, Op ==> ACC <--- ((Op) + (Ri)) ADX Ri, Op ==> ACC <--- ACC + ((Op) + (Ri)) MODO BASE + DESLOCAMENTO Utiliza um registrador chamado Registrador de Base, que contm o endereo base na MP e um operando, que contm o deslocamento do dado em relao base. Utilizao usado para relocao de programas: define endereo inicial da rea do programa e o endereo inicial da rea de dados (pode ser utilizado um registrador para endereos e um para dados) Nota: Os microprocessadores Intel (aps 8086/8) usam registradores especficos como registradores-base. Estes Registradores de Base so utilizados para implementar o endereamento de memria e a segmentao da memria em pginas de 64 kbytes. Diferenas conceituais entre os modos Indexado e Base + Deslocamento Modo lndexado Acesso a diferentes dados pela alterao do endereo atravs do registrador-ndice, com um nico valor no operando. utilizado para manipulao de estruturas de dados. Modo Base + Deslocamento Um nico valor no registrador-base e valores diferentes no campo deslocamento da instruo. utilizado para relocao de programas.

IDENTIFICAO DO MODO DE ENDEREAMENTO DA INSTRUO O Cdigo de Operao identifica o modo de endereamento, atravs de seu mnemnico e do correspondente cdigo binrio. Determinados bits no opcode podem indicar o modo de endereamento ou a instruo pode possuir um campo especfico para indicar o modo de endereamento, atravs de cdigos em bits. O registrador utilizado no endereamento tambm pode ser indicado por bits determinados no opcode. Comparao dos Efeitos dos Modos de endereamento - Exemplo (mquina hipottica) Qual ser o valor carregado no acumulador quando forem executadas as seguintes instrues: LDI Op ==> (ACC) <--- Op (modo de endereamento Imediato) LDA Op ==> (ACC) <--- (Op) (modo de endereamento direto) LDID Op ==> (ACC) <--- ((Op)) (modo de endereamento Indireto) LDR Op ==> (ACC) <--- (R) (modo de endereamento Direto por Registrador) LDIR Op ==> (ACC) <--- ((R)) (modo de endereamento Indireto por Registrador) LDX Op ==> (ACC) <--- ((Ri) + (Op)) (modo de endereamento Indexado) LDB Op ==> (ACC) <--- ((Rb) + (Op)) (modo de endereamento Base + Deslocamento) Contedo da memria no incio da instruo: ENDEREO Contedo 0000 opcode 0001 05 0002 00 0003 00 0004 00 0005 30 0006 00 0007 21 xxx 0015 FF xxx 0020 3A xxx 0030 10

Contedo dos registradores no incio da instruo CI ACC Ri Rb Reg. B Reg. M (HL) 0000 xx 02 10 AC 0015 Resposta: Cont.do ACC INSTRUO SIGNIFICADO (aps exec. da instruo LDI Op (2 (ACC) <--- Op 05 bytes)

LDA Op (3 bytes) LDID Op (3 bytes) LDR Op (1 byte) LDIR Op (1 byte) LDX Op (3 bytes) LDB Op (2 bytes)

(ACC) <--- (Op) (ACC) <--- ((Op)) (ACC) <--- (B) (ACC) <--- ((M)) (ACC) <--- ((Ri) + (Op)) (ACC) <--- ((Rb) + (Op))

30 10 AC FF 21 FF

Nota: Algumas instrues usam uma combinao de modos de endereamento. Instruo CALL - endereamento direto (ou imediato) + por registrador indireto endereamento direto - especifica o endereo da sub-rotina desejada endereamento por registrador indireto - o Ponteiro da Pilha CALL copia (push) o contedo corrente do CI para uma posio da MP especificada pelo ponteiro da pilha (Stack Pointer). Ver pginas sobre [Pilha] e [Processamento de Sub-rotinas] Efeitos de Temporizao dos Modos de Endereamento O modo de endereamento afeta o tempo requerido para executar uma instruo e a memria requerida para seu armazenamento Instrues que usam endereamento implcito ou por registrador so executadas muito rpido, pois trabalham direto com o hardware do processador e seus registradores. A instruo toda pode ser buscada (fetched) em um nico ciclo de busca (um nico acesso memria). O nmero de acessos memria o mais importante fator no consumo de tempo de execuo da instruo. Cada ciclo de acesso memria busca uma clula e implica em um nmero varivel de estados, cujo tempo de durao depende da frequncia do clock. Cada instruo consome um determinado nmero de ciclos de UCP. Exemplo: A instruo CALL requer 5 acessos memria, sendo 3 para buscar a instruo (opcode mais operando de 2 bytes) e mais 2 para salvar ("push") o contedo (2 bytes) do CI (Program Counter) para o ponteiro da pilha (Stack Pointer).

Você também pode gostar