Nos micros atuais a memria cache possui uma importncia fundamental,
armazenando os dados mais requisitados pelo processador, e evitando na grande maioria das vezes que seja necessrio buscar ou escrever dados diretamente na lenta memria Ram. Apesar de todos os processadores apartir do !" possu#rem uma pequena quantidade de cache incorporado ao prprio n$cleo do processador, chamado de cache primrio ou %&, ele ' muito pequeno (justamente pelas memrias usadas no cache %& serem e)tremamente caras*, e por isso, usamos tamb'm uma quantidade um pouco mais generosa de tipos um pouco mais baratos de memria cache na placa m+e. ,ste cache ' chamado de cache secundrio, ou %-. . circuitos que controlam o cache primrio, s+o incorporados ao prprio n$cleo do processador, enquanto os circuitos que controlam o funcionamento do cache %- s+o localizados no chipset, que por sua vez fica localizado na placa m+e. .s processadores /entium 00, 1eleron e 2eon s+o a e)ce3+o a esta regra, pois neles o cache %- e seus circuitos controladores fazem parte do prprio cartucho do processador. . cache %& e o cacha %- trabalham conjuntamente, formando uma esp'cie de escada de tr4s degraus para os dados. 0nicialmente, o programa ' carregado na memria Ram. 1onforme o processador for requisitando dados referentes ao programa aberto, estes dados v+o sendo armazenados no cache %-, sendo os dados mais requisitados armazenados no cache %&. No livro 5uia de 6ard7are 1ompleto, eu uso como e)emplo um secretrio de uma companhia de seguros8 0magine que o servi3o deste secretrio seja atender &9.999 clientes da seguradora que ligam esporadicamente. 1ada cliente possui uma ficha (imaginemos que seja uma companhia pobre que n+o tenha dinheiro para comprar computadores, ehehe :;* sendo que todas as &9.999 fichas est+o organizadas num grande arquivo do outro lado da sala. <uando um cliente liga, o secretrio (que tal se o chamssemos de =o+o> :;* precisa se levantar e procurar a ficha do cliente no arquivo, antes que possa atende;lo, fazendo com que o cliente precise esperar um tempo razovel. 1om o passar do tempo, =o+o percebe que dos &9.999 clientes, ?9 ligam com mais freq@4ncia. 1omo ele n+o ' nada bobo, ele coloca um pequeno fichrio sobre a mesa, e nele guarda as fichas destes ?9 clientes que s+o responsveis pela maioria dos chamados. <uando um destes clientes ligar, =o+o poder localizar sua ficha em muito menos tempo, j que elas j estar+o sobre sua mesa. ,nquanto estiver atendendo o cliente, ele manter sua ficha A m+o, para que possa atender imediatamente a qualquer solicita3+o. . grande arquivo ilustra a memria Ram, onde todos os programas abertos s+o carregados, o pequeno fichrio sobre a mesa ilustra o cache %-, que armazena os dados usados com mais freq@4ncia pelo processador, enquanto a ficha que ' mantida A m+o enquanto o cliente ' atendido, ilustra o cache %&, que ' brutalmente mais rpido do que a memria Ram e mesmo do que o cache %-, apesar do seu tamanho reduzido n+o permitir a armazenagem de muitos dados, assim como n+o ' poss#vel (pelo menos no e)emplo* manter mais do que uma ficha A m+o ao mesmo tempo.
Cache L1 e o Limite de Cacheamento Na maioria dos processadores atuais, entre eles o /entium 00, o B" e o ")!" da 1Cri), o cache %& ' subdividido em duas sessDes, do mesmo tamanho. Num ")!" E2 que possui " BF de cache %& por e)emplo, temos duas sessDes de G- Hb cada uma. Im se3+o se destina a armazenar dados usados pelo programa, enquanto a outra se destina a armazenar instru3Des
/ara ilustrar este procedimento, vou escrever um pequeno programa em pseudocdigo, que escreve os n$meros pares entre 9 e &998 )8 inteiro 0nicio )J9 enquanto ()K&99* fa3a8 )J)L- ,screva ) Mim enquanto Mim Neste programa, o ) ' uma varivel, que ir armazenar um numero (dados* enquanto a fun3+o NenquantoN, ' uma instru3+o. 1aso este pequeno programa fosse compilado usando;se alguma linguagem de programa3+o, e fosse e)ecutado, a instru3+o NenquantoN seria armazenada em uma se3+o do cache %&, enquanto o valor de ), que representa os dados seria gravada na outra se3+o do cache. ,m programas maiores vale o mesmo princ#pio, apenas em escala maior. ,sta divis+o do cache %& aumenta sua efici4ncia. Ima coisa interessante sobre o funcionamento do cache, ' que os controladores da memria Ram e do cache s+o separados. Alguns chipsets mais antigos, como o iG9M2, o iG9O2, e o iG9P2 possuem um problema quanto ao cacheamento da memria Ram, pois apesar de possu#rem controladores de memria capazes de acessar &-! EF de Ram (no caso do iG9M2 e do iG9O2* ou -?" EF (no caso do iG9P2* possuem controladores de memria cache capazes de acessar apenas " EF de memria. Eesmo usando os &-! ou -?" EF de memria suportados pelo controlador da memria Ram, apenas os primeiros " EF seriam cacheados. quando o processador precisasse ler ou escrever algum dado em algum endere3o de memria acima de " EF, n+o poderia contar com a ajuda do cache %&, perdendo tempo devido A bai)#ssima velocidade das memrias. /ara piorar as coisas, o Qindo7s R?SR!, assim como o Tos acessa a memria apartir do final. .u seja, primeiro seriam usados todos os endere3os que n+o s+o atendidos pelo cache, para apenas depois que todos estivessem ocupados usar os primeiros " EF atendidos cacheados. Uem d$vida, neste caso, aumentar a quantidade de memria Ram acima de " EF, iria diminuir o desempenho do micro ao inv's de aumenta;lo, a menos ' claro, que voc4 rodasse algum programa pesado o suficiente para ocupar toda a memria Ram dispon#vel, como algum editor de v#deo, j que mesmo n+o cacheada, a memria Ram sempre ser infinitamente mais rpida do que memria virtual em disco.
Oale lembrar que este problema s ocorre em chipsets mais antigos. No caso de chipsets usados em placas m+e Uuper;V, como o Oia Apollo EO/G, o Ali Aladdin O e o U0U ?G9 a quantidade de memria Ram suportada ' de &-! ou -?" EF, enquanto o controlador de cache %- do /entium 00 ' capaz de cachear at' ?&- EF de memria Ram. A algum tempo atrs, discuti durante algum tempo no ne7s de hard7are do Iol este assunto com o %upini. /elo bom n#vel t'cnico e pelo respeito m$tuo demostrado nas mensagens, resolvi inclui;las neste artigo. Ao longo destas mensagens o funcionamento da memria cache, e o limite de cacheamento dos chipsets antigos ser e)plicada com mais detalhes. ,spero que tenham paci4ncia para ler tudo :;* As mensagens escritas pelo %upini est+o em Azul, enquanto as mensagens escritas por mim est+o em preto.
Mensagem 1 /rimeira Eensagem do %upini8
Ateno Leo, mais uma vez vou repetir. No interessa a quantidade de memria existente na mquina. e o !"# $er esta memria e$a % cacheve$. # que muda % o M#&# de escrita'$eitura, pois sempre os dados estaro no cache. #u voce acredita que (acima( dos $imites da )A* +AM a memria ,ica sozinha sendo $ida pe$o processador sem ser escrita no cache- Einha primeira mensagem em resposta A mensagem anterior do %upini (como voc4s podem ver ca# de para;quedas na conversa, ehehehe :;* No caso dos chipsets iG9P2, iG9O2, iG9M2 e equivalentes, o problema n+o era nem a quantidade de memria 1ache nem a quantidade de memria Pag, e sim uma limita3+o do prprio chipset. Tentro do chipset os controladores da memria e os circuitos responsveis por cachear a memria s+o independentes. No caso destes chipsets ultrapassados, o controlador do cache s en)ergava " EF, enquanto o controlador da memria suportava um pouco mais de memria, &-! no caso do O2 por e)emplo. Oc pode colocar a quantidade de memria Pag ou cache que vc quiser nesses chipsets que o controlador s vai en)ergar " EF, n+o copiando para o cache um $nico bit das reas de memria acima disso. W a mesma coisa que acontece com o chipset e o processador. <ualquer processador apartir do G!" suporta o uso de at' 5F de memria Ram. /or que n+o posso usar tudo isso de memria na minha O2 ent+o> /or que o chipset s en)erga &-! EF de memria. No caso do cache ' a mesma coisa, apesar do controlador da memria suportar &-! EF, o controlador de cache s en)erga e cacheia ", o que voc4 colocar de memria acima disso n+o vai ser coberta pelo cache. . modo de escritaSleitura (7rite bacH, 7rite trough, etc.* n+o tem nada a ver com o espectro cachevel, simplesmente com a efici4ncia do cache.
Mensagem 2
No % isso naum !a.a... o que determina essa possi/i$idade de cachear toda a memria % o modo de escrita ne$a. 0ste assunto 1 ,oi mais que discutido no tempo do (.2nio( e eu continuo a,irmando que3 e voce uti$iza o modo (escrever atrs'depois( voce rea$mente ,ica $imitado 4 capacidade da )A*. Mas se voce uti$iza o modo (escrever durante o processo( a memria cache ,ica com a in,ormao de qua$quer parte da memria +AM. # processo desta mec5nica % simp$es3 suponha uma )A* que cacheia 67M!, num computador com 89: M!. 0sta )A* ,oi in,ormada pe$a !"# que o modo de escrita % (;rite /ac<( ' escrever aps, e para isso e$a uti$iza o /it su1o. Muito /em... a C=> precisa de uma instruo e vai no cache, pe.a a instruo se $ estiver e usa. e no estiver no cache, a C=> vai na +AM e pe.a? usa e depois escreve no cache, se o endereo de memria estiver dentro do espectro cacheve$, ou se1a, dentro dos 67 M! cacheveis. e o endereo de memria estiver ,ora deste espectro, a instruo % descartada.
e voce pe.ar esta mesma mquina e in,ormar 4 !"# que o modo de escrita % (;rite throu.( @ escrever duranteA , a !"# no mais uti$izar o /it su1o e este /it servir para armazenar instruBes de endereamento. Muito /em... a C=> vai ao cache e v2 se existe a instruo, se houver e$e pe.a e usa. e nao houver, e$e /usca na +AM, escreve no cache e usa.
Ce1a que desta ,orma um cic$o ,oi atrasado no processamento @ a escrita duranteA. e a instruo que est num $oca$ de endereamento acima dos 67 M/ @ $imite da )A* em D(! A ,ica no cache, escrita e disponEve$, ou se1a3 0st cacheadaF . G simp$es.... a di,erena de modos de escrita % 1ustamente o que provoca a diminuio de ve$ocidade no processo.
6ehehe eu lembro dessa discuss+o entre voc4 e o NgenioN (que deus o tenha onde ele estiver :;*
Eas voltando aos velhos tempos (lembra daquela discuss+o da formata3+o f#sica, ehehe 8;*, novamente tenho que discordar das suas ideias, veja8
. espectro cachevel ' determinado por - fatores8
a* a capacidade do chipset e b*a quantidade de memria Pag.
Assim como a quantidade m)ima de memria Ram que poder ser usada na mquina ' determinada pelo processador e pelo chipset. Isando um /entium &GG montado sobre uma placa m+e com chipset iG9 O2 como e)emplo, poder#amos usar at' &-! EF de memria Ram nesta mquina.
;Eas por que se o /entium suporta gigas de memria>
Apesar do processador suportar essa quantidade enorme de memria, o chipset O2 continua suportando apenas &-! EF, limitando a quantidade de memria que poder ser usada na maquina a &-!. Note que neste e)emplo, pouco importaria se o processador pudesse acessar ! 5F, &" PF, PF ou &-! EF, pois a quantidade m)ima de memria continuaria limitada pelo chipset a apenas &-! EF.
Ooltando ao assunto principal, alterando o modo de escrita, estar#amos diminuindo a efici4ncia do cache, mas liberando Pag Ram, o que permitiria aumentar o espectro cachevel, este foi o seu racioc#nio. /or'm neste caso os " EF n+o s+o determinados pela quantidade de Pag, e sim pela arquitetura do chipsetX /ouco importa qual fosse a quantidade de memria cache que voc4 usasse numa placa m+e com chipset O2, ou o modo de leitura que voc4 usasse, o espectro cachevel continuaria limitado a " EF (desde que vc usasse a quantidade m#nima de Pag claro, caso contrario seria menos*, ' uma limita3+o da arquitetura do chipset e n+o da Pag Ram, assim como o /entium acessa no m)imo 5F de memria independentemente de qualquer outro fator.
No caso de outros chipsets, como o 62, a arquitetura do chipset permite um espectro cachevel de mais de " EF (?&- no 62*, neste caso sim, a sua ideia poderia funcionar, caso a quantidade de memria Pag fosse pequena. Eas repito, no caso do O2 a limita3+o ' da arquitetura do chipset, mesmo que vc usasse ?99 terabCtes de PA5 em modo Qrite FacH o espectro cachevel continuaria sendo " EF, por limita3+o da arquitetura destes modelos obsoletos de chipset.
Mensagem 3
Apartir desta mensagem eu passei a responder as mensagens do %upini trecho;a; trecho, os trechos das mensagens do %upini est+o em azul. De$$, ;e$$, ;e$$... A )A* % a contro$adora dos /ancos de memria cache. Ce1a que em minha ms. anterior eu disse que 3 0 a !"# enxer.a e identi,ica as memrias, e$as so cacheveis
/Y %upini, vc t fazendo uma confus+o dos diabos, a Pag n+o controla nada, ele ' simplesmente um espa3o que o controlador de memria cache usa para escrever os endere3os a serem cacheados.
/or e)emplo, digamos que vc compre uma agenda para guardar telefones, com espa3o suficiente para anotar &9.999 telefones. Ztimo, algu'm com muitos contatos talvez enchesse a agenda em poucos dias, mas digamos que vc tenha apenas " telefones para colocar nessa agenda, que n+o conhe3a mais ningu'm. A agenda continuaria com espa3o pra mais uma porrada de telefones, mas como vc estaria NlimitadoN a " telefones, este espa3o ficaria vago. Note que a agenda n+o escreve nem controla nada, ' um objeto inanimado, apenas um meio para vc n+o esquecer os telefones, quem escreve os telefones ' vc.
Uimilarmente, a memria Pag, como toda memria, serve apenas para que o controlador do cache (embutido no chipset* anote e n+o Nesque3aN os endere3os dos dados cacheados, mas ele por si s n+o faz absolutamente nada, simplesmente obedece as ordens do controlador do cache. Ue o controlador for capaz de en)ergar apenas " megas de memria ent+o n+o importa se o Pag ' suficiente para &9.999 megas, simplesmente o espa3o ficar vago, assim como no e)emplo da agenda n+o adiantaria comprar uma agenda maior, j que vc est NlimitadoN a " telefones.
No a e,ici2ncia, mas sim o tempo de execuo do processo da C=>? 1 que necessitaria de mais um cic$o para depois ir para a C=>.
Acho que vc ainda est fazendo confus+o, quer dizer que um cache Qrite Phrough ' t+o eficiente quanto um cache Qrite FacH, apenas ocupando um pouco mais o processador>
Qrite Phrough8
,sse tipo de memria cache funciona apenas no modo de leitura, apenas quando o processador precisa consultar os dados contidos na RAE. <uando ' preciso escrever os dados, ' usado o processo convencional, envolvendo os eventuais estados de espera da RAE principal. ,ste ' um tipo obsoleto de cache encontrado apenas em placas mais antigas ou de bai)a qualidade.
Qrite FacH8
Isado nas placas de melhor qualidade, este cache funciona tanto no modo de leitura quanto no modo de escrita. ,sta caracter#stica ' suficiente para melhorar perceptivelmente o desempenho do sistema. <uando o processador precisa escrever um determinado dado, o sinal ' interceptado pelo chipset, que ao inv's de escrever este dado na lenta memria Ram, o escreve no cache, que ' muito mais rpido, perdendo menos tempo com a opera3+o e ficando livre para a pr)ima ordem.
,sta ' a diferen3a. N+o tem nada a ver com tempo de utiliza3+o do processador ou com o espectro cachevel. Apenas o cache ' implementado de maneira diferente
Nananinan.... o que determina a quantidade de endereos possEveis de ser cacheados % a arquitetura da )A*. 0 se a )A* pudesse cachear (Drite !ac<( at% 8 )/ mas o chipset no, e$a simp$esmente ,icaria com capacidade ociosa.
0dem ao primeiro pargrafo. Apesar da memria Pag determinar [a quantidade m)ima de memria que poder ser cacheada[, a quantidade que [efetivamente ser cacheada[ depende da efici4ncia do chipset. Ue vc s conhece " pessoas n+o adianta comprar uma agenda para ?9.999 telefones...
concordo nisso se o chipset tivesse esta $imitao, mas no % caso das CH, cu1o chipset ,oi dimensionado para aceitar at% 89: M/ de +AM usandoIse um pente de J89 K/ =ipe$ine !urst Lnchronous cache. Oc n+o entendeu %upini, dentro do chipset, o controlador de cache e o controlador de acesso A memria s+o dois circuitos distintos, com funcionamento independente. %embre;se que o chipset n+o ' apenas um chip, mas sim um conjunto de vrios chips, da# o nome NchipsetN. W perfeitamente normal, levando;se em conta o fator econmico, e tbm estrat'gia de mercado que num chipset se use um controlador de memria capaz de endere3ar &-! EF de memria e um controlador de cache capaz de cachear apenas " EF desta memria. Ue vc der uma olhada em especifica3Des t'cnicas de vrios chipsets vai perceber isso.
Mensagem 4
Como M$tima ms. neste thread 3 )A* +AM I % o Endice das in,ormaBes contidas no cache /an<. @ ou chip de memria cacheA
A sua defini3+o est correta, eu s gostaria de refor3ar que (como e)pliquei na outra mensagem* a Pag Ram ' apenas uma lista de endere3os. <uem ir escrever os endere3os nesta lista ' o chipset. A quantidade de Pag Ram determina apenas o m)imo de memria que o chipset (independente de qual fosse* poderia cachear, a quantidade de memria que ser realmente cacheada depender por'm da capacidade do chipset, como no e)emplo da agenda...
# modo como este Endice % uti$izado @ nas memrias e mquinas mais anti.asA % determinado pe$o 0)>= do !"#. Uim, geralmente voc4 encontrar no Uetup op3Des referentes A velocidade de opera3+o do cache, e em maquinas mais antigas, tamb'm op3Des relacionadas ao m'todo de escrita utilizado. /or'm, vc se esqueceu que o que determina a presen3a destas op3Des no Uetup s+o os recursos do chipset, se o chipset s ' capaz de usar o m'todo Qrite Phrough (um chipset antigo* ent+o n+o vai ter op3+o do Fios que o faca usar o cache como Qrite FacH...
No existe tipo de memria (;rite qua$quer coisa ( , mas to somente o modo como o cache /an< ser uti$izado. e .rava durante ou depois da uti$izao pe$a C=>, da requisio da instruo. # modo =ipe$ine !urst mais moderno, uti$iza um m%todo a$eatrio de preenchimento de /its, @ e$es mudam de estado constantemente e se a C=> der sorte aumenta a ve$ocidade em JNO. A,ina$ s existem dois estados.
1laro, o cache /ipeline Furst ' substancialmente mais rpido do que os caches ass#ncronos usados at' certo tempo atrs.
Nas mquinas mais novas, @ o que no ,oi o caso da per.unta que ori.inou o threadA o m%todo quase sempre % ,eito por =ipe$ine !urst sinchronous (;rite( 1orreto, o uso de caches ass#ncronos em maquinas modernas causaria uma queda brutal no desempenho, pois com bus de "" mhz estes caches funcionariam com temporiza3+o G;-;-;-, com bus de &99 mhz a temporiza3+o seria ;G;G;G, quase a velocidade de uma memria /c;&99 comum... 8;*
Nas mquinas anti.as, voce tem a opo de aumentar o /anco de cache, uti$izando para isso uma ta/e$a ,ornecida pe$o ,a/ricante da p$aca, e em (todos( estes casos @ excetuandoIse quando usado o pente pipe$ineA voce tinha que trocar a )A* +AM que % o chip contro$ador das memrias cache, chip este @ o$hem os proprietrios de mquinas mais anti.asA menor que os outros e que norma$mente ,ica ao $ado do cache /an<. 0sso ' obvio %upini, se vc aumenta a quantidade de cache, claro que voc4 ter que aumentar tamb'm a quantidade de memria Pag, mas eu n+o entendi o que isso tem a ver com o que estvamos discutindo... A/raos. ps3 tenho um monte de sucatas aquE, e ,ao um monte de testes com e$as, daE minha certeza que o excesso de memria cacheve$ em modo (/ac<( torna mais rpido o computador quando em modo ( throu. (. N+o e)iste nenhuma e)plica3+o para a mquina ficar mais rpida usando cache Phrough, mesmo operando com e)cesso de Ram, j que a $nica diferen3a entre estes dois tipos de modo de leitura ' o fato de um cachear apenas as opera3Des de leitura e o outro cachear tanto as opera3Des de leitura quanto as de escritas. 1omo o espectro cachevel continua o mesmo, a $nica coisa que vc conseguiria mudando o modo de opera3+o do cache seria uma pequena queda de performance. Ma3a uns benchmarHs nessas maquinas que vc vai ver isso.
Mensagem 5
,sta mensagem foi postada pelo 6enrique durante nossa discuss+o, a seguir est a minha resposta a ela8
Penrique !ranco ;rote3
Q que esto ,a$ando em cacheamento de +AM, pq nos processadores $ot #ne % possEve$ usar at% 7*/ de memria- At% mesmo num Ce$eron, que nem cache tem... ,m se tratando de /entium 00 \ 1ia o cacheamento da memria ' feito pelo controlador de cache embutido no prprio cartucho do processador, e n+o pelo chipset. . /;00 e o 1eleron A (com cache* s+o capazes de cachear at' ?&- EF de. A quantidade m)ima suportada ' 5F pelo /00 e 1eleron e ! 5F pelo 2eon /orem, como a quantidade m)ima de memria fica limitada tamb'm pelo chipset, temos8
& 5F com o chipset M2 (& 5F de memria M/E ou ,T., j que o M2 n+o suporta memrias Udram*, ?&- de Udram ou & 5F de ,T. com o chipset %2, ?&- EF com o ,2, & 5F com o F2, - 5F com o 52, e finalmente ! 5F com o i?9 N2, lembrando que o i?9 N2 ' um chipset e)clusivo para o 2eon. Ooltando ao assunto principal, so para concluir a minha discuss+o com o %upini8
Na verdade quem cacheia a memria n+o ' o processador, e sim o chipset, o processador apenas diz Ndeposite na RamN ou Nleia na RamN o controlador de cache embutido no chipset (ou no cartucho do processador no caso do /entium 00 \ 1ia* ' que intercepta esses comandos, escrevendo os dados no cache, ou lendo os dados do cache, que obviamente ' mais rpido do que a memria Ram. 1laro que o controlador de cache possui um limite de quanta memria Ram ' capaz de en)ergar, assim como o prprio processador ' limitado a 5F de Ram. . quanto de memria que o controlador de cache ' capaz de en)ergar ' informada nas especifica3Des de cada chipset, sendo que o controlador embutido no cartucho do /;00 cacheia ?&- EF. No caso do iG9O2 por e)emplo, o limite do circuito controlador do cache ' de " EF, isso significa que ele s en)erga " EF de Ram, isso independente da quantidade de Pag, ' uma limita3+o T,%,. Ue o processador pede um dado gravado no V&] megabCte da Ram por e)emplo, ele simplesmente vai ignorar a ordem, pois para ele o V&] megabCte n+o e)iste, passando a tarefa para o controlador da memria, que no caso do iG9 O2 Nen)ergaN at' &-! EF de Ram, que por sua vez ira retirar o dados diretamente da lenta Ram. Neste caso o cache ser usado apenas quando for solicitada a leituraSescrita de dados at' o "] megabCte da memria, acima disso quem vai fazer o trabalho ' o prprio controlador de memria, que ira escreverSler os dados diretamente na Ram.