DETAILED ACTION
This Office Action, based on application 18/625,941 filed 3 April 2024, is entered responsive to applicant’s initial filing. Claims 1-20, 24, and 25, as presented in the preliminary amendment filed 3 April 2024, are currently pending and have been fully considered below.
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 .
Claim Objections
The following claims are objected to due to informalities:
Claim 1: The following elements of the claim recite informalities:
Lines 2-3: “a flash memory” should be “a multi-level flash memory” to be consistent with the use of the term in other claims
Lines 3-4: “the different levels” should be “
Line 13: “assigning to each output page a respective corresponding input page” may be better reworded as “assigning a respective corresponding input page to each respective output page”.
Line 14: “the respective input page” should be “the respective corresponding input page”
Line 15: “the level of the one or more destination data pages” should be “
Line 17: “the content of the input page” should be “ content of the input page” due to lack of antecedent basis.
Line 22: “the content of the output page” should be “
Line 23: “its reversibly transformed version” should be “the reversibly transformed version thereof” to properly reflect the antecedent basis of the term. Furthermore, the use of pronouns should be avoided.
Claim 2: The pronoun “itself” should be replaced with the appropriate noun (e.g. ‘the one input page’).
Claim 3: Lack of antecedent basis of “the number of bits” and “the same predetermined value”.
Claims 5-7: Claim 1 establishes that memory reliability optimization goals are defined as a function of “the one or more destination data pages” associated with an output page. As such, a particular memory reliability optimization goal is not associated with “a given destination page”, but “the one or more destination data pages”.
Claim 5: Lack of antecedent basis of “the level of the destination data page”
Claim 5: Lack of antecedent basis of “the number of ‘0’ bit values” and “the number of ‘1’ bit values”
Claim 6: Lack of antecedent basis of “the level” and “the layer”
Claim 7: Lack of antecedent basis of “the number of ‘0’ bit values” and “the number of ‘1’ bit values”
Claim 8: Lack of antecedent basis of “the condition …” (each instance) and “the number of bits in an input page”.
Claim 9: “the output page” (Line 5) should be “the given output page”.
Claim 9: “the satisfaction” should be “a satisfaction”
Claim 10: Lack of antecedent basis of “the yet-unassigned input pages”
Claim 10: The pronouns ‘it’ and ‘its’ should be replaced with the appropriate noun (e.g. “the one input page”).
Claim 10: “this input page” (both instances) should be “the one input page”.
Claim 10: Lack of antecedent basis of “the untransformed input page”
Claim 10: “the transformation scheme” should be “the reversible transformation scheme”
Claim 10: “the memory flash” should be “the flash memory”
Claim 12: The pronoun ‘it’ should be replaced with the appropriate noun
Claim 13: “the data representations” should be “the one or more data representations”
Claim 14: “a subset of the data representations” should be “the subset of the one or more data representations”
Claim 14: Lack of antecedent basis of “the to-be-inverted data representations”
Claim 14: “the input page” should be “the one input page”
Claim 14: Lack of antecedent basis of the term “said to-be-inverted data representation”
Claim 15: “the input page” should be “the one input page”
Claim 15: Lack of antecedent basis of the term “the sizes”
Claim 15: “the frame size” should be “the same frame size”
Claim 16: Lack of antecedent basis of the term “the multiple results”
Claim 16: Lack of antecedent basis of the term “the various results”
Claim 17: Lack of antecedent basis of the term “the maximum achievement degree”
Claim 17: The pronoun ‘its’ should be replaced with the appropriate noun
Claim 17: Lack of antecedent basis of the term “the number of bits” that were inverted
Claim 17: Lack of antecedent basis of the term “the related transformation”
Claim 18: Lack of antecedent basis of the term “the selection”
Claim 18: ‘Greedy’ should not be capitalized as the term is not a proper noun
Claim 20: Lack of antecedent basis of the term “the respective memory reliability optimization goals” and “the memory reliability optimization goals”
Claim 24: Please review similar objections to Claim 1
Claim 25: The pronoun “itself” should be replaced with the appropriate noun (e.g. ‘the one input page’).
Appropriate correction is required.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claim(s) 1-5, 8, 9, 19, 20, 24, and 25 is/are rejected under 35 U.S.C. 103 as being unpatentable over STROPE (US PGPub 2013/0151764) in further view of BURGER et al (US PGPub 2014/0126288).
With respect to Claim 1, STROPE discloses a method of restructuring input data to be stored in a flash memory having a plurality of multi-level flash memory cells being arranged in multiple physical pages each having a defined number N > 1 of data pages corresponding to the different levels of the multi-level flash memory (Claim 1 – “a multi-level cell memory having a same physical page configured to be programmed at different programming rates by selecting different levels of a voltage provided to cells within the same physical page”; Claim 2 – “wherein the multi-level cell memory comprises multi-level cell (MLC) NAND Flash memory”), the method comprising:
based on a defined page structure according to which the input data is segmented into multiple logical input pages, restructuring the segmented input data to obtain corresponding output data being segmented into logical output pages, wherein each output page has one or more associated destination data pages for storing content of the output page therein (¶[0013] – “host interface 105 receives access requests from the host (e.g. read and write operations”; ¶[0017] – “During operation, the write prioritizer 114 may receive a write request for data to be stored in the memory array 118. … select a page to store the data when the priority level indicates a high priority level, select a second page to store the data when the priority level indicates a low priority level”); and
outputting the segmented output data for storage to the flash memory in accordance with the associations between the output pages and their respective destination data pages (¶[0017] – “The write prioritizer 114 may … store the data associated with the write request in the selected page”); wherein the restructuring comprises:
assigning to each output page a respective corresponding input page (¶[0017] – “During operation, the write prioritizer 114 may receive a write request for data to be stored in the memory array 118. The write prioritizer 114 may determine a priority level of a received write request, select a page to store the data when the priority level indicates a high priority level, select a second page to store the data when the priority level indicates a low priority level, and the store the data associated with the write request in the selected page. When the priority level is indicated as high, a page having a faster programming time may be selected and when the priority level is indicated as low, a page having a slower programming time may be selected”), and wherein selecting the respective input page for assignment to the respective output page is based on:
the level of the one or more destination data pages being associated with the output page (¶[0025] – “The method 400 then determines an amount of time that each page used to be programmed, at 406. This may be accomplished by monitoring a busy status signal of the memory device to determine when a write is complete. For example, a ready signal may be received when a device has completed a write operation. Then, a priority level is assigned to each page based on its programming time, at 408. The method 400 then creates a data map, or list, indicating the priority level for each page, at 410. In a particular embodiment, the data map may indicate either a first priority level associated with a faster programming time or a second priority level associated with a slower programming time. Which programming times are considered faster or slower can be a design choice of each system. In addition, there may be more than two priority levels where each of the priority levels are associated with a range of programming times. The data map, or list, may be stored in a buffer memory and, in a particular embodiment, may include a single bit to indicate whether a page has a first priority level assigned to indicate a faster programming time or a second priority level assigned to indicate a slower programming time, where a first state of the single bit represents the first priority level and a second state of the single bit represents the second priority level”),
and the content of the input page (¶[0029] – “The method 500 then determines a priority level of the write request, at 504. The priority level of the write request may be determined based on a type of data”)
wherein the input page is selected so that the input page or a reversibly transformed version thereof satisfies the content of the output page is defined accordingly as that of the input page or its reversibly transformed version, respectively (¶[0030] – “Once a page is selected based on the associated priority level, the write request is performed on the selected page, at 512”).
STROPE may not explicitly disclose wherein selecting the respective input page for assignment to the respective output page is based on a memory reliability optimization goal defined as a function of the level of the one or more destination data pages being associated with the output page, wherein the input page is selected so that the input page or a reversibly transformed version thereof satisfies the memory reliability optimization goal associated with the output page's associated one or more destination data pages.
However, BURGER discloses wherein selecting the respective input page for assignment to the respective output page is based on a memory reliability optimization goal defined as a function of the level of the one or more destination data pages being associated with the output page, wherein the input page is selected so that the input page or a reversibly transformed version thereof satisfies the memory reliability optimization goal associated with the output page's associated one or more destination data pages (¶[0057] – “the write process 800 employs a page level access scheme and novel techniques for partitioning the user data based on the page type (i.e., page level) that is being encoded. In addition, the write process 800 also employs the appropriate code rate associated with the identified page type. For example, in one exemplary implementation, the lower and middle pages of a wordline can comprise eight sectors of user data, while the upper page can comprise seven sectors of user data. Thus, if the lower or middle pages are being programmed, eight sectors of user data should be accumulated, while if the upper page is being programmed, then seven sectors of user data should be accumulated”).
STROPE and BURGER are analogous art because they are from the same field of endeavor of management of storage in multi-level cell memory devices. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art, having the teachings of STROPE and BURGER before him or her, to modify the write prioritizer of STROPE to include page reliability considerations when assigning priority levels to each page as taught by BURGER. A motivation for doing so would have been to recognize that different page types may have different reliability issues and hence different encoding rates may be applied to the different page types which may then increase access times for the page due to encoding/decoding (¶[0039]; ¶[0075]). Therefore, it would have been obvious to combine STROPE and BURGER to obtain the invention as specified in the instant claims.
With respect to Claim 24, STROPE discloses a data processing apparatus comprising:
flash memory having a plurality of multi-level flash memory cells being arranged in multiple physical pages each having a defined number N > 1 of data pages corresponding to the different levels of the multi-level flash memory (Claim 1 – “a multi-level cell memory having a same physical page configured to be programmed at different programming rates by selecting different levels of a voltage provided to cells within the same physical page”; Claim 2 – “wherein the multi-level cell memory comprises multi-level cell (MLC) NAND Flash memory”); and
one or more processors coupled to the flash memory (Fig 1, Flash Memory Controller), wherein the one or more processors having access to a program memory in which one or more programs are stored, which when executed on the one or more processors cause the data processing apparatus to perform a method of restructuring input data to be stored in the flash memory comprising:
based on a defined page structure according to which the input data is segmented into multiple logical input pages, restructuring the segmented input data to obtain corresponding output data being segmented into logical output pages, wherein each output page has one or more associated destination data pages for storing content of the output page therein (¶[0013] – “host interface 105 receives access requests from the host (e.g. read and write operations”; ¶[0017] – “During operation, the write prioritizer 114 may receive a write request for data to be stored in the memory array 118. … select a page to store the data when the priority level indicates a high priority level, select a second page to store the data when the priority level indicates a low priority level”); and
outputting the segmented output data for storage to the flash memory in accordance with the associations between the output pages and their respective destination data pages (¶[0017] – “The write prioritizer 114 may … store the data associated with the write request in the selected page”); wherein the restructuring comprises:
assigning to each output page a respective corresponding input page (¶[0017] – “During operation, the write prioritizer 114 may receive a write request for data to be stored in the memory array 118. The write prioritizer 114 may determine a priority level of a received write request, select a page to store the data when the priority level indicates a high priority level, select a second page to store the data when the priority level indicates a low priority level, and the store the data associated with the write request in the selected page. When the priority level is indicated as high, a page having a faster programming time may be selected and when the priority level is indicated as low, a page having a slower programming time may be selected”), and wherein selecting the respective input page for assignment to the respective output page is based on:
the level of the one or more destination data pages being associated with the output page (¶[0025] – “The method 400 then determines an amount of time that each page used to be programmed, at 406. This may be accomplished by monitoring a busy status signal of the memory device to determine when a write is complete. For example, a ready signal may be received when a device has completed a write operation. Then, a priority level is assigned to each page based on its programming time, at 408. The method 400 then creates a data map, or list, indicating the priority level for each page, at 410. In a particular embodiment, the data map may indicate either a first priority level associated with a faster programming time or a second priority level associated with a slower programming time. Which programming times are considered faster or slower can be a design choice of each system. In addition, there may be more than two priority levels where each of the priority levels are associated with a range of programming times. The data map, or list, may be stored in a buffer memory and, in a particular embodiment, may include a single bit to indicate whether a page has a first priority level assigned to indicate a faster programming time or a second priority level assigned to indicate a slower programming time, where a first state of the single bit represents the first priority level and a second state of the single bit represents the second priority level”),
and the content of the input page (¶[0029] – “The method 500 then determines a priority level of the write request, at 504. The priority level of the write request may be determined based on a type of data”);
wherein the input page is selected so that the input page or a reversibly transformed version thereof satisfies the content of the output page is defined accordingly as that of the input page or its reversibly transformed version, respectively (¶[0030] – “Once a page is selected based on the associated priority level, the write request is performed on the selected page, at 512”).
STROPE may not explicitly disclose wherein selecting the respective input page for assignment to the respective output page is based on a memory reliability optimization goal defined as a function of the level of the one or more destination data pages being associated with the output page, wherein the input page is selected so that the input page or a reversibly transformed version thereof satisfies the memory reliability optimization goal associated with the output page's associated one or more destination data pages.
However, BURGER discloses wherein selecting the respective input page for assignment to the respective output page is based on a memory reliability optimization goal defined as a function of the level of the one or more destination data pages being associated with the output page, wherein the input page is selected so that the input page or a reversibly transformed version thereof satisfies the memory reliability optimization goal associated with the output page's associated one or more destination data pages (¶[0057] – “the write process 800 employs a page level access scheme and novel techniques for partitioning the user data based on the page type (i.e., page level) that is being encoded. In addition, the write process 800 also employs the appropriate code rate associated with the identified page type. For example, in one exemplary implementation, the lower and middle pages of a wordline can comprise eight sectors of user data, while the upper page can comprise seven sectors of user data. Thus, if the lower or middle pages are being programmed, eight sectors of user data should be accumulated, while if the upper page is being programmed, then seven sectors of user data should be accumulated”).
STROPE and BURGER are analogous art because they are from the same field of endeavor of management of storage in multi-level cell memory devices. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art, having the teachings of STROPE and BURGER before him or her, to modify the write prioritizer of STROPE to include page reliability considerations when assigning priority levels to each page as taught by BURGER. A motivation for doing so would have been to recognize that different page types may have different reliability issues and hence different encoding rates may be applied to the different page types which may then increase access times for the page due to encoding/decoding (¶[0039]; ¶[0075]). Therefore, it would have been obvious to combine STROPE and BURGER to obtain the invention as specified in the instant claims.
With respect to Claim 2, the combination of STROPE and BURGER disclose the method of claim 1.
STROPE further discloses wherein for each output page, selecting the respective corresponding input page comprises determining for each of the input pages a respective associated indicator that characterizes the input page; and selecting the input page for assignment to the output page comprises: comparing of the associated respective indicators of multiple input pages with the priority related to the level of the one or more destination data pages being associated with the output page, and determining one input page among the multiple input pages, which itself or the reversibly transformed version thereof satisfies the priority, as the selected input page (¶[0018] – “The write prioritizer 114 may determine the priority level by checking a data map, or list, of pages that indicates whether a selected page has a fast programming time or a slow programming time. The data map may be stored in a memory, such as the buffer memory 116 or the memory 106, and may include a list of pages and an indicator of a priority level associated with each page, where the indicator of the priority level is based on a programming time associated with the associated page”; ¶[0020] – “The priority level of a write request may be determined based on a type of data, an indicator from the host, an amount of the volatile memory 106 filled, an amount of the buffer memory 116 filled, a fill rate of either buffer, or any combination thereof. Further, the flash memory controller 102 may be configured to receive, via the host interface 105, an indicator of a user selectable setting to initially store all data to pages associated with a fast programming time”).
BURGER further discloses wherein the priority is based on the memory reliability optimization goal (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”).
With respect to Claim 3, the combination of STROPE and BURGER disclose the method of claim 2.
STROPE further discloses wherein the associated indicator of an input page is a function of the number of bits within the input page with the same predetermined bit value (¶[0020] – “The priority level of a write request may be determined based on a type of data, an indicator from the host”; ¶[0019] – “the indicator may indicate more priority levels than just two, with each priority level being associated with a different programming speed.”).
With respect to Claim 4, the combination of STROPE and BURGER disclose the method of claim 1.
STROPE further discloses wherein: the input data is randomized, and before the restructuring, the input pages are defined based on the randomized input data (¶[0013] – “host interface 105 receives access requests from the host (e.g. read and write operations”; ¶[0017] – “During operation, the write prioritizer 114 may receive a write request for data to be stored in the memory array 118).
With respect to Claim 5, the combination of STROPE and BURGER disclose the method of claim 1.
BURGER further discloses wherein the respective memory reliability optimization goal associated with a given destination data page is selected as a function of the level of the destination data page as one of the following: maximizing the number of "0" bit values to be stored to the destination data page; maximizing the number of "1" bit values to be stored to the destination data page; optimizing a balance between "0" bit values and "1" bit values to be stored to the destination data page (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”; ¶[0003] – “In addition, using QLC memory cells may involve complicated encoding schemes for the four levels of data stored per memory cell. For example, 1-2-6-6, 1-2-4-8, 2-3-5-5, and other encoding schemes may be used, where each number refers to the number of state changes that occur within a memory level, i.e., how many points along that level may see a change from either a “0” to “1” or “1” to “0” memory state. Memory levels where fewer points along the level may be read to ascertain a cell's memory state, may incur a lower bit error rate (BER) than levels on which more points along the level are read to properly sense and read the data for a particular level. Conversely, memory levels where more points along the level (i.e., more memory states) may be read to ascertain a cell's memory state may incur a higher BER than levels on which fewer points along the level are read to properly sense and read the data for a particular level”).
With respect to Claim 8, the combination of STROPE and BURGER disclose the method of claim 5.
BURGER further discloses wherein: maximizing the number of "0" bit values is defined as satisfying the condition that the number of bits in an input page or a reversibly transformed version thereof which have a bit value of one is less than a defined upper threshold; maximizing the number of "1" bit values is defined as satisfying the condition that the number of bits in an input page or a reversibly transformed version thereof which have a bit value of one is greater than a defined lower threshold; or optimizing a balance between "0" bit values and "1" bit values is defined as satisfying the condition that the number of bits in an input page or a reversibly transformed version thereof which have a bit value of one is greater than a defined lower threshold and less than a defined upper threshold (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”; ¶[0003] – “In addition, using QLC memory cells may involve complicated encoding schemes for the four levels of data stored per memory cell. For example, 1-2-6-6, 1-2-4-8, 2-3-5-5, and other encoding schemes may be used, where each number refers to the number of state changes that occur within a memory level, i.e., how many points along that level may see a change from either a “0” to “1” or “1” to “0” memory state. Memory levels where fewer points along the level may be read to ascertain a cell's memory state, may incur a lower bit error rate (BER) than levels on which more points along the level are read to properly sense and read the data for a particular level. Conversely, memory levels where more points along the level (i.e., more memory states) may be read to ascertain a cell's memory state may incur a higher BER than levels on which fewer points along the level are read to properly sense and read the data for a particular level”).
With respect to Claim 9, the combination of STROPE and BURGER disclose the method of claim 1.
STROPE further discloses wherein when multiple input pages or their reversibly transformed versions, respectively, satisfy a priority associated with the one or more destination data pages being associated with a given output page, an input page among these multiple input pages is selected for assignment to the output page for which a degree that quantifies the satisfaction of the priority is maximized among the multiple input pages (¶[0030] – “A priority level decision may be made, at 506. When the priority level of the write request is a first priority level, such as a priority level associated with a faster write, a first page may be selected to store the data when the first page is associated with the first priority level via the data map, at 508. When the priority level of the write request is a second priority level, such as a priority level associated with a slower write, a second page may be selected to store the data when the second page is associated with the second priority level via the data map, at 510. Once a page is selected based on the associated priority level, the write request is performed on the selected page, at 512”.).
BURGER further discloses wherein the priority is based on the memory reliability optimization goal (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”).
With respect to Claim 19, the combination of STROPE and BURGER disclose the method of claim 1.
BURGER further discloses wherein the input data is provided or stored in a cache memory other than the multi-level flash memory and the restructuring of the input data is performed in relation to the input data stored in the cache memory to obtain the output data (¶[0050] – “It is noted that during step 510 one or more pages may require buffering, for example, using memory circuits in the data management block 110, until three full pages of data are available (for the exemplary 3-bit-per-cell embodiment of FIG. 3). Thereafter, the wordline level write process 500 encodes j pages of data into an encoded block during step 520”).
With respect to Claim 20, the combination of STROPE and BURGER disclose the method of claim 1.
BURGER further discloses wherein the respective memory reliability optimization goals associated with the one or more destination data pages are each defined as a function of a calibration parameter which defines a common reliability margin of the memory reliability optimization goals (¶[0039] – “each page in a wordline can optionally be encoded with different code rates or different types of codes (or both). For example, Low Density Parity Check Codes (LDPC), Bose-Chaudhuri-Hocquenghem (BCH) and Reed Solomon (RS) codes may be employed. In one embodiment, more powerful codes or lower code rates can be employed for the pages that need improved reliability. For example, higher page numbers may have a higher likelihood of error. Thus, these pages may be encoded with a code or code rate (or both) that improve the performance of these pages. More powerful error correcting codes (such as lower rate codes and LDPC codes) can be used for the higher pages associated with a higher error rate, and less powerful error correcting codes (such as higher rate codes and algebraic codes) can be used for the lower pages associated with a lower error rate”).
With respect to Claim 25, the combination of STROPE and BURGER disclose the data processing apparatus of claim 24.
STROPE further discloses wherein for each output page, selecting the respective corresponding input page comprises determining for each of the input pages a respective associated indicator that characterizes the input page; and selecting the input page for assignment to the output page comprises: comparing of the associated respective indicators of multiple input pages with the priority related to the level of the one or more destination data pages being associated with the output page, and determining one input page among the multiple input pages, which itself or the reversibly transformed version thereof satisfies the priority, as the selected input page (¶[0018] – “The write prioritizer 114 may determine the priority level by checking a data map, or list, of pages that indicates whether a selected page has a fast programming time or a slow programming time. The data map may be stored in a memory, such as the buffer memory 116 or the memory 106, and may include a list of pages and an indicator of a priority level associated with each page, where the indicator of the priority level is based on a programming time associated with the associated page”; ¶[0020] – “The priority level of a write request may be determined based on a type of data, an indicator from the host, an amount of the volatile memory 106 filled, an amount of the buffer memory 116 filled, a fill rate of either buffer, or any combination thereof. Further, the flash memory controller 102 may be configured to receive, via the host interface 105, an indicator of a user selectable setting to initially store all data to pages associated with a fast programming time”).
BURGER further discloses wherein the priority is based on the memory reliability optimization goal (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”).
Claim(s) 6 and 7 is/are rejected under 35 U.S.C. 103 as being unpatentable over STROPE in further view of BURGER and JAIN (US PGPub 2022/0075687).
With respect to Claim 6, the combination of STROPE and BURGER disclose the method of claim 1,.
BURGER further discloses the memory reliability optimization goal applied to a destination data page is defined as a function of both the level of the destination data page and the layer to which the physical page having the destination data page pertains (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”).
STROPE and BURGER may not explicitly disclose wherein: the flash memory is a 3D NAND flash memory in which the physical pages are distributed over a plurality of stacked layers of the flash memory.
However, JAIN discloses wherein: the flash memory is a 3D NAND flash memory in which the physical pages are distributed over a plurality of stacked layers of the flash memory (¶[0106] – “The non-volatile memory array 212 can be two-dimensional (2D—laid out in a single fabrication plane) or three-dimensional (3D—laid out in multiple fabrication planes), The non-volatile memory array 212 may comprise one or more arrays of memory cells including a 3D array. In one embodiment, the non-volatile memory array 212 may comprise a monolithic three-dimensional memory structure (3D array) in which multiple memory levels are formed above (and not in) a single substrate, such as a wafer, with no intervening substrates.”)
STROPE, BURGER, and JAIN are analogous art because they are from the same field of endeavor of management of storage in multi-level cell memory devices. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art, having the teachings of STROPE, BURGER, and JAIN before him or her, to modify the flash memory array of the combination of STROPE and BURGER to include multiple fabrication planes as taught by BURGER. A motivation for doing so would have been to recognize that 3D flash memories also exhibit different integrity characteristics based on the page level (¶[0007]) and the benefits of a 3D flash memory vs 2D flash memory may be more memory capacity per die size. Therefore, it would have been obvious to combine STROPE, BURGER, and JAIN to obtain the invention as specified in the instant claims.
With respect to Claim 7, the combination of STROPE, BURGER, and JAIN disclose the method of claim 6.
BURGER further discloses wherein the respective memory reliability optimization goal associated with a given destination data page is selected as a function of both the level of the destination data page and the layer to which the physical page having the destination data page pertains as one of the following: maximizing the number of "0" bit values to be stored to the destination data page; maximizing the number of "1" bit values to be stored to the destination data page; optimizing a balance between "0" bit values and "1" bit values to be stored to destination data page (¶[0039 – “more powerful codes or lower code rates can be employed for the pages that need improved reliability”; ¶[0047] – “a lower page level can be encoded at a higher code rate than the middle and upper page levels (or vice versa). In one variation, some page levels with sufficient reliability may not be encoded at all”; ¶[0003] – “In addition, using QLC memory cells may involve complicated encoding schemes for the four levels of data stored per memory cell. For example, 1-2-6-6, 1-2-4-8, 2-3-5-5, and other encoding schemes may be used, where each number refers to the number of state changes that occur within a memory level, i.e., how many points along that level may see a change from either a “0” to “1” or “1” to “0” memory state. Memory levels where fewer points along the level may be read to ascertain a cell's memory state, may incur a lower bit error rate (BER) than levels on which more points along the level are read to properly sense and read the data for a particular level. Conversely, memory levels where more points along the level (i.e., more memory states) may be read to ascertain a cell's memory state may incur a higher BER than levels on which fewer points along the level are read to properly sense and read the data for a particular level”).
Allowable Subject Matter
Claims 10-18 are allowed over prior art.
Exemplary Claim 10 further limits the allocation of data to particular pages of a multi-level flash memory based on characteristics of the data and characteristics of memory levels and associated pages. Claim 10 is limited to transforming incoming data prior to writing the data to flash memory “wherein the transformation scheme is defined based on the yet-untransformed input page and the memory reliability optimization goal associated with the output page's associated one or more destination data pages to reversibly replace, in the input page, one or more data representations being associated with respective first threshold voltages of the memory flash by a respective number of data representations being associated with respective second threshold voltages of the memory flash being lower than the corresponding first threshold voltages to obtain the transformed version of the input page”. While cited prior art including BURGER disclose encoding schemes to encode incoming data based on the level to which the data is to be written to in flash memory, prior art has not been found to anticipate or render obvious the transformation scheme as limited in the claim.
The Office would like to emphasize that while one or more reasons are offered as to why the claims are allowable over the prior art, it is each claim, taken as a whole, including interrelationships and interconnections between various claimed elements which are allowable over the prior art of record and not any individual limitation of a claim.
As allowable subject matter has been indicated, applicant's reply must either comply with all formal requirements or specifically traverse each requirement not complied with. See 37 CFR 1.111(b) and MPEP § 707.07(a).
Claims 10-18 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure further teach methods of writing data to multi-level flash memory based on physical characteristics of the levels and associated pages of the memory array and characteristics of the data.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to ERIC T LOONAN whose telephone number is (571)272-6994. The examiner can normally be reached M-F 8am-5pm.
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, Arpan Savla can be reached at 571-272-1077. 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.
/ERIC T LOONAN/Examiner, Art Unit 2137