All times are UTC - 5 hours [ DST ]




Post new topic Reply to topic  [ 8 posts ] 
Author Message
 Post subject: A question about NAND Flash memory
PostPosted: December 17th, 2014, 11:37 
Offline

Joined: November 15th, 2012, 17:47
Posts: 228
In some cases, is it possible to edit a page without moving the whole Block. For example, let us have the word "HDD" in a single page; now we want to add the word "Forum" to it; to make it "HDD Forum". Is it necessary for the whole block containing the word "HDD" to be moved to another block ? Please note that, as far as Memory cells are concerned, there are no modification; there are just programming of additional Bits.

Thanks for any info.


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 17th, 2014, 17:32 
Offline
User avatar

Joined: April 3rd, 2011, 0:19
Posts: 2020
Location: Providence, RI
Is it possible, probably. Is it likely that the controller would be smart enough to know that it doesn't need to wipe the block, probably not.

_________________
Data Medics - Hard Drive, SSD, and RAID Data Recovery Service Company


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 17th, 2014, 19:02 
Offline

Joined: July 30th, 2012, 3:37
Posts: 308
Location: Fairfield, CT USA
No, this can't be done exactly as you describe however you can do something similar with SLC NAND.

_________________
Recover My Flash Drive


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 18th, 2014, 8:43 
Offline

Joined: November 15th, 2012, 17:47
Posts: 228
data-medics,

Would the controller be smart enough if the bits to be programmed are in the service area ? If not, I believe that the cost to its "stupidity" will be enormous, as shown below.

jeremyb,

Could you please explain or link that "something similar" ?


Quote:
No, this can't be done exactly as you describe however you can do something similar with SLC NAND.



If a Block has to be moved each time a single memory Cell is to be programmed, would not data writing be a cumbersome process. Take for example the following:

During Block writing, there are a series of programming processes that take place, one after another, in the new Block, like:

- Clearing the Free/Used Bit
- Block number writing
- Clearing the Pre-Valid/Valid Bit
- Clearing the Valid/Obsolute Bit etc.

Imagine the time spent and the wear caused if each of those sub-sets of a SINGLE WRITING PROCESS entail moving the block.


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 18th, 2014, 22:48 
Offline
User avatar

Joined: December 4th, 2012, 1:35
Posts: 3779
Location: Adelaide, Australia
I think what you describe is actually done by caching writes. So the data written would be written to a cache for a while, and if possible, subsequent writes may "merge" if possible, or some other type of optimisation, and after that write the block.

I am sure there are many different schemes, and unless you are going to study one particular scheme, it is all just conjecture.

Unless you are some kind of developer, the needed documentation for any scheme is probably not going to be available.

The controllers range from doing nothing but provide a FTL that writes block sequentially and provides basic ECC to advanced wear level schemes with good ECC, caching and enhancements like DDR.

Some storage technology also have schemes like de-duplication technology where a certain data structure is only ever written to disk(incl flash) once and subsequent writes are just pointers to that data.


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 20th, 2014, 1:32 
Offline

Joined: July 30th, 2012, 3:37
Posts: 308
Location: Fairfield, CT USA
jeremyb wrote:
No, this can't be done exactly as you describe however you can do something similar with SLC NAND.

SLC NAND lets you overwrite unset bits within a programed page without an erase operation but it opens up more problems than solutions (eg: SA, ECC, etc) but its the closest answer to match your exact question.

There are many solutions for your problem, the simplest being page level addressing instead of block level addressing which solves all your problems.

_________________
Recover My Flash Drive


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 21st, 2014, 17:01 
Offline

Joined: July 2nd, 2014, 8:05
Posts: 201
Matiw wrote:
In some cases, is it possible to edit a page without moving the whole Block. For example, let us have the word "HDD" in a single page; now we want to add the word "Forum" to it; to make it "HDD Forum". Is it necessary for the whole block containing the word "HDD" to be moved to another block ? Please note that, as far as Memory cells are concerned, there are no modification; there are just programming of additional Bits.

Thanks for any info.


Possible, and this is exacly how most flash controllers work. There are two types of blocks with data updates - Replacement blocks and LOG blocks.
When you want to edit page, controller moves "page update" to LOG block and stick it to main block. The main block keeps obsolete data (garbage), usually long time until lack of free blocks in NAND (forensic guys should say here "OMG". YES, EVEN FORMATTED FLASH DEVICE MAY CONTAIN USER DATA). Next modification of same data will produce next page update in same LOG block. So when you look into LOG block, sometimes you can see history (LOG) of user data modification. Of course, this is accessible through chip-off only. Here's proof of theory in series of pictures from one LOG block which belonged to file system (was a real case).

First update

Image

Second update

Image

Third update

Image

Fourth update

Image

_________________
VISUAL NAND RECONSTRUCTOR. A big revolution in chip-off data recovery


Top
 Profile  
 
 Post subject: Re: A question about NAND Flash memory
PostPosted: December 23rd, 2014, 7:10 
Offline

Joined: November 15th, 2012, 17:47
Posts: 228
Thanks HaQue and Sasha Sheremetov.

I think that both your replies are saying he same thing, apart from the wordings.

The last updated page from the Log Block is stuck to a replacement block (not the principal block), is not it ? In other words, those small one-bit updates to the System Area are done in the log-block; and the last updated page in the log-block is programmed (stuck) on to a replacement block. Thus there is only one or less block movement per data update.

This makes a lot of sense, than moving the original Block to another Block for every single-bit and small data updates.


Quote:
Possible, and this is exacly how most flash controllers work. There are two types of blocks with data updates - Replacement blocks and LOG blocks.
When you want to edit page, controller moves "page update" to LOG block and stick it to main block. The main block keeps obsolete data (garbage), usually long time until lack of free blocks in NAND (forensic guys should say here "OMG". YES, EVEN FORMATTED FLASH DEVICE MAY CONTAIN USER DATA). Next modification of same data will produce next page update in same LOG block. So when you look into LOG block, sometimes you can see history (LOG) of user data modification. Of course, this is accessible through chip-off only. Here's proof of theory in series of pictures from one LOG block which belonged to file system (was a real case).


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group