Flash Memory, Not Networks, Hamper Smartphones Most
Lucas123 writes "New research shows that far more than wireless network or CPUs, the NAND flash memory in cell phones, and in particular smartphones, affects the device's performance when it comes to loading apps, surfing the web and loading and reading documents. In tests with top-selling 16GB smartphones, NAND flash memory slowed mobile app performance from two to three times with one exception, Kingston's embedded memory card; that card slowed app performance 20X. At the bottom of the bottleneck is the fact that while network and CPUs speeds have kept pace with mobile app development, flash throughput hasn't. The researchers from Georgia Tech and NEC Corp. are working on methods to improve flash performance (PDF), including using a PRAM buffer to stage writes or be used as the final location for the SQLite databases."
writing smaller applications? Maybe, you know, stick to one thing and master it instead of spewing forth so many OSes, languages and nonsense that there's no hope of reigning in the software chaos? But don't worry, the hardware folks will pull a rabbit out of their hats (again), so that software geeks never, ever have to learn or change.
Users don't have the option of trading network performance for faster local storage. The two are so unrelated it's not clear as to why we're comparing them (I'd use the term "apples and oranges" but I'm sure that would piss off some anti-Apple trolls.)
And sure, SSDs could be faster, believe me nobody would complain if they were. But after using spinning magnetic storage for decades, SSDs seem blisteringly fast to me.
There's no -1 for "I don't get it."
Why not have the phone offload all the info to a ramdrive and occasionally backup the info to the ssd?
Phones could be blisteringly fast if they used ram this way.
It would be nice if it were faster. I backed up and downloaded the pictures off my iPhone to my computer today. How long did it take? 3 hours.
While I sympathize with developers who have ambitious ideas, the bottom line is that you have to develop within the limitations of the hardware. If your software is too slow or otherwise suffers in performance, then your software is simply too slow.
Cue stories about how RAM chips were too slow to keep up with cutting-edge video controllers in the 90's.
so you want a phone to have 4-32GB RAM disk + say 256-512MB + system ram
Absolutely. From Droids to Black Berry phones, I've long suspected faulty storage. When a phone become non-reponsive because you received or opened an email or installed a new app, chances are the pending writes are not going through like they should. Same goes for browsing the web. History and cache are constantly being read and written back to the phone. If the problem is with the storage, that too will effect performance and stability with shoddy flash memory.
Life is not for the lazy.
Reliable, fast, energy efficient. Choose two.
Flash memory may be responsible for slowing things down, but you can't slow it down if you don't have it.
I would kill for a happy medium between $35 for unlimited data that barely works (Virgin) and $80 and a first born child for 2gb/month for decent coverage (Verizon, AT&T, T-Mobile...). A little legislation wouldn't be a bad thing, though I understand I might think differently if I had campaign donations to worry about.
It is nice to see that there is an actual effort to make an empirical test, but I think most techies had this figured out long ago. The simple test is boot time on the devices. A relatively small OS which typically takes 2+ minutes to cold boot, yeah sounds like a storage issue.
Fixing the issue with some form of data striping would be attractive, but chews battery for each additional chip. Some kind of balloon-able RAM buffer configuration would work nicely, where the buffer RAM was turned off when the device was not in active use or where individual modules could be brought online as needed.
Frankly, Microsoft pointed at flash as being a speed culprit early on with their requirements for WP7 phones for add-on, non-removable storage expansion micro SD cards. Sure there were a lot of people all gruff and bemoaning the double price premium for Microsoft certified micro SD cards, but it was mostly just a lack of understanding of the needs for device performance. If I recall correctly, Microsoft had somewhere around 10-12 MiB/S read and write and I/O per S requirements which put most cheap commodity flash modules out of the running. I would also guess that WP7 stripes data between the on board and add-on SD card or otherwise uses some kind of secondary caching algorithm since the micro SD cards get married to the device.
In the Android world, plenty of RAM cache hacks have been implemented, most notably some in Cyanogen and similar. Consider the technical implications of this post at XDA forums regarding I/O schedulers: http://forum.xda-developers.com/showpost.php?p=22134559&postcount=4
As an anecdote, the most frequent crashy app on my Android device is the Gallery. It tends to have all kinds of issues with the scheduler as it is reading images and creating thumbnails, likely due to flash access speeds.
Isn't this true with any computer system since the dawn of computers?
from plugging in jumper wires to transfer a program from paper to memory, to tape streamers, to magnetic disks, to flash the slowest thing for a computer is its mass storage, always has been, and will continue to be for a very long time
Things would have been a lot less tense if he had clarified.
Can anyone explain why it is that my desktop PC with 6 gb of ram and a 1 tb hard drive can actually CLOSE a program when I exit it but my smartphone with a 1ghz processor and 1 gb of ram for memory and storage total keeps every damn program running forever?
Who's idiot idea was this anyways?
using SQLITE for every operation is for sure convenient, but is it efficient? I have seen weird performance issues when in principle small data structures maintained using sqlite exceeded certain bounds.
It is the task of the programmer to distiguish between data which should be kept in ram and data which can be written to flash.
For starters, let's be specific about what we're discussing here.
In all cellphones, you have an RF, a baseband and memory. The memory is typically a combination of NOR Flash and RAM, and this combination of Flash and RAM - either SRAM or DRAM - is a cellphone specific memory product called Multi-chip products (MCP). That's the memory typically used for things like the cellphone firmware and the phone's OS, and is typically there on all phones - entry level ones or high end ones. This flash and RAM is typically high performance, where one typically is not dealing w/ slow access times.
The apps part of the cellphone is what contains all the extra multimedia features that are not necessary for a phone, but the nice to have things - the stuff like a web browser, multimedia player, camcorder, games, java apps, et al. That's the stuff that goes into a cellphone's internal NAND (not the micro-SD card, mind you, which is used for storing the user's external data, such as videos, photos, music, et al.) In this case, the only reason NAND is used is that it's cheaper than NOR, and the MCPs used here is typically NAND plus DRAM, where the NAND data needed is cached by DRAM b4 being accessed by the processor. Such a solution worked cost-wise due to both DRAM and NAND being cheap, and DRAM being adequately fast (but power-draining, hence the new 'mobile DRAM' standards.
Now, there have been attempts by flash memory companies into coming up w/ high performance flash devices, using various techniques, such as DRAM interfaces on NOR flash, getting NAND cells and giving them NOR interfaces, and so on. That would also obliviate the need to have separate memory for baseband and apps processors. But guess what - none of them would be as cheap as plain ole vanilla NAND is, making them instantly unattractive to cellphone manufacturers, and also, power consumption would be much higher. Sure, one could possibly achieve an optimal point where both power consumption and performance levels are acceptable, but the costs are still not going to be @ either NAND or DRAM levels. Once phonemakers or carriers or users are prepared to pay those prices, one will see the memory bottleneck disappear.
Yep, even if your data arrives ahead of the stream your program will be considered a putz if its output isn't displayed instantanously!
Time is what keeps everything from happening all at once.
I remember with the old versions of windows CE it was basically like knoppix with a fused file system to ram. If the devices battery died or the OS crashed all of your data went with it. They had a separate backup battery but obviously this didn't stop your data from disappearing on a regular basis. One thing I loved about the platform between XIP and your data in ram all file operations at least were instantaneous no delay and no worries about burnt out flash.
Given the capabilities of modern hardware it is a bit sad to see quite a bit of capability wasted due to laziness all-around. Caches, ram disks..etc help but really are not the answer. The applications data tier need to be smart enough to at least minimize random writes even if that means giving up some level of reliability in persistant storage. Browsers will still work just fine if the device crashes in the middle of setting a cookie. Make it part of the platform/APIs so developers have access to the best tradeoffs.
At some point in the future your legislation would be a good thing but for now the only reason AT&T has dumped ~$10B into upgrading their network in the last 6 months to a year is because there are people willing to pay the $80/month.
Once we hit LTE-Advanced (1gbit/s from tower to stationary devices...shared between all devices but 1gbit/s between 250 devices is still 4mbit/s which is plenty fast for even HD netflix) we'll see the return of unlimited data, until then these $80-100 plans are financing the rapid progression towards this cellular singularity.
Well, I just tested my class10 microSD and it has 45 IOPS !! Lucky me, I bought a class4 microSD which has 1800 IOPS and boy, can I feel the difference. PS: My disk has 200 and my SSD has 14000 iops.