Processing host transfer requests for direct block access storage devices
First Claim
1. A method of processing, by a media controller, a transfer request from a host device, the method comprising:
- generating, by a host subsystem, a single host context corresponding to a received host transfer request, wherein the host transfer request corresponds to data stored in one or more non-contiguous locations of a storage media coupled to the media controller, wherein the host transfer request is validated by a host command scheduler in the host subsystem;
generating, by a programmable sequencer based on the host context, one or more sequencer contexts, each of the one or more sequencer contexts corresponding to at least part of the host transfer request, each part of the host transfer request corresponding to one of the non-contiguous locations of the storage media, thereby automatically generating, based on a single host context, one or more sequencer contexts for a scatter-gather operation;
providing, by the programmable sequencer, the one or more sequencer contexts to a buffer subsystem of the media controller;
if the host transfer request is a read request;
retrieving, by the buffer subsystem, the data associated with the one or more sequencer contexts of the read request, from at least one of i) a corresponding buffer of the media controller and ii) the storage media; and
combining, by the host subsystem, the data corresponding to the one or more sequencer contexts into at least one host transfer to the host device; and
transmitting each host transfer to the host device;
otherwise, if the host transfer request is a write request;
receiving, by the buffer subsystem, the data associated with the host context from the host device;
splitting, by the host subsystem, the data corresponding to the host context into data portions corresponding to the one or more sequencer contexts; and
storing the data associated with the one or more sequencer contexts of the write request to at least one of i) a corresponding buffer of the media controller and ii) the storage media,wherein host-side context processing and storage media-side context processing are performed in parallel.
6 Assignments
0 Petitions
Accused Products
Abstract
Described embodiments provide a host subsystem that generates a host context corresponding to a received host data transfer request. A programmable sequencer generates one or more sequencer contexts based on the host context. Each of the sequencer contexts corresponds to at least part of the host data transfer request. The sequencer contexts are provided to a buffer subsystem of the media controller. For host read requests, the buffer subsystem retrieves the data associated with the sequencer contexts of the read request from a corresponding buffer or a storage media and transmits the data associated with the sequencer contexts to the host device. For host write requests, the buffer subsystem receives the data associated with the host context from the host device and stores the data associated with the sequencer contexts of the write request to a corresponding buffer or the storage media.
90 Citations
17 Claims
-
1. A method of processing, by a media controller, a transfer request from a host device, the method comprising:
-
generating, by a host subsystem, a single host context corresponding to a received host transfer request, wherein the host transfer request corresponds to data stored in one or more non-contiguous locations of a storage media coupled to the media controller, wherein the host transfer request is validated by a host command scheduler in the host subsystem; generating, by a programmable sequencer based on the host context, one or more sequencer contexts, each of the one or more sequencer contexts corresponding to at least part of the host transfer request, each part of the host transfer request corresponding to one of the non-contiguous locations of the storage media, thereby automatically generating, based on a single host context, one or more sequencer contexts for a scatter-gather operation; providing, by the programmable sequencer, the one or more sequencer contexts to a buffer subsystem of the media controller; if the host transfer request is a read request; retrieving, by the buffer subsystem, the data associated with the one or more sequencer contexts of the read request, from at least one of i) a corresponding buffer of the media controller and ii) the storage media; and combining, by the host subsystem, the data corresponding to the one or more sequencer contexts into at least one host transfer to the host device; and transmitting each host transfer to the host device; otherwise, if the host transfer request is a write request; receiving, by the buffer subsystem, the data associated with the host context from the host device; splitting, by the host subsystem, the data corresponding to the host context into data portions corresponding to the one or more sequencer contexts; and storing the data associated with the one or more sequencer contexts of the write request to at least one of i) a corresponding buffer of the media controller and ii) the storage media, wherein host-side context processing and storage media-side context processing are performed in parallel. - View Dependent Claims (2, 3, 4, 5, 15, 16, 17)
-
-
6. A media controller for processing a transfer request from a host device, the media controller comprising:
-
a host subsystem for generating a single host context corresponding to a received host transfer request, wherein the host transfer request corresponds to data stored in one or more non-contiguous locations of a storage media coupled to the media controller, wherein the host transfer request is validated by a host command scheduler in the host subsystem; a buffer subsystem for buffering data transferred between the host subsystem and the storage media; a programmable sequencer for i) generating, based on the host context, one or more sequencer contexts, each of the one or more sequencer contexts corresponding to at least part of the host transfer request, each part of the host transfer request corresponding to one of the non-contiguous locations of the storage media, thereby automatically generating, based on a single host context, one or more sequencer contexts for a scatter-gather operation, and ii) providing the one or more sequencer contexts to the buffer subsystem; wherein, if the host transfer request is a read request; the buffer subsystem is adapted to retrieve the data associated with the one or more sequencer contexts, from at least one of a corresponding buffer and the storage media; and the host subsystem is adapted to i) combine the retrieved data associated with the one or more sequencer contexts into at least one host transfer to the host device, and ii) transmit each host transfer to the host device; otherwise, if the host transfer request is a write request; the buffer subsystem is adapted to i) receive the data associated with the host context from the host device, and ii) store the data associated with the one or more sequencer contexts to at least one of a corresponding buffer and the storage media; and the host subsystem is adapted to i) split the received data associated with the host context into data corresponding to the one or more sequencer contexts, and ii) store the data corresponding to the one or more sequencer contexts, wherein host-side context processing and storage media-side context processing occurs in parallel. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A non-transitory machine-readable storage medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of processing a data transfer request from a host device, by a media controller, the method comprising:
-
generating, by a host subsystem, a single host context corresponding to a received host transfer request, wherein the host transfer request corresponds to data stored in one or more non-contiguous locations of a storage media coupled to the media controller, wherein the host transfer request is validated by a host command scheduler in the host subsystem; generating, by a programmable sequencer based on the host context, one or more sequencer contexts, each of the one or more sequencer contexts corresponding to at least part of the host transfer request, each part of the host transfer request corresponding to one of the non-contiguous locations of the storage media, thereby automatically generating, based on a single host context, one or more sequencer contexts for a scatter-gather operation; providing, by the programmable sequencer, the one or more sequencer contexts to a buffer subsystem of the media controller; if the host transfer request is a read request; retrieving, by the buffer subsystem, the data associated with the one or more sequencer contexts of the read request, from at least one of i) a corresponding buffer of the media controller and ii) the storage media; and combining, by the host subsystem, the data corresponding to the one or more sequencer contexts into at least one host transfer to the host device; and transmitting each host transfer to the host device;
otherwise, if the host transfer request is a write request;receiving, by the buffer subsystem, the data associated with the host context from the host device; splitting, by the host subsystem, the data corresponding to the host context into data portions corresponding to the one or more sequencer contexts; and storing the data associated with the one or more sequencer contexts of the write request to at least one of i) a corresponding buffer of the media controller and ii) the storage media, wherein host-side context processing and storage media-side context processing are performed in parallel. - View Dependent Claims (12, 13, 14)
-
Specification