RAM, ROM, NAND, NOR–that’s a lot of capital letters…


I had a request that I do an entry on the differences between RAM, ROM, NAND, and NOR.  Because this is much easier and less controversial than the next entry I was planning, I’ll take the path of least resistance and do it first.  (-:


Why do I care?
When you go to buy a WM device, you’re going to see RAM and ROM numbers advertised on the web page.  I’m here to give you enough information to make an informed choice.


RAM vs. ROM
All of the capital letter acronyms we’re talking about here refer to types of memory.  Memory is used to hold stuff on your devices.  Phone numbers, pictures, programs, music files, they all need memory to work.  Ignoring old technology no one uses anymore and exotic technology that hasn’t been released to the mass market yet, there are two types of memory: RAM and ROM.  They’re similar in that they both hold stuff.  Their main differences involve speed and power. 


RAM: very fast, but burns a lot of power.
ROM: much slower, but burns very little power.


Importantly, RAM needs a constant supply of power for it to remember its data.  ROM doesn’t.  In other words, if your batteries die, you’ll lose the stuff in RAM, but the stuff in ROM will still be there.


How is it used?
Before WM5, this was a complicated question.  With Persistent Storage, this becomes much simpler. 


ROM is where stuff is stored.  All the programs and the OS that make up the software on the device are stored in ROM.  Your data is stored in ROM too.  And SD and CF cards are made of ROM.  Effectively, your device has an SD card built into it that you can’t remove. 


RAM is where stuff runs.  When you turn on your device, it loads programs from the ROM into the RAM and runs them from the RAM.  When you play a song, it loads a bit of the song out of the ROM into the RAM, plays that bit, throws it out, and loads the next bit.  When you read an email, it loads the text from ROM into RAM and displays it.  When you load the next one, it throws that text out and loads the new text.  Go back to the one you just threw out, and it’ll load it out of ROM again. 


So, by and large, the amount of RAM you have determines how many things you can run at one time.  And the amount of ROM you have determines how much of your stuff you can keep around.


How much do I need?
Because of the way this hardware is made, there are natural amounts of it.  Deviations from these amounts are uncommon.  Basically, start at 32M and keep doubling.  32M, 64M, 128M, 256M, etc. 


A “typical” WM5 device will have 64M of RAM.  32M of RAM is very reasonable, especially if the device uses “NOR” ROM (more on that later).  Because of the power drain, there are downsides to having “too much” RAM though.  And, for that reason, 128M of RAM is unlikely, but may be done for certain “power user” devices. 


A “typical” WM5 device will have 64M of ROM as well.  Other than cost, there’s no downside to having more.  So, assuming you can afford it, it’ll never hurt to pick the model with more ROM. 


There are a ton of different versions of WM5–Smartphone, PocketPC, PocketPC Phone Edition, and variations within them.  And languages affect things too (i.e. Far East fonts take up a large amount of ROM).  But, a rough rule of thumb is that the software that comes on the device takes around 32M.  So, if you buy a typical 64M ROM device, you’ll be able to store roughly 32M of your own data.  Get a 128M ROM device instead, and you’ll be able to store around 96M of your data. 


Don’t send me hate mail when you buy a 64M device with only 30M free.  These are rough numbers.  Every device is going to be different.


From there, it’s all tradeoffs.  All else being equal, I’d prefer 32M RAM, 128M ROM to 64M RAM, 64M ROM.  But I’d like 64M RAM, 256M ROM even better.  Of course that latter one would cost considerably more.


Watch out how these things are marketed.  Someone might say, “We’ve got 64M ROM.”  Someone else might say, “We’ve got 30M of storage.”  They’re probably saying the same thing.  Marketing being what it is, I’m sure they’ll always use the bigger number.  But the smaller number is what you really care about. 


What about the other capital letters?
Okay, so let’s talk about NAND and NOR.  These are the two main types of ROM.  They’re largely used the same way, and everything I’ve said about ROM is true of both of them.  So, for the most part, you don’t need to care which kind you’ve got.  But I’ll tell you about them anyway.


NOR: Faster to read, slower to write.
NAND: Slower to read, faster to write.


This is all relative.  Both are considerably slower than RAM.  There’s one very important difference in these technologies.  NOR lets you do something we call “execute in place” (XIP).  Remember what I said before.  To run a program, you first load it into RAM, and then you run it from there.  NOR lets you run the program directly from the ROM without loading it into RAM first.  This means that you can have a system with less RAM.  Note that this only works for programs.  You can’t XIP a picture or an audio file.  NAND typically compensates for not being able to XIP with price.  (NAND tends to be cheaper.)


Because NAND is faster to write, and NOR is faster to read.  The ideal system would have 64M of NOR and 64M of NAND.  It would store all the programs in NOR and store all the user data in NAND.  Since it would XIP all of the programs, it wouldn’t need 64M of RAM and would drop back down to 32M, thus saving power.  XIPing also means faster application load times, since you don’t have to load the program into RAM before running it.  A device like that would rock.


By the way, every SD and CF card is made out of NAND flash.  So, no, you can’t XIP programs stored on a storage card.


There are other things I could go into, but this has gotten pretty long.  So I’m going to stop here.  If there are a few questions, I’ll answer them as comments.  If there are a lot, I’ll do a follow on post to cover them all. 


Mike Calligaro


Comments (96)

  1. Sebastien Mouren says:

    ROM is a falacious marketing term for Flash RAM like NAND & NOR. And even if they often are opposed, RAM & ROM terms qualify electronic devices at different and incomparable levels. But your text makes things easier for buyers.

    Regards,

    Sébastien

  2. Jonathan says:

    Can a device save power by ‘switching off’ unused RAM? If, for example, I have a device with 128 mb of RAM but I only need 32 mb for a particular application can the device save power by not refreshing the unused memory?

  3. Mike Calligaro wrote a great blog entry on Persitent Store recently and why it’s so cool. His latest…

  4. Johnos says:

    That XIP seems pretty cool. So how do you find out what type of ROM (NAND, NOR) is in a device? Will device manufacturs "market" that

  5. ginswizzle says:

    This is a great explanation, but for ultimate clarity ROM really isn’t Read Only Memory proper… it’s just Flash memory that has all the properties you describe (including the ability to have data written to it as part of day-to-day usage).

    And wrt NOR’s ability to XIP, it is quite common for NAND to be packaged together with a small amount of RAM in a Multi-Chip Package (MCP) that effectively allows it to XIP as well. But from a cost perspective, these MCPs often eliminate most or all of the cost difference between NAND and NOR, so the decision generally comes down to the demands of a specific board design.

    Also, as I said in a comment to one of your PS posts… you really don’t want more than 32MB RAM for the type of devices WM enables… this will directly and very noticeably increase the cost and decrease the battery life of the device. For point of reference, almost all mobile phones in the market today require 16MB RAM or less to function – RIM BlackBerry devices only have 4MB!

  6. windowsmobile says:

    Yes, "ROM" is completely a lie. It’s a term that dates back to when these devices used mask ROMs that were manufactured with the data in them and were actually read only. But the name has stuck, and that’s what people will see on the box/web so I’m going with the flow.

    This is why I didn’t give the "Random Access Memory" and "Read Only Memory" definitions. The first doesn’t mean anything to typical people and the second isn’t true.

    They’re not even EEPROMs anymore. In actuality, what these devices have is "NVRAM" or "Non-Volitile RAM." But that doesn’t roll off the tongue the way "ROM" does.

    Marketing, yes. But then again, it was the Marketers who refused to use the correct but inscrutable term "PCMCIA" and they were right there. (-:

    Mike Calligaro

  7. windowsmobile says:

    Jonathan, we’ve investigated the idea of turning off parts of the RAM, but haven’t done the work to enable it. There are a number of problems. For one, the hardware will only allow you to turn off a full bank of RAM, which usually means half of it. In most cases, we found that devices didn’t have twice as much RAM as necessary. For another, you could only turn off a bank if it wasn’t in use. But if apps had been using the latter part of RAM, it’s a bunch of work to get them to switch to the earlier bank. We considered having a reboot do it, but that’s ugly to the user. Also, when do you enable the second bank? If the user runs a bunch of apps, do you shut some down to keep from turning the second bank on, or should you enable it? It’s hard to know what the user wants here. It’s extremely doable manually (user chooses which he wants and reboots) but that’s not the kind of thing the average user will accept. So we focused our efforts on making the system use less RAM instead.

    Johnos, I’m not sure how XIP will be marketed. The NOR flash vendors certainly market the benefits of XIP but their audience is usually OEMs, not end users. However, XIP has been around since the dawn of time, and non-XIP NAND devices have been around since WM 2003. I’m pretty sure it wasn’t clear in the past which devices did which.

    Ginswizzle, yeah I’m a fan of 32M RAM devices myself.

    Mike Calligaro

  8. Jonathan says:

    Mike,

    Thanks for your explanation. I was interested because one of the projects I worked on recently used CE devices that had two applications, one was a data capture application that needed lots of RAM and the other was a printing application that needed very little RAM. It would be a clever trick if the device could turn of half the memory in the printing app. I can see your point about the reasons this kind of feature would be tricky. The only way I could see it working would be to have an option to set up the device to only use half the memory and then allow a single application to manage the other half of the memory through a special API (so it could map it in to it’s address space or turn it off). That does seem like a rather messy solution (although it might allow applications that need a lot of memory but donโ€™t care if the memory is lost when the device is suspended, for example, map viewing applications).

    Regarding using the term ‘ROM’, I found that really confusing when I first started using CE devices.

    Jonathan

  9. windowsmobile says:

    Jonathan,

    What you’re suggesting would work very well. If there was a driver that managed a bank of RAM separate from the OS, that driver could turn the RAM on and off at will.

    Upside is that it would work with the current infrastructure. There are a few downsides, though. As you pointed out, an application would have to know to call into this special driver. Not the end of the world, but it’s something. Also, it would probably be rare that a device does it, making it tough for an application to support the special API. Finally, it would still require there be two banks of memory, and they’d still be half and half. So an OEM would need to decide to release a device with an expensive chunk of hardware that’s not used by most people. It’s kind of a losing proposition.

    Mike Calligaro

  10. Sorry for many Trackback

  11. badbob001 says:

    What about intel’s strataflash, which is found in many pocketpc’s? Is it nor or nand or is something in between? I heard that it can support xip.

  12. windowsmobile says:

    Strataflash is NOR and Intel is the majority supplier of NOR flash parts. Everything I said about NOR flash applies to Strataflash.

    Mike Calligaro

  13. Nino.Mobile says:

     Expansys now has the Qtek 9100 available for pre-order.  I hear that Mad Monkey Boyโ€™s Gadgets may…

  14. badbob001 says:

    I’ve heard that nor chips have much less write-life to them compared to nand chips. Is this a pratical concern? My smartphone (mpx220) is said to have nor and being a smartphone, goes all out, I assume, with the xip and save everything to flash thing. Should I be paranoid about killing my flash chips?

  15. Nino.Mobile says:

     Expansys now has the Qtek 9100 available for pre-order.  Keep an eye on  Mad Monkey Boyโ€™s…

  16. windowsmobile says:

    Bob, check out my persistent storage articles, especially: http://blogs.msdn.com/windowsmobile/archive/2005/07/20/441038.aspx and http://blogs.msdn.com/windowsmobile/archive/2005/07/18/440139.aspx

    I don’t think NOR is significantly different in terms of write-life than NAND. And, I personally don’t worry about the write-life at all on my devices. I don’t think you need to be paranoid about it.

    Mike Calligaro

  17. Jason Fuller says:

    I just wanted to expand on Mike’s comment: "XIPing also means faster application load times, since you don’t have to load the program into RAM before running it." The tradeoff here is that even though load times (i.e. the time you would spend paging/decompressing into RAM) are eliminated, the code itself runs slower because reading from NOR is slower than reading from RAM.

  18. prayer says:

    u prefer 32Ram and 128 rom to 64 ram and rom?

    that’s one of the most stupid things i heard.

    system and today plugins will eat a lot of RAM.

    so u will end up with ammount of memory less than 32Mb.

    and then there are a lot of programs that eat a lot of memory. so wi 2x Mb your ppc will be nothing else like device to play Solitare (well, not that bad of course.)

    tcmcp can eat 10Mb, like example.

    Adobe Reader eats about 10Mb when i open articles (2-3Mb), a lot of games need a lot of RAM, Word eats a lot when u work with large documents etc. etc.

    u still want to have 32Mb of RAM? well, that’s your choice, but done say it public, because some peoples without expirience in this area will believe u, and make mistake.

  19. Richard Bukovansky says:

    Hi, I have a question about usage of RAM in WM5. You said that RAM is used only for running programs. OK, so could you please explain me little bit more this screenshot (Memory applet on Dell X51v) http://www.tweaks2k2.com/images/v51vs1.jpg?

    If the device has 64MB of RAM, why WM5 are reporting 49 total MBs of Program memory? Shouldn’t be 64MB? Where are those 15 MBs?

  20. windowsmobile says:

    Richard, I haven’t analyzed the X51v memory layout, so I can’t talk specifically about that. But, in general terms, there are a number RAM uses that aren’t reported in the Memory CPL.

    For instance, an OEM might set aside a fair amount of RAM to allow the camera to write directly into it without using the CPU (a DMA buffer). Typically the way they do that is to tell the system there is less than the available RAM and then use the RAM the system doesn’t know about.

    Another example is something called the "page pool." This is similar to the "page file" on a desktop system, and is heavilly used on NAND systems. The page pool isn’t something a user can configure, so there’s not much point in showing it in the Memory CPL.

    Devices with a cellular radios sometimes load the code for that radio (the "radio stack") into RAM outside of the OS.

    Code that can’t be shut down or paged out, especially drivers, isn’t shown on that Memory CPL either. There’s no reason to show you the RAM the display driver is using, because you can’t do anything about it.

    The frame buffer (see http://blogs.msdn.com/windowsmobile/archive/2005/09/07/462187.aspx) isn’t counted in the Memory CPL either.

    Etc.

    The trouble is, all of this varies greatly from device to device. One device might allocate 100K for a camera buffer, while another might allocate 3M. That’s a tradeoff between video camera capture framerate and ram usage. A NAND device might have a 6M page pool, while a NOR device doesn’t need one at all. One device might have a 4M radio stack loaded into RAM while another might have a separate radio module that has its own RAM and doesn’t need any system RAM to operate. A simple display driver might need 50K of code, while one capable of doing heavy 3D work might need 300K. A 240×320, 16 bit screen has a 150K frame buffer, while a 640×480 32 bit screen requires 1.2M.

    Despite assertations to the contrary from the comment above yours, there are devices that run comfortably in 32M. And there are devices that need 64 to be even reasonable. It’s all about OEM tradeoffs between performance, ability, RAM usage, and cost. The OEMs weigh all these factors when deciding how much RAM to put into a device.

    Mike Calligaro

  21. Bukovansky Richard says:

    Mike, thank you very much for your explanation. I thought previously it’s some bug in Memory CPL in WM5. ๐Ÿ˜‰

    Richard

  22. Suresh Madhu says:

    Why can’t XIP applications use the NOR flash

    with regards,

    Suresh Madhu D

  23. windowsmobile says:

    Suresh, I’m sorry, but I don’t understand your question. XIP applications do use NOR flash. Can you elaborate?

    Mike Calligaro

  24. badbob001 says:

    Is it the program or the OS that senses if a program is stored in NOR or NAND and either run it as XIP or copy to ram and run? I’m asking because I’m worried that developers will have worry about compiling their applications for XIP-only or non-XIP-only or perhaps some sort of auto-sensing package. Will developers have to redo their applications as XIP or is it automatic? If it’s not automatic, how much is Microsoft encouraging developers to use XIP?

    I’ve recently noticed that after Dell re-introduced the axim x50v as the x51v with WM5, they replaced the x50v’s strataflash (NOR) rom with NAND flash rom. Currently, the x51v with WM5 has less available ram than the x50v, mostly likely because it needs to reserve some memory for paging programs from NAND. Dell has yet to release the WM5 rom for the x50v, but do you know if it is possible for the OS to sense if the device has NAND or NOR and thus decide, at boot, if paging memory is needed? I’m hoping Dell can use the same rom image for both the x50v and the x51v.

    Thanks.

  25. badbob001 says:

    You mentioned that a device with NOR may do away with the page pool. But many devices take storage cards, which use NAND, and a user can decide to install a program in NOR or NAND. Would this uncertainty in where a program may reside, either in NAND or NOR, thus force all WM5 devices to have a page pool? What happens if a program is run from NAND and the device doesn’t have a page pool?

    Thanks!

  26. windowsmobile says:

    There’s nothing an app needs to do differently to XIP or not. It’s transparent. Our same code runs XIP or not without any changes from us. The OEM decides at ROM creation time which way to go.

    That said, there’s no way for an ISV app to XIP. To XIP you need to be in the base image of the device. If you’re installed later, you go into the file system, and we don’t XIP from the filesystem. (We didn’t even XIP from the RAM based filesystem pre-WM5.)

    So, whether you’re running from the internal filesystem or from a NAND-based storage card, your code will be loaded into RAM.

    For this reason, some XIP devices have a small page pool. But, if there’s no page pool, the code is just loaded into RAM. And, again, this is transparent to the ISV. You won’t know whether your code is running in a page pool or in RAM.

    The end user can get an inkling of what’s going on by looking at how much RAM is used by launching ISV apps. If there’s a pagepool, the ram usage reported will go up less than if there isn’t one (since the page pool isn’t reported). Note that, even with a pagepool, the ram usage will go up when you launch an app. Only code goes into the pagepool. When the application allocates ram (malloc, new, etc) that comes out of normal ram.

    As for having a single image for both the x50v and the x51v. If one has NAND and the other NOR, that won’t work. The filesystem drivers need to be different for NAND and NOR devices, so an image for one won’t work on the other.

    Mike Calligaro

  27. Bukovansky Richard says:

    Hi Mike,

    I’ve finally got WM5 upgrade for my Axim X50v, but the amount of RAM memory taken by system it’s in one word: HUGE. After hard-reset it takes ~15MB of RAM (hidden) and next ~25MB (shown), so it’s ~40MB taken from 64MB by system!

    And you said, 32MB of RAM it’s enough for WM5. Com’on, you can’t serious… ๐Ÿ˜‰

    What those guys at Dell could screwed up?

    Second question is the size of OS ROM image. Devices with pre-installed WM5 (HTC Universal, Dell Axim X51v) have ~64MB of ROM taken by OS image, but the upgrade for X50v is only 32MB in size. Why is that?

    Thanks for any advice.

  28. windowsmobile says:

    I’ve never worked with the X50v upgrade, so I don’t know how they’ve partitioned the memory. In general, though, I don’t pay much attention to how much RAM is being used until I start running out of it. In the end, it doesn’t matter if the system is using 8 of 32, 40 of 64, or 104 of 128. In all three cases you have 24M free to use. If you’re using all 24M and needing more, then you should worry about where the RAM is going. Otherwise, it doesn’t really matter.

    It’s unlikely that you had 24M of RAM free before moving to WM5, because half of it used to be used for storage. Because an OEM can tune the performance of a system with RAM usage, Dell probably aimed to give you a net gain in RAM but not to give you so much that RAM would sit unused. It would be a rare app that can use more than 24M of system ram. (Though I’m sure some exist somewhere.)

    As for ROM size, the Phone Edition is a larger SKU than the non-phone devices. However, there are no WM5 SKUs that take 64M of ROM. The largest SKU that I’m aware of is the 48M Far East phone sku (the FE font is huge). Everything beyond that is applications added by the OEM or Mobile Opperator. Here as well, the OEM is tuning. Every app they add removes storage space a user could use. If the device has 128M total, it’s easier to justify that add on application that some people will use and others won’t. If the device has 64M, they’re less likely to add the extra apps and leave you more room for email attachments.

    Mike Calligaro

  29. mlk says:

    Thanks, that was a good read, and cleared up the odditiy (to me anyway) of a machine with only 64M RAM having 80M of usable space on it ๐Ÿ˜‰

  30. mlk says:

    Thanks, that was a good read, and cleared up the odditiy (to me anyway) of a machine with only 64M RAM having 80M of usable space on it ๐Ÿ˜‰

  31. DerLoos says:

    Mike, I’m sorry for such a late wake-up but I’ve got here not so long ago and this is one of the most useful and interesting articles I’ve found here. Most of my questuions disappeared while reading it but one is still up: where can I find info on certain models (hp rx1950, for example) in terms of using NOR or NAND flash? PDA makers rarely publish such info on their web page.

    I sell PDAs in Russia, and my customers sometimes put such questions.

  32. MikeCal says:

    I’m glad the entry was helpful, DerLoos.

    Unfortuntately, there’s no central repository of information on device hardware.  The only way to be sure is to work with the manufacturer.  Sometimes, if you do an internet search on the device number you can find a site that lists all the details, but few will distinguish between NOR and NAND.  

    Mike

  33. badbob001 says:

    Sorry to come back to his old topic, but this has been one of the most useful and interesting windows mobile topics I’ve seen posted.

    Anyway, does the use of NOR rom require any extra housekeeping by the OS as opposed to using NAND rom? People at aximsite have compared the x50v (nor) and x51v (nand) devices and have found that the x50v, at intervals, spikes up in cpu usage for some os process. The usage was found to be related to filesys.exe and msflash.dll. There is also a mention of the CompactionCritPrio256 registry entry.

    There is speculation that this os process is designed to possibly defrag or move around bits in an effort to spread out the wear of the flash bits. Any insight on this process and why it’s specific to wm5 nor devices and if it’s needed at all?

    Here the link to that discussion:

    http://www.aximsite.com/boards/showthread.php?t=106009&page=4&highlight=filesys

    Thanks!

  34. I’ve received a few questions from users who have said that their WM5 device seems to slow down and speed…

  35. MikeCal says:

    Hi Bob,

    I just wrote an article that should answer some of those questions.

    http://blogs.msdn.com/windowsmobile/archive/2006/03/16/552996.aspx

    Mike

  36. Chung-Ho Liu says:

    Most of WM5 smartphones now use diskonchip as ROM. However, diskonchip is actually a NAND-based flash memory with NOR-like interface.

  37. I get such … colorful … comments whenever I do a RAM entry.  How could I resist doing another? …

  38. John says:

    Hi, I have a windows mobile 5.0 smartphone and a 2gb mini sd card, this should be ROM and I hoped it will top the inbuilt ROM on my phone, but it isnt.  Is there a limit on how big a card can be?  Thanks

  39. MikeCal says:

    We currently use a variant of FAT32 for storage cards, which has some enormous top end we won’t see for a while (4 terabytes was it?  Something like that).  So WinCE doesn’t currently limit the size of storage cards.  (And, by the time those sizes are normal, we’ll have moved to FAT64 or equivalent to handle them.)

    The SD spec officially limits the size of an SD card to 2Gig.  However, there are now 4G SD cards available on the market.  I haven’t looked into how they do that.  Because they’re contrary to the SD spec, it’s possible that they don’t work on CE.  I really don’t know enough to say for sure.

    The SD card shows up as a different place to put things.  It doesn’t show up as extra storage space.  It’s kind of like when you plug a USB keydisk into your desktop system.  It doesn’t make the main hard drive look larger.

    We do this for a number of reasons, not the least of which being that it’s easiest.  But, importantly, if we co-mingled the storage space, things that need to stay on the device would drift out to the SD card, then fail when you removed it.  For instance, it would be very bad if half of your contacts moved out to the SD card without you realizing it, then you pulled out your SD card and left it at home one morning.  

    The SD card mounts as Storage Card and anything on it shows up there.  Anything written to that location goes to the SD card.  Applications can be installed to it, and some data can be written there.  Other data can not.

    We’ve had feedback that users would like to store more of their data on SD cards, though.  The removability of the SD cards makes that a hard problem for us, though.

    Mike

  40. John says:

    Thanks for the reply Mike and your answer makes perfect sense.  The Card does appear on the smartphone but I still get out of storage memory errors all the time.

    Looks like I will need to speak to my phone’s vendor to see how I can get applications stored to the storage card.  There seems to be no obvious way via the GUI of the phone to do this.

    Thanks again

  41. Newsminator says:

    I have worked with 64 MB and with 128 MB PDAs with Windows Mobile 2003 SE, and always saved the data to SD or CF cards.

    There’s a large difference in speed between the two. I’ll take the 128 MB version any day, even if it means a bit less battery life.

  42. Hardi says:

    Hi Mike,

    As your explanation, that every SD and CF card is made out of NAND flash, so why when we try to do some benchmark on them (especially SD or USB Disk), their read performance is much better than the write performance ?

    Could you give us some explanation ?

    Thanks.

  43. MikeCal says:

    Hardi, all Flash memory takes longer to write than to read.  That’s just inherent in the process of writing data in a way that it stays around when there’s no power.  NOR reads faster than NAND does, and NAND writes faster than NOR does, but NAND still reads faster than NAND writes.

    Also, be aware that different NAND implementations are faster than others.  I once did a very simple test with a bunch of SD cards from various manufacturers (put the card into a desktop reader, copy 35M of music files to it, and time it with a stopwatch).  I saw that some cards were 3 times as fast as others.  Sometimes the swing was on two cards by the same manufacturer.  I’m not sure what makes one card three times faster than another.  I’d guess different hardware processes and densities, etc.

    Mike  

  44. Maciek says:

    Great article:) Thanks for clearing things up for me

  45. Chris says:

    Where is the actual OS image stored?  Is it a separate PS chip that only gets written to when a "ROM update" is run?  When a hard/factory reset occurs what actually happends?  Internal persistent storage gets erased and the factory image gets copied over?

  46. MikeCal says:

    Chris, it varies from device to device.  On the Treo, the OS is stored in a NOR flash part and user data is stored in a NAND flash part.  When you clear user storage, it just clears the NAND part.  More typically, though, there’s just one big NAND part that’s been partitioned to have an OS region and a user region.  The OS region is locked down and unwriteable except during ROM updates.  The user region is unlocked and can be written to at will.  When you clear user storage on one of these devices, the OS just clears what’s in the user partition.

    Mike

  47. Hardi says:

    Hi Mike,

    Thanks for the previous explanations. Now, I understand more :-)…

    Do you have any tips for :

    1. How to correctly measure the performance of storage cards on the PPC ? If we test it on the PC, is it still applicable (the speed comparison, e.g. SD card A is much faster than B) to the PPC also ?

    2. How to correctly choose (for us to buy) the storage card for our device (especially if we want to find the fastest card for our device) ? Since I notice that the real world performance of the card (especially in the PPC), doesn’t always correspond to the manufacturer’s speed label (e.g. 80x speed mini SD card, doesn’t always perform better than 60x speed mini SD card from other manufacturer). Is that true ?

    Thanks

  48. MikeCal says:

    The last time I measured various cards, here’s what I did:

    Get three different SD cards.  

    Get 50MB of WMA files from my music collection.

    Stick the first card into a desktop USB reader.

    Drag the 50M over and time it with a stopwatch.

    Pull the first card out.

    Stick the second card into the same reader.

    Repeat.

    The absolute times aren’t really comparable to what you’d seen on a PocketPC because too much is different.  But the RELATIVE times should be directly applicable.  With that test, you’re basically seeing how long it takes for the card to write data.  The card that writes faster on the desktop is also going to write faster on the PocketPC.

    I believe you’re right that marketing numbers don’t directly apply between manufacturers.  I’m not even sure what 80x is supposed to mean.  80 times WHAT?  For all you know, that’s 80 times faster than the marketer’s car does 0-60…

    I don’t know the best way to find the fastest cards.  I’ll bet there’s a digital photography site that measures them though and reports what they find.  

    Mike

  49. Recently one of the filesystem guys and I spent some time investigating the Compaction Thread issue on…

  50. I’ve been asked why OEMs would use NOR flash in a persistent storage world.  (If words like "NOR…

  51. One of my colleagues Reed Robison published an internal summary of the great articles that Mike Calligaro…

  52. Tony Chana says:

    Very informative – I found the article useful

  53. You says:

    God, you really are a retard.  Do you even know what "ROM" stands for?

  54. sara says:

    hey mike, well i’m actually doing an assignment on RAM and ROM now.. and i’m totally lost as i do not have even basic knowledge abt these things. i read all the comments posted and guess wat.. i got even more confused. so.. can somebody pls let me noe really wats the difference of ram n rom, and how much of them do we need in our comp, and also how do we prevent RAM frm damaging. this is really urgent. thx a lot u guys! will appreciate it so so much if u guys help.

  55. asad says:

    it is a litle bit true about ram

    7 rom but actually not it

  56. MikeCal says:

    Hi Sara.  This blog entry was my attempt to sit down and explain the differences between RAM and ROM.  I’m not sure what to do other than to refer back to it.  If you read the original blog entry and would like to ask clarifying questions, though, I’ll be happy to try to answer them.

    Mike

  57. Raymond says:

    Been using computer so long but new to mobile phones.  Your write-ups and responses are so enlightening.  Looking forward to more of these.

    Now that i have learned these things I am more interested to get to know my IPAQ 4700 which has been largely unused these past four months since i bought it.

  58. Allan says:

    Mike, may be you should say that ROM is like HDD on PC and RAM – well, it’s still RAM. Maybe people like Sara, who are far from hi-tech, understand things better this way.

    P.S.  Great article, though:)

  59. light bulb says:

    Thanks for the great tips about <a href="http://alisonfame.50megs.com/light-bulb.html"”>http://alisonfame.50megs.com/light-bulb.html" title="light bulb">light bulb</a> and [URL=http://alisonfame.50megs.com/light-bulb.html]light bulb[/URL]

  60. chong says:

    what about ipaq rw6828 , it claim it have 64ram and 128rom, but it only have 48MB of 58.53MB storage available and program 34MB of 52.40MB available. So how it calculated and work? and why it only have 58.53MB storage and 52.40MB?

    Thank you

  61. equity says:

    Very interesting and good point about <a href="http://markdeniels.50megs.com/equity.html"”>http://markdeniels.50megs.com/equity.html" title="equity">equity</a> and [URL=http://markdeniels.50megs.com/equity.html]equity[/URL]

  62. eric says:

    I would like to know who is leading the market in mobile memory (RAM AND "ROM")? Intel?

    So, what are your predictions for the future?

    Other than a mix of NAND and NOR

    Should we expect some new technology that will not use any of them?

  63. Alexandr says:

    Why Windows mobile 5.0 does not have a toddler which allow to manual change RAM and ROM sizes(like in previous Windows mobile versions)?? I have a Windows Mobile 5.0 based device which have a very small size of memory(HP iPAQ rx1950,35,02 mb – ROM,23,68 – RAM)..Can I change a memory managment in WM 5.0?? Or can I swop windows mobile 5.0 to another version of windows mobile on my device??

    Sorry for my English,I am Russian..and I started to learn English a few weeks ago..  

  64. MikeCal says:

    Eric, Intel has been the leading provider of NOR based ROM though Samsung has been starting to make it as well.  NAND based ROM has a number of vendors.  I don’t have sales figures in front of me, but my impression is that M-Systems is one of the biggest names in NAND flash.  I hear about Samsung NAND a lot too.  There are a ton of different people who make RAM, but, unlike ROM, RAM is pretty interchangeable.  For instance, an OEM will need to make significant changes in their code if they switch between NOR and NAND but they generally won’t need to change anything if they switch from one RAM manufacturer to another.

    There are some cool new technologies coming down the pike, including something that’s as fast as RAM but persistent like ROM.  We’ll make use of those as soon as they’re available and cost effective.  But they’re probably a few more years out.

    Mike

  65. MikeCal says:

    Alexandr, your English after just a few weeks is amazing.  I studied Spanish for 6 years and Japanese for 5 and I couldn’t have written the post you did in either of them.

    In Windows Mobile 2003 we had a slider bar that let you choose how much of your RAM was used for storage and how much was used for applications.  As you’ve noticed, that slider isn’t available anymore in Windows Mobile 5.  

    In WM2003, both applications and storage were in the same piece of hardware (RAM).  That allowed us to choose how much of it to give to each.

    In WM5, applications and storage and in different pieces of hardware.  Applications are in RAM, but storage is in ROM.  

    Because software can’t change the amount of hardware that’s available, we had to remove the slider when we moved storage out of RAM and into ROM.

    Mike

  66. … and weren’t afraid to ask. There have been a number of questions about SD memory cards. This is a

  67. zzj says:

    This is a wonderful artical. and may i ask u how to add driver for nand in WM5 ? I don’t know how to modify the .reg file, .bib file and the memory.cfg.xml , though i have the source code for nandflash .Can u give me some suggestion ? Thx a lolt !

  68. David says:

    Hi Mike,

    great explanations here, thanks. I do have a quick question to ask, though:

    Seems like most devices running Mobile 5 are still going to have 64mb RAM in 2007, but the ROM varies wildly. From a price/performance perspective, do you think 192 ROM compared to 1 GB ROM is worth 300 U$?

    David

  69. MikeCal says:

    David, I wouldn’t look at price/performance as much as need.  What are you planning to store in your ROM and how much space does that take?  If you’re planning to put a bunch of songs on it, then 192M isn’t all that much.  If you’re planning to put movies on it, even a Gig isn’t all that much.  If you’re planning to put contacts, email, and typical files on it, 192 is more than enough.

    Whether or not the $300 is worth it to you is completely dependent on what you’re planning to do.

    From a pure price/performance situation, when I consider that I can get a 30G media player for $250, if your primary goal is to listen to music and movies, the price/performance isn’t there.  At that point you have to ask yourself how much having everything in one device is worth.

    Mike

  70. David says:

    Mike, many thanks for the quick reply.  As I was reading through this site, I was getting quite fascinated by the fine distinctions in this technology – but I might not have fully understood:

    What I’m asking myself, is why pay 300$ more for 1GB of ROM when I could just expand the memory of the device with a mini SD card for 30$ (2GB). That would take care of storage needs.

    I would be using the ROM solely for programs but not storage. It seems to me that lots of ROM would be primarily necessary as virtual RAM and that storage could be handled much cheaper with expansion cards?

    And again, thanks for all the information here – so much better than just being on the "buy it without knowing how it works" end of consumer technology….  

    David

  71. Kriskret says:

    Can somebody clearly explain what is an adventage or disadventage changing RAM from 64MB to 128MB in Dell- Axim x51v ?

    madziek@hotmail.com

  72. Bblackett3@hotmail.com says:

    Is there a registry entry that can change the PagePool size?  

  73. MikeCal says:

    Unfortunately, no.  The code that reads the registry runs out of the PagePool.  So the PagePool needs to be set up long before the registry exists.  Because the size needs to be known so early in the boot process, it needs to be hard coded into the ROM image by the OEM.

    Mike

  74. Paula says:

    Can I run WM5 on my Ipaq rz1715 device?

  75. Zhang says:

    Hi,i am devoloping the driver for nandflash under WinCE6,but the driver doesn’t work well.Here is the detail:I migrate the nandflash driver from WinCE5(this driver works well) to WinCE6 ,and only modify the SOURCE file according to the nandflash driver of H4SAMPLE BSP in WinCE6.But each time when OS calls FMD_ReadSector,the ECC always tells that there is one bit error,and it correct that bit successfully.Files i store in the nandflash last time will all go,and the nand disk space is totally free !

    And what else should i do besides modify the SOURCE file to let the driver work ?Thx a lot!

  76. Kenneth says:

    Does WM5 provide the drivers for SD cards? Or do these come from the application processor manufacturer of the handheld device? Or the SD card supplier?

  77. Chao says:

    Zhang,

    It’s possible the problem happened in ecc. If ecc malfunctions, it can try to correct the data, or even erase data, as ecc think itโ€™s corrupted sector. You can temporarily comment out the ecc part in your FMD_ReadSector function to see if there is difference.

    To port a driver from 5.0 to 6.0, you can find some useful information in BSP porting guide in msdn: http://msdn2.microsoft.com/en-us/library/aa917748.aspx.

    Changing the soruces file is first thing. Also, you should check some deprecated APIs and some old none-PQOAL IOCTLs. Most common deprecated APIs are SetKMode and MarshallCallerPtr.

    Chao

  78. podaughtry says:

    im a sales rep. and i use my starcom 6700 to store all my customers.  this list has grown to about 1700+.

    i have 43.5mb total storage and 49.2mb total program.

    i am using 38.65mb storage and 25.34mb program.  thus, i only have 4.85mb storage left on the phone and i hade to remove two programs this past week to get some of the storage back.  i have looked all over the internet for a resolution i would even buy another phone if it would have more rom memory.

    any thoughts on what i might could do?

  79. MikeCal says:

    Do you browse the web a lot?  Try clearing your temporary internet files.  Where that is varies a bit from release to release and device to device, but you typically get to it by launching pIE and selecting Menu->Tools->Options.

    Mike

  80. BMT says:

    Mike – First of all, I must say your post was really very informative and after reading set my mind to think.

    I recently saw the specs for HTC TyTN II aka (Kaiser, 8925..). It has the following specs, ROM: 256MB & RAM: 128MB SDRAM

    1. Would it be right to say that the 256 MB of ROM is actually NAND ROM or would that be a combination of both NAND & NOR RAM?

    2. The iPhone I hear has 256MB RAM and the remaining 8 GB as Flash memory which again I would mostly be NAND ROM. If that is the case, I was just curious as to why all the other mobile manufactures cannot come up with such hardware.

    Your thought is greatly appreciated

    -BMT

  81. MikeCal says:

    Sorry I’m so late in responding to this.  I think I missed it.

    I don’t know for sure, but it’s extremely likely that the TyTN is using NAND.  I’m not aware of any recent devices using NOR.

    I’m also pretty sure that the iPhone is NAND.  Price is pretty much the one thing that stops other manufacturers from putting that much flash in their phones.

    Mike

  82. Kevin says:

    Hi Mike, as BMT said , I also noticed recent HTC WM6 devices is using 128MB RAM.  From your blog, 64MB RAM is enough for WM, what are the benefit to get device equipped with 128MB SDRAM?    My understanding is it cost and consumes standby power.

    My map application eats a lot of memory, there is a known limitation that CE5.0 have 32M virtual memory limitation, adding the physical RAM(128MB) will help with it?

  83. MikeCal says:

    RAM technology changes pretty rapidly, and this post is relatively old.  When comparing RAMs, you need to look at two parts manufactured at roughly the same time.  I haven’t looked at recent spec sheets, but it’s possible that current 128M RAM parts use less total power than the 64M RAM parts that were available when I wrote this.

    I general, phone manufacturers use however much RAM will fit in a single chip.  At any given time, there tends to be three RAM ammounts that do that–the previous generation, the current one, and the next.  

    For instance, in the WM5 timeframe (when I first wrote this), the previous generation was 32M and was very inexpensive.  The current generation was 64M and was more expensive, but still reasonable.  But, at that time, fitting 128M into a single chip was very expensive.  So very few people did that.  And, as I predicted back then, almost all WM5 devices had 64 or 32M of RAM.

    These days everything has doubled.  You can’t really even get 32M parts anymore, 64 are cheap the way 32 were back then, 128M is reasonable, and 256 is too expensive to be in anything but very high end devices.  

    By the next major release, it will probably be the case that 128 is cheap, 256 is normal, is 512 is expensive.  

    Having more physical RAM than the CE 32M virtual memory limit can help run mulitple apps (each app has its own 32M), but won’t help with a single large app that uses a lot of RAM.

    Mike

  84. HotDJDave says:

    I have an HTC PPC6800 (Sprint Mogul).  The device shows as having 162.42 MB of "Storage" (presumably Flash RAM) and 47.46 MB of "Program" memory (presumably RAM).  Now the available RAM is normally under 10 MB and sometimes down to less than 4 MB when running multiple applications.  

    My question:  is there (or can there ever be a way) to borrow or move some of the "Storage" memory over to the "Program" memory to allow for extra RAM (similar to dynamic memory on a PC)?

  85. MikeCal says:

    HotDJDave, there was a time (WM2003 and before) when PocketPCs didn’t have any flash.  Everything was stored in RAM (and if your batteries died, you lost all your data).  Since everything was stored in the same place (RAM) it was possible to change how much RAM was used as storage and how much was used as RAM.

    Now storage is always Flash and Program memory is always RAM.  Flash can’t be used as RAM, so you can no longer move or borrow Storage memory over to the Program Memory area.

    Describing what the desktop does in the case you describe is too large a topic for a comment, but the short answer is that, no, we don’t do that on CE.  Anything is possible (it’s just code), but I wouldn’t expect to see anything like that in the near to mid future (read: I don’t know of any plans to do anything like it).

    Mike

  86. JLA says:

    Thank you for this and many other great articles and the pIE temporary files gem posted here.

    My v50x running Windows Mobile 2003 has been in the low memory state podaughtry described for a while. I’ve lamented my lack of knowledge on how to find where my memory was being used, frequently staring at the list of files larger than 64K wishing I could get more out of the list, and tap-clicking a folder more times than I can count hoping that "a properties option will appear on the menu this time where I can see a size" would appear.

    Now that I have come across your tip on pocket IE, and have deleted my "temporary internet files" (options>memory>delete files) I am an additional 15+MiB away from the dreaded "out of memory" message.

  87. Chao says:

    Recently I upgraded my HTC typhoon smartphone to WM6, everything works great except the RAM is very low in this 32M RAM device.

    after boot up there is about 4000K free. after starting one or two application it falls to 2 or 1 mb which makes the system slow and unstable. I have to free ram from time to time. I remember when it was wm2003 it will have 7~8MB after boot up.

    Is there any tunes that I can do on this device?

    and there is something in system that is eating the ram constantly, i have to use certain application to free up ram even when there is no application running. why would this happen?

    btw, far east fonts does not eat up RAM, does it? I’m using a chinese version of it.

  88. Muchi says:

    Can anybody spell out

    NAND and NOR please..

    thank you..

  89. Marcos says:

    Hi there ๐Ÿ˜‰

    Very good post, I added it and the "Compaction Thread" to my favorites.

    I’m beggining in mobile’s programming. Regards of the RAM, ROM, NOR, NVRAM etc. My interest is in programming visual aplications.

    Anyone have hints about the support for Wireless MMX in Visual Studio 2005 (asm or intrinsics) of XScale? And somthing about the compatibility of Managed Mobile DirectX on PXA2700 (or direct programing on it)?

    Unfortunatley Axim x50v WM5 is terrible, so I used unnoficial WM6 (much more stable) and sometimes WM2003SE(battery life save). Is much dificult build a own WM6 for Axim with the Platform builder in WM6 developer DVD?

    Thanks very much.

  90. Robert says:

    Thanks for a great article. For those slow to understand as myself, I have a new Samsung Saga. It is advertised with 128 M Rom and 256 M Ram.

    When I look at the memory screen it lists Main Memory (43 M free) and Internal Memory (60 M free). Can you give an explanation of these numbers?

  91. Etor says:

    Excellent article.

    I have a cuestion. My PNA advertised: "precharge software in internal memory of 512MB; 64Mb SDRAM internal; 64Mb flash RAM internal". I have then 512 + 64 +64=640???? Thanks

  92. Etor says:

    I forget comment in "I have a cuestion. My PNA advertised: "precharge software in internal memory of 512MB; 64Mb SDRAM internal; 64Mb flash RAM internal". I have then 512 + 64 +64=640???? " what SO it’s Windows CE 5.0

Skip to main content