Electronic Engineering Journal published an interesting article last week describing how scatter/gather works, to the limits of what could be said without NDA. This interesting technology doesn’t completely deliver on promises of single-cycle access, but does provide improved memory access speed.
Scatter-gather is a type of vectored I/O, with sequential reads from multiple buffers written to a single data stream, or vice versa. The primary reason this works so well is that operations are faster on linear memory. The gather operation often takes place in the background, and then the desired I/O operation can operate more efficiently. It can also happen atomically, though this article doesn’t go into that aspect. The example used in the article is edge finding for visual analysis. Only rarely will an edge line up in a row, and rarer still is the case where that row is in contiguous memory.
Performing operations on large contiguous chunks also seems to be a strength of modern managed NAND flash media. Random I/O can result in a large penalty, one that a cache can sometimes overcome. This interesting technology has applications for media access, and support within the Single Unix Specification also - functions readv() and writev(). I look forward to keeping an eye on how these algorithms develop and migrate.
Of course, another option to improve operations on cached memory is discarding blocks that are no longer in use. Datalight has been improving the way discards operate, and thus improving performance. More about that in the very near future…