A single chip display processor comprised of a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, a pixel data unit (pdu) for processing the pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, the IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the pdu, whereby the pdu can process the blocks of pixel data for subsequent display of processed pixel data.
|
9. A single chip display processor comprising:
(a) a dynamic random access memory (DRAM) frame buffer for storing at least one of graphics and video pixel data, (b) a pixel data unit (pdu) for processing said pixel data, graphics processor for processing in hardware said pixel data according to instructions as required by a graphical user interface or operating system, integrated in the same integrated circuit (IC) chip as the DRAM, (c) said IC chip further comprising a massively parallel bus for transferring in parallel blocks of pixel data at the same time from the DRAM to the pdu frame buffer to the graphics processor and from the graphics processor to the DRAM, whereby the pdu graphics processor can process said blocks of pixel data for subsequent display of processed pixel data, and write the processed pixel data into the frame buffer,
(d) each of the pdus graphics processor comprising at least one register, each of the registers at least one register being comprised of a cross-coupled inverter connected via access means to a pair of databus lines, each inverter being comprised of VDD power and VSS ground inputs, means for implementing a cycle accessing each inverter to the pair of data buslines by precharging the databus lines to a voltage intermediate the difference between VDD and VSS, selecting each register to connect its inverter to the pair of data bus lines, and then raising the power and ground inputs to VDD and VSS respectively.
1. A single chip display processor comprising:
(a) a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, (b) a pixel data unit (pdu) for processing said pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, (c) said IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the pdu, whereby the pdu can process said blocks of pixel data for subsequent display of processed pixel data,
(d) said DRAM comprising rows of wordlines, columns of bitlines which are orthogonal to said rows of bitlines, bit storage cells connected to said bitlines and wordlines each for storage of a bit of said pixel data, and rows of sense amplifiers connected to the bitlines, sense amplifier select lines connected to groups of said sense amplifiers for enabling operation of said groups of said sense amplifiers together, said sense amplifier and select lines being carried by said IC chip parallel to said wordlines, data bus lines constituting said massively parallel bus each being respectively connected to an output of a sense amplifier and being carried by said IC chip parallel to said bitlines, (e) the pdu being pitch matched to four bitline columns, and being comprised of single bit pdu processors, each virtually simultaneously receiving a bit from a corresponding databus for parallel processing thereof.
11. A single chip display processor comprising:
(a) a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, (b) a pixel data unit (pdu) for processing said pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, (c) said IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the pdu, whereby the pdu can process said blocks of pixel data for subsequent display of processed pixel data,
(d) said DRAM comprising rows of wordlines, columns of bitlines which are orthogonal to said rows of bitlines, bit storage cells connected to said bitlines and wordlines each for storage of a bit of said pixel data, and rows of sense amplifiers connected to the bitlines, sense amplifier select lines connected to groups of said sense amplifiers for enabling operation of said groups of said sense amplifiers together, said sense amplifier and select lines being carried by said IC chip parallel to said wordlines, data bus lines constituting said massively parallel bus each being respectively connected to an output of a sense amplifier and being carried by said IC chip parallel to said bitlines, the pdu being pitch matched to a predetermined number of bitlines columns, (e) means for temporarily storing data from the pdus in the sense amplifiers connected to the bitlines during intervals when the DRAM is not in use, and (f) means for transferring said data from the pdu to said sense amplifiers for temporary storage via the massively parallel bus.
2. A single chip display processor comprising:
(a) a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, (b) a pixel data unit (pdu) for processing said pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, (c) said IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the pdu, whereby the pdu can process said blocks of pixel data for subsequent display of processed pixel data,
(d) said DRAM comprising rows of wordlines, columns of bitlines which are orthogonal to said rows of bitlines, bit storage cells connected to said bitlines and wordlines each for storage of a bit of said pixel data, and rows of sense amplifiers connected to the bitlines, sense amplifier select lines connected to groups of said sense amplifiers for enabling operation of said groups of said sense amplifiers together, said sense amplifier and select lines being carried by said IC chip parallel to said wordlines, data bus lines constituting said massively parallel bus each being respectively connected to an output of a sense amplifier and being carried by said IC chip parallel to said bitlines, the pdu being pitch matched to a predetermined number of bitlines columns, (e) each pdu being comprised of plural pdu units, each unit being comprised of a single bit pdu processor, each pdu processor being connected to a databus for receiving a logical bit from a sense amplifier, and (f) a pdu address decoder for enabling operation at the same time of any number of pdu processors having adjacent addresses, whereby any width of data from any adjacent bitlines may be written into said any number of pdu processors or any width of said number of pdu processors may be cleared in a single cycle.
3. A single chip display processor comprising:
(a) a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, (b) a pixel data unit (pdu) for processing said pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, (c) said IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the pdu, whereby the pdu can process said blocks of pixel data for subsequent display of processed pixel data,
(d) said DRAM comprising rows of wordlines, columns of bitlines which are orthogonal to said rows of bitlines, bit storage cells connected to said bitlines and wordlines each for storage of a bit of said pixel data, and rows of sense amplifiers connected to the bitlines, sense amplifier select lines connected to groups of said sense amplifiers for enabling operation of said groups of said sense amplifiers together, said sense amplifier and select lines being carried by said IC chip parallel to said wordlines, data bus lines constituting said massively parallel bus each being respectively connected to an output of a sense amplifier and being carried by said IC chip parallel to said bitlines, the pdus being pitch matched to a predetermined number of bitlines columns, (e) each pdu being comprised of plural pdu units, each unit being comprised of single bit pdu processors, each pdu processor being connected to a databus for receiving a logical bit from a sense amplifier, and (f) each pdu unit being further comprised of one-bit source, destination and brush variable registers, a four input raster operation (rop4) circuit for logically operating on bits stored in said registers, an rop4 register for storing output data of the rop4 circuit, and a mask register for masking output data of the pdu processors, each register being connected to the rop4 circuit, the rop4 circuit and each register being pitch matched to four bitline columns and connected to a databus.
26. A single chip display processor comprising:
(a) a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, (b) a pixel data unit (pdu) for processing said pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, (c) said IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the pdu, whereby the pdu can process said blocks of pixel data for subsequent display of processed pixel data,
(d) said DRAM comprising rows of wordlines, columns of bitlines which are orthogonal to said rows of bitlines, bit storage cells connected to said bitlines and wordlines each for storage of a bit of said pixel data, and rows of sense amplifiers connected to the bitlines, sense amplifier select lines connected to groups of said sense amplifiers for enabling operation of said groups of said sense amplifiers together, said sense amplifier and select lines being carried by said IC chip parallel to said wordlines, data bus lines constituting said massively parallel bus each being respectively connected to an output of a sense amplifier and being carried by said IC chip parallel to said bitlines, the pdus being pitch matched to a predetermined number of bitlines columns, (e) each bitline column of the DRAM comprising plural transmitting and receiving sense amplifiers respectively, each connected to a bitline pair, said plural sense amplifiers being connected in parallel to an operational pair of data bus lines of an operational data bus, and further comprising a dummy data bus comprised of a dummy pair of data bus lines, means for enabling the plural transmitting sense amplifiers to dump data to the operational pair of data bus lines and for equalizing the voltage on a corresponding bitline pair to VDD/2 voltage, means for charging the dummy pair of data bus lines in parallel with the operational pair of data bus lines, means for detecting when the charge on the dummy pair of databus lines is readable and for providing a signal for disabling the transmitting sense amplifiers and enabling the receiving sense amplifiers, whereby the voltage on the operational pair of data bus lines is inhibited from rising to a level higher than is necessary for correct reading of its data.
4. A processor as defined in
5. A processor as defined in
6. A processor as defined in
7. A processor as defined in
8. A processor as defined in
12. A processor as defined in
13. A processor as defined in
14. A processor as defined in
15. A processor as defined in
16. A processor as defined in
17. A processor as defined in
18. A processor as defined in
19. A processor as defined in
20. A processor as defined in
21. A processor as defined in
22. A processor as defined in
23. A display processor as defined in
(g) a processor for processing at least one of said graphics and video input pixel data, (h) a random access memory digital to analog converter (RAMDAC) for receiving data processed by said processor and for converting it to a display signal, and (i) said DRAM, processor and RAMDAC being integrated into the same integrated circuit chip.
24. A processor as defined in
25. A display processor as defined in
(g) said DRAM forming a frame buffer for storing pixel data in rows, (h) an output logic circuit for processing said pixel data, (i) said massively parallel bus having as many bus lines as pixel bits in a row interconnecting the frame buffer and output logic circuit, (j) a random access memory digital to analog converter (RAMDAC) connected to the output logic circuit for connecting data processed by the output logic circuit to a display signal, (k) said frame buffer, output logic circuit, bus and RAMDAC being integrated into the same integrated circuit chip.
|
This invention relates to computer monitor display controllers for computer terminal displays that use bit-mapped memory, and in particular to a frame buffer memory system and pixel logic connected to the frame buffer memory which processes pixel data prior to application of signals derived therefrom to the computer monitor.
As is well known, a pixel is a picture element on a computer display which has a certain color. Each logical pixel is actually formed of data defining 3 pixels, a red, green and blue pixel, each of which results in a visually merged, colored point on the display. In this disclosure, the term pixel will mean one logical pixel, that is, one set of red, green and blue elements defined by data.
A frame buffer is a memory which contains one frame of pixels, a frame being the total number of pixels that can be displayed on a display. VGA monitors have displays with a frame size of 640 by 480 pixels, and therefore a VGA frame buffer is a memory capable of holding 640×480, or 307,200 pixels.
While a pixel can be stored digitally using any number of bits, a standard "true color" display utilizes 24 bits per pixel, 8 bits for each red, green and blue color of each pixel. Another standard is 8 bits per pixel.
Many systems exist for controlling computer displays, but all systems employ separate integrated circuits for a graphics processor, a frame buffer, and pixel logical operations. The graphics processor can be a single chip or multiple chips interconnected to perform the required processing function. The frame buffer is typically made up of multiple video random access memory (VRAM) chips, or dynamic random access memory (DRAM) chips, as well as a memory controller chip. The pixel logic usually consists of some high speed logic, a high speed static random access memory (SRAM) chip, and a triple random access memory--digital to analog converter (RAMDAC) chip.
One of the critical tasks of a display controller system is to perform the graphics operations as quickly as possible. Bottlenecks determine the maximum speed of the system. One of the major bottlenecks in a graphics system is the interface throughput between the graphics processor and the frame buffer memory. The width of the bus between these two systems is proportional to the speed at which the system can process pixels (pixels per second). Most current systems have a 16 bit or a 32 bit interface, and the most powerful current system has a 64 bit interface.
Another major bottleneck is between the graphics processor and the RAMDAC. The power consumed in driving the capacitive loads of these two interfaces represents a significant fractions of overall graphics sub-system power.
The present invention substantially increases the speed of the graphical and/or video display system of a personal computer or work station, by removing the aforenoted bottleneck. It does so by providing a massively parallel bus between the memory of the display processor and the pixel processor. The data of an entire line of pixels, frame or part of a frame is thereby transferred in parallel between the memory and the pixel processor, whereby the pixel processor processes each bit in parallel with the others that have been transferred. For example, the bus, instead of a maximum 64 bits as in the prior art noted above, can be comprised of 5128 differential bus lines. To provide the massively parallel bus, the architecture of the DRAM memory of the display processor is modified. In addition, to realize the speed gain, both the memory and the display processor, as well as ancillary circuits such as control circuits, decoders, etc., are integrated together into the same integrated circuit.
With the massively parallel operation of the circuit, circuits are included in embodiments which minimize the impact of sudden and large power requirements from the system power supply, and which minimize power usage in the integrated display processor.
The RAMDAC function is also integrated on the same chip to remove the graphics controller-RAMDAC bus as a limiting factor in graphics performance.
A massively parallel bus is a bus having a number of lines which is far greater than the number of bits in a data word handled in the computer or workstation.
In the present invention the entire frame buffer system, including the memory controller, a basic pixel processor and a pixel logic system including a RAMDAC, are integrated into a single integrated circuit chip (IC). This can be implemented as a single stand-alone IC, or a graphics processor can be integrated in the same IC. The frame buffer in the present invention is implemented as a DRAM, and thus can be fabricated using a modern DRAM process (with appropriate dimensions for the size of buffer desired). The pixel processor is implemented as a block of logic circuits very tightly coupled to the DRAM frame buffer. Output pixel logic circuits are preferably implemented in high speed logic, multiple high speed SRAMs and three high speed DACs. These elements are all integrated together to form a very high speed graphics accelerator subsystem.
The invention can be used to control any display device that uses a bit-mapped pixel graphics system, such as Windows 3.1, Chicago (Windows 4) and Windows NT. As sill be understood after reading the description of the invention below, the design can support any size display. The embodiment described herein is directed to a display size of up to 1280 by 1024 pixels. This size of display can be supported using a single chip as described herein, in an eight bit per pixel mode. The embodiment described can also be used singly to support true-color (24 bits per pixel) for VGA displays of 640 by 480 pixels. A set of three of these chips can be operated in parallel to support true-color for all bit mapped screens up to 1280 by 1024 pixels.
To support a 1280 by 1024 by 8 bit frame buffer on a single chip, 10 megabits of DRAM must be integrated in the chip. When the rest of the chip is considered, it clearly must be implemented in a 16 megabit DRAM process. However, smaller versions of the chip, e.g. for support of smaller displays could be implemented using other technologies.
As noted above, the single chip graphics system utilizes a massively parallel bus, in a novel architecture. This provides an interface between the frame buffer memory and a pixel processor (a pixel data unit PDU, the basic graphics processor implementing some of the most basic, but also most often used graphics commands) to be extremely wide. In an embodiment described herein, the interface bus is 5128 bits wide, orders of magnitude larger than the most extremely wide prior art bus (64 bits) in the most powerful previous system. The PDU is interfaced back to the remainder of the graphics processor using a 32 bit bus.
The novel architecture and novel circuits used therein also provide power saving enhancements, to avoid the massive full power dissipation which would otherwise be required in such a system wherein circuits must operate in parallel on 5128 bits in an IC.
The present invention can be used in many different modes of operation. For example, it can be used to display a single window of graphics, of any size, on the display. It can be used for any number of windows of graphics. It will allow any one of these windows to display real-time video. The invention also achieves rate conversion between various video inputs and synchronizes them to the pixel rate. It could also allow a full motion video window to cover the entire display. It will allow full-motion video to be input in a variety of different standard formats, including GREY8, RGB332, RGB565, RGB555, ARGB8888, LUT8, RGB888, YUV411, YUV422 and YUV420, as well as other formats.
A further video function is supported, that of mirroring. The video can be displayed on the display in its correct orientation, or mirrored horizontally. This allows support of a video conferencing mode, in which the user views himself mirrored.
In accordance with an embodiment of the invention, a single chip display processor is comprised of a dynamic random access memory (DRAM) for storing at least one of graphics and video pixel data, a pixel data unit (PDU) for processing the pixel data, integrated in the same integrated circuit (IC) chip as the DRAM, the IC chip further comprising a massively parallel bus for transferring blocks of pixel data at the same time from the DRAM to the PDU, whereby the PDU can process the blocks of pixel data for subsequent display of processed pixel data.
In accordance with another embodiment of the invention, a method of providing pixel data to the display system is comprised of storing pixel data in the frame buffer, transferring pixel data from a row of frame buffers in parallel via a massively parallel bus having a similar number of bus lines as pixel bits to be transferred to corresponding parallel inputs of a graphics output shift register, and serially reading the data from the shift register to display circuitry.
A better understanding of the invention will be obtained by reading the description of the invention below, with reference to the following drawings, in which:
Turning to
While in older computers a display 13 interfaced the bus via a display processor connected to the ISA bus, in recent years demands on the computer for speed have required some changes, for example to handle video or other multi-media applications. One of the major speed bottlenecks of the computer has been the speed of the ISA bus, which could not handle signals involved in multimedia with sufficient speed. Therefore a new bus was created, referred to as a local bus or VESA bus, referred to in
As is well known, the graphics processor is comprised of a drawing engine 27, a display processor 28 and a CRT controller 29. The graphics processor stores pixel data to be displayed in a memory 31 which is typically VRAM (video random access memory), called the frame buffer, the pixel data being created or modified by the drawing engine, restored by the display processor in the VRAM memory, and output to the LUT 23 for subsequent display by the CRT controller.
The graphics processor communicates with the memory 31 via a bus 33, the size of which has been determined by the system bus, and the bus size which could be handled by the display processor. As noted earlier, this bus has been 16 or 32 bits in width, with only the most powerful recent computers using a 64 bit bus. The speed of the graphics processor is proportional to the speed that the system can process pixels, which is limited by the speed at which it can transfer data to and from VRAM 31. This speed has been limited by the width of bus 33.
Turning to
In place of the graphics processor of the system of
A drawing engine 47 may also be connected to the system bus for generation of graphics data, provided via the bus 41 to be stored in memory 44 for further processing. Alternatively the drawing engine may be implemented in program instructions to the pixel processor from the main computer processor, whereby the drawing function is provided by the present invention as will be described later.
In the present description, each pixel is described by eight bits.
A 32 bit bus 52 connects each of the frame buffer subsystems to the system graphics processor (corresponding to bus 41 of FIG. 2). The system can read 32 bits per cycle. During a write cycle, however, the system can broadcast data to all eight buffer blocks 50, allowing an effective write width of 256 bits (32×8). The width of the system bus however, is a trade-off between the silicon area required and the throughput (which increases proportionately to the width of the bus). It should be recognized that the system bus can have any number of conductors which is typically a number to the power of 2.
A second major subsystem is a pixel out path subsystem 54. The pixel out path subsystem is comprised of a graphics pixel input port and a video pixel input port, each of which is 32 bits (4 pixels) wide, and which are connected to graphics out and video out ports respectively of the frame buffer. The pixel out path requires data for only one pixel for each output cycle. The four pixel wide input for graphics out and video out allow for the frame buffer output operations to run at ¼ the output cycle speed. However other widths (bit capacities) of these inputs can be used to allow output registers of the frame buffer (to be described later) to run at other speeds. For example, input pixel widths for graphics out and video out of eight allow the frame buffer output registers to run at ⅛ the output frequency.
The pixel out path 54, receiving pixel data on the graphics in and video in inputs reformats these pixels, and outputs red, green and blue analog signals (RGB in
A frame buffer control 56, connected to the frame buffer blocks 50, receives control data on a FRAME_BUF_CTRL bus from the system processor, and controls the frame buffer's operation, including DRAM control, functions of the frame buffer blocks such as operations of their pixel data units (to be described below), and the video in, video out and graphics out operations.
A video in formatter 58 receives incoming video pixels on a 16 bit bus VIDEO_IN, and reformats the video pixels to allow for efficient storage of these pixels.
It is advantageous to organize the memory to closely resemble the display. For example one row of display pixels should be stored in a single row of the memory. When the pixels are displayed on the display screen they are displayed one pixel at a time. First one row is scanned, then there is a retrace interval, then the next row is scanned. Therefore all the pixels of one row is read before any pixels of the next row. Thus the DRAM can be read in a manner similar to a fast page mode. This operation runs faster than consecutive random accesses since access to a row takes longer than accessing bits from that row. It also uses much less power, since a row cycle uses much more power then reading a bit from that row.
The size of each DRAM buffer block being chosen to be 2560 columns wide is based on two factors: optimizing the aspect ratio of the DRAM buffer blocks, and the fact that one wordline (row) can presently have a maximum of only about 2500 columns (due to capacitance and speed considerations). Therefore, for a maximum display screen size supported by a system of 1280 by 1028 pixels, two rows of pixels will fit in one row of a DRAM buffer block. To support 1024 rows of display, the DRAM must therefore have 512 rows. An extra 32 rows of DRAM was added to each buffer block in a prototype system, and which is currently preferred, which can be used for multiple purposes, such as a scratchpad memory for the graphics processor, to store pixel colors and patterns for the PDU registers (PDU registers to be described below), to store fonts for text, to store video, etc. It is often advantageous to store pixel data for full motion video in a separate area of memory, rather than in the actual display memory area, which allows the video data to be stored in a different format from the graphics data, and many sophisticated display functions to be handled. Therefore the extra 32 rows of DRAM (or equivalent 64 rows of display pixels) can be used to store these items.
Of course if the display is not the maximum 1280 by 1024 pixels, more lines of memory become available for these functions, including full-motion video, allowing higher resolution video to be stored. It will also be recognized that the invention is not restricted to using 32 extra rows of DRAM, as none, fewer or more extra rows may be used.
A DRAM buffer block size of 2560 columns by 564 rows is another good selection. This allows support of a 1280 by 1024 pixel display in an eight bit pixel mode, and allows support of an 800 by 600 (SVGA) display in true color mode (24 bits per pixel).
In general, this invention can be implemented using any effectively size DRAM array, depending on the factors deemed most important.
Each frame buffer block 50 also is comprised of three shift registers, a video in shift register 60, a video out shift register 62, and a graphics out shift register, having control inputs connected to a memory control 66. The video out shift register has a video output port VIDEO_OUT and the graphics out shift register has a graphics output port GRAPHICS_OUT, which are input to the VIDEO_IN and GRAPHICS_IN input ports of the pixel output path subsystem 54 (FIG. 3). These three shift registers are used for the inputting of video pixel data from an external source, and the outputting of video and graphics pixel data to the pixel out path subsystem for subsequent transmission to the display. Since the incoming and outgoing pixels are transferred one pixel at a time, sequentially along a row, these shift registers are configured similar to a VRAM (video random access memory). The register are preferably 640 bits wide (configured as two, 320 bit registers as will be described later).
It is important that these registers should be pitch matched to the DRAM buffer blocks, that is, that each register bit storage structure is the same physical width in the integrated circuit as four columns of the DRAM buffer blocks.
While the shift registers could be configured as 1280 bit wide pitch matched shift registers, this would require twice the integrated circuit area as the 640 bit form, but would allow an entire line of 1280 pixels to be stored in the shift registers. In general, any useful width of pitch-matched shift registers could be used, using the operational schemes described herein.
Each of the shift registers operate in a similar manner, and therefore operation of only the graphics out shift register 64 will be described below.
During the display retrace interval, the system processor requests a new row of pixels to be output for display. A single wordline in the DRAM frame buffer 58 is brought to high logic level, and a row of DRAM is read. 320 bits of this row are then transferred to the graphics out shift register 64 in a single cycle, via the databus 68. When the system asks for the first pixel, the graphics out register 64 begins to shift its data out data out serially. Any time during the shift out period for these 320 pixels the system can ask for the next set of 320 pixels. The DRAM buffer block then reads the row containing the next 320 pixels, and writes these into the second 320 bit graphics out register (recall that the graphics out register is formed of two, 320 bit registers).
As soon as the first set of 320 pixels has been serially read out, the second graphics out register is begun to be read. Then, any time during read-out of the second graphics register, the next 320 pixels can be loaded into the first 320 bit register. This process continues until the end of the data has been read that constitutes a line (i.e. a maximum of four times for the largest screen of 1280 pixels width).
Since in this preferred embodiment there are eight frame buffers working in parallel, and graphics pixels are typically stored as eight bits per pixel, only one bit is required per pixel from each graphics out register. However four bits are preferably output in parallel to allow the cycle time of the shift register to be four times slower than would be the case if one bit were output at a time. In the case of a screen size of 1280×1024 pixels running at approximately a 70 Hz refresh rate, the output pixel rate is 135 MHz. With four bits output in parallel, the shift register need only run at 34 MHz, making it easier to realize.
The video out shift register 62 should operate in a similar manner as the graphics out shift register. This shift register is used when a video window is encountered. The system determines when this register is to be loaded from the frame buffer block 58 with a further 320 bits of data. This data is then shifted out as for the graphics out register 64.
The video out shift register 62 should operate in a similar manner as the graphics out shift register. This shift register is used when a video window is encountered. The system determines when this register is to be loaded from the frame buffer block 58 with a further 320 bits of data. This data is then shifted out as for the graphics out register 64.
The video in shift register 60 has an input bus VIDEO_IN, shown as a 4 bit bus, for carrying a serial input video stream. Shift register 60 accumulates video data until one of its 320 bit registers is full, and then downloads this data to the frame buffer. This input video stream originates off-chip from a source such as a VESA (Video Equipment Standard Association) media channel, illustrated in
A pixel data unit (PDU) 70 is pitch matched to each frame buffer block 58, and is connected to the massively parallel bus 68 as well as to memory control 66. Each PDU processes 640 bits, allowing 640 pixels to be processed in parallel, using different functions available for pixel processing. In general, any bit width could be used for the PDU. A width of 640 is preferred, however, in order to allow this circuit to be pitch matched to the DRAM 58 (one PDU bit for each 4 DRAM columns).
As with the shift registers, a trade-off exists between maximizing the number of bits of width of the PDU to allow greater processing throughput, while minimizing the integrated circuit chip area required. For example, a width of 320 bits would require only one-half the integrated circuit area, and would allow similar operations to take place, but in twice the number of cycles. However, whatever PDU bit size is chosen, it should be pitch matched to the DRAM.
A common operation required to be implemented in bit-mapped pixels is a bit block transfer, i.e. to move any block of pixels to a new location on the display screen simultaneously performing logic operations (hence from one part of the frame buffer DRAM to another). Since each of the eight frame buffer blocks holds one bit of each pixel of the entire frame, then these move functions can be entirely local to each frame buffer block and can happen simultaneously in all eight blocks. To move vertically, the DRAM accesses one row, stores this in sense amplifiers or in a PDU register, then writes this back to a different row. To move horizontally, since the system can access the PDU registers in 32 bit words (in this embodiment), then any pixel can be moved horizontally by any multiple of 32 using the system bus, in blocks of up to 32 bits at a time. In order to move in a finer resolution, a barrel shifter 72 is used, respectively connected to each PDU via the system bus, and connected to the memory control 66.
Memory control 66 for each frame buffer block includes standard memory control circuits used to control DRAMs. It also includes an instruction decoder for PDU operation, and PDU, barrel shifter addressing and control circuits.
It is also preferred that the memory control 66 should contain a range decoder. Normally a decoder allows one of a set of inputs to be selected. A range decoder allows any consecutive range of this set of inputs to be selected. For example, for the twenty 32 bit wide PDU circuits, a normal decoder allows access to only one of the 20 PDUs. A range decoder allows access to one PDU, all 20 PDUs, PDUs having two adjacent address, or to PDUs having any number of adjacent addresses up to the full complement of PDUs, i.e. twenty. This allows many different widths of data to be written into the PDU by the system. For example it allows the system to clear the entire width of a PDU register in a single cycle, or to load any pattern repeated on a 32 bit boundary into the entire PDU in one cycle.
Indeed, a partial range decode function may be implemented. This allows some range decode functions, such as choosing 1 of 20, 20 of 20, or a group of 2, 4 or 8 of 20 PDUs. An advantage of using this decoder is that it can be implemented with standard pre-decoded addresses. Rather than only allowing a single bit of each predecoded bus to be set to 1, any number of bits on each bus can be set 1. This takes no more area in the dense pitch matched circuitry, but allows many more degrees of freedom for writing to registers.
Range or partial range decoding can be used not only for the PDUs, but for the shift registers and for the DRAM itself. In the shift registers it allows only a portion of each 320 bit register to be loaded, or written to memory. In the DRAM, multiple wordlines can be allowed to go high. This allows such functions as a flash clear of memory, or a flash clear of a subsection of the memory, and a pattern load to a large section of the memory.
A major difference between the DRAM used in the present invention and a standard DRAM is the wide data bus structure. In a standard DRAM one wordline allows one row of cells to be accessed and read by a row of sense amplifiers. Then a small subset of these sense amplifiers is enabled by a Y-select signal to dump the data stored in the cells sensed by the subject onto the databus. Typically the data bus is only 4 or possibly 8 bits wide, and runs parallel to the rows and wordlines over the sense amplifiers. The Y-select lines 87 run parallel to the columns and bitlines and run over multiple DRAM arrays and sense amplifier rows.
In the present invention, the positions of the databuses and of the Y-select lines are physically interchanged, as may be seen in FIG. 6. In this figure, as in a well known manner the wordlines (rows) 81 run orthogonally to bit lines (columns) 82, with bit storage cells 83 adjacent their intersections, connected so that once a row of cells is enabled via a word line, the charges stored on the cells of the row are dumped to the bitline. A row of sense amplifiers is connected to the bit lines. As is well known, each sense amplifier contains bit line ports, databus ports and Y-select ports.
As noted above, according to the prior art, the databus, connected in parallel to the databus ports of each of the sense amplifiers, ran parallel to the word lines, while the Y-select lines, ran parallel to the bitlines. In the present invention, however, the databus lines 86 run parallel to the bitlines, one pair being connected to the databus port of two sense amplifiers each. Thus there is one databus pair for every four bitlines, and the mass of databus pairs form the massively parallel bus 68.
On the other hand, the Y select lines operate the sense amplifiers 84 in a page mode, and therefore multiple sense amplifiers are selected at the same time. Thus the Y-select lines are connected to Y select ports of multiple sense amplifiers. The Y select lines run parallel to the word lines, only two being required, to choose one of the two sense amplifiers connected to each databus.
From the above it may be seen that the sense amplifiers are addressed via their Y select ports in parallel and output the data sensed to the databus lines in parallel, whereby the data can be transferred in parallel to a register, to the PDU, etc.
With the databus being 640 bits wide in the present example, fully one half of the sense amplifiers are selected for application of data onto the databus simultaneously. As noted above, the two Y-select lines run parallel to the rows of wordlines. The 640 bit databus lines running to the 640 bit wide PDU allows it to be completely loaded or read in one cycle. This scheme can be used for any number of databus lines. For example, 1280 databuses could be run parallel to the bitlines, allowing for the entire row of sense amplifiers to access the databus simultaneously.
The one bit PDU is the minimum circuitry required to implement standard bit block transfer (BitBlt) commands using 4 input raster operation functions. Since BitBlt is the most often used graphics command, the faster and more efficiently this command can be executed, the more powerful the graphics processor can be. The present invention allows the BitBlt command to be executed in one cycle, and 640 pixels (5128 bits) or more to be processed in parallel.
As is known, execution of a 4 input BitBlt command is basically a copy of a block of pixels from one location on the display (a source) to a second location on the display (a destination), with a logical operation specified between the source and destination pixels. For instance, the source pixel can be ANDed, ORed, or XORed with the destination pixel to which it is written. Additionally a brush variable can be logically operated in with the source and destination pixel to allow further possible functions. Indeed, in the present structure any logical operation on three variables is allowed between the source, destination and brush, with a fourth one bit variable masking the output. Since there are 256 possible logical operations of three variables, each PDU implements all of the operations, plus the masking of the output.
In the embodiment shown in
All of the registers of the PDU unit are dual-ported to two registers buses RB0 and RB1, and can be accessed by either the memory (through the massively parallel databus 68), by the system (through the system bus SB via the system interface 99), or by any other PDU register. All registers can be connected to the ROP4 processor 98 simultaneously to allow an operation to be accomplished in one cycle.
The layout of the one bit PDU follows the layout shown in FIG. 8. The registers and ROP4 processor are in line and are pitch matched with each other and with the DRAMs. Two different metal buses (one bus extending to the databus and system bus interfaces and one connecting the ROP4 processor with the registers) run over this circuitry, each connected to all registers, but one broken over the ROP4 processor 98.
Since the PDU RB0 bus interfaces directly to the massively parallel databus, the DRAM sense amplifiers can be used as temporary storage registers for PDU operations.
Due to the dense packing of integrated circuit components of the PDU and shift registers, it is preferred that redundancy should be used, whereby extra elements are fabricated and substituted for any elements found faulty. It is also preferred that column redundancy should be used for the DRAMs, whereby unused extra columns of DRAM cells and sense amplifiers are substituted for any found faulty, using well known repair techniques.
Due to the layout of the PDU, dual port registers are used. Two buses are also used to allow all registers to be connected to the ROP4 processor. With each PDU register being dual ported, maximum flexibility is afforded to access the registers, and since all of these registers have the same design, only one register implementation need be made.
It may be seen that this register design is in many ways similar to a DRAM sense amplifier. Thus if this register is written to by overpowering the inverter 102, a great amount of power is consumed, writing to 5128 registers simultaneously. Therefore the inverters are preferred to be written to in a manner that does not overpower each bit by brute force.
To write to the crosscoupled inverters, rather than they being connected to a maximum voltage (VDD) power source and to ground (VSS), they are connected to the PR and PS_lines. Writing proceeds by equalizing the PR and PS_lines at ½ VDD, then the input data is applied to the register bus. Select line RB0_ACC or RB1_ACC is then brought to high logic level, and finally the PR and PS_lines are gently moved (without an inordinately fast rise time) to VDD and VSS respectively.
It should be noted that the NMOS access FETs cannot pass VDD, but can only pass a value VDD-Vt, where Vt is the operation threshold voltage of the FET. Either of two methods can be used to overcome this problem when reading a register.
In the first method, the register bus can be precharged to VDD before the read operation. However, the power required for this operation to bring down the appropriate side of the cross-couple to VSS on 5128 individual buses is very high, and therefore the second method to be described below is preferred.
In the second method, a power source that can supply power at a voltage of VPP is used to access the registers. VPP can be generated on-chip or off-chip, and is a voltage that is slightly more than a voltage which is Vt higher than VDD. To access the registers, when RB0_ACC and RB1_ACC are driven high, they are driven to VPP, and the resulting voltage on the RB0 or RB2 bus will be VDD. The VPP power source must be sufficiently robust to be able to drive 5128 register accesses simultaneously. To allow for this, RB0_ACC and RB1_ACC should be timed to first pull up to VDD, then have the VPP power source only pull these lines from VDD to VPP.
It should be noted that since NMOS FETs pass only VDD--Vt, there is a threshold loss through the inverter 114 in the 2 to 1 multiplexer. Therefore the threshold of the inverter in the 2 to 1 multiplexer should be set to (VDD--Vt)/2. Therefore, if the OUT lead is at high logic level, it will only be at a VDD--Vt voltage. However, since the ROP4 register is of the type described above, it can easily sense the difference between this voltage and ground. Therefore a full VDD value will be restored in that register when the ROP4 controller output data is saved.
FETs 181, 182A and 182B, which have their gates connected to the EQU line and their source drain circuits access DB, DB_; VBLP, DB; and VBLP, DB_respectively, equalize the databuses to the common voltage VBLP through their source-drain circuits when a control signal appears on the EQU line. This equalization is necessary before either the sense amplifiers or the register bus writes to the databus DB, DB_, VBLP is equal to VDD/2, and allows the databus to be precharged to this midpoint voltage before the register bus writes to it. If the databus is writing to the register line then the register bus must be precharged to VDD/2, and the above-described circuitry is in the system bus interface 99 (FIG. 8).
To write to the DRAM the following sequence is followed:
i) The register bus is precharged to VBLP=VDD/2 using the system bus interface 99.
ii) One register of the PDU is enabled onto the register bus, driving it to the voltage value of the registers. Simultaneously the databus is precharged to VDD/2 using the databus interface 100.
iii) DB_ACCESS signal goes high, allowing the register bus to drive the databus. Simultaneously the addressed sense amplifier in the DRAM is precharged to VDD/2.
iv) The sense amplifier is enabled onto the databus allowing the databus to write to the sense amplifier. Simultaneously the bit lines are precharged to VDD/2.
v) The sense amplifier is enabled onto the bit lines, driving them to the voltage value of the sense amplifiers. Simultaneously a wordline goes to high logic level allowing the bit lines to write to the accessed cells.
A MEMORY READ follows the inverse sequence.
The circuit of
A tri-state buffer 191 connected in inverse parallel direction with buffer 189, drives the SB line from the RB_bus line, and is enabled from the RW_ACC bus_.
The above-described circuit allows the differential register bus RB, RB_to read from and write from the single ended SB bus.
The control circuit 118 predecodes two addresses for the shift registers, one for each port. Predecoded addresses are used to reduce the circuitry required for the final decoder, and also to allow a range decoder for the parallel port to be implemented.
As with the PDU, there is one decoder every 128 columns. Therefore the decoder and enable circuit 122 can be laid out in the integrated circuit space between registers that exists where the wordline strap is implemented between DRAM cells.
Video and graphics pixel data are received from the shift registers in the frame buffer on the GRAPHICS and VIDEO buses, four 8 bit pixels simultaneously, and are applied to graphics formatter 130 and video formatter 131. In the formatters the pixels are formatted to enable a stream of one pixel per cycle, and are re-timed. The resulting video signal is applied to the color space converter 33 where the video, which may be in a format such as YUV, is converted to RGB.
The formatted graphics data is applied from formatter 130 to a graphics color look-up table, where the logical 8 bit pixel value is converted to three 8 bit values. The output of the color space converter is applied to a video color look-up table 37. Since the video signal is already in RGB form, table 37 is used only for gamma correction of the pixel color. These look up tables are implemented as 256 by 24 bit SRAMS.
The outputs of tables 35 and 37 are applied to the input of a multiplexer 39 where one of the two graphics or video signals is chosen for output to the display, as follows.
Within the frame buffer's graphics areas a special 8 bit value indicates not a pixel color as other values indicate, but the edge of a video window. This pixel value indicates that the display should now be sent the video, rather than the graphics data. To implement this, a video key color register 141 stores the value of the special bit value, received from the system bus SYS. The graphics pixels from the output of graphics formatter 130 are applied to one of the inputs of a comparator 143; the special bit value stored in register 141 is applied to the other of the inputs of comparator 143. Comparator 143 compares the graphics data with the special bit value, and when the edge of a video window bit value from the frame buffer is detected by the comparator, it outputs a signal to an output control circuit 145. The output control signals the multiplexer 39 to switch, passing the video input signal to its output in place of the graphics input signal. The output signal is applied to multiplexer 147.
The opposite edge of the video window is detected in a similar manner as the leading edge.
Cursor definition data is stored in static random access memory (SRAM) 149, the read output of which is applied to a CURSOR input to output control 145. When the system processor detects the location that the cursor is to be placed, it enables a cursor address circuit 151 with the address CUR_ROW, and addresses the SRAM 149. From the data received from the SRAM, the output control 145 determines which of the cursor foreground color (specifying data being stored by a cursor foreground color register 153 and received from the system bus SYS), cursor background color (specifying data being stored by a cursor background color register 155 and received from the system bus SYS), graphics pixel from graphics look-up table 35, video pixel from video look-up table 37 or the inverse of the graphics or video pixel (if the cursor is in invert video mode) should be sent to the display, and applies a control signal to multiplexer 147 to control which of its inputs from the above circuits is passed through to its output.
The output data from multiplexer 147 is applied to three, 8 bit digital to analog converters 157, where the data is converted to analog red, green and blue RGB signals respectively, output at the RED, GREEN and BLUE ports respectively for application to a video monitor.
It should be noted that the power consumed by this invention should be minimized, since massive amounts of circuitry will be in operation in parallel, all of it dissipating power. For example, up to 5128 PDUs will be operating in parallel. One of the special techniques to minimize power dissipation in this invention is to use the form of registers the structure and operation as described herein. In this manner the buses have less than full VDD to VSS swing, and data can still be sensed and data stored with full logic values.
A second high power usage portion of this invention is the massively wide databuses. Up to 5128 databuses may be accessed in parallel. If a full VDD to VSS voltage swing were allowed on all these databuses, a large amount of power would be required.
Crosscoupled inverters 159A and 159B form transmitting and receiving sense amplifiers respectively, which are coupled to databus lead pairs DB and DB_ via access FETs 161. The power inputs are connected to the PR_T and PS_T leads respectively, and the gates of access FETs 161 are connected to the DB_SEL_T lead for the transmitting sense amplifier, and to the DB_SEL_R lead for the receiving sense amplifier, respectively. These are located in the frame buffer, along with another 639 identical sense amplifiers operating in parallel.
A dummy databus DDB, DDB_ and other circuits to be described below connected to it, are used to determine when the voltage on the real databus is split sufficiently to enable the receiving sense amplifier to read it. These other circuits are located in the memory control.
FETs 164 operate as protection diodes.
Before executing a register transfer over the databus the databus must first be precharged to a predetermined precharge voltage, such as VDD/2, by asserting the EQU signal. The real databus DB, DB-- and dummy databus DDB, DDB_ are precharged via precharge circuits 169 and 170 in a manner as described earlier. Individual register bits to which data will be transferred must also be precharged, either by enabling the DB_SEL_R control signal to allow the precharged databus to charge the register notes to the precharge voltage, or by employing individual precharge transistors in each register bit, as shown, while at the same time de-asserting the PS_R and PR_R control lines.
After disabling the databus precharge and register precharge, the transmitting sense amplifiers 159A are first enabled to dump their charge to the databus DB and DB_. The receiving sense amplifiers are equalized during this time by forcing the PR_R and PR_S leads to VDD/2 voltage. As the databus charges, the dummy databus charges in parallel, via FETs 163 accessing dummy databus DDB, DDB_ through access FETs 165. FETs 163 and 165 should be identically sized as the FETs in sense amplifier 159A and access FETs 161 respectively.
A differential amplifier 167 is connected to the dummy databus, which is sized to detect when the dummy databus (and hence the real databus) is readable. The sizing should be made such that a margin is included to cover any differences in the two databuses.
Since the dummy databus always moves in a known direction, the differential amplifier can be designed with a predetermined offset. The DDB voltage moves towards VDD while DDB_ moves towards VSS. One possible way of building in offset is to make the opposite transistors in the differential amplifier 167 equal, but make the W/L (width to length ratio) of one of the series transistors smaller than the others to build in an offset of 200 mv to 500 mv, for example.
When the differential amplifier senses a readable signal, it activates a databus OK signal on the DB_OK lead. This signal is used to disable the transmitting sense amplifiers 159A, and to enable the receiving sense amplifiers 159B.
Precharge circuit 172 can be optionally used instead of circuit 169 to precharge the sense amplifier 159, and is connected to the interface between FETs 161 and sense amplifier 159B. The precharge circuit 172 is connected to the VBLP voltage line and the EQU enable line in a manner similar to precharge circuit 169, if used.
In this manner the databus voltage is restricted from rising higher than is necessary for correct reading of its data, which will nearly always be less than VDD, resulting in saving of considerable power, and thus avoiding that dissipation.
A person understanding this invention may now conceive of alternative structures and embodiments or variations of the above. All of those which fall within the scope of the claims appended hereto are considered to be part of the present invention.
Gillingham, Peter B., O'Connell, Cormac M., Derbyshire, James H., Fielder, Dennis A., Torrance, Randy R.
Patent | Priority | Assignee | Title |
6882218, | Aug 26 2002 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Transimpedance amplifier and offset correction mechanism and method for lowering noise |
7002587, | Dec 09 2002 | Sony Corporation | Semiconductor device, image data processing apparatus and method |
7015750, | Aug 26 2002 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Method for lowering noise and providing offset correction in a transimpedance amplifier |
7598948, | Feb 06 2003 | Nvidia Corporation | System and method of detecting rotated displays |
7693086, | Mar 24 2005 | Seiko Epson Corporation | Data transfer control device and electronic instrument |
7999801, | Feb 06 2003 | Nvidia Corporation | System and method of detecting rotated displays |
8644643, | Jun 14 2006 | Qualcomm Incorporated | Convolution filtering in a graphics processor |
8766995, | Apr 26 2006 | Qualcomm Incorporated | Graphics system with configurable caches |
8766996, | Jun 21 2006 | Qualcomm Incorporated | Unified virtual addressed register file |
8869147, | May 31 2006 | Qualcomm Incorporated | Multi-threaded processor with deferred thread output control |
8884972, | May 25 2006 | Qualcomm Incorporated | Graphics processor with arithmetic and elementary function units |
8890876, | Dec 21 2007 | Sun Microsystems, Inc; Sun Microsystems Technology LTD | Microprocessor including a display interface in the microprocessor |
9336752, | Dec 21 2007 | Sun Microsystems, Inc; Sun Microsystems Technology LTD | Microprocessor including a display interface in the microprocessor |
Patent | Priority | Assignee | Title |
4646151, | Feb 01 1985 | TELEVISION ANALOG COMPRESSION CORPORATION | Television frame synchronizer with independently controllable input/output rates |
4691295, | Feb 28 1983 | Data General Corporation | System for storing and retreiving display information in a plurality of memory planes |
4740782, | Jul 12 1982 | KONONKLIJKE PHILIPS ELECTRONICS N V | Dot-matrix liquid crystal display |
4918526, | Mar 20 1987 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Apparatus and method for video signal image processing under control of a data processing system |
5027212, | Dec 06 1989 | VideoLogic Limited | Computer based video/graphics display system |
5083047, | Oct 26 1989 | Kabushiki Kaisha Toshiba | Precharged-type logic circuit having dummy precharge line |
5144223, | Mar 12 1991 | Mosaid Technologies Incorporated | Bandgap voltage generator |
5170154, | Jun 29 1990 | AUTODESK, Inc | Bus structure and method for compiling pixel data with priorities |
5198708, | Apr 06 1990 | Mosaid Technologies Incorporated | Transition detection circuit |
5267201, | Apr 06 1990 | Mosaid Technologies Incorporated | High voltage boosted word line supply charge pump regulator for DRAM |
5283761, | Jul 22 1992 | Mosaid Technologies Incorporated | Method of multi-level storage in DRAM |
5305283, | Apr 05 1991 | Trace Step Holdings, LLC | Dram column address latching technique |
5392391, | Oct 18 1991 | LSI LOGIC CORPORATION, A CORP OF DELAWARE | High performance graphics applications controller |
5406523, | Apr 06 1990 | Mosaid Technologies Incorporated | High voltage boosted word line supply charge pump and regulator for DRAM |
5414662, | Apr 06 1990 | Mosaid Technologies Incorporated | Dynamic random access memory using imperfect isolating transistors |
5442748, | Oct 29 1993 | SAMSUNG SEMICONDUTOR, INC ; Sun Microsystems, Inc | Architecture of output switching circuitry for frame buffer |
5448733, | Jul 16 1993 | International Business Machines Corp. | Data search and compression device and method for searching and compressing repeating data |
5469401, | Jul 14 1992 | SATECH GROUP A B LIMITED LIABILITY COMPANY | Column redundancy scheme for DRAM using normal and redundant column decoders programmed with defective array address and defective column address |
5572655, | Jan 12 1993 | LSI Logic Corporation | High-performance integrated bit-mapped graphics controller |
5712664, | Oct 14 1993 | SHARED MEMORY GRAPHICS LLC | Shared memory graphics accelerator system |
DE3628286, | |||
EP165441, | |||
EP260578, | |||
EP334524, | |||
EP383080, | |||
EP474366, | |||
EP492840, | |||
EP547892, | |||
GB2208344, | |||
GB2217066, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 26 1994 | TORRANCE, RANDY R | ZING LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024402 | /0156 | |
May 26 1994 | GILLINGHAM, PETER B | ZING LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024402 | /0156 | |
May 26 1994 | O CONNELL, CORMAC M | ZING LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024402 | /0156 | |
May 31 1994 | FIELDER, DENNIS A | ZING LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024402 | /0156 | |
May 31 1994 | DERBYSHIRE, JAMES H | ZING LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024402 | /0156 | |
Jun 30 1994 | ZING LIMITED | Accelerix Limited | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 024402 | /0160 | |
Oct 23 1996 | Accelerix Limited | ACCELERIX INCORPORATED | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024402 | /0174 | |
May 20 1999 | ACCELERIX INCORPORATED | 3612813 CANADA INC | AMALGAMATION AGREEMENT | 024402 | /0146 | |
May 26 1999 | ACCELERIX INCORPORATED | 3612821 CANADA INC | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 024402 FRAME 0146 ASSIGNOR S HEREBY CONFIRMS THE AMALGAMATION AGREEMENT | 025000 | /0898 | |
May 26 1999 | 3612813 CANADA INC | 3612821 CANADA INC | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 024402 FRAME 0146 ASSIGNOR S HEREBY CONFIRMS THE AMALGAMATION AGREEMENT | 025000 | /0898 | |
Nov 05 1999 | 3612821 Canada Inc. | (assignment on the face of the patent) | / | |||
Dec 09 2003 | 3612821 CANADA INC | Mosaid Technologies Incorporated | DISSOLUTION AGREEMENT | 024402 | /0167 | |
Feb 09 2009 | Mosaid Technologies Incorporated | Mosaid Technologies Incorporated | CHANGE OF ADDRESS | 024402 | /0177 | |
Dec 23 2011 | Mosaid Technologies Incorporated | ROYAL BANK OF CANADA | U S INTELLECTUAL PROPERTY SECURITY AGREEMENT FOR NON-U S GRANTORS - SHORT FORM | 027512 | /0196 | |
Dec 23 2011 | 658868 N B INC | ROYAL BANK OF CANADA | U S INTELLECTUAL PROPERTY SECURITY AGREEMENT FOR NON-U S GRANTORS - SHORT FORM | 027512 | /0196 | |
Dec 23 2011 | 658276 N B LTD | ROYAL BANK OF CANADA | U S INTELLECTUAL PROPERTY SECURITY AGREEMENT FOR NON-U S GRANTORS - SHORT FORM | 027512 | /0196 |
Date | Maintenance Fee Events |
Feb 07 2005 | ASPN: Payor Number Assigned. |
Feb 07 2005 | RMPN: Payer Number De-assigned. |
Aug 25 2005 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Aug 25 2005 | M1555: 7.5 yr surcharge - late pmt w/in 6 mo, Large Entity. |
Apr 25 2011 | ASPN: Payor Number Assigned. |
Apr 25 2011 | RMPN: Payer Number De-assigned. |
Date | Maintenance Schedule |
Dec 31 2005 | 4 years fee payment window open |
Jul 01 2006 | 6 months grace period start (w surcharge) |
Dec 31 2006 | patent expiry (for year 4) |
Dec 31 2008 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 31 2009 | 8 years fee payment window open |
Jul 01 2010 | 6 months grace period start (w surcharge) |
Dec 31 2010 | patent expiry (for year 8) |
Dec 31 2012 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 31 2013 | 12 years fee payment window open |
Jul 01 2014 | 6 months grace period start (w surcharge) |
Dec 31 2014 | patent expiry (for year 12) |
Dec 31 2016 | 2 years to revive unintentionally abandoned end. (for year 12) |