Claims Analysis
Total Claims: 12
Claim 1
Independent Claim
406 words
A multi-processing system comprising: a) host processor having a respective host data memory; b) a second processor having a respective second data memory; said second processor being required to have data communication with said host processor; c) a bus providing data communication between said host and second data memories, between said host processor and host data memory, and between said second processor and its second data memory; d) a direct memory access (DMA) controller communicating with said bus and said second data memory for directing transfers of varied-length blocks of data, via said bus, between said host and second data memories on behalf of said second processor, said DMA controller operating in response to control information written to said second data memory by said second processor; said control information defining locations in both said host and second data memories between which said block of data is to be transferred, and the direction in which said block of data is to be transferred; said second processor being capable of writing additional control information to said second data memory while said DMA controller is directing transfer of said block of data; said additional control information defining transfer of one or more additional blocks of data between said host and second data memories; said DMA controller being capable of directing said transfers of both said block of data and said one or more additional blocks of data without having to have any direct communication with either of said host and second processors; and further wherein said control information and said additional control information, respectively defining said transfers of said block of data and said one or more additional blocks of data, further comprise: a) plural control blocks stored in said second memory, said control blocks defining storage locations in both said host and second data memories representing sources and destinations of said data block and said one or more additional data blocks that are to be transferred; and b) a circular queue formed in said second data memory, said circular queue having pointer elements therein, one for each of said control blocks, with each of said pointer elements pointing to the location of the respective control block in said second memory; and wherein said second processor includes: c) means for writing information constituting said plural control blocks to said second data memory and for writing information constituting said pointer elements to said circular queue in said second data memory.
Claim 2
Dependent Claim
406 words
A multi-processing system comprising: a) host processor having a respective host data memory; b) a second processor having a respective second data memory; said second processor being required to have data communication with said host processor; c) a bus providing data communication between said host and second data memories, between said host processor and host data memory, and between said second processor and its second data memory; d) a direct memory access (DMA) controller communicating with said bus and said second data memory for directing transfers of varied-length blocks of data, via said bus, between said host and second data memories on behalf of said second processor, said DMA controller operating in response to control information written to said second data memory by said second processor; said control information defining locations in both said host and second data memories between which said block of data is to be transferred, and the direction in which said block of data is to be transferred; said second processor being capable of writing additional control information to said second data memory while said DMA controller is directing transfer of said block of data; said additional control information defining transfer of one or more additional blocks of data between said host and second data memories; said DMA controller being capable of directing said transfers of both said block of data and said one or more additional blocks of data without having to have any direct communication with either of said host and second processors; and further wherein said control information and said additional control information, respectively defining said transfers of said block of data and said one or more additional blocks of data, further comprise: a) plural control blocks stored in said second memory, said control blocks defining storage locations in both said host and second data memories representing sources and destinations of said data block and said one or more additional data blocks that are to be transferred; and b) a circular queue formed in said second data memory, said circular queue having pointer elements therein, one for each of said control blocks, with each of said pointer elements pointing to the location of the respective control block in said second memory; and wherein said second processor includes: c) means for writing information constituting said plural control blocks to said second data memory and for writing information constituting said pointer elements to said circular queue in said second data memory.
Claim 3
Dependent Claim
41 words
A multi-processing system according to claim 1, wherein said DMA controller further comprises: a) means for selecting individual said pointer elements in said circular queue; and b) means for retrieving respective said control blocks pointed to by said retrieved pointer elements.
Claim 4
Dependent Claim
78 words
A multi-processing system according to claim 1, wherein said DMA controller further comprises: a) a space reserved in each said control block for providing an indication of completion status for a data block transfer defined by the respective control block; and b) means for setting said completion indication in said respective control block when the said DMA controller has performed a data transfer defined by the respective control block to a point of completion of the respective transfer.
Claim 5
Dependent Claim
52 words
A multi-processing system according to claim 3 wherein said DMA controller further comprises means for interrupting said second processor when a said completion indication has been set in a said respective control block; said interruption requiring said second processor to examine all currently active control blocks for detection of said completion indication.
Claim 6
Dependent Claim
60 words
A multi-processing system according to claim 1, wherein said circular queue of pointer elements is variable in size according to the number of control blocks currently stored in said second data memory, and the amount of storage space in said second memory that is allocated to storing control blocks pointed to by said pointer elements is similarly variable in size.
Claim 7
Dependent Claim
63 words
A multi-processing system according to claim 1 wherein said bus comprises first and second buses connected in tandem and having different respective first and second transmission rates, and wherein said system further comprises means located between said first and second buses for transferring data between said first and second buses, in discrete bursts conforming to said different respective first and second transmission rates.
Claim 8
Independent Claim
427 words
A method of performing direct memory access operations in a multi-processing system that comprises a first processor having a first memory, a second processor having a second memory, and a bus that provides communication between said first processor and its first memory, between said second processor and its second memory, between said first and second processors per se, and between said first and second memories, said method comprising the steps of: a) writing a set of control information from said second processor to said second memory, said set of control information defining a single variable length data block transfer to be conducted between said second and first memories via said bus, said set of control information including information defining locations in both said second and first memories between which said single data block transfer is to be conducted; and b) performing a said direct memory access operation independently of both said second and first processors, to transfer a block of data between said locations in said second and first memories, in accordance with said set of control information written to said second memory by said second processor; said method further comprising steps of: c) extending said step of writing said set of control information to include having plural sets of said control information written to said second memory from said second processor, said plural sets of control information respectively defining different data block transfers to be conducted sequentially between said second and first memories, and each set of control information in said plural sets containing information defining locations in both said second and first memories between which a respective block of data is to be transferred via a respective said direct memory access operation; d) writing plural first pointers, into a circular queue in said second memory, defining locations in said second memory at which said plural sets of control information are stored; and e) providing a second pointer defining locations in said second memory containing said circular queue of first pointers; said second pointer providing a reference for locating all of said first pointers; and f) using said second and first pointers, extending said step of performing said direct memory access operation to include sequentially performing plural direct memory access operations, respectively defined by individual ones of said plural sets of control information stored in said second memory, and thereby transferring plural blocks of data between locations in said second and first memories defined by said plural sets of control information, without requiring further involvement of any of said second processors in any of said operations.
Claim 9
Independent Claim
427 words
A method of performing direct memory access operations in a multi-processing system that comprises a first processor having a first memory, a second processor having a second memory, and a bus that provides communication between said first processor and its first memory, between said second processor and its second memory, between said first and second processors per se, and between said first and second memories, said method comprising the steps of: a) writing a set of control information from said second processor to said second memory, said set of control information defining a single variable length data block transfer to be conducted between said second and first memories via said bus, said set of control information including information defining locations in both said second and first memories between which said single data block transfer is to be conducted; and b) performing a said direct memory access operation independently of both said second and first processors, to transfer a block of data between said locations in said second and first memories, in accordance with said set of control information written to said second memory by said second processor; said method further comprising steps of: c) extending said step of writing said set of control information to include having plural sets of said control information written to said second memory from said second processor, said plural sets of control information respectively defining different data block transfers to be conducted sequentially between said second and first memories, and each set of control information in said plural sets containing information defining locations in both said second and first memories between which a respective block of data is to be transferred via a respective said direct memory access operation; d) writing plural first pointers, into a circular queue in said second memory, defining locations in said second memory at which said plural sets of control information are stored; and e) providing a second pointer defining locations in said second memory containing said circular queue of first pointers; said second pointer providing a reference for locating all of said first pointers; and f) using said second and first pointers, extending said step of performing said direct memory access operation to include sequentially performing plural direct memory access operations, respectively defined by individual ones of said plural sets of control information stored in said second memory, and thereby transferring plural blocks of data between locations in said second and first memories defined by said plural sets of control information, without requiring further involvement of any of said second processors in any of said operations.
Claim 10
Dependent Claim
84 words
The method of claim 7 further comprising steps of sequentially retrieving successive ones of said first pointers from said circular queue, using said second pointer as a reference to locate an initial one of said first pointers, and using said retrieved first pointers successively retrieving sets of control information pointed to by respective first pointers, and using said retrieved sets of control information performing said plural direct memory access operations to successively transfer said plural blocks of data between said second and first memories.
Claim 11
Dependent Claim
61 words
The method of claim 8 further comprising steps of successively modifying said second pointer to point successively to individual ones of said first pointers and using said successively modified second pointers to retrieve respective successive ones of said first pointers as part of said steps of successively retrieving said sets of control information and performing said plural direct memory access operations.
Claim 12
Dependent Claim
141 words
The method of claim 9, further comprising the steps of providing second information associated with said second pointer for defining the size of said circular queue of first pointers, allowing spaces allocated in said second memory for storage of both said circular queue and said plural sets of control information to vary in size to accommodate an arbitrary number of said second sets of control information, determining if said second memory contains any of said sets of control information that have not been retrieved and processed, and if said second memory does not contain any said sets then waiting for said second processor to write another of said sets of control information to said second memory and first pointer information to said circular queue and then performing another block data transfer relative to said another of said sets of control information.