New Middleware Promises Dramatically Higher Speeds, Lower Power Draw For SSDs
mrspoonsi (2955715) writes "A breakthrough has been made in SSD technology that could mean drastic performance increases due to the overcoming of one of the major issues in the memory type. Currently, data cannot be directly overwritten onto the NAND chips used in the devices. Files must be written to a clean area of the drive whilst the old area is formatted. This eventually causes fragmented data and lowers the drive's life and performance over time. However, a Japanese team at Chuo University have finally overcome the issue that is as old as the technology itself. Officially unveiled at the 2014 IEEE International Memory Workshop in Taipei, the researchers have written a brand new middleware for the drives that controls how the data is written to and stored on the device. Their new version utilizes what they call a 'logical block address scrambler' which effectively prevents data being written to a new 'page' on the device unless it is absolutely required. Instead, it is placed in a block to be erased and consolidated in the next sweep. This means significantly less behind-the-scenes file copying that results in increased performance from idle."
That's a description of wear leveling. Most wear leveling algorithms are proprietary and thus difficult to compare against. Different strategies can be applied, obviously, but in the end every algorithm can only write to empty bits and zero out entire erase blocks at a time. Their algorithm can't get around that. It's just how flash memory works.
Could the incoming data be written first in either a RAM or SLC cache while the formatting is going on ?
http://techon.nikkeibp.co.jp/english/NEWS_EN/20140522/353388/?SS=imgview_e&FD=48575398&ad_q
they came up with a better scheme for mapping logical to physical. however, the results aren't as good as all the news sources say.
I don't doubt that the researchers have hit on something interesting, but it's hard to make heads or tails of this article without knowing what algorithms they're comparing it to. The major SSD manufacturers - Intel, Sandforce/LSI, and Samsung - all already use some incredibly complex scheduling algorithms to collate writes and handle garbage collection. At first glance this does not sound significantly different than what is already being done. So it would be useful to know just how the researchers' algorithm compares to modern SSD algorithms in both design and performance. TFA as it stands is incredibly vague.
and lowers the drive's life"
what a load of crap.
Fragmented data has nothing to do with the drives life. WRITING data does. The advantage of writing in various areas is SPEED. The fact that "whilst the old area is formatted" is also for SPEED, AND load wear leveling. Erasing data takes longer than writing new data. So erasing is naturally done in the background.
Fragmentation of data doesn't even affect the speed.
In the original-ish article here they go into a bit more detail but the "conventional scheme" they're comparing against appears to be just straight mapping. It would be interesting to see how this stacks up against some of the more advanced schemes employed in today's SSDs.
Per how big data areas is wear leveling performed in an SSD? Maybe not for each 4kB block, because that would require hundreds of megabytes of extra data just for the remap pointers, if we assume that they each are 48 bits long. Also TRIM data (which blocks are "nuked" and not just zeroes) requires similar kind of extra space.
*.slashdot.org certificate
Issued by Geotrust SSL CA
Expired: Friday, 23 May 2014, 23:49:50 British Summertime.
Either a company that is too stupid to manage their certificates, or someone pretending.www.slashdot.org.
Username is gnasher719, but I'm not logging in to a site that cannot be trusted.
Wear leveling is typically a system by which you write new data to the least-written empty block available, usually with some sort of data-shuffling involved to keep "stagnant" data from preventing wear on otherwise long-occupied sections. It sounds like this is a matter of not erasing the block first: For example if the end of a file has used 60% of a block and is then deleted, the SSD can still use the remaining 40% of the block for something else without first deleting it. Typically, as I understand it, once a block is written that's it until its page is erased - any unused space in a block remains unused for that erase cycle. This technique would allow all the unused bits at the end of the blocks to be reused without an expensive erase cycle, and then when the page is finally ready to be erased all the reused bits on the various blocks can be consolidated to fill a few fresh blocks.
It seems to me this could be a huge advantage for use cases where you have a lot of small writes so that you end up with lots of partially filled blocks. Essentially they've introduced variable-size blocks to the SSD so that one physical block can be reused multiple times before erasure, until all available space has been used. Since erasing is pretty much the slowest and most power-hungry operation on the SSD that translates directly to speed and power-efficiency gains.
--- Most topics have many sides worth arguing, allow me to take one opposite you.
Yes, this is NOT wear leveling. You describe what is happening far better than the crappy article. This technique would mainly be an advantage with lots of small random writes, where "small" is less than half a block size.
The discovery is a change on the page scheduler of a SSD (where SSD also means the crapier stuff like SD cards and CF cards) done through something you can cheaply make and plug at a stage between the PHY (interface/protocol talks to the computer) and the FTL (flash translation layer that does scheduling and wear levelling).
This is really useful on the cheap stuff, but any modern high-end SSD worth something (Intel, Crucial/Micron, Samsung, Hitachi) already have scheduling algorithms that do better.
OTOH, USB "pendrives", SD cards, CF cards, and their close cousins "eMMC-based disk-on-chip" do _not_ have anything nearly as elaborate for the FTL. For those, this new translation-layer-before-the-translation-layer can really improve things on some workloads.
Heck, the cheaper USB-FTL one-chip solutions used on way too many pendrives cannot even do proper wear-leveling, they only wear-level around 1000 pages or so at the lower LBAs, which makes them unsuitable to anything but FAT16/FAT32 (and you better not repartition them either)...
"Currently, data cannot be directly overwritten onto the NAND chips used in the devices. Files must be written to a clean area of the drive whilst the old area is formatted"
Am I the only one that knows that's not remotely true? I don't even know where to start. So the SSD wants to write to location 0x00000032 but it's occupied by old data. First of all, no it isn't. TRIM already took care of that. But let's say you're using the SSD in Windows XP so TRIM doesn't work. So they claim the SSD writes data to a blank location on the drive temporarily, then erases the original intended location and later moves it back to that location to be contiguous? What's so damn special about that location? Just leave it in the blank location. They claim that causes fragmentation, which has no impact on the performance of an SSD in any way.
This is a useless invention from people who don't know how SSDs work.
How about SSDs that last as long as regular hard drives. Until then, I ain't going near them.
...is that in a properly-designed SSD, there is no such thing as data fragmentation. You lay out the nand as a circular log and write to every bit of it once before you overwrite, and maintain a set of pointers that translates LBA to memory addresses.
Pretty much every SSD vendor out there has figured this out a few years ago.
up 12 days, 22:30, 2 users, load averages: 993.20, 994.21, 994.56
*makes note to limit user processes...
Have I stumbled into a new green themed version of LWN? The comments here are far too insightful and interesting for the usual /. fare. Can't even find the frist post.
OK, I was playing fast and loose with the terminology. Wear leveling (making sure that all flash cells age about equally) is just one function of the FTL (flash translation layer). Other purposes are increased write performance and overall longevity (by not requiring a full read-modify-write cycle for every write) and increased read performance (by distributing data across several flash chips to be read in parallel).
The main point however holds: The story describes a particular write strategy for an FTL. Like other write strategies, it has to balance various competing objectives (e.g. write speed vs. wear). It's not like SSD manufacturers have been sitting on their hands. Intel for example claimed a write amplification of just 1.1 for their enterprise grade SSDs in 2008. If the controller in those SSDs really only ever wrote once to each erase block between erases, a write amplification that low would be unachievable except for highly contiguous accesses.
What this new middleware does (supposedly differently, but with most FTLs being proprietary, it's hard to tell) is write preferentially to blocks which are about to be erased. These writes are essentially free, since it's not the write that kills the cells and the erasing is happening anyway, empty blocks or not. As I wrote before, this is just a particular write strategy, a particular way of using the FTL to schedule writes. Without information about the write strategy against which it is compared, it's difficult to see the benefit of this strategy, if any.
I guess middleware is another overloaded technical term since I don't see any databases mentioned.
Most flash drives have some RAM cache and most erasing is done as a background task by the on-board firmware of the drive. Part of flash drive reliability has to do with having big enough capacitors on board so a powerfailure will allow the drive to write enough data to flash to have a consistent state for at least it's own bookkeeping data on blocks and exposed data. The enterprise ones usually have enough capacitors to write all data to flash that has been reported to the OS as "we wrote this to the drive" on top of that.
The big difference here seems to be that they don't erase block level any more and a change to just a few bytes in a block don't lead to the whole block in it's new iteration being written to an empty block and tagging the old block with a "trim". While this is beneficial for throughput, you have to make certain you will not do this indefinitely, since wear level algorithms aren't used for nothing. You'll still need to do a certain percentage of rewrites or keep count of the number of rewrites to the same block and once your counter hits a limit, do a rewrite of the entire block to a "fresh" location.
I was promised a flying car. Where is my flying car?
I've written drivers for solid state media. It is a cost to find the the "next available block" for incoming data. Often, too, it is necessary to copy the original instance of a media block to merge new data with the old. Then, you can toss the old block into a background erase queue, but the copy isn't time-free, either.
Since so-called Smart Media didn't have any blocks dedicated to the logical-physical mapping (It was hidden in a per-physical-block logical id), there was also a startup scan required.
If the middleware is constantly trying to use the same physical block to represent a logical block (something even rotating media is giving up on), the physical block is going to take a pounding if is used for frequently-updated storage. Losing a directory block due to cell damage is not my idea of a good thing.
What I suspect they're really trying to do is reduce the number of blocks dedicated to logical-physical mapping. That lets them ship more parts with from-fab defective blocks at a given capacity out of the die.