System and method for directly executing user DMA instruction from user controlled process by employing processor privileged work buffer pointers
First Claim
1. A device for transferring data processing commands and associated data between a user'"'"'s host system, having a main memory and host processor, and an external data processing system via user controlled direct memory access (DMA) comprising:
- a work buffer in said main memory which is locked for a DMA controlling user process of said host processor, said work buffer storing said data processing commands and associated data for said DMA controlling user process;
a work buffer pointer register containing a work buffer pointer to said work buffer for said DMA controlling user process, said work buffer pointer being unique to said DMA controlling user process and said host processor having privileged access to said work buffer pointer register whereby said work buffer pointer is unmodifiable by said DMA controlling user process either directly or indirectly; and
means responsive to a user DMA instruction from said DMA controlling user process for reading data processing commands and associated data specified in said user DMA instruction from said work buffer starting at the address pointed to by said work buffer pointer and for transferring, via DMA, said data processing commands and associated data from said work buffer to said external data processing system.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention relates to an intelligent direct memory access (DMA) controller which interprets user commands from a host system, establishes work buffers for each user process, and retrieves blocks of data from the work buffers at the user'"'"'s is request, rather than at the request of the kernel software. This is accomplished by establishing work buffers for each user process which are locked into physical memory. The controlling user process will then fill one work buffer, acquire the device semaphore, start physical DMA on the locked buffer, and then start filling another buffer. Memory integrity is maintained by allowing the user to access the work buffers for DMA without knowing their physical location in memory, via work buffer pointers from work buffer pointer registers which correspond to each work buffer for each user process. These work buffer pointer registers are privileged and are updated by the host processor for each new controlling user process.
-
Citations
48 Claims
-
1. A device for transferring data processing commands and associated data between a user'"'"'s host system, having a main memory and host processor, and an external data processing system via user controlled direct memory access (DMA) comprising:
-
a work buffer in said main memory which is locked for a DMA controlling user process of said host processor, said work buffer storing said data processing commands and associated data for said DMA controlling user process; a work buffer pointer register containing a work buffer pointer to said work buffer for said DMA controlling user process, said work buffer pointer being unique to said DMA controlling user process and said host processor having privileged access to said work buffer pointer register whereby said work buffer pointer is unmodifiable by said DMA controlling user process either directly or indirectly; and means responsive to a user DMA instruction from said DMA controlling user process for reading data processing commands and associated data specified in said user DMA instruction from said work buffer starting at the address pointed to by said work buffer pointer and for transferring, via DMA, said data processing commands and associated data from said work buffer to said external data processing system. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A device for transferring graphics commands and graphics primitives between a user'"'"'s host system, having a main memory and a host processor, and a graphics processing subsystem via user controlled direct memory access (DMA) comprising:
-
at least two work buffers in said main memory which are locked for a DMA controlling user process of said host processor, each work buffer selectively storing said graphics commands and graphics primitives for said DMA controlling user process; work buffer pointer registers respectively containing work buffer pointers to different ones of said work buffers for said DMA controlling user process, each work buffer pointer being unique to said DMA controlling user process and said host processor having privileged access to said work buffer pointer registers whereby each work buffer pointer is unmodifiable by said DMA controlling user process either directly or indirectly; and means responsive to a user DMA instruction from said DMA controlling user process for reading graphics commands and graphics primitives specified in said user DMA instruction from a work buffer selected by the user at the address pointed to by the corresponding work buffer pointer, and for transferring, via DMA, said graphics commands and graphics primitives from said selected work buffer to said graphics subsystem. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. A method for providing user controlled direct memory access (DMA) by an external data processing system to data stored in a main memory of a user'"'"'s host system having a host processor in response to a user DMA command, comprising the steps of:
-
defining a work buffer in said main memory for each of a plurality of user processes being processed by the user'"'"'s host system; writing the user'"'"'s data processing commands and associated data in a work buffer which is locked by a DMA controlling user process of said user'"'"'s host system; defining a work buffer pointer register for said DMA controlling user process, said work buffer pointer register containing a work buffer pointer to said work buffer locked by said DMA controlling user process, said work buffer pointer being unique to said DMA controlling user process and said host processor having privileged access to said work buffer pointer register whereby said work buffer pointer is unmodifiable by said DMA controlling user process either directly or indirectly; reading, in response to said DMA command from said DMA controlling user process, said data processing commands and associated data from said work buffer locked by said DMA controlling user process starting at an address pointed to by the work buffer pointer for said DMA controlling user process; and transferring, via DMA, said data processing commands and associated data from said work buffer locked by said DMA controlling user process to said external data processing system. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44, 45)
-
-
46. A method for providing user controlled direct memory access (DMA) by an external data processing system to data stored in a main memory of a user'"'"'s host system having a host processor in response to a user DMA command, comprising the steps of:
-
defining at least two work buffers in said main memory for each of a plurality of user processes being processed by the user'"'"'s host system; acquiring a memory lock on said work buffers for a DMA controlling user process being implemented by said user'"'"'s host system; writing the user'"'"'s data processing commands and associated data to one of the work buffers defined for said DMA controlling user process; defining work buffer pointer registers respectively containing work buffer pointers to different ones of said work buffers for said DMA controlling user process, each work buffer pointer being unique to said DMA controlling user process and said host processor having privileged access to said work buffer pointer registers whereby each work buffer pointer is unmodifiable by said DMA controlling user process either directly or indirectly; and issuing said user DMA command to start DMA from a selected one of said work buffers; reading said data processing commands and associated data from the selected work buffer starting at an address pointed to by the work buffer pointer corresponding to the selected work buffer for said DMA controlling user process; and transferring said data processing commands and associated data from said selected work buffer to said external data processing system. - View Dependent Claims (47, 48)
-
Specification