Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Arguments
Applicant's arguments filed 03/05/2026 have been fully considered but they are not persuasive.
[P7] The applicant argues that the previous Office Action nor Wang discloses a way in which Seol could be modified, based on the disclosures of Wang, to "send the first data mask to the memory device", whether the "first data mask" is "calculated" based on "data yet to be sent". After careful consideration of the applicant’s arguments the examiner respectfully disagrees.
The arguments fail to properly explain how the claim limitations are not taught by the prior art other than saying they do not. The arguments provide a general overview of the prior art but fail to address how each argued limitation is not taught by the prior art as a whole. There are no specific examples or explanation detailing how the prior art is different from the current claim limitations. Applicant's arguments fail to comply with 37 CFR 1.111(b) because they amount to a general allegation that the claims define a patentable invention without specifically pointing out how the language of the claims patentably distinguishes them from the references. The rejections contain citations and explanations detailing how the prior art teaches the current claim limitations.
[P8] The applicant argues modifying Seol with Wang to use cluster centers as masks would result in the cluster centers not being sent as required by the claims. After careful consideration of the applicant’s arguments the examiner respectfully disagrees.
There is no recitation in Wang that specifically prevents the cluster centers from being sent to where they are used. Seol discloses sending data masks. The use of the data mask shows the data mask is generated or created based on some process to be sent. Wang discloses the learning center can be based on prior knowledge and cluster centers are updated using the same the same steps. The combination shows using cluster centers as a data mask, sending the cluster center to the memory device to be used as a data mask, and the ability to update multiple cluster centers in different locations to be synchronized by using the same steps to update the cluster centers.
Claim Rejections - 35 USC § 103
The text of those sections of Title 35, U.S. Code not included in this action can be found in a prior Office action.
Claim(s) 1-6, 13-16 and 19-24 is/are rejected under 35 U.S.C. 103 as being unpatentable over Seol’s “Energy Efficient Data Encoding in DRAM channels Exploiting Data Value Similarity” in view of Li US 2009/0193159 and Wang’s “Reducing Data Movement Energy via Online Data Clustering and Encoding.”
[CLM 1]
1. An integrated circuit (IC) comprising:
a bus interface configured to be coupled to a memory bus; and
a memory controller coupled to the bus interface and configured to:
Integrated circuit, e.g. circuitry to implement the memory system [Fig. 2]) comprising “DRAM” and “Memory controller” each comprising a BD-coder [Figs. 6-8] and coupled to a bus interface (e.g., a SerDes circuit implementing an I/O interface [Seol, P720, “DRAM Data Bus Structure”][Seol, Fig. 4]) coupled to a “data bus” for encoding and decoding data communicated over the data bus [Seol, P722, C1-2; Figs. 6-7; Table 1].
Both the memory controller and the DRAM contain a BD-coder for encoding outgoing data and decoding incoming data, where the memory controller serves as a data transmitter for writes and a data receiver for reads, and the memory device serves as a data receiver for writes and a data transmitter for reads (see bidirectional data flow resulting from reads and writes [Fig. 2]).
calculate a first data mask; and
send the first data mask to the memory device through the bus interface, wherein the first data mask comprise respective patterns to be used in decoding encoded data sent to the memory device.
“Transfer the current data through data bus. Index data bus retains default value. Store the current data in the table.” [Seol, Table 1].
Seol discloses, when transmitting data without an encoding, storing the data to be used as a data mask in both the transmitter and receiver tables. For subsequent data transmissions, this data mask may be used to encode and decode data to be sent on the data bus by use of XOR. This is the process of creating the data mask that is sent [Seol, P724, “Overall Operation”].
The data mask is part of the set of data masks at the transmitter. As part of transmitter side processing, the current value is stored into the table when no similar data is found [Seol, P724, “Overall Operation”]. The current data is then sent to the receiver side to be stored in the respective BD-coder table as a new data mask. The receiver may correspond to a memory device (e.g., DRAM [Seol, Figs. 2, 7] and [Seol, P722]).
In summary, Seol discloses a system of encoding and decoding data to be transmitted over a data bus [Figs. 4, 6; Table 1], including:
Providing value tables for interfaces at a memory controller and memory device connected to a common data bus for implementing encoding and decoding functionality
Calculating an XOR masks using a defined process based on checking for similar data
Storing XOR masks as entries in both tables for performing encoding and decoding
Transmitting a table index to identify which XOR mask decodes corresponding transmitted data on the bus
Determining one or more data masks to store in the value table using observed data
Seol is silent to calculate a first data mask associated with patterns in data yet to be sent to a memory device based on considering transactions in a queue of data to be sent. Seol discloses populating the mask table using observed data but does not discuss calculating a predetermined or default data masks, e.g. based on known tendencies, probabilities or patterns, based on considering transactions in a queue to be sent.
Specifically, Seol discloses a step of evaluating, based on the input data to be transmitted, the most similar data having less hamming weight than the current (input data) [Table 1]. The controller selects a mask from the data table based on identifying the most similar data by transmitting the table index to the receiver with the encoded data. However, Seol is silent to considering transactions in a queue of data to be sent or calculating the data masks to be stored in the tables.
Where Seol is silent, Li US 2009/0193159 teaches to calculate a data mask associated with patterns in data yet to be sent to a memory device based on considering transactions in a queue of data to be sent.
Li discloses a computing system employing encoding in data transmission. The purpose of encoding is to reduce power consumed in transmission. Outgoing data is stored in an original-data buffer before it is encoded [0042-0043]. The contents of the original data buffer may belong to one or more bursts (transactions) [0044]. Hence, Li establishes prior practice of buffering outgoing data using a data buffer prior to transmission.
Where Li is silent, Wang teaches calculating one or more data masks associated with patterns in data yet to be sent to a memory device based on a set of data to be transmitted.
The use of cluster centers allows for finding a set of data masks which are more representative of the data transmissions, thereby reducing the number of table entries needed to cover the observed data transmissions and allowing a smaller table to be used. Wang, for examples, gives the example history 1110, 1101, and 1011, which in a table of recent values occupies three entries. In contrast, a cluster center may be identified (1111) which captures and is representative of each of these three observed values, thereby requiring only one table entry. In contrast, use of recent data values for the table would require either (1) three table entries would have been required or (2) adopting one of the observed values, each of which has a Hamming distance greater than 1 with at least one of the other observed values, and therefore is less optimal than the identified cluster center 1111 which is equidistant to all three observed values [Wang, P1].
In addition, energy consumption is improved using the clustering technique when compared with past approaches using frequent or recent data values [Wang, P1-2].
Accordingly, it would have been obvious to the skilled artisan before the effective filing date of the claimed invention to apply Wang’s techniques for generating and updating data masks based on cluster analysis of observed data to the memory controller and memory device of the combination in order to further improve power consumption, reduce the size of the table required, adapt the data masks to changing data patterns, and/or increase the range of values used as data masks used for encoding and decoding.
Hence, Wang discloses an alternative method of determining the data masks to be XORed with the transmission data – calculating data clusters based on a plurality of data transmissions indicative of data that will be transmitted in the future. Wang’s exemplary embodiment uses both recently seen data transmissions and older data transmissions as indicators of future transmission data to calculate one or more data centers which will minimize power consumption.
In summary, the prior art further contains a system containing circuitry for encoding and transmitting data over a bus with reduced bus power. The prior art further contains a technique which can be applied to a set of data transactions indicative of data to be transmitted in the future to generate a data mask for use in reducing bus power. The prior art also contains a buffer which contains a set of data transactions which will be transmitted in the future, where the data transactions will be encoded before output.
The prior art teaches each and every feature claimed.
Seol disclosed the use of data bus inversion techniques to reduce transmission power. The method employs value tables at both the transmitter and receiver to store data masks. Outgoing data is compared with the data masks in the value table to identify the most similar data mask. The most similar data mask is XORed with the outgoing data to produce encoded data. The encoded data and the index value of the identified data mask are transmitted to the receiver, and the data is decoded using the corresponding copy of the data mask stored at the same index in the table in the receiver.
Li established that data to be transmitted over a bus may first be stored in a buffer. The function of a buffer is known (storing and providing data), and the method of combining the buffer with an encoder is also shown [Fig. 2]. Therefore, the disclosed elements were combinable according to known methods to yield a predictable result – buffering of one or more data bursts prior to applying data encoding to outgoing data.
Wang disclosed an improved method for calculating data masks to be used in data bus inversion encoding. The technique is applicable to a set of data transmissions indicative of future data transmissions to generate data centers to be used as data masks for an XOR-based encoder. The data centers are applicable at runtime to determine the optimal encoding for the expected data patterns to be transmitted [Wang, P4-5]. The buffered data in the buffer of Li constitutes a set of data transmissions which are to be encoded using data masks and are indicative of future data transmissions. The data centers produced by Wang’s techniques are usable as data masks in the system of Seol, as they are used to perform the same function – encoding data to be transmitted over a bus to reduce bus power consumption.
The prior art elements were combinable according to known methods – e.g. by coupling the buffer of Li to the encoder for the transmitter of Seol to provide data for the encoder, and further applying Wang’s mechanism for calculating data centers for an available data set indicative of future data transmissions, such as the data stored in the outgoing data buffer of Li, in order to determine an optimal set of data masks to use for encoding that set of transmission data to achieve bus power reduction.
The results of the combination would have been predictable because each element performs the same function as it was disclosed for.
Accordingly, it would have been obvious to the skilled artisan before the effective filing date of the claimed invention to incorporate a data buffer as taught by Li to provide data to the encoding circuits of the transmitters of the memory controller and memory device of Seol, and further to substitute Wang’s data clustering techniques for the less flexible data masks disclosed by Seol, and the results of the combination would have been predictable – encoding data to reduce data bus transmission energy.
The resulting combination teaches determine one or more data masks associated with patterns in data yet to be sent to a memory device based on considering transactions in a queue of data to be sent because data input to the encoder is associated with transactions (bursts) in a queue of data to be sent (the original data buffer). For each burst, a determination is made to identify the most similar data, where the most similar data constitutes a data mask in the data table. The selected one or more data masks are associated with patterns in data yet to be sent to a memory device because they are associated with the data in the original data buffer. The data masks may be the product of applying data center calculation techniques on the outgoing data set, e.g. the contents of a data buffer.
As to the choice of what data set to use to generate the data centers, Wang’s exemplary embodiment uses historical information about a plurality of data transmissions that have been encountered before [Wang, P1, C2]. However, the disclosed technique for computing data centers is applicable to any data set which is indicative of future data patterns which will be encountered. Li’s outgoing data buffer for encoding data to be transmitted over the bus constitutes a data set which is indicative of future data patterns that will be transmitted. Accordingly, Wang’s technique is applicable to Li’s buffer containing a set of data units to be encoded to generate one or more data centers (data masks) which, if used for encoding data transmissions, reduces bus power consumption.
The results of the substitution would have been predictable because the both the data set of Wang and the data set of Li are structurally and functionally similar – both constitute data reflective of data patterns to be transmitted. Hence, the skilled artisan would have readily substituted Wang’s data with Li’s buffered data and obtained predictable results – one or more data encoding masks optimized for reducing bus power consumption when transmitting patterns similar to the base data set.
Accordingly, it would have been obvious to the skilled artisan before the effective filing date of the claimed invention to substitute Wang’s data set with the data set in the buffer of Li in order to produce data masks for transmitting the buffered data with reduced power, and the results of the combination would have been predictable.
[CLM 2]
2. The IC of claim 1, wherein the first data mask comprises values to be exclusive OR'd (XOR) with data to be sent to the memory device through the bus interface when the memory device decodes the encoded data.
The combination teaches claim 1, wherein the first data mask comprises values to be exclusive OR'd (XOR) with data to be sent to the memory device through the bus interface when the memory device decodes the encoded data (current data is encoded by XORing it with the most similar data mask stored in the transmitter table [Seol, P724, “Overall Operation”]). Hence, each of the recently transmitted data stored in the tables constitutes a data mask which is applied to current data in the XOR function to encode outgoing transmissions and decode incoming transmissions.
3. The IC of claim 2, wherein the memory controller is further configured to XOR outgoing data with the first data mask to encode the data to be sent to the memory device.
The combination teaches claim 2, wherein the memory controller is further configured to XOR outgoing data with the first data mask to encode the data to be sent to the memory device (current data is encoded by XORing it with the most similar data mask stored in the transmitter table [Seol, P724, “Overall Operation”]).
[CLM 4]
4. The IC of claim 3, wherein the memory controller is further configured to send the encoded data through the bus interface to the memory device.
The combination teaches claim 3, wherein the memory controller is further configured to send the encoded data through the bus interface to the memory device (current data is encoded at the memory controller using the BD-coder and transmitted through the data bus interface to the DRAM in encoded form [Seol, Figs. 4, 6-7]).
[CLM 5]
5. The IC of claim 1, wherein the memory controller is further configured to write the first data mask to a mode register in the memory device.
The combination teaches claim 1, wherein the memory controller is further configured to write the one or more data masks to a mode register in the memory device (storing incoming data in the value table of the DRAM memory device to configure the memory device to encode and/or decode data a specific way [Seol, Figs. 6-7]).
The specification does not provide a special definition of a mode register. A register may be construed as a device capable of retaining information. A mode register may be considered a device capable of retaining information as modified by the modifier “mode”. A “mode” or “configuration mode” may be construed as a register containing or handling configuration data. Data for configuring the memory device, such as data masks to be stored in the recent values tables of Seol to cause the memory device to encode or decode data in a specific way, may be considered configuration data.
Accordingly, Seol’s value table is considered to constitute a mode register.
[CLM 6]
6. The IC of claim 1, wherein the memory controller is further configured to send an identifier indicating the first data mask is used to encode data sent to the memory device.
The combination teaches claim 1, wherein the memory controller is further configured to send an identifier indicating which of the one or more data masks is used to encode data sent to the memory device (sending an index value identifying which data mask in the table was used to encode the transmitted data [Seol, Fig. 6][Seol, Table 1]).
[CLM 9]
9. The IC of claim 1, wherein the memory controller is further configured to calculate the first data mask comprising a cluster center based on a Hamming distance of bits in the data to be sent to the memory device to an existing cluster center.
The combination teaches claim 1. Wang further teaches wherein the memory controller is further configured to calculate a cluster center based on a Hamming distance of bits in the data to be sent to the memory device to existing cluster centers [Wang, P4], where the techniques are applied in the combination to a buffer of data to be encoded for transmission as described by Li.
and wherein the memory controller is further configured to calculate the first data mask comprising a cluster center based on a Hamming distance of bits in the data to be sent to the memory device to an existing cluster center (calculating the first data mask comprising a cluster center based on a learning process, where the cluster center are adjusted using newly observed data and are used as data mask [Wang, P5]).
“This paper proposes a new data encoding method based on online data clustering. In the proposed coding scheme, the transmitted data are dynamically grouped into different clusters based on their similarities, as shown in Figure 1. The similarity is evaluated based on the Hamming distance (i.e., the number of bit positions that differ) between two data blocks. Each cluster has a center with a bit pattern close to those of the data blocks that belong to that cluster.” [Wang, P1, C2].
Hence, selection of the cluster center is based on the Hamming distance between the new data and the observed data. The cluster center is based on majority voting based on the observed data values belonging to the same cluster. The existing cluster centers may then be adapted based on the learning process based on observed data [Wang, P5].
Hence, Wang discloses a supplemental method of selecting or adapting data masks by performing online data clustering. The use of cluster centers based on previously encountered data patterns allows for more flexible configuration of data masks because they do not need to have been previously observed – hence, a broader range of values for data masks may be learned and used [Wang, P1].
[CLM 10]
10. The IC of claim 9, wherein the memory controller is further configured to calculate the cluster center periodically.
The combination teaches claim 9, wherein the memory controller is further configured to calculate the cluster centers periodically (“sampling on top of the basic center update procedure to reduce the energy overheads. Fixed interval sampling is employed to keep the learning process simple…the counters and the cluster centers are updated every N memory requests” [Wang, P6]).
[CLM 11]
11. The IC of claim 9, wherein the memory controller is further configured to calculate the cluster center every sixty-four transactions.
The combination teaches claim 9, wherein the memory controller is further configured to calculate the cluster center every sixty-four transactions (“The sampling interval (N) is chosen to be sixty-four, which limits the lost opportunity in energy savings to 5% of an ideal solution that samples every memory access” [Wang, P6]).
[CLM 12]
12. The IC of claim 9, wherein the memory controller is further configured to calculate the cluster center based on sixteen-bit chunks in the data to be sent to the memory device.
The combination teaches claim 9, wherein the memory controller is further configured to calculate the new cluster centers based on sixteen-bit chunks in the data to be sent to the memory device (“The cycle time of the transmitter…is the combination of the searching…and storing…time. This cycle time enables the operation up to 6.66 Gbps in LPDDR4 (16-bit prefetch)” [Seol, P725).
Hence, it is established that in a disclosed embodiment, the transmitter may communicate in 16-bit chunks. Applying the methods of Wang to the communications of Seol, as in the combination, results in the application of Wang’s clustering techniques on the 16-bit data chunks.
[CLM 13]
13. The IC of claim 1, wherein the bus interface comprises a low power double data rate (LPDDR) bus interface.
The combination teaches claim 1, wherein the bus interface comprises a low power double data rate (LPDDR) bus interface (“LPDDR4” [Seol, P725] corresponds to a specification for a “DRAM interface” [Seol, P719] as in [Seol, Fig. 2]).
[CLM 14]
14. The IC of claim 1, wherein the memory controller is further configured to decode data sent from the memory device using the first data mask.
The combination teaches claim 1, wherein the memory controller is further configured to decode data sent from the memory device using the first data mask [Seol, Table 1].
Seol discloses that the transmitter encodes the data and the receiver decodes the data. A BD-coder is present on both ends of the data bus. The data bus is bidirectional based on the shape of the 8b links [Fig. 2] and discussion of both READ and WRITE operations, which correspond to data flow in both directions on the data bus [Seol, P720]. Hence, it is established that the memory controller and the DRAM each serve as a transmitter and as a receiver at different times, e.g. as a transmitter and a receiver during WRITE and as a receiver and a transmitter during READ.
Accordingly, the described system includes the memory device encoding the data using one of the data masks, and the transmitter decoding the data using the data mask, such as during a READ.
[CLM 15]
15. The IC of claim 9, wherein the memory controller is further configured to calculate the cluster center based on eight-bit chunks in the data to be sent to the memory device.
The combination teaches claim 9, wherein the memory controller is further configured to calculate the cluster center based on eight-bit chunks in the data to be sent to the memory device (“DDR3/DDR4 SDRAM employ 8-bit prefetch architecture, 8-bit data is transferred through a single line” [Seol, P720]).
Hence, it is established that in an embodiment, the memory controller and BD-coders may communicate in 8-bit chunks.
[CLM 16]
16. An integrated circuit (IC) comprising:
a bus interface configured to be coupled to a memory bus; and
a memory controller coupled to the bus interface and configured to:
calculate a first data mask associated with patterns in data yet to be sent to a memory device based on transactions in a queue to be sent; and
send the first data mask to the memory device through the bus interface, wherein the one or more data masks comprise an encoding mask used by the memory device to encode data sent to the memory controller.
Claim 16 is rejected on similar grounds as claim 1.
Claim 16 specifies that a first data mask comprise an encoding mask used by the memory device to encode outgoing data. As discussed in Seol, the memory device comprises a BD-coder which is used to decode incoming data and encode outgoing data using a data mask sent from the memory controller through the bus interface. The data mask being used shows the data mask was calculated before it was used.
It is clear that the data bus is bidirectional, i.e. that data is transmitted in both directions. Seol depicts the data bus as bidirectional (see double-sided arrows and provision of serializer/deserializer for communication in both directions in both the controller and the DRAMs [Fig. 2]). Seol also discloses both READ and WRITE operations, which correspond to different directions for data flow [Seol, P720, A].
Hence, Seol teaches calculate a first data mask and send the first data mask to the memory device through the bus interface, wherein the first data mask comprises an encoding mask used by the memory device to encode data sent to the memory controller (data masks sent to the memory device (as a receiver) from the memory controller (as a transmitter) during a WRITE operation are stored at the memory device. During a READ operation, the table is searched and used to encode data sent from the memory device (as a transmitter) to the memory controller (as a receiver) [Table 1]).
[CLM 19]
19. A memory device, comprising:
one or more banks; and
an IO block coupled to the one or more banks and configured to couple to a memory bus, wherein the IO block is configured to:
receive encoded data from a memory controller; and
receive a first data mask from the memory controller through the memory bus, wherein the first data mask comprises an encoding mask used by the memory device to decode the encoded data from the memory controller,
wherein the first data mask is calculated by the memory controller and is associated with patterns in data yet to be sent to the memory device based on considering transactions in a queue of data to be sent by the memory controller,
wherein the encoded data is generated from the data yet to be sent with the one or more data masks.
Claim 19 is rejected on similar grounds as claim 1, as it is the memory device receiving the encoded data and data masks from the memory controller of claim 1.
Claim 19 further recites a memory device (DRAM [Seol, C2, Background; Fig. 2]) comprising:
one or more banks (DRAM chips [Seol, C2, Background]);
an IO block coupled to the banks (each chip interface comprising decoder to decode encoded data received over the data bus [Seol, Figs. 2, 4, 6]), coupled to a memory data bus carrying the data encoded using the data masks from the memory controller [Seol, Fig. 2], the IO block to perform encoding and decoding functions as described in addressing claim 1.
[CLM 20]
20. The memory device of claim 19 further configured to decode the encoded data with the first data mask.
Claim 20 is rejected on similar grounds as claim 1, as it is the memory device receiving the encoded data and data masks from the memory controller of claim 1. Seol further discloses decoding encoded data received over the data bus using the first data mask stored in a value table at the receiver of the memory device [Seol, Figs. 2, 4].
[CLM 21]
21. The memory device of claim 20, wherein the first data mask comprise values to be exclusive OR'd (XOR) with the encoded data when the memory device decodes the encoded data.
Claim 21 is rejected on similar grounds as claim 2, as it is the memory device receiving the encoded data and data masks from the memory controller of claim 2.
[CLM 22]
22. The memory device of claim 21, wherein the memory controller is further configured to XOR the data yet to be sent with the first data mask to generate the encoded data to be received by the memory device.
Claim 22 is rejected on similar grounds as claim 3, as it is the memory device receiving the encoded data and first data mask from the memory controller of claim 3.
[CLM 23]
23. The memory device of claim 19 further configured to write the first data mask to a mode register in the memory device.
Claim 23 is rejected on similar grounds as claim 5, as it is the memory device receiving the encoded data and first data mask from the memory controller of claim 5.
[CLM 24]
24. The memory device of claim 19, wherein the bus interface comprises a low power double data rate (LPDDR) bus interface.
Claim 24 is rejected on similar grounds as claim 13, as it is the memory device receiving the encoded data and data masks from the memory controller of claim 13.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to CHRISTOPHER D BIRKHIMER whose telephone number is (571)270-1178. The examiner can normally be reached 8-5 Hoteling.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Tim Vo can be reached at 571-272-3642. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/Christopher D Birkhimer/Primary Examiner, Art Unit 2138