A device comprising: a buffer manager (213, 219) having and controlling a plurality of segments each storing data associated with a different job descriptor of a plurality of job descriptors (230,232,234) for temporarily storing data associated with the different job descriptors, the data including data to be written to a flash memory device of a plurality of flash memory devices (206a-206d) or the data to be read from the flash memory device, a controller that controls the plurality of flash memory devices each operatively coupled to a corresponding channel, the controller configured to control a communication of the data associated with the respective job descriptor (230,232,234) to or from the plurality of flash memory devices through the corresponding channels; and a sequencer that receives the plurality of job descriptors in a first order, wherein each job descriptor specifies a target segment from the plurality of segments that serves data associated with the job descriptor and a target channel for retrieving data from or writing data to a flash memory device from the plurality of flash memory devices; determines, for each of the job descriptors received in the first order, an availability of the target segment and the target channel based on an update of segment availability from the buffer manager (213, 219) and an update of channel availability from the controller; and schedules an execution of the plurality of job descriptors in a second order based on the availabilities of the respective target segments and target channels of the plurality of job descriptors, wherein the second order is different than the first order. a buffer manager (213, 219) having and controlling a plurality of segments each storing data associated with a different job descriptor of a plurality of job descriptors (230,232,234) for temporarily storing data associated with the different job descriptors, the data including data to be written to a flash memory device of a plurality of flash memory devices (206a-206d) or the data to be read from the flash memory device, a controller that controls the plurality of flash memory devices each operatively coupled to a corresponding channel, the controller configured to control a communication of the data associated with the respective job descriptor (230,232,234) to or from the plurality of flash memory devices through the corresponding channels; and a sequencer that receives the plurality of job descriptors in a first order, wherein each job descriptor specifies a target segment from the plurality of segments that serves data associated with the job descriptor and a target channel for retrieving data from or writing data to a flash memory device from the plurality of flash memory devices; determines, for each of the job descriptors received in the first order, an availability of the target segment and the target channel based on an update of segment availability from the buffer manager (213, 219) and an update of channel availability from the controller; and schedules an execution of the plurality of job descriptors in a second order based on the availabilities of the respective target segments and target channels of the plurality of job descriptors, wherein the second order is different than the first order. receives the plurality of job descriptors in a first order, wherein each job descriptor specifies a target segment from the plurality of segments that serves data associated with the job descriptor and a target channel for retrieving data from or writing data to a flash memory device from the plurality of flash memory devices; determines, for each of the job descriptors received in the first order, an availability of the target segment and the target channel based on an update of segment availability from the buffer manager (213, 219) and an update of channel availability from the controller; and schedules an execution of the plurality of job descriptors in a second order based on the availabilities of the respective target segments and target channels of the plurality of job descriptors, wherein the second order is different than the first order.