• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Como o Windows Mobile Gere a Memória

M

MMAD

Visitante
O objectivo deste tópico é discutir os tipos de memória em uso nos mobile WM actuais, as suas características, vantagens e desvantagens.

Assumimos algum conhecimento prévio, principalmente sobre os tipos de memórias existentes, mas tentaremos ser o mais abrangente possível, sem no entanto, aprofundar demais a discussão impossibilitando assim sua leitura por usuários com pouco conhecimento na área.

Conceitos básicos:

Os dispositivos actuais possuem dois tipos de memória: memória ROM e memória RAM.
A memória ROM (Read-Only Memory), ou, memória somente de leitura, recebeu esta denominação obviamente pelo facto de apenas poder ser lido o seu conteúdo, ou seja, não deveriam ser usadas para escrita de dados, os dados eram escritos uma única vez e a partir daí apenas lidos.
Ora, porquê usar uma memória em que não podemos gravar dados?
A resposta é simples: porque esses dados permanecerão gravados nessa memória mesmo que a mesma não receba alimentação.

As primeiras memórias desse tipo funcionavam exactamente com essa filosofia, eram gravadas na fábrica e nunca alteradas, elas evoluíram e receberam várias denominações, ROM, PROM, EPROM, EEPROM e finalmente Flash-ROM (normalmente chamada de memória flash).
Não detalharemos a evolução, mas a memória que nos interessa (Flash memory), permite a regravação em blocos, este é o tipo de memória ROM que existe nos nossos PDA, a sua principal qualidade é poder manter os dados nela armazenados sem necessidade de alimentação, e o seu principal problema é o tempo necessário para gravação/regravação dos dados.

A memória RAM (Random Access Memory) por outro lado, necessita alimentação constante sob pena de perda dos dados gravados, sendo a sua principal qualidade a velocidade de leitura e gravação.

Ora, porque então os fabricantes não usam somente memória ROM nos equipamentos?
Primeiro por causa da velocidade menor de leitura e gravação, segundo por uma característica de funcionamento que veremos em breve.

Essas características das memórias levaram os fabricantes a adoptarem a estratégia de colocar uma quantidade de ROM e uma quantidade de RAM nos dispositivos, como isso funciona? Simples: ao instalar um aplicativo ou mesmo o sistema operacional, eles são armazenados na memória ROM, isso exige que antes de executar um aplicativo, seu código seja carregado para a memória RAM de onde a execução será muito mais rápida, isso desconsiderando que as memórias ROM do tipo NAND não permitem mesmo que se execute um aplicativo lá gravado, essa limitação já foi superada com as ROM do tipo NOR que dão suporte a um mecanismo denominado XIP (Execute In Place) que permite que aplicativos executem directo da memória ROM, porém ainda não permite que dados sejam usados directamente da memória ROM pelo aplicativo em execução, ou seja, os dados que o programa manipula (não seu código) ainda devem estar na memória RAM.

Ora, bem lembrado, os dados... falamos dos aplicativos, que o seu código é gravado na memória ROM e por isso nunca se perde, mas e os dados? também são gravados na memória ROM? essa pergunta possui duas respostas: sim e não, até o surgimento do Windows Mobile 5 os dados eram gravados na memória RAM e por isso nós perdíamos todos os nossos dados quando nosso dispositivo ficava totalmente descarregado.

Vamos entender melhor isto (pré WM5):
Quando executamos o Contacts, por exemplo, e adicionamos um contacto à nossa lista, esses dados são gravados na memória RAM do equipamento e lá permanecem enquanto não gravarmos nada sobre eles ou até que o dispositivo fique totalmente sem energia, lembrem-se que a memória RAM necessita de alimentação constante, e esse é o principal motivo dos fabricantes serem tão parcimoniosos com a quantidade de memória RAM, a conta é simples, supondo um dispositivo com uma bateria de 1000mAh, cada 64MB de RAM consome aproximadamente 250mAh para manter seus dados por 72h e esse valor é linear, portanto um dispositivo com 128MB de RAM consome 500mAh para manter as mesmas 72h, já viram dispositivos com 256MB de RAM? simples entender porque, não? mas... porque a conta sendo feita com essas 72h isso é um numero mágico? havia um acordo entre a Microsoft e os fabricantes de hardware para os equipamentos que usariam o WM que eles deveriam garantir que os dispositivos fossem desligados quando a carga da bateria atingisse o nível que ainda conseguiria manter os dados na RAM por 72h; essa limitação foi resolvida com um mecanismo chamado Persistence Storage.

