MEMORY ACCESS FOR A COMPUTER SYSTEM

Abstract: A high speed and extended bit length microprocessor based computer system includes a memory array (5) which is segmented to be addressable by words but shares a common data bus multiple words in size. The computer system further includes a logic circuit (26) for selectively generating and time-synchronizing wait state signals for the microprocessor. The logic circuit (26) is responsive to a memory access request by the microprocessor. The memory access request is considered in conjunction with the previous microprocessor accessing information to determine whether the same segment of the memory array (5) is to be addressed during the next memory array access cycle. If a segment coincidence is detected, a wait cycle is initiated to delay accessing of the memory array. The wait cycle may be a single microprocessor clock cycle or multiples of such time interval. The circuit finds use in a computer system having a microprocessor with a cycle rate faster than the memory array access repetition rate, and which uses software of diverse data word length.

Description: Memory access for a computer system Technical Field This invention relates to computer systems of the kind including processing means, a memory array and addressing means adapted to address said memory array. Background Art The evolution of personal computer technology has created a number of anomalous relationships which when combined detract in the sense of performance from the capabilities of advanced personal computer systems. One aspect of the problem is the elevated speed of new microprocessors. Whereas microprocessors formerly operated at clock rates nominally ranging between four and seven megahertz, and occasionally extending to the ten megahertz range, the newer devices are capable of operating at clock rates in the range of twenty megahertz or faster. Consequently, such advanced microprocessors are capable of communicating with other devices or memory at frequencies approaching the clock rate when the operations performed within the microprocessor involve relatively few clock cycles. The addressing/accessing of a memory in the execution of a read or write cycle is an example of an operation which entails relatively few, typically two, clock cycles to complete, and consequently can operate at approximately one half the clock rate. The memory arrays addressed by advanced microprocessors, fundamentally integrated circuits, have also undergone significant recent changes, not only in tremendous growths of data storage density but also of operating speed. An inherent aspect of the evolution in memory technology is the reduction in memory cost, and the associated significant cost competition of the elements making up the personal computer memory control system when such memories are, as is now commonly expected, multiple megabytes in size. The movement from eight bit to sixteen bit, and most recently to thirty-two bit length address and data words is a further factor which increases the number of integrated circuit devices which must be used to create the personal computer memory. Therefore, though memory devices of exceptionally high speed are available, concurrent growth in word length and word number for personal computer memory arrays have, together with the high cost for memory devices of exceptional speed, resulted in the frequent utilization of memory devices which have operating speeds measurably less than the microprocessor. Another aspect of the technological evolution which bears upon the present invention is the exponential increase in the bit length of the words handled by the microprocessor. For example, early microprocessor address, instruction and data words were four bits in length, evolving soon thereafter to microprocessors using eight bit words, sixteen bit words, and most recent thirty-two bit length words. In recognition of the need for an orderly migration of hardware and software, the more recent sixteen and thirty-two bit word microprocessors have included the capability to operate software utilizing eight bit words, recognizing that eight bit word length software will be commonly used for an extended period of time. Therefore, sixteen bit and thirty-two bit word personal computer systems, namely those capable of handling such bit lengths in the microprocessor and memory array, and on the data and the address buses, will frequently be operated with software which addresses and utilizes only eight bit long word segments of the memory array structure. Conventionally each time the memory array is accessed, whether such accessing addresses an eight or a full thirty-two bit length data word, the complete thirty-two bit segment of the memory array word is considered to require a precharge cycle. To ensure that the high speed microprocessor does not attempt to access a segment of the memory array which has not undergone a complete precharge, memory access control systems have been configured to introduce "wait" cycles into the timing sequence, thereby causing the microprocessor to sit idle while the memory array is completing its precharge cycle. Obviously such idle periods of the microprocessor reduce the personal computer system's effective data processing rate. To mitigate the effects of such "wait" cycles on the data processing speed of microprocessors, it has become common to arrange the memory array into banks, and to load the data into memory in such a way that under normal operations, namely those not involving a jump or call instruction, the software addresses sequentially alternate from bank to bank. In this way, one bank is being addressed while the other is free to undergo a precharge in preparation for the next memory access cycle. Thereby, the number of "wait" cycles introduced during a program operation sequence of the microprocessor is significantly reduced. As was noted earlier, a significant number of "wait" cycles can still arise if the program includes frequent jump or call sequences, in that the same bank can often be addressed in direct succession and therefore requires a "wait" cycle for each such consecutive operating sequence. Interestingly, the same situation arises when older software, such as eight bit word length code is operated in advanced thirty-two bit personal computer systems. Although the eight bit length words are distributed throughout the memory array, the addressing of a single eight bit word acts upon the whole bank of the memory within which the eight bit word resides, and as such requires accessed eight bit length words reside in the same thirty-two bit length bank. Even worse, if the eight bit words are sequentially loaded into four consecutive segments of a bank having thirty-two bit words, a "wait" cycle will be introduced each time the software program sequences through the arrangement of eight bit words. • Disclosure of the Invention It is the object of .the present invention to provide a computer system of the kind specified which permits the user to utilizeβ software of differing word length without materially degrading operating speed and without unduly complicating the computer hardware structure. Therefore, according to the present invention, there is provided a computer system of the kind specified, characterized in that said memory array includes m individually addressable segments, an n-bit output bus means, and operates under a defined access repetition rate-, in that said addressing means is adapted to selectively address said segments to selectively provide p output words of q-bit length on said n-bit output bus means, wherein n is 2q or greater; and by wait state generation and timing logic means adapted to effect a comparison between the segment selectively addressed during a first processor memory address cycle and a segment to be selectively addressed during a succeeding second processor memory address cycle, to detect correspondence of selectively addressed segments, and to generate a wait signal for said processing means, whereby accessing of said memory array in said second processor memory address cycle is delayed. A further advantage of a computer system according to the invention arises for computer architectures in which the memory array is significantly slower than the microprocessor, since "wait" delays are particularly significant for such computer architectures. Brief Description of the Drawings One embodiment of the invention will now be described by way of example with reference to the accompanying drawings, in which: Fig. 1 is a schematic diagram of a memory array with "wait" state detection/ generation circuitry. Figs. 2A and 2B together comprise a block diagram schematically illustrating a preferred embodiment of the present invention as used to generate "wait" states and related microprocessor timing and control signals. Fig. 3 schematically illustrates representative timing waveforms for the invention embodied in Figs^ 2A and 2B using signal voltage versus time plots. Fig. 4 schematically illustrates a memory array bank select circuit. Figs. 5 and 6 schematically illustrate logic for latching and comparing the bank, previous byte, and next succeeding byte signals to generate a "wait" state request signal. Fig. 7 illustrates logic for combining the "wait" state request signals with the clock signals to define the memory array row and column strobe signals. Figs * 8 and 9 schematically illustrate logic for combining memory array bank select signals and segment select signals with strobe signals to address individual byte size data word segments of a four byte size data word memory array. Best Mode for Carrying Out the Invention The unique and highly distinctive features of the invention are best understood by comparison with a contrasting system, depicted in Fig. 1, which will now be described. The signals emanating from a microprocessor {not shown) and other conventional elements of a personal computer are, in the identification symbols of Fig. 1, clock signals CLOCK suitable to synchronize the memory accessing logic, a READY signal to inform the microprocessor that the desired segment of the memory array is available for an access cycle, a MEMS signal from the microprocessor to request access to " the memory array, the bank select signals SELA and SELB, a set of memory array address signals A0-A27, and a set of thirty-two bit wide memory array output signals on data lines D0-D31 of a common thirty-two bit data bus. The memory array 1, Fig. 1, is comprised of two distinct banks, bank A at 2 and bank B at 3, and utilizes a data word thirty-two bits in length for each bank. The individual banks are accessed by the coincidences of address words A3-A20 on bus 4 and respective row and column strobe signals on lines such as bank A strobe lines 6 and 7. The memory array output words are identified as bits D0-D31 and appear on the common computer system output bus 8. According to the system architecture, each successive access cycle of memory array 1 is initiated by a microprocessor memory access request signal MEMS. The MEMS signal causes a comparison to occur within wait state detection logic block 9, wherein the previously addressed bank and the bank to be addressed are identified and compared. If a coincidence of successive bank addresses is detected, the need for a "wait" cycle is transmitted to timing generator block 11. Timing, generator block 11 then disables the row and column strobe signals normally generated, on lines 12 and 13, and conveys a complement of the READY signal to the microprocessor as indication of the fact that memory array 1 is not available for the desired access cycle. The effects of using memory array devices, commonly dynamic random access memories (DRAM), which are slow in relation to the clock frequency of the microprocessor are somewhat lessened by using the multiple banks illustrated, bank A and bank B in Fig. 1, by selectively organizing the software data addresses so that normal program execution results in access addresses which successively alternate from bank to bank. In this way while one bank is being addressed, the other is given an opportunity to complete its precharge operation. Jump, call and other branching operations result in address sequences which often diverge from the prescribed norm and therefore require the insertion of "wait" cycles. Obviously, if the DRAMs are faster than the microprocessor, there is be no need for multiple banks or memory array initiated "wait" cycles. Contrastingly, the use of relatively slow DRAMs in relation to the clock rate of the microprocessor requires the inclusion of wait cycles which extend for multiple microprocessor clock cycles. In keeping with the migration of eight bit software into the thirty-two bit architecture personal computer systems depicted in Fig. 1, the use of eight bit length data words in memory array 1 would preferably involve an analogous memory allocation practice by which such words are placed into successive byte size segments, such as 17, 18, 19 and 21, of bank A. Eight bit words, are then individually accessed by microprocessor using bank and segment addresses. However, according to the architecture in Fig. 1, each time an eight bit word is to be addressed, for example the byte comprised of data bits D8-D15 in DRAM 18, a "wait" state evaluation is undertaken for the whole of bank A. Particularly slow microprocessor operation results for eight bit software loaded into and accessed in successive eight bit segments, such as 17, 18, 19 and 21, of memory array 1 in that a "wait" cycle would be added for each byte size access of memory array bank A. The wait state generation and timing logic according to the present invention, as depicted by block diagram in the composite of Figs. 2A and 2B, provides. the user of a personal computer having an advanced technology microprocessor, characterized by high operating speed and extended data bus of, for example, thirty-two bits, with the ability to utilize eight bit software at or near the clock rate of the microprocessor while using somewhat slower DRAM devices. This is accomplished by individualizing the "wait" state evaluation to encompass byte size segments of the memory array, yet retaining a bank select architecture and associated thirty-two bit wide data bus and data word operating capability. The architecture is configured to be transparent to the software whether composed of eight bit, sixteen bit, or thirty-two bit long words of standard convention. The embodiment illustrated in the composite of Figs. 2A and 2B is based upon a computer system in which the memory array is capable of executing a precharge cycle in less than two microprocessor clock cycles. A "wait" cycle is thereby defined to be a single, second, clock cycle. Obviously, the relative speed of the microprocessor in relation to the access rate of the memory array determines the number of microprocessor clock cycles over which a "wait" cycle must extend, which relationship is prescribed by the computer system designer. Attention is now specifically directed to the composite block diagram set forth in a combination of Figs. 2A and 2B. The logic schematics which prescribe the elements internal to each block are depicted in Figs. 5-9, the correspondence being individually indicated in each block. Representative waveforms for the signals present on the various interconnecting lines are schematically illustrated in Fig. 3. The waveforms are shown with reference to a set of microprocessor clock, memory request, and address signals. The elements within and functions performed by wait state detection logic block 26 can most effectively be understood by considering the combination of Figs. 2A, 2B, 3, 5 and 6. One set of inputs to wait state detection logic block 26 is the group of byte select signals on four line bus 27, which according to this implementation individually identify which of eight bit' size segments 29, 31, 32 or 33 from bank A, or 34, 36, 37 or 38 from bank B, are to be accessed ' . For instance, if the eight bit data word D8-D15 is to be addressed, the second byte select line, BS1 is set to a low signal level while the other byte select lines remain at high signal levels. The choice of memory array banks, A or B, is defined by the signal levels on bank select lines SELA and SELB, which as illustrated in Fig. 4 are fundamentally established by the signal level of the address line A2. If address line A2 is low, bank A is selected; and if high, bank B of the memory array is selected. A signal on MEMS line 39 in Fig. 2A represents a request by the microprocessor for access to the memory array, and as such initiates within wait state detection logic block 26 the determination of whether the memory array, access strobes should be commenced with the immediately succeeding clock cycle or be delayed by a wait cycle. The clock input, generally line 41, is the microprocessor clock of +C1K and the complement -C1K. The remaining signals analyzed by wait state detection logic block 26 are the bank A and bank B column address strobe lines, respectively by bank, ACAS0-ACAS3 and BCAS0-BCAS3. Fig. 5 depicts one functional element present in wait state detection logic block 26, shown to be a positive going edge triggered hex D type flip-flop 42 for latching the binary states represented by the signals on SELA, SELB and BS0-BS3 to form latch equivalents on output lines distinguished by the prefix "L". The latched outputs on lines LSELA and LBS0-LBS3 are provided as input signals to bank A driver block 43, while latched outputs LSELB and LBS0- LBS3 are provided as the input signals to bank B driver block 44. The remaining outputs from wait state detection logic block 26 in Fig. 2A are generated by the combination of the logic-elements depicted in Fig. 6, providing as outputs binary signals on respective TO and TW lines 46 and 47. When TO is at a low signal level while the MEMS signal is at a high level, access to the memory array is permissible and undertaken. However, if TW signal is low when MEMS signal is at a high level, accessing is prohibited in that the memory array segment selected for accessing was accessed in the previous microprocessor cycle and as a consequence requires a wait cycle to complete precharge. Timing generator block 48 also receives microprocessor clock signals and uses those clock signals, as illustrated in Fig. 7, to synchronize D- type flip-flops 49 and 51 for holding wait request signal TO and TW, and to synchronize the generation of the master row address strobe signal TRAS on line 52 from flip-flop 53 and master column address strobe signal TCAS on line 54 from flip-flop 56. Timing generator block 48 also generates on line 57 a READY signal for the microprocessor, which signal if low represents to the microprocessor the unavailability of the memory array for that clock interval. The interaction of the clock signals within wait state detection logic block 26 and timing generator block 48 can be more comprehensively understood from an analysis of the waveforms illustrated in Fig. 3. Consider both, a first condition, where no wait state is to be requested, and a second condition where a one clock cycle wait state is to be requested. The events to be described commence with microprocessor cycle n + 1, following the onset of the MEMS signal rise to indicate the desire for a memory access by the microprocessor. Immediately following such request from the microprocessor, the memory array address signals A2- A27 and memory array segment select signals BS0-BS3 stabilize to define both the bank and segment desired. This new memory array access information overlaps in time the trailing edge of any previously initiated column strobe by segment, ACAS0-ACAS3. Consequently, during the concluding time interval of each microprocessor cycle there coexists, for purposes of analysis in determining the need for a wait cycle, information regarding the new and previously accessed memory array segments. Such new bank and segment addresses, as well as the previously addressed segment information embodied in the strobe signal, is compared by the logic in Fig. 6 to detect correspondence. Note that during the n + 1 microprocessor cycle the logic in Fig. 6 causes the signal on line ' TO to transition to a low state, representing the absence of any need for a wait cycle. Next, consider the contrasting situation arising during the ' concluding time ' interval of the n + 2 microprocessor cycle, where according to the signal states plotted in Fig. 3, there is defined to be an anticipated successive addressing of the same memory array segment. Such satisfaction of the logic conditions depicted in Fig. 6 produces a transition of TW line signal to a low state, and upon the onset of the n + 3 microprocessor cycle a deferral of the master strobe signals TRAS and TCAS, and a transition of the READY signal to a low state. Recall that a low READY signal notifies the microprocessor that the memory access request, represented by the MEMS signals, will not be satisfied during the next successive, n + 3, microprocessor cycle. As a result of such unavailability of the memory array to accessing, note that the microprocessor cycle n + 3 is extended in time by virtue of the added wait cycle. The logic functions incorporated into drivers blocks 43 and 44, as depicted in Fig. 2A, are respectively shown by schematic in Figs. 8 and 9. The logic elements in Fig. 8 provide as outputs the row and column strobe signals directed to bank A DRAM segments 29, 31, 32 and 33 (Fig. 2B) . Each segment of the memory array is independently strobed. For instance, segment 31 of the memory array is strobed by ARAS 1 and ACAS 1 for segment selective accessing in response to address signals on address bus 4, composed of lines A3-A20, to provide byte size output data from the memory array 5 on common data bus 10 lines D8-D15. Note " that the logic depicted in Fig. 8 synchronizes the individual segment strobe signals to the master row and column strobe signals TRAS on line 52 and TCAS on line 53, while selecting the bank A by the presence of an LSELA signal and selecting the memory array segment by the presence of an appropriate LBS1 signal. The configuration in Fig. 8 further provides for the ability to simultaneously strobe two or more segments of the memory array in order to simultaneously read two or more byte size words onto common data bus 10. For instance, .if the software utilized sixteen bit length words, the strobing of bank A could include a concurrent enablement of segments 29 and 31, or 32 and 33 by signals on lines LBSO and LBS1, or LBS2 and LBS3, to provide sixteen bit data words onto the common thirty-two bit data bus 10. Bank B is operated in analogous fashion using the corresponding set of logic devices- depicted in Fig. 9 and the common master row and column strobe signals TRAS and TCAS. With regard to utilizing eight, sixteen or thirty-two bit length data words, note that the wait state detection logic depicted in Fig. 6 evaluates the levels of he strobe signals at the conclusion of each microprocessor cycle for all eight memory array segments, and individually compares these with the bank and segment identifications for the next succeeding microprocessor memory array access cycle. Thereby, an attempt to successively access the same memory array segment, singly or in combination with other segments, during two successive microprocessor cycles result in the generation of a wait request upon the onset of the latter microprocessor cycle. The invention has been shown and described with reference to an embodiment in which the common data bus 10 is thirty-two bits in size, the memory array 5 is divided into segments individually providing byte size data words, and is contemplated to operate with byte or- multiple byte word length software. The underlying concepts, are not so restricted in that the memory array could be divided into segments providing shorter word length data, for example four bit words, and could be accessed in diverse combinations of segments so defined. A consideration of the wait state detection logic depicted in Figs. 5 and 6 of the timing generator logic depicted in Fig. 7, and the driver logic depicted in Figs. 8 or 9 clearly evidences that extensions of the invention to greater segmentations of the memory array, including segments of differing proportions, can be implemented without unduly complicating the present logic structure. Thus, in general terms, the memory 5 has m individually addressable segments, the common bus 10 is an n-bit bus, and the m individually addressable segments selectively provide p output words of q-bit length on the n-bit bus 10, where n is 2q or greater. Furthermore, such refinements can be readily adjusted by extension of the wait state cycle to compensate for selected differences in the speeds of the microprocessor and memory array. From a practical perspective, however, the most important consideration is that these refinements allow the end user to utilize software of differing word length without materially degrading the computer speed as fundamentally defined by the microprocessor, and doing so in the context of a computer architecture which is fundamentally transparent to such refinements.

