I've been asked why OEMs would use NOR flash in a persistent storage world. (If words like "NOR flash" or "XIP" are confusing, read this.) I'm going to give you some history about where NOR flash came from, explain how we got from there to here, and prognosticate a bit on the future.
Who was that masked chip?
The first PocketPC to have any sort of embedded flash memory was the original iPaq (it was released in 2000). Before that, all our devices shipped on what was known as "Mask ROMs." A Mask ROM is created at the factory and can't ever be erased or changed. Obviously, we never stored user data in these (there was no way to write them), and the only way to ever "upgrade" a device with a Mask ROM was to physically remove the chip and put a new one in. (Yes, I'm ignoring EEPROMs. They were using during development, but few, if any, devices were shipped to customers with them.)
It's important to note that code in Mask ROMs could be executed in place. That is to say, they XIPed.
Enter the Flash
Now, NAND flash had been around for a long time. Those old Mask ROM PDAs had CF slots, and the CF cards were made of NAND-based Flash memory (frequently called Flash ROM even though that's not technically correct). NAND, however, can't XIP, so it couldn't be used as a direct replacement for Mask ROMs.
NOR flash, however, had the very handy aspect that it could XIP. This allowed hardware designers to easily replace their Mask ROMs with NOR flash. And that meant that devices could conceivably be upgraded without physically opening the device.
This was such a compelling feature that the sole supplier of NOR flash was able to charge a hefty premium for NOR over NAND. In the first iteration of PocketPC 2000 devices, only the iPaq had NOR flash. Everyone else had Mask ROMs. The iPaq, however, was so popular that every one of its competitors quickly followed suit. Shortly thereafter, all PocketPCs were using NOR flash.
Rebirth of a NAND
Remember that sole supplier and the hefty premium? Such things never last. In the 2000 and 2002 releases, our OS completely relied on XIPing, which largely locked people into NOR flash. As a result, NOR became so expensive that is started to cost more than NAND and RAM combined. (16M of NOR cost more than 16M of NAND + 16M of RAM.) When that happened, some clever OEMs started putting in NAND and an extra chunk of RAM. Then, at boot time, they'd copy all of the code out of the NAND into the RAM and run from the RAM (you can XIP from RAM).
We got a lot of OEM requests to enable NAND in a more reasonable way. It was overkill to copy the entire image into RAM. So, in our 2003 release, we enabled a scheme that allowed NAND to be a first class citizen in PocketPCs and Smartphones. NAND devices would need more RAM than equivalent NOR devices, but only a few megs more, not the entire image's worth. Not needing that couple of megs of RAM was a definite advantage for NOR. But the price differential was so large between NAND and NOR that most OEMs switched to NAND.
Persistent Storage and NOR
To make things worse for NOR, Persistent Storage also entered the picture. The first MS Smartphone was released in 2002. It was NOR based, XIPed, and had persistent storage. It's extremely difficult to do persistent storage and XIP in the same chip at the same time. There was technology to do it on those 2002 smartphones, but their performance, especially when storage got tight, wasn't very good.
While we were developing the 2003 smartphone release, we found that if we stopped XIPing and treated the NOR as if it were NAND we got a substantial speedup in persistent storage. When OEMs learned that they could get a performance benefit by treating their expensive NOR like inexpensive NAND, most of them switched to NAND flash.
To make things even worse for NOR, it's much faster to erase and write NAND than it is NOR. So, even when you treat NOR as NAND, NAND outperforms it.
Why use NOR then?
There are a number of reasons. For one, as NOR's lock on the market eroded, so did its price differential. These days NAND and NOR are in the same ballpark in terms of cost. For another, if persistent storage isn't involved, then XIPing is better than not XIPing. XIPing saves memory and launches apps faster. For instance, we saw a significant improvement in performance when we first enabled XIP on the Treo 700w.
In the final days of non-Persistent Storage PocketPC devices (pre-WM5), the choice between NAND and NOR was pretty difficult. The prices were in line with each other, the XIP benefits were tangible, and the erase/write time differences didn't matter.
Also, some processors come with a sizeable chunk of NOR flash built in. That reduces the size of the circuit board and makes NOR extremely competitive, price wise.
Devices like the 700w are poster children for great uses of NOR. The 700w has 64M of NOR and 64M of NAND. It stores the OS in the NOR and XIPs it, and it stores the user data in NAND. That gives it the best of both worlds in terms of performance.
The future is … murky
So, what does the future hold? As always, that's hard to predict. Hybrid devices with some NOR and some NAND show promise, especially when the NOR bit comes "for free" in the processor. On the other hand, some NAND providers are building a bit of RAM into their chips and making them act like they XIP. The hope there is to get the read benefits of XIP with the write benefits of NAND. There are also upcoming technologies that are promising the persistence of Flash with the speed of RAM. These devices could conceivably replace both NAND and NOR. Your guess is as good as mine which of possibilities will prevail.
Mike Calligaro