Abstract:
Disclosed herein is a non-volatile memory, including: a memory cell array to be accessed with data including a data portion and a specific field as a unit of access; a buffer configured to hold the access-unit data read from the memory cell array or the access-unit data to be written to the memory cell array; and a control circuit configured to control access to the memory cell array in accordance with a specified address, a command, and data in the specific field of the access-unit data held in the buffer.

Description:
CROSS REFERENCES TO RELATED APPLICATIONS 
       [0001]    The present invention contains subject matter related to Japanese Patent Application JP 2006-162275, filed in the Japan Patent Office on Jun. 12, 2006, the entire contents of which being incorporated herein by reference. 
       BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to a non-volatile memory, such as a flash memory. 
         [0004]    2. Description of the Related Art 
         [0005]    Generally, in a flash memory such as a NAND flash memory, a combination of data (e.g., 512 bytes or 2 KB in size) and a redundant portion (e.g., several to hundreds of bytes in size) is treated as one page, and besides the user data, an ECC for error correction and management information are stored therein. 
         [0006]    In some flash memories, an ECC process is performed within the flash memories, but in general, information other than the data is also read from the flash memories first and thereafter subjected to processing as the data is. 
       SUMMARY OF THE INVENTION 
       [0007]    In a flash memory system in the past, the reading of the data from the flash memory involves a time for transferring the data from a cell to a buffer and a time for transferring the data from the buffer to a controller. Thus, if the controller reads the data and thereafter determines a next process based on the contents of the read data, a time when the cell within the flash memory is not used becomes long, resulting in reduced performance. 
         [0008]    Moreover, in the case where the data is read from the flash memory first and thereafter subjected to processing, the processing in the controller becomes complicated, resulting in reduced efficiency of the controller. 
         [0009]    An advantage of the present invention is to provide a non-volatile memory that makes it possible to reduce a load of processing by the controller and communication between the flash memory and the controller, achieve simplification and improved performance of the controller, and realize a new capability, which previously may not been possible. 
         [0010]    According to one embodiment of the present invention, there is provided a non-volatile memory including: a memory cell array to be accessed with data including a data portion and a specific field as a unit of access; a buffer configured to hold the access-unit data read from the memory cell array or the access-unit data to be written to the memory cell array; and a control circuit configured to control access to the memory cell array in accordance with a specified address, a command, and data in the specific field of the access-unit data held in the buffer. 
         [0011]    Preferably, the data in the specific field includes a physical address. 
         [0012]    Preferably, the data in the specific field includes a command. 
         [0013]    Preferably, the data in the specific field includes a sequence of either or both of commands and addresses. 
         [0014]    Preferably, the data in the specific field includes a control parameter. 
         [0015]    Preferably, the non-volatile memory further includes an address register, and the control circuit automatically loads the physical address in the specific field of the access-unit data held in the buffer to the address register to use the physical address with a next access command. 
         [0016]    Preferably, the non-volatile memory further includes a command register, and the control circuit automatically loads the command in the specific field of the access-unit data held in the buffer to the command register to execute the command. 
         [0017]    Preferably, the non-volatile memory further includes a command register and an address register, and the control circuit loads the sequence of either or both of commands and addresses in the specific field of the access-unit data held in the buffer to the command register and/or the address register sequentially to automatically read relevant data. 
         [0018]    Preferably, the non-volatile memory further includes a command register and an address register, and the control circuit loads the sequence of either or both of commands and addresses in the specific field of the access-unit data held in the buffer to the command register and/or the address register sequentially to automatically erase a relevant block. 
         [0019]    Preferably, the non-volatile memory further includes a command register and an address register, and the control circuit loads the sequence of either or both of commands and addresses in the specific field of the access-unit data held in the buffer to the command register and/or the address register sequentially to automatically perform programming on another location. 
         [0020]    Preferably, the control circuit terminates access control at a desired timing in accordance with the control parameter. 
         [0021]    Preferably, the control circuit performs access control with improved precision in accordance with the control parameter. 
         [0022]    According to another embodiment of the present invention, there is provided a non-volatile memory including: a memory cell array to be accessed with data including a data portion and a specific field as a unit of access; a buffer configured to hold the access-unit data read from the memory cell array or the access-unit data to be written to the memory cell array; and a control circuit configured to control access to the memory cell array in accordance with a specified address, a command, and data in the specific field of the access-unit data held in the buffer, wherein the data in the specific field includes information that specifies, as data at a time of writing, an operation to be performed at a time of reading. 
         [0023]    According to yet another embodiment of the present invention, there is provided a non-volatile memory including: a memory cell array to be accessed with data including a data portion and a specific field as a unit of access; a buffer configured to hold the access-unit data read from the memory cell array or the access-unit data to be written to the memory cell array; and a control circuit configured to control access to the memory cell array in accordance with a specified address, a command, and data in the specific field of the access-unit data held in the buffer, wherein the data in the specific field includes information that specifies, as data at a time of writing, an additional operation to be performed at the time of writing. 
         [0024]    According to yet another embodiment of the present invention, there is provided a non-volatile memory including: a memory cell array to be accessed with data including a data portion and a specific field as a unit of access; a buffer configured to hold the access-unit data read from the memory cell array or the access-unit data to be written to the memory cell array; and a control circuit configured to control access to the memory cell array in accordance with a specified address, a command, and data in the specific field of the access-unit data held in the buffer, wherein the data in the specific field includes information that specifies, as data at a time of writing, an operation to be performed at the time of writing. 
         [0025]    According to the above-described embodiments of the present invention, information written to the flash memory as data and information read from the flash memory as data are used also by the flash memory to control the flash memory itself. This achieves reduction in a load of processing by the controller and in communication between the flash memory and the controller. Further, since the following operation can be started in advance within the flash memory, simplification and improved performance of the controller can be achieved. Still further, since it is possible to specify, at the time of writing, an additional function to be performed at the time of reading, a novel function, which previously may not been possible, can be realized. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0026]      FIG. 1  is a block diagram illustrating an exemplary basic structure of a non-volatile memory system according to one embodiment of the present invention; 
           [0027]      FIG. 2  illustrates a data structure of one page of a flash memory; 
           [0028]      FIG. 3  illustrates relationships between pages; 
           [0029]      FIG. 4  is a table illustrating correspondence between logical addresses and physical addresses regarding a data structure as illustrated in  FIG. 3 ; 
           [0030]      FIG. 5  illustrates an operation in a flash memory in the past, in the case where pieces of data beginning with a logical address LA=1 are read in sequential order; 
           [0031]      FIG. 6  illustrates a situation in which a partial field within a page buffer  113  is used for input to an address register in the present embodiment; 
           [0032]      FIG. 7  illustrates an operation in a flash memory (i.e., a non-volatile memory) having a function as illustrated in  FIG. 6  in the case where the pieces of data beginning with the logical address LA=1 are read in sequential order; 
           [0033]      FIG. 8  illustrates a non-volatile memory system of  FIG. 6  in which a non-volatile memory additionally has a cache function; 
           [0034]      FIG. 9  illustrates an operation in the flash memory (i.e., the non-volatile memory) as illustrated in  FIG. 8  in the case where the pieces of data beginning with the logical address LA=1 are read in sequential order; 
           [0035]      FIG. 10  illustrates the non-volatile memory system of  FIG. 8  in which the non-volatile memory additionally has a command control system; 
           [0036]      FIG. 11  illustrates an exemplary data structure of data used in the non-volatile memory system of  FIG. 10 ; 
           [0037]      FIG. 12  illustrates an exemplary redundant portion having described therein a command for, after reading a current page, automatically reading another address; 
           [0038]      FIG. 13  illustrates an exemplary redundant portion having described therein a command for, after a current page is read, erasing a block thereof; 
           [0039]      FIG. 14  illustrates the non-volatile memory system of  FIG. 10  the in which a command control circuit of the non-volatile memory additionally has a time-out counter; and 
           [0040]      FIG. 15  illustrates an exemplary data structure of data used in the non-volatile memory system of  FIG. 14 . 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0041]    Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. 
         [0042]      FIG. 1  is a block diagram illustrating an exemplary basic structure of a non-volatile memory system  100  according to one embodiment of the present invention. 
         [0043]    In  FIG. 1 , the non-volatile memory system  100  includes a non-volatile memory  110  and a controller  120  for controlling access to the non-volatile memory  110  in accordance with a request from a host system  130 . 
         [0044]    In addition, the non-volatile memory system  100  includes a control line  140  and a data line  150 . The control line  140  is used to transfer an address, a command, or the like from the controller  120  to the non-volatile memory  110 . The data line  150  is used to transfer data read from the non-volatile memory  110  to the controller  120 , and to transfer data to be written from the controller  120  to the non-volatile memory  110 . 
         [0045]    The non-volatile memory  110  includes a memory cell array  111 , a control circuit  112 , and a page buffer  113 . 
         [0046]    Although not shown in  FIG. 1 , the non-volatile memory  110  also includes an address register, an address decoder, a command decoder, and the like. 
         [0047]    In the memory cell array  111 , memory strings, e.g., NAND flash memory strings, are arranged in an array. 
         [0048]    The control circuit  112  controls the access (e.g., reading, writing, erasing, etc.) to the memory cell array  111  based on the address and the command outputted from the controller  120  and transferred over the control line  140 , and data in a specific field (e.g., data of a redundant portion) of one-page data held in the page buffer  113 . 
         [0049]    In the non-volatile memory  110  according to the present embodiment, reading and writing of data is performed on a page-by-page basis. Each page is composed of data portion (e.g., 512 bytes in size) and the redundant portion (e.g., several to hundreds of bytes in size). The access at the time of reading and writing is performed with such a page as a unit of access. 
         [0050]    Accordingly, the page buffer  113  basically has a size corresponding to one page. 
         [0051]    Out of the one-page data held in the page buffer  113 , the data in the redundant portion is transferred to the control circuit  112  via a transfer line  114 . 
         [0052]    The non-volatile memory  110  according to the present embodiment is characterized in that non-volatile information that is normally recorded on a cell array and exchanged between a controller and the cell array as simple data is used also as an input to the control circuit  112  within the non-volatile memory (i.e., a flash memory)  110 , as illustrated in  FIG. 1 . 
         [0053]    A data structure according to the present embodiment will now be described below with reference to  FIGS. 2 ,  3 , and  4 . 
         [0054]      FIG. 2  illustrates a data structure of data of one page of the flash memory. 
         [0055]    As illustrated in  FIG. 2 , one page  200  of the flash memory is composed of a data portion  210  and a redundant portion  220 . The redundant portion  220  includes an ECC  221 , a logical address  222 , and various flags  223  for the data portion  210 , and a physical address  224  of a page that stores data at a logically next address. 
         [0056]    In short, this structure is a link list structure with one page as one element. 
         [0057]      FIG. 3  illustrates relationships between pages. 
         [0058]      FIG. 4  is a table illustrating correspondence between logical addresses and physical addresses regarding a data structure as illustrated in  FIG. 3 . 
         [0059]    The figures show that data located at a physical address PA 0  is data corresponding to a logical address LA=0, and that data corresponding to a logically next address, i.e., a logical address LA=1, is stored at a physical address PA 1 . 
         [0060]    The figures show that pieces of data beginning with the logical address LA=0 correspond to physical addresses PA 0 , PA 1 , PA 2 , PA 4 , PA 6 , PA 7 , PA 100 , PA 104 , PA 102 , PA 106 , and so on. 
         [0061]    Further, pieces of data beginning with a logical address LA=100 correspond to physical addresses PA 3 , PA 5 , PA 9 , and so on. Still further, pieces of data beginning with a logical address LA=200 correspond to physical addresses PA 101 , PA 103 , PA 107 , and so on. 
         [0062]      FIG. 5  illustrates an operation in a flash memory in the past, in the case where the pieces of data beginning with the logical address LA=1 are read in sequential order. 
         [0063]    When the controller inputs a physical address and a read command to the flash memory, corresponding data is read, within the flash memory, from the cell array to the page buffer. After the data at the physical address PA 1  corresponding to the logical address LA=1 is completely read from the cell array to the page buffer, the controller reads the data, and at this time and not earlier, the controller recognizes that the next physical address is PA 2 . 
         [0064]    Then, the controller inputs the recognized physical address PA 2  and the read command to the flash memory to start reading next data. 
         [0065]    According to this method, during a period from when the data has been read from the cell array to the page buffer until reception of the next read command, the cell array can perform no operation. Moreover, because the controller do not recognize the physical address of the data to be read next until the previous data has been read into the controller, even a flash memory capable of cache reading may not utilize its cache function. 
         [0066]    To overcome such disadvantages, the flash memory according to the present embodiment is configured to use information written thereto and read therefrom as the data to control the flash memory itself. 
         [0067]      FIG. 6  illustrates a situation in which a partial field within the page buffer  113  is used for input to the address register in the present embodiment. 
         [0068]    A non-volatile memory  110 A, which is a flash memory, as illustrated in  FIG. 6  includes an address register  115  and an address decoder  116  as parts of the control circuit. 
         [0069]    Normally, an address generated in a controller  120 A is received via the address line for use. In this embodiment, however, when the data has been read from the cell array to the page buffer  113 , a part of the data is automatically loaded to the address register  115  to be used in the address decoder  116  as an address of data to be read next. 
         [0070]    The controller  120 A of a non-volatile memory system  100 A as illustrated in  FIG. 6  includes an address generation section  121 , a logical address-physical address (logical-physical) conversion table  122 , and a data processing section  123  including a memory interface (MI/F), a host interface (HI/F), a data buffer, etc. 
         [0071]    Under control of a CPU (not shown), the controller  120 A exchanges a command signal or data with the host system  130  via the host interface, and controls access to the non-volatile memory  110 A via the memory interface. 
         [0072]    The data written from the host system  130  to the non-volatile memory  110 A or the data read from the non-volatile memory  110 A is temporarily held in the data buffer in the data processing section  123 . 
         [0073]      FIG. 7  illustrates an operation in the flash memory (i.e., the non-volatile memory) having the function as illustrated in  FIG. 6  in the case where the pieces of data beginning with the logical address LA=1 are read in sequential order. 
         [0074]    This operation is identical to the operation as illustrated in  FIG. 5  until the input of the physical address PA 1  corresponding to the logical address LA=1 and the first read command, but different in that when the data has been read from the memory cell array  111  to the page buffer  113 , the physical address of the next data, which has just been read from the cell array  111 , is automatically loaded to the address register  115 . 
         [0075]    This operation eliminates the need for the controller  120 A to input, after reading the data, the address of the next data to the non-volatile memory (i.e., the flash memory)  110 A, resulting in a reduced total reading time. 
         [0076]      FIG. 8  illustrates another exemplary non-volatile memory system, which is different from the non-volatile memory system of  FIG. 6  in that the non-volatile memory additionally has a cache function. 
         [0077]    A non-volatile memory system  100 B as illustrated in  FIG. 8  includes, in place of the non-volatile memory  110 A of  FIG. 6 , a non-volatile memory unit (i.e., a flash memory)  110 B that additionally has a data cache  117 . 
         [0078]    In the non-volatile memory system  100 B of  FIG. 8 , when the data cache  117  is used at the time of reading, the contents of the address register  115  is updated at the same time when the data is transferred from the page buffer  113  to the data cache  117 . 
         [0079]      FIG. 9  illustrates an operation in the flash memory (i.e., the non-volatile memory) as illustrated in  FIG. 8  in the case where the pieces of data beginning with the logical address LA=1 are read in sequential order. 
         [0080]    As in the case of a flash memory having a cache-read function in the past, the address and the read command are issued first, and after the data is completely read from the cell array  111  into the page buffer  113 , a cache-read command is issued. 
         [0081]    As a result of the issuance of the cache-read command, the contents of the page buffer  113  is transferred to the data cache  117  while, in the background, the next data is read from the cell array  111  to the page buffer  113 . 
         [0082]    Note that an address used at this time is an address that is contained in the first data and automatically loaded to the address register  115 . 
         [0083]    That is, each of the physical addresses PA of the second and subsequent pages is loaded to the address register  115  before being read to the controller  120 A as part of the data, and is used for the reading of the following data from the cell array  111 . 
         [0084]    Thus, the controller  120 A can achieve the reading of the pieces of data following a link list, simply by repeating the reading of data from the data cache  117  and the issuance of the cache-read command. 
         [0085]      FIG. 10  illustrates another exemplary non-volatile memory system, which is different from the non-volatile memory system of  FIG. 8  in that the non-volatile memory additionally has a command control system. 
         [0086]    In a non-volatile memory system  100 C as illustrated in  FIG. 10 , a non-volatile memory (i.e., a flash memory)  110 C is additionally provided with a command register  118  and a command control circuit  119  as compared to the non-volatile memory  110 B of  FIG. 8 . 
         [0087]    In addition, the partial field (corresponding to the redundant portion  220 ) within the page buffer  113  is used for input to the command register as well. 
         [0088]    Normally, a command code generated in the controller  120 A is inputted to the command register  118  via the control line  140 , the data line  150 , or the like. In this embodiment, however, when the data has been read from the cell array  111  to the page buffer  113 , contents of the command register  118  is updated using contents of the page buffer  113 , and the command control circuit  119  executes a command therein. 
         [0089]      FIG. 11  illustrates an exemplary data structure of data used in the non-volatile memory system of  FIG. 10 . 
         [0090]    As illustrated in  FIG. 11 , each page  200  of the flash memory includes the data portion  210  and a redundant portion  220 . The redundant portion includes, in addition to the ECC  221 , the logical address  222 , and the various flags  223  for the data portion  210 , a field  225  for describing a command. The command described in this field  225  is automatically executed at the time of reading, for example. 
         [0091]      FIG. 12  illustrates an exemplary redundant portion  220 A having described therein a command for, after reading the current page, automatically reading another address. 
         [0092]    In the case where data has been written with the redundant portion  220 A as illustrated in  FIG. 12 , when the corresponding page is read, an address input command “Addr”, address  1  “ADR 1 ”, address  2  “ADR 2 ”, and a cache-read command “Read” are inputted to the control circuit  112 , so that the cache reading of data at other addresses is performed automatically. 
         [0093]      FIG. 13  illustrates an exemplary redundant portion  220 B having described therein a command for, after the current page is read, erasing a block thereof. 
         [0094]    In the case where data has been written with the redundant portion  220 B as illustrated in  FIG. 13 , when the corresponding page is read, an erase command “Erase” is inputted to the control circuit  112 , so that the corresponding block is erased automatically. 
         [0095]    This realizes data that can be read only once. 
         [0096]      FIG. 14  illustrates another exemplary non-volatile memory system in which the command control circuit additionally has a time-out counter as compared to the non-volatile memory of  FIG. 10 . 
         [0097]    In this exemplary non-volatile memory system, data in the partial field within the page buffer  113  (i.e., the data in the redundant portion) is used for input to a time-out counter  119   a  for detecting a time-out at the time of reading or programming, instead of for input to the command register. 
         [0098]    Some flash memories in the past have a function of diagnosing a situation where a reading or programming operation is not completed within a predetermined period as an error. A non-volatile memory system  100 D as illustrated in  FIG. 14  makes it possible to specify such a time-out period in a part of data to be written or read. 
         [0099]      FIG. 15  illustrates an exemplary data structure of data used in the non-volatile memory system of  FIG. 14 . 
         [0100]    In the data structure as illustrated in  FIG. 15 , a redundant portion  220 C includes a field  226  for describing a time-out period T 0  at the time of programming and a field  227  for describing a time-out period T 1  at the time of reading. Values described in these fields can be used as time-out periods at the time of programming and at the time of reading, for example. Thus, placing arbitrary time constraints becomes possible. 
         [0101]    As described above, according to the present embodiment, reforming of a control structure within the flash memory in the non-volatile memory system achieves reduction in an amount of exchange of control between the flash memory and the controller and reduction in the load on the controller, thereby improving the speed of processing. 
         [0102]    Moreover, it becomes possible to start, before data is read into the controller, the next operation that normally cannot be started before the data is read into the controller. Thus, considerable improvement in throughput is achieved. 
         [0103]    Still further, it becomes possible to specify, at the time of programming, an operation to be performed automatically at the time of reading. This makes it possible to generate and manage special data, such as data that can be read only once. 
         [0104]    Still further, it becomes possible to vary the operation of the flash memory at the time of reading, writing, or the like depending on the contents of the data. This makes it possible to manage each data in an appropriate manner. 
         [0105]    It should be understood by those skilled in the art that various modifications, combinations, sub-combinations and alterations may occur depending on designs and other factors insofar as they are within the scope of the appended claims or the equivalents thereof.