Abstract:
A ROM/PROM memory system circuit structure provides for vertical expansion of data words while providing for enablement of parity checking by the addition of a single auxiliary ROM/PROM memory chip which duplicates the type and size of data memory chips. Additionally, selection means is provided to choose either an odd parity or an even parity format.

Description:
FIELD OF THE INVENTION 
     This disclosure relates to memory structures having multiple banks of memory chips connected in vertical expansion of data words and serviced by circuitry for verifying the integrity of data words stored and retrieved. 
     CROSS REFERENCES TO RELATED APPLICATIONS 
     The following concurrently pending applications by the same inventors, James E. Jeppesen, III and Bruce E. Whittaker, are included herein by reference and relate to the present application: 
     a patent application entitled &#34;Width-Expansible Memory Integrity Structure&#34; filed Nov. 22, 1989 as U.S. Ser. No. 441,128; 
     a patent application entitled &#34;System for Memory Data Integrity&#34; filed, Nov. 22, 1989 as U.S. Ser. No. 440,821. 
     BACKGROUND OF THE INVENTION 
     A major module in the architecture of computer systems is the memory system which works in conjunction with the main processor and which memory system holds and supplies the data and instructions necessary to operation of the system. One such type of memory system involves the use of PROM memory modules which involve programmable read-only memory units which are generally used to hold &#34;fixed&#34; data for use of the computer system. Alternatively, read-only memories or ROMs are also used for this purpose. 
     The information stored in the PROM/ROM memory is critical to the integrity of system operation and such system operation can run into problems of data corruption should the data from the memory chip be corrupted or altered. 
     As examples of important and significant data which may reside in a PROM or a ROM memory system, are such items as: 
     (i) low level &#34;bootstrap&#34; (start-up) program code which is used to initialize a system; 
     (ii) specialized and unique information for system identification and configuration functions; 
     (iii) data integrity value information such as encryption or decryption keys. 
     The integrity of the ROM/PROM data is especially critical since a system may not yet be sufficiently initialized (up) enough at the period of initialization before other higher and more sophisticated levels of error detection are functioning operationally. 
     The general and common method of error detection in memory systems, whether RAMs (random access memories) or ROMs/PROMs is the use of the &#34;parity&#34; data system for checking data integrity. 
     Parity is a method whereby &#34;extra&#34; data bits are stored along with the &#34;real&#34; data bits. These extra bits, called &#34;parity&#34; bits contain a value that is based upon the value of the actual data package under consideration. At such time as the data information is read-out from memory, the parity bits are read-out as well. 
     The parity value of the &#34;actual data read out&#34; is recalculated from the real data bits (via a parity logic circuit) and the calculated parity value is then compared to the parity bit or bits read out from the parity memory. If these two values are equal, then there is a high probability that the actual data read-out is valid and free from errors that may have been induced during the writing-in, the storage, and the reading-out of the data in the memory subsystem. In this parity checking system for memory chips, several factors are extant: 
     (a) Extra storage elements (ROM/PROM chips) are required to store the parity bit(s); 
     (b) A means of collecting and checking out the parity bits must be added to this system structure. 
     One example of a parity check system in the prior art is shown in U.S. Pat. No. 4,809,279 which is commonly assigned to the same ownership as the instant application. This type system is limited to only one type of parity operation (odd parity) while the instant application provides a choice factor for using odd or even parity plus other advantages in terms of cost, efficiency and uniformity of memory chips. 
     In the present commercial marketplace, standard parity-checking integrated circuit chips (IC&#39;s) are available. These devices use one parity bit for each eight bits of information (data). Thus it can be realized that one bit of extra memory must be added to the memory system for each eight bits (data) of system memory width. Since most functioning practical systems have requirements for memory wider than eight bits, this can lead to problems involving additional cost consideration and space requirements in the system. 
     Due to this impracticability, it would appear that few systems use data integrity schemes for PROM/ROM memory data structures. Thus the architectural arrangement presented herein provides a means for reducing the cost of parity schemes in PROM memory systems, permits uniformity of PROM/ROM chips or modules, and most importantly, permits means for insuring the integrity of the memory system by permitting the detection of data corruption errors in the PROM/ROM memory banks. Additionally, the memory structure described has the feature of permitting the choice of odd or even parity schemes at will. 
     Because of the use of fewer memory chips and the uniformity of using the same type of memory chips, it is now possible to provide considerable efficiencies in operation and cost reduction. 
     SUMMARY OF THE INVENTION 
     By engaging the benefits of the uniform memory chips or memory modules, a memory subsystem for storing multiple numbers of data bytes (words) is connected to cooperate with a parity storage auxiliary memory chip such that each byte of data storage in the data storage auxiliary memory has a correspondingly related parity bit stored in the parity storage auxiliary memory. When the real data storage memory is addressed to access and read out a byte of data, then simultaneously the address will access the correspondingly related parity bit from the parity storage auxiliary memory. At this point a parity checking logic circuit can be used to receive the read-out real data from the data storage memory in order to calculate its parity and then to compare the calculated parity value with the predetermined parity value received from the parity storage auxiliary memory. Should any disparity occur between the two compared parity bits, then an error signal, will be generated for use in the system for subsequent corrective action. 
     Data banks of &#34;vertically&#34; stacked memory modules of a uniform type can be architecturally organized to expand the depth of memory locations while at the same type permitting a single parity storage auxiliary memory to be used to store and subsequently provide the appropriate related parity bit for any real data byte accessed. This then can be used in the parity checking logic unit for checking the calculated priority against the priority preset in the parity storage auxiliary memory. This structure provides for greater addressability, allowing more data words of a specified width to be available and additionally provides the selectable choice of using either &#34;odd&#34; parity or &#34;even&#34; parity format for the system as a matter of choice. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram and schematic showing the basic structure of a depth-expansible memory structure of fixed width data words working in cooperation with an auxiliary parity storage memory to provide information to a parity checking logic unit; 
     FIG. 2 is a block diagram showing a vertically expanded memory structure to provide the maximum depth expansion using a single 8-bit output parity PROM chip; 
     FIG. 3 is a schematic drawing showing a plurality of PROM memory data banks expanded vertically while being supported by an auxiliary parity PROM which supplies a particular value for each data byte in the system. 
    
    
     DESCRIPTION OF PREFERRED EMBODIMENT 
     Referring to FIG. 1, the preferred implementation of the depth-expansible memory structure is shown in its minimal vertical expansion from one memory chip holding N thousand data bytes (of eight bits each) to a secondduplicate-sized data PROM also holding N data words so that the memory structure has expanded from N thousand data words up to 2N thousand data words. 
     It may be noted that only one parity bit is required for each data byte in each of the data PROMs of the memory which are 10 0N  and also 10 1N . The architecture requires only one parity auxiliary PROM 20NP for the expanded structure, which structure shares the single chip parity PROM 20NP. An additional requirement is a very inexpensive &#34;Quad 2-1 Multiplexer&#34; chip such as that manufactured by Fairchild Camera and Instrument Company, Digital Division, whose address is 333 Western Avenue,South Portland, Me., and which type is designated as Type 74157. The Quad Multiplexer Chip 21 is used to accept the two output parity bits from the parity chip 20NP and to select the appropriate parity bit for output on line 22. The multiplexer in FIG. 1 is designated as element 21 while the memory structures are made of the data PROMs 10 0N  and 10 1N . 
     The data PROMs are connected as a matrix having the address line 8 which isalso fed to the parity PROM 20NP There is an upper address line 8 U  which enables one data PROM at a time through the chip enable input, CE. Additionally, the upper address line 8 U  also selects one of the two parity bits which are received through the multiplexer chip 21 in FIG. 1. 
     The upper bit address lines 8 U  of the address bus 8 only require a &#34;1-bit&#34; line in the case shown of the two data PROMs, where &#34;k&#34; equals 2, and represents the number of data PROMs. If &#34;k&#34; data PROMs were used, thenthe upper bit address lines 8 U  would require A S  lines where A S  equals log 2  of k. 
     In FIG. 1, the parity check logic circuit 30 is preferably made with a combination of two AND gates and one OR gate with a commercially availableParity Check Generator 30 C  which receives the 8-bit accessed data wordand the related parity bit. The type of parity system format to be used (odd or even) is selected through either one of the inputs 30 so  or 30 se . A typical type of Parity Check Generator is that designated as type 74280 as manufactured by the Fairchild Camera and Instrument Co., Digital Div., of So. Portland, Me. 
     The minimally expanded structure of FIG. 1 is shown in an expanded form in FIG. 2 where the vertical depth of the memory system has been expanded to &#34;8N&#34; thousand bytes deep. This architectural arrangement can provide for expansion to this depth without the need for adding any additional parity PROM chips other than the initial parity PROM chip 20NP. 
     In FIG. 2, the vertically arranged data PROMs N X8  are shown as 10 0N , 10 nN , 10 7N  where each of these data PROMs is addressed by the address bus 8 which also addresses the parity PROM chip 20NP. Additionally, the upper bit address lines of three bits, designated as bus 8 u  is used to reach the chip enable (CE) inputs of the data PROMs. The address lines bus 8 u  is also used to activate the multiplexer 81 which has eight inputs and one output in order to provide the properly related parity bit on parity output line 22. 
     In the structure of FIG. 2, the upper three-line address (A s  =3) bits bus 8 u  selects which of the eight data PROMs is to be enabled and additionally it selects (via multiplexer 81) which one of the eight outputparity bits from the parity PROM 20NP, is used. The data PROMs are connected as a matrix. The lower address lines on bus 8 (composed of &#34;A&#34; bits) are the common address lines. The data lines of data output bus 12 are common with only one data PROM being enabled at a time. The upper address lines (A s ) of the bus 8 u  select which data PROM is to beactive. The upper address lines of bus 8 u  also select which one of theeight parity PROM bits is used as the related parity bit by selection via an inexpensive 8-1 multiplexer chip 81. 
     The 1-bit parity line 22 and the eight bits of the output data bus 12 wouldthen be used to provide inputs to the parity check logic unit 30 as shown in FIG. 1. 
     FIG. 3 is a schematic drawing showing how eight vertically arranged data banks having up to eight memory chips can be supported by an auxiliary parity memory chip which duplicates the type and size of the memory chips involved. 
     The single auxiliary parity PROM 20NP is sufficient to handle the architecture. As seen in FIG. 3, each parity bit position in the parity byte of the parity PROM corresponds to one bank (memory chip) of the data PROM structured arrangement. The structure is such that the first PROM data bank is designated as 10 0N . The second data bank is designated as 10 1N . The final data bank 7 is designated as 10 7N . 
     The first data bank (data bank 0) has data bytes 0 through N-1. The second data bank 1 has data bytes N through 2N-1, . . . , the eighth data bank 10 7N  carries data bytes 7N through 8N-1. 
     Corresponding to each of these particular data words in each of the particular data banks, there is a particularly related parity bit in the parity PROM 20NP. For example, the data byte 0 of the data bank 0 corresponds to the parity bit P oo . The data byte N in data bank 10 1N  corresponds to the parity bit P 10  of the parity PROM 20NP. The initial data byte 7N of the data bank 10 7N  corresponds to the parity bit Phd 70 of the parity PROM 20NP. 
     The most significant three bits (A s ) of the address lines on address bus 8 allow eight PROM data banks (memory chips) to be read from. These three bits (A S ) of address from the address bus 8 also control a multiplexer chip 81 which steers the appropriate related parity bit required onto the parity line 22. 
     Since the number of data bank PROMs is eight (k=8), thus A s  is equal to three bits, where the required upper address bits are A s  is equal to log 2  k, which in this case is &#34;three&#34; upper bit lines. 
     Described herein has been an expandable-in-depth memory structure which includes the use of a duplicate-type parity PROM shared by multiple numbers of data PROMs, and capable of selecting the appropriately related output parity bit for each accessed data word. The number of extra auxiliary PROMs needed for the memory structure for parity storage can be reduced to a minimum or in many cases can operate with only one N×8 parity PROM, and the memory structure can support selected choice of odd or even parity format for operations. 
     Since the PROM/ROM memory structures generally contain highly critical datainformation for the proper operation of the computer system, the ability todetect any data alteration or corruption at such a minimally added cost is deemed to be highly desirable. 
     Regarding the actual parity values which are predetermined and preset and stored in the auxiliary parity PROM, these can easily be calculated by a software program at the time that the program prepares the actual data bytes for storage. This is generally done through the process called &#34;PROMburning&#34;. Since simple software programs can be written to create the parity PROM values from the data word byte values, no hardware costs are involved once the described system is built and loaded with its required information. 
     While the above described memory structure system for data integrity has been shown in its basic formulation, it may be understood that the concepts and intercooperating architecture presented may also be implemented through other configurations but which still fall within the definition of the following attached claims.