Organizaçã de Cmputadres Digitais Cap.10: Cnjunt de Instruções: Mds de Endereçament e Frmats
Mds de endereçament Os mds de endereçament sã um aspect da Arquitetura d cnjunt de instruções ns prjets das CPUs. Os váris mds de endereçament definids em uma Arquitetura d cnjunt de instruções determinam cm as instruções da linguagem de máquina identificam s perands de cada instruçã.
Mds de endereçament Um md de endereçament especifica cm calcular endereç efetiv (real) de um perand através da infrmaçã dispnível ns registradres u em cnstantes da instruçã. Os mds de endereçament sã de interesse ds prjetistas/prgramadres de cmpiladres e daqueles que escrevem diretamente em linguagem assembler. Nã há um padrã universalmente aceit para s nmes ds mds de endereçament.
Mds de endereçament Diferentes arquiteturas de cmputadr variam muit n númer de mds de endereçament dispníveis. É em geral pssível, a cust de algumas instruções extras e talvez um registradr, utilizar uns pucs mds de endereçament simples para realizar tdas as funções que mds mais cmplexs permitem. É um fat aceit que é mais fácil aumentar a perfrmance ds cmputadres se se tem uns pucs mds de endereçament simples, d que se se tem muits mds. Máquinas RISC têm em trn de 5 mds de endereçament ( IBM System/360 mainframe tinha smente 3). Máquinas CISC (DEC VAX supermini) tinham até mais de 12 mds.
Mds de endereçament Se há pucs mds, md requerid é cdificad n própri pcde (e.g. IBM System/390 e na mairia das RISC). Se há muits mds, md requerid é cdificad em um camp específic d pcde (DEC VAX permitia múltipls perands em quase tdas as instruções, reservand s primeirs bits para especificar tip de md de endereçament). Em agst de 2000 a Cmpaq anunciu fim da prduçã ds mdels VAX. Medidas em prgramas gerads cm cmpiladres a partir de linguagens de alt nível revelam que uns pucs mds sã utilizads em 90 % ds cass.
Númer e Lcalizaçã ds Operands Uma característica de um cnjunt de instruções é númer de perands explicitamente indicads em uma instruçã aritmética u lógica. Em algumas arquiteturas, estas instruções referenciam explicitamente três perands, dis perands-fnte e um perand-destin, cm pr exempl em: ADD R1, R2, R3, nde R1 e R2 sã s perands-fnte e R3 é peranddestin. Em utras arquiteturas, instruções aritméticas/lógicas especificam apenas dis perands. Neste cas, um ds perands-fnte é também perand-destin. Pr exempl, na instruçã: ADD R1, R2, nde R2 cntém um ds perands-fnte e também é usad cm perand-destin. Quant à lcalizaçã ds perands especificads pr uma instruçã aritmética/lógica, pdems encntrar arquiteturas nde pdem ser realizads acesss as perands diretamente a partir da memória principal. Pr exempl, nestas arquiteturas pdems ter instruções tais cm: ADD M1,R1,R2 ADD M1,M2,R1 ADD M1,M2,M3 nde M1, M2 e M3 sã endereçs de lcações de memória. Em um utr extrem, existem arquiteturas nde tds s perands encntramse apenas em registradres. As instruções aritméticas/lógicas sã tdas d tip: ADD R1,R2,R3 ADD R1,R2
Númer e Lcalizaçã ds Operands A partir d númer de perands explicitamente referenciads e da lcalizaçã destes perands, pdems classificar as arquiteturas ns seguintes tips: arquiteturas memória-memória: as instruções aritméticas/lógicas usam três perands e tds s perands pdem estar na memória; arquiteturas registradr-memória: as instruções aritméticas/lógicas usam dis perands, send que apenas um deles pde residir na memória; arquiteturas registradr-registradr: as instruções aritméticas/lógicas usam três perands, tds em registradres. Neste cas, apenas duas instruções acessam diretamente a memória: LOAD e STORE. A instruçã LOAD carrega em um registradr um dad armazenad na memória e instruçã STORE armazena na memória cnteúd de um registradr. Arquiteturas memória-memória e registradr-memória apresentam cm vantagem um menr númer de instruções n códig d prgrama, já que nã é necessári carregar previamente em registradres s perands-fnte de uma instruçã aritmética/lógica, cm acntece em uma arquitetura registradr-registradr. Pr utr lad, a existência de instruções aritméticas/lógicas mais pdersas trna mais cmplexa a implementaçã da arquitetura. As arquiteturas Intel 80x86 e Mtrla MC680x0 sã d tip registradrmemória. Uma arquitetura memória-memória antiga fi DEC VAX 11.
Mds de endereçament Imediat Diret Indiret Registradr Indiret pr Registradr Deslcament (Indexad) Pilha Os camps de endereçament sã pequens para tamanh de memória que se quer acessar. As técnicas devem balancear: quantidade de psições x flexibilidade de endereçament # de referências à memória em cada instruçã x cmplexidade d cálcul de endereçs
Endereçament Imediat O perand faz parte da instruçã Operand = camp de endereç e.g. ADD 5 Adicina 5 a cnteúd d acumuladr 5 é perand Características: Rápid: nã é necessári fazer acess à memória para buscar dad Desvantagem: camp de perand é muit menr que tamanh da palavra
Endereçament Imediat Exempl ADD 5 Adicina 5 a cnteúd d acumuladr 5 e perand É a frma mais simples de endereçament em que perand está presente na instruçã Este md de endereçament pde ser utilizad para definir e utilizar cnstantes e inicializar variáveis
Endereçament Imediat
Endereçament Diret O camp de endereçament cntém endereç efetiv d perand Esta técnica fi muit utilizada nas primeiras gerações de cmputadres Implica um acess à memória Limita espaç de endereçament
Endereçament Diret Exempl, ADD A Adicina cnteúd da célula A a acumuladr Busca n endereç de memória A perand
Endereçament Diret
Endereçament Indiret Esta técnica prcura slucinar prblema d espaç de endereçament da técnica anterir clcand n camp d endereç da instruçã uma referência à memória que cntém endereç cmplet da peraçã
Endereçament Indiret Vantagem Para uma palavra de tamanh N está dispnível um espaç de endereçament 2 N Desvantagem Sã necessáris 2 acesss para buscar perand, um para endereç, utr para valr d perand
Endereçament Indiret Exempl: ADD (A) Adicine cnteúd da célula referenciada pel cnteúd de A a acumuladr
Endereçament Indiret
Endereçament pr Registradr Esta técnica é semelhante a endereçament diret, a única diferença é que camp refere um registradr em vez de uma psiçã de memória Tipicamente camp de endereç que referencia s registradres tem de 3 a 4 bits para referenciar um cnjunt de 8 a 16 registradres Vantagens Apenas um pequen camp de endereç é necessári e nã sã necessárias referências à memória Execuçã muit rápida Desvantagens Númer limitad de registradres Quais valres ficarã ns registradres?
Endereçament pr registradr
Endereçament Indiret pr registradr Esta técnica é parecida a endereçament indiret, prém camp de endereç refere-se a um registradr e nã uma psiçã da memória As vantagens e limitações sã basicamente as mesmas que endereçament indiret: Para uma palavra de tamanh N está dispnível um espaç de endereçament 2 N Sã necessáris 2 acesss para buscar perand, um para endereç, utr para valr d perand O endereç n registradr pde ser resultad de uma cnta/peraçã previamente feita.
Endereçament Indiret pr Registradr
Endereçament pr Deslcament Esta técnica cmbina as técnicas de endereçament diret e d endereçament indiret pr registradr Esta técnica briga a que a instruçã tenha dis camps de endereç Send pel mens um explícit (valr A usad diretamente) O utr camp de endereçament, R, referencia implicitamente um registradr cuj cnteúd é adicinad a A para prduzir endereçament deslcad EA = A + (R)
Endereçament pr Deslcament 1 - Endereçament Relativ Usa-se PC (Prgram Cunter) O camp de endereç da instruçã crrente é um deslcament em relaçã a PC Esta técnica explra princípi da lcalidade permitind pupar bits de endereç na instruçã 2 - Endereçament Basead em registradr O registradr de referência cntém a psiçã da memória e endereç da instruçã cntém deslcament a partir duma psiçã de memória
Endereçament pr Deslcament 3 - Endereçament Indexad Neste cas camp d endereç referencia a memória principal e registradr de referência cntém um deslcament psitiv a partir dessa psiçã de memória Esta aprximaçã é exatamente cntrária a endereçament basead em registradr e tem grande utilidade na execuçã de instruções iterativas através de alterações sucessivas d registradr de referência EA = A + (R) R = R + 1 Pr exempl supnha-se que se quer adicinar um element as elements de uma lista. O melhr seria cmeçar cm a base e smar um element à base A: A+1 A+2 A+3,
Endereçament pr Deslcament +
Endereçament pr Pilha A pilha é um cnjunt reservad de lcalizações de memória A pilha é gerida em filsfia LIFO (Last In First Out) Assciad à pilha existe um apntadr que é endereç d tp da pilha O apntadr para tp da pilha é mantid num registradr especial (SP Stack Pinter), que faz cm que endereçament pr pilha seja de fat um endereçament indiret pr registradr
Endereçament pr Pilha O perand está (implicitamente) n tp da pilha ex ADD remve dis elements da pilha e adicina-s e clca resulta na pilha
Endereçament pr pilha +
Frmat das Instruções O frmat das instruções define a frma cm s camps sã distribuíds Cada instruçã deve ter um códig de peraçã (OPCODE) e, explícita u implicitamente, um u mais perands Cada perand explícit tem de ser referenciad utilizand um ds métds descrits anterirmente (endereçament)
Tamanh das Instruções É fatr básic d desenh d cnjunt de instruções e esta decisã afeta e é afetada pr: Tamanh da memória Organizaçã da memória Estrutura d bus Velcidade d CPU O cmprmiss mais bvi é entre desej de ter um repertóri de instruções mais pders (u seja, mais OPCODES, mais perands, mais mds de endereçament) e a necessidade de pupar espaç
Tamanh das Instruções Além deste cmprmiss existem utras cnsiderações: O tamanh das instruções deve ser igual u múltipl d bus d sistema, cas cntrári as instruções nã ficariam cmpletas; O tamanh das instruções deve também ser múltipl d tamanh ds caracteres (8 bits) e ds númers cm vírgula fixa (inteirs) para nã haver desperdícis de bits ns cálculs efetuads
Alcaçã de Bits Os seguintes fatres determinam a utilizaçã ds bits de endereçament: Nº de mds de endereçament Os mds de endereçament indicads explicitamente cupam mais bits que s indicads implicitamente Nº de perands Mens endereçs pdem levar a prgramas mais lngs e cmplexs Registradr x Memória Quants mais registradres frem utilizads para referenciar perands, mens bits serã necessáris
Alcaçã de Bits Nº de cnjunts de registradres Atualmente a tendência tem sid para dividir s registradres em bancs especializads (e.g. dads e deslcaments), usand s pcde(s) da instruçã para determinar implicitamente sbre que banc de registradres a peraçã deve ser realizada Alcance d endereçament (quand acess é feit à memória principal) Está diretamente relacinad cm nº de bits para endereçament na instruçã
Leitura adicinal Stallings capítul 10 Intel e PwerPC Web sites