|Publication number||US5966142 A|
|Application number||US 08/933,679|
|Publication date||Oct 12, 1999|
|Filing date||Sep 19, 1997|
|Priority date||Sep 19, 1997|
|Publication number||08933679, 933679, US 5966142 A, US 5966142A, US-A-5966142, US5966142 A, US5966142A|
|Inventors||Patrick A. Harkin|
|Original Assignee||Cirrus Logic, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (4), Referenced by (17), Classifications (9), Legal Events (5)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention relates generally to information processing systems and more particularly to an improved graphics system for use with computer systems.
Sophisticated graphics packages have been used for some time in expensive computer design and graphics systems. Increased capabilities of graphics controllers and display systems, combined with standardized graphics languages, have made complex graphics functions available in even the most routine applications. For example, word processor, spread sheets and desktop publishing packages now include relatively sophisticated graphics capabilities. Three-dimensional (3D) displays have become common in games, animation, and multimedia communication and drawing packages.
The availability of sophisticated graphics in PCs has driven a demand for even greater graphics capabilities. To obtain these capabilities, graphics systems must be capable of performing more sophisticated functions in less time to process greater amounts of graphical data required by modern software applications. In particular, there is a continuing need for improvements in software algorithms and hardware implementations to draw three-dimensional objects using full color, texture mapping and transparency blending.
Improvements have been made in the hardware realm. Graphics processors and accelerators are available with software drivers that provide an interface between a host central processing unit and graphics processors. In general, the graphics software receives information for drawing objects on a computer screen, calculates certain basic parameters associated with the objects and provides input to the graphics processor in the form of a "display list" of parameters.
A graphics processor then uses the display list values in generating the graphics objects to be displayed. The graphics processor may use interpolation techniques where the fundamental information for the object to be drawn comprises a series of initial and incremental parameters or values. The graphics processor loads or otherwise receives the initial parameters for the pixels to be drawn, and interpolates to draw the object by incrementing the parameters until the object is completely drawn.
Existing graphics implementations that use display lists typically load data in a sequential format to a register file in the graphics processor. For each type of primitive, a particular set of data values is required to render that type of primitive. For example, a point to be drawn to a pixel grid may require an "x,y" location, color value, and a "z" or depth value for depth comparison. Conversely, if the primitive is a line, the parameters required may also include a slope to describe the line's direction in the x direction, and a count value to define the length in the y direction.
An example of a display list is shown below in Table 1:
TABLE 1______________________________________ADDRESS NAME DESCRIPTION______________________________________0X4000 X Initial X value 0X4004 Y Initial Y value 0X4008 R Initial Red value 0X400C G Initial Green value 0X4014 B Initial Blue value 0X4044 Z Initial depth value______________________________________
The display list provides the parameters required to draw points, lines, and polygons. The display list provided from the central processor or from memory provides data for the various registers in the register file. The display parameter values are processed by the graphics processor to render the corresponding graphics objects.
For example, a typical polygon may be divided into two separate adjacent triangles. A "main slope" technique requires the calculation of a "main slope" which is defined as the slope of the side that extends the entire vertical length of polygon. Two "opposite slopes" are determined which represent the slopes of the other two sides of the polygon. The slopes and dimensions of the polygon components are used in the creation of graphics images on display units.
In addition to the basic position and color parameters of a polygon, the graphics processor renders other parameters, such as texture parameters, as part of the polygon. These parameters are provided to the graphics processor in a display list generated by the central processing unit (CPU). The graphics processor executes the display list and renders the appropriate pixels for the polygon.
The rendering or interpolation of the graphics primitive is very process-intensive and requires the graphics processor to control the computer system bus or a dedicated communication link with the CPU. However, since prior art graphics processors do not have system bus-mastering capabilities, these graphics processors have to depend on the CPU to handle a bulk of the processing of graphics data in the computer system. Relying on the CPU to process most of the graphics data means that the graphics processor has to compete with other system resources for the CPU's bus bandwidth. This process can be time consuming and may lead to the loss of graphics data between the time such data are processed until the data are displayed on a display screen. The CPU dependence may also affect the overall system performance if there are many graphics applications running concurrently within the system.
It would be advantageous, therefore, if a graphics system were developed which could allow the graphics processor to have bus-mastership of the system bus in a computer system during a write operation of graphics primitive parameters and during renderings of graphics primitives.
It would be further advantageous if the host processor could transmit parameter values as part of the display list which would be internally stored in the graphics processor for subsequent writes to the register file in the graphics processor while the graphics processor is processing other instructions, and without incurring any extra write or clock cycles.
Thus, there is a need for a method of reducing the memory bandwidth of the graphics processor while rendering graphics primitives such as polygons within the graphics subsystem while maintaining the processing speed of CPU.
The foregoing and other needs are substantially met through provision of a method and a system for optimizing graphics commands processing in a graphics processor. The present invention enables the graphics processor to efficiently use the graphics processor's internal memory storage for both graphics commands and data when the supplied data is necessary for executing the graphics command.
Primitive parameter values are generated by software in a host processor and are provided to the graphics processor in the form of a display list. The display list generally includes operational code instructions (opcode) which indicate the type of command to be performed and the corresponding display data. In a preferred embodiment, the graphics processor includes a bus-mastering interface unit for fetching the display list either directly from the host processor or from system memory through a read operation. The bus-mastering interface unit allows the graphics processor to operate in a processor mode by assuming control of the system bus in the computer system in order to process the fetched graphics commands and data without any interruption from any other system resources in the computer system.
Through a bus-mastering interface unit, the graphics processor is able to fetch the display list directly from system memory to decode graphics commands and any associated data to determine where or how to internally store the commands and data.
A preferred embodiment also includes an internal memory storage unit in the graphics processor. The internal memory unit comprises a plurality of "First-In-First-Out" or "FIFO" registers for storing the fetched commands. Data fetched with the commands by the bus-master interface unit is decoded and stored in the FIFO registers. The FIFO registers are also used to buffer write operations in the graphics processor to a datapath unit in the graphics processor while the graphics processor is fetching or processing pre-fetched data.
The described embodiment provides the advantageous functionality of a graphics processor capable of internally grouping register writes into a sequential write operation to perform a continous write to a register file with a given display list instructions without having to register skip.
The bus-mastering interface unit further includes decoding logic which enables the bus-mastering interface unit to decode the fetched graphics commands from system memory while stalling the passing of already decoded commands on to the FIFO registers. Stalling the passing of commands on to the FIFO registers allows an execution unit in the graphics processor to empty data already stored in the FIFO registers for a primitive being rendered without interrupting the operation of the bus-mastering interface unit.
The preferred embodiment is able to maximize the use of the FIFO registers by stalling the passage of commands to the FIFO registers, and arranging only commands that require corresponding data to be fetched so that subsequent burst of data from subsequent commands can utilize the FIFOs effectively.
A preferred embodiment further includes an adder logic circuit which couples to the bus-mastering interface unit to allow the bus-mastering interface unit to bypass the FIFO register and provide decoded commands directly to the execution unit for processing.
Accordingly, the graphics processor in a preferred embodiment is able to effectively utilize the bus-mastering capabilities of the graphics processor while rendering graphics primitive internally and at the same time optimizing the internal storage of the fetch commands in order to speed up X and Y pixel address fetches to render a polygon in a single clock cycle.
A better understanding of the present invention can be obtained when the following detailed description of a preferred embodiment is considered in conjunction with the following drawings, in which:
FIG. 1 is a simplified block diagram of a computer system having a graphics processor in accordance to the teaching of the present invention;
FIG. 2 is a simplified block diagram showing in some detail portions of the graphics processor of FIG. 1, including a bus-mastering unit;
FIG. 3 is a simplified block diagram showing additional detail of the graphics processor of FIG. 2; and
FIG. 4 is a block diagram illustrating an exemplary command decoding methodology in accordance to the teachings of the present invention.
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be obvious to one skilled in the art that the present invention may be practiced without these specific details or by using alternate elements or methods. In other instances; well known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure significant aspects of the present invention.
Some portions of the detailed description which follow are represented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within a computer system. These descriptions and representations are the means used by those skilled in the art to most effectively convey the substance of their work to other skilled in the art. A procedure, logic block, process etc., is herein, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. For reasons of convenience, and with reference to common usage, these signals are referred to as bits, values or the like with reference to the present invention.
Unless specifically stated otherwise as apparent from the following discussions, it is understood that thorough discussions of the present invention, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data. The data is represented as physical (electronic) quantities within the computer system's registers and memories and is transformed into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
With reference to FIG. 1, a block diagram is shown of a host computer system 10 used by the preferred embodiment of the present invention. In general, host computer 10 comprises a bus 25 for communicating data and instructions, a host processor (CPU) 50 coupled to bus 25 for processing data and instructions, a computer readable memory unit 75 coupled to bus 25 for storing data and instructions from the host processor 50.
The host processor 50 provides data and control signals via bus 25 to a graphics hardware subsystem. The computer system 10 includes a graphics processor 100 which executes a series of display instructions found within a display list. The graphics processor 100 supplies data and control signals to a buffer or graphics memory 85. Graphics memory 85 is implemented for refreshing screens of a display device 60. The display device 60 utilized with the computer system 400 of the present invention can be a liquid crystal device, cathode ray tube, direct retina simulator (such as the Virtual Retinal Display (VRD) from Microvision with offices in Seattle, Wash., VRD's are described in U.S. Pat. Nos. 5,467,104 and 5,596,339) or other display device suitable for creating graphics images and alphanumeric characters recognizable to the computer user.
In a preferred embodiment, the graphics processor 100 provides hardware support for 2D and 3D graphics, and for text and windowing operations of a computer system. The graphics processor 100 transfers digital data from the system memory 75 or host processor 50, and processes data for storage in graphics memory 85 ultimately for display on the display unit 60. Graphics memory 85 in the present example, is a RAMBUS™ type dynamic random access memory device, but may also be comprised of synchronous RAM (SRAM), synchronous graphics RAM (SGRAM), Extended Data Out (EDO) RAM, etc.
The host processor 50 and system memory 75 both preferably communicate with the graphics processor 100 via the system bus 25. The system bus 25 may be, for example, the peripheral component interconnect or so called "PCI" bus.
Still referring to FIG. 1, the graphics processor 100 couples to the system bus 25. In accordance with the preferred embodiment, the graphics processor 100 includes bus-mastering capabilities, thus permitting graphics processor 100 to bus-master the system bus 25.
In the preferred embodiment, graphics memory 85 is comprises a bank of RDRAM buffers, and the digital data stored in the RDRAM comprises a rectangular array of picture elements referred to as "pixels" or "pixel values". Each pixel can be defined by an 8 bit value. For example, the intensity of a single color component of a corresponding pixel on a screen of the display unit 60 is typically defined by an 8 bit value.
The RDRAM frame buffer 85 provides a performance improvement by permitting faster access to display list instructions and pixel data, compared to accessing data stored in the main memory 75 of the host computer system 10. The graphics processor 100 communicates to the RDRAM buffer 85 through address, data and control lines, collectively referred to as a bus 118. In the preferred embodiment the bus is a RAMBUS™ type, hereinafter referred to as "RBUS".
The particular embodiment shown in FIG. 2 is only one of many possible implementations of a graphics system for use in a computer system. FIG. 2 is simplified for purposes of clarity so that many components and control signals are omitted which are not necessary to acquire an understanding of the present invention.
Referring now to FIG. 2, the graphics processor 100 preferably includes a register file 135 and a 2D/3D engine 150 for generating three and two dimensional primitives. The system shown in FIG. 2 includes an instruction buffer 155, a host rendering buffer 165 and a host texture buffer 175. Buffers 155,165 and 175 store the instructions and parameters generated by the graphics application 180. As one skilled in the art will understand, buffers 155, 165 and 175 may reside in the processor 50 or system memory 75 of FIG. 2. The graphics memory 85 of the preferred embodiment is implemented as display and Z buffers.
The register file 135 receives the instructions and display information from buffer 155 for subsequent use by the 2D/3D engine 150. The 2D/3D engine 150 receives the instructions and display parameters from the register file 135 and generates values for each pixel for rendering on display unit 60. The 2D/3D engine 150 stores the pixel data internally in the graphics processor 100 before rendering the pixels to display unit 60 or to the RDRAM 85.
Referring now to FIG. 3, the graphics processor 100 preferably includes a bus-master interface unit 400 coupled to a storage unit 410, an execution unit 420, a register file 430 and polygon and texture engines 440. The polygon and texture engines 440 are coupled to the RDRAM 85.
The bus-master interface unit 400 provides interface to the system bus 25. Generally, the bus-master interface unit 400 fetches instructions and the display list and loads the information into the storage unit 410 while the polygon and texture engines 440 are drawing based upon previously fetched instructions.
When the graphics processor 100 is in a bus-master mode, the bus-master interface unit 400 generates a system bus address for reading the display list from system memory 75 and then fills the storage unit 410 with the display list instructions and display list data. The bus-master interface unit 400 also includes logic for enabling the graphics processor 100 to arbitrate for control of the system bus 25.
The execution unit 420 under the direction of the bus-master interface unit 400 transfers the contents of the storage unit 410 to the register file 430 for rendering operations by the polygon and texture engines 440.
The execution unit 420 generally functions to set control states for the graphics processor 100, and further to synchronize operations of the graphics processor subcomponents. In the exemplary embodiment, as long as the RDRAM 85 is available, the execution unit 420 is assigned the highest priority by the arbitration logic in the storage unit 410. Thus, the execution unit 420 is not interrupted while executing an instruction. The execution unit 420 is typically placed in an IDLE mode between each and every "render" instruction. In addition, the execution unit 420 suspends operation when a current executing instruction requires data from the system bus 25 or system memory 75. The execution unit 420 also includes a command feed logic circuit to handle display list instructions provided by the bus-master interface unit 400.
Still referring to FIG. 3, the register file 430 generally comprises registers for every possible value to render any primitive. Thus, to load a display list value into the appropriate registers in the register file 430, each value in the display list has an associated address corresponding to a register in the register file 430.
Once a set of display list values from the storage unit 410 is loaded into the register file 430, the primitive defined by those values is rendered by the polygon and texture engine 440. While the polygon and texture engines 440 are rendering the current primitive from the register file 430, the bus-master interface unit 400 may receive a display list corresponding to the next primitive to be rendered and, if so, loads the display list into the storage unit 410.
As shown in FIG. 4, a command address bypass logic unit 501 is contained within the bus-master interface unit 400. The bus-master interface unit 400 is coupled to the internal storage unit 410, the execution unit 420 and datapath unit 435. The datapath 435 is connected to the RDRAM 85. An Adder logic circuit 500 receives inputs from the internal storage unit 410 and the bypass logic unit 501, and provides an output to the execution unit 420.
The bus-master interface unit 400 comprises decoder 510 and bypass logic 515. The bus master interface unit 400 may include other components which are not shown here in order not to obfuscate the teachings of the present invention. Decode logic 510 is included in the bus-master interface unit 400 and coupled to the bypass logic 515 to receive commands (e.g. Command 3) from system memory. The fetched command is decoded and passed to the internal storage unit 410 via signal lines 508. The decoder 510 may alternatively pass decoded commands to the execution unit 420 through the Adder 500.
The FIFO BYPASS logic 515 is coupled to the decoder 510 to allow the decoder 510 to be able to bypass writing data to the storage unit 410. The FIFO BYPASS logic 515 also enables the bus-master interface unit 400 to stall passing commands and register writes to the internal storage unit 410 while allowing the execution unit 420 to empty the contents of the storage unit 410. In a preferred embodiment, the bypass logic comprises a register bit which is set "on" or "off" to indicate when to bypass the internal storage unit 410.
In the preferred embodiment, the bus-master interface unit 400 asserts request signal line 503 to the execution unit 420 to pass decoded commands directly to the execution unit 420 for processing.
Still referring to FIG. 4, the storage unit 410 comprises a plurality of First-In-First-Out or FIFO registers 411 for storing the commands pre-fetched by the bus-master interface unit 400 for processing by the execution unit 420. The FIFO registers 411 receive as inputs, decoded commands from the bus-master interface unit 400 via signal lines 508, and pass the stored commands and register writes to the datapath unit 435 and the Adder logic 500 via signal line 507. The FIFO registers 411 within the internal storage unit 410 can also buffer pre-fetched commands in the graphics processor while the execution unit processes previously fetched commands to continue rendering a primitive.
The Adder logic 500 receives as inputs, the decoded fetched commands from the bus-master interface unit 400 and the stored buffered commands in the FIFO registers 411. The Adder logic 500 selectively receives newly fetched commands decoded in the bus-master interface unit 400 or the pre-fetched commands stored in the FIFO registers and passes these commands on to the execution unit 420 for processing. By selectively passing commands and data, the Adder logic 500 is able to maximize the use of the FIFO registers 411 within the internal storage unit 410 by arranging commands that only require fetching data.
In the exemplary embodiment shown in FIG. 4, Command 3 is an instruction which will request data for completion over the system bus 25 from the bus-master interface unit 400. The bus-master interface unit 400 decodes Command 3 and holds off writing the FIFO registers 411 until the FIFO registers 411 are completely emptied by the execution unit 420. Command 3 is then loaded by the execution unit 420. Executing Command 3 causes the bus-master interface unit 400 to fetch data from the system memory which is passed directly to the execution unit 420. Since the bus-master interface unit 400 has stalled passing commands/register writes into the FIFO registers 411, the FIFO registers 411 are then used to buffer writes to the datapath unit 435. For example, when a three dimensional (3D) rendering is occurring, the graphics processor needs to fetch texture data for a graphics object being rendered. The texture data which takes storage priority is preferably buffered in the FIFO registers and is provided to the execution unit before any new primitive values are fetched. In the case where the texture data is stored in the FIFO registers, the bus-master interface unit 400 will have to bypass the FIFO registers 411 to provide incoming commands to the execution unit to process other primitives being drawn on the computer screen.
The method and apparatus of the present invention has been described in connection with a preferred embodiment as disclosed herein. Although an embodiment of the present invention has been shown and described in detail herein, along with certain variants thereof, many other varied embodiments that incorporate the teachings of the invention may be easily constructed by those skilled in the art, and also included or integrated into a CPU or other larger system integrated circuit or chip. Accordingly, the present invention is not intended to be limited to the specific form set forth herein, but on the contrary, it is intended to cover such alternatives, modifications, and equivalents, as can be reasonably included within the spirit and scope of the invention.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5689720 *||Feb 15, 1996||Nov 18, 1997||Seiko Epson Corporation||High-performance superscalar-based computer system with out-of-order instruction execution|
|US5793386 *||Jun 28, 1996||Aug 11, 1998||S3 Incorporated||Register set reordering for a graphics processor based upon the type of primitive to be rendered|
|US5796413 *||Dec 6, 1995||Aug 18, 1998||Compaq Computer Corporation||Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering|
|US5829054 *||Feb 26, 1997||Oct 27, 1998||Texas Instruments Incorporated||Devices and systems with parallel logic unit operable on data memory locations|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6128026 *||Jul 24, 1998||Oct 3, 2000||S3 Incorporated||Double buffered graphics and video accelerator having a write blocking memory interface and method of doing the same|
|US6515670 *||Dec 10, 1999||Feb 4, 2003||Silicon Integrated Systems Corp.||Graphics system and method for minimizing the idle time of a host processor in the graphics system|
|US6542160 *||Jun 18, 1999||Apr 1, 2003||Phoenix Technologies Ltd.||Re-generating a displayed image|
|US6618759 *||Jan 31, 2000||Sep 9, 2003||Hewlett-Packard Development Company, L.P.||Immediate mode computer graphics command caching|
|US6734864||Sep 19, 2002||May 11, 2004||Phoenix Technologies Ltd.||Re-generating a displayed image|
|US6741257||Jan 20, 2003||May 25, 2004||Neomagic Corp.||Graphics engine command FIFO for programming multiple registers using a mapping index with register offsets|
|US6914605||Mar 20, 2001||Jul 5, 2005||Matsushita Electric Industrial Co., Ltd.||Graphic processor and graphic processing system|
|US6995770 *||Aug 22, 2002||Feb 7, 2006||International Business Machines Corporation||Command list controller for controlling hardware based on an instruction received from a central processing unit|
|US8024547 *||May 1, 2007||Sep 20, 2011||Vivante Corporation||Virtual memory translation with pre-fetch prediction|
|US8085275 *||Dec 27, 2011||Nvidia Corporation||System and method for low-overhead push buffer jumps|
|US20010024205 *||Mar 20, 2001||Sep 27, 2001||Matsushita Electric Industrial Co., Ltd.||Graphic processor and graphic processing system|
|US20040036690 *||Aug 22, 2002||Feb 26, 2004||International Business Machines Corporation||Command list controller for controlling hardware based on an instruction received from a central processing unit|
|US20080055327 *||Sep 6, 2006||Mar 6, 2008||Barinder Singh Rai||Highly Efficient Display FIFO|
|US20080276066 *||May 1, 2007||Nov 6, 2008||Giquila Corporation||Virtual memory translation with pre-fetch prediction|
|US20100241812 *||Oct 14, 2008||Sep 23, 2010||Nxp B.V.||Data processing system with a plurality of processors, cache circuits and a shared memory|
|USRE41523||May 25, 2006||Aug 17, 2010||Retika John Y||Graphics engine command FIFO for programming multiple registers using a mapping index with register offsets|
|EP1136950A2 *||Mar 21, 2001||Sep 26, 2001||Matsushita Electronics Corporation||Graphic processor and graphic processing system|
|U.S. Classification||345/522, 712/207, 345/553, 345/558, 345/520, 712/218|
|Mar 23, 1998||AS||Assignment|
Owner name: CIRRUS LOGIC, INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HARKIN, PATRICK A.;REEL/FRAME:009058/0894
Effective date: 19980318
|Mar 17, 2003||FPAY||Fee payment|
Year of fee payment: 4
|May 2, 2007||REMI||Maintenance fee reminder mailed|
|Oct 12, 2007||LAPS||Lapse for failure to pay maintenance fees|
|Dec 4, 2007||FP||Expired due to failure to pay maintenance fee|
Effective date: 20071012