Ssd Page Allocation

SSD Page Allocation #

image-20200427195606640

Page allocation happens at write, while read directly lookup in FTL. A request is parsed into page-sized request for address translation. Allocation is divided into two: plane allocation (PLAlloc) and block allocation (BLAlloc):

Plane allocation #

Goal: determine physical (channel, way, die, plane, block, page)

Write requests are striped to various units to increase parallelism, following a certain allocation order:

  • Static Allocation: assign pages to free blocks based on certain fixed order
  • Dynamic Allocation: further take into considering: wear leveling, busy/idle channels. For example, if target chip is busy, writes can be re-directed to another chip. The drawback is maintenance of another mapping table below FTL 1. Tavakkol et al. 2 conclude the superiority of dynamic allocation in terms of degree of parallelism
  • OCSSD 2.0 defines a sequential page allocation scheme at chunk level: it maintains a write pointer and requires sequential allocation to advance the pointer until the chunk is fully consumed.

Block allocation #

Goal: determine physical block:

  • Either wear-aware or first-fit allocation
  • Inside a block, pages are programmed sequentially, so the page ID is determined by the write frontier

Static Allocation #

There are 24 possible combinations of allocation schemes:

image-20200427194922702 3

The optimal allocation scheme is PFCD: Plane → Flash-chip → Channel → Die, concluded by Myoungsoo Jung et al. with detailed analysis 4.


  1. Exploiting Intra-Request Slack to Improve SSD Performance, ASPLOS 2017, Nima Elyasi et al. ↩︎

  2. Performance Evaluation of Dynamic Page Allocation Strategies in SSDs, Tavakkol et al., 2016 Trans on Modeling and Performance Evaluation of Computing Systems. see here ↩︎

  3. SSD Survey ↩︎

  4. An Evaluation of Different Page Allocation Strategies on High-Speed SSDs, USENIX HotStorage 2012, Myoungsoo Jung et al. ↩︎

Calendar Last modified: June 2, 2020