Memory cell
This is a continuation of application Ser. No. 463,895 filed on Apr. 25, 1974, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to digital computer memories. More specifically, the present invention is directed to a digital computer memory having a plurality of digital data output paths. 
     2. Description of the Prior Art 
     All digital computer architectures are based around an array of data storage registers and an arithmetic logic unit (ALU). Data handling operations are performed by accessing data from the storage registers, supplying this data to the ALU where a predetermined operation is performed on the data by a central processing unit (CPU) and writing the resultant modified data back into one of the registers. In the prior art, these arrays of data registers have been implemented by individual flip-flops, small &#34;scratch pad&#34; memories, random access memories, etc. A conventional memory array used as a data storage register storage slows down the operation of the central processing unit (CPU) because, while the CPU can only access one internal location in the memory array at a time, most CPU operations such as addition, subtraction, etc. require two pieces of data for their execution. This type of operation then requires two internal memory operation time intervals in retrieve the two pieces of stored data, or operands. Similarly, during the &#34;write&#34; operation to store the result of the CPU operation, an internal memory time interval is required for the memory array to function as a data storage register. 
      SUMMARY OF THE INVENTION 
     The present invention is directed to a technique for implementing the memory register array as a multiple-port, or multiple output line, memory. Using this technique, two operands, or memory locations, can be read, or accessed, at the same time with each one being specified by a separate address. This operation is effective to supply both pieces of stored data to the ALU at the same time and to eliminate the data holding registers at the ALU. Further, it reduces the use of CPU internal memory time by one time interval. The &#34;write&#34; operation is performed in the next internal memory time interval at the locations specificed by the address in one or the other of the two address registers. A further embodiment of the present invention enables two operands to be read and one operand written during the same internal memory time interval by providing three addresses and three separate decoders, i.e., two decoders for &#34;read&#34; operations and one for &#34;write&#34; operations. During any one state time, the &#34;read&#34; operations occur near the beginning of the memory time interval and the &#34;write&#34; operation occurs near the end of the memory internal time interval after the ALU has performed its operations on the data and delivered the resulting data to the memory for storage in the memory array. This embodiment even allows writing resultant data back into one of the memory locations that was originally read out to supply one of the operands. The overall timing advantage of this technique provides a three to one improvement in CPU data throughout because it requires only one internal memory state time as opposed to three internal memory state times in the conventional memory array. Further, it provides, by the inclusion of three decoders and corresponding addresses, the complete freedom to access any memory locations and to write into any memory location without any timing restrictions. 
     An object of the present invention is to provide a memory array having a multiple-port configuration for providing multiple access to the memory operation. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A better understanding of the present invention may be had when the following detailed description is read in connection with the accompanying drawings, in which 
     FIG. 1 is a block diagram of a memory array and ALU combination embodying the present invention; 
     FIG. 2 is a schematic illustration of a memory cell suitable for use with the memory array shown in FIG. 1, and 
     FIG. 3 is a further modification of a memory array, also embodying the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Detailed Description 
     Referring to FIG. 1 in more detail, there is shown a register 2 using a multiport static memory array for its implementation with two read-out ports, or output lines, 4 and 6 connected to an ALU 7. Each output port 4 and 6 is controlled by a corresponding one of a pair of address registers 8 and 10. A &#34;write&#34; port 12 is controlled by its own address register 14 separate from the &#34;read&#34; registers 8 and 10. The &#34;read&#34; registers 8 and 10 can provide &#34;read&#34; operations wherein two different or similar operands may be supplied from the register 2 during the same memory time interval and a &#34;write&#34; operation is performed in the next memory time interval. Each of these operations can be performed with respect to any location within the register 2. 
     Specifically, the &#34;read&#34; address registers 8 and 10 within the CPU are supplied with a memory address for the desired operands by any suitable means (not shown), such devices being wellknown in the art. These addresses are decoded within the memory register 2 and used to select a pair or operands stored in the memory register 2 either from the same or different memory register locations, as discussed more fully hereinafter. The operands read out from the memory register 2 are applied to the ALU 7 for execution of a desired operation thereon. An output signal from the ALU 7 representing the resultant of the aforesaid operation is applied to the storage register 2 on a Data In line and is stored in a desired memory location under control of a write address register 14 which is, in turn, supplied with a memory location address by any suitable well-known means (not shown). This technique can be extended to a storage register for providing more than two output ports for each stored data bit and to a storage register having a plurality of ALU&#39;s with multiport connections controlled by a plurality of respective CPU read registers and a plurality of write address registers. Such a multiple operation would allow many more operations to be performed on a given set of data in the storage register by allowing a plurality of parallel or simultaneous data accesses. 
     In FIG. 2, there is shown a single memory cell for use in the register 2 of FIG. 1. This implementation is suitable for integration on an integrated circuit chip to form a register array of a plurality of memory cells, or storage locations, while providing the aforesaid multiple-port capability. Each such memory cell provides for multiple access &#34;read&#34; operations by separate &#34;read&#34; decoders 20, 22 while the &#34;write&#34;  operation is controlled by a third decoder. The basic storage operation is performed by a data capacitor 26 being either charged or discharged to store a logic 1 or 0, respectively. The &#34;read&#34; decoders 20 and 22 are connected to the gate electrodes of corresponding ones of a pair of &#34;read&#34; devices which are shown as field-effect transistors (FET&#39;s) 28 and 30. Specifically, the output of the first &#34;read&#34; decoder 20 is connected to the gate electrode of a first FET 28 while the output of the second &#34;read&#34; decoder 22 is connected to the second FET 30. An output of the first FET 28 is connected to a first data output line No. 1 while an output of the second FET 30 is connected to a second data output line No. 2. An input line of each of the first and second FET&#39;s 28 and 30 is connected to the output of a storage device which is a third FET 32. A control, or gate, electrode of the third FET 32 is connected to one side of the data capacitor 26. The other side of the data capacitor 26 and the input of the third FET 32 are connected to an energizing signal source Vss. A Data In line 34 is connected to an input of a fourth FET 36 while the output of the fourth FET 36 is connected to same side of the data capacitor 26 as the control electrode of the third FET 32. The control electrode of the fourth FET 36 is connected to the output of the third decoder 24. The decoders 20, 22 and 24 are provided with input terminals 38, 40 and 44, respectively, for connection to the address registers 8, 10 and 14, previously discussed with reference to FIG. 1, respectively. A &#34;start&#34; input terminal is also provided on the decoders 20, 22 and 24 for connection to a source of a &#34;start&#34;, or synchronizing signal, to synchronize the operation of the decoders 20, 22 and 24 with a digital computer clock signal. 
     MODE OF OPERATION 
     As previously mentioned, the data capacitor 26 is used to store either a 1 or a 0 representing either a charged state or a discharged state, respectively. If the capacitor 26 is charged, the storage device 32 will be turned &#34;on&#34;, and the output lines No. 1 and No. 2 will be connected by a low impedance path through the FET&#39;s 28, 30 and 32 to a source of energizing voltage Vss. If the storage capacitor 26 is discharged, the storage device 32 will be turned &#34;off&#34; and the output lines No. 1 and No. 2 will not be connected by a low impedance path to the source Vss. Conversely, &#34;write&#34; operations are performed by turning on the write device, i.e., FET 36, by the decoder 24 to connect the data input line 34 to the data storage capacitor 26 to store a charge for 1 and to effect a lack of a charge for a 0. By operating the &#34;read&#34; devices 28 and 30 at a different time from the &#34;write&#34; device 36 the storage register is operated in a manner to allow complete flexibility in &#34;read&#34; and &#34;write&#34; operations. 
     In FIG. 3, there is shown another embodiment of the present invention using a memory storage register having a plurality of storage elements, e.g., flip-flop data storage element 50, which are each accessed for a data read-out operation by two separate &#34;read&#34; decoders 52, and 54 and for a &#34;write&#34; operation for storing data in the storage device 50 by a third decoder 56. In this system, two operands can be read and one operand written into a memory register during the same memory operation interval time. This is achieved by using three memory addresses and three separate decoders, i.e., two addresses for &#34;read&#34; operations and one address for a &#34;write&#34; operation. During a memory operation interval time, the &#34;read&#34; operations occur during the beginning portion of the memory time interval and the &#34;write&#34; operation occurs during the end portion of the time interval, after the ALU has performed its data handling operations. This technique even allows writing a result back into one of the memory register locations that was originally read out as one of the operands. 
     A first data bus A is connected to the memory storage elements as hereinafter described and is connected at one end to the inputs of a pair of data amplifiers 58 and 60 with one of the amplifiers being a logical inverter. A second data bus B is similarly connected to the memory storage elements and to the input of an amplifier 62 and a logical inverter 64. The first pair of amplifiers 58 and 60 are connected to respective output terminals to form a data output A. The second pair of amplifiers 62 and 64 are connected to respective output terminals to form a second data output B. 
     Referring to the typical storage element shown in FIG. 3, one side of the flip-flop storage element 50, i.e., Q output, is connected through a first FET 66 to the bus A while the other side of the flip-flop 50, i.e., Q output, is connected through a second FET 68 to the bus B. The control electrode for the first FET 66 is connected to a first control line 70 while the control electrode for the second FET 68 is connected to a second control line 72. The first control line 70 is connected by a first ORgate 71 to the output of the first decoder 52 and the output of the third decoder 56. The second control line 72 is connected by a second ORgate 73 to the output of the second decoder 54 and the third decoder 56. Thus, the output of the first decoder 52 is used to control the first FET 66 to supply a stored data signal from the flip-flop 50 to the bus A. Similarly, the output of the second decoder 54 is arranged to control the second read-out FET 68 to supply a stored data signal from the other side of the flip-flop 50 to the bus B. Since each of the read-out devices 66, 68 are controlled by a separate decoder, the busses A and B can have output signals from different ones of the plurality of flip-flop storage elements used in the memory register, i.e., the bus A can supply signals from one side of the storage elements selected by the decoder A while the bus B can supply output signals from the other side of the same or different storage elements selected by the second decoder 54. The logical inverters 60 and 64 connected to the data output terminals A and B are used to harmonize the logical level of the output signals derived from the flip-flop 50, e.g., when output signals are derived from opposite sides of the same storage element. 
     A data input terminal 75 which is used for a &#34;write&#34; operation is connected to the input of a third FET 74 and through a logical inverter 76 to the input of a fourth FET 78. The output of the third FET 74 is connected to the second bus B while the output of the fourth FET 76 is connected to the first bus A to enable the input data signal supplied to the data input terminal 75 to be written into either side of the memory storage element 50. The control electrodes of the third and fourth FET&#39;s 74 and 76 are concurrently energized by a &#34;write&#34; signal from a write input terminal 80. In order to force the data input signal into the memory cell, the first and second FET&#39;s 66 and 68 are concurrently energized by an output signal from the &#34;write&#34; decoder 56 which is connected to the control line 70 and 72 through the first and second ORgates 71, 73. This data &#34;write&#34; operation causes the memory cell 50 to assume the state of the new data information being supplied to the data input terminal 75. The &#34;write&#34; decoder 56 is disabled during &#34;read&#34; operations whereby the connection thereof to the control lines 70 and 72 has no effect on the &#34;read&#34; operation. Conversely, during a &#34;write&#34; operation, the &#34;read&#34; decoders 52 and 54 are disabled, and the &#34;write&#34; decoder 56 concurrently drives the first and second FET&#39;s 66 and 68. The net result is that two independent operands can be read out of the memory register array while data can be written into the same or any other locations in the data register array in the same memory operation interval time. 
     Accordingly, it may be seen that there has been provided, in accordance with the present invention, a memory array having a multiple port configuration for providing multiple access to the memory array during one cycle of memory operation.