O WM5 utiliza o Persistence Storage para resolver essa questão, mas como isso funciona? bem, antes, ao atingir o ponto de carga combinado o sistema emitia o aviso de carga baixa e desligava seu dispositivo poupando bateria para energizar a RAM por 72h, o PS quebra essa barreira permitindo que você use toda a carga da sua bateria, como? gravando seus dados na ROM e não na RAM. O sistema agora pode permitir que você continue a usar o dispositivo até que a bateria realmente não possua mais carga, isso pode ser feito porque agora os seus dados estão seguros e não mais irão "evaporar" com a energia.
Então agora temos um mundo perfeito? nem tanto, o preço de armazenar os dados na ROM é o tempo gasto na leitura e escrita, lembre-se que o acesso a ROM é muito mais lento que o acesso a RAM, este é o factor que faz com que as pessoas que possuíam um dispositivo com versões anteriores e migraram para o WM5 sintam uma grande diferença de desempenho no mesmo aparelho.

Ao comprar um dispositivo lembre-se que a quantidade de ROM divulgada pelo fabricante não está totalmente disponível para seu uso, já que o próprio sistema operacional e todos os aplicativos padrão fornecidos pelo fabricante estarão previamente gravados lá, por isso alguns fabricantes usam o termo Storage, que é exactamente a área livre de memória ROM que o usuário pode dispor.

Portanto, ROM é a área de memória onde seus aplicativos e dados são gravados, quanto mais ROM, mais aplicativos e dados você poderá manter sem necessidade de dispositivos adicionais (cartões de memória, por exemplo). RAM é a área de memória que o equipamento usa para executar programas e armazenar os dados em uso por esses programas, quanto mais RAM, mais programas podem executar simultâneamente.

Memória ROM: NAND ou NOR?

Esses são os dois principais tipos de memória ROM em uso no mercado, bem, nós já sabemos que as ROM são mais lentas que as RAM então, ambas NAND e NOR são mais lentas que as RAM, mas ainda há diferença entre esses dois tipos de ROM, as NAND são mais rápidas para escrita e mais lentas para leitura, já as NOR inversamente são mais rápidas para leitura e mais lentas para escrita. Ora, até ai deu empate pois os dados lidos deverão ser gravados em algum momento... Os fabricantes tinham uma difícil decisão a tomar e supor se os dados seriam lidos mais vezes que escritos ou vice-versa. Bem, uma coisa que pode ajudar bastante na decisão é que as ROM do tipo NOR possuem um mecanismo de execução directa (XIP, Execute In Place), lembrem-se que antes precisávamos carregar o código do programa para a RAM e de lá executá-lo, a ROM NOR permite que os aplicativos executem directamente (in place) sem a necessidade da cópia (shadowing) para a RAM, mas como nem tudo é perfeito, isso vale somente para o código e não para os dados, estes, ainda devem estar na RAM para serem utilizados.

Os fabricantes podem utilizar uma ROM combinada, parte NAND, parte NOR.
A conclusão óbvia é que agora precisamos de mais ROM e menos RAM nos dispositivos, se bem que com o crescimento dos dados essa verdade pode ter vida curta (pensem em um programa executando um vídeo, por exemplo). Tendo menos RAM, temos menos "bocas" para alimentar, aumentando assim o tempo de carga da bateria, ganhamos a segurança dos dados, porém, perdemos em desempenho.

Uma última consideração é sobre os cartões. Até onde sei, todos os cartões CF e SD são constituídos de memória NAND, portanto, não é correto dizer que o aplicativo X "roda" do cartão, já que as memórias NAND não permitem a execução no local, eles são armazenados no cartão, mas antes da execução eles são copiados para a RAM.
 
Topo