Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Flash Memory, Not Networks, Hamper Smartphones Most

Soulskill posted more than 2 years ago | from the at-least-flash-doesn't-do-it-intentionally dept.

Cellphones 121

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."

cancel ×

121 comments

Sorry! There are no comments related to the filter you selected.

Trolling campaign by GreatBunzinni, aka Rui Maciel (-1)

Anonymous Coward | more than 2 years ago | (#39089353)

GreatBunzinni [slashdot.org] has been regularly accusing [slashdot.org] almost 20 accounts of being employed by a PR firm to astroturf Slashdot, via anonymous comments without any evidence. Using multiple puppet accounts, he mods up these anonymous posts while modding down the target accounts in order to censor their viewpoints off of Slashdot.

Most of the users he targets have done nothing more than commit the sin of praising competitors to Google or other Linux-based products. Many of them are subscribers who often get the first post, as subscribers see stories earlier than non-subscribers. When one of GreatBunzinni's accusations is posted as a reply, the original post suddenly and mysteriously receives a surge of "Troll" and "Overrated" moderations from his puppet accounts, while the accusing post gets modded up, despite presenting zero evidence. Often, additional anonymous posters pop up to give support, which also receive upmods. At the same time, accused users who defend themselves are modded down as "Offtopic."

It turns out GreatBunzinni is actually a 31-year-old C++/Java programmer from Almada, Portugal named Rui Maciel, with a civil engineering degree from Instituto Superior Técnico and a hobby working with electronics. He runs Kubuntu and is active on the KDE mailing list. Rui Maciel has accounts at OSNews, Launchpad, ProgrammersHeaven, the Ubuntu forums, and of course Slashdot. While trolling Slashdot, he listens rock music like Motorhead, Fu Manchu, and Iron Maiden, but lately he's been on a big Jimi Hendrix kick, with some Bootsy Collins on the side (as you might have guessed, he has a Last.fm account). He's also a fan of strategy games like Vega Strike and Transport Tycoon.

Rui Maciel accidentally outed himself [slashdot.org] as the anonymous troll who has been posting his baseless accusations to every Slashdot story. He wrote the same post almost verbatim, first using his logged-in account [slashdot.org] and then in an anonymous post [slashdot.org] submitted days later. Note the use of the exact same terminology and phrasing in both posts.

Feel free to email Rui Maciel at greatbunzinni@gmail.com or rui.maciel@gmail.com, or
IM him at greatbunzinni@jabber.org (the same Jabber account he lists on his Slashdot account). You can also visit his developer blog at http://rui_maciel.users.sourceforge.net/ [sourceforge.net] . Check out his poorly written parsers or his crappy cube apps [programmersheaven.com] .

tl;dr: A man named Rui Maciel is actively trolling Slashdot with multiple moderator accounts in an attempt to filter dissenting opinions off the site.

Re:Trolling campaign by GreatBunzinni, aka Rui Mac (-1)

Anonymous Coward | more than 2 years ago | (#39089409)

You said:

GreatBunzinni [slashdot.org] has been regularly accusing [slashdot.org] almost 20 accounts of being employed by a PR firm to astroturf Slashdot,

Well, I doubt that Bonch and his buddies are a PR Firm. In fact, I believe Twitter [slashdot.org] died, went to hell, and was then reincarnated with a vengeance as Bonch. He's the sockpuppet master you love to hate.

While trolling Slashdot, he listens rock music like Motorhead, Fu Manchu, and Iron Maiden, but lately he's been on a big Jimi Hendrix kick, with some Bootsy Collins on the side

Seems that he has good taste in Music. I'd buy 'im a beer.

tl;dr: A man named Rui Maciel is actively trolling Slashdot with multiple moderator accounts in an attempt to filter dissenting opinions off the site.

*pulls off Bonch's mask...dun dun dun!* Bonch is really the Great Bunzini! But why, Bunzini?!

i was dicking you all around to hide my mod point-harvesting operation by pandering to both sides and creating the illusion that we were fighting each other...and I would have got away with it if it weren't for those meddling kids...

Signed, Ethanol-fueled.

Or, you know, maybe (2, Insightful)

Anonymous Coward | more than 2 years ago | (#39089369)

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.

Re:Or, you know, maybe (1)

arkane1234 (457605) | more than 2 years ago | (#39089523)

While I agree, I don't see it happening... It's almost like inventing another layer of abstraction in programming is a marketting ploy now. We had C for the longest time, then Java & .NET came out and since then it seemed like abstraction was just "the" answer. The sad part is that Java is kind of cool with its pure object orientation & cross platform abilities but the idea just blew up into a new paradigm so to speak...

That being said, I think objective C is kinda neat.

Re:Or, you know, maybe (1)

mjjochen (638603) | more than 2 years ago | (#39089711)

Of course (abstraction being the answer). You recall, that we will all be programming by interpretive dance [slashdot.org] soon (said only half-way jokingly).

Re:Or, you know, maybe (5, Informative)

icebike (68054) | more than 2 years ago | (#39089817)

writing smaller applications? Maybe, you know, stick to one thing and master it instead of spewing forth so many .

An interesting comment, but not the focus of the linked article.

Its not about the size of applications. Large reads into memory of big applications is not the problem, as this happens with sequential reads, which are very fast on the media type they were looking at.

Its the small RANDOM read/write units that cause the problem, the small sqlite database updates to databases stored on the MicroSD card that are the problem.
The recommendations for placing often used sqlite databases in RAMdisk yielded a tremendous performance increase because it eliminates tons of little random read and write operations that tend to be scattered all over the microSD card. This is buried in page 10 of the Actual Research document [usenix.org] , but pretty much glossed over in the linked article. This would require a bit of an OS re-engineering, on the part of smartphone OS designers, such as offering APIs to do much of the routine data storage that these apps all end up using. That storage would be in ram, backed up to MicroSD in a more efficient manor.

Programmers tend to heavily use the general-purpose
“all-synchronous” SQLite interface for its ease of use but
end up suffering from performance shortcomings. We
posit that a data-oriented I/O interface would be one that
enables the programmer to specify the I/O requirements
n terms of its reliability, consistency, and the property of
he data, i.e., temporary, permanent, or cache data, with-
out worrying about how its stored underneath.

Yes, ramdisk can go away on a un-planned phone reboot, but if the RAMdisk was used as a cache, and occasionally written to disk performance would be much better, because you find these little sqlite databases used all over Android and IOS.

Re:Or, you know, maybe (4, Informative)

arth1 (260657) | more than 2 years ago | (#39090335)

Its the small RANDOM read/write units that cause the problem, the small sqlite database updates to databases stored on the MicroSD card that are the problem.
The recommendations for placing often used sqlite databases in RAMdisk yielded a tremendous performance increase because it eliminates tons of little random read and write operations that tend to be scattered all over the microSD card.

How about the recommendation to not use sqlite whenever a flat file works better? Do one write instead of database operations which cause multiple blocks to change even if you only change one thing.

And if you have to use SQL for whatever reason, don't use indices unless absolutely necessary. It seldom is, despite what school has taught you. The index has to get updated too, which causes additional non-sequential writes. The minor speed boost you may get from selects are easily eaten up by the major speed bumps you cause on inserts and updates.

An embedded system, which this should be treated as, isn't a miniature version of your desktop computer. And an SD card isn't a miniature version of a hard drive, or even an SDD. You have to think about minimizing writes and especially random writes. Not just minimize the number of high-level-abstracted changes, but actual low-level writes caused by them. Because there isn't a 1:1 correspondence.

Also, memory is at a premium. Dropping pages really hurts speed. Don't rely on garbage collection as a substitute for using less memory or freeing up memory manually.
Don't hang on to resources in case you may need them. Be cooperative, and close the sockets and file handles when you don't use them, because other parts of the system may benefit from that memory. CPU is rarely the issue, so don't worry about CPU outside identified bottlenecks. Worry about being a resource hog, because that causes the entire system to slow down, and drag your app with it.

Re:Or, you know, maybe (2)

Tablizer (95088) | more than 2 years ago | (#39090767)

In the future, the distinction between desktop and portable will likely get blurrier, and development techniques and related economics will become similar.

Re:Or, you know, maybe (1)

arth1 (260657) | more than 2 years ago | (#39092571)

In the future, the distinction between desktop and portable will likely get blurrier, and development techniques and related economics will become similar.

In the future, we will have flying cars too.

Don't be a cargo cult follower and believe that everything will be solved by Moore's law, convergence, or whatever silver bullet seems most promising. Program for reality.

Re:Or, you know, maybe (2)

msobkow (48369) | more than 2 years ago | (#39091359)

And if you have to use SQL for whatever reason, don't use indices unless absolutely necessary. It seldom is, despite what school has taught you. The index has to get updated too, which causes additional non-sequential writes. The minor speed boost you may get from selects are easily eaten up by the major speed bumps you cause on inserts and updates.

100% true!

The issue is so common that a virtual index that is not maintained by the database is often referred to as a "business index". With small datasets, application performance is often increased overall by relying on full-table scans for non-indexed data rather than applying an index.

Another situation where this often crops up is keys that have a low variance. For example, a hundred thousand record table where one of the index columns only has a dozen values. There are no hard numbers, but as a rule of thumb, if there are 10% the number of keys that there are records for an expected table size, I test a business index approach to see how the performance works out.

But most programmers aren't professionals who test performance before releasing code. As long as "it works", they ship it. Performance tuning will only get done if enough paying customers are complaining that the revenue stream is threatened.

Re:Or, you know, maybe (0)

Anonymous Coward | more than 2 years ago | (#39091519)

> But most programmers aren't professionals who test performance before releasing code. As long as "it works", they ship it. Performance tuning will only get done if enough paying customers are complaining that the revenue stream is threatened.

Which is how it should be. If we performance-optimised the crap out of every little thing before ever releasing it, where would we be?

Besides, how optimised does your $1 flashlight, fart app or todo-list manager really have to be? On the other side of the spectrum we are currently experiencing a renaissance in user-interface design. Tons of amazing apps would never have seen the light of day if the bedroom programmer that made it had to spend her life savings on bringing in the Database Experts before submitting it to the app store.

Remember that these are typically 1 to 5 dollar niche apps we're talking about here. There's a place for squeezing milliseconds out of the time it takes to complete a task, but this typically not the place. Smartphones barely do multi-tasking anyway - if the app you're currently actively using is "slow", then it is unlikely to slow the rest of "the system" down in any meaningful way.

Re:Or, you know, maybe (1)

Walter White (1573805) | more than 2 years ago | (#39092239)

How about a recommendation to do DB writes in a separate thread? I know I've seen that recommendation but don't recall if it was in the info published by Google or in third party tutorials. It has always been the case that if you are writing interactive programs, you need to think about spinning anything that can block response to the UI into a separate thread.

I'm sure that you can program something faster than a database access using flat files. That too has always been the case. However you trade off programming complexity and time/cost to market by doing so.

Indices for tables. Add database normalization to this category. Indices provide a benefit when the typical workload favors reads of large tables vs. frequent updates. They do require extra writes on update but can significantly reduce the read load when present. They do not benefit every case but can provide a benefit when applied for the right reasons. Normalization likewise can increase the writes required while reducing the possibility of inconsistent records.

There will always be something that constrains application speed be it processor, RAM speed or quantity, network speed or backing store. Frequently it is the backing store as processor, RAM and network have gotten pretty fast. Make the Flash in a [phone fast enough and something else will determine application responsiveness.

Re:Or, you know, maybe (1)

arth1 (260657) | more than 2 years ago | (#39092593)

How about a recommendation to do DB writes in a separate thread?

In one word: no.
The SD card is for practical purposes a single-threaded bottleneck, which doesn't do concurrent writes and reads like your average SSD.
Multiple threads for the sake of multiple threads is going to hurt performance by the overhead and extra memory usage. Use multiple threads when you need them, but not to camouflage the underlying problem which you just make worse by doing so.

Re:Or, you know, maybe (1)

Walter White (1573805) | more than 2 years ago | (#39092747)

In one word: no.
The SD card is for practical purposes a single-threaded bottleneck, which doesn't do concurrent writes and reads like your average SSD.

In other words, while a DB thread blocks on a write, the UI thread will not service the interface? That's a disappointment. I wonder if the same is true of the built in flash (which is used by default for application databases.)

Re:Or, you know, maybe (1)

arth1 (260657) | more than 2 years ago | (#39093423)

In other words, while a DB thread blocks on a write, the UI thread will not service the interface?

It may, if there are no reads or writes for the GUI. Not even reads. Else, you'll likely make a bad problem worse. Parallelism is only good as long as you use resources that are available for it, and keep in mind the overhead of setting it up.

The blocking on the card can be mitigated by having plenty of RAM - in which case OS caching might cause your parallel read to succeed even though the SD card is busy. But you shouldn't count on that.

Re:Or, you know, maybe (1)

21mhz (443080) | more than 2 years ago | (#39092405)

And if you have to use SQL for whatever reason, don't use indices unless absolutely necessary. It seldom is, despite what school has taught you. The index has to get updated too, which causes additional non-sequential writes. The minor speed boost you may get from selects are easily eaten up by the major speed bumps you cause on inserts and updates.

In many applications reads (SQL SELECT) happen much more often than writes. In this case, indexing still brings an overall benefit. In fact, the hardware architecture of flash memory is tilted to fast reads versus very slow writes, so if you have to do any writes at all, you already pay the price. The non-sequentiality issue is also mooted by controller sicruitry in bulk flash devices like SD cards, which reallocates logical buffers for wear leveling, hiding bad blocks, and write optimization.

The real issue with SQL in embedded devices is mainstream transactional semantics applied to flash storage. Often the programmers are not even aware that each INSERT not framed in an explicit transaction causes a full flush to the medium, which may be disastrous not only to this application's performance, but other concurrent file I/O.

Re:Or, you know, maybe (1)

arth1 (260657) | more than 2 years ago | (#39092547)

The non-sequentiality issue is also mooted by controller sicruitry in bulk flash devices like SD cards, which reallocates logical buffers for wear leveling, hiding bad blocks, and write optimization.

This is a common myth, and why I wrote that SDs are not like SSDs. For a CF card, it's somewhat true, but an SD card doesn't have more than very rudimentary controller for basic wear levelling and bad block mapping, and no RAM buffers in which to prepare write optimizations, nor multiple channels in which to service other operations while one expensive operation occurs.
Don't treat the SD card in a smartphone as if it was an SSD. Both are MLC (or in rare cases SLC), but the similarity stops there. An SD card is designed for sequential reads and writes because it lacks the advanced controllers of SSDs.
A VW beetle and a Porsche 911 both have four wheels and a combustion engine - and they're both based on designs by Ferdinand Porsche too - but if you try to drive the beetle as if it was a performance car, you'll set yourself up for nasty surprises.

Avoid random writes. Avoid excessive writes. Avoid concurrent operations.

Re:Or, you know, maybe (4, Interesting)

Shavano (2541114) | more than 2 years ago | (#39089829)

A couple points:

1. Smart phone makers have no control of what crap software you're going to stick on their phone -- only the crap software that comes preinstalled.

2. The former is the point of why consumers buy smart phones in the first place.

3. The smart phone makers have a big incentive to find a way to make the hardware faster because running your apps faster is a selling point.

Re:Or, you know, maybe (1)

Urkki (668283) | more than 2 years ago | (#39091119)

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.

Or, you know, maybe mobile phone makers should stop making phones with increasing resolutions and CPU power and ability to do multitouch pan&zoom. It was a neat trick from Apple, first make people expect smooth pan&zoom at paltry 320x480 resolution. And then the resolution creeps up to sizes like today's 800x1280 in the latest tablet-phone hybrids, where people expect apps to take advantage of the resolution, but still have equally smooth scrolling. That's like 6x bandwidth increasnig throught the graphics processing pipeline. CPU has kinda kept up (with multicore), but sadly, flash has not.

Re:Or, you know, maybe (3, Informative)

beelsebob (529313) | more than 2 years ago | (#39091241)

Except that apple are still doing this just fine at 1024x768, and are likely in a few months to be doing it just fine at 2048x1536... The reason the iPhone can do this and android can't is nothing to do with the resolution – it's that iOS has always used the graphics hardware to render the UI.

Re:Or, you know, maybe (1)

Urkki (668283) | more than 2 years ago | (#39091421)

That's not really relevant to flash memory performance, hardware acceleration is just what puts the bottleneck squarely at flash throughput. If you have N x the pixels on screen, you'll need N x throughput for flash memory, or the app will either load slower, or it will not take advantage of the resolution and needs to resort to real time scaling (which is ok, but far cry from proper "photoshop" scaling quality). Another thing is increase in camera megapixels, and also increase in acceptable thumbnail sizes, due to increased screen resolution. Hardware acceleration only starts to help once image data is in RAM.

Re:Or, you know, maybe (1)

TheRaven64 (641858) | more than 2 years ago | (#39092323)

You're assuming that the majority of what is on screen is from raster sources and not vectors. Both Android and iOS make heavy use of vectors throughout the UI and, while these do place a heavy load on the CPU and GPU for scaling, they place very little load on the flash. It's also worth noting that the flash write times are the main problem - read is usually fast enough.

Re:Or, you know, maybe (1)

beelsebob (529313) | more than 2 years ago | (#39092937)

The point being that whether the UI stutters or not is nothing to do with flash load times – it's purely and simply to do with whether the UI code is written in a sane way (i.e. with multiple threads for image loading, and with hardware acceleration used to get it onto the screen).

Re:Or, you know, maybe (1)

Urkki (668283) | more than 2 years ago | (#39093687)

UI stutter isn't flash problem, but long app start time, or app UI having nothing to display yet because hasn't loaded yet certainly can be a flash issue. Relatively slow flash might actually reduce cases of UI stutter, since CPU isn't so busy processing data... ;)

Re:Or, you know, maybe (-1, Troll)

quasipunk guy (88280) | more than 2 years ago | (#39091247)

Android just sucks.

Re:Or, you know, maybe (1)

TheRaven64 (641858) | more than 2 years ago | (#39092325)

This is true, however Android doesn't suck noticeably more than any of its competitors, just in different way.

A truly stupid comparison (2, Insightful)

MrEricSir (398214) | more than 2 years ago | (#39089375)

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.

Re:A truly stupid comparison (5, Interesting)

Microlith (54737) | more than 2 years ago | (#39089413)

SSDs and the eMMC NAND storage inside smartphones are wildly different, even if they are fundamentally the same concept.

SSDs get all of their speed from massive parallelization, writing to and reading from multiple die at once. Often these die tend to consume a bit more power, allowing for faster overall access. In smartphones, you usually have eMMC as the primary NAND device. These are basically high capacity, soldered down SD cards packed with several high density MLC NAND. You have drastically fewer IO channels, no DMA capability (it's all PIO via the CPU,) and slower NAND due to reduced power requirements.

This is why watching your memory consumption is essential on mobile devices, and why optimization for each device has to be done. The moment the CPU has to access the NAND, you're going to take a performance hit no matter how many cores you have.

Re:A truly stupid comparison (3, Informative)

dmitrygr (736758) | more than 2 years ago | (#39089761)

Not even close to correct. All current, last generation, and the generation before that SoCs for phones/Tablets/PDAs support DMA to SDMMC module. Tegra 1/2/3? yes Omap 1/2/3/4/5? Yes QC? Yes Marvell 3x, PXA2xx? Yes

Re:A truly stupid comparison (1)

mrmeval (662166) | more than 2 years ago | (#39089883)

This is self-refreshing DRAM so as long as it has power it's good.
http://www.cellularram.com/faq/index.html [cellularram.com]

It would not be that expensive to have one 128MB one for long term storage. Micron has one that's very low power though there may be others out there.

I'm not a fan of flash.

Re:A truly stupid comparison (0)

Anonymous Coward | more than 2 years ago | (#39089475)

So this is a thinly veiled advert for PRAM, right?
Let's face it, there's no big surprise that random writes to flash are incredibly slow - it's been like that for the last decade.
What exactly are you going to be doing with all that IO? Will your battery last long enough to actually read it all?

Re:A truly stupid comparison (3, Informative)

Microlith (54737) | more than 2 years ago | (#39089493)

The long term goal would be to minimize the latency and increase the speed of the writes. Doing so lets you return to a low power state as fast as possible, on top of improving performance.

Re:A truly stupid comparison (4, Funny)

Nemyst (1383049) | more than 2 years ago | (#39089649)

The good term is "Apples and Androids", obviously.

Re:A truly stupid comparison (1)

obarthelemy (160321) | more than 2 years ago | (#39089705)

Yep. pointing out where performance issues come from is soooooooooo useless.

Re:A truly stupid comparison (1)

MrEricSir (398214) | more than 2 years ago | (#39089849)

Pointing out performance issues is useful. Using them as an excuse to shift blame is not.

Re:A truly stupid comparison (1)

Anonymous Coward | more than 2 years ago | (#39089893)

Well, that'll change once the new high definition DRM [nextgenera...memory.com] is entrenched into every single wafer of flash. Only then will it be safe to let citizens have local storage. Maybe.

Re:A truly stupid comparison (2, Informative)

Anonymous Coward | more than 2 years ago | (#39090061)

They are being compared in this manner because in the US, a network provider made an advert where they "race" two smart phones to prove that their network is faster. That is, they have two phones and click "install" on the market at the same time on both of them, and then we see that one of them installs in 2 seconds flat while the other one takes like 30 seconds to install the the app. The advert is obviously bullshit because even on a wifi connection and broadband, apps never install that fast. This article explains the reason why: the flash memory can't write the data fast enough to keep up with the download speed.

So although users don't have the option to trade one for the other, they do have the option to not be fooled into buying something they don't need and can't use.

Flash isn't speedy. :( (0)

Anonymous Coward | more than 2 years ago | (#39089381)

Looks like the Flash isn't as speedy as we thought. :/

Re:Flash isn't speedy. :( (0)

Anonymous Coward | more than 2 years ago | (#39091311)

flash itself is SLOW but SSD that use 32 channels of flash in RAID0 are very fast indeed, its just that there is no phone on the market today using SSD, all use ordinary slow flash

Re:Flash isn't speedy. :( (1)

unixisc (2429386) | more than 2 years ago | (#39091779)

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.

Why not a ramdrive? (2)

Anonymous Coward | more than 2 years ago | (#39089393)

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.

Re:Why not a ramdrive? (2)

Kenja (541830) | more than 2 years ago | (#39089415)

For much the same reason they dont have RAID-0 in the phone. It's too expensive, and its a PHONE!

so you want a phone to have 4-32GB RAM disk (2)

Joe_Dragon (2206452) | more than 2 years ago | (#39089417)

so you want a phone to have 4-32GB RAM disk + say 256-512MB + system ram

Re:so you want a phone to have 4-32GB RAM disk (0)

Anonymous Coward | more than 2 years ago | (#39090843)

I think the idea is to have the API's allow you to make your data changes in RAM, and have those changes commit to persistant storage later... not to add an additional RAM storage device in the phone.

Re:so you want a phone to have 4-32GB RAM disk (1)

TheRaven64 (641858) | more than 2 years ago | (#39092359)

No. You want a separate RAM cache, with its own battery, that can persist between crashes and phone power cycling. The idea would be that changes would be stored there and later flushed to the flash if they had not been superseded after a while. You want something that has the same persistence guarantees as a flushed write to flash, but at a lower cost. Having a small amount of RAM (32MB would probably be enough) with a separate - small - battery or capacitor. When the phone loses power, it would write its contents out to the flash. This is not a new idea - server RAID controllers do the same thing.

Re:Why not a ramdrive? (4, Insightful)

Microlith (54737) | more than 2 years ago | (#39089439)

RAM consumes a lot of power, far more than a NAND disk that can be powered down in between accesses.

Re:Why not a ramdrive? (1)

hcs_$reboot (1536101) | more than 2 years ago | (#39090299)

Even during write operations?

Re:Why not a ramdrive? (-1, Troll)

Ethanol-fueled (1125189) | more than 2 years ago | (#39090497)

the point is that a lot of morons are checking their Facebooks every 5 seconds while the smart ones aren't biting down into the mobile paradigm bullshit.

Seriously, mobile people - They advertise throughput but cut you off at caps. They advertise this and cut you off at that. Are you all fucking morons?

Yeah, you are. Dumb, dumb motherfuckers.

Re:Why not a ramdrive? (1)

viperidaenz (2515578) | more than 2 years ago | (#39090951)

DRAM consumes a lot of power. SRAM consumes practically none.

Re:Why not a ramdrive? (0)

Anonymous Coward | more than 2 years ago | (#39091813)

Do you have any idea what are you talking about?

Re:Why not a ramdrive? (1)

21mhz (443080) | more than 2 years ago | (#39092439)

Do you have any idea what are you talking about?

The GP probably does, but SRAM is still prohibitively expensive for any practical memory size for a smartphone.

I would like faster flash memory (1)

CoolVC (131998) | more than 2 years ago | (#39089405)

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.

Re:I would like faster flash memory (1)

robogun (466062) | more than 2 years ago | (#39089819)

The flash memory isn't what's holding it back. Sounds like whatever software you're using to bridge your locked-down device to the computer is slowing down the process.

Many devices hook up directly via USB2.0 and/or have removable flash cards which download at 2GB/min, these may save you a lot of time if this is really a problem.

Re:I would like faster flash memory (1, Troll)

Lumpy (12016) | more than 2 years ago | (#39090365)

That "software bridge" is called the craptastic USB stack that Microsoft uses on windows 7.

Even if you open the iphone from the file manager and grab them by hand it takes forever. USB2.0 is utter crap for any large amounts of data transfer. Small single files? good, sustained data transfer is garbage. Apple was stupid for removing the Firewire interface from the ipod and iphhone.

12 gigs of photos over USB 2.0 is slow as hell simply because the USB2.0 speeds are slow as hell.

Re:I would like faster flash memory (2)

arth1 (260657) | more than 2 years ago | (#39090445)

Reading 12 gigs of photos over high-speed USB 2.0 isn't that bad when you do it from a reasonably fast card and dedicated card reader. You can typically get 360 Mbps (of the 480 Mbps advertised), which equals 45 MB/s, or about 5 minutes, if your HD can keep up with writing that fast.

If you use your phone as a card reader, don't expect anywhere near that speed. The phones aren't optimized for that, unlike a card reader.

Re:I would like faster flash memory (1)

BitZtream (692029) | more than 2 years ago | (#39090953)

I work for a company that sells USB flash memory devices. We've sold some rather high end ones ... I've NEVER seen 45MB/s over USB in my life, I'm fairly certain due to over head in the USB protocol that its technically impossible to do, even if its technically possible, the reality of it is that no actual USB product of any kind does anywhere near the full 480mbs that USB has when you look at the spec sheets.

My single WD 5400 RPM green laptop drive can write a sustained 80MB/s, not sure where you've found a drive so crappy it can't sustain 45.

Have you ever actually done any of this stuff you're claiming?

Re:I would like faster flash memory (1)

spire3661 (1038968) | more than 2 years ago | (#39094123)

I cant get more then 30MB/s out of USB 2.0, ever. Hell my NAS over gigabit is faster then USB 2.0

Re:I would like faster flash memory (1)

viperidaenz (2515578) | more than 2 years ago | (#39090975)

My 7 year old 2.5" USB hard drive gets sustained 30MB/sec transfer rates over USB2. The hard drive gets similar speed plugged into an IDE bus. That's on Windows 7. 12GB would take 7 minutes. The bottleneck in this picture is the hard drive platter speed and density. Not USB2. Not Windows 7.

Re:I would like faster flash memory (1)

drsmithy (35869) | more than 2 years ago | (#39091591)

You won't get much more than 35MB/sec out of a USB2 device, no matter what's backing it.

Cut back a little (4, Insightful)

Waccoon (1186667) | more than 2 years ago | (#39089411)

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.

Re:Cut back a little (2)

tuxicle (996538) | more than 2 years ago | (#39089449)

What about stories of how RAM chips today are too slow to keep up with cutting edge CPUs?

Re:Cut back a little (0)

Anonymous Coward | more than 2 years ago | (#39089809)

There aren't any. RAM speed doesn't have much bearing on the speed of modern CPUs. DDR3-1333 is good enough for pretty much everything, and DDR3-1600 is enough for the rest. AMD's APUs can make good use of faster memory (rated up to DDR3-1866, I think), but that's more for the graphics part of the chip - it's well-known that graphics processors are memory bandwidth hogs.

Re:Cut back a little (1)

bloodhawk (813939) | more than 2 years ago | (#39090249)

RAM speeds have not been a significant issue for some time now. Go and read some of the performance tests done recently on various speed RAM, even jumping from 1333 to something like 2133 DR3 RAM has such an insigificant performance change on the rig that it is clear memory is not the bottleneck nowadays. The Bus, HDD etc are the bottlenecks that hurt more than anything else.

Re:Cut back a little (1)

viperidaenz (2515578) | more than 2 years ago | (#39090991)

DRAM latency hasn't changed much in 10 years. Your 2133 ram will have the same latency has 1066 ram.
Now think why CPU's with large SRAM caches perform much better than those without. It's not like the extra few MB makes the difference. Its the 1 - 3 cycle latency

Re:Cut back a little (5, Interesting)

tlhIngan (30335) | more than 2 years ago | (#39091089)

RAM speeds have not been a significant issue for some time now. Go and read some of the performance tests done recently on various speed RAM, even jumping from 1333 to something like 2133 DR3 RAM has such an insigificant performance change on the rig that it is clear memory is not the bottleneck nowadays. The Bus, HDD etc are the bottlenecks that hurt more than anything else.

False.

RAM speed does have a significant impact. It's just that cache hides a LOT of the impact. If you ever disable the cache on your CPU, your computer would feel like it was 15 years old - it's that slow.

Now, one thing about RAM - RAM hasn't actually gotten significantly faster - the clock speeds may have gone up, but the latencies have gone up as well. The faster RAM may have true access times (measured in nanoseconds) close to that of the slower one, especially the cheaper RAM.

But a modern CPU is very cache dependent. Hell, even the little ARM in your smartphone suffers tremendously when cache is off. (I should know - I've had to do actual timing tests of the ARM caches.).

Re:Cut back a little (-1)

Anonymous Coward | more than 2 years ago | (#39091499)

Stagnating RAM speeds have most likely been caused by the same reason as stagnating CPU speeds: 2.2 GHz processors (Pentium 4 Northwood) were available in 2002 and now current processors run at up to 4.2 GHz (AMD FX 4170), which is less than twice as fast. At least current processors have about 16 times as much cache (8 MB) compared to 2002, which is why main memory speed is not so important any more in most applications.

The difference to the advances in the previous decades is striking: in 1992 the fastest processors were the first DEC Alphas at 150 MHz, and the fastest PCs were running on 33 MHZ 80486 processors. In 1982 the fastest PCs had 6 MHz 80186 processors, and the first personal workstation, Apollo DN100 with a 8 MHz 68000 processor, was introduced.

Re:Cut back a little (1)

izomiac (815208) | more than 2 years ago | (#39089873)

IMHO, it's related to how powerful x86 hardware has become. There's probably a generation of programmers that haven't really grasped the concept of various operations having a cost.

On a desktop you can write back and forth to disk rather quickly, and only power users will notice the delay, so many programs do so annoyingly frequently (e.g. it takes one million writes to boot Windows). Now that mobile devices are gaining popularity, the philosophy of "why optimize, it already runs fast enough on my hardware" is starting to show its weakness.

Of course, that's why I chose to only program as a hobby. I can waste all the time in the world on premature optimization just for the heck of it.

Re:Cut back a little (1)

TheRaven64 (641858) | more than 2 years ago | (#39092391)

There's probably a generation of programmers that haven't really grasped the concept of various operations having a cost.

The problem here is that they are taught high-level languages. In C, it's pretty easy to look at some code and figure out - roughly - how much it will cost. In Java, it's a lot harder. In JavaScript, not only is it even harder, the cost can vary dramatically between implementations. If you know an assembly language or C, then you can easily think 'how is this actually implemented?' when you write something in a high-level language. If you don't, then it's very hard to perform this translation. And guess what has been slowly disappearing from curricula for the last two decades...

Now this I believe (1)

DigiShaman (671371) | more than 2 years ago | (#39089457)

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.

Re:Now this I believe (-1, Troll)

BitZtream (692029) | more than 2 years ago | (#39090973)

Sigh, I'm gonna have to be a fanboy on this one cause its simply too easy and true ...

If you want your phone not to stutter when you open an email then you shouldn't be buying a black berry or an android device. BlackBerry devices are just shit compared to anything else on the market now days and the Android UI design and implementation issues pretty much make getting rid of UI lag an impossible feat.

Interestingly, I don't really have that issue when opening messages on my iPhone ;) /troll

Re:Now this I believe (1)

TheTurtlesMoves (1442727) | more than 2 years ago | (#39091391)

My android has no UI lag and is instantly responsive as far as I can tell.

Choose two... (4, Insightful)

Anonymous Coward | more than 2 years ago | (#39089511)

Reliable, fast, energy efficient. Choose two.

Re:Choose two... (1)

Nerdfest (867930) | more than 2 years ago | (#39089793)

Sometimes we don't even get to be able to choose one. These days, you should also add "open" to the list in the case of computer hardware.

Re:Choose two... (0)

BitZtream (692029) | more than 2 years ago | (#39090979)

You add open to your list, the rest of us have shit to do rather than play around Stallman's land of politics and agenda viruses.

Re:Choose two... (0)

Anonymous Coward | more than 2 years ago | (#39091873)

If you add open then you just get to choose one more.

Can't make it slow if you can't get it (3, Insightful)

Anonymous Coward | more than 2 years ago | (#39089547)

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.

I'm leaving slashdot (-1, Offtopic)

Anonymous Coward | more than 2 years ago | (#39089583)

Hi, I'm Anonymous Coward and I've been posting to slashdot from the very beginning.

However you lot have just become too fucking old. You've lost your idealism, and become shitty old men, which is why I'm moving to Reddit.
At first I was concerned by the lack of editors, but it's not like the editors here are worth a damn, and the new censorship system is just unacceptable. The mod system doesn't even go up to 11.

Well, it's been fun but fuck you all. And your mothers,
Good bye sirs.

Re:I'm leaving slashdot (-1)

Anonymous Coward | more than 2 years ago | (#39089713)

Fuck it. Forgot my keys. Really leaving this time. For good. Honest.

Re:I'm leaving slashdot (-1, Offtopic)

Anonymous Coward | more than 2 years ago | (#39089735)

Hahaha. Disregard that, I suck cocks.

Could have told you that... (5, Interesting)

aaronb1138 (2035478) | more than 2 years ago | (#39089733)

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 [xda-developers.com]

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.

Re:Could have told you that... (2, Informative)

Anonymous Coward | more than 2 years ago | (#39089863)

Your app does not crash because of flash. Your app crashes due to shit coding.

Re:Could have told you that... (1)

DigiShaman (671371) | more than 2 years ago | (#39089927)

Posted as AC obviously. Because your comment is based on so much ignorance of hardware that I dare say in fact you're trolling!

Re:Could have told you that... (2)

the_B0fh (208483) | more than 2 years ago | (#39090879)

A correctly written app should not crash, if the hardware and OS is working correctly (even if slowly).

Re:Could have told you that... (1)

DigiShaman (671371) | more than 2 years ago | (#39091101)

That's impossible. If you have a failing CPU, your app will crash as might the OS too. Software is nothing more than a binary set of instructions. It's up to the hardware to both execute instructions and store/read data properly. Built-in software based CRC checking will only get you so far. Failing hardware will ultimately trump any redundant code you have written.

Re:Could have told you that... (1)

SuperMog2002 (702837) | more than 2 years ago | (#39090725)

What devices are you cold booting that take 2+ minutes?

Re:Could have told you that... (1)

BitZtream (692029) | more than 2 years ago | (#39090995)

While I agree with you, I would like to point something out.

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.

If it takes 2+ minute to boot, its not a small OS, even on flash. I think we underestimate just how much crap we're asking these devices to do.

Re:Could have told you that... (1)

Threni (635302) | more than 2 years ago | (#39094069)

I sometimes wonder what's happening when a machine takes 2 mins to boot, copy a file etc. 2 mins nowadays is billions of operations, and/or gigs (or hundreds of megs) of data transfer. It's impossible to justify either. There must be some screwed up crap going on somewhere where loading the OS is seen as some sort of edge case unworthy of optimising.

Re:Could have told you that... (1)

mlts (1038732) | more than 2 years ago | (#39091075)

For Android devices, it isn't speed that is an issue, but capacity. Right now, the largest MicroSD card that I can find for an Android phone is 32 gigs. A 64GB card was announced last May, but still is vapor.

I'd like to see an Android phone that can step up to the plate and keep competitive with the iPhone 4S on this front. At the minimum, add another SD card, so apps that can point to a storage place other than /sdcard or /mnt/sdcard can use it.

I beg to differ... (0)

Anonymous Coward | more than 2 years ago | (#39090047)

I don't doubt that NAND flash slows the theroretical performance of of my iPhone. Indeed their efforts seem to be soundly arguing that there is a memory bottleneck on my phone. Still, when my connectivity via 3G AT&T is marginally better then a satellite connection, and is decimated by AT&T's home broadband via wifi (or COX cable via wifi); it is obvious my true bottleneck is AT&T's failure to upgrade their wireless network. Please do not allow this as an arguement in court for anyone sueing AT&T for their failure to provide adequate service.

Thank you,

Nexion

Gee storage is a bottleneck (4, Insightful)

Osgeld (1900440) | more than 2 years ago | (#39090347)

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

O RLY? (0)

Anonymous Coward | more than 2 years ago | (#39090661)

So the reason all my web pages load slowly on sprint 3g is because...the web browser uses flash???
Well now I feel stupid for thinking it was the ~60kbit data network rate that it's pulling...

Re:O RLY? (1)

EzInKy (115248) | more than 2 years ago | (#39092271)

Yep, even if your data arrives ahead of the stream your program will be considered a putz if its output isn't displayed instantanously!

So Steve Jobs wasn't railing against Adobe Flash? (1)

hobb0001 (989441) | more than 2 years ago | (#39090669)

Things would have been a lot less tense if he had clarified.

Can anyone explain (1)

geekprime (969454) | more than 2 years ago | (#39091139)

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?

Re:Can anyone explain (1)

Osgeld (1900440) | more than 2 years ago | (#39091213)

Jobs

in the mac world when you close an app it doesn't exit, its actually really handy when your running on a slow computer but it was at best cute in 1999 on osX beta +, back when it took a semi significant amount of time to launch a program and its idol resources was low

now your smartphone rivals a early 2000's deskrop so its really useless

Re:Can anyone explain (0)

Anonymous Coward | more than 2 years ago | (#39094053)

That is definitely some misinformation.

- Windows Mobile did this before the iPhone was ever introduced. See this post in 2006: http://blogs.msdn.com/b/windowsmobile/archive/2006/10/05/the-emperor-has-no-close.aspx
- The Mac still quits apps even to this day, although there is a disconnect between a window closing and the app closing, unlike early Windows there was no 1:1 connection between app and document. In current Windows, it can be 1:1, but not always. However, OS X does include caching mechanisms (dynamic-linking cache for example) which speed up launching of apps by pre-computing where libraries need to go and what goes into the various import tables.

And there is one major difference between a 2000s desktop and your smartphone: I don't run a desktop on a 1000mAh (roughly) battery. So power consumption has become a hot-button issue as more CPUs are being used in laptops and cell phones that rival desktops from a decade ago.

Consider this: RAM is always powered while the machine is on. If I disconnect power to it, I lose the contents. So even in the best case, I can maybe turn off a couple cells to save battery, although I take a performance hit if I do when I have to power those cells back on. So because of RAM, I'm always spending some amount of power to keep RAM powered. But every time I need to go out to NAND to load software, that's additional power on top of RAM. I can also shut down the NAND or put it to sleep more often and for longer to conserve battery. So instead of letting RAM sit idle, empty and consuming power, leveraging it as a cache for flash is a way to save battery. One of the easiest ways to do that in an environment where users switch between apps often is to keep the apps themselves in RAM and hit your slower storage less. But managing that isn't something a user is terribly efficient at on their own. They can tweak for speed a bit better (knowing the future better than the device can), but in general you will get more wasted power that way. It's a trade off of higher power efficiency at the cost the user being able to do things like pre-load apps they will use in a minute or two.

Bad programming? (1)

drolli (522659) | more than 2 years ago | (#39091217)

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.

Re:Bad programming? (1)

21mhz (443080) | more than 2 years ago | (#39092519)

I've seen how this happens:
1. Gee, I can just fire INSERTs in SQLite like I did in SQL Server, isn't it convenient?
2. (few months in development) Crap, these queries thrash the flash medium and cause a lot of waiting on I/O, we need to batch them and use transactions more.
3. (with deadlines looming) Attempts to tweak the database access flags or even relax the durability requirements, to get out of the corner we have painted ourselves into.

It would be instrumental for better performing code if database access was always treated as slow and therefore asynchronous, but SQLite does not provide an easy-to-use async API.

Re:Bad programming? (1)

drolli (522659) | more than 2 years ago | (#39092649)

Yes. Thats how is see it. Accessing a database in a syncronous way is always adding something very intransparent to your program. In one moment it runs fast, in the next when the moon hits the right position some kind of resource which you don't even think you use is busy......

Wow. (0)

Anonymous Coward | more than 2 years ago | (#39092451)

1) This isn't about "smartphones," it's about Android devices. On iOS devices, there's just one big chunk of flash storage; the user can't install an SD card.
2) Battery life, network latency, and network reliability are much bigger factors in poor user experiences.
3) On iOS, not only does Core Data (which uses SQLite) aggressively keep data in RAM, as of iOS 5, it can easily be used to do non-blocking, asynchronous reading and writing to disk with UIManagedDocument.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>