A controller included in a flash memory system, which can be applied to a memory interface of a host computer is disclosed. A buffer is used for data exchange operation between the host computer and the controller, and data exchange operation between a flash memory and the controller. A host interface control block as a first control block controls data exchange operation between the buffer and the host computer. A flash sequencer block as a second control block controls data exchange operation between the buffer and the flash memory. The host interface control block controls input and output operation of the buffer, based on a memory control signal and a memory address signal supplied from the host computer. The flash sequencer block controls input and output operation of the buffer at a one-page size of the flash memory.
|
9. A method for controlling access from a computer to a flash memory having a plurality of physical blocks based on address data from the computer, wherein each of the plurality of physical blocks is a minimum erasing unit and divided into a plurality of physical pages each of which is a processing unit in data reading operation and data writing operation carried out in the flash memory, the method comprising:
storing data read from the flash memory or data to be written in the flash memory, into a buffer, wherein a range of a plurality of memory addresses corresponding to capacity of the buffer is assigned to the buffer within a memory address space of the computer;
storing one of the plurality of memory addresses corresponding to a first portion of the address data, into an address buffer;
storing a logical page address corresponding to a second portion in the address data, into an address register, wherein the logical page address indicates a logical page for reading data from the flash memory to said buffer or for writing data from said buffer to the flash memory;
maintaining a correspondence between at least parts of a plurality of logical block addresses and at least parts of a plurality of physical block addresses wherein the plurality of logical block addresses are allotted to all of a plurality of logical blocks respectively, each of the plurality of logical blocks is divided into a plurality of logical pages, the plurality of physical block addresses are allotted to all of the plurality of physical blocks respectively, and the correspondence between the logical block addresses and the physical block addresses dynamically changes each time data is re-written in the flash memory;
generating a physical page address in accordance with the logical page address stored in the address register based on the correspondence;
controlling data transfer between the buffer and one of the plurality of physical pages corresponding to the physical page address, wherein the data transfer is carried out with one of the plurality of physical pages as one unit; and
providing the computer with random access to each of all data regions of said buffer within the range of memory addresses assigned to said buffer in an access unit of the memory address space of the computer, by referring to said address buffer.
5. A flash memory system comprising:
a flash memory having a plurality of physical blocks, wherein each of the plurality of physical blocks is a minimum erasing unit and divided into a plurality of physical ages each of which is a processing unit in data reading operation and data writing operation carried out in the flash memory;
a buffer which stores data read from said flash memory or data to be written to said flash memory, wherein a range of a plurality of memory addresses corresponding to capacity of said buffer is assigned to said buffer within a memory address space of a computer;
an address buffer which stores one of the plurality of memory addresses corresponding to a first portion of the address data from the computer;
a first interface module which provides the computer with random access to each of all data regions of said buffer within the range of memory addresses assigned to said buffer in an access unit of the memory address space of the computer, by referring to said address buffer;
an address register which stores a logical page address corresponding to a second portion of the address data, wherein the logical page address indicates a logical page for reading data from the flash memory to said buffer or for writing data from said buffer to the flash memory;
a maintaining module which maintains a correspondence between at least parts of a plurality of logical block addresses and at least parts of a plurality of physical block addresses, wherein the plurality of logical block addresses are allotted to all of a plurality of logical blocks respectively, each of the plurality of logical blocks is divided into a plurality of logical pages, the plurality of physical block addresses are allotted to all of the plurality of physical blocks respectively, and the correspondence between the logical block addresses and the physical block addresses dynamically changes each time data is re-written in the flash memory;
an address generating module which generates a physical page address in accordance with the logical page address stored in said address register based on the correspondence maintained by said maintaining module; and
a second interface module which controls data transfer between said buffer and one of the plurality of physical pages corresponding to the physical page address generated by said address generating module, wherein the data transfer is carried out with one of the plurality of physical pages as one unit.
1. A memory controller for controlling access from a computer to a flash memory having a plurality of physical blocks based on address data from the computer, wherein each of the plurality of physical blocks is a minimum erasing unit and divided into a plurality of physical pages each of which is a processing unit in data reading operation and data writing operation carried out in the flash memory, the memory controller comprising:
a buffer which stores data read from the flash memory or data to be written to the flash memory, wherein a range of a plurality of memory addresses corresponding to capacity of said buffer is assigned to said buffer within a memory address space of the computer;
an address buffer which stores one of the plurality of memory addresses corresponding to a first portion of the address data;
a first interface module which provides the computer with random access to each of all data regions of said buffer within the range of memory addresses assigned to said buffer in an access unit of the memory address space of the computer, by referring to said address buffer;
an address register which stores a logical page address corresponding to a second portion of the address data, wherein the logical page address indicates a logical page for reading data from the flash memory to said buffer or for writing data from said buffer to the flash memory;
a maintaining module which maintains a correspondence between at least parts of a plurality of logical block addresses and at least parts of a plurality of physical block addresses wherein the plurality of logical block addresses are allotted to all of a plurality of logical blocks respectively, each of the plurality of logical blocks is divided into a plurality of logical pages, the plurality of physical block addresses are allotted to all of the plurality of physical blocks respectively, and the correspondence between the logical block addresses and the physical block addresses dynamically changes each time data is re-written in the flash memory;
an address generating module which generates a physical page address in accordance with the logical page address stored in said address register based on the correspondence maintained by said maintaining module; and
a second interface module which controls data transfer between said buffer and one of the plurality of physical pages corresponding to the physical page address generated by said address generating module, wherein the data transfer is carried out with one of the plurality of physical pages as one unit.
2. The memory controller according to
3. The memory controller according to
4. The memory controller according to
6. The flash memory system according to
7. The flash memory system according to
8. The flash memory system according to
11. The method according to
12. The method according to
specifying one of the plurality of physical pages corresponding to the physical page address as a source or destination of the data transfer.
|
1. Field of the Invention
The present invention relates to a flash memory controller, a memory control circuit that includes the controller, a flash memory system, and a method for controlling data exchange between a host computer and a flash memory.
2. Description of the Related Art
In recent years, flash memories are widely adopted in semiconductor memories used in memory systems, such as memory cards and silicon disks. The flash memory is a kind of nonvolatile memory. Data stored in the flash memory is requested to be maintained, even when electric power is not supplied.
A NAND type flash memory is a kind of flash memory that is especially used in the above memory systems. Each of the plurality of memory cells included in the NAND type flash memory can be changed from an erasing state, where data indicating a logical value of “1” is stored, to a writing state, where data indicating a logical value of “0”, independent from other memory cells. In contrast, in a case where at least one memory cell from a plurality of memory cells, must be changed from a writing state to an erasing state, each memory cell can not change, independently from the other memory cells. At this time, in a predetermined number of memory cells, referred to as blocks, all the memory cells must become an erasing state at the same time. This total erasing operation is generally referred to as “block erasing”.
The reason why flash memories have the characteristic described above, is because it was assumed that flash memories would be handled in the same way as hard disk drives (HDD) in a computer system. A flash memory system that adopted a flash memory having this characteristic is ordinarily in conformity with standards of HDD, such as ATA (Advanced Technology Attachment). Therefore, in a computer system that has the above flash memory connected to a host computer, the host computer handles the flash memory system in the same way as an ordinary HDD.
However, a flash memory system in conformity with standards of HDD can not be connected to a host computer that does not have a specific interface adapted for HDD standards. In a case where a control circuit for controlling a flash memory is independent from the flash memory itself, there are cases where it is convenient to apply the control circuit to the memory interface of the host computer.
A controller which makes pseudo access possible, such as access to a direct volatile memory from outside, in accordance with instructions from an external bus, when data transferring is not carried out, is disclosed in Unexamined Japanese Patent Application KOKAI Publication No. 2002-328836. The controller disclosed in this reference can record data read from a flash memory, to RAM, and the RAM has a storage capacity corresponding to a few pages in a NAND type flash memory. As opposed to the aforementioned art, it is desirable to provide an easier structure for flexible access from a host computer to a flash memory.
The object of the present invention is to provide a flash memory controller that can be applied to a memory interface of a host computer, a memory control circuit that can applied to the controller, a flash memory system, and method for controlling data exchange between the host computer and the flash memory.
A flash memory controller according to a first aspect of the present invention comprises:
a buffer used for exchanging data with a host computer and a flash memory;
a first control block which controls data exchange operation between the buffer and the host computer, based on control signals and address signals supplied from the host computer, and
a second control block which controls data exchange operation between the buffer and the flash memory, in a one-page size of the flash memory.
Further, the flash memory controller may comprise at least one information memory that can be accessed by the host computer, wherein
the second control block may control data exchange operation between the buffer and the flash memory, based on information set in the information memory.
At least one address included in a memory address space or an I/O address space of the host computer, may be allotted individually to the information memory.
Data capacity of the buffer may be one-page size of the flash memory; and
addresses included in memory address space of the host computer may be allotted corresponding to one-page size of the flash memory, to said buffer.
The second control block may sequentially read data for transferring to the flash memory from the buffer, in an order from start address to end address of the buffer, when data stored in the buffer is written to the flash memory; and
the second control block may sequentially write data transferred from the flash memory to the buffer, in an order from start address to end address of the buffer, when data read from the flash memory is stored in the buffer.
The first control block may provide the host computer with random access to stored data of the buffer.
The buffer may include a plurality of data regions that has a plurality of addresses allotted individually; wherein
the first control block may write data indicated by data signals supplied from the host computer to data regions that have addresses designated by address signals supplied from the host computer, when data supplied from the host computer is stored in the buffer; and
the first control block may read stored data from data regions that have addresses designated by address signals supplied from the host computer, to output data signals to the host computer, when data stored in the buffer is transferred to the host computer.
A memory control circuit according to a second aspect of the present invention comprises:
a main processor;
a buffer used for data exchange between the main processor and an external flash memory;
a first controller which controls data exchange between the buffer and the main processor, based on control signals and address signals supplied from the main processor; and
a second controller which controls data exchange between the buffer and the flash memory, at a one-page size of the flash memory.
The memory control circuit may further comprise at least one information memory, which can be accessed by the main processor, wherein
the second controller may control data exchange between the buffer and the flash memory, based on information set in the information memory, by the main processor.
At least one address included in a memory address space or an I/O address space of said main processor may be allotted individually to the information memory.
Data capacity of the buffer may be one-page size of the flash memory; and
addresses included in memory address space of the main processor may be allotted, corresponding to one-page size of the flash memory, to the buffer.
The second controller may sequentially read data for transferring to the flash memory from the buffer, in an order from start address to end address of the buffer, when data stored in the buffer is output to the memory; and
the second controller may sequentially write data transferred from the flash memory to the buffer, in an order from start address to end address of the buffer, when data input by the flash memory is stored in the buffer.
The first controller may provide the main processor with random access to stored data of the buffer.
The buffer may include a plurality of data regions that has a plurality of addresses allotted individually;
the first controller may write data indicated by data signals supplied from the main processor, to data regions that have addresses designated by address signals supplied from the main processor, when data supplied from the main processor is stored in the buffer; and
the first controller may read stored data from data regions that have addresses designated by address signals supplied from the main processor, to output data signals to the main processor, when data stored in the buffer is transferred to the main processor.
A flash memory system according to a third aspect of the preset invention comprises:
a flash memory that has a memory space allotted to a plurality of pages;
a buffer used for data exchange between an external host computer and the flash memory;
a first control block which controls data exchange between the buffer and the host computer, based on control signals and address signals supplied from the host computer; and
a second control block which controls data exchange between the buffer and the flash memory, in a one-size page of the flash memory.
The flash memory system may further comprise at least one information memory which can be accessed by the host computer, wherein
the second control block may control data exchange between the buffer and the flash memory, based on information set in the information memory.
At least one address included in a memory address space or an I/O address space of the main processor may be allotted individually to the information memory.
Data capacity of the buffer may be one-page size of the flash memory; and
addresses included in memory address space of the main processor may be allotted, corresponding to one-page size of the flash memory, to the buffer.
The second control block may sequentially read data for transferring to the flash memory from the buffer, in an order from start address to end address of the buffer, when data stored in the buffer is written to the memory; and
the second control block may sequentially write data transferred from the flash memory to the buffer, in an order from start address to end address of the buffer, when data read from the flash memory is stored in the buffer.
The first control block may provide the host computer with random access to stored data of the buffer.
The buffer may include a plurality of data regions that has a plurality of addresses allotted individually;
the first control block may write data indicated by data signals supplied from the host computer to data regions that have addresses designated by address signals supplied from the host computer, when data supplied from the host computer is stored in the buffer; and
the first control block may read stored data from data regions that have addresses designated by address signals supplied from the host computer, to output data signals to the host computer, when data stored in the buffer is transferred to the host computer.
A method for controlling data exchange between a host computer and a flash memory, according to a fourth aspect of the present invention, comprises:
a first control step of controlling data exchange between the host computer and a buffer whose data capacity is one-page size of the flash memory, by a first controller, based on control signals and address signals supplied from the host computer; and
a second control step of controlling data exchange between the buffer and the flash memory, in a one-page size of the flash memory, by a second controller.
The second control step may include:
sequentially reading data for transferring to the flash memory from the buffer, in an order from a start address to an end address of the buffer, by the second controller, when data stored in the buffer is written into the flash memory; and
sequentially writing data transferred from the flash memory to the buffer, in an order from a start address to an end address of the buffer, by the second controller, when data read from the flash memory is stored in the buffer.
The buffer may include a plurality of data regions that have a plurality of addresses individually allotted; and
the first control step may include
writing data indicated by data signals supplied from the host computer to data regions that have addresses designated by address signals supplied from the host computer, by the first controller, when data supplied from the host computer is stored in the buffer, and
reading stored data from data regions that have addresses designated by address signals supplied from the host computer, for outputting data signals to the host computer by the first controller, when data stored in the buffer is transferred to the host computer.
These objects and other objects and advantages of the present invention will become more apparent upon reading of the following detailed description and the accompanying drawings in which:
The flash memory 2 shown in
As shown in
As shown in
In a case where reading voltage, which is pre-set for reading data stored in the memory cell 16, is not applied to the control gate electrode 23 of the memory cell 16 that is not in the erasing state, a channel is not formed on the surface of the p-type semiconductor substrate 17, between the source diffusion region 18 and the drain diffusion region 19. Therefore, the source diffusion region 18 and the drain diffusion region 19 are electrically-isolated.
On the contrary, in a case where reading voltage is applied to the control gate electrode 23 of the memory cell 16 that is in the erasing state, a channel (not shown) is formed on the surface of the p-type semiconductor substrate 17, between the source diffusion region 18 and the drain diffusion region 19. The source diffusion region 18 and the drain diffusion region 19 are electrically connected by the channel.
As described above, in a case where reading voltage is not applied to the control gate electrode 23 of the memory cell 16 that is not in the erasing state, the source diffusion region 18 and the drain diffusion region 19 are electrically-isolated. In a case where reading voltage is applied to the control gate electrode 23 of the memory cell 16 that is in the erasing state, the source diffusion region 18 and the drain diffusion region 19 are electrically connected.
As shown in
Data reading operation for specifying whether the memory cell 16 is in an erasing state or a writing state, will be described. A plurality of memory cells 16 are serially connected in the flash memory 2. One of the plurality of memory cells 16 is selected by the controller 3, for reading stored data. A predetermined low-level voltage is applied to the control gate 23 that is fixed on the selected one memory cell 16. On the other hand, a predetermined high-level voltage (reading voltage) is applied to the control gates 23 that are fixed on the non-selected memory cells 16, wherein the high-level voltage is higher than the low-level voltage. In this situation, it is detected whether the series of memory cells 16 conduct or not, by a predetermined detector. In a case where the detector detects conduction, the selected memory cell 16 is in a writing state. In a case where the detector detects non-conduction, the selected memory cell 16 is in an erasing state. As above, the flash memory 2 is designed to read out stored data indicating a logical value of “0” or “1” from one arbitrary memory cell 16 of the series of memory cells 16 connected serially.
When changing the state of the memory cell 16 between the erasing state and the writing state, an erasing voltage or a writing voltage, which are larger than the voltage used in data reading operation of the memory cell 16, is used. When changing a memory cell 16 that is in an erasing state to a writing state, a writing voltage is applied to the control gate electrode 23, so that the electric potential of the control gate electrode 23 becomes higher than the electric potential of the floating gate electrode 21. By this writing voltage, an FN (Fowler-Nordheim) tunnel current flows between the p-type semiconductor substrate 17 and the floating gate electrode 21 via the tunnel oxide film 20. As a result, electrons are injected to the floating gate electrode 21. On the other hand, when changing a memory cell 16 that is in a writing sate to an erasing state, erasing voltage is applied to the control gate electrode 23, so that the electric potential of the control gate electrode 23 becomes smaller than the electric potential of the floating gate electrode 21. By this erasing voltage, electrons accumulated at the floating gate electrode 21 are emitted from the p-type semiconductor substrate 17 via the tunnel oxide film 20.
The structure for storing data in the flash memory 2 will be described.
One page includes a data region 25 of 512 bytes, and a redundant region 26 of 16 bytes. The data region 25 stores user data supplied from the host computer 4. The redundant region 26 stores additional information such as Error Correction Code (ECC) generated by an ECC block 11. The error correction code is one of the additional information, and is used for correcting errors included in the data stored in the corresponding data region 25. In a case where the number of errors included in the data stored in the data region 25 is equal to or lower than a predetermined threshold value, those errors can be corrected by the error correction code. At this time, data read from the data region 25 is corrected to correct data by the error correction code.
The redundant region 26 stores “corresponding logic block address” other than the error correction code. In a case where effective data is stored in at least one data region 25 included in one block, the corresponding logic block address shows the address of the logic block corresponding to that block. The logic block address is determined based on a host address provided by the host computer 4. On the other hand, actual block address in the flash memory 2, is referred to as a physical block address.
In a case where effective data is not stored in every data region 27 included in one block, corresponding logic block address is not stored in the redundant region 26 included in that block. Therefore, by determining whether or not corresponding logic block address is stored in the redundant region 26, it can be determined whether data is erased or not in the block including that redundant region 26. In a case where corresponding logic block address is not stored in the redundant region 26, the block that includes the redundant region 26 is in a state where data is erased.
One block includes thirty-two pages. With the flash memory, overwriting of data can not be carried out. Therefore, even if only the data stored in one page is to be re-written, data stored in every page of that one block must be re-written. After at least one part of the data read out from every page of the one block, is changed, the data must be written into one of the erased blocks, in block units.
As above, when re-writing data, the re-written data is written into a block different from the block that the data was stored before. Therefore, the correspondence between the logic block address and the physical block address dynamically changes each time data is re-written in the flash memory 2. The correspondence between the logic block address and the physical block address is listed in an address conversion table. The address conversion table is stored in a work area 8 shown in
In
The functions of each part of the controller 3 will be described. The host interface control block 5 is a first control block for controlling operation of the host interface block 7. The micro processor 6 is a function block for controlling the entire operation of the controller 3.
The host interface block 7 is a function block for exchanging data, address, and other information indicating instructions, etc., with the host computer 7, under the control of the micro processor 6. When the flash memory system 1 is applied to the host computer 4, the flash memory system 1 and the host computer 4 are connected to each other via an external bus 13. Information supplied to the flash memory system 1 from the host computer 4, is loaded to the interior of the controller 3 through the host interface block 7. Information supplied to the host computer 4 from the flash memory system 1 is output to the host computer 4 through the host interface block 7.
The work area 8 is a memory module for temporarily storing data used for controlling the flash memory 2. For example, the work area 8 includes a plurality of SRAM (Static Random Access Memory) cells.
The buffer 9 is a function block for maintaining data read from the flash memory 2 and data to be written to the flash memory 2. The data read from the flash memory 2 is maintained in the buffer 9 until it is output to the host computer 4. The data to be written into the flash memory 2 is maintained in the buffer 9, until the flash memory 2 is ready for data writing operation.
The flash memory interface block 10 is a function block for exchanging information indicating data, address, status, and internal command, etc., with the flash memory 2 via an internal bus 14. The internal command is a command provided to the flash memory 2 from the controller 3.
The ECC block 11 is a function block for generating error correction code added to writing data to the flash memory 2. Additionally, the ECC block 11 carries out detection and correction of the errors included in reading data, based on error correction code included in data read out from the flash memory 2.
The flash sequencer block 12 is a second control block for controlling operation of the flash memory 2, based on the internal command. The flash sequencer block 12 sets the information used when the internal command is carried out, to a plurality of resistors. After information is set to the plurality of resistors, the flash sequencer block 12 carries out operation in accordance with the internal command, based on the information set in each resistor.
Processing for reading out data from the flash memory 2 to the buffer 9, and processing for writing in data from the buffer 9 to the flash memory 2 will be described.
The 1024 blocks 31a (B0000 to B1023) are managed as one zone. When the flash memory 2 includes a plurality of memory spaces 31, at least one erased block is secured for making writing of data possible, in each zone that corresponds to each memory space 31. Below, an erased block set possible to write in data is referred to as a writing candidate. In the data writing operation, data is written into a writing candidate block.
A pointer register 33 and a job register 34, shown in
As a first example, in a case where operation instructions set in the job register 34 indicates data reading operation, and a page address is set in the pointer register 33, information such as below, is set in the plurality of registers (not shown) that the flash sequencer block 12 comprises. First, an internal reading command is stored in a predetermined first register (not shown), which is set in the flash sequencer block 12, as an internal command. Second, a block address portion (logic block address) in a page address that is set in the pointer register 33 is converted to a corresponding block address (physical block address) in the flash memory 2. The converted page address is stored in a predetermined second register (not shown) in the flash sequencer block 12.
Based on the information set in the registers, the flash sequence block 12 controls the flash memory interface block 10 in accordance with the internal command. The flash memory interface block 10 supplies information indicating the internal command to the flash memory 2 via the internal bus 14. In the flash memory 2, stored data is sequentially read out in a unit of one byte, from data regions (A000 to A511) that correspond to the page address set in the second register of the flash sequencer block 12, in response to information output from the flash memory interface block 10. Data read from the flash memory 2 are sequentially stored in data regions (BF000 to BF511) of the buffer space 32. For example, the flash sequencer block 12 controls the flash memory interface block 10, so as to sequentially store data received from the flash memory 2 to data regions (BF000 to BF511) of the buffer space 32, in an order from a start address to an end address of the buffer space 32.
As a second example, in a case where operation instructions set in the job register 34 indicates data writing operation, and a page address is set in the pointer register 33, information such as below, is set in the plurality of registers (not shown) that the flash sequencer block 12 comprises. First, an internal writing command is stored in the first register (not shown) in the flash sequencer block 12, as an internal command. Second, a page address is generated based on page number portions that are the five lowest bits of the page address set in the pointer register 33 and the block address (physical block address) of the writing candidate block. The generated page address is stored in the second register (not shown) in the flash sequencer block 12.
Based on the information set in the registers, the flash sequencer block 12 controls the flash memory interface block 10 in accordance with the internal command. The flash memory interface block 10 supplies information indicating the internal command to the flash memory 2 via the internal bus 14. At the same time, the flash memory interface block 10 reads data stored in the data regions (BF000 to BF511) of the buffer space 32. Data read from the buffer space 32 is sequentially supplied to the flash memory 2, in a unit of one byte. For example, the flash sequencer block 12 controls the flash memory interface block 10, so as to read data for transferring to the flash memory 2 from the buffer space 32, in an order from a start address to an end address of the buffer space 32. In the flash memory 2, data supplied from the controller 3 is sequentially written into data regions (A000 to A511) that correspond to the page address set in second register of the flash sequencer block 12.
When the controller 3 exchanges sequential pages and data in the flash memory 2, “start page address” and “end page address” may be set in the pointer register 33. Page number portions, which are the five lowest bits of the page address set in the second register in the flash sequencer block 12, counts up by one from the “start page address” to the “end page address”. As a different setting, the “start page address” and the “number of pages” may be set in the pointer register 33. In this setting, the page number portions set in the second register in the flash sequencer 12 counts up by one, from the “start page address”. The count up operation is carried out until a number of tines that corresponds to “number of pages”.
Processing for reading data stored in the flash memory 2 to the host computer 4, and processing for writing data from the host computer 4 to the flash memory 2 will be described.
The buffer space 32 of the buffer 9 is allotted to memory regions (M10000 to M10512) that have 512 bytes, in the memory address space 38 of the host computer 4. Addresses for accessing to the pointer register 33 and the job register 34 are included in the memory address space 38 of the host computer 4. The addresses allotted to the pointer register 33 and the job register 34 in the memory address space 38 may be adequately set, in accordance with data capacity of the pointer register 33 and the job register 34. The addresses allotted to the pointer register 33 and the job register 34 in the memory address space 38 may be included in an I/O address space of the host computer 4.
When the controller 3 exchanges data between the buffer space 32 and the memory space 31 of the memory 2, an address counter 36 included in the controller 3, is set so that data of one page (512 bytes) is sequentially exchanged. For example, the address counter 36 is included in the flash sequencer 12. On the other hand, in a case where data is exchanged between the host computer 4 and the buffer 9, by using an address buffer 37, in the same way as a common static RAM, each data region in the buffer space 32 that has 512 bytes, is randomly accessed, based on address signals and control signals supplied from a predetermined address bus. For example, the address buffer 37 is included in the host interface control block 5.
Data capacity of the buffer space 32 is 512 (=29) bytes. Therefore, each data region of the buffer space 32 can be specified by an address of 9 bits. The lowest 9 bits of the address data supplied from the memory region 35 of the host computer 4, indicate address of each data region in the buffer space 32. Data indicating the address of each data region in the buffer space 32 is set in the address buffer 37. The host interface control block 5 makes access to each data region of the buffer space 32 possible by the host computer 4, based on the address data set in the address buffer 37. Among the address data supplied from the memory region 35 to the host computer 4, data that is not set in the address buffer 37, is used for determining whether data maintained in the buffer space 32 matches with a request from the host computer 4. This determining processing is carried out by for example, the micro processor 6.
In a case where the host computer 4 accesses to the buffer space 32 in a word (16 bits) unit, the lowest eight bits of the address data supplied by the memory space 35 of the host computer 4 may be set in the address buffer 37. Each data region of the buffer space 32 can be specified by an address of eight bits. At this time also, based on data that is not set in the address buffer 37, among the address data supplied from the memory region 35 to the host computer 4, the controller 3 can determine whether data maintained in the buffer space 32 matches with a request from the host computer 4.
Data reading operation by the memory region 35 the host computer 4 from the buffer space 32 and data writing operation to the buffer space 32 will be described with reference to the timing charts shown in
Between a page 31b (P00 to P31), which has a page address designated by the pointer register 33 in the memory space 31 of the flash memory 2, and the buffer space 32 of the buffer 9, data is sequentially exchanged from the beginning to end of the buffer space 32. In other words, data exchange between the flash memory 2 and the controller 3 is carried out, with the page in the flash memory 2 as one unit. The host computer 4 can exchange data randomly with an arbitrary data region included in the buffer space 32 of the buffer 9, by accessing to the memory region 35. The buffer space 32 of the buffer 9 has a memory capacity of 512 bytes, which is the same as one page in the memory space 31 of the flash memory 2. Therefore, the controller 3 can provide the host computer 4 with flexible access to the flash memory 2 in spite of the simple structure. Memory access to the flash memory 2 provided by the controller 3 is similar to access to a common static RAM.
Various embodiments and changes may be made thereunto without departing from the broad spirit and scope of the invention. For example, the controller 3 may control data exchange between the flash memory 2 and the host computer 4, independent from the flash memory system 1. The controller 3 may be built-in to the host computer 4. The pointer register 33 and the job register 34 may be replaced by an arbitrary memory, which makes random access from the host computer 4 possible.
The above-described embodiment is intended to illustrate the present invention, not to limit the scope of the present invention. The scope of the present invention is shown by the attached claims rather than the embodiment. Various modifications made within the meaning of an equivalent of the claims of the invention and within the claims are to be regarded to be in the scope of the present invention.
This application is based on Japanese Patent Application No. 2003-165656 filed on Jun. 10, 2003 and including specification, claims, drawings and summary. The disclosure of the above Japanese Patent Application is incorporated herein by reference in its entirety.
Terasaki, Yukio, Oyaizu, Tsuyoshi
Patent | Priority | Assignee | Title |
11042492, | Oct 24 2017 | Rambus Inc. | Memory module with programmable command buffer |
11615037, | Oct 24 2017 | Rambus Inc. | Memory module with programmable command buffer |
11886360, | Oct 24 2017 | Rambus Inc. | Memory module with programmable command buffer |
8443258, | Sep 29 2006 | Kioxia Corporation | Memory device including memory controller |
Patent | Priority | Assignee | Title |
5404485, | Mar 08 1993 | Sandisk IL Ltd | Flash file system |
6779062, | Sep 29 2000 | Intel Corporation | Streamlining ATA device initialization |
20020034096, | |||
20030091324, | |||
JP2001323301, | |||
JP2002088403, | |||
JP2002312232, | |||
JP2002328836, | |||
JP2002366429, | |||
JP2003091463, | |||
JP2003303728, | |||
JP5158782, | |||
JP7028700, | |||
JP9249902, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 04 2004 | TDK Corporation | (assignment on the face of the patent) | / | |||
Mar 22 2004 | OYAIZU, TSUYOSHI | TDK Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015308 | /0011 | |
Mar 24 2004 | TERASAKI, YUKIO | TDK Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015308 | /0011 |
Date | Maintenance Fee Events |
Mar 26 2010 | ASPN: Payor Number Assigned. |
Mar 06 2013 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 06 2017 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Apr 07 2021 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 20 2012 | 4 years fee payment window open |
Apr 20 2013 | 6 months grace period start (w surcharge) |
Oct 20 2013 | patent expiry (for year 4) |
Oct 20 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 20 2016 | 8 years fee payment window open |
Apr 20 2017 | 6 months grace period start (w surcharge) |
Oct 20 2017 | patent expiry (for year 8) |
Oct 20 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 20 2020 | 12 years fee payment window open |
Apr 20 2021 | 6 months grace period start (w surcharge) |
Oct 20 2021 | patent expiry (for year 12) |
Oct 20 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |