Various types of memories are designed to be erased and programmed in large sections of the memory, and are generally referred to as flash memory. Such memory devices can sustain a limited number of erase cycles during their operational lifespan. The number of erase cycles that a flash memory can sustain and continue to reliably operate may be expressed as the endurance of the memory device. Generally, a given memory cell of a flash memory device can currently be erased between 10,000 and 100,000 times before it fails to reliably operate. The endurance of a memory device may depend on the semiconductor processes used to manufacture the device, and the architecture of the memory device.
Flash memory is common in various conventional electronic devices. When the endurance of the flash memory is exceeded, the performance of the flash memory and/or the electronic device containing the flash memory may be adversely impacted, or it may even stop operating. Accordingly, there is a continued need for improving the endurance of memory device such as flash memory.
In addition, flash memory devices come in various geometries and sizes, requiring different ECC protection, use different protocols, operate in single data rate (SDR) and/or double data rate (DDR) mode. Accordingly, there is continued need for improving the controller interface to operate with different flash memory devices.
Embodiments of the present technology are directed to virtualization of chip enable techniques. In one embodiment, a method of chip enable virtualization includes receiving a memory access request including a logical address. A virtual chip enable number in the logical address is converted to a physical chip enable utilizing a virtual chip enable data structure. One or more operating parameters are also determined from the virtual chip enable data structure. The logical address is then translated to a physical address. Thereafter, an applicable memory device may be enabled using the physical chip enable, and the memory access request may be routed to the applicable memory device where it is executed using the applicable operating parameters.
In another embodiment, a device includes a plurality of block programmable memory devices and a memory controller. The memory controller includes a virtual chip enable cache storing a plurality of virtual chip enable entries, wherein each entry includes a virtual chip enable number, a device identifier and operating parameters of a corresponding block programmable memory device.
Embodiments of the present technology are illustrated by way of example and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
Reference will now be made in detail to the embodiments of the present technology, examples of which are illustrated in the accompanying drawings. While the present technology will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present technology, numerous specific details are set forth in order to provide a thorough understanding of the present technology. However, it is understood that the present technology may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present technology.
Referring to
The circuit and memory cell architecture of the flash memory is such that new data is written to erased physical blocks 120 of the flash memory 230. Generally, if data is to be written to a physical block 120 that already contains data, then the physical block 120 has to be erased before the new data is programmed. If the blocks 120 of a flash memory 230 are accessed and written directly from software, non-uniform address patterns can result in unequal numbers of erasures across the plurality of physical blocks 120 of the memory 230. For example, if memory at one address is continuously written to, than the number of erasures would eventually exceed the endurance limit of the given physical block 120. Exceeding the endurance limit of the block 120 would reduce the operating lifetime of the flash memory device 230.
Referring now to
The electronic device 210 includes one or more processing units 220 communicatively coupled to system memory 230, a memory controller 240 and a plurality of block programmable memory devices 260 by one or more communication buses 260. The electronic device 210 may also include other circuits, such as input/output devices 270 and the like. In one implementation, the plurality of block programmable memory devices 250 may be flash memory devices. The flash memory devices may be Open NAND Flash Interface (ONFI) compliant devices. In one implementation, the memory controller 240 may enable access to the system memory 230, the block programmable memory devices 250 and other memory devices of the electronic device 210. In another implementation, the electronic device 210 may include a plurality of memory controllers, wherein one of the memory controllers is a dedicated block programmable memory controller 240. One or more of the block programmable memory devices 250 may be internal or external to the electronic device 210. The memory controller 240 may be integral to one or more other circuits of the electronic device 210 or may be a discrete device. For example, the memory controller may be integral to one or more memory devices, one or more processors, one or more other circuits (e.g., northbridge chip, graphics processing unit) and/or may be a separate dedicated controller.
The one or more block programmable memory devices 250 may have different operating parameters. For example, the flash memory devices may have different storage capacity (e.g., pages, blocks, spare blocks), have different timing requirements, use different protocols, require different error correcting code (ECC) protection, operate in single data rate (SDR) or double data rate (DDR) mode, may be single-level cell (SLC) or multi-level cell (MLC) devices, and/or the like. The same electronic device 210 may also be manufactured with one or more types of block programmable memory devices 250 at one time, and one or more different types of block programmable memory devices at another time. The memory controller 240 may also be utilized in other electronic devices with the same or different block programmable memory devices.
Although embodiments of the present technology are described herein with reference to a block programmable memory device and more particularly with reference to a flash memory device, the embodiments of the present technology may also be practiced with any other integrated circuit (IC) memory device. Embodiments of the present technology may be utilized with a plurality of integrated circuit memory devices, wherein the memory devices may have non-homogeneous operating parameters.
The memory controller 240 may be implemented by one or more means, such as hardware, firmware, and/or computing device readable instructions (e.g., software) and a processing unit (e.g., microcontroller), wherein the computing device readable instructions when executed by the processing unit cause the processing unit to perform one or more processes including chip enable (CE) virtualization. In one implementation, the memory controller 240 is a non-volatile memory host controller interface (NVMCHI).
The memory controller 240 implements virtualization of chip enables to support abstraction of a plurality of block programmable memory devices 250 that may be the same or different from one another. The memory controller 240 performs operations on virtual chip enables (CE), rather than the physical chip enables. The virtual chip enables (VCE) can be specified in a VCE data structure 280 that the memory controller 240 programs after an initial discovery process. Each VCE entry may include a VCE number (e.g., tag), a device identifier, and one or more operating parameters of the block programmable memory devices. The device identifier may identify a physical or logical device, or physical or logical partition of the device. For example, the device identifier may be decoded to select a physical chip enable (CD) pin of a device, to select a logical unit (LUN) within a device, and/or the like. A given VCE may cover multiple physical memory devices. In addition, two VCEs may cover a single physical memory device. Accordingly, a virtual chip enable may be associated with one or more logical or physical partitions of one or more block programmable memory devices. The operating parameters, of the block programmable memory devices 250, may include information regarding pin mappings, geometry (e.g., page size, sector size, number of logical unit, number of blocks per logical units, number of pages per block and the like), degree of ECC protection, protocol use and/or the like. In one implementation, firmware of the memory controller operates on virtual chip enables (VCEs) as logical targets, while hardware of the memory controller enforces correct routing and functionality.
A memory controller, such as a non-volatile memory host interface controller (NVMHCI), may present to an operating system (OS) a concept of a port to present a single entity of storage. Accordingly, virtualization of chip enables advantageously allows the grouping of non-homogeneous block programmable memory devices into a single NVMHCI port.
In an exemplary implementation, the electronic device may include both multi-level cell (MLC) and single level cells (SLC) on the same flash memory die. The type of flash memory is determined by the address. However, wear-leveling algorithms typically operate on full chip enables (CEs) or logical units (LUNs). Virtualization of the chip enables allows wear-leveling algorithms to be applied across a plurality of non-homogeneous block programmable memory devices. Virtualization of the chip enables allows the same level of abstraction to be maintained regardless of how the flash devices are physically partitioned. In the chip enable virtualization techniques, a single physical chip enable (CE) can be split into separate fully independent virtual chip enables when presented to the memory controller. The memory controller utilizes the virtual chip enable data structure to apply the correct ECC, size operations, and the like to access both the multi-level cells and single level cell partitions without the operating system having to know the corresponding parameters of the flash memory device. In another implementation, virtualization of chip enables re-mapping to give the memory controller a way to manage more chip enables than there are hardware resources.
Referring now to
After the setup phase is completed, the memory controller may operate in the memory access phase. In the memory access phase, a memory access request including a logical address is received, at 320. The memory access request may be received by the memory controller from an operating system or application running on the electronic device. At 325, a VCE number in the logical address is converted to a device identifier of one or more flash memory devices, and applicable operating parameters for the corresponding physical memory device are determined using the virtual chip enable data structure. In one implementation, the flash memory controller converts a VCE number to a chip enable and determines the applicable operating parameters using the virtual chip enable data structure. At 330, the logical address is translated to a physical address. The logical address may be translated to a physical address across one or more physical or logical devices using a given wear-leveling algorithm. In one implementation, the memory controller also translates the logical address to a physical address utilizing a page table, translation look-aside buffer and/or the like. At 335, the applicable block programmable memory device is enabled using the physical chip enable, the memory access command is routed to the applicable memory device, and thereafter the applicable memory device executes the memory access request using the applicable operating parameters. In one implementation, the memory controller enables the applicable block programmable memory device using the device identifier, routes the memory access command to the applicable memory device, and causes the applicable memory device to execute the memory access request using the applicable operating parameters
The virtual chip enable is a construct that advantageously includes the attributes that correspond to a unique target for the memory controller. The attributes may be utilized to access the corresponding memory device, implement a wear-level algorithm, provide for operation of a non-volatile memory host controller interface (NVMHCI), and the like. Embodiments advantageously allow block programmable memory device, running at different speeds, protocol standards and/or the like, to be mixed and matched on a system.
The foregoing descriptions of specific embodiments of the present technology have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the present technology and its practical application, to thereby enable others skilled in the art to best utilize the present technology and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
4360916 | Kustedjo et al. | Nov 1982 | A |
5343481 | Kraft | Aug 1994 | A |
5533035 | Saxena et al. | Jul 1996 | A |
5603001 | Sukegawa et al. | Feb 1997 | A |
5734926 | Feeley et al. | Mar 1998 | A |
5787279 | Rigoutsos | Jul 1998 | A |
5878279 | Athenes | Mar 1999 | A |
6000006 | Bruce et al. | Dec 1999 | A |
6119196 | Muller et al. | Sep 2000 | A |
6222144 | Nishikawa | Apr 2001 | B1 |
6223144 | Barnett | Apr 2001 | B1 |
6636940 | Hodges | Oct 2003 | B1 |
6760743 | Heddes et al. | Jul 2004 | B1 |
6772276 | Dover | Aug 2004 | B2 |
6985977 | Vrancic | Jan 2006 | B2 |
7100103 | Mizrachi et al. | Aug 2006 | B2 |
7237016 | Schober | Jun 2007 | B1 |
7386683 | Blumrich et al. | Jun 2008 | B2 |
7392330 | Weatherspoon | Jun 2008 | B2 |
7454546 | Lilley | Nov 2008 | B1 |
7457897 | Lee et al. | Nov 2008 | B1 |
7603523 | Blumrich et al. | Oct 2009 | B2 |
7689998 | Chrysanthakopoulos | Mar 2010 | B1 |
7761636 | Mott et al. | Jul 2010 | B2 |
7877254 | Luan et al. | Jan 2011 | B2 |
7877524 | Annem et al. | Jan 2011 | B1 |
7979615 | Spitzer | Jul 2011 | B1 |
8103836 | Blumrich et al. | Jan 2012 | B2 |
8108590 | Chow et al. | Jan 2012 | B2 |
8694750 | Vyshetsky et al. | Apr 2014 | B2 |
8732350 | Vyshetsky et al. | May 2014 | B2 |
20020078270 | Hofstee et al. | Jun 2002 | A1 |
20020161941 | Chue et al. | Oct 2002 | A1 |
20030172147 | Chang | Sep 2003 | A1 |
20040044811 | Vrancic | Mar 2004 | A1 |
20040186946 | Lee | Sep 2004 | A1 |
20050057973 | Khatami et al. | Mar 2005 | A1 |
20050097182 | Bishop et al. | May 2005 | A1 |
20050097183 | Westerlin | May 2005 | A1 |
20050160200 | Saito | Jul 2005 | A1 |
20050289253 | Edirisooriya et al. | Dec 2005 | A1 |
20060004931 | Weatherspoon | Jan 2006 | A1 |
20060075395 | Lee | Apr 2006 | A1 |
20060136570 | Pandya | Jun 2006 | A1 |
20060152981 | Ryu | Jul 2006 | A1 |
20060236039 | Golander | Oct 2006 | A1 |
20070073920 | Wu et al. | Mar 2007 | A1 |
20070174495 | Tung | Jul 2007 | A1 |
20080034153 | Lee et al. | Feb 2008 | A1 |
20080126684 | Wu et al. | May 2008 | A1 |
20080140910 | Flynn et al. | Jun 2008 | A1 |
20080250195 | Chow et al. | Oct 2008 | A1 |
20080270681 | Van Acht et al. | Oct 2008 | A1 |
20090002761 | La et al. | Jan 2009 | A1 |
20090070520 | Mizushima | Mar 2009 | A1 |
20090100307 | Lee | Apr 2009 | A1 |
20090138654 | Sutardja | May 2009 | A1 |
20090150605 | Flynn | Jun 2009 | A1 |
20090287876 | Yeh | Nov 2009 | A1 |
20090300318 | Allen et al. | Dec 2009 | A1 |
20100146171 | Takemae | Jun 2010 | A1 |
20100268864 | Ramiya Mothilal | Oct 2010 | A1 |
20110055668 | Kim et al. | Mar 2011 | A1 |
20110131354 | Smith | Jun 2011 | A1 |
Number | Date | Country |
---|---|---|
101419842 | Apr 2009 | CN |
101470663 | Jul 2009 | CN |
0502211 | Sep 1992 | EP |
1271332 | Jan 2003 | EP |
1840722 | Oct 2007 | EP |
2004110436 | Apr 2004 | JP |
2004110438 | Apr 2004 | JP |
2007034581 | Feb 2007 | JP |
2008158991 | Jul 2008 | JP |
Entry |
---|
8273A High Performance Programmable DMA Controller' datasheet by Intel, Oct. 1989. |
Express Apps—PEX 8311 ' by PLX Technology, Jan. 2006. |
Wikipedia—Microcontroller article found on http://web.archive.org from Nov. 27, 2007. |
Advanced Semiconductor Memories Architecture, Designs, and Applications, Ashok Sharma, IEEE Press, 2003, at 393-401. |
Gupta, A. et al: DFTL: A Flash Translation Layer Employing Demand—based Selective Caching of Page—level Address Mappings. In: Proceedings of the 14th international conference on Architectural support for programming languages and operating systems, ASPLOS '09, Mar. 7-11, 2009, Washington, DC, USA. pp. 229-240. |
Number | Date | Country | |
---|---|---|---|
20110161561 A1 | Jun 2011 | US |