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.