Virtual Devices
A Virtual Device encompasses one or more flash memory dies, providing the user the ability to utilize the hardware isolation of separate dies. Dies are not shared across separate virtual devices. I/O operations on one Virtual Device will not compete for die time with other virtual devices. There may be a minimal amount of latency caused by contention between virtual devices due to any internal controller bottlenecks or flash memory channel conflicts for virtual devices that share flash memory channels.
When virtual devices are created, several parameters are specified to define the characteristics of each virtual device. Virtual devices are created by using the SEFCreateVirtualDevices function. The size of each virtual device is user-configurable and dependent on the resources available. Each virtual device must be given a unique ID.
Because virtual devices represent hardware isolation, the SEF Unit will not wear level across the dies in different virtual devices. It is expected that virtual devices will be created when a SEF Unit is first set up and their geometry not subsequently altered.
Creation-time Parameters
virtualDeviceID: an identifier that will later be used to specify the created virtual device. This identifier must be unique across the entire SEF Unit. The maximum allowed ID is the number of dies in the SEF Unit.
dieList: Lists the dies that will be owned by the created virtual device.
superBlockSize: The number of dies that define a super block. It must evenly divide into the number of dies defined for the virtual device.
Once a virtual device is created it can be further configured with SEFSetVirtualDeviceSuspendConfig and SEFSetNumberOfPSLCSuperBlocks.