A solid-state disk extension to DiskSim v 2.0 has been developed. DiskSim is an efficient, accurate disk system simulator from Carnegie Mellon University and has been extensively used in various research projects studying storage subsystem architectures [ganger99]. The DiskSim Simulation Environment Version 2.0 is available here.
Our solid-state disk simulator updates the following DiskSim files and assumes disk parameter files to be configured in a specific order.
disksim_disk.c and disksim_disk.h is modified to support flash memory read/write commands
disksim_diskctlr.c is modified to support flash memory read/write commands
disksim_diskmech.c is modified to support flash memory read/write commands
disksim_iodriver.c and disksim_iodriver.h is modified to support LPB-PBN mapping and block cleaning
disksim_iosim.h is modified to accommodate up to 16 flash banks
disksim_main.c is modified for increased RAM requirements of the simulator
One of the limitations faced was that fact that solid-state disks typically use more than one flash memory bank and DiskSim is not well tested in configurations where there are multiple controllers, busses and disks. In order to simulate solid-state disks with 1, 2, 4, 8 or 16 flash memory banks, one has to modify the code slightly or sometimes have to hard code variables. Obviously it is not a good coding practice, however DiskSim is very complicated simulator and fixing it is not an easy task. A lot of components are highly integrated and a slight change in the timing of one component results is various assertions. Hopefully, over the course of SSD simulator development, these sections of DiskSim code can be fixed as well.
Here are all the required files to simulate a 16 flash memory bank solid-state disk. Simply replace them with the original DiskSim files.
In addition to updates to the source files, solid-state disk simulator also assumes some parameters set properly in .seek, .parv and .diskspecs files.
A sample .parv file is available here. Important parameters set in this file are:
Bus Spec #1 Read/Write block transfer time: is set for ATA/SATA
Bus Spec #2 Read/Write block transfer time: is set for the bus speed between flash controller and flash memory banks. For example, if this I/O bus is 8 bit at 10 ns, then this parameter should be set to 0.00512 msec (to transfer 1 sector - 512 Bytes)
Number of controller: Each I/O channel requires a controller component.
Number of storage devices: set to the number of flash memory banks.
Each .parv file requires a disk specification file. A sample .diskspecs file is available here. Each disk listed here represents a flash memory bank - not the whole solid-state disk. Important parameters are:
All seek times: are set to “single page read time”
Add. write settling delay: is set to “single page program time - single page read time”
Head switch time: is set to “time to transfer data from cache register to data register”
Rotation speed (in rpms): should match speed of I/O bus between flash controller and flash memory bank (to transfer 1 page of data through I/O bus)
Number of data surfaces: is set to number of pages in a block
Number of cylinders: is set to number of blocks in flash memory bank
Avg sectors per cylinder: is set to number of sectors in a block
Segment size (in blks): is set to the size of cache/data register in sectors
Blocks per track: is set to the size of a page in sectors
To enable superblocking, rotation speed, number of cylinders, avg sectors per cylinder, segment size and blocks per track should be changed accordingly.
Modified DiskSim source files and sample parameter files can also be found here.
Please note that this solid-state disk simulator is a work in progress. DiskSim is a very powerful tool but at the same time it is a very complex and highly integrated simulator. Small changes often result in code breaks. If you encounter problems with my code changes and/or if you can fix parts of the DiskSim along the way, I greatly appreciate if you can share this information. You can also communicate this information in DiskSim email list or research email archives for problems and workarounds. These modifications to DiskSim v2.0 follow original DiskSim copyright and “no warranty” statements.
References:
[Ganger99] G. R. Ganger, B. L. Worthington, and Y. N. Patt. “The DiskSim Simulatio Environment Version 2.0 Reference Manual,” http://www.pdl.cmu.edu/DiskSim/disksim2.0.html.