Claims: CLAIMS 1. A computer system including processing means, a memory array (5) and addressing means (4, 43, 44) adapted to address said memory array (5), characterized in that said memory array (5) includes m individually addressable segments (29-38), an n-bit output bus means (32), and operates under a defined access repetition rate, in that addressing means (4, 43, 44) is adapted to selectively address said segments (29-38) to selectively provide p output words off q-bit length on said n-bit output bus means (32), wherein n is 2q or greater; and by wait state generation and timing logic means (26,48) adapted to effect a comparison between the segment selectively addressed during a first processor memory cycle and a segment to be selectively addressed during a succeeding second processor memory address cycle, to detect correspondence of selectively addressed segments, and to generate a wait signal (READY) for said processing means, whereby accessing of said memory array (5) in said second processor memory address cycle is delayed. 2. A computer system according to claim 1, characterized in that said n-bit output bus means (32) is selectively operable by said processing means in a first mode using n-bit words and in a second mode using q-bit words. 3. A computer system according to claim 1 or claim 2 , characterized in that said processing means operates in accordance with clock cycles, in that said defined access repetition rate is defined in accordance with said clock cycles and in that said wait signal delays accessing of said memory array (5) by at least one cycle. 4. A computer system according to any one of the processing claims characterized in that n is equal to the product of p and q. 5. A computer system according to any one of the preceding claims, characterized in that said comparison is effected during a concluding interval of said first processor memory address cycle during which address signals for said second processor memory address cycle are available. 6. A computer system according to claim 5, characterized in that selective addressing of said memory array (5) is controlled through the generation or suppression of address strobe signals. 7. A computer system according to any one of the preceding claims, characterized in that said memory array is divided into a plurality of banks which are individually addressed while connected to said n-bit output bus means (32). 8. A computer system according to any one of the preceding claims, characterized in that said processing means includes a microprocessor and said memory array (5) is a dynamic random access memory array.

Inventors: SMILEY ALAN CARL, SMILEY, ALAN, CARL
Applicants: NCR CO, NCR CORPORATION
Application year: 1988
Main classification: G06F13
IPC codes: G06F12, G06F13