A circuit and associated methods of operation for a standardized scatter/gather list processor component within DMACs and intelligent IOPs. The standardized circuit architecture and methods provide a register interface and associated processing capabilities to simplify firmware processing to save and restore context information regarding block transfer operations that are paused and resumed prior to completion. Furthermore, the invention provides for architecture and associated methods for processing of standard scatter/gather list elements by a standardized scatter/gather list processor embedded within DMACs and IOPs. Specifically, as applied in the context of SCSI or Fiber Channel IOPs, the scatter/gather list processor of the present invention simplifies IOP firmware processing to save the current block transfer context on occurrence of a SCSI disconnect and to restore the saved context on occurrence of a SCSI reselect.
Legal claims defining the scope of protection, as filed with the USPTO.
1. In an intelligent coprocessor having a scatter/gather list processor, a method operable in said coprocessor comprising the steps of: pausing processing of a scatter/gather list by said scatter/gather list processor; reading current context regarding progress of processing of said scatter/gather list by said scatter/gather list processor, wherein said current context comprises values read from registers in said scatter/gather list processor wherein the current context includes a current scatter/gather element pointer register value and a transfer count register value; writing said current context to said registers to restore said current context in said scatter/gather list processor; and resuming processing of said scatter/gather list by said scatter/gather list processor.
2. The method of claim 1 wherein the step of reading current context includes the steps of: reading the current scatter/gather element pointer register value to determine the current scatter/gather element being processed in said scatter/gather list at the time processing was paused; and reading the transfer count register value to determine progress of processing by said scatter/gather list processor with respect to said scatter/gather list.
3. The method of claim 2 wherein the step of writing includes the steps of: determining a skip value from the value read from said transfer count register; and writing said skip value to a skip count register such that when processing of said scatter/gather list is resumed previously transferred units of data will be skipped.
4. The method of claim 1 wherein said scatter/gather list processor comprises a scatter/gather list processing component and an asynchronously operable data path engine component and wherein the step of reading current context includes the steps of: reading a first transfer count register to determine a first count value representing progress of processing of a current scatter/gather element of said scatter/gather list by said scatter/gather list processing component; reading a second transfer count register to determine a second count value representing progress of processing said scatter/gather list by said data path engine component; reading a third transfer count register to determine a third count value representing progress of processing said scatter/gather list by said scatter/gather list processing component; determining a skip value from said first count value, from said second count value and from said third count value; and writing said skip value to a skip count register such that when processing of said scatter/gather list is resumed previously transferred units of data will be skipped.
5. The method of claim 4 wherein the step of determining includes the step of: determining a prefetch adjustment value from said second count value and said third count value representing a number of units of data processed by said scatter/gather list processing component but not yet processed by said data path engine component; and determining said skip value from said first count value and from said prefetch adjustment value.
6. The method of claim 1 further comprising: modifying said current context prior to the step of writing wherein the modification is responsive to a Modify Data Pointers message.
7. A scatter/gather list processor circuit for processing of a scatter/gather list within an intelligent coprocessor comprising: a current context memory containing information regarding processing of a scatter/gather element of said scatter/gather list wherein said current context memory provides a read/write interface to other elements of said intelligent coprocessor and wherein the current context memory comprises a plurality of registers including a current scatter/gather element pointer register pointing to the current scatter/gather element being processed by said scatter/gather list processing and a current scatter/gather element transfer count register; and a control element coupled to said current context memory for processing of said scatter/gather list to perform block transfer operations defined by scatter/gather elements of said scatter/gather list.
8. The circuit of claim 7 wherein said control element further includes: a scatter/gather list processing component for processing said scatter/gather list to extract information regarding block data transfers defined by scatter/gather elements in said scatter/gather list; and a data path engine element for controlling exchange of data over source and destination buses to perform block transfer operations defined by said scatter/gather list.
9. In an intelligent coprocessor having a scatter/gather list processor, a system comprising: means for pausing processing of a scatter/gather list by said scatter/gather list processor; means for reading current context regarding progress of processing of said scatter/gather list by said scatter/gather list processor, wherein said current context comprises values read from registers in said scatter/gather list processor and wherein the current context includes a current scatter/gather element pointer register value and a transfer count register value; means for writing said current context to said registers to restore said current context in said scatter/gather list processor; and means for resuming processing of said scatter/gather list by said scatter/gather list processor.
10. The system of claim 9 wherein the means for reading current context includes: means for reading the current scatter/gather element pointer register value to determine the current scatter/gather element being processed in said scatter/gather list at the time processing was paused; and means for reading the transfer count register value to determine progress of processing by said scatter/gather list processor with respect to said scatter/gather list.
11. The system of claim 10 wherein the means for writing includes: means for determining a skip value from the value read from said transfer count register; and means for writing said skip value to a skip count register such that when processing of said scatter/gather list is resumed previously transferred units of data will be skipped.
12. The system of claim 9 wherein said scatter/gather list processor comprises: a scatter/gather list processing component and an asynchronously operable data path engine component, and wherein the means for reading current context includes: means for reading a first transfer count register to determine a first count value representing progress of processing of a current scatter/gather element of said scatter/gather list by said scatter/gather list processing component; means for reading a second transfer count register to determine a second count value representing progress of processing said scatter/gather list by said data path engine component; means for reading a third transfer count register to determine a third count value representing progress of processing said scatter/gather list by said scatter/gather list processing component; means for determining a skip value from said first count value, from said second count value and from said third count value; and means for writing said skip value to a skip count register such that when processing of said scatter/gather list is resumed previously transferred units of data will be skipped.
13. The system of claim 12 wherein the means for determining includes: means for determining a prefetch adjustment value from said second count value and said third count value representing a number of units of data processed by said scatter/gather list processing component but not yet processed by said data path engine component; and means for determining said skip value from said first count value and from said prefetch adjustment value.
14. The system of claim 9 further comprising: means for modifying said current context prior to writing said current context wherein the modification is responsive to a Modify Data Pointers message.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
July 20, 2001
May 4, 2004
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.