Data encoding using spare channels in a memory system
11494277 · 2022-11-08
Assignee
Inventors
Cpc classification
G06F13/4022
PHYSICS
G06F11/221
PHYSICS
Y02D10/00
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G06F13/28
PHYSICS
International classification
G06F11/20
PHYSICS
G06F11/10
PHYSICS
G06F11/22
PHYSICS
Abstract
Implementations of encoding techniques are disclosed. The encoding technique, such as a Data bus Inversion (DBI) technique, is implementable in a vertically-stacked memory module, but is riot limited thereto. The module can be a plurality of memory integrated circuits which are vertically stacked, and which communicate via a bus formed in one embodiment of channels comprising Through-Wafer Interconnects (TWIs), but again is not limited thereto. One such module includes spare channels that are normally used to reroute a data signal on the bus away from faulty data channels. In one disclosed technique, the status of a spare channel or channels is queried, and if one or more are unused, they can be used to carry a DBI bit, thus allowing at least a portion of the bus to be assessed in accordance with a DBI algorithm. Depending on the location and number of spare channels needed for rerouting, DBI can be apportioned across the bus in various manners. Implementations can also be used with other encoding techniques not comprising DBI.
Claims
1. A method comprising: controlling a switching assembly of a memory device, the switching assembly coupled to at least first and second memory channels, each memory channel including a respective plurality of data channels for a respective word of data and one or more additional channels including at least one data bit inversion (DBI) channel; and in response to determining that at least one of the data channels of the first memory channel is faulty, rerouting a data signal of the faulty data channel to a DBI channel, and assigning a DBI channel of the second memory channel to operate as a DBI channel for a double word including the respective words of the first and second memory channels.
2. The method of claim 1, wherein each memory channel comprises 16 respective data channels for the respective word of data.
3. The method of claim 1, wherein the state of the assigned DBI channel operates to identify an inversion state of the 32 data channels of the double word.
4. The method of claim 3, wherein the 32 data channels are coupled to adjacent portions of a memory bus.
5. The method of claim 1, further comprising: encoding data of a first word to be transmitted through the first memory channel; and encoding data of a second word to be transmitted through the second memory channel.
6. The method of claim 5, wherein the encoding is different for the first word than for the second word.
7. The method of claim 6, wherein the encoding of the first and second words is determined in response to a DBI Inversion algorithm.
8. The method of claim 6, wherein the first and second words are to be transmitted within a common time interval, and wherein the encoding of the second word is determined in response to the data of the first word.
9. A stacked memory device, comprising: a logic circuit comprising DBI encoding circuitry, data channel remapping circuitry, and test circuitry to test for continuity of individual data channels interconnecting the logic circuit and multiple stacked memory devices; multiple stacked memory devices stacked with the logic circuit, the logic circuit and the multiple stacked memory devices interconnected with one another by through wafer interconnects (TWIs), to communicate multiple data, address, and control signals through respective memory data channels from a bus to one or more of the stacked memory devices; wherein the data TWIs include further include additional data channels; and wherein the data channel remapping circuitry is operable to map one or more of the additional data channels to function as either, a replacement data channel in place of a faulty data channel, or a DBI indicator channel carrying a signal identifying whether data transmitted on a first group of data channels is inverted; wherein in response to a determination by the test circuitry that an individual data channel is faulty, the logic circuitry performs functions including rerouting a data signal of the faulty data channel to a DBI channel, and assigning a DBI channel of a second memory data channel to operate as a DBI channel for a double word including respective words of first and second memory data channels.
10. The stacked memory device of claim 9, wherein the first group of data channels is configured to carry a word of data.
11. The stacked memory device of claim 9, wherein the first group of data channels includes 16 data channels.
12. A stacked memory device, comprising: a logic circuit comprising DBI encoding circuitry and data channel remapping circuitry; multiple stacked memory devices stacked with the logic circuit, the logic circuit and the multiple stacked memory devices interconnected with one another by through wafer interconnects (TWIs), to communicate multiple data, address, and control signals through respective channels from a bus to one or more of the stacked memory devices; wherein the data TWIs include further include additional data channels; and wherein the data channel remapping circuitry is operable to map one or more of the additional data channels to function as either, a replacement data channel in place of a faulty data channel, or a DBI indicator channel carrying a signal identifying whether data transmitted on a first group of data channels is inverted; wherein a determination by the test circuitry that an individual data channel of the first group of data channels is defective, causes the channel mapping circuitry to remap an additional data channel from being a DBI indicator channel for the first group of data channels to a data channel replacing the defective data channel.
13. The stacked memory device of claim 12, wherein the channel mapping circuitry is further operable to remap a DBI indicator channel for a second group of data channels to serve as a DBI indicator channel for both the first and second groups of data channels.
14. The stacked memory device of claim 13, wherein the first and second groups of data channels are adjacent channels along the bus.
15. The stacked memory device of claim 12, wherein remapping an additional data channels from being a DBI indicator channel comprises disabling the defective data channel and re-mapping the defective data channel and subsequent data channels in the first group of data channels.
16. The stacked memory device of claim 12, wherein remapping an additional data channel from being a DBI indicator channel comprises disabling the DBI encoder for that additional data channel.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
DETAILED DESCRIPTION
(13) Implementations of encoding techniques are disclosed. The encoding technique, such as a Data bus inversion (DBI) technique, is implementable in a vertically-stacked memory module, but is not limited thereto. The module can be a plurality of memory integrated circuits which are vertically stacked, and which communicate via a bus formed in one embodiment of channels comprising Through-Wafer Interconnects (TWIs), but again is not limited thereto. One such module includes spare channels that are normally used to reroute a data signal on the bus away from faulty data channels. In one disclosed technique, the status of a spare channel or channels is queried, and if one or more are unused, they can be used to carry a DBI bit, thus allowing at least a portion of the bus to be assessed in accordance with a DBI algorithm. Depending on the location and number of spare channels needed for rerouting, DBI can be apportioned across the bus in various manners. Implementations can also be used with other encoding techniques not comprising DBI.
(14)
(15) The data channels DATA.sub.i transfer original data signals Di between the logic IC 14 and the RAM ICs 16.sub.x. Generally speaking, and ignoring the distinction between original data signals Di and encoded data signals Xi for the moment, each data signal Di is designated for connection to a particular data channel DATA.sub.i, although this correspondence can vary if rerouting is necessary as explained further below. Absent such rerouting, and assuming a write to the RAM ICs 16.sub.x is occurring, output data path circuitry in the logic IC 14 produces original data signals D0-D3 in parallel, which are then ultimately transferred to data channels DATA.sub.0-DATA.sub.3 respectively, and ultimately to the D0-D3 input data path circuitry in the RAM ICs 16.sub.x. A reading operation occurs similarly, but in the opposite direction.
(16) Also illustrated in
(17) Returning to
(18) The control channels CNTR.sub.0-CNTR.sub.Y may be time multiplexed such that they carry different control signals at different points in time. For example, the control channels may carry signals relevant to rerouting only upon initialization of the module 40′, or when it is otherwise warranted to make a continuity check of the TWI-based bus of data channels, which is discussed further below. The control channels CNTR.sub.0-CNTR.sub.Y may then carry memory-specific control signals (e.g., from system control circuit blocks 106 or 110) during periods of normal operation, for example.
(19) As just noted, the control channels CNTR.sub.0-CNTR.sub.Y may carry control signals relevant to rerouting around faulty data channels. Such control signals are generated at rerouting circuitry 58 in the logic IC 14, which generally functions during periods of initialization or testing to check for faulty data signals and to perform rerouting to an appropriate spare channel such as SPARE.sub.0. (The above-referenced patent applications discuss such operations further). In the example shown, rerouting circuitry 58 generates four switch control signals SW<3:0>, which are sent to the switching network 122 in the logic IC 14. As will be shown in further detail later, the switching network 122 then reroutes the data signal originally assigned to the faulty data channel onto the spare channel. Indication of these switch control signals SW<3:0> are also sent via the control channels CNTR.sub.0-CNTR.sub.Y to the rerouting/DBI slave circuitry 108 in the RAM ICs 16.sub.x, where they are stored and used to generate matching control signals SW<3:0> to control matching switching networks 122 in the RAM ICs 16.sub.x. The switch control signals can be transported across the control channels CNTR.sub.0-CNTR.sub.Y along one channel, many channels, in serial or parallel, in an encoded fashion, or in any appropriate fashion.
(20)
(21)
(22) In the event that the spare channel, SPARE.sub.0, is not used for rerouting, it may be used for DBI in accordance with embodiments of the disclosed technique, as shown in
(23) Regardless of the DBI algorithm employed in DBI codec 120, the algorithm assesses the original data signals D0-D3 and decides whether to invert all or part of those signals. If the DBI algorithm's assessment reveals a benefit to inverting all or a portion of the original data signals D0-D3, then all or a portion of those data signals are inverted to produce encoded data signals X0-X3, and a DBI bit, DB10, is issued. if the algorithm decides that there is no benefit to inversion, then the original data signals D0-D3 are simply passed as signals X0-X3 without inversion, and the DBI bit is not asserted for that data set.
(24) Whether DBI can be enabled is determined by DBI control circuitry 104. DBI control circuitry 104 essentially determines whether the spare channel, SPARE.sub.0, is being used because it is needed for rerouting. If SPARE.sub.0 is not being used, DBI control circuitry 104 will enable the DBI codec 120 to apply the DBI algorithm to the original data signals D0-D3 to produce encoded data signals X0-X3 which are forwarded to data channels DATA.sub.0-DATA.sub.3, and to provide the DBI bit to SPARE.sub.0. If SPARE.sub.0 is being used because it is necessary to reroute one of the data signals away from a faulty data channel, DBI control circuitry 104 disables the DBI codec 120 such that the original data signals D0-D3 merely flow through the DBI codec without analysis and without generation of the DBI bit. The switching network 122 then reroutes the data signal affected by the reroute to SPARE.sub.0, and the other data signals pass to their respective data channels DATA.sub.0-DATA.sub.3 as discussed previously.
(25) To do this, the DBI control circuitry 104 receives an indication of the spare channel status from the rerouting circuitry 58 in the logic IC 14. Specifically, the rerouting circuitry 58 contains spare channel status circuitry 102, which comprises a means for storing an indication of the status of the spare channel. In one simple embodiment, spare channel status circuitry 102 can comprise a four-bit storage register for the switch control signals SW<3:0>, which values are then sent to the DBI control circuitry 104. The DBI control circuitry 104 then analyzes the switch control signals SW<3:0> to determine whether the spare channel is being used for rerouting or not, and whether the. DBI codec 120 can be enabled.
(26) One simple implementation of the DBI control circuitry 104 is shown in
(27) Should none of the switch control signals be asserted (i.e., SW<3:0>=0), meaning that rerouting of data is not necessary, then the NOR gate of DBI control circuitry 104 outputs a 1 as the DBI enable signal, DBI_en. This enables the DBI codec 120 to apply its algorithm to the original data signals D0-D3, to produce encoded data signals X0-X3, and to generate a corresponding DBI bit, DBI0. Additionally, enabling the DBI enable signal enables pass gate 124, which allows the DBI bit, DBI0, to pass to the otherwise unused spare channel, SPARE.sub.0. At the same time, the failure to assert any of the switch control signals SW<3:0> causes the switching network 122 to pass the encoded data bits X0-X3 to their respective data channels DATA.sub.0-DATA.sub.3. Such routing is shown in dotted lines in
(28) In the technique as described thus far, the logic IC 14, via operation of rerouting circuitry 58 and DBI control 104, comprises the master controllers for rerouting and DBI enablement. The RAM ICs 16.sub.x, by contrast, contain mere corresponding slave controllers, i.e., rerouting/DBI slave circuitry 108. As mentioned earlier, the rerouting/DBI slave circuitry 108 can receive and store rerouting signals from the rerouting circuitry 58 in the logic IC 14 via control channel(s) CNTR.sub.0-CNTR.sub.Y. The DBI enable signal, DBI_en, can also be transmitted to the RAM ICs 16.sub.x by the control channel(s) CNTR.sub.0-CNTR.sub.Y, but it may be more convenient instead to merely generate the DBI enable signal at the RAM ICs 16.sub.x from the switch control signals stored at the slave circuitry 108. To summarize, rerouting/DBI slave circuitry 108 essentially mimics the operation of the rerouting circuitry 58 and DBI control circuitry 104 operable in the logic IC 14 so that the DBI codecs 120 and the switching networks 122 in both the logic IC 14 and the RAM ICs 16.sub.x can be controlled similarly.
(29)
(30) A larger bus with a plurality of spare channels increases the sophistication with which DBI algorithms can operate, assuming that at least one spare channel is not being used for rerouting. For example, and as shown in
(31) Apportioning the bus 15 in this manner for DBI purposes adds complexity, but can improve the benefits of DBI. This is because dividing the bus into groups of data signals, and applying DBI to each group independently and generating a DBI bit for each portion independently, reduces power consumption when compared to applying DBI to a larger, undivided bus (which undivided bus would only require one DBI bit). Applying DBI to an apportioned bus is addressed in the following references, which are submitted with the Information Disclosure Statement filed with this disclosure: U. Narayanan, “Enchanced Bus Invert Encodings for Low-Power,” IEEE, Circuits and Systems, vol. 5, pgs 25-28 (2002); Y. Shin, “Reduction of bus transitions with partial bus-invert coding,” Electronic Letters, vol. 34, no. 7 (Apr. 2, 1998); and M. Stan & W. Burleson, “Bus-Invert Coding for Low Power I/O,” pgs. 1-20 (1999).
(32) DBI can also operate to assess portions of the bus 15 larger than a byte. For example, the DBI codec 120 can be enabled to apply DBI to a group comprising a word's worth of data, i.e., 16 bits. This can occur by providing two different DBI enable signals to the DBI codec 120: DBI_en<T>, which enables the DBI codec 120 to apply its algorithm to the top word of data, i.e., to the data signals presented to data channels DATA.sub.0-15; and DBI_en<B>, which similarly enables the DBI codec 120 to apply DBI to the bottom word of data to be presented to DATA.sub.16-31. Apportioning the bus in this manner requires two DBI bits, DBI_T and DBI_B, to be carried on the spare channels.
(33) Finally, DBI can also operate on the entire double word of data, i.e., a single group of all 32 data signals. The DBI codec 120 can be enabled to do so via signal DBI_en<W>, which assesses DBI based on the whole of the data channels. If DBI is applied to the entire bus, only one DBI bit, DBI_W, would be required, which could be carried on any free spare channel.
(34) The ability to apply DBI at these various levels of bus apportionment improves the flexibility with which DBI can be applied to the data bus 15. However, since the DBI bit or bits are sent over the spare channels, the options for applying DBI will be constrained depending on which spare channels are needed for rerouting. The DBI control circuitry 104 therefore, after consideration of the status of the switch control signals to understand where rerouting is occurring along the bus 15, should issue appropriate DBI enable signals to apportion the bus for DBI purposes without inhibiting rerouting. Various conditions illustrating such options are shown in
(35)
(36) In the option of column B, DBI can be apportioned to the top and bottom words of data. This requires the use of enable signals DBI_en<T> and DBI_en<B>, and the generation of two DBI bits: DBI_T associated with the top word of encoded data signals X0-X15; and DBI_B associated with X16-31. Here, DBI_T can be sent on spare channel SPARE.sub.1 (or SPARE.sub.0) and DBI_B can be sent on spare channel SPARE.sub.3 (or SPARE.sub.2), with the other spare channels remaining unused.
(37) In the option of column C, the bus is not apportioned, and DBI is applied to all 32 data signals, requiring the use of enable signal DBI_en<W> and the generation of only a single DBI bit, DBI_W, which can be sent on any of the spare channels, but which is shown in
(38)
(39) All other options B, C, and D of
(40) In option C, DBI is performed on a word basis. This requires issuing enable signals DBI_en<T> and DBI_en<B>, which enables the codec 120 to produced encoded data signals X0-X15 and X16-X31, and their associated DBI bits, DBI_T and DBI_B, respectively. As with option B, the faulty encoded data signal continues to be carried by SPARE.sub.0, with the other spare in the word, SPARE.sub.1, carrying DBI_T. On the bottom word, the DBI bit, DBI_B, is sent to one of the bottom word spare channels (e.g, SPARE.sub.3) and the other spare channel (SPARE.sub.2) is unused. Option C thus differs from option B in that the DBI apportionment is applied to equally-sized portions of the data bus, i.e., two words, instead of one word and two bytes.
(41) In option D, DBI is applied to all 32 bits, similar to what occurred in option C of
(42)
(43) Scenario III′, in which both errors occur in the same word, is essentially the same as Scenario III just discussed. However, in option B, where DBI assessment occurs on a word basis, there is no spare channel in the top byte to carry the DBI bit for the top byte (i.e., DBI_T). Therefore, in this scenario, DBI_T bit is routed to the available spare channel in the bottom word (i.e., SPARE.sub.2). Although this generally violates the preference to keep a particular DBI bit in proximity to its associated data, it requires no particular technical challenge to so reroute the DBI bit.
(44)
(45)
(46) Circuitry for implementing the various conditions illustrated in
(47) The switching network 122 will likewise be implementation specific and will depend on the DBI options chosen. When applied to a more complex bus such as that shown in
(48) Although conceived of in the context of a vertically stacked memory module, it should be noted that the inventive concepts disclosed herein are not necessarily limited to that environment.
(49) Any of these DBI algorithms mentioned above, or other data encoding algorithms more generally, can be used in the context of the disclosed embodiments of the invention. Additionally, other embodiments of the invention would not necessarily require operation of a data bus inversion algorithm. Instead, the codecs 120 could comprise other types of encoders and decoders (e.g., error detection, or error correction), and the DBI bit could more generally comprise an encoding indicator bit or bits (e.g., an error detection bit, or an error correction bit) consistent with the particular decoder. Thus, previously-existing or future-developed encoding/decoding schemes will also benefits from the disclosed techniques.
(50) While some implementations have been disclosed, it should be understood that the disclosed circuitry can be achieved in many different ways to the same useful ends as described herein. In short, it should be understood that the inventive concepts disclosed herein are capable of many modifications. To the extent such modifications fall within the scope of the appended claims and their equivalents, they are intended to be covered by this patent.