US20040193782A1 - Nonvolatile intelligent flash cache memory - Google Patents
Nonvolatile intelligent flash cache memory Download PDFInfo
- Publication number
- US20040193782A1 US20040193782A1 US10/821,238 US82123804A US2004193782A1 US 20040193782 A1 US20040193782 A1 US 20040193782A1 US 82123804 A US82123804 A US 82123804A US 2004193782 A1 US2004193782 A1 US 2004193782A1
- Authority
- US
- United States
- Prior art keywords
- flash memory
- mram
- data
- sector
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
- G06F2212/2146—Solid state disk being detachable, e.g.. USB memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
Definitions
- the present invention relates to computer memory systems and more particularly to the interface between a memory and a host.
- USB Universal Serial Bus
- An important feature of the USB interface is that the USB interface is a “plug-and-play” interface. Since the USB interface is plug-and-play, when a peripheral device is plugged into a USB port, the system will auto-detect and auto-configure the device.
- the USB interface is also designed to eliminate the need for multiple I/O interfaces because a USB interface can handle a wide variety of devices thereby simplifying system design.
- USB 2.0 can handle higher speed transfers than were possible with the prior versions of the USB standard.
- the USB 2.0 standard has been designed to handle speeds up to 480 Mbit per second.
- the USB 2.0 standard is designed so that it is backward compatible with earlier versions of the standard. Documents that define the USB standard are publicly available on the Internet and elsewhere.
- USB ports can be used to connect external mass storage devices to a host system.
- mass storage devices frequently referred to as “thumb drives” have gained widespread acceptance.
- Thumb drives are “thumb sized” memory devices that plug into a computer's USB port. That is, thumb drives are portable memory devices that connect to a host via a USB port.
- Thumb drives generally require no installation procedure. In many situations, such drives can serve as a high-capacity replacement for a floppy disk drive.
- thumb drives utilize flash memory as their storage medium.
- flash memory There are a number of different kinds of flash memory; however, thumb drives generally utilize what is known as NAND Flash memory, and NAND flash memory will hereinafter be generally referred to as flash memory.
- NAND Flash memory NAND flash memory will hereinafter be generally referred to as flash memory.
- An important feature of flash memory devices is that they can maintain stored data without any external source of power. Thus, a thumb drive can be removed from a computer without losing the data stored in the flash memory.
- the read operation in a flash memory is similar to the read operation in the older and less expensive Random Access Memory (RAM); however, the write operation is handled in a different manner.
- RAM Random Access Memory
- New data cannot be written to a location that already contains data unless the location is first erase.
- flash memories are divided into sectors and an entire sector must be erased before data can be written to any location within the sector.
- a relatively long time is required to write new data into a flash memory. The reason for this is that an entire sector must be first erased, and any existing data in the sector that one wants to preserve must be temporarily relocated prior to the time that the sector is erased.
- the write operation into a flash memory is relatively slow and it generally involves a number of steps.
- the following are examples of the time required for a typical write operation in a flash memory. It should be understood that these are merely examples and a wide variety of flash memory devices exist, each with its own individual characteristics.
- the first example is a ‘best case’ situation where the file size exactly matches the flash memory sector size. In most situations, this is an unlikely scenario; however, it can serve as a useful example. In this example, no partial-block movement occurs and the sector size is assumed to be 16 kilobytes (KB).
- a first step an erase sector operation is performed, taking approximately 3 milliseconds (milliseconds are hereinafter “ms”).
- ms milliseconds are hereinafter “ms”.
- ms milliseconds are hereinafter “ms”.
- a write operation for 512 bytes is performed, taking approximately 25.6 microseconds (microseconds are hereinafter “us”).
- a program operation for 512 bytes is performed, taking approximately 300 us.
- the second and third steps are then repeated 32 times for 16 KB of data which is the sector size.
- the total time taken for this operation is approximately 10.4 ms, giving an overall performance of:
- the USB 2.0 data rate is approximately 480 Mbits/sec.
- the writing speed in the above example is much slower than the rate at which data can be supplied using a USB 2.0 connection.
- a first step the 8 KB of existing data are transfer to a spare sector.
- the spare block is erased, taking approximately 3 ms.
- the 512 byte buffer is read taking approximately 25.6 us, and these 512 bytes are written into the spare sector, taking approximately 25.6 us.
- the 512 bytes are then programmed into the spare sector, taking approximately 300 us. The third to fourth steps are repeated 16 times for 8 KB, taking a total of approximately 8.62 ms.
- the 8 KB of new data is appended to the existing data in the spare sector.
- a fifth step we write 512 Bytes, taking approximately 25.6 us.
- a sixth step we program 512 Bytes, taking approximately 300 us. The fifth and sixth steps are repeated 16 times for a total for 8 KB, taking approximately 5.21 ms.
- the data in the spare sector is transferred back to the original sector.
- the original sector is erased taking approximately 3 ms.
- 512 Bytes are read from the spare sector, taking approximately 25.6 us.
- 512 Bytes are written to the original sector, taking approximately 25.6 us.
- the original sector is programmed, taking approximately 300 us. The second to fourth steps are repeated 32 times for 16 Kbytes, taking approximately 11.24 ms.
- the total time taken for the entire process is approximately 28 ms for an 8 KB data transfer.
- the net data rates are as follows:
- USB 2.0 connection is capable of a data rate of approximately 480 Mbits/sec.
- the USB connection can supply data many times faster than it can be written into the flash memory in the above example.
- One prior art solution for the above discrepancies in speed is to include an SRAM buffer in the interface between the USB connection and the flash memory. Data sent to the interface can then be temporarily stored in this buffer and written to the flash for permanent storage as needed.
- One problem that makes such a solution not particularly suitable for a thumb drive is that the SRAM is not a non-volatile memory. With such a system, if the thumb drive is removed from the system while data is still in the SRAM, the data will be lost.
- the present invention provides an improved interface between a USB connection and flash memory that can, for example, be flash memory in a thumb drive.
- An improved cache is provided between a USB and a flash memory to increase storage speed.
- the cache utilizes multiple banks of magnetic random access memory (MRAM).
- MRAM magnetic random access memory
- the size of each bank in the MRAM is at least as large as the size of a sector in the flash memory.
- the data received from the host is stored in one of the MRAM banks.
- data destined for only one sector of the flash memory is written in each particular MRAM bank; however, at different times, a particular MRAM bank can be associated with different flash memory sectors.
- the data stored in the MRAM bank is written to a sector in the flash memory.
- the MRAM has a relatively high write speed and thus data can be written at the speed data is transmitted on the USB bus. Furthermore, the MRAM is a non-volatile storage device, hence if the device is disconnected from the USB port on the host (or if power is otherwise removed), no data is lost.
- FIG. 1 is an overall system block diagram.
- FIG. 2 is a block diagram of the interface logic.
- FIG. 3 is a program flow diagram.
- the preferred embodiment shown herein provides an improved system for taking data from a USB and storing the data in a flash memory.
- the flash memory can, for example, be in a “thumb memory device” which is connected to a host by a USB connection.
- a thumb memory 12 is connected to a host 10 via a USB connection 11 .
- the host 10 has a USB port 102 , which preferably conforms to the USB 2.0 standard.
- the host processor 101 may for example be a personal computer with a microprocessor of the type marketed by the Intel Corporation.
- the host 10 may be operating under an operating system such as the Microsoft Windows XPTM operating system.
- the Microsoft Windows XP operating system includes drivers for controlling a USB port such as USB port 102 .
- the thumb memory 12 includes an embedded processor 103 , which provides an interface to the USB connection 11 .
- the main storage device in the thumb memory 12 is the NAND flash memory 106 .
- a magnetic random access memory 104 provides temporary storage as will be explained in detail later.
- Multi-port control logic 105 controls the transfer of information from embedded processor 103 to MRAM 104 and from MRAM 104 to Flash Memory 106 .
- FIG. 2 is a block diagram of the Multi-port control Logic 105 .
- the cable 11 is a USB cable that conforms to the USB 2.0 standards. Data can be sent from USB port 102 to embedded processors 103 . Data can also be transmitted from embedded processor 103 to USB port 102 via cable 102 . However, this embodiment is concerned with improving the speed that data can be stored in Flash memory 106 , hence, the following discussion will be primarily concerned with the transmission of data from USB port 102 to embedded processor 103 . It is noted that embedded processors that provide an interface to a USB connection are commercially available.
- the Multi-port control logic 105 has an interface “A” to embedded processor 103 , an interface “B” to MRAM 104 and an interface “C” to flash Memory 106 .
- the following is a general description of the three interfaces A, B and C.
- the MRAM memory 104 consists of commercially available Magnetic Random Access Memory (MRAM) cells. MRAM does not require an additional write cycle to write data and MRAM has read and write speeds typically associated with a standard RAM memory device. Furthermore, MRAM has the additional feature of non-volatility. Thus, if the thumb drive 12 is disconnected from the host 10 while data is stored in the MRAM 104 , no data will be lost. This is an important feature for a thumb drive which is designed to be easily connected and disconnected from a host.
- MRAM Magnetic Random Access Memory
- the MRAM 104 is organized in such a manner that it mimics the size and layout of flash memory 106 . That is, MRAM 104 has a number of memory banks and the size of each memory bank equals the size of a sector in flash memory 106 . Alternatively, the MRAM banks 104 could be larger, but not smaller, than the size of a sector in the flash memory. However, there are less MRAM banks than there are sectors in flash memory 106 .
- the host 10 seeks to store an amount of data that equals only a portion of the size of a sector in flash memory 106 , the data is stored in the nonvolatile MRAM prior to being transferred to the flash memory 106 . Since the size of a MRAM bank is greater than or equal to the size of a flash memory sector, data can be buffered in an MRAM bank until a complete or full sector of data is available for transfer to the flash memory 106 .
- a multi-level cache pipeline is established. This allows completed, full sectors of data to be written to the flash memory 106 , while other MRAM blocks in the pipeline are being filled by incoming data. This configuration facilitates the use of flash memory 106 in ‘streaming’ applications, where large amounts of data are being transferred.
- the MRAM banks are provided with sequencing and gating logic (shown in FIG. 2) that allows random or sequential access of the memory locations and the data within.
- Control signals such as Full-Flag, Empty-Flag, etc. could be provided in order to signal the control logic to take the appropriate action.
- Multi-port control Logic 105 interfaces designated A, B and C in FIG. 1 will now be explained.
- Interface A Between Multi-Port Control Logic 105 and Embedded Processor 103 :
- This interface provides a data source or destination for the Multi-port Logic 105 , and it is designed to be connected to an external device in order to facilitate data transfer to and from the thumb drive 12 . It contains or includes the necessary input/output buffers and busses to facilitate bi-directional movement of addresses, data and control signals to and from the Multi-port control Logic 105 .
- Interface B from the Multi-Port Logic 105 to the MRAM 104 is
- This interface provides address, data, and control signal interface to the MRAM 104 cells from the Multi-Port control Logic 105 .
- This interface would typically be a bi-directional bus/port in order to facilitate data movement to and from the MRAM. If the MRAM cells 104 are embedded in the same package or on the same die as Multi-Port control logic 105 , this bus would typically be an internal bus. However, if it was desirable to have the MRAM, or other, memory devices external to the Multi-port control Logic 105 , then interface B would also contain the necessary input/output buffers.
- the Multi-port control Logic 105 addresses and controls the MRAM cells in a manner that allows data to be written to, and read from, various memory locations. Since multiple MRAM blocks are employed (see FIG. 2) the Multi-port control logic 105 must be able to determine and control the switching from one MRAM block to another as the block is filled. Thus interface B must keep track of data addresses, byte-counts, etc. . . . as needed in order to perform this MRAM bank switching function. These registers are shown as registers 202 R in FIG. 2. As the host writes data intended for the flash memory 106 , the Multi-port control logic 105 , must route the data to an available MRAM bank and location.
- read operations from the flash memory to the host 10 are performed directly from the flash memory 106 to the host.
- the Multi-port control logic 105 keeps track of the data contained in the MRAM Bank(s) and directs the host-read request across interface B as needed.
- Interface C from the Multi-port Logic 105 to the NAND Flash Memory 106 is
- Interface C is connected to the flash memory 106 memory which is part of the thumb drive of this embodiment. This interface transfers data to the flash memory 106 which originates at host processor 10 .
- Interface C is a bi-directional bus which facilitates data movement to and from the flash memory 106 . It contains the necessary input/output buffers and busses.
- This interface is configured to allow connection of flash memory with a multi-bit parallel interface (address, data, and control), or the commonly used NAND flash interface (data, control). Many high density flash memory devices utilize this type of flash interface in order to reduce the pin count that would otherwise be necessary for addressing high density memory.
- the interface could be configured to allow hardware or software selection of the desired flash memory interface type, sector size, etc. or alternatively it could these parameters ‘fixed’ in its logic.
- the Multi-port control logic 105 must be capable of performing the necessary data movement to and from the MRAM blocks 104 and it must be capable of handling read and write operations to the attached flash memory 106 . If the attached flash memory is of the NAND flash variety, as it is in this particular embodiment, then the Multi-port control logic 105 is responsible for sequencing the data and commands as needed to cause the attached NAND flash to execute the proper data movement, read, or write sequences. If in an alternate embodiment, a parallel flash memory is used, the Multi-port control logic 105 would be responsible for generating the proper address, data, and control/command sequences necessary to perform the desired operation.
- the write operation from MRAM 104 to the flash memory 106 is under the control of the Multi-port control logic 105 .
- the Multi-port control logic 105 must determine when a MRAM bank had reached the full sector capacity, and transfer the MRAM bank contents to the associated flash memory locations. While this transfer is underway, the Multi-Port control logic 105 could also allow other MRAM banks to be written concurrently by the embedded microprocessor 103 , as needed.
- DA data that only fills a portion of a sector
- a DB addition data for sector A DC a large amount of additional data.
- DE data that fills sector E in flash 106.
- DF data that is destined for sector F in flash 106.
- MA an MRAM memory bank associated with sector A MB an MRAM memory bank associated with sector B ME an MRAM memory bank associated with sector E MF an MRAM memory bank associated with sector F
- Flash memory 106 is completely empty and the host processor 10 sends a command over USB bus 11 to write a small amount of data (hereinafter referred to as data DA) in a small number of addresses in sector A of flash memory 106 .
- data DA small amount of data
- the amount of data being written fills only a small portion of sector A in flash memory 106 .
- Multi-port logic 105 would realize that the data being written only constitutes a small portion of a sector. Hence, it would assign or associate one particular MRAM memory bank with the sector where data is being written. For future reference we will refer to the MRAM memory bank associated with sector A as MRAM bank “MA”. The data DA would then be written in MRAM data bank MA. This operation could occur quickly in that MRAM operates at a high speed.
- the host 10 sends a small amount of additional data (herein referred to as DB) to be written in other locations in the same sector A of the flash memory.
- DB additional data
- Multi-port control logic 105 would make two determinations. First, that the data being written is being written in memory sector A and, second, that MRAM memory bank MA has been associated with flash memory sector A. Data DB would therefore also be written in MRAM memory bank MA.
- the processor 10 sends a read request requesting the data DA.
- the Multi-port control logic 105 will realize that the data is stored in MRAM bank MA and it will retrieve the data from MRAM bank MA and send this data to the host via interface A and embedded processor 103 .
- the host sends a relatively large amount of data for storage in the flash memory.
- DC data hereinafter referred to as DC
- DE data that fills sector E
- DF data destined for sector F
- the Multi-port control logic 105 will direct data DE to an empty MRAM memory bank ME and data DF to an empty MRAM memory bank hereinafter designated MF.
- MRAM data bank ME the data in that bank is scheduled for writing to the corresponding sector in the flash memory.
- any additional incoming data for the sector is written to a different MRAM bank.
- the transfer of the full MRAM bank to the flash memory can occur at the same time that other data is being written to other MRAM banks.
- the number of operations that can occur simultaneously is a function of the size of the microprocessor (or logic) that is used to handle these operations.
- FIG. 2 is a more detailed block diagram of Multi-port control logic 105 including more detail concerning the interfaces A, B and C.
- FIG. 2 also shows details concerning MRAM 104 including the multiple memory banks in MRAM memory 201 A to 201 X. Note that the number of banks of MRAM and their size is a matter of engineering choice. Only three memory banks 201 A, 201 B and 201 X are shown in FIG. 2 for convenience of illustration.
- the buffers, logic, gating and registers shown in FIG. 2 are what form Multi-Port control logic 105 .
- interface control logic 206 L which controls gates 206 G.
- Interface control logic 206 L may be hard wired logic or it can be logic performed by a program operating in embedded processor 103 .
- the buffer 205 temporarily stores data sent to the thumb drive for storage.
- the address in which the data is to be stored is also temporarily stored in buffer 205 .
- the interface control logic 206 L controls the gating of the data between various units.
- Logic 206 L can be hard wired logic or it can be logic performed by a program operating in embedded processor 103 .
- FIG. 2 shows gates 206 . It should be understood that these gates may be distributed in various parts of a circuit. They are shown as a single block to facilitate illustration and explanation.
- Interface B includes a unit 202 that control the operation of MRAM 104 .
- Unit 202 includes sequencing logic 202 L, gating 202 G and registers 202 R.
- Registers 202 R are used to store addresses and byte counts which sequencing logic 202 L needs in order to gate data to and from the correct MRAM banks.
- Logic 202 L can be hard wired logic or it can be logic performed by a program operating in embedded processor 103 .
- the interface C includes a unit 207 that controls and gates information to the correct locations in flash memory 106 .
- Unit 207 is similar to the units normally used to control the flow of information into a flash memory.
- Unit 207 includes flash sequencing logic 207 L, gates 207 G and register 207 R.
- Registers 207 R store the information needed by sequencing logic 207 L to gate information to the correct place in flash memory 106 .
- Logic 207 L can be hard wired logic or it can be logic performed by a program operating in embedded processor 103 .
- FIG. 3 is a flow diagram of the operation of the system.
- the operations shown in FIG. 3 can be carried out under control of a program running in embedded processor 103 or they could be controlled by special purpose logic.
- the operations shown relate to transferring data from host 10 to flash memory 106 . It is the time of these storage operations that is shortened by the present embodiment. Reading data for Flash memory 206 is carried out in a normal manner.
- the process shown in FIG. 3 begins as indicated by block 301 when embedded processor 103 receives and decodes a command from host 10 to store certain data at specified locations in flash memory 106 .
- Embedded processor 103 translates this information from the format used to transmit data on USB bus 11 to the format used for data in flash memory 106 .
- Embedded processor 103 temporarily stores the information and addresses in buffer 205 .
- the data and associated addresses are then gated from interface A to interface B, that is, to unit 202 .
- the purpose of gating the information to unit 202 is so that it will be temporarily stored in one of the MRAM banks 201 A to 201 X.
- the data address is examined to determine the sector in memory 106 to which the data is directed. This merely involves examining the address in relationship to the beginning and end address for the sectors in memory 106 .
- a determination is made as to whether or not a MRAM bank has been associated with the particular sector to which the data is directed. If a MRAM bank has been associated with the sector, the data is stored in that MRAM bank as indicated by block 205 . If an MRAM bank has not been associated with the sector, an MRAM bank is assigned to the sector as indicated by block 306 and data is stored in the assigned sector as indicated by block 308 .
- the banks of MRAM memory are associated with sectors in the flash memory 106 only on a temporary basis. Once the data in an MRAM bank has been transferred to the associated sector in the flash memory, the association between-that memory bank and that sector in flash memory is finished. That MRAM bank is then available for association with a different sector as needed.
- USB 2.0 The embodiment described in detail herein utilizes the USB 2.0 standard. It should, however, be understood that other embodiments utilize the USB 1.0 standard. Still other embodiments utilize protocols that only partially conform to the USB 2.0 standard. Furthermore, still other embodiments utilize other types of high speed communication standards for transmitting data from the host to the embedded microprocessor.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
A cache between a USB and a flash memory: The cache utilizes multiple banks of Magnetic Random Access Memory (MRAM). The size of each bank in the MRAM corresponds to the size of a sector in the flash memory. Initially, the data received from the host is stored in one of the MRAM banks. At any particular time, data destined for only one sector of the flash memory is written in each particular MRAM bank. When an MRAM bank contains as much data as the capacity of a sector, the data stored in the bank is written to the corresponding sector in the flash memory. The MRAM has a relatively high write speed and thus data can be written at the speed data is transmitted on the USB bus. Furthermore, the MRAM is a non-volatile storage device, hence, if the device is disconnected from the USB port on the host (or if power is otherwise removed), no data is lost.
Description
- This application is a non-provisional application of provisional application serial No. 60/457,968 filed Mar. 26, 2003. Priority of application 60/457,968 is hereby claimed.
- The present invention relates to computer memory systems and more particularly to the interface between a memory and a host.
- The Universal Serial Bus (USB) is an interface standard that is designed to facilitate connecting a wide variety of external devices to a host computer. An important feature of the USB interface is that the USB interface is a “plug-and-play” interface. Since the USB interface is plug-and-play, when a peripheral device is plugged into a USB port, the system will auto-detect and auto-configure the device. The USB interface is also designed to eliminate the need for multiple I/O interfaces because a USB interface can handle a wide variety of devices thereby simplifying system design.
- There are various versions of the USB standard. The most recent version that is in widespread use is generally termed USB 2.0. USB 2.0 can handle higher speed transfers than were possible with the prior versions of the USB standard. The USB 2.0 standard has been designed to handle speeds up to 480 Mbit per second. The USB 2.0 standard is designed so that it is backward compatible with earlier versions of the standard. Documents that define the USB standard are publicly available on the Internet and elsewhere.
- USB ports can be used to connect external mass storage devices to a host system. Recently mass storage devices frequently referred to as “thumb drives” have gained widespread acceptance. Thumb drives are “thumb sized” memory devices that plug into a computer's USB port. That is, thumb drives are portable memory devices that connect to a host via a USB port. Thumb drives generally require no installation procedure. In many situations, such drives can serve as a high-capacity replacement for a floppy disk drive.
- Frequently thumb drives utilize flash memory as their storage medium. There are a number of different kinds of flash memory; however, thumb drives generally utilize what is known as NAND Flash memory, and NAND flash memory will hereinafter be generally referred to as flash memory. An important feature of flash memory devices is that they can maintain stored data without any external source of power. Thus, a thumb drive can be removed from a computer without losing the data stored in the flash memory.
- The read operation in a flash memory is similar to the read operation in the older and less expensive Random Access Memory (RAM); however, the write operation is handled in a different manner. In a RAM memory it is possible to write new data in individual memory locations. This is not possible in a flash memory. New data cannot be written to a location that already contains data unless the location is first erase. Furthermore, flash memories are divided into sectors and an entire sector must be erased before data can be written to any location within the sector. Thus, a relatively long time is required to write new data into a flash memory. The reason for this is that an entire sector must be first erased, and any existing data in the sector that one wants to preserve must be temporarily relocated prior to the time that the sector is erased.
- The write operation into a flash memory is relatively slow and it generally involves a number of steps. The following are examples of the time required for a typical write operation in a flash memory. It should be understood that these are merely examples and a wide variety of flash memory devices exist, each with its own individual characteristics.
- The first example is a ‘best case’ situation where the file size exactly matches the flash memory sector size. In most situations, this is an unlikely scenario; however, it can serve as a useful example. In this example, no partial-block movement occurs and the sector size is assumed to be 16 kilobytes (KB). In a first step, an erase sector operation is performed, taking approximately 3 milliseconds (milliseconds are hereinafter “ms”). In a second step, a write operation for 512 bytes is performed, taking approximately 25.6 microseconds (microseconds are hereinafter “us”). In a third step, a program operation for 512 bytes is performed, taking approximately 300 us. The second and third steps are then repeated 32 times for 16 KB of data which is the sector size. The total time taken for this operation is approximately 10.4 ms, giving an overall performance of:
- 1/(10.4 ms)*16384˜=1.57 MByte/sec˜12.6 Mbit/sec
- The USB 2.0 data rate is approximately 480 Mbits/sec. Thus, the writing speed in the above example is much slower than the rate at which data can be supplied using a USB 2.0 connection.
- The following is another example in which the file size does not match the flash memory sector-size. This is a more realistic example. This example requires partial-block movement operations. This example again assumes a 16KB flash sector size. In this example assume that a sector is partially filled with 8 KB of existing data and that there is a 512 byte flash buffer inside a NAND flash memory. In this example 8 KB of new data is written.
- In a first step, the 8 KB of existing data are transfer to a spare sector. In a second step the spare block is erased, taking approximately 3 ms. In a third step, the 512 byte buffer is read taking approximately 25.6 us, and these 512 bytes are written into the spare sector, taking approximately 25.6 us. In a fourth step, the 512 bytes are then programmed into the spare sector, taking approximately 300 us. The third to fourth steps are repeated 16 times for 8 KB, taking a total of approximately 8.62 ms.
- In another operation, the 8 KB of new data is appended to the existing data in the spare sector. In a fifth step, we write 512 Bytes, taking approximately 25.6 us. In a sixth step, we program 512 Bytes, taking approximately 300 us. The fifth and sixth steps are repeated 16 times for a total for 8 KB, taking approximately 5.21 ms.
- In yet another operation, the data in the spare sector is transferred back to the original sector. In a first step, the original sector is erased taking approximately 3 ms. In a second step, 512 Bytes are read from the spare sector, taking approximately 25.6 us. In a third step, 512 Bytes are written to the original sector, taking approximately 25.6 us. In a fourth step, the original sector is programmed, taking approximately 300 us. The second to fourth steps are repeated 32 times for 16 Kbytes, taking approximately 11.24 ms.
- The total time taken for the entire process is approximately 28 ms for an 8 KB data transfer. The net data rates are as follows:
- 1/28 ms*8192˜=293 KByte/sec=2.3 Mbit/sec
- As noted previously, a USB 2.0 connection is capable of a data rate of approximately 480 Mbits/sec. Thus, the USB connection can supply data many times faster than it can be written into the flash memory in the above example.
- One prior art solution for the above discrepancies in speed is to include an SRAM buffer in the interface between the USB connection and the flash memory. Data sent to the interface can then be temporarily stored in this buffer and written to the flash for permanent storage as needed. One problem that makes such a solution not particularly suitable for a thumb drive is that the SRAM is not a non-volatile memory. With such a system, if the thumb drive is removed from the system while data is still in the SRAM, the data will be lost.
- The present invention provides an improved interface between a USB connection and flash memory that can, for example, be flash memory in a thumb drive.
- An improved cache is provided between a USB and a flash memory to increase storage speed. The cache utilizes multiple banks of magnetic random access memory (MRAM). The size of each bank in the MRAM is at least as large as the size of a sector in the flash memory. Initially the data received from the host is stored in one of the MRAM banks. At any particular time, data destined for only one sector of the flash memory is written in each particular MRAM bank; however, at different times, a particular MRAM bank can be associated with different flash memory sectors. When an MRAM bank has been filled with enough data to fill a sector of the flash memory, the data stored in the MRAM bank is written to a sector in the flash memory. The MRAM has a relatively high write speed and thus data can be written at the speed data is transmitted on the USB bus. Furthermore, the MRAM is a non-volatile storage device, hence if the device is disconnected from the USB port on the host (or if power is otherwise removed), no data is lost.
- FIG. 1 is an overall system block diagram.
- FIG. 2 is a block diagram of the interface logic.
- FIG. 3 is a program flow diagram.
- The preferred embodiment shown herein provides an improved system for taking data from a USB and storing the data in a flash memory. The flash memory can, for example, be in a “thumb memory device” which is connected to a host by a USB connection.
- As shown in FIG. 1, a
thumb memory 12 is connected to ahost 10 via aUSB connection 11. Thehost 10 has aUSB port 102, which preferably conforms to the USB 2.0 standard. Thehost processor 101 may for example be a personal computer with a microprocessor of the type marketed by the Intel Corporation. Thehost 10 may be operating under an operating system such as the Microsoft Windows XP™ operating system. The Microsoft Windows XP operating system includes drivers for controlling a USB port such asUSB port 102. - The
thumb memory 12 includes an embeddedprocessor 103, which provides an interface to theUSB connection 11. The main storage device in thethumb memory 12 is theNAND flash memory 106. A magneticrandom access memory 104 provides temporary storage as will be explained in detail later.Multi-port control logic 105 controls the transfer of information from embeddedprocessor 103 toMRAM 104 and fromMRAM 104 toFlash Memory 106. FIG. 2 is a block diagram of theMulti-port control Logic 105. - The
cable 11 is a USB cable that conforms to the USB 2.0 standards. Data can be sent fromUSB port 102 to embeddedprocessors 103. Data can also be transmitted from embeddedprocessor 103 toUSB port 102 viacable 102. However, this embodiment is concerned with improving the speed that data can be stored inFlash memory 106, hence, the following discussion will be primarily concerned with the transmission of data fromUSB port 102 to embeddedprocessor 103. It is noted that embedded processors that provide an interface to a USB connection are commercially available. - The
Multi-port control logic 105 has an interface “A” to embeddedprocessor 103, an interface “B” toMRAM 104 and an interface “C” toflash Memory 106. The following is a general description of the three interfaces A, B and C. - The
MRAM memory 104 consists of commercially available Magnetic Random Access Memory (MRAM) cells. MRAM does not require an additional write cycle to write data and MRAM has read and write speeds typically associated with a standard RAM memory device. Furthermore, MRAM has the additional feature of non-volatility. Thus, if thethumb drive 12 is disconnected from thehost 10 while data is stored in theMRAM 104, no data will be lost. This is an important feature for a thumb drive which is designed to be easily connected and disconnected from a host. - The
MRAM 104 is organized in such a manner that it mimics the size and layout offlash memory 106. That is,MRAM 104 has a number of memory banks and the size of each memory bank equals the size of a sector inflash memory 106. Alternatively, theMRAM banks 104 could be larger, but not smaller, than the size of a sector in the flash memory. However, there are less MRAM banks than there are sectors inflash memory 106. When thehost 10 seeks to store an amount of data that equals only a portion of the size of a sector inflash memory 106, the data is stored in the nonvolatile MRAM prior to being transferred to theflash memory 106. Since the size of a MRAM bank is greater than or equal to the size of a flash memory sector, data can be buffered in an MRAM bank until a complete or full sector of data is available for transfer to theflash memory 106. - By employing multiple blocks of MRAM memory, a multi-level cache pipeline is established. This allows completed, full sectors of data to be written to the
flash memory 106, while other MRAM blocks in the pipeline are being filled by incoming data. This configuration facilitates the use offlash memory 106 in ‘streaming’ applications, where large amounts of data are being transferred. - By balancing the number of MRAM blocks with the write-speed of
flash memory 106, an almost continuous flow of data can be achieved. This is an improvement over prior art techniques which require the data source to wait while the slow flash write cycles ( and possible partial sector data movement) are performed. - The MRAM banks are provided with sequencing and gating logic (shown in FIG. 2) that allows random or sequential access of the memory locations and the data within. Control signals such as Full-Flag, Empty-Flag, etc. could be provided in order to signal the control logic to take the appropriate action.
- The
Multi-port control Logic 105 interfaces designated A, B and C in FIG. 1 will now be explained. - Interface A, Between
Multi-Port Control Logic 105 and Embedded Processor 103: - This interface provides a data source or destination for the
Multi-port Logic 105, and it is designed to be connected to an external device in order to facilitate data transfer to and from thethumb drive 12. It contains or includes the necessary input/output buffers and busses to facilitate bi-directional movement of addresses, data and control signals to and from theMulti-port control Logic 105. - Interface B from the
Multi-Port Logic 105 to the MRAM 104: - This interface provides address, data, and control signal interface to the
MRAM 104 cells from theMulti-Port control Logic 105. This interface would typically be a bi-directional bus/port in order to facilitate data movement to and from the MRAM. If theMRAM cells 104 are embedded in the same package or on the same die asMulti-Port control logic 105, this bus would typically be an internal bus. However, if it was desirable to have the MRAM, or other, memory devices external to theMulti-port control Logic 105, then interface B would also contain the necessary input/output buffers. - The
Multi-port control Logic 105 addresses and controls the MRAM cells in a manner that allows data to be written to, and read from, various memory locations. Since multiple MRAM blocks are employed (see FIG. 2) theMulti-port control logic 105 must be able to determine and control the switching from one MRAM block to another as the block is filled. Thus interface B must keep track of data addresses, byte-counts, etc. . . . as needed in order to perform this MRAM bank switching function. These registers are shown asregisters 202 R in FIG. 2. As the host writes data intended for theflash memory 106, theMulti-port control logic 105, must route the data to an available MRAM bank and location. Typically, read operations from the flash memory to thehost 10 are performed directly from theflash memory 106 to the host. However, if the data being requested by the host resides in a partially filled MRAM bank theMulti-port control logic 105 keeps track of the data contained in the MRAM Bank(s) and directs the host-read request across interface B as needed. - Interface C from the
Multi-port Logic 105 to the NAND Flash Memory 106: - Interface C is connected to the
flash memory 106 memory which is part of the thumb drive of this embodiment. This interface transfers data to theflash memory 106 which originates athost processor 10. Interface C is a bi-directional bus which facilitates data movement to and from theflash memory 106. It contains the necessary input/output buffers and busses. This interface is configured to allow connection of flash memory with a multi-bit parallel interface (address, data, and control), or the commonly used NAND flash interface (data, control). Many high density flash memory devices utilize this type of flash interface in order to reduce the pin count that would otherwise be necessary for addressing high density memory. The interface could be configured to allow hardware or software selection of the desired flash memory interface type, sector size, etc. or alternatively it could these parameters ‘fixed’ in its logic. - The
Multi-port control logic 105 must be capable of performing the necessary data movement to and from the MRAM blocks 104 and it must be capable of handling read and write operations to the attachedflash memory 106. If the attached flash memory is of the NAND flash variety, as it is in this particular embodiment, then theMulti-port control logic 105 is responsible for sequencing the data and commands as needed to cause the attached NAND flash to execute the proper data movement, read, or write sequences. If in an alternate embodiment, a parallel flash memory is used, theMulti-port control logic 105 would be responsible for generating the proper address, data, and control/command sequences necessary to perform the desired operation. - The write operation from
MRAM 104 to theflash memory 106 is under the control of theMulti-port control logic 105. TheMulti-port control logic 105 must determine when a MRAM bank had reached the full sector capacity, and transfer the MRAM bank contents to the associated flash memory locations. While this transfer is underway, theMulti-Port control logic 105 could also allow other MRAM banks to be written concurrently by the embeddedmicroprocessor 103, as needed. - The operation of the system will be explained with reference to FIGS. 2 and 3. However, prior to discussing FIGS. 2 and 3, the following simple examples illustrate the normal operation of the system. It should be understood that there are a limitless number of different sequences that are possible. The sequences given below were chosen to illustrate the different types of operations that occur and the operation of the system is not limited to these sequences.
- The following will be referenced in the following examples:
A a first sector of memory 106 B a second sector of memory 106.E another sector of memory 106.F another sector of memory 106.DA data that only fills a portion of a sector A DB addition data for sector A DC a large amount of additional data. DE data that fills sector E in flash 106.DF data that is destined for sector F in flash 106.MA an MRAM memory bank associated with sector A MB an MRAM memory bank associated with sector B ME an MRAM memory bank associated with sector E MF an MRAM memory bank associated with sector F - To begin assume:
-
Flash memory 106 is completely empty and thehost processor 10 sends a command overUSB bus 11 to write a small amount of data (hereinafter referred to as data DA) in a small number of addresses in sector A offlash memory 106. The amount of data being written fills only a small portion of sector A inflash memory 106. - In this example,
Multi-port logic 105 would realize that the data being written only constitutes a small portion of a sector. Hence, it would assign or associate one particular MRAM memory bank with the sector where data is being written. For future reference we will refer to the MRAM memory bank associated with sector A as MRAM bank “MA”. The data DA would then be written in MRAM data bank MA. This operation could occur quickly in that MRAM operates at a high speed. - To continue with this example, now assume that:
- The
host 10 sends a small amount of additional data (herein referred to as DB) to be written in other locations in the same sector A of the flash memory. -
Multi-port control logic 105 would make two determinations. First, that the data being written is being written in memory sector A and, second, that MRAM memory bank MA has been associated with flash memory sector A. Data DB would therefore also be written in MRAM memory bank MA. - Next assume that:
- The
processor 10 sends a read request requesting the data DA. - The
Multi-port control logic 105 will realize that the data is stored in MRAM bank MA and it will retrieve the data from MRAM bank MA and send this data to the host via interface A and embeddedprocessor 103. - Next assume:
- the host sends a relatively large amount of data for storage in the flash memory. Assume that the data hereinafter referred to as DC is destined for, and that it would fill an entire sector E in
flash memory 106 plus part of another sector F. The data that fills sector E is referred to as DE and the data destined for sector F is designated DF: - The
Multi-port control logic 105 will direct data DE to an empty MRAM memory bank ME and data DF to an empty MRAM memory bank hereinafter designated MF. As each MRAM data bank is filled (bank ME in this example) the data in that bank is scheduled for writing to the corresponding sector in the flash memory. During this operation, any additional incoming data for the sector is written to a different MRAM bank. The transfer of the full MRAM bank to the flash memory can occur at the same time that other data is being written to other MRAM banks. The number of operations that can occur simultaneously is a function of the size of the microprocessor (or logic) that is used to handle these operations. - FIG. 2 is a more detailed block diagram of
Multi-port control logic 105 including more detail concerning the interfaces A, B and C. FIG. 2 also showsdetails concerning MRAM 104 including the multiple memory banks inMRAM memory 201A to 201X. Note that the number of banks of MRAM and their size is a matter of engineering choice. Only threememory banks Multi-Port control logic 105. - The transfer of information across interfaces A, B, and C, that is, the transfer of information from embedded
processor 103,MRAM 104 andflash memory 106 is controlled byinterface control logic 206L which controlsgates 206G.Interface control logic 206L may be hard wired logic or it can be logic performed by a program operating in embeddedprocessor 103. - There is a
buffer 205 in interface A. Thebuffer 205 temporarily stores data sent to the thumb drive for storage. The address in which the data is to be stored is also temporarily stored inbuffer 205. Theinterface control logic 206L controls the gating of the data between various units.Logic 206L can be hard wired logic or it can be logic performed by a program operating in embeddedprocessor 103. FIG. 2 shows gates 206. It should be understood that these gates may be distributed in various parts of a circuit. They are shown as a single block to facilitate illustration and explanation. - Interface B includes a
unit 202 that control the operation ofMRAM 104.Unit 202 includessequencing logic 202L, gating 202G and registers 202R.Registers 202R are used to store addresses and byte counts whichsequencing logic 202L needs in order to gate data to and from the correct MRAM banks.Logic 202L can be hard wired logic or it can be logic performed by a program operating in embeddedprocessor 103. - The interface C includes a unit207 that controls and gates information to the correct locations in
flash memory 106. Unit 207 is similar to the units normally used to control the flow of information into a flash memory. Unit 207 includesflash sequencing logic 207L,gates 207G and register 207R.Registers 207R store the information needed by sequencinglogic 207L to gate information to the correct place inflash memory 106.Logic 207L can be hard wired logic or it can be logic performed by a program operating in embeddedprocessor 103. - FIG. 3 is a flow diagram of the operation of the system. The operations shown in FIG. 3 can be carried out under control of a program running in embedded
processor 103 or they could be controlled by special purpose logic. The operations shown relate to transferring data fromhost 10 toflash memory 106. It is the time of these storage operations that is shortened by the present embodiment. Reading data for Flash memory 206 is carried out in a normal manner. - The process shown in FIG. 3 begins as indicated by
block 301 when embeddedprocessor 103 receives and decodes a command fromhost 10 to store certain data at specified locations inflash memory 106. Embeddedprocessor 103 translates this information from the format used to transmit data onUSB bus 11 to the format used for data inflash memory 106. Embeddedprocessor 103 temporarily stores the information and addresses inbuffer 205. - As indicated by
block 302, the data and associated addresses are then gated from interface A to interface B, that is, tounit 202. The purpose of gating the information tounit 202 is so that it will be temporarily stored in one of theMRAM banks 201A to 201X. - As indicated by
block 303, the data address is examined to determine the sector inmemory 106 to which the data is directed. This merely involves examining the address in relationship to the beginning and end address for the sectors inmemory 106. Next as indicated byblock 304, a determination is made as to whether or not a MRAM bank has been associated with the particular sector to which the data is directed. If a MRAM bank has been associated with the sector, the data is stored in that MRAM bank as indicated byblock 205. If an MRAM bank has not been associated with the sector, an MRAM bank is assigned to the sector as indicated byblock 306 and data is stored in the assigned sector as indicated by block 308. - Next, a check is made as indicated by
blocks memory 106. If the MRAM bank is full, the associated sector inFlash memory 106 is erased and the data is transferred from the MRAM bank through interface C toflash memory 106 as indicated byblocks - It is noted that the banks of MRAM memory are associated with sectors in the
flash memory 106 only on a temporary basis. Once the data in an MRAM bank has been transferred to the associated sector in the flash memory, the association between-that memory bank and that sector in flash memory is finished. That MRAM bank is then available for association with a different sector as needed. - The specific preferred embodiment shown in the figures and described above relates to a thumb drive. It should be understood that various other embodiments are possible for various other types of memory devices that are connected to a host by a USB connection. For example, other embodiments are designed to increase the storage speed of other types of mass storage devices. It is also noted that the embodiment described herein utilizes NAND flash memory. Other embodiments may utilize other types of flash memory.
- The embodiment described in detail herein utilizes the USB 2.0 standard. It should, however, be understood that other embodiments utilize the USB 1.0 standard. Still other embodiments utilize protocols that only partially conform to the USB 2.0 standard. Furthermore, still other embodiments utilize other types of high speed communication standards for transmitting data from the host to the embedded microprocessor.
- It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention. Similarly, it should be appreciated that in the foregoing description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure and aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of this invention.
Claims (20)
1) A method storing data that is transmitted from a host to a flash memory via a bus, said method utilizing a cache memory that has banks of Magnetic Random Access Memory (MRAM), said flash memory being divided into sectors said method comprising the steps of;
associating a bank of MRAM memory with a sector to which data has been transmitted,
temporarily storing data transmitted to said flash memory in said associated bank of MRAM memory, and
transmitting data from a MRAM memory bank to the associated sector in said flash memory when said MRAM memory bank has been filed to the capacity of said sector:
2) The method recited in claim 1 wherein there are less banks of MRAM memory than there are sectors in said flash memory.
3) The method recited in claim 1 wherein said flash memory is NAND flash memory.
4) The method recited in claim 1 wherein said Flash memory and said MRAM memory are in a thumb drive.
5) The method recited in claim 1 wherein a MRAM data bank is disassociated from a sector in said flash memory when data from said MRAM bank is transmitted to the associated sector in said flash memory.
6) The method in claim 1 wherein said bus is a Universal Serial Bus (USB).
7) The method in claim 1 wherein each MRAM memory bank is at least as large as a sector in said flash memory.
8) A cache located between a bus and a flash memory, said bus transmitting data faster than the rate at which data can be directly stored in said flash memory, said flash memory being divided into sectors, said cache comprising;
a plurality of banks of Magnetic Random Access Memory (MRAM), each bank having at least a capacity equal to the size of a sector in said flash memory,
means for determining to which sector of said flash memory data is destined,
means for temporarily associating a bank of said MRAM with a sector of said flash memory to which data is destined,
means which stores data received from said USB in the associated MRAM bank, and
means which transfers data from an MRAM memory bank to the associated sector of said flash memory when said MRAM memory bank is full.
9) The cache recited in claim 8 wherein said bus is a Universal Serial Bus (USB).
10) The cache recited in claim 8 including an embedded processor that receives and decodes commands received from said serial bus.
11) The cache recited in claim 8 wherein said flash memory is NAND flash memory.
12) The cache recited in claim 8 wherein there are less banks of MRAM memory than there are sectors in said flash memory.
13) A thumb memory drive that includes the cache recited in claim 8 .
14) The cache recited in claim 8 wherein a MRAM data bank is disassociated from a sector in said flash memory when data from said MRAM bank is transmitted to the associated sector in said flash memory.
15) A method of operating a cache located between a Universal Serial Bus (USB) and a flash memory, said USB transmitting data faster than the rate at which data can be stored in said flash memory, said flash memory being divided into sectors, said cache comprising;
a plurality of banks of Magnetic Random Access Memory (MRAM), each bank having a size equal to at least the size of a sector in said flash memory,
said method comprising,
determining to which sector of said flash memory data is destined,
temporarily associating a bank of said MRAM with a sector of said flash memory to which data is destined,
temporarily storing data received from said USB in the associated MRAM bank, and
transferring data from an MRAM memory bank to the associated sector of said flash memory when said MRAM memory bank is filled with an amount of data equal to the size of said sector.
16) The method recited in claim 15 wherein there are less banks of MRAM memory than there are sectors in said flash memory.
17) The method recited in claim 15 wherein said flash memory is NAND flash memory.
18) The method recited in claim 15 wherein said flash memory and said MRAM memory are in a thumb drive.
19) The method recited in claim 15 wherein a MRAM data bank is disassociated from a sector in said flash memory when data from said MRAM bank is transmitted to the associated sector in said flash memory.
20) The method recited in claim 15 wherein said cache does not lose any data if power to said cache is lost.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/821,238 US20040193782A1 (en) | 2003-03-26 | 2004-03-25 | Nonvolatile intelligent flash cache memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US45796803P | 2003-03-26 | 2003-03-26 | |
US10/821,238 US20040193782A1 (en) | 2003-03-26 | 2004-03-25 | Nonvolatile intelligent flash cache memory |
Publications (1)
Publication Number | Publication Date |
---|---|
US20040193782A1 true US20040193782A1 (en) | 2004-09-30 |
Family
ID=32994903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/821,238 Abandoned US20040193782A1 (en) | 2003-03-26 | 2004-03-25 | Nonvolatile intelligent flash cache memory |
Country Status (1)
Country | Link |
---|---|
US (1) | US20040193782A1 (en) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003168A1 (en) * | 2002-05-31 | 2004-01-01 | Samsung Electronics Co., Ltd. | NAND flash memory interface device |
US20040225829A1 (en) * | 2003-05-09 | 2004-11-11 | Satoru Akiyama | Semiconductor device |
US20060026211A1 (en) * | 2004-07-30 | 2006-02-02 | United Parcel Service Of America, Inc. | Systems, methods, computer readable medium and apparatus for memory management using NVRAM |
US20060053238A1 (en) * | 2003-09-17 | 2006-03-09 | Ching-Fu Hung | Data exchangeable usb device and method therewith |
US20060136656A1 (en) * | 2004-12-21 | 2006-06-22 | Conley Kevin M | System and method for use of on-chip non-volatile memory write cache |
US20070011405A1 (en) * | 2005-07-11 | 2007-01-11 | Adusumilli Vijay P | High-speed interface for high-density flash with two levels of pipelined cache |
US20070038808A1 (en) * | 2005-07-13 | 2007-02-15 | Samsung Electronics Co., Ltd. | Data storage system with complex memory and method of operating the same |
US20070255898A1 (en) * | 2006-04-28 | 2007-11-01 | Kabushiki Kaisha Toshiba | Storage device using nonvolatile flash memory and control method thereof |
US20080046660A1 (en) * | 2006-08-18 | 2008-02-21 | Kabushiki Kaisha Toshiba | Information recording apparatus and control method thereof |
CN100399302C (en) * | 2006-07-27 | 2008-07-02 | 北京飞天诚信科技有限公司 | Method and apparatus for raising speed of access USB interface information safety equipment |
US7406572B1 (en) | 2004-03-26 | 2008-07-29 | Cypress Semiconductor Corp. | Universal memory circuit architecture supporting multiple memory interface options |
US20080301359A1 (en) * | 2004-12-16 | 2008-12-04 | Peter John Smith | Non-Volatile Memory and Method With Multi-Stream Updating |
US20090055556A1 (en) * | 2007-08-20 | 2009-02-26 | Ntt Docomo, Inc. | External storage medium adapter |
US20090282185A1 (en) * | 2006-06-30 | 2009-11-12 | Nxp B.V. | Flash memory device and a method for using the same |
US20100037001A1 (en) * | 2008-08-08 | 2010-02-11 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) |
US20100293323A1 (en) * | 2007-04-27 | 2010-11-18 | Byung-Gil Jeon | Semiconductor and Flash Memory Systems |
US20110060873A1 (en) * | 2003-09-29 | 2011-03-10 | Yoshiyuki Tanaka | Semiconductor storage device and method of controlling the same |
US20110119442A1 (en) * | 2009-11-13 | 2011-05-19 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
US20110153973A1 (en) * | 2006-12-20 | 2011-06-23 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
US20110228595A1 (en) * | 2010-03-22 | 2011-09-22 | Qualcomm Incorporated | Memory Cell That Includes Multiple Non-Volatile Memories |
US20130054870A1 (en) * | 2011-08-22 | 2013-02-28 | Byungcheol Cho | Network-capable raid controller for a semiconductor storage device |
US20130138875A1 (en) * | 2010-08-13 | 2013-05-30 | Thomson Licensing | Storing/reading several data streams into/from an array of memories |
US8688897B2 (en) | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US8756376B2 (en) | 2008-02-05 | 2014-06-17 | Spansion Llc | Mitigate flash write latency and bandwidth limitation with a sector-based write activity log |
WO2014100619A1 (en) * | 2012-12-20 | 2014-06-26 | Qualcomm Incorporated | Integrated mram cache module |
US9021186B2 (en) * | 2008-02-05 | 2015-04-28 | Spansion Llc | Partial allocate paging mechanism using a controller and a buffer |
US20150364162A1 (en) * | 2014-06-13 | 2015-12-17 | Sandisk Technologies Inc. | Multiport memory |
US20150370715A1 (en) * | 2014-06-19 | 2015-12-24 | Lsi Technologies Inc. | Safe and Efficient Dirty Data Flush for Dynamic Logical Capacity Based Cache in Storage Systems |
CN106201331A (en) * | 2015-05-05 | 2016-12-07 | 旺宏电子股份有限公司 | Method and apparatus for writing data and storage medium |
US10152410B2 (en) | 2014-03-28 | 2018-12-11 | Empire Technology Development Llc | Magnetoresistive random-access memory cache write management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5644539A (en) * | 1991-11-26 | 1997-07-01 | Hitachi, Ltd. | Storage device employing a flash memory |
US20020186589A1 (en) * | 2000-11-09 | 2002-12-12 | Hitachi, Ltd. | Nonvolatile semiconductor memory device |
US6513719B1 (en) * | 1999-08-05 | 2003-02-04 | Sony Corporation | Card-shaped semiconductor storage device and operation setting method of the same |
US20030120841A1 (en) * | 2001-12-21 | 2003-06-26 | Chang Matthew C.T. | System and method of data logging |
US20040044838A1 (en) * | 2002-09-03 | 2004-03-04 | Nickel Janice H. | Non-volatile memory module for use in a computer system |
-
2004
- 2004-03-25 US US10/821,238 patent/US20040193782A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5644539A (en) * | 1991-11-26 | 1997-07-01 | Hitachi, Ltd. | Storage device employing a flash memory |
US6513719B1 (en) * | 1999-08-05 | 2003-02-04 | Sony Corporation | Card-shaped semiconductor storage device and operation setting method of the same |
US20020186589A1 (en) * | 2000-11-09 | 2002-12-12 | Hitachi, Ltd. | Nonvolatile semiconductor memory device |
US20030120841A1 (en) * | 2001-12-21 | 2003-06-26 | Chang Matthew C.T. | System and method of data logging |
US20040044838A1 (en) * | 2002-09-03 | 2004-03-04 | Nickel Janice H. | Non-volatile memory module for use in a computer system |
Cited By (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003168A1 (en) * | 2002-05-31 | 2004-01-01 | Samsung Electronics Co., Ltd. | NAND flash memory interface device |
US6985778B2 (en) * | 2002-05-31 | 2006-01-10 | Samsung Electronics Co., Ltd. | NAND flash memory interface device |
US20040225829A1 (en) * | 2003-05-09 | 2004-11-11 | Satoru Akiyama | Semiconductor device |
US7636808B2 (en) * | 2003-05-09 | 2009-12-22 | Hitachi, Ltd. | Semiconductor device |
US20060053238A1 (en) * | 2003-09-17 | 2006-03-09 | Ching-Fu Hung | Data exchangeable usb device and method therewith |
US8904142B2 (en) | 2003-09-23 | 2014-12-02 | Kabushiki Kaisha Toshiba | Semiconductor memory system controlling writing of data to nonvolatile memories using consecutive logical addresses |
US20110060873A1 (en) * | 2003-09-29 | 2011-03-10 | Yoshiyuki Tanaka | Semiconductor storage device and method of controlling the same |
US8001337B2 (en) * | 2003-09-29 | 2011-08-16 | Kabushiki Kaisha Toshiba | Memory system with controller for managing management data and reverse flag for reversing write data |
US7996634B2 (en) * | 2003-09-29 | 2011-08-09 | Kabushiki Kaisha Toshiba | Memory system with controller for managing management data and reverse flag for reversing write data |
US20130145090A1 (en) * | 2003-09-29 | 2013-06-06 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling the same |
US20110060874A1 (en) * | 2003-09-29 | 2011-03-10 | Yoshiyuki Tanaka | Semiconductor storage device and method of controlling the same |
US20110060871A1 (en) * | 2003-09-29 | 2011-03-10 | Yoshiyuki Tanaka | Semiconductor storage device and method of controlling the same |
US8397035B2 (en) * | 2003-09-29 | 2013-03-12 | Kabushiki Kaisha Toshiba | Semiconductor memory system with first and second nonvolatile memories storing user and management data and a controller controlling read/write of the memories and having simultaneous data transfer in and out of one of the memories |
US8706978B2 (en) * | 2003-09-29 | 2014-04-22 | Kabushiki Kaisha Toshiba | Semiconductor storage device having nonvolatile flash and ram with simultaneous data copy and data receive |
US20110060872A1 (en) * | 2003-09-29 | 2011-03-10 | Yoshiyuki Tanaka | Semiconductor storage device and method of controlling the same |
US7406572B1 (en) | 2004-03-26 | 2008-07-29 | Cypress Semiconductor Corp. | Universal memory circuit architecture supporting multiple memory interface options |
US20060026211A1 (en) * | 2004-07-30 | 2006-02-02 | United Parcel Service Of America, Inc. | Systems, methods, computer readable medium and apparatus for memory management using NVRAM |
US7562202B2 (en) * | 2004-07-30 | 2009-07-14 | United Parcel Service Of America, Inc. | Systems, methods, computer readable medium and apparatus for memory management using NVRAM |
US20080301359A1 (en) * | 2004-12-16 | 2008-12-04 | Peter John Smith | Non-Volatile Memory and Method With Multi-Stream Updating |
US8151035B2 (en) | 2004-12-16 | 2012-04-03 | Sandisk Technologies Inc. | Non-volatile memory and method with multi-stream updating |
US7882299B2 (en) * | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US20060136656A1 (en) * | 2004-12-21 | 2006-06-22 | Conley Kevin M | System and method for use of on-chip non-volatile memory write cache |
WO2007008324A3 (en) * | 2005-07-11 | 2007-07-05 | Atmel Corp | High-speed interface for high-density flash with two levels of pipelined cache |
US7640398B2 (en) | 2005-07-11 | 2009-12-29 | Atmel Corporation | High-speed interface for high-density flash with two levels of pipelined cache |
US20070011405A1 (en) * | 2005-07-11 | 2007-01-11 | Adusumilli Vijay P | High-speed interface for high-density flash with two levels of pipelined cache |
WO2007008324A2 (en) * | 2005-07-11 | 2007-01-18 | Atmel Corporation | High-speed interface for high-density flash with two levels of pipelined cache |
KR101257848B1 (en) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | Data storing apparatus comprising complex memory and method of operating the same |
US8812771B2 (en) | 2005-07-13 | 2014-08-19 | Samsung Electronics Co., Ltd. | Data storage system with complex memory and method of operating the same |
US20090144501A2 (en) * | 2005-07-13 | 2009-06-04 | Samsung Electronics Co., Ltd. | Data storage system with complex memory and method of operating the same |
US20070038808A1 (en) * | 2005-07-13 | 2007-02-15 | Samsung Electronics Co., Ltd. | Data storage system with complex memory and method of operating the same |
US7689761B2 (en) | 2005-07-13 | 2010-03-30 | Samsung Electronics Co., Ltd. | Data storage system with complex memory and method of operating the same |
US20070255898A1 (en) * | 2006-04-28 | 2007-11-01 | Kabushiki Kaisha Toshiba | Storage device using nonvolatile flash memory and control method thereof |
US7631142B2 (en) * | 2006-04-28 | 2009-12-08 | Kabushiki Kaisha Toshiba | Method and apparatus for selectively storing data into cache or nonvolatile memory |
US20090282185A1 (en) * | 2006-06-30 | 2009-11-12 | Nxp B.V. | Flash memory device and a method for using the same |
CN100399302C (en) * | 2006-07-27 | 2008-07-02 | 北京飞天诚信科技有限公司 | Method and apparatus for raising speed of access USB interface information safety equipment |
US20080046660A1 (en) * | 2006-08-18 | 2008-02-21 | Kabushiki Kaisha Toshiba | Information recording apparatus and control method thereof |
US20110153973A1 (en) * | 2006-12-20 | 2011-06-23 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
US8670262B2 (en) * | 2006-12-20 | 2014-03-11 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
US8467244B2 (en) | 2007-04-27 | 2013-06-18 | Samsung Electronics Co., Ltd. | Multi-chip semiconductor devices having non-volatile memory devices therein |
US8300465B2 (en) * | 2007-04-27 | 2012-10-30 | Samsung Electronics Co., Ltd. | Semiconductor and flash memory systems |
US20100293323A1 (en) * | 2007-04-27 | 2010-11-18 | Byung-Gil Jeon | Semiconductor and Flash Memory Systems |
US20100312954A1 (en) * | 2007-04-27 | 2010-12-09 | Byung-Gil Jeon | Multi-Chip Semiconductor Devices Having Non-Volatile Memory Devices Therein |
US20090055556A1 (en) * | 2007-08-20 | 2009-02-26 | Ntt Docomo, Inc. | External storage medium adapter |
US9021186B2 (en) * | 2008-02-05 | 2015-04-28 | Spansion Llc | Partial allocate paging mechanism using a controller and a buffer |
US8756376B2 (en) | 2008-02-05 | 2014-06-17 | Spansion Llc | Mitigate flash write latency and bandwidth limitation with a sector-based write activity log |
US8745319B2 (en) * | 2008-08-08 | 2014-06-03 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store control information facilitating wear leveling |
US8140739B2 (en) * | 2008-08-08 | 2012-03-20 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table |
US20100037001A1 (en) * | 2008-08-08 | 2010-02-11 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) |
US20110119442A1 (en) * | 2009-11-13 | 2011-05-19 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
US8560770B2 (en) | 2009-11-13 | 2013-10-15 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
US8315081B2 (en) | 2010-03-22 | 2012-11-20 | Qualcomm Incorporated | Memory cell that includes multiple non-volatile memories |
US20110228595A1 (en) * | 2010-03-22 | 2011-09-22 | Qualcomm Incorporated | Memory Cell That Includes Multiple Non-Volatile Memories |
US8867258B2 (en) | 2010-03-22 | 2014-10-21 | Qualcomm Incorporated | Memory cell that includes multiple non-volatile memories |
US8688897B2 (en) | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US8688900B2 (en) | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US20130138875A1 (en) * | 2010-08-13 | 2013-05-30 | Thomson Licensing | Storing/reading several data streams into/from an array of memories |
US9026722B2 (en) * | 2010-08-13 | 2015-05-05 | Thomson Licensing | Storing/reading several data streams into/from an array of memories |
US20130054870A1 (en) * | 2011-08-22 | 2013-02-28 | Byungcheol Cho | Network-capable raid controller for a semiconductor storage device |
WO2014100619A1 (en) * | 2012-12-20 | 2014-06-26 | Qualcomm Incorporated | Integrated mram cache module |
US9378793B2 (en) | 2012-12-20 | 2016-06-28 | Qualcomm Incorporated | Integrated MRAM module |
US10152410B2 (en) | 2014-03-28 | 2018-12-11 | Empire Technology Development Llc | Magnetoresistive random-access memory cache write management |
US20150364162A1 (en) * | 2014-06-13 | 2015-12-17 | Sandisk Technologies Inc. | Multiport memory |
US9760481B2 (en) * | 2014-06-13 | 2017-09-12 | Sandisk Technologies Llc | Multiport memory |
US20150370715A1 (en) * | 2014-06-19 | 2015-12-24 | Lsi Technologies Inc. | Safe and Efficient Dirty Data Flush for Dynamic Logical Capacity Based Cache in Storage Systems |
US9524201B2 (en) * | 2014-06-19 | 2016-12-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Safe and efficient dirty data flush for dynamic logical capacity based cache in storage systems |
CN106201331A (en) * | 2015-05-05 | 2016-12-07 | 旺宏电子股份有限公司 | Method and apparatus for writing data and storage medium |
US10007446B2 (en) * | 2015-05-05 | 2018-06-26 | Macronix International Co., Ltd. | Method, apparatus, and storage medium for writing data into persistent storage device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040193782A1 (en) | Nonvolatile intelligent flash cache memory | |
US7215580B2 (en) | Non-volatile memory control | |
JP5619423B2 (en) | Hybrid solid-state memory system with volatile and non-volatile memory | |
US8495332B2 (en) | Controller for optimizing throughput of read operations | |
US8681552B2 (en) | System and method for accessing and storing interleaved data | |
US5822251A (en) | Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers | |
US7937523B2 (en) | Memory system with nonvolatile semiconductor memory | |
US7409473B2 (en) | Off-chip data relocation | |
US7243185B2 (en) | Flash memory system with a high-speed flash controller | |
US7441070B2 (en) | Method for accessing a non-volatile memory via a volatile memory interface | |
US20050055493A1 (en) | [method for accessing large block flash memory] | |
TWI473116B (en) | Multi-channel memory storage device and control method thereof | |
US20060294295A1 (en) | DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device | |
JP2015164090A (en) | multiple independent serial link memory | |
KR100673013B1 (en) | Memory controller and data processing system including it | |
JP2000067574A (en) | Semiconductor memory | |
JP2011517789A (en) | Large-capacity storage device that combines direct execution control function and storage function | |
US20080007569A1 (en) | Control protocol and signaling in a new memory architecture | |
US8180951B2 (en) | Memory system and method of controlling the memory system | |
KR100761374B1 (en) | Flash memory control method and device | |
KR20230063857A (en) | Storage device and electronic device | |
CN119002815A (en) | Data processing method, device, storage equipment and storage medium | |
JP2003178280A (en) | Memory card |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CYPRESS SEMICONDUCTOR CORP., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BORDUI, DAVID;REEL/FRAME:015708/0351 Effective date: 20040319 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |