Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The author is on to something. Flash memory devices can emulate disks, but that's an inefficient way to access them, especially for reading. You have all the overhead of Linux system calls and file systems to, basically, read a RAM-like device that's orders of magnitude faster in access time than a rotating device.

The question is, what non-file abstraction should a flash device offer? Slow persistent RAM? A key/value store? An SQL database? Computing has had "RAM" and "disks" as its storage models for so long that those concepts are nailed into software at a very low level.

The NoSQL crowd could probably find uses for devices that implemented big, fast key/value stores.



The problem with NAND flash is that it is not "RAM-like device" even for reads (smallest addressable entity is block even for reads).

It can essentially do three operations: read block, write block, erase bunch of blocks at once. For the purposes of filesystem, this is actually an workable storage interface that does not need any additional abstraction layers.


You are both right. It's a RAM-like key-value store with large (block-sized) values.


It's not RAM-like, because you can read small parts of keys, but have to write large ones.


You can't read or write individual bits or bytes in RAM directly either. Word size is very small compared to disk blocks, but it's not atomic.

I'm not an architecture expert, so please correct me if I'm wrong about this.


It depends on what kind of RAM and what kind of bus you are using. Some do let you write bytes at a time, others only allow N byte words at a time.

Though I suppose a byte is still not a bit! I'm not sure I've ever seen a bus interface that addressed individual bits…


But the read and write are symmetric, of same sizes.


No: some buses let you write different sized words to the memory controller or RAM chip. For example, picture a bus that's 32 bits wide, but there are control lines that let you specify that you're writing (or reading) 1 byte, 2 bytes, or 4 bytes. During a single byte wide bus cycle you are not sending 4 bytes to the part, even though there are 32 bits connecting to it.

Certainly not everything out there is byte addressable, but neither can one say unequivocally that all RAMs have large atomic word sizes.


Again, in your scenario read&write are symmetric. In Flash, they're not.


I don't understand what you mean by "symmetric". If I can write a 32 bit word out and read 1 byte of it back, I don't consider that "symmetric".


Some of my coworkers bypassed the OS for Redis, although the FTL is still there. http://public.dhe.ibm.com/common/ssi/ecm/po/en/pos03135usen/...


Funny how your comment told me more about what that offering is supposed to do than the whole Solution Brief did! All the same, very neat stuff.


Are they _really_ emulating "disks", though?

Storage presents block devices to operating system. Spinning Rust and all manner of SSD use lots of clever engineering to appear as a block device.

Block device is the most basic abstraction of all storage. You really want MySQL to manage NAND? ;)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: