MULTIPLE BLOCK MODE OPERATIONS IN A FRAME BUFFER SYSTEM DESIGNED FOR WINDOWING OPERATIONS

Abstract: A frame buffer having a memory array (32), circuitry for accessing the array, a plurality of color value registers (C0 and C1) for storing a plurality of color values which may be written to the array, and circuitry for writing to the memory cells a data representing a single pixel, for writing simultaneously to the memory cells data representing a number of pixels equal to the number of conductors (38) on the data bus (38), or for writing simultaneously to the memory cells data representing an entire row of pixels of the array (34 and 36).

Description: MULTIPLE BLOCK MODE OPERATIONS IN A FRAME BUFFER SYSTEM DESIGNED FOR WINDOWING OPERATIONS BACKGROUND OF THE INVENTION Field Of The Invention This invention relates to computer systems and, more particularly, to methods and apparatus for providing very fast modes for writing data to a frame buffer for display on an output display device. History Of The Prior Art One of the significant problems involved in increasing the speed of operation of desktop computers has been in finding ways to increase the rate at which information is transferred to an output display device. Many of the various forms of data presentation which are presently available require that copious amounts of data be transferred. For example, if a computer output display monitor is operating in a color mode in which 1024 X 780 pixels are displayed on the screen and the mode is one in which thirty-two bits are used to define each pixel, then a total of over twenty-five millions bits of information must be transferred to the screen with each frame that is displayed. Typically, sixty frames are displayed each second so that over one and one-half billion bits must be transferred each second. This requires a very substantial amount of processing power and, in general, slows the overall operation of the computer. In order to speed the process of transferring data to the display, various accelerating circuitry has been devised. In general, this accelerating circuitry (often referred to as a graphic rendering device) is adapted to relieve the central processor of the computer of the need to accomplish many of the functions necessary to transfer data to the display. Essentially, these accelerators take over various operations which the central processor would normally be required to accomplish. For example, block transfers of data from one position on the screen to another require that each line of data on the screen being transferred be read and rewritten to a new position on a new line. Storing information within window areas of a display requires that the data available for each window portion be clipped to fit within that window portion and not overwrite other portions of the display. Many other functions require the generation of various vectors when an image within a window on the display is moved or somehow manipulated. When accomplished by a central processing unit, all of these operations require a substantial portion of the time available to the central processing unit These repetitive sorts of functions may be accomplished by a graphics accelerator and relieve the central processor of the burden. In general, it has been found that if operations which handle a great number of pixels at once are mechanized by a graphics accelerator, then the greatest increase in display speed may be attained. A problem which has been discovered by designers of graphics accelerator circuitry is that a great deal of the speed improvement which is accompUshed by the graphics accelerator circuitry is negated by the frame buffer circuitry into which the output of the graphics accelerator is loaded for ultimate display on an output display device. Typically, a frame buffer offers a sufficient amount of dynamic random access memory (DRAM) to store one frame of data to be displayed. However, transferring the data to and from the frame buffer is very slow because of the manner in which the frame buffers are constructed. Various improvements have been made to speed access in frame buffers. For example, two-ported video random access memory (VRAM) has been substituted for dynamic random access memory (DRAM) so that information may be taken from the frame buffer at the same time that other information is being loaded into the frame buffer. A flash write mode has been devised for allowing an entire row of a display to be written with a single color in a single access. This flash write mode is useful when the entire display is being cleared. The flash write mode is not, however, able to provide clipping to limited areas or to function with other than an entire row or rows of the display. Consequently, this mode cannot be used when information is being displayed in windows on the screen of an output display. In fact, the speedup provided by the flash write mode is only available in an operation which is used very infrequently. Thus, although a theoretically large number of pixels may be affected using this mode, the flash write operation is used so infrequently that it provides no additional operational speed for the frame buffer. The typical frame buffer is written in a mode referred to hereinafter as normal mode. In normal mode, each pixel position of the frame buffer is separately addressed and accessed; and the pixel data is sent on the data bus to these addressed positions. For example, with a thirty-two conductor data bus, thirty-two bits defining a pixel may be placed on the bus and sent to positions in the frame buffer memory. If the computer is functioning in a thirty-two bit color mode, this data defines a single pixel; in sixteen bit color mode, two pixels; in eight bit color mode, four pixels. If a frame buffer is addressed a pixel (or two, or four) at a time, then each pixel in the frame buffer may be described by a different individual color; however, this normal mode of operation is very slow. When text is being written into a document and to the screen by a user, individual pixels are being affected by the manipulation of the keys so the speed at which the pixel information is handled in the frame buffer is not limiting. However, there are many manipulations accomplished by graphical rendering devices in which the need to write each pixel separately to the frame buffer using the normal mode of writing makes the operation very slow. For example, when a text file is first opened in a window on the display, the writing of individual pixels makes the operation very slow. Similarly, when text is scrolled, writing individual pixels makes the operation very slow. For this reason, a block mode of writing has been devised for frame buffers. In this block mode, the data transferred on the data bus indicates, not pixel values, but control signals signifying whether a pixel is to be written or not. A color register which is a part of the frame buffer stores a color value which is written to the pixel position if the pixel position is enabled by the control signal. Nothing is written to a pixel position which is not enabled. This block mode of operation allows simultaneous writes of the single color stored in the color register to a number of pixel positions equal to the number of conductors on the data bus. This mode may also be used to clip pixel data to a window on the display by writing a color value within the window and ignoring the pixels outside the window area. Using this block mode of operation with a color value register speeds up writing to a frame buffer under many of the conditions in which lack of speed is most obvious. Unfortunately, this mode of operation has a number of limitations. First, it has been typically used with systems using four bit color pixels. Second, it has never been adapted for use with more that one color pixel size as might occur in modern color systems. More importantly, typical operations which are accomplished with the data in any window of the display involve a manipulation of only two colors. For example, when text is written to the screen, the color of each letter and the color of the background surrounding that letter are manipulated by varying the pixels stored in the frame buffer for describing the image on the display. Unless both colors are written, no outline is provided for the text. Both the software which provides data for display and the various graphical rendering devices which accelerate the manipulation of that data are capable of manipulating two colors at once and usually do so. However, the frame buffers which are available for desktop computers are capable of varying no more than a single color at a time in the block mode in which a number of pixels may be addressed simultaneously. Thus, though the modern rendering devices speed up the manipulation of data, the presentation slows at the frame buffer which is able to accept only a single color at a time when presented data in the block mode of operation. This problem is especially acute because each time a different color is used for a group of pixels, the color register must be updated from the old color value to the new color value in a time consuming operation before the new color may be used. Thus, a background color must be first placed in the color value register in one operation for a first row on the display. The pixels of that color must be written to the frame buffer. Then, the color must be changed in the register, and those pixels of the foreground color described in a second write operation. When, the next row of pixels is written to the frame buffer, the entire operation must be repeated again. The need to repeat the same operation for each row of the frame buffer greatly slows the speed at which pixel data may be written. Recently, an arrangement has been devised which allows two colors to be written simultaneously in a block mode write operation. The arrangement uses a plurality of color value registers on the frame buffer to store a plurality of color values. This arrangement eliminates the necessity to reload the color value registers during the writing of a window, allows multiple color modes to be utilized, and accelerates writing dramatically. The arrangement is described in detail in co-pending U. S. patent application Serial No. , entitled Apparatus For Providing Fast Multi-Color Storage In A Frame Buffer. Priem et al, filed on even date herewith. It is desirable to provide apparatus and methods for utilizing the arrangement described in the co-pending patent application to most effectively speed the operation of writing to a frame buffer. Summary Of The Invention It is, therefore, an object of the present invention to provide a new design of frame buffer capable of rapidly handling in large blocks the data transferred to it for display. It is another more specific object of the present invention to provide a new design of frame buffer capable of speeding the display of data by factors which are the order of magnitude of the prior art frame buffers. These and other objects of the present invention are realized in a frame buffer having a memory array, circuitry for accessing the array, a plurality of color value registers for storing a plurality of color values which may be written to the array, and circuitry for writing simultaneously to the memory cells representing an entire row of pixels of the array in selected color modes and to selected adjacent groups of pixels whereby an entire row of a window may be written in a minimum number of accesses. These and other objects and features of the invention will be better understood by reference to the detailed description which follows taken together with the drawings in which like elements are referred to by like designations throughout the several views. Brief Description Of The Drawings Figure 1 is a block diagram illustrating a computer system which may include the present invention. Figure 2 is a block diagram illustrating a frame buffer designed in accordance with the prior art. Figure 3 is a timing diagram illustrating the operation of the prior art frame buffer of Figure 2. Figure 4 is a block diagram illustrating the a circuit arrangement in accordance with the invention. Figure 5 is a diagram illustrating the accessing the array in modes capable of affecting a number of pixels simultaneously. Figure 6 is timing diagram illustrating signals furnished during the operation of the invention. Figure 7 is a diagram illustrating a method of accessing a frame buffer in very rapidly in accordance with the invention. Figure 8 is a diagram illustrating various modes of operation used in carrying out the invention. Figure 9 is a flow chart illustrating a process for writing to a frame buffer in accordance with the invention. Notation And Nomenclature Some portions of the detailed descriptions which follow are presented in terms of symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary or desirable in most cases in any of the operations described herein which form part of the present invention; the operations are machine operations. Useful machines for performing the operations of the present invention include general purpose digital computers or other similar devices. In all cases the distinction between the method operations in operating a computer and the method of computation itself should be borne in mind. The present invention relates to a method and apparatus for operating a computer in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals. Detailed Description Of The Invention Referring now to Figure 1, there is illustrated a computer system 10. The system 10 includes a central processor 11 which carries out the various instructions provided to the computer 10 for its operations. The central processor 11 is joined to a bus 12 adapted to carry information to various components of the system 10. For the purpose of this description, the bus 12 may be considered to represent both a data bus and an address bus. Also connected to the bus 12 is main memory 13 which is typically constructed of dynamic random access memory arranged in a manner well known to those skilled in the prior art to store information being used by the central processor during the period in which power is provided to the system 10. A read only memory 14 which may include various memory devices (such as electrically programmable read only memory devices (EPROM devices)) well known to those skilled in the art which are adapted to retain a memory condition in the absence of power to the system 10 is also connected to provide information on the bus 12. The read only memory 14 typically stores various basic functions used by the processor 11 such as basic input/output and startup processes. Also connected to d e bus 12 are various peripheral components such as long term memory 16. The construction and operation of long term memory 16 (typically electro-mechanical hard disk drives) are well known to those skilled in the art. A frame buffer 17 is also coupled to the bus 12. The frame buffer 17 stores data which is to be transferred to an output device such as a monitor 18 to define pixel positions on the output device. For the purposes of the present explanation, the frame buffer 17 may be considered to include in addition to various planes of memory cells necessary to store information, various circuitry well known to those skilled in the art such as addressing circuitry, sensing amplifiers, color lookup tables (where color indexing is utilized), digital-to-analog converter circuitry, and circuitry for controlling the scan of information to the output display. In Figure 1, the frame buffer 17 is illustrated as coupled to the bus 12 through circuitry such as graphic accelerating circuit 15 used for providing fast rendering of graphical data to be furnished to the frame buffer 17. The graphic accelerating circuit 15 typically relieves the central processor of a number of time consuming operations so that the computer system may operate more rapidly. Figure 2 illustrates a frame buffer 17 constructed in accordance with the prior art. Typically such a frame buffer includes a dynamic random access memory array 24 designed to store the information defining pixels on the output display. As outlined above, when a random access memory used as a frame buffer 17 is accessed in its normal mode of operation, data is written to or read from the frame buffer 17 on the conductors of a data bus 19. When the frame buffer 17 is written, all of the data conductors transfer data in a binary pattern. In a typical computer system having a thirty-two bit data bus 19, thirty-two bits of information may be written to the frame buffer memory and appear at thirty-two input pins. This data may define one or more pixels depending upon the number of bits required to define a pixel in the particular color mode of operation. For example, if the mode of operation is eight bit color, then each pixel displayed requires eight bits of data; and thirty-two bits of data on the data conductors are capable of defining four pixels in each write access. This is a relatively slow method of filling the frame buffer with pixel data to be written to the display. This is, however, the typical method (normal mode) of writing to a frame buffer. It is used for most user entries of data where the speed of writing to the frame buffer is not limiting. It is also used in other instances where a window contains more than two different colors for manipulating large numbers of pixels, such as when a paint file containing a multicolored image is first opened or is moved on the display. There are many operations which affect the display, however, which manipulate very large numbers of pixels and do not require that pixels be individually written with different color values. These operations include, for example, clearing the entire display or a window of the display, writing a file to a window, and similar operations. Because filling the frame buffer (or a portion thereof) is so slow when each pixel (or two, or four) is individually written to the frame buffer using the data conductors as in the normal mode of writing, some frame buffers also have circuitry which allows a mode of operation (referred to as block mode) in which each of the data conductors controls access to all of the bits representing a pixel. This block mode has been used in the prior art with frame buffer arrays in which each pixel is represented by four bits allowing sixteen different colors to be described. The mode allows a single color value stored in a register to be written to a plurality of individual pixel positions in the frame buffer memory simultaneously. In this block write mode, the information written to the array on the data conductors is used to enable writing to the memory positions representing particular pixel positions. The color value is stored in a color value register on the frame buffer and written to the enabled positions. This allows a number of pixels up to the number of data conductors on the data bus to be written with a single color simultaneously. Figure 2 shows a frame buffer 17, a data bus 19 having a plurality of data input conductors, and a color register 20. A four bit color value to be stored as pixel data in memory cells in the memory array 24 is written into the color register 20 on the conductors of the data bus 19. An address furnished on an address bus to row decode circuitry 21 and column decode circuitry 22 selects the particular group of pixels to be written. In the block write mode, data transferred to the frame buffer 17 on the data conductors of the data bus 19 indicates the positions of pixels which are to be written. These control signals on the data conductors are transferred to the column decode circuitry 22 to enable the selected ones of the addressed pixel positions. If a particular data conductor of the data bus 19 carries a zero value, then the particular pixel position is not written. If a data conductor of the data bus 19 carries a one value, then the four bit color value from the color register 20 is written into the pixel position. In this way, selected ones of a number of individual pixels may be written at once using the color value stored in the color value register 20. This is a very useful manipulation if it is desired to accomplish manipulation of large areas using the same color. For example, with a thirty-two bit data bus, one may rapidly clear a window by writing a background color to the entire window of a display in accesses of thirty-two pixels at a time. This mode also allows pixel data to be clipped to fit within a window. This may be accompUshed by enabling pixel position for writing a color within the window while disabUng pixel positions outside the window. The block mode is especially useful when four bit color pixels are used to display images on an output display device. The block mode, however, has not been adapted by the prior art for used with more advanced color systems. For example, no arrangement has been suggested by which block writes may be accompUshed for a pluraUty of different sized color pixels. A more major problem with this prior art block mode of operation is that the frame buffer is only capable of dealing with one color at a time although more than one pixel may be written simultaneously with that one color. As pointed out, a window uses two colors to display any typical appUcation. The graphical accelerating devices and software which furnish pixel information to the frame buffer 17 typically manipulate two colors at once in order to enhance the speed of operation of the display. Although the block mode of operation was devised specificaUy to increase the speed at which pixel data is written to the display, this mode is capable of affecting only one color at once. Consequently, whUe an entire screen may be cleared rapidly using this block mode, more advanced manipulations slow down the system operation. For example, when any information is written to the frame buffer using the block mode, a first background color must first be placed in the color value register; and the entire first row of the particular window must then cleared by writing the background color in groups of pixels equal to the bus width. Then the foreground color (typically carrying the information) is placed in the color value register, and the foreground pixels are written to the row in the same manner. Then the background color is again placed in the color register, and the entire second row of the particular window is cleared. The background color is then replaced in the color register with the foreground color, and the foreground pixels are written for the second row. This continues until aU of the rows of the window have been written. This is a time consuming operation but faster than individuaUy writing each of the positions representing the pixels as in the normal mode. A major reason why it is so slow is the necessity to constantly reload the color register with the foreground and background colors used in each row of the display. Figure 3 is a timing diagram Ulustrating the operation of the prior art frame buffer of Figure 2. In prior art frame buffers, each access of the frame buffer requires that both a row address strobe (RAS) cycle which typically requires 120 nanoseconds and a column address strobe (CAS) cycle which typicaUy requires 20 nanoseconds be accompUshed. Typically data is furnished to the array on the falling edge of the CAS cycle. These strobe cycles are illustrated in the upper two lines of the figure. A first column address strobe cycle may overlap the row address strobe so that the total time for any individual access requiring only a single column address strobe cycle is 120 nanoseconds. These two strobe cycles are required not only for accessing the memory positions in the frame buffer but also for aU other accesses of the frame buffer such as for loading the color value register. Consequently, to write two colors to thirty-two pixel positions using the block write mode requires a number of time consuming steps. The lower two Unes of Figure 3 illustrate such steps. To load the color register with background color typicaUy requires a first combined RAS/CAS access of 120 nanoseconds. This must then be followed by a second combined RAS/CAS cycle of 120 nanoseconds to write the background color stored in die color register to the thirty-two pixels. Reloading the color register with foreground color takes another 120 nanoseconds, and writing the foreground color takes another 120 nanoseconds. Thus, the entire operation to write thirty-two pixels requires 480 ns. or approximately 16 nsJpixel. Of course, when an entire row is written, the per pixel time to write using block write mode is shortened because the color value register need only be loaded twice for each row and each group of thirty-two pixels of the same color in the same row requires only 20 additional nanoseconds. Since writing a row requires only 20 additional nanoseconds for each thirty-two pixels written with each color, approximately 1240 ns. more time is required to write a row of 1024 pixels once the color has been loaded. Thus, the time necessary to reload the color register twice on each row (including die RAS/CAS cycle necessary to indicate the end of the load operation) and die requirement to write twice to each thirty-two-bit position in each row slow the operation significantly. It has now been found possible to extend the prior art block write operations described above to function with more advanced color modes using eight, sixteen, and thirty-two bit to represent color values. Moreover, it has been discovered that by providing an improved frame buffer memory which includes more than one color value register and which is, thus, capable of handling a plurality of colors simultaneously during accesses involving data representing a plurality of pixels, many of the operations of a frame buffer which handle large numbers of pixels may be dramaticaUy accelerated. The improved frame buffer memory by having a plurality of color value registers aUows color values to be written to pixel positions without the need to reload color registers. By so doing, the improved frame buffer eliminates the need to reload the color register twice for each row of a window to be written. In fact, the improved frame buffer allows the color registers to be written at any time during the operation and eUminates any real need to rewrite those registers during the time a window is being written. By having more than one color available, two colors may be written at once as foreground and background colors in portions of the window which require no cUpping. The use of at least two color registers significantiy increases the speed at which large blocks of pixel data may be loaded into a frame buffer. Such an improved frame buffer is described in detaU in the U. S. patent application, entitled Apparatus For Providing Fast Multi- Color Storage In A Frame Buffer, referred to above. The present invention provides apparatus and methods for accelerating the operation of the frame buffer even further through the use of a number of additional modes for writing to the frame buffer. These modes of operation may be combined to greatly enhance system operation. Referring now to Figure 4, there is iUustrated a diagram useful in understanding the invention. Figure 4 iUustrates a circuit board upon which reside die various components of a frame buffer 30. The frame buffer 30 includes a plurality of memory ceUs which may include devices such as field effect transistor devices arranged to provide dynamic random access memory array 32. The arrangement of me ceUs constituting the array 32 is developed in accordance with principals well known to those skiUed in the art. It is adapted to provide a sufficient number of addressable memory ceUs to describe the number of pixels to be presented on an output display device in a particular mode of operation. For example, such an array 32 might include thirty-two planes (only the first is illustrated in detail), each plane including 256 rows, each row including 1024 memory ceUs; such an arrangement would allow me storage of color data sufficient to display ti irty-two bit color in a 512 X 512 mode on a color output display terminal. In addition to the array 32, the frame buffer 30 includes row and column decode circuitry 34 and 36 for decoding the addresses furnished by a controller such as a central processor and selecting individual cells 33 in each plane of the array 32 to define d e various pixels which may be represented on an output display device. Also included as a part of the frame buffer 30 are data conductors 38 which may be a portion of a data bus adapted to provide data to be utilized in the array 32. Typically, thirty-two data conductors 38 are provided although ti is number will vary with the particular computer system. When data is written to the frame buffer 30 on the data bus in the normal mode of operation, each group of d irty-two bits wiU define one or more color values to be displayed at one or more pixel positions on the output display. Thus, when an output display is displaying data in an eight bit color mode, the thirty-two bits carried by the data conductors 38 may define four pixel positions on the display in normal write mode. On the other hand, when a display is displaying data in a tiiirty-two bit color mode, me thirty-two bits of the data conductors 38 carry information defining a single pixel position on die display. As may be seen, one of the data conductors 38 of the bus is connected to all of eight multiplexors 42 in each plane of the array so that the data bit carried by that conductor 38 may be placed in me appropriate memory ceU of the plane of the array 32. Each of the multiplexors 42 selects the source of the data to be transferred to the array 32 in each plane depending on the mode of operation selected. Thus, if the mode is normal, then the data bit is selected directly from the data conductor 38 for tiiat plane of the array. The bit is transferred to die particular column selected and written to that column and the selected row. Since a bit may be written in each of thirty-two planes of the array, thirty-two bits may be written from the bus conductors 38 (one to each plane) as one thirty-two bit pixel, two sixteen bit pixels, or four eight bit pixels, depending on die mode of color operation. The embodiment iUustrated in Figure 4 is the preferred embodiment of d e invention which is particularly adapted to be used in a system utilizing eight bit color modes. As wiU be seen, the system is adapted to provide certain special modes for eight bit color operations. As wiU be explained, addition special modes for each of sixteen and tiiirty-two bit color modes may be provided by simple modifications as is explained herein. To this end, the system utilizes eight individual multiplexors 42 in each plane of the frame buffer 30 for selecting particular write input data. Each of these multiplexors 42 has its output connected to one of eight tri-state write drivers 53 which furnishes an output signal via a switch such as a transmission gate 51 on a conductor connected to every eighth column of me particular plane of the array. A system adapted to provide special modes for sixteen bit color as well as eight bit color would utilize sixteen individual multiplexors 42, sixteen drivers 53, sixteen gates 51, and would connect to columns of the array in groups of sixteen. Similarly, a system adapted to provide special modes for tiiirty-two bit color as well as eight and sixteen bit color would utitize thirty-two of each of these components. The frame buffer 30 also includes a pair of color value registers CO and CI which are utilized to store color values which may be utilized in block modes of operation described hereinafter in which a pluraUty of storage positions may be written simultaneously. Each plane of die array includes a one bit register CO and a one bit register CI for storing one bit of a color value stored in the color register. Since each plane includes one bit for each register, each register includes a total of thirty- two bits in this embodiment Thus an entire eight bit color value may be stored in the registers CO and CI residing on eight planes, an entire sixteen bit color value may be stored in die registers CO and CI residing on sixteen planes, and an entire thirty-two bit color value may be stored in me registers CO and CI of thirty-two planes of die frame buffer 30. With a thirty-two bit color register such as is shown, the color pattern for a particular eight bit color value may be repeated four times in each color register (similarly a sixteen bit color value may be repeated twice). The color registers CO and CI may be selectively addressed so tiiat they may be loaded by data furnished on die conductors 38 of die data bus; as may be seen, switches are provided in each ceU plane to allow loading of the registers CO and CI witii data from the data conductors 38 in response to load control signals. Thus, the multiplexors 42 may select as color values to be written not only the data values carried by the conductors 38 but also the values stored in the color registers CO and CI. The selection depends on the particular color mode of operation, a value indicated by control signals furnished by the central processor or by the graphical accelerating device. In the normal write mode of operation, a particular address is transferred on the address bus to select a particular row and column. This address on die address bus at die falling edge of the RAS signal selects a particular row and causes aU of the memory ceUs 33 of that row in each plane of the array selected to be connected to sense amplifiers 43 in each column. This operation causes the sense ampUfiers 43 to refresh each memory cell in the selected row. At the faUing edge of the CAS signal, the column address applied to the appropriate switch 47 of the column decode circuitry 37 selects the appropriate column in each plane to be written. In the preferred embodiment of the invention, d e column address is ten bits. Of these, the higher valued seven bits CA3-9 of the ten bit column address are used to select a group of eight adjacent columns. The normal write mode control signal at each of the multiplexors 42 causes d e data signal on the particular conductor 38 associated witii that plane to be transferred by each of the eight multiplexors 42. One of me signals produced by die multiplexors 42 is ampUfied by a single one of die amplifiers 53 and transferred to the addressed memory ceU 33 in that plane of the array. The lower three bits CAO-2 of the column address signal select the particular one of the amplifiers 53 which transfers the data bit to a single one of die columns. Since each of the conductors 38 carries an individual bit for the memory cell at the selected row and column, me pixel value (or values) wiU be transferred to d e appropriate column and row position in each plane of d e array. When a block mode of operation is indicated by the control signals, the data conductors 38, ratiier than carrying pixel data, carry enabling signals to indicate ' pixel positions in the array 32 to which the color values held in the registers CO and CI are to be written. These color values are loaded from the data conductors 38 of each array plane of the frame buffer 30 in response to a load color register control signal. Since two color registers CO and CI are provided in the preferred embodiment, a total of four color modes of operation are possible. These modes are referred to as color 0 mode, color 1 mode, color 0&1 mode, and color 1&0 mode. In the color 0 mode of operation, if a control signal value of one is transferred on a particular data conductor 38, tiien the value in the color register CO is written to the storage positions which define the pixel addressed for tiiat conductor 38. The value in the color register CO is also transferred to all other storage positions at addresses to which one control values are transferred on the data conductors 38. On the otiier hand, no color value is written to die pixel positions to which a zero control value is transferred on a data conductor 38. Thus, tiiirty-two different pixel positions may be affected in a single simultaneous transfer; those positions which receive a one value are enabled to receive die value in the color register CO while those which receive a zero value remain unchanged. As may be seen, the arrangement is adapted to function with each of eight, sixteen, and thirty-two bit color pixels. The manner in which this is accomplished wiU be iUustrated in a case of eight bit color referred to as block 8 mode. It should be noted tiiat block eight refers to the number of bits in each pixel while color 0 refers to the manner of selecting a particular one of the colors in a color value register. Presuming that the color value register CO has been loaded witii a pattern of eight bits which is repeated four times in the diirty-two bits provided in that register CO and that the color value register CI has been loaded with another pattern of eight bits which is repeated four times in the thirty-two bits provided in that register CI, then a row and eight columns are selected in each of the planes of the array by the address on die address bus through the row and column address decode circuitry 34 and 36 in the manner described above. Assuming that color mode 0 is selected, all eight of the multiplexors 42 on each plane select the register CO as the source of color data for the array. Then the particular write drivers 53 are enabled in accordance witii d e enabling signals appearing on the conductors 38 of the data bus. The data appearing on the conductors 38 is sent to a pixel mask register 55. The pixel mask register is used to control aU of the drivers 53 controUing transfer of data to a particular pixel. The manner in which this is accompUshed is iUustrated in Figure 5. Since the example considered involves eight bit color and assuming that the first eight columns have been selected by d e column address, the bits defining d e first pixel Ue in the first column in the selected row and d e first eight planes of that column. The first pixel PI in the pixel mask register 55 controls the drivers 53 to transfer the color to these bit positions in the array from the color value register CO. Presuming that the second one of the conductors 38 carries a zero value and tiiat this value is stored in the pixel mask register 55, the drivers 53 connected to the bit positions lying in the next eight planes of column 0 are disabled so tiiat d e value in the color value register CO is not transferred to these bit positions. The control of the other bit positions occurs in a similar manner as is iUustrated in Figure 5. Consequently, with one row and eight columns selected, a number of pixels selected by one values on the data conductors 38 up to a total of thirty-two eight bit color pixels may be written simultaneously with the value stored in the color value register CO. This mode is a fast mode of operation similar to the block mode used in prior art frame buffers and may be used to clear the screen very rapidly or to otiierwise provide a single color to the window area. For example, a frame buffer 30 for a display which is 1024 X 780 pixels and eight bits deep, may be cleared approximately thirty-two times faster than individual pixels may be written one by one to the frame buffer 30. This mode is also useful for clipping since a color value may be written to pixel positions inside a window area and die pixel positions outside tiiat area ignored. Color 1 mode is simtiar to color 0 mode except that if a one value is transferred on a particular data conductor 38, then the value in the color register CI is written to die storage positions which define the pixel addressed for tiiat conductor 38. The value in the color register CI is also transferred to all other storage positions at addresses enabled by one values transferred on the data conductors 38. On die other hand, no color value is written to the pixel positions to which a zero is transferred on the data conductors. Again, thirty-two different pixel positions may be affected in a single simultaneous transfer; those positions which receive a one value are enabled to receive the value in the color register CI while those which receive a zero value remain unchanged. The method of writing the data from the color register CI is essentially the same as that explained with regard to Color register CO and wUl be understood by reviewing Figure 5. As may be seen, since the two color registers CO and CI may be loaded prior to manipulating any portion of a window and are always avaUable, a series of pixels (e.g., thirty-two) may be written in two accesses without any need to reload color registers. Background color may be written in a first access and foreground color written in a second access. As will be understood, this allows both clipping and two colors to be written to an edge of a window in two accesses since cUpped portions may be ignored while a first color is written to some positions within a window area and then the same clipped portions may be ignored again whUe a second color is written to other positions witiiin the window area. However, even faster writing is possible using the color modes 0&1 and 1&0 in those portions of the display in which clipping is unnecessary. As was pointed out above, most operations involved in writing to the display utitize two colors. TypicaUy, a rendering chip (graphics accelerator) or the central processing unit provides a control signal indicating where clipping is necessary. In the absence of this signal, use of the color mode 0&1 allows two colors to be written simultaneously to the frame buffer. In this mode, a zero value on a data conductor 38 indicates that a color value is to be written to the controlled pixels from the color value register CO while a one value on a data conductor 38 indicates that a color value is to be written to the controlled pixels from the color value register CI. The selection of the color value for each pixel is accomplished by combining the control value transferred on die data conductor 34 for each plane and stored in the pixel mask register 55 with die color mode control signal to select the particular color register from which the color value is transferred by the multiplexors 42. For example, when in color mode 0&1, a zero in a bit position in the pixel mask register 55 causes a multiplexor 42 to select die color value stored in the color value register CO while a one in a bit position in the pixel mask register 55 causes a multiplexor 42 to select the color value stored in the color value register CI. Then, the color mode control signal indicating mode 0&1 controls all of the drivers 53 to write the pixels selected to the array. This aUows two separate colors representing both foregroimd and background to be written simultaneously to those portions of a window area which do not require clipping. In a simUar manner, the color 1&0 mode allows the two colors in the registers CO and CI to be simultaneously written to the array but to opposite positions, a zero now causing the multiplexors 42 to select register CI while a one causes the selection of register CO. Having at least two color value registers thus eliminates the necessity of changing color values in a color register and also eUminates the need to write foreground and background colors to the frame buffer in separate operations for the pixel positions designated on the data conductors. The present invention adds to the invention of the co-pending patent appUcation by providing a pluraUty of different modes by which the frame buffer may be written. In each of the writing modes every bit on the data conductors affects a different number of bits in the frame buffer. Figure 8 Ulustrates the different modes and shows die number of bits affected by d e condition of each bit transfeπed on the conductors of the data bus in each of these modes of operation. These different writing modes provide different degrees of resolution and ti us of control over the area written. The first mode is the normal mode of operation described above in which each data conductor affects a single bit stored in the frame buffer. This mode is used for the operations which require writing to the display a pixel at a time. This mode allows any color to be written to a pixel position. This mode is, of course, the conventional slow normal mode used by prior art frame buffers which requires 120 ns. for each pixel written. A second mode of operation is the block 8 mode described above in which the value transferred on each data conductor 38 is used as an enabling signal which affects eight bits stored in the frame buffer. This mode is used for write operations with programs which utilize eight bit color. It allows as many eight bit pixels to be written simultaneously as there are data conductors; in the exemplary system, thirty-two pixels may be written in a single access. UtUizing the two color registers Ulustrated in Figure 4, any of the four color modes of operation are possible in this mode. Thus, certain pixels may be enabled to be written with one color value from one of the color value registers (or another color from the other register) while other pixels are ignored using color 0 and color 1 modes. Moreover, as explained above, aU of the pixels affected by the data conductors may be written simultaneously with two distinct colors held in the two color value registers using color 0&1 and color 1&0 modes. In a third mode of operation referred to as block 16 mode, each data conductor affects sixteen bits stored in the frame buffer. In this mode, the number of individual multiplexors 42 on each plane is increased from eight to at least sixteen. Similarly, the number of columns which may be selected simultaneously by the column address is increased to allow the selection of sixteen columns simultaneously. By making these changes and providing signals to allow a total of thirty-two pixels of sixteen bits each to be written from the color register, a block 16 mode is provided which is simUar to the block eight mode and is used for die operations with programs which utiUze sixteen bit color. It aUows as many sixteen bit pixels to be written simultaneously as there are data conductors; in the exemplary system, thirty-two sixteen bit pixels may be written in a single access. UtiUzing the two color value registers Ulustrated, any of die four color modes of operation are possible in this mode. Thus, certain sixteen bit pixels may be enabled to be written with one color (or another color) while other pixels are ignored. Moreover, aU of the pixels affected by the data conductors may be written simultaneously with two distinct colors held in the two color value registers. In a fourth mode of operation referred to as block 32 mode, each data conductor affects thirty-two bits stored in the frame buffer. In this mode, the number of individual multiplexors 42 on each plane is increased from eight to at least thirty- two, the number of columns which may be selected simultaneously by the column address is increased to allow the selection of thirty-two columns simultaneously, and die control signals are modified to accommodate these changes. This mode is also simUar to the block eight mode and is used for die operations with programs which utitize thirty-two bit color. It allows as many thirty-two bit pixels to be written simultaneously as there are data conductors; in the exemplary system, thirty-two thirty-two bit pixels may be written in a single access. UtUizing the two color registers Ulustrated, any of the four color modes of operation are possible in this mode of writing. Thus, certain pixels may be enabled to be written with one color (or another color) whUe other pixels are ignored. Moreover, aU of die pixels affected by the data conductors may be written simultaneously with two distinct colors held in d e two color value registers. As wUl be understood by those skilled in d e art, the block eight, sixteen, and diirty-two modes of operations are devised to allow very fast writing of pixels to the frame buffer (approximately thirty-two times as fast as normal mode operations) in groups equal to the number of data conductors in eitiier one or two colors. Moreover, since all of the different color modes may be used with each of these write modes, each of these writing modes may be used to clip pixel data to a window. For example, by setting the data on die data conductors controUing pixels to the left of a window to zeroes and tiiose inside a window area to ones in color zero mode during an access which crosses a window boundary, a background color may be placed in pixel positions within a window at the edge of a window in a row. Then by repeating the access but writing the foreground pixels inside the window area with die foreground color value by setting the data on the data conductors to one using color one mode whUe again setting the data value to zero for the pixels outside die window boundary, die portion of the row for the access is completed. This is illustrated in Figure 6 which shows the various accesses necessary for a single row. Once the left edge of the window has been completed, the center of the window may be completed in a series of accesses each of which writes thirty-two pixels simultaneously, each pixel being written in one of the two color values. Finally, the other edge of die row containing the window crossing is completed using two accesses to write background and foreground colors in a manner essentially simUar to that used for writing the left edge of the window. Those skiUed in the art wiU understand that this selection of modes greatly enhances the speed with which the movement of large blocks may be accompUshed in a frame buffer. For example, none of the accesses necessary to rewrite color registers are required. This eliminates at least two 120 nanosecond accesses in writing each line of a window. Moreover, since d e central portion of the display is written in modes in which two colors are written simultaneously, only half as many accesses and half the time are required as to write prior art frame buffers. Consequently, as iUustrated by the timing diagram of Figure 6, these different block write modes witii color 0&1 and 1&0 modes allows a 1024 pixels row to be written in a series of thirty-two pixels accesses which requires a single RAS signal and one CAS signals for each thirty-two pixels in the row. To write to the largest window in such a row requires at most 780 ns. It should be noted that additional speed is acquired by providing block write modes each of which allows a single entire pixel to be written under control of a single data conductor. The abiUty to affect a selected number of bits equal to each of the values used for a pixel aUows a substantial increase in speed of operation over tiiat of prior art arrangements. Rather tiian having to fill the bits of a pixel at a single fixed rate (such as four bits for each data conductor per access) as in die prior art and tiius taking a number of data conductors to complete pixels of eight, sixteen, and tiiirty-two bits, each pixel is completed widi each access. It wUl be recognized mat a single frame buffer can be configured as an eight bit frame buffer, a sixteen bit frame buffer, or a thirty-two bit frame buffer to work with the software of an appUcation program. Three additional modes of write access are provided by the present invention which further increase the speed of operation of die frame buffer. A first of these modes is referred to as block 256 mode. In block 256 mode, the value on each data conductor determines the color value written to thirty-two adjacent eight bit pixel positions. This is accompUshed by d e column address selecting one quarter of the total of columns (256) in each plane of the array simultaneously. Then each of the pixels connected to each of these columns receives the single color value in a color value register designated by d e value carried on die data conductor in die particular color mode. It wiU be seen that in block 256 mode a total of thirty-two times thirty- two total eight bit pixels (1024 pixels) are affected at once by each write access. This is a typical number of pixels in a row of a modern computer color monitor. Thus, each access of eight bit pixels in block 256 mode may write all of the pixels in a 1024 pixel row. It wUl be appreciated tiiat this mode may be used to very rapidly clear an entire screen or to write a pattern which varies in thirty-two bit blocks on the screen. However, in any case in which two colors are written to the frame buffer in the same access using the block 256 mode, the data conductors are not avaUable to provide signals indicating tiiat a position is not to be written but only signals indicating the color to be written. For this reason, cUpping of graphical data to fit within a window on die display cannot be accomplished in the modes in which two colors are written simultaneously. For this reason, it is necessary to utilize the color 0 and color 1 modes at the boundaries of a window in order to accompUsh cUpping of the window. These single color modes may be used at the window crossings at each side of each row containing a window to write a background color to the window edge on a first access and then to write a foreground color to die window edge on a second access. In a similar manner, because the granularity of the access is so large witii the block 256 mode, it often must be used with die other modes to cUp to a window edge. That is, since each control bit affects thirty- two pixels, block 256 mode can only select pixels to write and not write in adjacent groups of thirty-two pixels. Consequently, the block 256 mode must be used witii block 8 mode to cUp to an exact window edge. The block 256 mode is especially useful when used with the block eight mode to clear a window and cUp to the boundaries of the window when using eight bit color. Figure 7 illustrates the process by which a window may be cleared and dipped using the fast modes of color writing described above. Figure 7 Ulustrates a portion of a display in which the different modes are appUed. Color one mode may be used during a single access to clip the pixels outside die window at die left edge of the row in Figure 7 whUe writing the background color to the pixels within the window. Color one mode may also be used to write background color within the window while ignoring the pixels outside die window at the right edge of the row containing the window in a single access. Then color one mode may be used to write the entire center portion of the window in block 256 mode with background color whUe ignoring those portions previously written at the window edge and die portions beyond. Thus, an entire line in a window may be cleared and cUpped to the window in at most three accesses of the frame buffer requiring a total of 160 ns. It wUl be recognized tiiat this is approximately five times as fast as this operation may be accomplished using block eight mode where thirty-two individual accesses are necessary for writing any row. It wUl also be noted tiiat only tiiree addition write accesses requiring only a total of 60 ns. more using color zero mode are necessary to write the cleared line. This is approximately four times as fast as writing data in block eight mode alone. A second additional mode is referred to as block 512 mode. In block 512 mode each data conductor affects the value of data written to thirty-two adjacent sixteen bit pixel positions. In this mode, d e column address selects a total of half the columns in each plane simultaneously. This mode requires the increase in number of selection conductors, multiplexors 42, and otiier components discussed above to sixteen. This mode is used witii die block 16 mode in the same manner that block 256 mode is used witii block 8 mode to rapidly write to an entire row within a cUpped window area of the display. A tiiird additional mode is referred to as block 1024 mode. In block 1024 mode, all of the columns in each plane are selected simultaneously by the column address. This mode requires the increase in number of selection conductors, multiplexors 42, and otiier components discussed above to diirty-two. In block 1024 mode, each data conductor affects the value of data written to thirty-two adjacent thirty-two bit pixel positions. This mode is used with the block 32 mode in the same manner that block 256 mode is used with block 8 mode to rapidly write to an entire row within a clipped window area of the display. Each of these modes provides useful functions in the same manner as does block 256 mode but for configurations of frame buffers storing data describing sixteen bit and thirty-two bit pixels. Thus, it may be seen that the arrangement of the present invention provides very rapid access when writing a frame buffer to accompUsh operations affecting large blocks of data. All that is necessary is to utitize the various modes in groups selected to provide the most rapid access for the particular operation involved. In particular, the normal mode, the block eight mode, and the block 256 mode are utUized when the frame buffer is configured to store data in eight bit pixel positions. The normal mode, the block sixteen mode, and the block 512 mode are utUized when die frame buffer is configured to store data in sixteen bit pixel positions. The normal mode, the block thirty-two mode, and the block 1024 mode are utiUzed when the frame buffer is configured to store data in sixteen bit pixel positions. It wiU be noted that in the block 256, 512, and 1024 modes of operation, a great number of memory devices are affected simultaneously. Those skiUed in die art wiU recognize that this would normaUy require a great deal of power to accomplish since each of the drivers 53 must produce a sufficient amount of power to back drive a large number of individual sense amplifiers 43. In fact, such an operation could not be accompUshed using prior art techniques. However, the present invention provides a unique method of overcoming this problem. During the beginning of each RAS cycle, the sense ampUfiers 43 are not yet turned on. If the column select devices are turned on to write to the appropriate columns on the falling edge of this RAS period when d e sense ampUfiers are off, the drivers 53 may write to the memory cells by writing around the sense amplifiers. Since the drivers 53 do not have to back drive the sense ampUfiers 43 in order to effect the values stored in the memory ceUs 33, each of me memory cells 33 need only be driven sufficiently to register a new condition. Then, when the sense amplifiers 43 are turned on during the latter portion of the RAS cycle, these amplifiers 43 sense the new conditions as a part of the refresh process and automaticaUy drive the memory cells to the correct conditions using the refresh process. In this manner, very large numbers of cells may be changed at once with only a minimum amount of power being required. Figure 9 iUustrates the steps of the process described above by which different blocks of pixels including complete rows of the frame buffer may be written using the different block modes described. Although the present invention has been described in terms of a preferred embodiment, it wiU be appreciated tiiat various modifications and alterations might be made by those sktiled in the art without departing from the spirit and scope of the invention. The invention should tiierefore be measured in terms of die claims which follow.

