Method for determining computer subsystem property
This application is a continuation, of application Ser. No. 07/999,472, filed Dec. 30, 1992, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     Technical Field 
     The present invention relates generally to computer subsystems. More particularly, the present invention relates to a method for determining computer subsystem properties in a subsystem including a multiple input shift register. 
     Background Art 
     Multiple input shift registers (MISRs), also known as linear feedback shift registers and signature analysis registers in the graphics art, have been known and used in many computer arts for quite some time as a diagnostic tool. In the past, their use has been limited to either testing to see if a block of data has been successfully transferred, or testing to see if a device in the system is generally malfunctioning. 
     The MISR is initially cleared or set to a particular value, such as all 1&#39;s. Blocks of data are checked by sequentially combining all the incoming data with that present in the MISR to arrive at a final value or &#34;CHECKSUM&#34;. The CHECKSUM is then compared to a value representing a CHECKSUM of the added data as intended to be sent. A discrepancy indicates the data was not properly transferred. In general, many items of data are applied sequentially to the MISR before the CHECKSUM is read or tested. This method has been found to be extremely accurate. A device can be tested for proper functioning by a MISR by sending data, with a known CHECKSUM that would be produced if the device were operating properly, through the device and having the MISR generate a CHECKSUM value for the device output. The output CHECKSUM is then compared to the known CHECKSUM, a discrepancy indicating a device malfunction. The CHECKSUM produced by the MISR is dependent upon the data applied. Any difference in data, caused by a device malfunction, will generally produce a different CHECKSUM. 
     In video memory subsystems with a video random access memory (VRAM), a MISR is conventionally used to check the operation of various devices within the subsystem. VRAMs are a type of memory commonly used in video memory subsystems. A VRAM is essentially a conventional dynamic random access memory (DRAM) with the addition of a second port, called a serial or a SAM port, where data may be accessed serially. A VRAM consists of a random access memory (RAM) portion and a serial access memory (SAM) portion with transfer gates which allow data to pass from the RAM to the SAM. The SAM array today may have a memory capacity of one row or a half row of the RAM array. A full row or half row, respectively, of memory data may be passed from the RAM to the SAM in a single data transfer access. The RAM port and the SAM port may be operated asynchronously and independently except when the data transfer between the RAM and the SAM is taking place. A SAM is also known by the designation &#34;VRAM shift register,&#34; but will only be referred to herein as SAM. 
     A video memory subsystem is generally a part of a graphics subsystem. Such a subsystem includes a video memory, a graphics controller, and a serializer palette digital to analog converter device (SPDAC). The graphics controller controls the update of video memory and the output of data from the video memory to the SPDAC and then to the display. In such systems it is vital that the controller be able to determine the length of the SAM portion of the VRAM. The controller must know how often, and when to reload the SAM from the RAM array to maintain a continuous and seamless flow of data out of the SAM serial port to the SPDAC and then to a display monitor. The data must be seamless as the display requires a continuous flow of data (i.e., no breaks). A SPDAC is also known as a random access memory digital to analog converter (RAMDAC). 
     As an example of the effects of the controller not knowing the SAM length consider the following scenario. Assume a VRAM with a half-row SAM is put into a subsystem configured for a full row SAM. After n serial clock cycles, where n is the SAM length, the SAM data repeats since the subsystem is configured for a full row SAM. The result is an image on the video display comprising two identical half images of the intended image, rather than the full image intended. In order for the full image to be displayed as intended, the subsystem must be configured for a half-row SAM. 
     At present, there exists no conventional means for the controller to determine the SAM length. One possible way for the controller to determine SAM length is through the use of memory ID pins. These pins would identify the VRAM and software would determine the type of SAM contained therein (e.g., full or half). However, use of such pins would require standardization in the industry, and wastes pins on the memory module and controller device which could be used for other purposes. Pins are a scarce resource in the graphics art--there are never enough. 
     Thus, a need exists for a method which allows for determining properties in a computer subsystem without adding additional hardware. In particular, there exists a specific need for a method for determining SAM length in a display memory subsystem. 
     DISCLOSURE OF THE INVENTION 
     Briefly, the present invention satisfies the need to determine properties of a computer subsystem which includes a multiple input shift register (MISR) by utilizing the MISR to produce a CHECKSUM which is then compared to a known CHECKSUM to determine if a property exists in a system. 
     A computer subsystem envisioned in the present invention includes a device to be tested and a MISR, which is utilized for diagnostic testing. In the context of the invention, &#34;device&#34; is meant to include one or more physical devices. The MISR is capable of performing a test that operates on data to produce a CHECKSUM value that is dependent on the data. A CHECKSUM value is a final value in the MISR after the test is run. 
     In a first embodiment, whether a particular property exists in a subsystem is determined. A &#34;property&#34; in the context of the present invention is not meant to include the malfunctioning of a device. The method of the first embodiment begins with loading the device to be tested with predetermined test data. The device then operates on the test data according to the property under test. The MISR is activated and the device output data is transferred from the device to the MISR where the MISR operates on the output data to produce a test CHECKSUM value. The test CHECKSUM value is then read and compared to a known CHECKSUM value associated with the device being examined and the predetermined test data. If the two CHECKSUM values match, then the property is present in the subsystem. If the two CHECKSUM values do not match, then the device has not operated on the test data according to the property under test and therefore that property is not present in the subsystem. 
     In a second embodiment, a property is determined from among a plurality of possible properties. Each possible property has a known CHECKSUM associated therewith for predetermined test data. The property is determined by reading and then comparing the test CHECKSUM to each known CHECKSUM until a match is found. The known CHECKSUM that matches the test CHECKSUM indicates which property is present in the subsystem. 
     In a specific application of the second embodiment of the invention, the SAM length of a VRAM in a video memory subsystem is determined utilizing the method of the second embodiment. The CHECKSUM value produced is compared to known CHECKSUM values for currently available SAM lengths (e.g., half row and full row) to determine which length of SAM is present in the subsystem. 
     These, and other objects, features and advantages of this invention will become apparent from the following detailed description of the presently preferred embodiments of the invention taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a workstation. 
     FIG. 2 is a more detailed block diagram of the video subsystem of FIG. 1. 
     FIG. 3 is a more detailed block diagram of the SPDAC of FIG. 2. 
     FIG. 4 is a block diagram of a 4 megabit VRAM (256K×16) with a half row SAM array. 
     FIG. 5 is a flow chart for determining SAM length according to the second embodiment of the invention. 
    
    
     BEST MODE FOR CARRYING OUT THE INVENTION 
     In a first embodiment of the invention, the presence or absence of a particular property in a computer subsystem is determined. The subsystem must include a MISR or its equivalent. Although a &#34;device&#34; associated with the property being tested for will be referred to herein, it will be understood that the property may be associated with one or more physical devices which may encompass the entire subsystem itself. The property has a known CHECKSUM value associated with the property and the test data used to test that property. 
     The device associated with the property, if the property is present, operates on predetermined test data to produce output data to be used by the MISR. It will be understood that the output data could be the same as the test data if, for example, a memory device is the device associated with the property, or the output data could be the same data in a different form, or the output data could be different from the test data, for example, if the device performs mathematical or logical operations thereon in accordance with the property under consideration. 
     The MISR must be capable of performing a test that produces a CHECKSUM value. Data is fed into the MISR, where it is sequentially combined with whatever data is already present in the MISR to arrive at a final or CHECKSUM value. The CHECKSUM produced will depend on the data fed to the MISR. In the present invention, the data fed into the MISR is the output of the property-associated device after it has operated on the predetermined test data. A particular example of a subsystem, device and MISR will be described subsequently. 
     The method of the first embodiment begins with the device associated with the property under test operating on the predetermined test data and producing output data. The MISR is cleared (i.e., set to a fixed value, such as all 0&#39;s or all 1&#39;s) and enabled before the output data is fed to the MISR, which produces a test CHECKSUM therefor. The test CHECKSUM is read and compared with the known property CHECKSUM to detect a match between the CHECKSUMs. The comparing could be done, for example, by a processor. If a match is found, the property is present in the subsystem. If no match is found, then the property is not present in the subsystem. 
     In a second embodiment, a property from among several possible properties or from among variations of a single property in a computer subsystem is determined. The predetermined test data is chosen such that device output data will produce a MISR CHECKSUM indicative of, assuming the device is working properly, which property or variation is present. The steps of the first embodiment are followed, except that the test CHECKSUM is compared with each known CHECKSUM to determine if there is a match. The property or variation associated with the known CHECKSUM that matches the test CHECKSUM is the property present or variation of a property present in the subsystem. 
     Computer graphics systems exist in many forms. An exemplary computer graphics work station 10 is depicted in FIG. 1. Connected by system bus 12 are: CPU 14; read-only-memory 16; random access memory 18; disk drive 20; a user interface 22, which could be a keyboard and/or a mouse; and video subsystem 24. A video subsystem is also known as a display adapter. A display device 26 is connected to the video subsystem 24. Such a graphics system is known in the art and details regarding its operation are therefore not necessary. 
     Video subsystem 24 is depicted in expanded block diagram form in FIG. 2 and comprises a graphics controller 28 a dual port video random access memory (VRAM) 30 including a RAM portion 31 and a serial access memory (SAM) portion 32, and a serializer palette digital to analog converter (SPDAC) 34. Graphics controller 28 controls data transfers from RAM portion 31 of VRAM 30 to SAM portion 32. This control is extended via line 33 and VRAM update port 35. Serial data is sent from RAM 31 to SAM 32 and then out SAM port 36 to SPDAC 34 over line 38. Line 40 represents a programming interface to the SPDAC 34, which is also controlled by controller 28. The basic operation of such a video subsystem is well known in the art. 
     FIG. 3 is an expanded block diagram of SPDAC 34. SPDAC 34 includes serializer 42, palette static RAM (SRAM) 44, palette update control 46, digital to analog converters (DACs) 48, 50 and 52, and multiple input shift register (MISR) 54. Controller 28 controls MISR 54 over programming interface 40. Palette update control 46 and palette SRAM 44 will be referred to collectively as a palette. The serializer 42 takes data from the serial port of the VRAM (SAM port 36) and converts it to a stream of information one pixel wide. Assuming display 26 is color, the serial stream of pixel data is then used to address a palette SRAM to convert the data from color indices to digital color values to be displayed for each pixel. The DACs convert the digital color values to analog levels and send them off the SPDAC chip on three video lines 56, 58 and 60 for connection to the display 26. The video lines carry analog signals representing the colors red, green and blue, one line for each color. If the display is monochrome, then generally only a single DAC and video line are used; otherwise, the operation remains the same. 
     FIG. 4 is a block diagram visualization of a 4 megabit VRAM 256K×16) which could be used in the video subsystem of FIG. 2. The RAM array 66 is 16 bits wide (72) and has 512 rows (68) and 512 columns (70). The SAM array 64 is 16 bits wide (78) and consists of 1 row (74) of 256 columns (76). A SAM with 256 columns is referred to as a half-row SAM. A SAM with 512 columns is known as a full-row SAM. A transfer path 80 selects one half of a RAM row at a time to send to the SAM, since the SAM row length is half that of the RAM row length. When the first half has been accessed via a serial port, the second half of the RAM row is then transferred or sent to the SAM. A full row SAM would have 512 columns and 1 full RAM row at a time would be sent to the SAM from the RAM. Both types of VRAM, whether full-row or half-row SAM, have 16 bit wide data and the same organization of rows and columns, and thus look the same to the controller 28 at the RAM port 35. The controller 28 does not see the serial port (SAM port 36) or the serial data output 82. 
     In this particular exemplary application, the general method of the second embodiment is used to determine SAM length of VRAM 30 in video subsystem 24. The particular length of a given SAM is a variation of a single property--length. In the context of a SAM, length means the portion of a RAM data row that the SAM can accept in a single data transfer. To date, known SAM lengths are referred to as full and half, 512 and 256 columns, respectively. Different SAM lengths are expected in the future and are encompassed by the present invention. 
     FIG. 5 is a flow chart for determining SAM length from among a set of possible SAM lengths according to the second embodiment of the present invention. The RAM 31 portion of the VRAM 30 is loaded with predetermined test data through RAM port 35. (Step 84, &#34;Load VRAM with Predetermined Test Data.&#34;) The test data may be, for example, data defining an image or data derived through simulation. The test data must have a length at least as long as the shortest possible SAM length. Controller 28 activates MISR 54 by setting it to a fixed initial value and enabling it over programming interface 40. (Step 85, &#34;Activate MISR.&#34;) Controller 28 then transfers the test data from RAM 31 to SAM 32. (Step 86, &#34;Transfer Test Data from RAM to SAM.&#34;) Controller 28 transfers the test data from SAM port 36 to the SPDAC 34 over line 38. The test data is serialized by serializer 42, sent through SRAM 44 and into activated MISR 54. MISR 54 operates on the test data and produces a test CHECKSUM. (Step 88, &#34;Test Data to SPDAC with MISR Activated.&#34;) The test CHECKSUM is then read (Step 89, &#34;Read Test CHECKSUM&#34;) over programming interface 40, and the MISR may then be de-activated (Step 90, &#34;De-activate MISR&#34;). The test CHECKSUM is then compared to each possible known CHECKSUM until a match is found. The matching known CHECKSUM indicates the SAM length. (Step 92, &#34;Find CHECKSUM Match.&#34;) The video subsystem 24 may then be configured for the determined SAM length. (Step 94, &#34;Configure Video Subsystem for SAM Length.&#34;) 
     The video memory subsystem will now be operated correctly for the SAM type present and the double half imaging problem previously described will no longer be present. It will be understood that although a single VRAM has been described, multiple VRAMs typically exist in a given video memory subsystem and there may even be a mixture of VRAM types having different SAM lengths. The method of the present invention is applicable to all such systems. 
     In the context of video subsystems, there is another example of a property to which the present invention is applicable. Some VRAMs have the ability to stop at a programmed point, known as a stop point, in the data sequence transferred from the RAM to the SAM and resume transferring at another programmed point in the sequence, known as a start point. A VRAM could be tested with data including such start and stop points and the sequence operated on by the MISR. In this way, it can be determined whether a VRAM present in the subsystem supports such start/stop points. 
     While presently preferred embodiments of the invention have been described and depicted herein, alternative embodiments may be effected by those skilled in the art to accomplish the same objectives. Accordingly, it is intended by the appended claims to cover all such alternative embodiments as fall within the true spirit and scope of the invention.