SHARED MEMORY INTERFACE FOR A DATA PROCESSING SYSTEM

Abstract: The memory interface mechanism according to the invention is driven from the memory controller side. It comprises lines which are shared by the memory user devices 1 and 2 and lines which are specific to the memory user devices. The shared lines are the address and data bus lines 20,22, the byte select lines 24 the data and address clock lines 26 and 24 and the last operation line 30. The specific lines are request lines 11 and 12, address user indicator and data user indicator lines 15,17;16,18. A user initiates a memory operation by activating its request line, then it waits for the activation by the memory interface control circuit 5 for the activation of the address and data user indicator lines 15 and 17. The user controls the address and data transfer count and ends the transfer by activating the last operation line 30. Then it waits for the deactivation by the memory controller of the address and data user indicator lines to present a new request, if any. Thus the memory transfer is memory driven, which allows to take fully advantage of the page mode facility of the memory. The memory operations may be pipelined since servicing a request from a user may be started before servicing the request from the the previous selected user is ended.

Description: DESCRIPTION OF THE INVENTION Field of the invention The present invention relates to a memory interface mechanism between a memory and a plurality of memory user devices such as processors and/or direct memory access users. Background of the invention The data processing systems generally comprise a memory which may be shared by a plurality of memory user devices. The memory and memory user devices are connected through a memory interface which comprises a plurality of wires and associated circuitry for controlling the memory operations. In the prior art system, the memory operations are driven by the memory user devices, which prevents the memory from being used at its fastest rate. In addition, the conventional interfaces are not flexible, which means that modifications have to be made to the memory user devices when it is desired to change the system memory. Summary of the invention An object of the invention is a simple memory interface between a memory and at least one memory user device, which is efficient in terms of memory performance. Another object of the invention is a memory interface which is modular so that user devices may be added in the system without redesigning the whole system. Another object of the invention is a memory interface which allows the refresh operations to be done without any impact on the user device operations. Another object of the present invention is a memory interface which presents a high level of reliability. The invention is set out in claim 1. According to the present invention, the memory interface mechanism between a plurality of memory user devices and a memory controller controlling the read and write memory operations requested by the user devices, comprises address bus (20) and data bus (22) which are shared by the user devices and used by a user device selected to perform a memory operation to send the memory address to the memory controller and receive or send the data read from or to be written into the memory. It also comprises: one memory request line (11,12) per user device which is activated by the user device when it requests an access to the memory for performing a memory read or write operation, a last operation line (30) shared by the user device which is activated by one user device when its memory transfer is completed, at least one address user indicator line (15,16) per user device, at least one data user indicator line (17,18) per user device, at least one address clock line (26) which is shared by the user devices, at least one data clock line (28) which is shared by the user devices. Memory interface control means (5) are located in the memory controller. They are responsive to the status of memory request lines to select the request of one user device, to activate the address user indicator line of said selected user device, firstly and the data user indicator line of said selected user device, secondly during time periods when the selected user device may use the address bus and data bus respectively and to send address and data clock pulse signals on the address and data clock lines, which time the transfer of the address on the address bus and of the data on the data bus. User interface control means (3-1, 3-2) are located in each user device. They activate the user request lines to control the memory transfers through the address and data bus under control of the address and data clock pulse signals. Brief description of the figures Figure 1 shows schematically the interface wires between two memory user devices and a memory. Figure 2 shows the block diagram of the user device circuitry at the user side of the interface, needed to control the memory operations through the interface. Figures 3A-3D when assembled as shown in figure 3, show a detailed implementation of the circuitry shown in figure 2. Figures 4A-4B when assembled as shown in figure 4, show the block diagram of the user device circuitry at the memory controller side of the interface, needed to control the memory operations through the interface. Figure 5 shows a detailed implementation of processing and request circuit 220 of figure 4. Figure 6 shows a detailed implementation of status latches 224 of figure 4. Figure 7 shows a detailed implementation of server counter 238 of figure 4. Figure 8 shows a detailed implementation of address user generation circuit 244 of figure 4. Figure 9 shows a detailed implementation of data user generation circuit 246 of figure 4. Figure 10 shows a detailed implementation of address clock generation circuit 248 of figure 4. Figure 11 shows a detailed implementation of data clock generation circuit 250 of figure 4. Figure 12 shows a detailed implementation of address path circuit 260 of figure 4. Figure 13 shows a detailed implementation of data path circuit 258 of figure 4. Figure 14 shows a detailed implementation of RAS circuit 264 of figure 4. Figure 15 is the timing diagram of a single read operation. Figure 16 is the timing diagram of a read loop operation. Figure 17 is the timing diagram of a single write operation. Figure 18 is the timing diagram of a write loop operation. Detailed description of the invention Figure 1 shows the memory interface lines between memory controller 4 and first and second memory devices which will be named users 1 and 2. Only two users are shown in figure 1, but there may be more users. Memory controller 4 controls the accesses to memory 6 in accordance with the control and data information on interface lines 8. It comprises conventional control means which will not be described in details, to access a memory and memory interface control circuit 5 which will be described in details in reference to figure 4, to monitor the interface lines according to the present invention. Memory 6 is provided with an error correction mechanism ECC 7 which sends an error indication signal to memory controller through line 9. Interface lines comprises dotted lines which are common to all users and lines which are specific to each user. The user specific lines are request lines 11 and 12, address user indicator lines 15 and 16 and data user indicator lines 17 and 18. Request 1 and request 2 lines 11 and 12 are activated by user 1 and user 2 respectively, when they request a memory read or write transfer access. Address user indicator lines 15 and 16 connecting memory controller 4 to user 1 and user 2, respectively, are activated by memory interface control circuit 5. One of this line is activated to inform user 1 or user 2, as the case may be, that it can use the address bus 20 and the common control lines 24, 26, and 30 of the interface. Data user indicator lines 17 and 18 connecting memory controller 4 to user 1 and user 2, respectively, are activated by memory controller 4. One of this line is activated to inform user 1 or user 2, as the case may be, that it can use the data bus 22 of the interface. The dotted interface lines which are common to all users are address bus lines 20, data bus lines 22, byte select lines 24, address clock line 26, data clock line 28 and last operation line 30. Address bus lines 20 are used by one user to sent the memory address to the memory controller. Data bus lines 22 are bidirectional lines used to carry the data to be written into or read from the memory. In a preferred embodiment of the present invention, wherein the memory is organized in 4-byte words, byte select lines 24 comprise four lines to indicate in WRITE mode which bytes have to be updated in the addressed word in the memory. These four lines are inactive in READ mode. Data clock line and address clock line 26 and 28 carries data and address clock signals which are used to time the operations on the address and data busses 20 and 22. In the preferred embodiment of the present invention, there are only one request line, one address user indicator line, per user and only one address clock line and one data clock line, however there may be a plurality of such lines if needed. For example, in some cases, where the LSSD technique (Level Scan Sensitive Design) is used to design the logic circuitry, two address clock lines and two data clock lines may be needed. The limitation on the number of users is governed by the loading on the data and address busses 20 and 22. The signal on the address and data user indicator lines tell the users to whom the address and data busses 20 and 22 are devoted at a given instant. User interface control circuits 3-1 and 3-2 are provided at the user side of the interface to monitor the interface lines. This circuit will be described later on in reference to figure 3. The users initiate memory operations by activating their request lines 11, 12. The memory controller selects one request to be serviced at a given instant and depending upon which user is selected, activates the address user indicator line 15 or 16 firstly, and the data user line 17 or 18 secondly. The transfers of the addresses and data on busses 20 and 22 are performed independently and are timed by the address and data clock signals on lines 26 and 28 sent by the memory controller. The selected user controls the address and data transfer counts and ends the transfer by activating the last operation line 30, then it waits for the deactivation of its address and data user indicator lines 15 or 16 and 17 or 18 to present a new request, if any. As will be explained later on, the selected user performs the error detection and reporting. The main advantage of this interface is that the users and the memory have their own clock. They do not have to be synchronized, and can run at their own pace which allows the best performances to be obtained from each device. Data is written/read in memory at the maximum rate in page mode, i.e. it is not slowed down by having to wait for the next multiple of user cycles to end the memory operation. Consequently, several types of memory cards and various memory configurations can be operated from the same user without any change in the user hardware and software. Any kind of memory may be used, provided the maximum speed at which the data are extracted from the memory does not overrun the user thruput. The interface allows to make the best possible usage of an important feature of the dynamic memories that permit to run and get the data faster in page mode. Whenever possible, the data are read or written in this mode of operation. This is transparent to the user that has just to deliver the next sequential address with each address clock signal supplied by the memory controller on line 26. The refresh operations of the memory is also transparent to the users. If a refresh operation is mandatory while a user is being served, the memory controller stops sending the clock signals on lines 26 and 28 for a while and then the memory operation resumes at completion of the refresh. The error processing by the error correction mechanism 7 of the memory is also transparent to the users. Like in the case of the refresh operation, whenever an extended correction has to be performed, the memory controller does not deliver any clock signals on lines 26 and 28 till the error is corrected, then the operation is resumed. Any types of memory operations may be executed, the byte select lines allow to select any or all the bytes of a word to be updated. This can be used whenever a write operation is performed in page mode, the first and last write operation of a data burst memory transfer may be partial write operations or full write operations. As will be apparent from the description of the interface circuitry, the user operations may be pipelined. This means, that at the boundary of two requests, the second one begins to be serviced before the data transfer with the first user is ended. This improves the overall memory thruput. The circuits at the user side of the interface will now be described. Figure 2 shows the user block diagram and data flow. User sequencer circuit 40 which is assumed to be located in user device 1, activates the request 1 line 11 when a memory access is requested by user 1. When the user request may be serviced, the memory controller activates in due times, the address user indicator line 15 and data user indicator line 17 and sends the address clock and data clock signals on lines 26 and 28 when the user request may be serviced. At the start of transfer, sequencer 40 loads the transfer parameter P through bus 42 and under control of internal clock signals on line 44 into address generation and control means 46 and into data control means 48. Address generation and control means 46 comprises address counter 50 which is loaded at the start of transfer with the starting memory address pointing to the location where the first memory operation is to be performed, this counter is then incremented at the address clock rate and thus provides the memory address on bus 20. Byte select register 52 provides signals on bus 24 which are all inactive in read mode and which are set at specific values during the first and last transfer in write mode, to select the bytes which are to be updated. During the intermediate transfers of a write operation in page mode, all lines of bus 24 are active to select the four bytes of the addressed words. Address transfer counter 54, is loaded at the start of transfer with the count of memory accesses requested by the user and its content is decremented at the address clock rate. Thus, it generates an end of address transfer signal on line 56 when its content becomes equal to 0 and a last transfer signal on line 58 which is provided to byte select register 52 to allow all or some lines of the byte select bus 24 to be activated during the last transfer as previously explained. Counters 50 and 54 and register 52 in circuit 46 are responsive to the address clock signal on line 26 and to the address user indicator signal on line 15. Data control means 48 comprises data transfer counter 60 which is loaded with the memory transfer count, when a memory operation is requested by the user. Then, this count begins to be decremented at the data clock rate, when the data user indicator line 17 becomes active. Counter 60 provides and end of data transfer signal on line 62. End of address transfer signal on line 56 and end of data transfer signal on line 60 are provided to sequencer 40 which generates the last operation signal on line 30 therefrom. The data to be written into the memory or the data read from the memory are stored in buffer storage 64. Counter 66, which is loaded when a memory operation is requested by the user with the first address of storage 64 of the burst to be transferred, is then decremented at the data clock rate when signal on data user indicator line 17 is active in order to load or to deliver successively the data corresponding to each memory address. The output bus 68 of counter 66 provides the address of storage 64. Data bus 22 provides the data read from memory 6 to be written into storage 64 (read mode) or provides the data read from storage 64 to be written into memory 6. Figures 3A to 3D describe the detailed implementations of address generation and control circuit 46 and data control circuit 48 together with the circuit in sequencer 40 which generates the last operation signal on line 30 (figure 3C) and the error check circuit (figure 3D) which is part of user device 1. All user devices comprise circuits which are identical to those shown in figures 3A to 3C. A memory transfer (read or write) is initiated by user sequencer 40 which activates start of transfer line 80. This signal is provided to one input of AND gate 82 which is conditioned when the address user line and data user line 15 and 17 are inactive and when line 84 is active. The signals on lines 15 and 17 are provided to AND gate 82 through inverters 86 and 88. The output signal of AND gate 82 on line 90 is provided to the set input of latch 92. The Q output line of latch 92 is provided to the set input of latch 96, to the reset input of latch 92 and is the request line 11. The reset input of latch 96 is connected to end of transfer line 98. The memory sequence signal on Q-output line 100 of latch 96 is active during the memory transfer. The complementary Q output line of latch 96 is line 84 which thus conditions AND gate 82 when the end of transfer line has been activated, so that a new start of transfer request on line 80 may be serviced by activating request line 11. Receiving the request signal on line 11, the memory controller activates address user line 15 firstly and data user line 17 secondly, as will be described later, and the address and data clock signals are provided on lines 26 and 28. Latches 92 and 96 are clocked by the internal clock signal on line 44. The transfer parameters are loaded into address counter 50, BS register 52, address transfer counter 54 and data transfer counter 60 from parameter bus 42-P under control of loading pulses on lines 42-A and 42-C which are provided to AND gates 102 and 104. The address load pulse on line 42-A conditions AND gate 102 which thus provides the address parameter from bus 42-P into address counter 50 and set the four stages of register 52 to selected values which depend upon the memory operation, as explained in reference to figure 2. The count load pulse on line 42-C conditions AND gate 104 which thus provides the count parameter from bus 42-P into address transfer counter and data transfer counter 60. During this initialization phase, the loading operation in counter 50 and 54 and in register 52 is performed under control of the internal clock signal which is gated on line 106. The loading operation of counter 60 is performed under control of the internal clock signal which is gated on line 108. The internal clock signal on line 106 is provided by OR gate 110, AND gate 112 and inverter 114. Inverter 114 inverts the address user indicator signal from line 15 and thus provides an active signal at one input of AND gate 112 when line 15 is not activated. When conditioned, AND gate 112 provides the internal clock signal from line 44 to one input of OR gate 110. The internal clock signal on line 108 is provided by OR gate 116, AND gate 118 and inverter 120. Inverter 120 inverts the data user indicator signal from line 17 and thus provides an active signal at one input of AND gate 118 when line 17 is not activated. When conditioned, AND gate 118 provides the internal clock signal from line 44 to one input of OR gate 116. The content of address counter 50 is incremented at the address clock rate when the address user indicator signal on line 15 becomes active. AND gate 122 is conditioned when memory sequence signal on line 100 and address user signal on line 15 are active. When conditioned AND gate 122 provides the address user clock signal to an input of OR gate 110. OR gate 110 provides the address clock signal on its output line 106 which causes the content of address counter to be incremented when signal on line 17 is active. The address counter content is provided on address bus 20 through AND gate 124 which is conditioned by the signal on line 15. At each address clock signal gated on line 106, BS register 52 provides on line 24 the byte select signals. The byte select signals are always at zero for a read operation. During the first transfer of a write operation, at least one signal is at one, during the intermediate transfers, they are all at one and during the last transfer at least one signal is at one. The setting of register 52 during the last transfer is performed by AND gate 126 which is conditioned by the last transfer signal on line 58 to load register 52. One input of AND gate 128 is connected to address user indicator line 15 and another input connected to the end of transfer line 56 through inverter 130. It provides a count active signal on line 132 during the address transfer, which causes the content of counter 54 to be decremented at the address clock rate by means of the address clock signal gated on line 106. The value of the address counter 54 is decoded by decode circuit 134. When the content of counter 54 is found equal to "one", an active signal is provided on last transfer line 58, when the content of counter 54 is found equal to "zero", an active signal is provided on end of transfer line 56. The data user clock from line 28 are gated on line 108 through AND gate 136 and OR gate 116. AND gate 136 is conditioned when data user indicator signal on line 17 is activated to provide the data clock signal to one input of OR gate 116, which thus gates the data clock signal on line 108. Inverter 140 inverts the end of transfer signal from line 62 and provides an active signal during the data transfer. This signal is provided to AND gate 138 together with the data user indicator signal form line 17. The data count signal on output line 142 of AND gate 138 causes the content of the data transfer counter to be decremented at the data clock rate. The value of counter 60 is decoded by circuit 144 which generates an active signal on line 62 when its content is found equal to zero. End of data transfer signal on line 62 and end of address transfer signal on line 56 are provided to AND gate 146 which generates the end of transfer signal on line 98. The data count is loaded from AND gate 104 into counter 66, (figure 3C) the content of which is decremented at the data clock rate by means of the signal on line 108. Counter 66 provides the address to access storage 64. The data are read from or written into storage 64 by means of bus 22. Last operation signal on line 30 is generated by latch 148 (fig.3c). The set input of latch 148 is connected to the output line of AND gate 150, through OR gate 152. The inputs of AND gate 150 are address user indicator line 15 and last transfer operation line 58. The clock input is connected to line 106. The reset input of latch 148 is connected to Q output line 30 of latch 148. This allows the last operation signal on line 30 to be reset with the following Address clock and thus to the last Address XFer to memory cycle. When only one word is to be transferred the set control signal of latch 148 is provided by AND gate 154 through OR gate 152. AND gate 154 has one input connected to address user indicator line 15 through inverter 156, a second input connected to last address transfer line 58 and a third input connected to parameter load line 42-C. Thus the last operation line 30 is activated by means of the internal clock before address user indicator signal becomes active and and it is reset by the unique address clock pulse which is received from the memory controller. Checking circuit shown in figure 3D generates the address or data check signal as will be explained later after the description of the operation of circuits shown in figures 3A to 3C. When the memory controller is idle, it answers the request signal on line 11 by activating address user indicator line 15 and data user indicator line 17 in an asynchronous mode. Receiving address user indicator signal, AND gate 124 presents the first address on the address bus 20 and AND gate 127 present the first transfer byte select pattern on bus 24. Then the user enters a waiting state for the address transfer. Receiving data user indicator signal, the first data word is presented on the data bus 22 and the user enters a waiting state for the data transfer. The memory controller monitors the address and data transfer by generating the two sets of clock signals on lines 26 and 28. These two sets of clock signals are asynchronous and can be overlapped as the memory controller can deliver two address clock pulses to get two successive memory addresses while it delivers only one data clock pulse and gets one data word. At the transfer completion, the same number of address and data clock pulses should have been obviously delivered. The user is completely transparent to this mode of operation. It increments its address counter 50 and generates the byte select pattern on bus 24 when it receives one address clock pulse. It increments its own storage address in counter 66 and delivers or receives a new data word when it receives a data clock pulse. At each address clock and data clock pulse, it decrements its address and data transfer counters 54 and 60, respectively. The user enters the ending phase, when the last address transfer signal on line 58 becomes active. With the next address clock pulse it generates the last memory address, the last byte select pattern which in write mode causes 1, 2, 3 or 4 bytes to be written into the memory as the case may be. It also activates the last operation line 30. The memory controller sends the last address clock pulse which resets the last operation line 30. The data transfer is monitored in the same way till the data transfer counter content is equal to zero. When both counters 50 and 60 are equal to zero, end of transfer line 98 becomes active which resets latch 96. The user keeps track of its address and data user status by means of the circuit shown in figure 3D. It comprises latches 160 and 162, AND gates 164, 166, 168, and 170, OR gate 172 and inverters 174 and 176. The two inputs of AND gate 164 are connected to address user indicator line 15 and to memory sequence line 100. The output line of AND gate 164 is connected to the set input of latch 160 which is clocked by the signal on the internal clock line 44. The reset input of latch 160 is connected to the address user line 15 through inverter 176. The complementary Q output of latch 160 is connected to one input of AND gate 168 the second input of which is connected to output line of inverter 130 Figure 3B which is normally active during the address transfer. The two inputs of AND gate 166 are connected to data user indicator line 17 and to memory sequence line 100. The output line of AND gate 166 is connected to the set input of latch 162 which is clocked by the signal on the internal clock line 44. The reset input of latch 162 is connected to the data user line 17 through inverter 174. The complementary Q output of latch 162 is connected to one input of AND gate 170 the second input of which is connected to output line of inverter 140 which is normally active during the data transfer. The output lines of AND gates 168 and 170 are connected to the inputs of OR gate 172. Output line 180 of OR gate 172 is the address or data user check line. The address and data user status are stored in latch 160 and 162 from the time, memory sequence line becomes active until the ends of address and data transfer are detected. If latch 160 or 162 is reset during this period, and error status is reported on line 180. The memory interface control circuit 5 at the memory controller side will now be described in reference to figures 4A and 4B. Sequencer 200 is responsive to a request signal generated on line 222 by circuit 220 which receives and processes the signals on request 1 and request 2 lines 11 and 12 of interface 8 and to signals on lines 226, 228, 230 and 232 indicative of the type of memory operations requested by the user. Signals on lines 226, 228, 230 and 232 are generated by status latches 224 which are responsive to timing signals, to last operation line 30 and to byte select lines 24, as will be described later on in reference to the detailed description of status latches 224. Sequencer 200 generates timing signals on lines 201 to 218 and timing signals on memory timing bus 216. Memory timing signals are used by the memory controller to control the memory operations and will not be detailed any further. X1 is used to reset "Request 1 Latched" or "Request 2 Latched" depending of the selected user. Request 1 and 2 lines 11 and 12 are provided to circuit 220 which generates request 1 latched and request 2 latched signals on output lines 234 and 236. Timing signal X1 provided to AND gates 308 and 310 which are conditioned by address user 1 and address user 2 signals on lines 15 and 16, is used to reset latches 300 and 302 depending upon which user is selected. The request latched signals are provided to server counter 238 which is responsive to timing signal X4 on line 204 to generate user 1 selected signal on line 240 or user 2 selected signal on line 242. Only one of these lines is active at the same time, and it is assumed that user 1 selected line 240 is activated when request lines are not activated. Thus, address user generation circuit 244 which is responsive to the timing signals X2, X3 on lines 202 and 203 and to the signal on user 2 selected line 242, generates the address user 1 indicator signal on line 15 and address user 2 indicator signal on line 16. Data user generation circuit 246 which is responsive to the last operation signal on line 30, to the user 1 and user 2 selected signals on lines 240 and 242 and to timing signals X8, X9 on lines 208 and 209 generates the data user 1 indicator signal on line 17 and the data user 2 indicator signal on line 18. Address clock generation circuit 248 provides the address clock signal on line 26 in response to timing signals X10 and X11 on lines 210 and 211. Data clock generation circuit 250 is responsive to timing signal X5 and X6 on lines 205 and 206 to generate the data clock signal on line 28. It also provides delayed timing signals on line 252, which are provided to data user generation circuit 246, since the data user indicator signals are generated at different times depending upon a read or write operation is performed, as will be described later on in reference to the detailed description of circuit 246. Data clock generation circuit 250 also provides control signals on lines 254 and 256 which are provided to the data path circuit 258. Address path circuit 260 provides the address from bus 20 to the memory controller. As will be described later on, in connection with the detailed description of circuit 260, circuit 260 comprises a current address register and a back up address register, and circuit 260 is responsive to an error signal generated on line 262 by the status latches and to the write loop signal on line 232 to provide either the address contained in the current register or the address contained in the back up register to the memory controller. Address path circuit 260 provides the address to memory 6 through bus 261 and data path circuit 258 provides or receives the data to/from the memory through bus 259. Address path circuit 260 and data path circuit 258 generates address and data parity error signals on lines 263 and 265. Error control circuit RAS 264 is responsive to the error signals on lines 263, 265, to address clock signal on line 26, to address user 1 and 2 indicator signals on lines 15 and 16 and to last operation signal on line 30 to generate an error signal on line 266. Processing and reset of requests circuit 220 is shown in figure 5. It comprises two latches 300 and 302. The set inputs of these latches are connected to lines 11 and 12 respectively. The reset inputs of these latches are connected to the output lines 304 and 306 of AND gates 308 and 310 respectively. The input lines of AND gates 308 are address user line 15 and timing line 201 and the input lines of AND gates 310 are address user line 16 and timing line 201. Thus, once one of the address user lines 15 or 16 becomes active the corresponding latch 300 or 302 is reset at time X1. The latch may then be set when the request line 11 or 12 is activated. The Q-output line 234 or 236 provides the request 1 or request 2 latched signal. OR gate 312 has two input lines connected to the Q-output lines of latches 300 and 302 to provide the request signal on line 222 to sequencer 200. Status latch circuit 224 is shown in figure 6. It comprises three latches 320, 322 and 324. The configuration of bits on the byte select lines of bus 24 is provided to OR gate 326 which thus provides an up level signal on its output line 328 when at least one bit is at an up level (write mode) and a down level signal when the bits are at a down level (read mode). The three input lines of AND gate 330 are the last operation line 30, output line 328 of OR gate 326, and timing line 213. The output line 332 of AND gate 330 is provided to the set input of latch 320. The reset input of latch 320 is connected to timing line 214. Thus, if at time X13, latch 320 is set its Q-output signal on line 228 is active to indicate a single write operation. Otherwise its complementary Q-output line 226 is active to indicate a single read operation. The three input lines of AND gate 334 are the output line of inverter 336 which inverts the signal on last operation line 30, line 213 and output line 328 of OR gate 326. The output line 338 of AND gate 334 is provided to the set input of latch 322. The reset input of latch 322 is connected to timing line 214. Thus, if at time X14, latch 322 is set its Q-output signal on line 232 is active to indicate a write loop operation, until the last operation signal becomes active. Otherwise, its complementary Q-output line 230 is active to indicate a read loop operation signal until the last operation signal becomes active. Error signal on line 262 is provided by latch 324 and AND gate 340. AND gate 340 has two input lines, the first line is connected to error line 9 (see figure 1) and the second line is connected to X15 timing line 215. It provides an active signal which sets latch 324. The error signal on line 262 is generated on Q-output line of latch 324. Latch 324 is reset by X16 timing signal on line 216. Server counter is shown in figure 7. It comprises a D-latch 350, the data input of which is connected to the output line of OR gate 352, the clock input of which is connected to timing line 204. The Q and complementary Q output lines of latch 350 are the user 1 selected line 240 and user 2 selected line 242. The server counter is responsive to REQ1 latched input line 234 and REQ2 latched input line 236, so as to activate lines 240 and 242 according to the following truth table: which may be written: Q+ = Q .REQ1 + Q. REQ2 where Q+ is the state of the Q-output at any time as a function of the previous Q state. To perform this logic function, REQ1 latched line 234 is provided together with user 2 selected line 242 to the inputs of AND gate 354. REQ2 latched line 236 is inverted through inverter 356, and the output line of inverter together with user 1 selected line 240 are provided to the inputs of AND gate 358. The output lines of AND gates 354 and 358 are provided to the inputs of OR gate 352. Figure 8 shows the address user generation circuit 244. It comprises set/reset latch 362, the Q-output of which provides the address user 2 signal on line 16 and the complementary Q output line provides the address user 1 signal on line 15. The set input is connected to the output line of AND gate 364 and the reset input is connected to the output line of AND gate 366 AND gate 364 provides an active signal which sets latch 362 when REQ2 latched line 236 and user 2 selected line 242 are at an UP level at time X2. REQ2 latched line 236 is provided to inverter 368 and user 2 selected line is provided to inverter 370. The output lines of inverters 368 and 370 and line 203 are provided to the inputs of AND gate 366 which provides and active signal to reset latch 362 at time X3, when there is no active REQ2 latched signal and no active user 2 selected signal. Figure 9 shows the data user generation circuit 246. Data user 1 and data user 2 signals are generated on Q-output lines 17 and 18 of latches 380-1 and 380-2 respectively. The set input of latch 380-1 is connected to the output line 384-1 of AND gate 386-1 and the reset input is connected to output line 388-1 of AND gate 390-1. The first input of AND gate 386-1 is connected to line 240, so that AND gate 386-1 is conditioned when user 1 selected line 240 is active. The second input of AND gate 386-1 is connected to the output line of OR gate 392-1, the inputs of which are connected to line 252-3 (see figure 11) and to line 208, so as to control the set times of latch 380-1 which are different in read mode and in write mode, as indicated in figure 9. This result from the fact that the read data should be checked before being delivered to the user, and that is takes time to read a memory, on the contrary the data is present at the beginning of the write operation. The first input of AND gate 390-1 is connected to last operation line 30-L, so that AND gate 390-1 is conditioned when this line is activated. The second input of AND gate 390-1 is connected to the output line of OR gate 394-1, the inputs of which are connected to line 252-7 (see figure 11) and to line 208, so as to control the reset times of latch 380-1 which are different in read and write mode. Latched last operation signal on line 30-L is provided by D-Latch 392. The D-input of latch 392 is connected to last operation. Line 30 and the clock input of latch 392 is connected to the output of AND gate 394, the inputs of which are X17 timing line 217 and line 404 which is one of the output line of a free running clock 402, as shown in figure 10. The set and reset circuits for latch 380-2 are identical to the set and reset circuits of latch 380-1. The same reference numbers are used to designate the components of these circuits, with a suffix 1 or 2. Latch 380-2 is set when user 2 selected line 242 is active, so that the first input of latch 380-2 is connected to line 242. Figure 10 shows the address clock generation circuit 248. It comprises latch 400 the data input of which is connected to line 210 and the clock input of which is connected to free running clock circuit 402 which provides a C1-clock pulse streams on line 404 and a C2-clock pulse stream on line 405. C1 and C2 clock pulse stream are non overlapped clocked signals having the same frequency as shown in figure 10. Thus latch 400 provides an enable address clock signal on line 406 which is provided to one input of AND gate 408, the second input of which is C2 signal from line 405. Thus, AND gate 408 provides the address clock signal on its output line 26. Figure 11 shows the data clock generation circuit 250. It comprises a shift register made of eight latches 410-1 to 410-8. X5 timing line 205 is connected to the input of the first latch 410-1. Thus delayed signals are provided on lines 252-2, 252-3, 252-5 and 252-7 taken at the outputs of latches 410-2, 410-3, 410-5 and 410-7 respectively. The clock inputs of latches 410-1 to 410-8 are connected to line 404. X6 timing line 206 and SRDD 7 line 252-7 are connected to the inputs of OR gate 412, which provides an enable data clock signal on its output line 414 at times X6 for a write operation or at SRDD-7 for a read operation. Enable data clock signal on line 414 conditions AND gate 416 which gates the C2 clock signal as data clock signal on its output line 28. The signal at the output of latch 410-2 conditions AND gate 418 which thus gates the C2-clock pulse stream on read load latch line 254, which is provided to data path circuit 258. The signal at the output of latch 410-5 conditions AND gate 420 which gates the C2-clock pulse stream on correcting load latch line 256 which is provided to data path circuit 258. Figure 12 shows the address path circuit 260. It comprises current register 430 made of D-latches, only one latch is shown in the figure, but there are as many latches as there are lines in address bus 20. The D-input of each latch is connected to a line of the address bus. Back up register 432 is made of as many D-latches as register 430, the D-input of each D-latch of register 432 is connected to the Q-output of a D-latch of register 430 as schematically shown in figure 12. AND gate 434 is conditioned at time X17, to gate the C1-clock signal from line 404 to the clock inputs of latches comprising register 430. AND gate 436 is conditioned at time X18, to gate the C1-clock signal from line 404 to the clock inputs of latches comprising register 432. Selecting circuit made of AND and OR gates, provide either the content of current register 430 or the content of back up register 432 onto address to memory bus 261, under the control of the signal on the output line 440 of OR gate 442. The input lines of OR gate 442 are error line 262 and write loop line 232, when one of this line is active the back up register content is gated on address to memory bus 261, when they are inactive the content of the current register 430 is provided onto the address to memory bus 261. To do this the output signal from OR gate 442 is inverted in inverter 444, the output signal of which activates the selecting circuit accordingly. Thus when an error is detected, the memory operation may be resumed on the previous address. Parity checker circuit 446 checks the parity of the address contained in current register 430 and generates the address parity error on line 263. Data path circuit 258 is shown in figure 13. There are two different paths depending upon which memory operation is performed. The read and write paths are schematically shown. Read path comprises two registers 450 and 452 comprising as many D-latches as there are lines in memory bus 22. The data which are read from memory 6 are provided to the D-inputs of D-latches of register 450 and are loaded into this register under control of clock pulses from line 254. Then they are transferred to the D-inputs of latches of register 452 and are loaded into this register under control of clock pulses from line 256. This allows the correction of the data to be performed before they are loaded into register 452 and provided onto bus 22. The data to be written into the memory are loaded from bus 22 into register 454 which comprises as many D-latches as they are lines in bus 22. The bus lines are connected to the D-input of the latches, the clock inputs of which are connected to timing X12 line 212. The Q-output lines of latches comprising register 454 are connected to the data to memory bus 259. Parity checker 456 connected to bus 259 generates the data parity error signal on line 265. RAS circuit 264 is shown in figure 14. It comprises parallel counter 460 which counts the address clock signals from line 26 when address user 1 or address user 2 signals are active. So, lines 15 and 16 are connected to the inputs of OR gate 462, the output line of which is connected to the count input of counter 460. The reset input of counter 460 is connected to last operation line 30. The counter content is decoded through decode circuit 462, which provides an active signal on its output line when counter 460 reaches a count value equal to a threshold which is fixed according to the specific application of the present invention. This signal indicates an overflow error and is provided to error coding circuit 466 together with data parity error from line 265 and address parity error from line 263. Circuit 466 provides the error signal on line 266. The timing diagrams of the four memory operations, namely single read, read loop, single write and write loop operations are shown in figures 15 to 18.