Claims: What Is Claimed Is: Claim 1. A computer system comprising a central processing unit, main memory, a busing system including a data bus having a number of data conductors, an output display, and a frame buffer joining the busing system to the output display, the frame buffer comprising an array of memory cells for storing data indicating pixels to be displayed on the output display, access circuitry for selecting memory ceUs in the array, first and second color value registers each capable of storing a number of bits equivalent to one color value, and circuitry for writing simultaneously color value data from the color value registers to a pluraUty of storage positions in the array which represent a number of individual pixels equivalent to the number of data conductors of the data busing system. Claim 2. A computer system as claimed in Claim 1 in which the circuitry for writing simultaneously color value data from the color value registers to a pluraUty of storage positions in the array comprises a plurality of multiplexors connected to each of the color registers and to the data bus, and a source of control signals for causing the multiplexors to select color values from the color registers or from the data bus. Claim 3. A computer system as claimed in Claim 2 in which the source of control signals for causing the multiplexors to select color values from the color registers or from the data bus comprises circuitry for transferring control signals on the data bus to select color values from the color registers. Claim 4. A computer system as claimed in Claim 3 further comprising circuitry for providing control signals for causing the multiplexors to select color values from the color registers for storage in a pluraUty of storage positions equal to a number of pixels for each control signal on die data bus presented to select color values from the color registers. Claim 5. A computer system as claimed in Claim 1 in which the circuitry for writing simultaneously color value data from the color value registers to a pluraUty of storage positions in the array which represent a number of individual pixels equivalent to the number of data conductors of the data busing system includes circuitry for writing from a single color value register to a plurality of storage positions in the array simultaneously. Claim 6. A computer system as claimed in Claim 1 in which the circuitry for writing simultaneously color value data from the color value registers to a pluraUty of storage positions in the array which represent a number of individual pixels equivalent to d e number of data conductors of d e data busing system includes circuitry for writing from both color value registers to a plurality of storage positions in the array simultaneously. Claim 7. A frame buffer designed to be coupled to a data bus and to an output display in a computer system, the frame buffer comprising an aπ-ay of memory cells for storing data indicating pixels to be displayed on die output display, access circuitry for selecting memory ceUs in the array, first and second color value registers each capable of storing a number of bits equivalent to one color value, and circuitry for writing simultaneously color value data from the color value registers to a pluraUty of storage positions in the array which represent a number of individual pixels equivalent to die number of data conductors of the data bus. Claim 8. A frame buffer as claimed in Claim 7 in which the circuitry for writing color value data from the color value registers to a pluraUty of storage positions in the array simultaneously comprises a plurality of multiplexors connected to each of the color registers and to die data bus, and a source of control signals for causing the multiplexors to select color values from the color registers and from the data bus. Claim 9. A frame buffer as claimed in Claim 8 in which the source of control signals for causing the multiplexors to select color values from the color registers and from the data bus comprises circuitry for transferring control signals on the data bus to select color values from the color registers. Claim 10. A frame buffer as claimed in Claim 9 further comprising circuitry for providing control signals for causing the multiplexors to select color values from the color registers for storage in a pluraUty of storage positions equal to a number of pixels for each control signal on the data bus presented to select color values from the color registers. Claim 11. A frame buffer as claimed in Claim 7 in which the circuitry for writing simultaneously color value data from the color value registers to a pluraUty of storage positions in the array which represent a number of individual pixels equivalent to the number of data conductors of the data bus comprises circuitry for writing from a single color value register to a plurality of storage positions in the array simultaneously. Claim 12. A frame buffer as claimed in Claim 11 in which the circuitry for writing simultaneously color value data from the color value registers to a plurality of storage positions in the array which represent a number of individual pixels equivalent to the number of data conductors of the data bus comprises circuitry for writing from both color value registers to a plurality of storage positions in die array simultaneously. Claim 13. A frame buffer as claimed in Claim 7 further comprising circuitry for writing simultaneously color value data from the color value registers to a plurality of storage positions in the array which represent a number of individual pixels equivalent to the number of pixels in a row of the display. Claim 14. A frame buffer as claimed in Claim 13 in which the circuitry for writing simultaneously color value data from the color value registers to a plurality of storage positions in the array which represent a number of individual pixels equivalent to the number of pixels in a row of the display comprises circuitry for writing to the pluraUty of storage positions during a row access strobe signal prior to refreshing the positions whereby a refresh operation will complete the write operation. Claim 15. A frame buffer as claimed in Claim 13 further comprising circuitry for writing color value data from the data conductors of the data bus to individual storage positions representing a single pixel on the display. Claim 16. A method for writing to a frame buffer including an array of memory cells comprising the steps of writing a first color value to a first color value register of the frame buffer, writing a second color value to a second color value register of the frame buffer, selecting one of the color values in a color value register to write to a pluraUty of memory cells simultaneously, and writing the selected color value to storage positions each representing an entire pixel on the display in response to a first control signal value on any data conductor of the data bus. Claim 17. A meti od for writing to a frame buffer as claimed in Claim 16 in which the control signal value on any data conductor of the data bus controls writing to storage positions representing a plurality of pixels on the display. Claim 18. A method for writing to a frame buffer as claimed in Claim 17 in which the step of writing the selected color value to storage positions each representing an entire pixel on the display may select pixels of eight, sixteen, or thirty-two bits. Claim 19. A method for writing to a frame buffer as claimed in Claim 16 in which the control signal value on any data conductor of the data bus controls writing to storage positions representing a single pixel on the display. Claim 20. A metiiod for writing to a frame buffer as claimed in Claim 19 in which the step of writing the selected color value to storage positions each representing an entire pixel on the display may select pixels of eight, sixteen, or thirty-two bits.

Inventors: CHANG SHUEN CHIN, HO HAI DUY, PRIEM CURTIS, CHANG, SHUEN, CHIN, HO, HAI, DUY, PRIEM, CURTIS
Applicants: SAMSUNG SEMICONDUCTOR INC, SUN MICROSYSTEMS INC, SAMSUNG SEMICONDUCTOR, INC., SUN MICROSYSTEMS, INC.
Application year: 1994
Main classification: G06F15
IPC codes: G06F12, G09G5, G11C7