1. Technical Field
The present invention relates to non-volatile memory, and more specifically, to systems and methods for improving the performance of non-volatile memory operations performed in a storage subsystem.
2. Description of the Related Art
Non-volatile memory (NVM) manufacturers typically build in timing cycles to accommodate the time that is needed to complete page program and block erase operations. For flash memory, a typical page program cycle may last about 200-250 μs, with a maximum of 500-750 μs, and a typical block erase cycle may last about 1.5 ms, with a maximum of 2 ms. However, timing is not uniform across the physical NVM devices and the actual time it takes to complete a page program or block erase operation can vary. Therefore, in many systems, a controller that executes such an operation is required to constantly poll the status register in a programming loop until the operation is completed. The time spent in this waiting state is often wasted and system performance suffers as a result.
Disclosed herein are systems and methods for optimizing non-volatile memory (NVM) operations in a storage subsystem. The systems and methods recognize and recapture potentially unused processing time in common page program and block erase operations. In one embodiment, a characterization module within a controller executes a characterization procedure by performing random page program and block erase operations on one or more NVM devices in an array. Actual time values for the NVM devices obtained from the characterization procedure are then stored in a calibration table. The characterization procedure may be executed at start-up, or periodically as triggered by certain monitored events such as every 1,000th hour of power-on time so that the values in the calibration table are reflective of the actual physical condition of the individual NVM devices.
A task manager uses these time values in the calibration table to estimate the time needed for completing certain memory operations. Based on the estimated time for completion, the task manager assigns certain tasks, including memory or non-memory operations, to be executed during page program and/or block erase cycles, so that otherwise unused processing time can be efficiently utilized.
Preferred embodiments of the invention will now be described with reference to the drawings summarized below. These drawings and the associated description are provided to illustrate preferred embodiments of the invention, and not to limit the scope of the invention.
Systems and methods for improving the performance of non-volatile memory operations will now be described with reference to the drawings. Where possible, the same reference numbers are used throughout the drawings to refer to the same or like components. This description is intended to illustrate certain preferred embodiments, but other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the benefits and features set forth herein, are also within the scope of this invention. Thus, nothing in this detailed description is intended to suggest that any particular feature or component is essential. The invention is defined by the claims.
In one embodiment, the solid-state storage subsystem 112 comprises a controller 114 and a non-volatile memory (NVM) array 116. The NVM array 116 may, but need not, be implemented using NAND memory components. As is conventional, the controller 114 is configured (typically via firmware) to write data to, and read data from, the NVM array 116 in response to commands from the host 110. The controller may implement a wear-leveling algorithm to distribute write operations across memory blocks of the NVM array 116. The storage subsystem 112 may be in the form of a detachable device and may communicate with any standard or unique communications interface, including but not limited to parallel ATA, serial ATA, RS232/423, PCMCIA, USB, Firewire (IEEE-1394), FibreChannel, PCI Express bus, SD/MMC, SCSI, or SAS. The storage subsystem 112 may also receive its power from the host 110 over this interface.
As discussed in detail below, as the controller 114 performs write operations to the NVM array 116, it updates a non-user-data area of the array (i.e., an area not exposed to the host's operating system) with usage statistics information reflective of the number of program/erase cycles that have been executed. This information preferably includes a set of counters, with different counters corresponding to different blocks or areas of the memory array; however, the usage statistics may be maintained in any of a variety of formats. These counters are initially set to zero (or some other selected starting value) when the device is manufactured or first initialized, and are incremented over time as program/erase cycles are performed. In some embodiments, the usage statistics data stored in the memory subsystem 112 also includes timestamps, or other temporal data, received from the host. This temporal data may be used to calculate the useful life of the subsystem 112 in terms of time (e.g., days and hours), as may be desirable for some applications.
The storage subsystem 112 may, for example, be a solid-state memory card that plugs into a slot of the host system 110 and complies with at least one of the following card specifications: CompactFlash, PCMCIA, SmartMedia, MultiMediaCard, SecureDigital, Memory Stick, and ATA/ATAPI. The storage subsystem 112 may, for example, have a housing and signal interface that complies with one of the following specifications: sub 1 inch hard disk drive, 1.8 inch hard disk drive, 2.5 inch hard disk drive and 3.5 inch hard disk drive. A custom form factor and/or signal interface may alternatively be used.
In one embodiment, the controller 114 executes a firmware program to perform processes as described herein and comprises an ATA flash disk controller, for example, a commercially available ATA flash disk controller. The controller 114 may alternatively be implemented using another type of device, such as an application-specific integrated circuit (ASIC), or may comprise multiple distinct devices. Further, although the controller 114 preferably executes firmware, a controller that does not execute a firmware program may be used.
The NVM array 116 comprises a plurality of solid-state storage devices 118 coupled to the controller 114. The solid-state storage devices 118 may comprise, for example, flash integrated circuits, Chalcogenide RAM (C-RAM), Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NAND memory, NOR memory, EEPROM, Ferroelectric Memory (FeRAM), or other discrete NVM chips. The solid-state storage devices 118 may be physically divided into blocks, pages and sectors, as is known in the art.
The host system 110 exchanges control signals 122 with the controller 114 to coordinate the reading and writing of data to and from the solid-state storage (NVM) devices 118. The controller 114 handles the read and write operations by sending memory control signals 120 to the NVM array 116. The control signals 122 may include, for example, read commands and write commands. The control signals 122 may be used to send commands selected from, for example, industry standard command sets such as those provided by ATA, CF card or PC card standards to read from or write data to standard storage devices. The host system 110 also exchanges data signals 124 with the controller 114. The data signals may include, for example, data to be written to the NVM array 116, data read from the NVM array, and data that relate to monitored conditions and usage statistics of the NVM array.
Major NVM manufacturers typically build in timing cycles to accommodate the time that is needed to complete page program and block erase operations. For flash memory, a typical page program cycle lasts about 200-250 μs, with a maximum of 500-750 μs, and a typical block erase cycle lasts about 1.5 ms, with a maximum of 2 ms.
In both of the above operations, a substantial amount of processor time in the controller is unused as a result of waiting for either a page program or block erase operation to complete. Because there is a wide disparity between the typical and maximum timing of each operation, the controller is unable to anticipate how long this wait time lasts and thus cannot effectively make use of this “wasted” processor time. The disclosed systems and methods enable the processor to perform other tasks, including memory or non-memory operations, while these memory operations are taking place.
The page program and block erase operations are shown as examples only. Those skilled in the art will recognize that embodiments of the invention are applicable to other memory or non-memory operations as well.
In one embodiment, NVM devices are characterized by the characterization module 126 within the controller 114 in order to measure the actual times involved in page program and block erase operations. With the actual time values recorded, the controller can thus anticipate expected wait time during these operations and may perform background tasks, such as housekeeping and streamlining data, during page program and block erase operations. One embodiment provides a characterization function that is run at power-up and/or some other time. In one embodiment, the characterization function performs, for testing purposes, sampled page program and block erase commands on each NVM device within the storage subsystem and stores the execution times in a calibration table. In another embodiment, the characterization module 126 observes and records execution time data related to memory operations that take place during the normal course of operation of the storage sub-system. In other embodiments, the characterization module 126 may store separate execution time data related memory operations for particular blocks. These program and erase times are used to approximate the time needed for actual operations.
Because the timing of page program and block erase operations can vary over the life of the NVM device or change as a result the operating environment, the characterization function may be run at periodic intervals so that values stored in the calibration table remain reflective of the actual operation times of the devices. For example, re-characterization may be used with a monitoring mechanism associated with the NVM so that re-characterization is triggered by one or more monitored events, such as:
1) when there is a temperature change of, for example, every 10 degrees C.,
2) when there is an NVM usage increase or decrease of, for example, every 10%,
3) when the NVM array has been operating for a certain period (for example, at every 1,000th hour of power-on time),
4) when the NVM array has been powered up for a certain amount of time (for example, at every 10th power-up), and/or
5) when the supply voltage level to the NVM array changes by a certain threshold amount (for example, every 0.1 V for a standard 3.3V supply voltage).
Further examples of trigger events and an example monitoring mechanism for NVM are fully described in co-pending U.S. patent application Ser. No. 11/429,936, filed May 8, 2006, the disclosures of which are hereby fully incorporated by reference. In one embodiment, the characterization module 126 stores, and the task manager 128 uses, different sets of calibration data for different monitored environmental conditions. For example, for each block the characterization module 126 could store two sets of execution times, one for a first temperature range, and the other for a second temperature range.
In one embodiment, the task manager 128 performs two basic functions: a time assignment function and a task assignment function.
Then at state 604, the task manager 128 selects one or more tasks from the task table 402 to be executed during the execution of the current NVM operation. In the example mentioned above, the task manager finds tasks to be executed within the allotted 1.5 ms. At state 606, the task manager determines if there is still time left in the allotted time for additional tasks. In one embodiment, additional tasks are added until there is no task left that can be executed within the remaining time. Once the last task is added, the task manager 128 causes the selected tasks to be executed in state 608. In one embodiment, the tasks from the task table can be selected out of turn as long as they can be executed during the available time slot. For example, the task manager 128 may select “Other function 1” and “Other function 2” to be executed during the 1.5 ms allotted, since both of those tasks only add up to 1.25 ms (700 μs+550 μs).
Having described the two primary functions of the task manager 128,
Embodiments of this invention can be, and typically would be, implemented solely in the storage subsystem, such that no special hardware or software needs to be added to the host. Alternatively, all of the methods and processes described above may be embodied in, and fully automated via, software code modules executed by one or more general purpose computers or processors. The code modules may be stored in any type of computer-readable medium or other computer storage device. Some or all of the methods may alternatively be embodied in specialized computer hardware. In addition, the components referred to herein may be implemented in hardware, software, firmware, or a combination thereof.
In general, the word “module,” as used herein, refers to logic embodied in hardware and/or firmware, or to a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, Java, Lua, C or C++. A software module may be compiled and linked into an executable program, installed in a dynamic link library, or may be written in an interpreted programming language such as, for example, BASIC, Perl, or Python. It will be appreciated that software modules may be callable from other modules or from themselves, and/or may be invoked in response to detected events or interrupts. Software instructions may be embedded in firmware, such as an EPROM. It will be further appreciated that hardware modules may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors. The modules described herein can be implemented in hardware (general purpose or application-specific), software, and/or firmware. Generally, the modules described herein refer to logical modules that may be combined with other modules or divided into sub-modules despite their physical organization or storage.
Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.
Any process descriptions, elements, or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those skilled in the art.
It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4644494 | Muller | Feb 1987 | A |
| 4937736 | Chang et al. | Jun 1990 | A |
| 5018096 | Aoyama | May 1991 | A |
| 5640529 | Hasbun | Jun 1997 | A |
| 5768189 | Takahashi | Jun 1998 | A |
| 5781783 | Gunther et al. | Jul 1998 | A |
| 5860137 | Raz et al. | Jan 1999 | A |
| 5929590 | Tang | Jul 1999 | A |
| 6052799 | Li et al. | Apr 2000 | A |
| 6134631 | Jennings, III | Oct 2000 | A |
| 6173360 | Beardsley et al. | Jan 2001 | B1 |
| 6286087 | Ito et al. | Sep 2001 | B1 |
| 6324627 | Kricheff et al. | Nov 2001 | B1 |
| 6484229 | Ichikawa et al. | Nov 2002 | B1 |
| 6633963 | Ellison et al. | Oct 2003 | B1 |
| 6640268 | Kumar | Oct 2003 | B1 |
| 6654850 | Fox et al. | Nov 2003 | B2 |
| 6661724 | Snyder et al. | Dec 2003 | B1 |
| 6694381 | Lo et al. | Feb 2004 | B1 |
| 6792519 | Constable et al. | Sep 2004 | B2 |
| 6856556 | Hajeck | Feb 2005 | B1 |
| 6968434 | Kamano et al. | Nov 2005 | B2 |
| 7003644 | Heath et al. | Feb 2006 | B2 |
| 7024410 | Ito et al. | Apr 2006 | B2 |
| 7114051 | Guu et al. | Sep 2006 | B2 |
| 7126857 | Hajeck | Oct 2006 | B2 |
| 7139871 | Mizuno | Nov 2006 | B2 |
| 7139890 | Moran et al. | Nov 2006 | B2 |
| 7149046 | Coker et al. | Dec 2006 | B1 |
| 7170788 | Wan et al. | Jan 2007 | B1 |
| 7213117 | Wakabayashi et al. | May 2007 | B2 |
| 7224604 | Lasser | May 2007 | B2 |
| 7287118 | Chang et al. | Oct 2007 | B2 |
| 7307881 | Chen et al. | Dec 2007 | B2 |
| 7315917 | Bennett et al. | Jan 2008 | B2 |
| 7330954 | Nangle | Feb 2008 | B2 |
| 7408804 | Hemink et al. | Aug 2008 | B2 |
| 7430136 | Merry, Jr. et al. | Sep 2008 | B2 |
| 7441067 | Gorobets et al. | Oct 2008 | B2 |
| 7447807 | Merry et al. | Nov 2008 | B1 |
| 7450436 | Salessi et al. | Nov 2008 | B2 |
| 7467253 | Yero | Dec 2008 | B2 |
| 7502256 | Merry, Jr. et al. | Mar 2009 | B2 |
| 7509441 | Merry et al. | Mar 2009 | B1 |
| 7515471 | Oh et al. | Apr 2009 | B2 |
| 7596643 | Merry, Jr. et al. | Sep 2009 | B2 |
| 7609565 | Lee | Oct 2009 | B2 |
| 7653778 | Merry, Jr. et al. | Jan 2010 | B2 |
| 7654466 | Maeda et al. | Feb 2010 | B2 |
| 7685337 | Merry, Jr. et al. | Mar 2010 | B2 |
| 7685338 | Merry, Jr. et al. | Mar 2010 | B2 |
| 7685374 | Diggs et al. | Mar 2010 | B2 |
| 7733712 | Walston et al. | Jun 2010 | B1 |
| 7765373 | Merry et al. | Jul 2010 | B1 |
| 7870128 | Jensen et al. | Jan 2011 | B2 |
| 7898855 | Merry, Jr. et al. | Mar 2011 | B2 |
| 7912991 | Merry et al. | Mar 2011 | B1 |
| 7936603 | Merry, Jr. et al. | May 2011 | B2 |
| 7962792 | Diggs et al. | Jun 2011 | B2 |
| 8078918 | Diggs et al. | Dec 2011 | B2 |
| 8090899 | Syu | Jan 2012 | B1 |
| 8095851 | Diggs et al. | Jan 2012 | B2 |
| 8108692 | Merry et al. | Jan 2012 | B1 |
| 8122185 | Merry, Jr. et al. | Feb 2012 | B2 |
| 8127048 | Merry et al. | Feb 2012 | B1 |
| 8135903 | Kan | Mar 2012 | B1 |
| 8151020 | Merry, Jr. et al. | Apr 2012 | B2 |
| 8161227 | Diggs et al. | Apr 2012 | B1 |
| 8166245 | Diggs et al. | Apr 2012 | B2 |
| 8243525 | Kan | Aug 2012 | B1 |
| 8254172 | Kan | Aug 2012 | B1 |
| 8261012 | Kan | Sep 2012 | B2 |
| 8296625 | Diggs et al. | Oct 2012 | B2 |
| 8312207 | Merry, Jr. et al. | Nov 2012 | B2 |
| 8316176 | Phan et al. | Nov 2012 | B1 |
| 8341339 | Boyle et al. | Dec 2012 | B1 |
| 8375151 | Kan | Feb 2013 | B1 |
| 8392635 | Booth et al. | Mar 2013 | B2 |
| 8397107 | Syu et al. | Mar 2013 | B1 |
| 8407449 | Colon et al. | Mar 2013 | B1 |
| 8423722 | Deforest et al. | Apr 2013 | B1 |
| 8433858 | Diggs et al. | Apr 2013 | B1 |
| 8443167 | Fallone et al. | May 2013 | B1 |
| 8447920 | Syu | May 2013 | B1 |
| 8458435 | Rainey, III et al. | Jun 2013 | B1 |
| 8478930 | Syu | Jul 2013 | B1 |
| 8489854 | Colon et al. | Jul 2013 | B1 |
| 8503237 | Horn | Aug 2013 | B1 |
| 8521972 | Boyle et al. | Aug 2013 | B1 |
| 8549236 | Diggs et al. | Oct 2013 | B2 |
| 8583835 | Kan | Nov 2013 | B1 |
| 8601311 | Horn | Dec 2013 | B2 |
| 8601313 | Horn | Dec 2013 | B1 |
| 8612669 | Syu et al. | Dec 2013 | B1 |
| 8612804 | Kang et al. | Dec 2013 | B1 |
| 8615681 | Horn | Dec 2013 | B2 |
| 8638602 | Horn | Jan 2014 | B1 |
| 8639872 | Boyle et al. | Jan 2014 | B1 |
| 8683113 | Abasto et al. | Mar 2014 | B2 |
| 8700834 | Horn et al. | Apr 2014 | B2 |
| 8700950 | Syu | Apr 2014 | B1 |
| 8700951 | Call et al. | Apr 2014 | B1 |
| 8706985 | Boyle et al. | Apr 2014 | B1 |
| 8707104 | Jean | Apr 2014 | B1 |
| 8713066 | Lo et al. | Apr 2014 | B1 |
| 8713357 | Jean et al. | Apr 2014 | B1 |
| 8719531 | Strange et al. | May 2014 | B2 |
| 8724422 | Agness et al. | May 2014 | B1 |
| 8725931 | Kang | May 2014 | B1 |
| 8745277 | Kan | Jun 2014 | B2 |
| 8751728 | Syu et al. | Jun 2014 | B1 |
| 8769190 | Syu et al. | Jul 2014 | B1 |
| 8769232 | Suryabudi et al. | Jul 2014 | B2 |
| 8775720 | Meyer et al. | Jul 2014 | B1 |
| 8782327 | Kang et al. | Jul 2014 | B1 |
| 8788778 | Boyle | Jul 2014 | B1 |
| 8788779 | Horn | Jul 2014 | B1 |
| 8788880 | Gosla et al. | Jul 2014 | B1 |
| 8793429 | Call et al. | Jul 2014 | B1 |
| 8825940 | Diggs | Sep 2014 | B1 |
| 20020073272 | Ko et al. | Jun 2002 | A1 |
| 20030162549 | Carlsson | Aug 2003 | A1 |
| 20030163633 | Aasheim et al. | Aug 2003 | A1 |
| 20030182496 | Yoo | Sep 2003 | A1 |
| 20030188092 | Heath et al. | Oct 2003 | A1 |
| 20040015653 | Trantham | Jan 2004 | A1 |
| 20050160195 | Bruner et al. | Jul 2005 | A1 |
| 20050196165 | Dybsetter et al. | Sep 2005 | A1 |
| 20060095699 | Kobayashi et al. | May 2006 | A1 |
| 20060143426 | Wu | Jun 2006 | A1 |
| 20060184736 | Benhase | Aug 2006 | A1 |
| 20060190696 | Ito et al. | Aug 2006 | A1 |
| 20060236392 | Thomas et al. | Oct 2006 | A1 |
| 20060294338 | Fisher et al. | Dec 2006 | A1 |
| 20070033362 | Sinclair | Feb 2007 | A1 |
| 20070050536 | Kolokowsky | Mar 2007 | A1 |
| 20070079065 | Bonella et al. | Apr 2007 | A1 |
| 20070079097 | Karnowski et al. | Apr 2007 | A1 |
| 20070136553 | Sinclair | Jun 2007 | A1 |
| 20070192538 | Dawkins | Aug 2007 | A1 |
| 20070208604 | Purohit et al. | Sep 2007 | A1 |
| 20070233939 | Kim | Oct 2007 | A1 |
| 20070245065 | Kagan et al. | Oct 2007 | A1 |
| 20070247933 | Kagan | Oct 2007 | A1 |
| 20080019189 | Lin | Jan 2008 | A1 |
| 20080019196 | Lin | Jan 2008 | A1 |
| 20080082726 | Elhamias | Apr 2008 | A1 |
| 20080091872 | Bennett et al. | Apr 2008 | A1 |
| 20080098164 | Lee et al. | Apr 2008 | A1 |
| 20080126449 | Haitsma | May 2008 | A1 |
| 20080162798 | Lofgren et al. | Jul 2008 | A1 |
| 20080270678 | Cornwell et al. | Oct 2008 | A1 |
| 20080282024 | Biswas et al. | Nov 2008 | A1 |
| 20080294813 | Gorobets | Nov 2008 | A1 |
| 20090089492 | Yoon et al. | Apr 2009 | A1 |
| 20090091979 | Shalvi | Apr 2009 | A1 |
| 20090125782 | Josefiak et al. | May 2009 | A1 |
| 20090138654 | Sutardja | May 2009 | A1 |
| 20090150599 | Bennett | Jun 2009 | A1 |
| 20090172213 | Jayachandran et al. | Jul 2009 | A1 |
| 20090204853 | Diggs et al. | Aug 2009 | A1 |
| 20100061152 | De Caro et al. | Mar 2010 | A1 |
| 20100174849 | Walston et al. | Jul 2010 | A1 |
| 20100250793 | Syu | Sep 2010 | A1 |
| 20110099323 | Syu | Apr 2011 | A1 |
| 20110191526 | Haukness et al. | Aug 2011 | A1 |
| 20110283049 | Kang et al. | Nov 2011 | A1 |
| 20120260020 | Suryabudi et al. | Oct 2012 | A1 |
| 20120278531 | Horn | Nov 2012 | A1 |
| 20120284460 | Guda | Nov 2012 | A1 |
| 20120324191 | Strange et al. | Dec 2012 | A1 |
| 20130132638 | Horn et al. | May 2013 | A1 |
| 20130145106 | Kan | Jun 2013 | A1 |
| 20130290793 | Booth et al. | Oct 2013 | A1 |
| 20140059405 | Syu et al. | Feb 2014 | A1 |
| 20140101369 | Tomlin et al. | Apr 2014 | A1 |
| 20140115427 | Lu | Apr 2014 | A1 |
| 20140133220 | Danilak et al. | May 2014 | A1 |
| 20140136753 | Tomlin et al. | May 2014 | A1 |
| 20140149826 | Lu et al. | May 2014 | A1 |
| 20140157078 | Danilak et al. | Jun 2014 | A1 |
| 20140181432 | Horn | Jun 2014 | A1 |
| 20140223255 | Lu et al. | Aug 2014 | A1 |
| Number | Date | Country |
|---|---|---|
| 1662886 | Aug 2005 | CN |
| 1761935 | Apr 2006 | CN |
| 1985239 | Jun 2007 | CN |
| Entry |
|---|
| Micron Technical Note, “NAND Flash 101: An Introduction to NAND Flash and How to Design It in to Your Next Product”, TN-29-19, Nov. 2006, http://download.micron.com/pdf/technotes/nand/tn2919.pdf, pp. 1-28. |
| Office Action dated Feb. 28, 2011 from U.S. Appl. No. 12/410,304, 11 pages. |
| Office Action dated Nov. 16, 2010 from U.S. Appl. No. 12/410,304, 22 pages. |
| Office Action dated May 25, 2011 from U.S. Appl. No. 12/326,780, 37 pages. |
| Office Action dated Jun. 3, 2011 from U.S. Appl. No. 12/410,304, 4 pages. |
| Notice of Panel Decision dated Aug. 18, 2011 from U.S. Appl. No. 12/410,304, 2 pages. |
| Brief on Appeal submitted on Sep. 19, 2011 in U.S. Appl. No. 12/410,304 in 14 pages. |
| Examiner's Answer mailed on Oct. 7, 2011 received in U.S. Appl. No. 12/410,304 in 14 pages. |
| Office Action dated Nov. 8, 2011 from U.S. Appl. No. 12/326,780, 39 pages. |
| Office Action mailed on Mar. 20, 2012 received in U.S. Appl. No. 12/326,780 in 24 pages. |
| Advisory Action dated May 22, 2013 from U.S. Appl. No. 12/326,780, 11 pages. |
| Office Action dated Nov. 30, 2012 received in U.S. Appl. No. 12/326,780, 46 pages. |
| Office Action dated Oct. 8, 2013 from Chinese Patent Application No. 201010134420.0, filed Mar. 16, 2010, 16 pages. |
| Interview Summary dated Sep. 2, 2011 from U.S. Appl. No. 12/326,780, 3 pages. |
| Notice of Allowance dated Dec. 11, 2013 from U.S. Appl. No. 12/326,780, 15 pages. |
| Decision on Appeal dated Jul. 31, 2014 from U.S. Appl. No. 12/410,304, filed Mar. 24, 2009, 10 pages. |
| Office Action dated Jul. 25, 2013 from Chinese Patent Application No. 201010134420.0 filed Jan. 7, 2010 and English translation of the State Intellectual Property Office of P.R.C. Search Report, 20 pages. |
| Office Action dated Apr. 15, 2014 from Chinese Patent Application No. 201010134420.0 filed Jan. 7, 2010 and English translation of the State Intellectual Property Office of P.R.C. Search Report, 13 pages. |
| Chinese Office Action dated Dec. 16, 2014 from related Chinese Application Serial No. 201010002144.2, 11 pages. |
| Meiman Lin Syu, U.S. Appl. No. 12/410,304, filed Mar. 24, 2009, 27 pgs. |
| Second Office Action dated Jun. 26, 2014 from Chinese Patent Application No. 201010134420.0 filed Mar. 16, 2010 and English Translation, 8 pages. |
| Notice of Allowance dated Apr. 25, 2014 from U.S. Appl. No. 12/326,780, 10 pgs. |
| Notice of Allowance dated Oct. 24, 2014 from U.S. Appl. No. 12/410,304, 36 pgs. |
| Notice of Allowance dated Mar. 13, 2015, from U.S. Appl. No. 12/410,304 11 pgs. |
| First Office Action, and translation thereof, from Chinese Application No. 201010002144.2, dated Jul. 25, 2013, 20 pp. |
| Second Office Action, and translation thereof, from Chinese Application No. 201010002144.2, dated Apr. 15, 2014, 26 pp. |
| Number | Date | Country | |
|---|---|---|---|
| 20100174849 A1 | Jul 2010 | US |