SimpleSSD / SimpleSSD-FullSystem

Open-Source Licensed Educational SSD Simulator for High-Performance Storage and Full-System Evaluations
BSD 3-Clause "New" or "Revised" License
88 stars 46 forks source link

Data path in SimpleSSD #25

Closed minmin20028 closed 3 years ago

minmin20028 commented 3 years ago

Running Environment (please complete the following information):

Execution information

Explain what you want to ask here:

A clear explanation of your question.

Hi, Thanks for your open-source work.

Im trying to implement or study ECC(error correcting code) in SSD Controlloer data-path with SimpleSSD. In order to do this, I think its necessary to look at the data itself (which i read/write with nvme-cli). But I wonder where the part that points to the data itself in SimpleSSD code. Also, i want to know the flow of data in the process of read and write.

thanks.

kukdh1 commented 3 years ago

Hi,

This answer is based on your e-mail.

  1. User data representation in SimpleSSD.

SimpleSSD stores data in raw disk format if you enabled disk image feature in configuration file. This makes convenient use of existing disk images (like gem5 images) -- you can use such disk images directly with SimpleSSD. And such file I/O is handled by HIL (namespace).

SipmleSSD does not support physical data serialization/deserialization as this feature is only used for NAND level research. To access data at specific NAND page, there are two options:

  1. Add feature to read/write data for each NAND page from/to file.
  2. At the PAL, perform reverse address translation to get logical address of current page, and read page from disk image.
  1. Data flow

As written in first section, SimpleSSD only handles data at HIL level. But, if you want to know which codes/functions handles I/O, just create breakpoint at PAL and check the call stack. As most part of current SimpleSSD is functional (only HIL is event-driven), you can check all the routines by looking at stack.

Thanks.