Claims: Memory interface mechanism between a plurality of memory user devices and a memory controller controlling the read and write memory operations requested by the user devices, comprising address bus (20) and data bus (22) which are shared by the user devices and used by a user device selected to perform a memory operation to send the memory address to the memory controller and receive or send the data read from or to be written into the memory, characterized in that it comprises: one memory request line (11, 12) per user device which is activated by the user device when it requests an access to the memory for performing a memory read or write transfer, a last operation line (30) which is shared by the user devices and which is activated by one user device when its memory transfer is completed, at least one address user indicator line (15,16) per user device, at least one data user indicator line (17,18) per user device, at least one address clock line (26) which is shared by the user devices, at least one data clock line (28) which is shared by the user devices, memory interface control means (5) located in the memory controller which are responsive to the status of memory request lines to select the request of one user device, to activate the address user indicator line of said selected user device, firstly and the data user indicator line of said selected user device, secondly during time periods when the selected user device may use the address bus and data bus respectively and to send address and data clock pulse signals on the address and data clock lines, which time the transfer of the address on the address bus and of the data on the data bus, user interface control means (3-1, 3-2) located in each user device which activate the user request lines to control the memory operations through the address and data bus under control of the address and data clock pulse signals. Memory interface mechanism according to claim 1, characterized in that: each user interface control means comprises user request generating means (82,92) which are responsive to the non activated status of the address and data user indicator lines of the user device and to a start of transfer request from the user device to activate the user request line (11). Memory interface mechanism according to claim 1 or claim 2 characterized in that it comprises: at least one byte select read/write control line (24) write/read control means (52) located in each user interface control means which are responsive to the status of the address user indicator line to activate the read/write control line (24) so as to indicate to the memory controller that a read or write transfer is requested. Memory interface mechanism according to claim 1, 2 or 3 characterized in that the user interface control means comprises address generation and control means (46) which comprises: address counting means (50) which are loaded by the user device requesting a memory operation with the starting address pointing to the memory address where the first memory operation of the transfer is to be performed and which are responsive to the activated status of the address indicator line and to the address clock pulse signal, which causes the counter content to be decremented and sent onto the address bus at each address clock pulse, address transfer counting means (54) which are loaded by the user device requesting a memory operation with the count of memory operations which are needed to complete the transfer and which are responsive to the activated status of the address user indicator line and to the address clock pulse signal to generate an end of address transfer signal when all the addresses have been sent on the address bus, said signal being provided to the request generating means to inhibit the activation of the request line during the address transfer. Memory interface mechanism according to claim 4, characterized in that the user interface control means comprises data transfer control means (48) which are responsive to the activated status of the data user indicator line (17) and to the data clock pulse signal (28) to cause the user device to send or receive the data to/from the memory depending whether a write or read memory transfer is requested and for generating an end of data transfer signal (62) when all the data have been transferred between the memory and the user device, said signal being provided to the user request generating means (92) to inhibit the activation of the request line (11) during the data transfer. Memory interface mechanism according to claim 5 characterized in that the address and generation control means comprises: means (134) which are responsive to the address transfer counting means content to generate a last address transfer signal (58) when it remains only one address to be sent on the address bus, means (150,154,152,148) which are responsive to the last address transfer signal to activate the last operation line (30). Memory interface mechanism according to claim 6 characterized in that the user interface control means comprise checking means (158) which are responsive to the status of the address user indicator line (15), of the data user indicator line (17), of the end of address transfer line (56) and of the end of data transfer line (62) to generate an error signal (180) to the user device when the address user indicator line or data user indicator line becomes inactive before the end of address transfer line or end of data transfer line becomes active. Memory interface mechanism according to any one of claims 1 to 7 characterized in that the memory interface control means comprise: user request selecting means (220,238) having as many output lines as there are user devices and which are responsive to the status of the request lines (11,12) to activate one of the output lines to indicate which user request is selected to be serviced at a given instant, address user generation means (200,238,244) which are responsive to the status of the output lines of the user request selecting means to activate the address user indicator line (15,16) of the user device whose request is selected, data user generation means (200,238,246) which are responsive to the status of the output lines of the user request selecting means and to the last operation line (30) to activate the data user indicator line (17,18) of the user device whose request is selected. Memory interface mechanism according to claim 8 characterized in that it comprises address clock generating means (200,224,238,248) which are responsive to the status of the request lines, of the read/write control line and of the last operation line to send the address clock pulse signal (26) on the address clock line when at least one of the request lines is activated for the duration of the address transfer, so as to control the address bus use by the selected user device. Memory interface mechanism according to claim 9 characterized in that it comprises data clock generating means (200,224,238,250) which are responsive to the status of the request lines, of the read/write control line and of the last operation line to send the data clock pulse signal (28) on the address clock line when at least one of the request lines is activated for the duration of the data transfer, so as to control the data bus use by the selected user device.

Inventors: GLAISE, RENE, HARTMANN, YVES, HUON, PIERRE, PEYRONNENC, MICHEL, Glaise, René
Applicants: INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1987
Main classification: G06F13
IPC codes: G06F13