3 ms·
The main abstraction costs are excess DRAM and overprovisioning, and those don't come from wear levelling but the block abstraction layer (aka. pretending to su
by Veedrac 6y ago
The main abstraction costs are excess DRAM and overprovisioning, and those don't come from wear levelling but the block abstraction layer (aka. pretending to support random writes). So where there used to be a buzz around ‘open-channel SSDs’, that give a lot of this control and responsibility to the host, but often just meant the host is absorbing all those costs, the hot new thing is ‘zoned namespaces’, which keep wear levelling on the host, but provide an API without totally random writes that maps well to hardware, and that seems to be a much better trade-off.
- wtallis 6y agoFlash can support random writes, but not overwrites. The zoned namespaces abstraction is a little bit more restrictive than is necessary for SSDs, but it's being developed that way so that the same abstraction can also be used with SMR hard drives.
- Veedrac 6y agoZNS does support random writes to the uncommitted blocks at the head of a zone.
- wtallis 6y agoI'm not sure what you're trying to say there. My understanding is that each zone is append-only, which definitely isn't how flash erase blocks work.
- Veedrac 6y agoThey're not quite append only, there's a ‘zone random write area’ that you can update in-place that exposes the write buffer in front of a zone. To a lesser degree, it also supports parallel appends, which naturally aren't purely sequential either. So you've got random writes both between zones and at the front of each zone. The one thing missing is being able to erase blocks within the committed portion of a zone, but idk how you'd support that without just reimplementing a block layer.
- wtallis 6y agoThe ZNS spec doesn't seem to have been published quite yet, but from what I can find it seems like the zone random write area is an optional extension that won't necessarily be implemented by all vendors.