|
[08/08]
:. Snowl promete centralizar leitura de mensagens no Firefox [08/08] :. Asus revela S101, a versão requintada do Eee PC [08/08] :. Nehalem deverá ter nome comercial 'Core i7' [07/08] :. Resumo do dia [07/08] :. Toshiba anuncia memória flash NAND de 32 GB para portáteis [07/08] :. Port do Mozilla Firefox para Qt [07/08] :. Novo sensor flexível para câmeras digitais imita retina [07/08] :. Independência de resolução chegando ao GTK+ [07/08] :. OCZ lança kits de memória para P45 de 8 e 16 GB [06/08] :. Windows XP rodando no XO, do OLPC, na prática [06/08] :. Cursos Linux no GDH: vagas abertas [06/08] :. Resumo do dia [06/08] :. Ultamatix, o sucessor do Automatix [06/08] :. Linux dominará portáteis em 2013, segundo ABI [06/08] :. IBM anuncia novos produtos e iniciativas para Linux :. Mais noticias » |
Apesar de todos os processadores apartir do 486 possuírem uma pequena quantidade de cache incorporado ao próprio núcleo do processador, chamado de cache primário ou L1, ele é muito pequeno (justamente pelas memórias usadas no cache L1 serem extremamente caras), e por isso, usamos também uma quantidade um pouco mais generosa de tipos um pouco mais baratos de memória cache na placa mãe. Este cache é chamado de cache secundário, ou L2. O circuitos que controlam o cache primário, são incorporados ao próprio núcleo do processador, enquanto os circuitos que controlam o funcionamento do cache L2 são localizados no chipset, que por sua vez fica localizado na placa mãe. Os processadores Pentium II, Celeron e Xeon são a exceção a esta regra, pois neles o cache L2 e seus circuitos controladores fazem parte do próprio cartucho do processador. O cache L1 e o cacha L2 trabalham conjuntamente, formando uma espécie de escada de três degraus para os dados. Inicialmente, o programa é carregado na memória Ram. Conforme o processador for requisitando dados referentes ao programa aberto, estes dados vão sendo armazenados no cache L2, sendo os dados mais requisitados armazenados no cache L1. No livro Guia de Hardware Completo, eu uso como exemplo um secretário de uma companhia de seguros: Imagine que o serviço deste secretário seja atender 10.000 clientes da seguradora que ligam esporadicamente. Cada cliente possui uma ficha (imaginemos que seja uma companhia pobre que não tenha dinheiro para comprar computadores, ehehe ;-) sendo que todas as 10.000 fichas estão organizadas num grande arquivo do outro lado da sala. Quando um cliente liga, o secretário (que tal se o chamássemos de Joã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 razoável. Com o passar do tempo, João percebe que dos 10.000 clientes, 50 ligam com mais freqüência. Como ele não é nada bobo, ele coloca um pequeno fichário sobre a mesa, e nele guarda as fichas destes 50 clientes que são responsáveis pela maioria dos chamados. Quando um destes clientes ligar, João poderá localizar sua ficha em muito menos tempo, já que elas já estarão sobre sua mesa. Enquanto estiver atendendo o cliente, ele manterá sua ficha à mão, para que possa atender imediatamente a qualquer solicitação. O grande arquivo ilustra a memória Ram, onde todos os programas abertos são carregados, o pequeno fichário sobre a mesa ilustra o cache L2, que armazena os dados usados com mais freqüência pelo processador, enquanto a ficha que é mantida à mão enquanto o cliente é atendido, ilustra o cache L1, que é brutalmente mais rápido do que a memória Ram e mesmo do que o cache L2, apesar do seu tamanho reduzido não permitir a armazenagem de muitos dados, assim como não é possível (pelo menos no exemplo) manter mais do que uma ficha à mão ao mesmo tempo. Cache L1 e o Limite de Cacheamento
Na maioria dos processadores atuais, entre eles o Pentium II, o K6 e o 6x86 da Cyrix, o cache L1 é subdividido em duas sessões, do mesmo tamanho. Num 6x86 MX que possui 64 KB de cache L1 por exemplo, temos duas sessões de 32 kb cada uma. Um sessão se destina a armazenar dados usados pelo programa, enquanto a outra se destina a armazenar instruções Para ilustrar este procedimento, vou escrever um pequeno programa em pseudocódigo, que escreve os números pares entre 0 e 100: x: inteiro Inicio x=0 enquanto (x<100) faça: x=x+2 Escreva x Fim enquanto Fim Neste programa, o x é uma variável, que irá armazenar um numero (dados) enquanto a função "enquanto", é uma instrução. Caso este pequeno programa fosse compilado usando-se alguma linguagem de programação, e fosse executado, a instrução "enquanto" seria armazenada em uma sessão do cache L1, enquanto o valor de x, que representa os dados seria gravada na outra sessão do cache. Em programas maiores vale o mesmo princípio, apenas em escala maior. Esta divisão do cache L1 aumenta sua eficiência. Uma coisa interessante sobre o funcionamento do cache, é que os controladores da memória Ram e do cache são separados. Alguns chipsets mais antigos, como o i430FX, o i430VX, e o i430TX possuem um problema quanto ao cacheamento da memória Ram, pois apesar de possuírem controladores de memória capazes de acessar 128 MB de Ram (no caso do i430FX e do i430VX) ou 256 MB (no caso do i430TX) possuem controladores de memória cache capazes de acessar apenas 64 MB de memória. Mesmo usando os 128 ou 256 MB de memória suportados pelo controlador da memória Ram, apenas os primeiros 64 MB seriam cacheados. quando o processador precisasse ler ou escrever algum dado em algum endereço de memória acima de 64 MB, não poderia contar com a ajuda do cache L1, perdendo tempo devido à baixíssima velocidade das memórias. Para piorar as coisas, o Windows 95/98, assim como o Dos acessa a memória apartir do final. Ou seja, primeiro seriam usados todos os endereços que não são atendidos pelo cache, para apenas depois que todos estivessem ocupados usar os primeiros 64 MB atendidos cacheados. Sem dúvida, neste caso, aumentar a quantidade de memória Ram acima de 64 MB, iria diminuir o desempenho do micro ao invés de aumenta-lo, a menos é claro, que você rodasse algum programa pesado o suficiente para ocupar toda a memória Ram disponível, como algum editor de vídeo, já que mesmo não cacheada, a memória Ram sempre será infinitamente mais rápida do que memória virtual em disco. Vale lembrar que este problema só ocorre em chipsets mais antigos. No caso de chipsets usados em placas mãe Super-7, como o Via Apollo MVP3, o Ali Aladdin V e o SIS 530 a quantidade de memória Ram suportada é de 128 ou 256 MB, enquanto o controlador de cache L2 do Pentium II é capaz de cachear até 512 MB de memória Ram. A algum tempo atrás, discuti durante algum tempo no news de hardware do Uol este assunto com o Lupini. Pelo 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 memória cache, e o limite de cacheamento dos chipsets antigos será explicada com mais detalhes. Espero que tenham paciência para ler tudo ;-) As mensagens escritas pelo Lupini estão em Azul, enquanto as mensagens escritas por mim estão em preto. Mensagem 1
Primeira Mensagem do Lupini: Atenção Leo, mais uma vez vou repetir. Não interessa a quantidade de memória existente na máquina. Se o BIOS ler esta memória ela é cacheável. O que muda é o MODO de escrita/leitura, pois sempre os dados estarão no cache. Ou voce acredita que "acima" dos limites da TAG RAM a memória fica sozinha sendo lida pelo processador sem ser escrita no cache? Minha primeira mensagem em resposta à mensagem anterior do Lupini (como vocês podem ver caí de para-quedas na conversa, ehehehe ;-) No caso dos chipsets i430TX, i430VX, i430FX e equivalentes, o problema não era nem a quantidade de memória Cache nem a quantidade de memória Tag, e sim uma limitação do próprio chipset. Dentro do chipset os controladores da memória e os circuitos responsáveis por cachear a memória são independentes. No caso destes chipsets ultrapassados, o controlador do cache só enxergava 64 MB, enquanto o controlador da memória suportava um pouco mais de memória, 128 no caso do VX por exemplo. Vc pode colocar a quantidade de memória Tag ou cache que vc quiser nesses chipsets que o controlador só vai enxergar 64 MB, não copiando para o cache um único bit das áreas de memória acima disso. É a mesma coisa que acontece com o chipset e o processador. Qualquer processador apartir do 386 suporta o uso de até 4 GB de memória Ram. Por que não posso usar tudo isso de memória na minha VX então? Por que o chipset só enxerga 128 MB de memória. No caso do cache é a mesma coisa, apesar do controlador da memória suportar 128 MB, o controlador de cache só enxerga e cacheia 64, o que você colocar de memória acima disso não vai ser coberta pelo cache. O modo de escrita/leitura (write back, write trough, etc.) não tem nada a ver com o espectro cacheável, simplesmente com a eficiência do cache. Mensagem 2
Mensagem 2
Não é isso naum Baga... o que determina essa possibilidade de cachear toda a memória é o modo de escrita nela. Este assunto já foi mais que discutido no tempo do "gênio" e eu continuo afirmando que: Se voce utiliza o modo "escrever atrás/depois" voce realmente fica limitado à capacidade da TAG. Mas se voce utiliza o modo "escrever durante o processo" a memória cache fica com a informação de qualquer parte da memória RAM. O processo desta mecânica é simples: suponha uma TAG que cacheia 64MB, num computador com 128 MB. Esta TAG foi informada pela BIOS que o modo de escrita é "write back" / escrever após, e para isso ela utiliza o bit sujo. Muito bem... a CPU precisa de uma instrução e vai no cache, pega a instrução se lá estiver e usa. Se não estiver no cache, a CPU vai na RAM e pega; usa e depois escreve no cache, se o endereço de memória estiver dentro do espectro cacheável, ou seja, dentro dos 64 MB cacheáveis. Se o endereço de memória estiver fora deste espectro, a instrução é descartada. Se voce pegar esta mesma máquina e informar à BIOS que o modo de escrita é "write throug" ( escrever durante) , a BIOS não mais utilizará o bit sujo e este bit servirá para armazenar instruções de endereçamento. Muito bem... a CPU vai ao cache e vê se existe a instrução, se houver ele pega e usa. Se nao houver, ele busca na RAM, escreve no cache e usa. Veja que desta forma um ciclo foi atrasado no processamento ( a escrita durante). e a instrução que está num local de endereçamento acima dos 64 Mb ( limite da TAG em W"B ) fica no cache, escrita e disponível, ou seja: Está cacheada! . É simples.... a diferença de modos de escrita é justamente o que provoca a diminuição de velocidade no processo. Hehehe eu lembro dessa discussão entre você e o "genio" (que deus o tenha onde ele estiver ;-) Mas voltando aos velhos tempos (lembra daquela discussão da formatação física, ehehe :-), novamente tenho que discordar das suas ideias, veja: O espectro cacheável é determinado por 2 fatores: a) a capacidade do chipset e b)a quantidade de memória Tag. Assim como a quantidade máxima de memória Ram que poderá ser usada na máquina é determinada pelo processador e pelo chipset. Usando um Pentium 133 montado sobre uma placa mãe com chipset i430 VX como exemplo, poderíamos usar até 128 MB de memória Ram nesta máquina. -Mas por que se o Pentium suporta 4 gigas de memória? Apesar do processador suportar essa quantidade enorme de memória, o chipset VX continua suportando apenas 128 MB, limitando a quantidade de memória que poderá ser usada na maquina a 128. Note que neste exemplo, pouco importaria se o processador pudesse acessar 8 GB, 16 TB, 4 TB ou 128 MB, pois a quantidade máxima de memória continuaria limitada pelo chipset a apenas 128 MB. Voltando ao assunto principal, alterando o modo de escrita, estaríamos diminuindo a eficiência do cache, mas liberando Tag Ram, o que permitiria aumentar o espectro cacheável, este foi o seu raciocínio. Porém neste caso os 64 MB não são determinados pela quantidade de Tag, e sim pela arquitetura do chipset! Pouco importa qual fosse a quantidade de memória cache que você usasse numa placa mãe com chipset VX, ou o modo de leitura que você usasse, o espectro cacheável continuaria limitado a 64 MB (desde que vc usasse a quantidade mínima de Tag claro, caso contrario seria menos), é uma limitação da arquitetura do chipset e não da Tag Ram, assim como o Pentium acessa no máximo 4 GB de memória independentemente de qualquer outro fator. No caso de outros chipsets, como o HX, a arquitetura do chipset permite um espectro cacheável de mais de 64 MB (512 no HX), neste caso sim, a sua ideia poderia funcionar, caso a quantidade de memória Tag fosse pequena. Mas repito, no caso do VX a limitação é da arquitetura do chipset, mesmo que vc usasse 500 terabytes de TAG em modo Write Back o espectro cacheável continuaria sendo 64 MB, por limitação da arquitetura destes modelos obsoletos de chipset. Mensagem 3
A partir desta mensagem eu passei a responder as mensagens do Lupini trecho-a-trecho, os trechos das mensagens do Lupini estão em azul. Well, well, well... A TAG é a controladora dos bancos de memória cache. Veja que em minha msg anterior eu disse que : SE a BIOS enxerga e identifica as memórias, elas são cacheáveis Pô Lupini, vc tá fazendo uma confusão dos diabos, a Tag não controla nada, ele é simplesmente um espaço que o controlador de memória cache usa para escrever os endereços a serem cacheados. Por exemplo, digamos que vc compre uma agenda para guardar telefones, com espaço suficiente para anotar 10.000 telefones. Ótimo, alguém com muitos contatos talvez enchesse a agenda em poucos dias, mas digamos que vc tenha apenas 64 telefones para colocar nessa agenda, que não conheça mais ninguém. A agenda continuaria com espaço pra mais uma porrada de telefones, mas como vc estaria "limitado" a 64 telefones, este espaço 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. Similarmente, a memória Tag, como toda memória, serve apenas para que o controlador do cache (embutido no chipset) anote e não "esqueça" os endereços dos dados cacheados, mas ele por si só não faz absolutamente nada, simplesmente obedece as ordens do controlador do cache. Se o controlador for capaz de enxergar apenas 64 megas de memória então não importa se o Tag é suficiente para 10.000 megas, simplesmente o espaço ficará vago, assim como no exemplo da agenda não adiantaria comprar uma agenda maior, já que vc está "limitado" a 64 telefones. Não a eficiência, mas sim o tempo de execução do processo da CPU; já que necessitaria de mais um ciclo para depois ir para a CPU. Acho que vc ainda está fazendo confusão, quer dizer que um cache Write Through é tão eficiente quanto um cache Write Back, apenas ocupando um pouco mais o processador? Write Through: Esse tipo de memória cache funciona apenas no modo de leitura, apenas quando o processador precisa consultar os dados contidos na RAM. Quando é preciso escrever os dados, é usado o processo convencional, envolvendo os eventuais estados de espera da RAM principal. Este é um tipo obsoleto de cache encontrado apenas em placas mais antigas ou de baixa qualidade. Write Back: Usado nas placas de melhor qualidade, este cache funciona tanto no modo de leitura quanto no modo de escrita. Esta característica é suficiente para melhorar perceptivelmente o desempenho do sistema. Quando o processador precisa escrever um determinado dado, o sinal é interceptado pelo chipset, que ao invés de escrever este dado na lenta memória Ram, o escreve no cache, que é muito mais rápido, perdendo menos tempo com a operação e ficando livre para a próxima ordem. Esta é a diferença. Não tem nada a ver com tempo de utilização do processador ou com o espectro cacheável. Apenas o cache é implementado de maneira diferente Nananinaná.... o que determina a quantidade de endereços possíveis de ser cacheados é a arquitetura da TAG. E se a TAG pudesse cachear "Write Back" até 1 Tb mas o chipset não, ela simplesmente ficaria com capacidade ociosa. Idem ao primeiro parágrafo. Apesar da memória Tag determinar *a quantidade máxima de memória que poderá ser cacheada*, a quantidade que *efetivamente será cacheada* depende da eficiência do chipset. Se vc só conhece 64 pessoas não adianta comprar uma agenda para 50.000 telefones... Só concordo nisso se o chipset tivesse esta limitação, mas não é caso das VX, cujo chipset foi dimensionado para aceitar até 128 Mb de RAM usando-se um pente de 512 Kb Pipeline Burst Synchronous cache. Vc não entendeu Lupini, dentro do chipset, o controlador de cache e o controlador de acesso à memória são dois circuitos distintos, com funcionamento independente. Lembre-se que o chipset não é apenas um chip, mas sim um conjunto de vários chips, daí o nome "chipset". É perfeitamente normal, levando-se em conta o fator económico, e tbm estratégia de mercado que num chipset se use um controlador de memória capaz de endereçar 128 MB de memória e um controlador de cache capaz de cachear apenas 64 MB desta memória. Se vc der uma olhada em especificações técnicas de vários chipsets vai perceber isso. Mensagem 4
Como última msg neste thread : TAG RAM - é o índice das informações contidas no cache bank. ( ou chip de memória cache) A sua definição está correta, eu só gostaria de reforçar que (como expliquei na outra mensagem) a Tag Ram é apenas uma lista de endereços. Quem irá escrever os endereços nesta lista é o chipset. A quantidade de Tag Ram determina apenas o máximo de memória que o chipset (independente de qual fosse) poderia cachear, a quantidade de memória que será realmente cacheada dependerá porém da capacidade do chipset, como no exemplo da agenda... O modo como este índice é utilizado ( nas memórias e máquinas mais antigas) é determinado pelo SETUP do BIOS. Sim, geralmente você encontrará no Setup opções referentes à velocidade de operação do cache, e em maquinas mais antigas, também opções relacionadas ao método de escrita utilizado. Porém, vc se esqueceu que o que determina a presença destas opções no Setup são os recursos do chipset, se o chipset só é capaz de usar o método Write Through (um chipset antigo) então não vai ter opção do Bios que o faca usar o cache como Write Back... Não existe tipo de memória "write qualquer coisa " , mas tão somente o modo como o cache bank será utilizado. Se grava durante ou depois da utilização pela CPU, da requisição da instrução. O modo Pipeline Burst mais moderno, utiliza um método aleatório de preenchimento de bits, ( eles mudam de estado constantemente e se a CPU der sorte aumenta a velocidade em 50%. Afinal só existem dois estados. Claro, o cache Pipeline Burst é substancialmente mais rápido do que os caches assíncronos usados até certo tempo atrás. Nas máquinas mais novas, ( o que não foi o caso da pergunta que originou o thread) o método quase sempre é feito por Pipeline Burst sinchronous "write" Correto, o uso de caches assíncronos em maquinas modernas causaria uma queda brutal no desempenho, pois com bus de 66 mhz estes caches funcionariam com temporização 3-2-2-2, com bus de 100 mhz a temporização seria 4-3-3-3, quase a velocidade de uma memória Pc-100 comum... :-) Nas máquinas antigas, voce tem a opção de aumentar o banco de cache, utilizando para isso uma tabela fornecida pelo fabricante da placa, e em "todos" estes casos ( excetuando-se quando usado o pente pipeline) voce tinha que trocar a TAG RAM que é o chip controlador das memórias cache, chip este ( olhem os proprietários de máquinas mais antigas) menor que os outros e que normalmente fica ao lado do cache bank. Isso é obvio Lupini, se vc aumenta a quantidade de cache, claro que você terá que aumentar também a quantidade de memória Tag, mas eu não entendi o que isso tem a ver com o que estávamos discutindo... Abraços. ps: tenho um monte de sucatas aquí, e faço um monte de testes com elas, daí minha certeza que o excesso de memória cacheável em modo "back" torna mais rápido o computador quando em modo " throug ". Não existe nenhuma explicação para a máquina ficar mais rápida usando cache Through, mesmo operando com excesso de Ram, já que a única diferença entre estes dois tipos de modo de leitura é o fato de um cachear apenas as operações de leitura e o outro cachear tanto as operações de leitura quanto as de escritas. Como o espectro cacheável continua o mesmo, a única coisa que vc conseguiria mudando o modo de operação do cache seria uma pequena queda de performance. Faça uns benchmarks nessas maquinas que vc vai ver isso. Mensagem 5
Esta mensagem foi postada pelo Henrique durante nossa discussão, a seguir está a minha resposta a ela: Henrique Branco wrote: Já que estão falando em cacheamento de RAM, pq nos processadores Slot One é possível usar até 4Gb de memória? Até mesmo num Celeron, que nem cache tem... Em se tratando de Pentium II & Cia o cacheamento da memória é feito pelo controlador de cache embutido no próprio cartucho do processador, e não pelo chipset. O P-II e o Celeron A (com cache) são capazes de cachear até 512 MB de. A quantidade máxima suportada é 4 GB pelo PII e Celeron e 8 GB pelo Xeon Porem, como a quantidade máxima de memória fica limitada também pelo chipset, temos: 1 GB com o chipset FX (1 GB de memória FPM ou EDO, já que o FX não suporta memórias Sdram), 512 de Sdram ou 1 GB de EDO com o chipset LX, 512 MB com o EX, 1 GB com o BX, 2 GB com o GX, e finalmente 8 GB com o i450 NX, lembrando que o i450 NX é um chipset exclusivo para o Xeon. Voltando ao assunto principal, so para concluir a minha discussão com o Lupini: Na verdade quem cacheia a memória não é o processador, e sim o chipset, o processador apenas diz "deposite na Ram" ou "leia na Ram" o controlador de cache embutido no chipset (ou no cartucho do processador no caso do Pentium II & Cia) é que intercepta esses comandos, escrevendo os dados no cache, ou lendo os dados do cache, que obviamente é mais rápido do que a memória Ram. Claro que o controlador de cache possui um limite de quanta memória Ram é capaz de enxergar, assim como o próprio processador é limitado a 4GB de Ram. O quanto de memória que o controlador de cache é capaz de enxergar é informada nas especificações de cada chipset, sendo que o controlador embutido no cartucho do P-II cacheia 512 MB. No caso do i430VX por exemplo, o limite do circuito controlador do cache é de 64 MB, isso significa que ele só enxerga 64 MB de Ram, isso independente da quantidade de Tag, é uma limitação DELE. Se o processador pede um dado gravado no 71º megabyte da Ram por exemplo, ele simplesmente vai ignorar a ordem, pois para ele o 71º megabyte não existe, passando a tarefa para o controlador da memória, que no caso do i430 VX "enxerga" até 128 MB 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 leitura/escrita de dados até o 64º megabyte da memória, acima disso quem vai fazer o trabalho é o próprio controlador de memória, que ira escrever/ler os dados diretamente na Ram.
» Gostou do texto? Veja nossos livros impressos
|