The present disclosure relates generally to memory systems, more particularly, to an asynchronous communication protocol compatible with the standard synchronous double data rate (DDR) protocol.
Dynamic random access (DRAM) modules such as double data rate (DDR) synchronous dynamic random-access memories (SRAMs) use a synchronous communications protocol (i.e., DDR protocol). A memory controller is responsible for the synchronous timing, control, and data movement to and from the DRAM. In that regards, the DRAM is a slave device and DRAM provides only limited feedback to the memory controller.
Future memory interfaces may be transactional interfaces. Transactional interfaces can support both non-volatile and volatile memories co-located on a memory channel as a main memory. However, transactional interfaces involve variable timings, and much more feedback is expected from a memory-channel device. Therefore, there is a need for a transaction-based asynchronous communication protocol to support a memory module including non-volatile memories or both non-volatile and volatile memories that can provide device feedback to a memory controller.
According to one embodiment, a memory module includes: a non-volatile memory; and an asynchronous memory interface to interface with a memory controller. The asynchronous memory interface may use repurposed pins of a double data rate (DDR) memory channel to send an asynchronous data to the memory controller.
According to another embodiment, a system includes: a memory controller; a memory module comprising a non-volatile memory; and an asynchronous memory interface between the memory controller and the memory module. The asynchronous memory interface may use repurposed pins of a DDR memory channel to send device feedback of the memory module to the memory controller.
According to yet another embodiment, a method includes: providing an asynchronous memory interface between a memory controller and a memory module, wherein the memory module comprising a non-volatile memory; and sending device feedback of the memory module to the memory controller using repurposed pins of a double data rate (DDR) memory channel.
The above and other preferred features, including various novel details of implementation and combination of events, will now be more particularly described with reference to the accompanying figures and pointed out in the claims. It will be understood that the particular systems and methods described herein are shown by way of illustration only and not as limitations. As will be understood by those skilled in the art, the principles and features described herein may be employed in various and numerous embodiments without departing from the scope of the present disclosure.
The accompanying drawings, which are included as part of the present specification, illustrate the presently preferred embodiment and together with the general description given above and the detailed description of the preferred embodiment given below serve to explain and teach the principles described herein.
The figures are not necessarily drawn to scale and elements of similar structures or functions are generally represented by like reference numerals for illustrative purposes throughout the figures. The figures are only intended to facilitate the description of the various embodiments described herein. The figures do not describe every aspect of the teachings disclosed herein and do not limit the scope of the claims.
Each of the features and teachings disclosed herein can be utilized separately or in conjunction with other features and teachings to provide an asynchronous communication protocol compatible with the standard synchronous protocol. Representative examples utilizing many of these additional features and teachings, both separately and in combination, are described in further detail with reference to the attached figures. This detailed description is merely intended to teach a person of skill in the art further details for practicing aspects of the present teachings and is not intended to limit the scope of the claims. Therefore, combinations of features disclosed above in the detailed description may not be necessary to practice the teachings in the broadest sense, and are instead taught merely to describe particularly representative examples of the present teachings.
In the description below, for purposes of explanation only, specific nomenclature is set forth to provide a thorough understanding of the present disclosure. However, it will be apparent to one skilled in the art that these specific details are not required to practice the teachings of the present disclosure.
Some portions of the detailed descriptions herein are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are used by those skilled in the data processing arts to effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the below discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The algorithms presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems, computer servers, or personal computers may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
Moreover, the various features of the representative examples and the dependent claims may be combined in ways that are not specifically and explicitly enumerated in order to provide additional useful embodiments of the present teachings. It is also expressly noted that all value ranges or indications of groups of entities disclose every possible intermediate value or intermediate entity for the purpose of an original disclosure, as well as for the purpose of restricting the claimed subject matter. It is also expressly noted that the dimensions and the shapes of the components shown in the figures are designed to help to understand how the present teachings are practiced, but not intended to limit the dimensions and the shapes shown in the examples.
The present disclosure provides an asynchronous communication protocol that is compatible with various versions of double data rate (DDR) memories (e.g., DDR1, DDR2, DDR3, and DDR4). The present asynchronous communication protocol can support memory modules with variable read, write, and/or activation latencies. The asynchronous memory modules can include both a non-volatile memory and/or a volatile memory (e.g., DRAM) that are co-located on the same memory channel. In addition, the present asynchronous communication protocol allows a memory module to provide device feedback to a memory controller. The terms, a dual in-line memory module (DIMM) and a memory module, may be interchangeably used herein. The DIMM may be a standard DIMM including DRAM, an NVDIMM including NVM, or a hybrid DIMM including both DRAM and NVM.
Examples of NVDIMM type memories include, but are not limited to, a non-volatile memory (NVM) DIMM including NVM and a hybrid DIMM including both NVM and DRAM. The NVM DIMM provides direct access to a NVM as a memory. The hybrid DIMM can operate either in a direct mode or a cache mode. In the direct mode, the hybrid DIMM provides direct access as a memory similar to NVM DIMM. The DRAM and the NVM in the hybrid DIMM have different address range. A host can send DRAM operations and NVM operations to the DRAM and the NVM separately with different address range. For example, the C[2] pin in the DDR standard can be used to separate the address range of the DRAM and the NVM. When the C[2] pin is low (set to ‘0’), the DRAM is selected; and if C[2] pin is high (set to ‘1’), the NVM is selected. In the cache mode, the DRAM acts as a cache of the NVM. The DRAM cache is transparent to the host and is managed by a controller internal to the hybrid DIMM.
According to one embodiment, the present asynchronous communication protocol extends the traditional synchronous DDR protocol utilizing row address select (or strobe) (RAS)-column address strobe (strobe) (CAS). The traditional synchronous DDR protocol is also referred to as a RAS-CAS protocol or a standard DDR protocol. The extended RAS-CAS protocol extends or repurposes DRAM and module pins specified for the standard DDR protocol and provides the asynchronous interface 150 between the memory controller 110 and the non-volatile memory 121 of the memory module 120. Because the present asynchronous communication protocol uses extended or repurposed DRAM and module pins, the non-volatile memory 121 and the volatile memory 122 can be co-located on the same memory module 120 and communicate with the memory controller 110 over the same memory channel (e.g., DDR memory channel). Further, the present asynchronous communication protocol allows the memory module 120 to provide device feedback to the memory controller 110 over the DDR memory channel using the present asynchronous communication protocol.
In terms of timing for a read cycle, a read cycle can occur in the following order. First, a memory controller generates an activate (ACT) command to start a read cycle to read data from a memory module. The ACT command delivers the row address to the address input pins on the memory module, and RAS is latched. A column address is then applied to the address input pins on the memory module. A read signal RD can be latched to initiate a read operation prior to the transition of CAS. The CAS is then latched. After a predetermined time, the requested data appears at the data output pins of the memory module. The time at which the data appears after the read signal RD is set may depend on timings of various signals including the RAS and CAS and predetermined delays between signals. Before the read cycle is complete, CAS and RAS can return to their inactive states.
Unlike the standard synchronous DDR protocol as illustrated in
According to one embodiment, the feedback status can indicate that the NVM data is located in a data buffer. The data buffer may store requested read data in a similar fashion to a DRAM open page. After the page is opened, all consecutive read (or write) access to the same page can have fixed DRAM latency.
According to one embodiment, the extended RAS-CAS protocol can extend and/or repurpose either dedicated or shared pins, and multiple links can be established between different dual in-line memory modules (DIMMs) in the same channel. The extended RAS-CAS protocol may require synchronization logic to provide shared device feedback from the memory module to the memory controller. In addition, the extended RAS-CAS protocol can provide support to in-module RAS feature by delivering device feedback.
According to another embodiment, the feedback status may include two type signals: a feedback message (MSG DQ) and a read ready signal (Read_Ready). The MSG_DQ is synchronous signal and is always aligned with data on the DQ bus. However, the Read_Ready signal is an asynchronous signal that is not necessary to aligned with data.
The write credit may also be updated using a MSG DQ in the read data package. One or more bits in the MSG DQ in the read data package may be used to indicate that there are 1 or a certain number of WC available in the memory module.
A status information message may also include one or more write IDs (WIDs) so that the memory module may return the information for a write status. For example, data write ID can be used as a write confirmation to a previous write command. When the received Write ID matches the write ID sent by the host, the write is confirmed. An error-correcting code (ECC) protection, such as cyclic redundancy check (CRC) or parity, may be used for packet integrity protection at the MSG_DQ. A status information message may also include other information, including ready package count, internal status of NVM, status of previous command or operation, and any RAS information and interrupt service information.
The number of cycles over which the feedback status is communicated between the memory controller and the memory module may be determined by a particular memory module and/or may be selectively configured by the memory controller at initialization of the memory module. The specific configuration of feedback status information that is communicated between the memory controller and the memory module may vary depending on the number of cycles over which the feedback status is communicated or on the clock speed of the feedback status. For example, if three (3) connector pins are repurposed as the Message Data bus (MSG DQ), the feedback status may be transferred over four (4) single data rate (SDR) cycles. In this case, the feedback status may include 12 bits of data. In addition, another pin can be repurposed as Read Ready Pins (Read_Ready). As another example in which eight (8) connector pins are repurposed, the feedback status may include 16 bits of information and use two (2) SDR cycles to transfer the feedback status. In another example in which three (3) connector pins are repurposed, 2 pins are used for status, and the other pin is used as data strobe of status. The feedback status in this example may include 16 bits of information and use eight (8) double data rate (DDR) cycles to transfer the feedback status. It should be understood that the number of cycles and/or the number of bits conveying feedback status information is not limited to the examples that are disclosed herein.
The memory controller may distinguish normal data packets and status packets by reading the first bit of the feedback status message, MSG[0], in cycle 1. That is, if the MSG[0] bit is “0,” then the memory controller can decode the packet as a normal data package. If the MSG[0] bit is “1,” the memory controller can decode the packet as a status packet.
In one embodiment, the read or write command is delivered with an extension command. The extension command carries other information such as extended address, Transaction ID, and transaction priority related to the read or write command. The extension command can be delivered one (1) clock cycle before or after the corresponding read or write command. When the extension command is used, each read or write command can occupy 2 cycles on the command bus.
According to one embodiment, the present asynchronous communication protocol can support a Send (SEND) command. The SEND command may be used to initialize a data burst transaction from the memory module to the host with a deterministic timing.
The SEND command may be defined as set forth in Table 1. The SEND command can carry up to 10 bits burst command that is used to specify how many packages are requested in the burst.
Table 2 sets forth an example definition of a Transaction Status Packet, according to one embodiment.
The read ID (RID) is used to identify the relationship between read request and read data from the memory module. The RID can be generated in various ways. In one embodiment, the host can explicitly generate the RID. In this case, the RID is delivered explicitly from the host to the memory module. In another embodiment, both the host and the memory module can explicitly generate RID depending on the type of a read command. In yet another embodiment, neither the host nor the memory module generates an RID explicitly, instead both the host and the memory module agree on and follow an RID mechanic. After a sync up during the initialization, the host and the memory module generate the same RID separately for the same package.
In some embodiment, the dedicated feedback pins can include ALERT_n. The ALERT_n pin may be shared by multiple DIMMs. In another case, the host and the memory board may be redesigned to have separate and dedicated ALERT_n pins to allow for 2 NVDIMMs per a memory channel.
In the Example 1 where ODT[1], CKE[1], CS[1] and ALERT_n pins are repurposed, CS[1], ODT[1] and CKE[1] are used for message pins DQ (MSG DQ). The read ready (Read Ready) status can be sent using the ALERT_n pin.
According to another embodiment, shared feedback pins are used for the present extended RAS-CAS protocol. Examples of such shared feedback pins include, but are not limited to DQS9_t˜DQS17_t, DQS9_c˜DQS17_c, and ALERT_n. In this case, shared pins may be utilized in a time-division scheme similar to time division multiple access TDMA scheme well known in the telecommunication art. The time-division scheme can assign different time slots to different memory devices, each one transmitting in its allotted slot.
According to another embodiment, hybrid feedback pins are used for the present extended RAS-CAS protocol. The hybrid feedback pins can include both dedicated feedback pins. For example, 32 hybrid feedback pins include 10 dedicated feedback pins (e.g., ODT[1], CKE[1], CS[1:3], CK_N[1], CK_P[1], and 3 reserved for future uses (RFUs)), 18 shared feedback pins (e.g., DQS9_t˜DQS17_t, DQS9_c˜DQS17_c), and ALERT_n. These hybrid feedback pins can include up to 32 pins allowing easier synchronization compared to only shared pins. For example, the synchronization can be done through dedicated pins, and status transmissions can be done through shared or dedicated pins.
According to one embodiment, each data request and transmission can include a transaction ID (e.g., Read ID/RID or Write ID/WID) to increase memory parallelism. The transaction ID may include a part or all of the column, row, bank, rank, and channel addresses. The memory controller can issue transactions with different IDs to support multiple simultaneous transactions. In one embodiment, the host can deliver the transaction ID explicitly in a host command. In another embodiment, the transaction ID can be delivered implicitly with the column, row, bank, rank, and channel addresses. The memory module may regenerate the transaction ID by using these addresses.
In another embodiment, both the host and the memory module maintain a transaction ID list. The transaction ID list and ID allocation/deallocation mechanism are initialized during the system boot up. Then, the host and the memory module follow the same mechanism to allocate or free the same transaction ID for each memory transaction inside the host memory controller and the memory module. The transaction ID, in this case, is not required to be delivered explicitly over the memory channel.
According to one embodiment, each status transmission on the device feedback can include RAS information to support in-module RAS features. Examples of such RAS information include, but are not limited to, read/write failure reporting, error-correcting code (ECC), wear leveling and garbage collection information, in-module refresh information, and in-module scrubbing information.
According to one embodiment, the present asynchronous communication protocol defines an ALERT_n pin to carry a bidirectional signal in DDR4. According to one embodiment, the memory module can include two NVDIMMs in DIMM0 and DIMM1 respectively. In this case, the message pins DQ can use dedicated pins, and the read ready (Read_Ready) status can be sent using two ALERT_n pins.
According to another embodiment, the memory module can include one DRAM and one NVM in DIMM0 and DIMM1 respectively. In this case, the message pins DQ can use dedicated pins similar to the dual NVDIMM case, but uses the shared one ALERT_n pin for the Read_Ready status feedback.
Table 3 sets forth connector pins for a memory module in a DRAM DIMM mode and in a NVDIMM mode, according to one embodiment. As shown in Table 3, if the memory module is in the DRAM DIMM mode, the ALERT_n* pin (pin 208) operates in a well-known manner to provide a transmit (Tx) and a receive (Rx) function from the point of view of a memory controller. Signals CS_n[1], ODT[1] and CKE[1] (pins 89, 91 and 203, respectively) also operate in a well-known manner to provide a transmit function from the point of view of the memory controller. If the memory module is in the NVDIMM mode, pin 208 is defined as an ALERT_n/Read_Ready signal, and provides both a transmit (Tx) and a receive (Rx) function from the point of view of the memory controller. Pins 89, 91 and 203 are defined as MSG[2:0] and provide a receive function from the point of view of the memory controller. In one embodiment, the ALERT_n/Read_Ready signal and the MSG[2:0] may operate at a single data rate. In another embodiment, the ALERT_n/Read_Ready signal and the MSG[2:0] may operate at DDR.
Table 4 sets forth the timing and message definition for the ALERT_n connector pin used to carry a Read_Ready signal in the NVDIMM mode, according to one embodiment. In the NVDIMM mode, the ALERT_n connector pin is defined to be 2 clock cycles for a Read_Ready signal. For a pulse width of between about 6 and 10 clock cycles, the ALERT_n connector pin is defined as an occurrence of a write CRC error, and for a pulse width of between 72 and 144 clock cycles, the ALERT_n connector pin is defined as an occurrence of a command address (CA) parity error. If an error occurs, the host has to read the status to update an event.
According to some other embodiments, connector pins ODT[1] and CKE[1] can be used to communicate information respectively as MSG[0] and MSG[1] so that the message is two bits wide, but includes a message strobe signal MSG_S by using CS_n[1] to enable a double data rate (DDR).
According to one embodiment, the extended RAS-CAS protocol can support a persistent write (PWR) command. The PWR command allows the memory controller to write data when the memory controller has WC, and requires the memory module to send an asynchronous write confirm response.
According to one embodiment, a memory module includes: a non-volatile memory; and an asynchronous memory interface to interface with a memory controller. The asynchronous memory interface may use repurposed pins of a double data rate (DDR) memory channel to send an asynchronous data to the memory controller.
The asynchronous data may be device feedback indicating a status of the non-volatile memory.
The device feedback may indicate that requested data from the memory controller is located in a data buffer of the non-volatile memory.
The asynchronous memory interface may be compatible with DDR1, DDR2, DDR3, and/or DDR4.
The repurposed pins may include dedicated data pins that are dedicated to a specific DIMM.
The repurposed pins may include shared data pins that are shared by multiple DIMMs.
Both dedicated data pins that are dedicated to a specific DIMM and shared data pins that are shared by multiple DIMMs may be used to transfer the device feedback.
The device feedback may include a plurality of time slots for multiple DIMMs.
Each of the plurality of time slots of the device feedback may include a transaction ID.
The device feedback may include row address select (RAS) information of the memory module.
The memory module may further include a volatile memory, and the non-volatile memory and the volatile memory may be co-located in the DDR memory channel.
According to another embodiment, a system includes: a memory controller; a memory module comprising a non-volatile memory; and an asynchronous memory interface between the memory controller and the memory module. The asynchronous memory interface may use repurposed pins of a DDR memory channel to send device feedback of the memory module to the memory controller.
The asynchronous memory interface may be compatible with DDR1, DDR2, DDR3, and/or DDR4.
The repurposed pins may include dedicated data pins that are dedicated to a specific DIMM.
The repurposed pins may include shared data pins that are shared by multiple DIMMs.
Both dedicated data pins that are dedicated to a specific DIMM and shared data pins that are shared by multiple DIMMs may be used to transfer the device feedback.
The device feedback may include a plurality of time slots for multiple DIMMs.
Each of the plurality of time slots of the device feedback may include a transaction ID.
The device feedback may include row address select (RAS) information of the memory module.
The memory module may further include a volatile memory, and the non-volatile memory and the volatile memory may be co-located in the DDR memory channel.
According to yet another embodiment, a method includes: providing an asynchronous memory interface between a memory controller and a memory module, wherein the memory module comprising a non-volatile memory; and sending device feedback of the memory module to the memory controller using repurposed pins of a double data rate (DDR) memory channel.
The asynchronous memory interface may be compatible with DDR1, DDR2, DDR3, and/or DDR4.
The method may further include: transferring the device feedback using dedicated data pins that are dedicated to a specific DIMM and shared data pins that are shared by multiple DIMMs.
The method may further include: temporally dividing the device feedback in a plurality of time slots; and assigning each of the time slots for each DIMM of multiple DIMMs.
Each time slot of the device feedback may include a transaction ID indicating the corresponding DIMM.
The memory module may further include a volatile memory, and the non-volatile memory and the volatile memory may be co-located in the DDR memory channel.
The above example embodiments have been described hereinabove to illustrate various embodiments of implementing a system and method for providing an asynchronous communication protocol compatible with the standard synchronous protocol. Various modifications and departures from the disclosed example embodiments will occur to those having ordinary skill in the art. The subject matter that is intended to be within the scope of the invention is set forth in the following claims.
This application is a continuation of U.S. patent application Ser. No. 16/777,206 (now U.S. Pat. No. 11,397,698) filed on Jan. 30, 2020, which in turn claims priority from U.S. patent application Ser. No. 15/233,850 (now U.S. Pat. No. 10,621,119) filed on Aug. 10, 2016, which claims the benefit of U.S. Provisional Patent Application Ser. No. 62/303,349 filed on Mar. 3, 2016 and U.S. Provisional Patent Application Ser. No. 62/347,569 filed on Jun. 8, 2016, the disclosures of which are incorporated herein by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
5737258 | Choi et al. | Apr 1998 | A |
5907867 | Shinbo et al. | May 1999 | A |
6154821 | Barth et al. | Nov 2000 | A |
6735037 | Tanaka et al. | May 2004 | B1 |
7062618 | Tsunoda et al. | Jun 2006 | B2 |
7269709 | Kelly | Sep 2007 | B2 |
7386768 | Vogt et al. | Jun 2008 | B2 |
7620783 | Wolford et al. | Nov 2009 | B2 |
7640413 | Ovett | Dec 2009 | B2 |
7716411 | Panabaker et al. | May 2010 | B2 |
7917688 | Tanaka et al. | Mar 2011 | B2 |
8064250 | Abdulla | Nov 2011 | B2 |
8261136 | D'Abreu et al. | Sep 2012 | B2 |
8359521 | Kim et al. | Jan 2013 | B2 |
8588017 | Park et al. | Nov 2013 | B2 |
8593889 | Nobunaga et al. | Nov 2013 | B2 |
8737148 | Byom et al. | May 2014 | B2 |
8745321 | Rajan et al. | Jun 2014 | B2 |
8819354 | Seto et al. | Aug 2014 | B2 |
8924639 | Ahn et al. | Dec 2014 | B2 |
9032162 | Chang et al. | May 2015 | B1 |
9104547 | Baltar | Aug 2015 | B2 |
9142272 | Van Huben et al. | Sep 2015 | B2 |
9214199 | Brandl et al. | Dec 2015 | B2 |
9229854 | Kuzmin | Jan 2016 | B1 |
9405608 | Okubo et al. | Aug 2016 | B2 |
9460791 | Shallal | Oct 2016 | B1 |
9471484 | Oh | Oct 2016 | B2 |
9569144 | Uematsu et al. | Feb 2017 | B2 |
9830086 | Niu et al. | Nov 2017 | B2 |
10152370 | Nale | Dec 2018 | B2 |
20010003198 | Wu | Jun 2001 | A1 |
20040243753 | Horowitz et al. | Dec 2004 | A1 |
20050066137 | Jeddeloh et al. | Mar 2005 | A1 |
20050188137 | Fujiki | Aug 2005 | A1 |
20060067156 | Ruckerbauer et al. | Mar 2006 | A1 |
20070030030 | Waldrop | May 2007 | A1 |
20070162720 | Branda et al. | Jul 2007 | A1 |
20080082750 | Okin et al. | Apr 2008 | A1 |
20090037666 | Rahman et al. | Feb 2009 | A1 |
20090273960 | Kim | Nov 2009 | A1 |
20100005206 | Hnatko | Jan 2010 | A1 |
20100005214 | Trombley et al. | Jan 2010 | A1 |
20100110748 | Best | May 2010 | A1 |
20120072679 | Biswas | Mar 2012 | A1 |
20120331356 | Vogt et al. | Dec 2012 | A1 |
20140181364 | Berke et al. | Jun 2014 | A1 |
20140192583 | Rajan | Jul 2014 | A1 |
20140237157 | Takefman et al. | Aug 2014 | A1 |
20140268973 | Connolly | Sep 2014 | A1 |
20140281326 | Van Huben et al. | Sep 2014 | A1 |
20140359391 | Pawlowski | Dec 2014 | A1 |
20150016499 | Nandan | Jan 2015 | A1 |
20150019831 | Van Huben et al. | Jan 2015 | A1 |
20150261698 | Zhang | Sep 2015 | A1 |
20150268959 | Krishna et al. | Sep 2015 | A1 |
20150309742 | Amidi et al. | Oct 2015 | A1 |
20160085585 | Chen et al. | Mar 2016 | A1 |
20160125923 | Lee et al. | May 2016 | A1 |
20160232379 | Edwards | Aug 2016 | A1 |
20170255575 | Niu et al. | Sep 2017 | A1 |
Number | Date | Country |
---|---|---|
1311509 | Sep 2001 | CN |
101042929 | Sep 2007 | CN |
103765392 | Apr 2014 | CN |
104409097 | Mar 2015 | CN |
204332379 | May 2015 | CN |
08306195 | Nov 1996 | JP |
2001-10865 | Jan 2001 | JP |
2001-14842 | Jan 2001 | JP |
2003091463 | Mar 2003 | JP |
2005-537543 | Dec 2005 | JP |
2008171163 | Jul 2008 | JP |
2009054116 | Mar 2009 | JP |
2009540431 | Nov 2009 | JP |
2010-153018 | Jul 2010 | JP |
2011-530734 | Dec 2011 | JP |
2012089137 | May 2012 | JP |
2012146360 | Aug 2012 | JP |
2014157391 | Aug 2014 | JP |
20150120359 | Oct 2015 | KR |
246081 | Dec 2005 | TW |
201015338 | Apr 2010 | TW |
201732615 | Sep 2017 | TW |
2014155593 | Feb 2014 | WO |
2014143056 | Sep 2014 | WO |
Entry |
---|
Peng Qiang et al., “A Novel NAND Flash Memory Controller Compatible with Asynchronous and Source Synchronous Data Types,” IEEE 11th International Conference on Solid-State and Integrated Circuit Technology, Oct. 2012, 3 pages. |
Number | Date | Country | |
---|---|---|---|
20220358060 A1 | Nov 2022 | US |
Number | Date | Country | |
---|---|---|---|
62347569 | Jun 2016 | US | |
62303349 | Mar 2016 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16777206 | Jan 2020 | US |
Child | 17872987 | US | |
Parent | 15233850 | Aug 2016 | US |
Child | 16777206 | US |