CN103678193B - 控制非易失性存储卡的主机、包括主机的系统、操作方法 - Google Patents
控制非易失性存储卡的主机、包括主机的系统、操作方法 Download PDFInfo
- Publication number
- CN103678193B CN103678193B CN201310421932.9A CN201310421932A CN103678193B CN 103678193 B CN103678193 B CN 103678193B CN 201310421932 A CN201310421932 A CN 201310421932A CN 103678193 B CN103678193 B CN 103678193B
- Authority
- CN
- China
- Prior art keywords
- data
- command
- host
- memory card
- nonvolatile 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.)
- Active
Links
- 238000011017 operating method Methods 0.000 title abstract description 3
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000005540 biological transmission Effects 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 87
- 238000012546 transfer Methods 0.000 claims description 41
- 238000010586 diagram Methods 0.000 description 29
- 238000012545 processing Methods 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100370223 Mus musculus Tprg1 gene Proteins 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000036039 immunity Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2153—Using hardware token as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Systems (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供一种控制非易失性存储卡的主机、包括主机的系统、操作方法。通过时钟总线、命令总线和一个或多个数据总线来操作与非易失性存储卡连接的主机的方法包括:通过命令总线将第一命令发送到非易失性存储卡;通过所述一个或多个数据总线将与第一命令相应的第一数据发送到非易失性存储卡,或通过所述一个或多个数据总线从非易失性存储卡接收第一数据;在第一数据的传输期间或之前,通过命令总线将第二命令发送到非易失性存储卡至少一次。
Description
本申请要求于2012年9月14日提交的第10-2012-0102484号韩国专利申请的优先权,其公开通过引用全部合并于此。
技术领域
本发明构思的示例实施例涉及一种用于控制非易失性存储卡的主机,更具体地,涉及一种用于提高非易失性存储卡的读取/写入性能的主机、包括所述主机的系统以及操作所述主机和所述系统的方法。
背景技术
多媒体卡(MMC)是非易失性存储卡中具有代表性的一个。MMC是闪存卡标准。eMMC是由联合电子设备工程会议(JEDEC)定义的嵌入式MMC标准。使用eMMC,通信是基于10信号总线的。eMMC可被嵌入在如智能电话的移动通信装置中。
发明内容
根据本发明构思的一些示例实施例,提供一种通过时钟总线、命令总线和一个或多个数据总线来操作与非易失性存储卡连接的主机的方法。所述方法包括:通过命令总线将第一命令发送到非易失性存储卡;通过所述一个或多个数据总线将与第一命令相应的第一数据发送到非易失性存储卡,或通过所述一个或多个数据总线从非易失性存储卡接收第一数据;在第一数据的传输期间或之前,通过命令总线将第二命令发送到非易失性存储卡至少一次。
当非易失性存储卡处于忙碌状态时,可发送第二命令。
可由所述一个或多个数据总线中的一个来指示非易失性存储卡的忙碌状态。
所述方法可还包括:操作用于管理命令总线的状态的命令总线状态机,并操作独立于命令总线状态机的用于管理所述一个或多个数据总线的状态的数据总线状态机。所述一个或多个数据总线的状态可包括空闲状态、数据传输状态和接收响应状态或等待状态。当所述一个或多个数据总线的状态是数据传输状态或接收响应状态或等待状态时,可将第二命令发送到非易失性存储卡。
第一命令可以是伴随数据的命令,第二命令可以是不伴随数据的命令。
所述方法可还包括:管理第二命令的发送次数。
根据本发明构思的其它示例实施例,提供一种通过时钟总线、命令总线和一个或多个数据总线来操作包括与非易失性存储卡连接的主机的非易失性存储卡系统的方法。所述方法包括:主机通过命令总线将第一命令发送到非易失性存储卡;通过所述一个或多个数据总线将与第一命令相应的第一数据在主机与非易失性存储卡之间传输;在第一数据的传输期间,主机通过命令总线将第二命令发送到非易失性存储卡。
所述方法可还包括:非易失性存储卡依次接收多个第二命令,并且将它们存储在命令寄存器中。将第二命令发送到非易失性存储卡的步骤可包括:主机将相同类型的多个第二命令发送到非易失性存储卡。
第二命令中的每一个可以是包括数据大小和开始地址的准备读取命令,其中,数据大小指示将被读取的数据的大小。数据大小和开始地址可被存储在命令寄存器中。
所述方法可还包括:响应于每个第二命令,非易失性存储卡从非易失性存储器读取数据,并且将数据存储在包括在非易失性存储卡中的数据缓冲器中。
所述方法可还包括:主机将第三命令发送到非易失性存储卡;响应于第三命令,非易失性存储卡将存储在数据缓冲器中的数据发送到主机。
所述方法可还包括:主机将用于具体地取消多个第二命令中的全部或一些的取消命令发送到非易失性存储卡;响应于取消命令,非易失性存储卡使由取消命令指定的第二命令中的全部或一些、或与指定的第二命令中的全部或一些相应的数据无效。
第二命令中的每一个可以是包括数据大小和开始地址的准备写入命令,其中,数据大小指示将被写入的数据的大小。
所述方法可还包括:主机通过所述一个或多个数据总线将与多个第二命令中的第一个第二命令相应的第二数据发送到非易失性存储卡;响应于所述第一个第二命令,非易失性存储卡接收第二数据,并将第二数据编程到非易失性存储器;在第二数据正通过所述一个或多个数据总线被发送的同时,主机将所述多个第二命令中的第二个第二命令发送到非易失性存储卡;在第二数据被完全发送之后,主机通过所述一个或多个数据总线将与所述第二个第二命令相应的第三数据发送到非易失性存储卡;响应于所述第二个第二命令,非易失性存储卡接收第三数据,并将接收到的第三数据编程到非易失性存储器。
根据本发明构思的另一示例实施例,提供一种通过时钟总线、命令总线和一个或多个数据总线与非易失性存储卡连接的主机。所述主机包括:处理器,被配置为控制主机的整体操作;主机控制器,被配置为与所述处理器电连接,并且与非易失性存储卡进行交互。
主机控制器可通过命令总线将第一命令发送到非易失性存储卡,通过数据总线将与第一命令相应的第一数据发送到非易失性存储卡,或通过所述一个或多个数据总线从非易失性存储卡接收第一数据,并在第一数据的传输期间或之前,通过命令总线将第二命令发送到非易失性存储卡。
根据本发明构思的示例实施例,一种操作连接到非易失性存储卡的主机的方法包括:通过命令总线将第一命令从主机发送到非易失性存储卡,所述第一命令指示第一数据;通过执行以下步骤中的至少一个来传输第一数据:通过一个或多个数据总线将第一数据从主机发送到非易失性存储卡,以及通过一个或多个数据总线在主机处从非易失性存储卡接收第一数据;在第一数据的传输期间或之前,通过命令总线将第二命令发送到非易失性存储卡。
附图说明
通过参照附图详细描述示例实施例,示例实施例的上述和其它特征和优点将变得更加清楚。附图意图描绘示例实施例,并且不应被解释为限制权利要求的意图范围。附图不应被认为按照比例绘制,除非有明确注释。
图1是根据本发明构思的一些示例实施例的非易失性存储卡系统的框图;
图2是根据本发明构思的一些示例实施例的在图1中示出的主机控制器的框图;
图3是根据本发明构思的一些示例实施例的嵌入式多媒体卡(eMMC)的框图;
图4A是在图3中示出的装置命令寄存器的示例的示图;
图4B是存储在图4A中示出的寄存器中的命令信息的示例的示图;
图5是在图3中示出的装置命令寄存器的另一示例的示图;
图6是根据本发明构思的一些示例实施例的命令总线状态机的示图;
图7是根据本发明构思的一些示例实施例的数据总线状态机的示图;
图8是操作根据本发明构思的一些示例实施例的非易失性存储卡系统的方法的流程图;
图9是用于eMMC的传统读取操作与根据本发明构思的一些示例实施例的读取操作之间的比较的示意性时序图;
图10是示出根据本发明构思的一些示例实施例的非易失性存储卡系统的操作的示意性时序图;
图11是用于eMMC的传统读取操作与根据本发明构思的其它示例实施例的读取操作之间的比较的示意性时序图;
图12是用于eMMC的传统写入操作与根据本发明构思的一些示例实施例的写入操作之间的比较的示意性时序图;
图13是根据本发明构思的另一示例实施例的读取操作的流程图;
图14是用于eMMC的传统读取操作与根据本发明构思的其它示例实施例的读取操作之间的比较的示意性时序图;
图15是根据本发明构思的其它示例实施例的写入操作的流程图;
图16是用于eMMC的传统写入操作与根据本发明构思的另一示例实施例的写入操作之间的比较的示意性时序图。
具体实施方式
现在将参照附图在下文中更充分地描述本发明构思的示例实施例,其中,本发明的实施例在附图中示出。然而,可按照多种不同的形式实现本发明,并且本发明不应该被解释为受限于在此阐述的实施例。而是,提供这些实施例使得本公开将是全面和完整的,并且这些实施例将对本领域技术人员充分地传达本发明的范围。在附图中,为了清楚,层和区域的大小和相对大小可被夸大。相同的标号始终指示相同的元件。
将理解,当元件被称作“连接到”或“结合到”另一元件时,该元件可直接连接或结合到另一元件,或者可以存在中间元件。相反,当元件被称作“直接连接到”或“直接结合到”另一元件时,不存在中间元件。如在此所使用的,术语“和/或”包括一个或多个相关列出的项的任何组合以及全部组合,并可被简写为“/”。
将理解,尽管在这里可使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应被这些术语所限制。这些术语仅用于将一个元件与另一元件进行区分。因此,在不脱离本公开的教导的情况下,第一信号可被称为第二信号,相似地,第二信号可被称为第一信号。
在这里使用的术语仅用于描述特定实施例的目的,而不是意图限制本发明。如在此所使用的,单数形式也意图包括复数形式,除非上下文另有清楚的指示。还将理解,当在本说明中使用术语“包括”和/或“包含”时,术语“包括”和/或“包含”表示存在所叙述的特征、区域、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、区域、整体、步骤、操作、元件、组件和/或它们的组。
除非另有定义,否则这里使用的全部术语(包括技术术语和科学术语)具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非这里确切地定义,否则术语(诸如在常用词典中定义的那些术语)应被解释为具有与所述术语在相关领域和/或本应用的上下文中的含义一致的含义,而不应被理想化或过于正式地解释。
还应注意,在一些可选择的实现中,所指出的功能/动作可不按照附图中指出的顺序发生。例如,取决于参与的功能/动作,连续示出的两个标号实际上可基本同时执行,或有时可按照相反的顺序执行。
嵌入式多媒体卡(eMMC)、由联合电子设备工程会议(JEDEC)(http://www.jedec.org)在2012年6月发布的电气标准(版本4.51)(即,JESD84-B451)通过引用结合于此。因此,除非另有定义,否则这里使用的术语和定义具有与在JESD84-B451中定义的含义相同的含义。
本发明构思的各种示例实施例包括除现有10-线缆总线以外的线路(或通道),以增加抗噪性以及在主机和装置之间传输的数据的传输速度。
在此,发送信号或电压的通道可以是主机板、eMMC板、总线、线路、驱动器(在一些实施例中包括差分放大器)、接收器(在一些实施例中包括差分放大器)或它们中的至少两个的组合。将在下文中详细描述线路和电路的功能以及用于产生通过线路发送的信号的方法。
除非另有具有特定意图的明确描述,否则为了方便的目的,在描述中不考虑功能电路(诸如,总线、线缆、板(或管脚(pin))、驱动器、接收器和/或差分放大器)的传播延迟。
图1是根据本发明构思的一些示例实施例的eMMC系统100的框图。eMMC系统100包括主机200和装置300。装置300是非易失性存储卡,诸如,安全数字(SD)卡、MMC或eMMC。然而,本发明构思的示例实施例不限于此。
在本发明构思的一些示例实施例中,装置300是eMMC。
主机200可控制数据处理操作(诸如,数据读取操作和数据写入操作)。可按照单数据率(SDR)或双数据率(DDR)执行数据处理操作。
主机200可以是可对数据进行处理的数据处理装置,诸如,中央处理单元(CPU)、处理器、微处理器或应用处理器。数据处理装置可被嵌入或实现在电子装置中。电子装置可被实现为个人计算机(PC)、膝上型计算机、移动电话、智能电话、平板PC、个人数字助理(PDA)、企业数字助理(EDA)、数字静态相机、数字视频摄像机、音频装置、便携式多媒体播放器(PMP)、个人导航装置或便携式导航装置(PND)、MP3播放器、掌上游戏控制器或电子书。
eMMC300可通过连接工具(例如,板、管脚、总线或通信线路)与电子装置进行电连接来与主机200通信。
主机200可包括处理器215、存储器220和主机控制器230。可由处理器215驱动操作系统(OS)/主机固件210。存储器220可包括DRAM和SRAM。
主机200可还包括时钟产生器(未示出)。时钟产生器产生用在主机200和eMMC300中的时钟信号CLK。时钟产生器可通过锁相环(PLL)来实现。
处理器215可以是如下硬件,所述硬件控制命令CMD的产生、响应RES的分析、存储在扩展卡具体数据(CSD)寄存器(或EXT_CSD寄存器)371中的数据的处理和/或其它数据的处理。处理器215可驱动OS/主机固件210来执行这些操作。
主机控制器230与eMMC300进行交互。主机控制器230将命令CMD发送到eMMC300,接收对命令CMD做出的响应RES,将写入数据发送到eMMC300,并从eMMC300接收读取数据。
主机控制器230可包括用于存储关于发送到eMMC300的命令的信息的主机命令寄存器235。可在主机200的内部与存储器(例如,220)分开地设置主机命令寄存器235,或可在存储器(例如,220)中设置主机命令寄存器235。
图1中示出的eMMC总线可包括(例如,在eMMC4.51中定义的)10个常规总线101、102和103。然而,本发明构思的示例实施例不限于此。例如,eMMC总线可还包括将返回时钟信号(未示出)从eMMC300发送到主机200的单向返回时钟总线(未示出)。
时钟总线101发送时钟信号CLK。双向命令总线102将命令CMD发送到eMMC300,并且将对命令CMD的响应RES发送到主机200。双向数据总线103针对数据写入操作将写入数据DAT[7:0]发送到eMMC300,并针对数据读取操作将读取数据DAT[7:0]发送到主机200。
主机200可通过复位线(未示出)将硬件复位信号发送到eMMC300。主机200可产生eMMC300的操作所需要的操作电压,并将它们发送到eMMC300。
图2是根据本发明构思的一些示例实施例的在图1中示出的主机控制器230的框图。主机控制器230包括命令产生单元231、数据输入/输出(I/O)单元234、任务管理单元232和状态控制单元233。任务管理单元232可管理任务的创建和终止。
命令产生单元231可应任务的请求产生命令CMD,并且将命令CMD发送到eMMC300。它还可接收对命令CMD的响应RES。
数据I/O单元234可在写入操作中通过双向数据总线103将数据DAT[7:0]发送到eMMC300,并且可在读取操作中通过双向数据总线103从闪存370接收数据DAT[7:0]。
状态控制单元233可独立地控制用于管理命令总线102的状态的命令总线状态机和用于管理数据总线103的状态的数据总线状态机。稍后将参照图6和图7描述状态控制单元233的操作。
可在硬件、软件或它们的组合中实现在图2中示出的主机控制器230的元件。例如,可在固件中实现主机控制器230的元件中的一些或全部。
图3是根据本发明构思的一些示例实施例的eMMC300的框图。参照图3,eMMC300包括装置控制器(例如,eMMC控制器)310和闪存370。
eMMC控制器310控制主机200和闪存370之间的数据通信。eMMC控制器310包括eMMC主机接口320、CPU330、存储器340、错误校正码(ECC)块360和闪存接口365。
eMMC主机接口320从主机200接收时钟信号CLK和命令CMD,对命令CMD进行解释,根据解释结果产生响应RES,并将响应RES和基于响应RES产生的数据发送到主机200。eMMC主机接口320可包括用于存储关于从主机200接收到的命令的信息的装置命令寄存器325。可在装置控制器310内与存储器(例如,340)分开地实现装置命令寄存器325,或可使用存储器来实现装置命令寄存器325。
图4A是在图3中示出的装置命令寄存器325的示例325A的示图。装置命令寄存器325A包括N个寄存器325-1至325-N,其中,N是至少为2的自然数并指示装置命令寄存器325A的大小(即,包括在装置命令寄存器325A中的寄存器的数量)。这里,N被定义为多队列深度。因此,eMMC主机接口320可从主机200接收多达与最大多队列深度一样多的命令,并分别将命令存储在寄存器325-1至325-N中。
根据当前实施例的命令是在主机200与eMMC300之间预定义的命令,用于允许从主机200接收到的命令被存储在eMMC300中,使得在与当前命令相应的操作完成之前(例如,在从闪存370读取的数据被发送到主机200之前或在从主机200接收到的数据被编程到闪存370之前),后续命令可被接收。
换句话说,为了即使处于忙碌状态(例如,数据读取操作或数据写入操作),也通过允许eMMC300接收另一命令来增加整体数据传输率,根据当前实施例的命令不是在eMMC中传统定义的命令,而是新定义的命令。
根据传统eMMC协议,在数据传输期间或在eMMC处于忙碌状态的同时,主机不能将除停止或中止命令以及状态检查命令以外的命令(读取命令和写入命令)发送到eMMC。停止或中止命令用于停止数据传输,状态检查命令用于检查装置的状态。例如,根据传统eMMC协议,在发送数据状态下、接收数据状态下和程序状态下,不能发送命令,并且仅在操作完成之后的传输状态下,可发送命令。因此,性能由于协议开销而降低。
根据本发明构思的示例实施例,即使在数据传输或eMMC300的忙碌状态期间,主机200也可将命令发送到eMMC300,使得eMMC300准备后续的数据传输,从而提高数据传输性能。根据本发明构思的示例实施例的命令可以不是停止或中止命令或状态检查命令,但可以是用于准备后续的数据传输的准备命令、用于取消准备命令的命令或用于读取响应于准备命令而准备的数据的命令。命令可被存储在图4A中示出的寄存器325-1至325-N中。
寄存器325-1至325-N存储关于从主机200发出的命令的信息(在下文中,称为命令信息)。例如,eMMC主机接口320可将关于第一命令的信息存储在第一寄存器325-1中,并将关于第二命令的信息存储在第二寄存器325-2中。按照这种方式,eMMC主机接口320可将关于多达N个命令的命令信息存储在寄存器325-1至325-N中。
图4B是存储在图4A中示出的寄存器325–N中的命令信息的示例的示图。命令信息可包括命令类型、地址和数据大小。然而,本发明构思的示例实施例不限于当前实施例。命令类型、地址和数据大小可被包括在由主机200发出的命令中,并被传输到eMMC300。
命令类型是指示命令的类型的字段,并可包括准备读取命令和准备写入命令。地址指示执行命令的地址。数据大小指示被执行命令的数据的大小。例如,当命令是准备读取命令,地址是100,并且数据大小是1024时,这可引导在地址100处读取1024字节的数据。然而,数据大小的单位不限于字节。可使用不同的单位,诸如预定大小的块或页的数量。
图5是图3中示出的装置命令寄存器325的另一示例325B的示图。装置命令寄存器325B可包括分别存储数据大小DS1至DSN的数据大小寄存器326-1至326-N和分别存储开始地址SA1至SAN的地址寄存器327-1至327-N。数据大小DS1至DSN和开始地址SA1至SAN可以是包括在命令中的信息。
在本发明构思的示例实施例中,命令可包括用于指定将被读取或写入的数据的大小的命令(下文中,称为大小指定命令)和用于指定指示数据的位置的开始地址的命令(下文中,称为地址指定命令)。
大小指定命令可包括命令类型和数据大小。命令类型是指示命令的类型的字段或参数。数据大小可以是块计数,但本发明构思的示例实施例不限于此。块是具有预定大小的数据单元,并可与例如闪存的页相应。然而,本发明构思的示例实施例不限于此。大小指定命令的数据大小可被存储在数据大小寄存器326-1至326-N中的相应的一个数据大小寄存器中。
地址指定命令可包括命令类型和开始地址。地址指定命令中的开始地址可被存储在地址寄存器327-1至327-N中的相应的一个地址寄存器中。
主机200的主机命令寄存器235可与图4A或图5中示出的装置命令寄存器325A或325B类似。
主机控制器230可包括主机命令寄存器235,其中,主机命令寄存器235管理发送到eMMC300的命令以存储命令信息。
CPU330控制接口320和接口365的操作,并控制eMMC300的整体操作。存储器340临时存储在接口320和接口365之间传输的数据。存储器340可被实现为易失性存储器。
闪存370存储数据。当闪存370被实现为NAND闪存时,闪存接口365可被实现为NAND闪存接口。闪存370包括存储装置性能和选择的模式的EXT_CSD寄存器371。
闪存370可包括多个存储器元件CE0至CE3。虽然在图3中示出了四个存储器元件CE0至CE3,但是本发明构思的示例实施例不限于当前实施例。闪存370可具有支持至少两个通道的结构。主机200可发出SEND_EXT_CSD(CMD8)来读取EXT_CSD寄存器371。eMMC300将EXT_CSD寄存器371中的长度为512个字节的数据作为数据块发送到主机200。多队列深度可被设置在EXT_CSD寄存器371的保留字段中。可选择地,多队列深度可被设置在可由主机200控制或设置的另一主机控制寄存器中。
图6是根据本发明构思的一些示例实施例的命令总线状态机的示图。图7是根据本发明构思的一些示例实施例的数据总线状态机的示图。
参照图6,命令总线状态可以是空闲状态S10、发送命令状态S11或接收响应状态S13。然而,命令总线状态不限于图6中的这三种状态。当存在将被发送到eMMC300的命令时,主机控制器230将命令总线状态从空闲状态S10切换到发送命令状态S11,使得命令被发送到eMMC300。在命令被发送到eMMC300之后,当命令期望响应时,命令总线状态被切换到接收响应状态S13。当从eMMC300接收到对命令做出的响应时,命令总线状态被切换到空闲状态S10。当命令不期望响应时,命令总线状态从发送命令状态S11被切换到空闲状态S10。在预定数量的时钟周期期间持续的待机状态(未示出)可被插入在从接收响应状态S13到空闲状态S10的过渡中以及从发送命令状态S11到空闲状态S10的过渡中。
参照图7,数据总线状态可以是空闲状态S20、数据传输状态S21或接收响应或等待状态(具体地,接收循环冗余校验(CRC)状态或等待状态S22)。然而,数据总线状态不限于图7中的这三种状态。当主机控制器230将伴随数据传输的命令(在下文中,称为数据传输命令)发送到eMMC300时,数据总线状态从空闲状态S20被切换到数据传输状态S21,使得与数据传输命令相应的数据被发送到eMMC300。可按照块为单位发送数据。比如,当块的数据的发送完成时,数据总线状态被切换到接收CRC状态或等待状态S22,并且主机控制器230待机直到接收到与所述块相应的CRC状态响应为止。
当接收到CRC状态响应时,主机控制器230切换到数据传输状态S21,并且发送下一块的数据,并且随后切换到接收CRC状态或等待状态S22。当全部块的数据的发送完成时,主机控制器230切换到空闲状态S20。
状态控制单元233独立地操作命令总线状态机和数据总线状态机。明显地,命令总线状态和数据总线状态可彼此相关。然而,不是在单个状态机上操作命令总线状态和数据总线状态,而是分别在单独的机上操作命令总线状态和数据总线状态。
例如,即使当数据总线状态不是空闲状态时(也就是说,数据总线状态是数据传输状态或接收CRC状态或等待状态),主机200也可将命令(例如,不伴随数据传输的命令、取消命令等)发送到eMMC300。命令可被大致划分为两种类型:一种是数据传输命令;另一种是不伴随数据传输的命令(在下文中,称为“非数据传输命令)。
图8是操作根据本发明构思的一些示例实施例的非易失性存储卡系统的方法的流程图。可使用在图1中示出的非易失性存储卡系统100来执行所述方法。
在操作S110,主机200将准备读取(PR)命令发送到装置控制器310。在操作S115,装置控制器310响应于PR命令,可将R1响应发送到主机200,并且将PR命令信息存储在命令寄存器中。
PR命令指示eMMC300准备数据读取操作,并且它是非数据传输命令。即使在数据正被发送或eMMC300处于忙碌状态时,PR命令也可被发送到装置控制器310。另外,多个(例如,多队列深度)PR命令可被发送。换句话说,操作S110和操作S115可被重复多次。主机200可还包括命令计数器(未示出)来对发送的PR命令的数量进行计数。
PR命令可包括指定将被读取的数据的大小的数据大小和指定数据的开始地址的开始地址。数据大小和开始地址可被存储在如图4A或图5所示的命令寄存器325A或325B中。
装置控制器310在操作S120根据存储在命令寄存器325中的开始地址和数据大小,将读取命令发送到闪存370,并且在操作S125,从闪存370读取数据。在操作S130,读取的数据被存储在数据缓冲器中。
提供数据缓冲器来根据PR命令存储数据。图3中示出的存储器340可被用作数据缓冲器。
当在操作S135先前的数据传输完成(即,是)时,在操作S140,主机200将数据读出(RO)命令发送到装置控制器310。响应于来自主机200的数据RO命令,在操作S145,装置控制器310将R1响应发送到主机200,并且在操作S150,将数据缓冲器中的数据发送到主机200。
数据RO命令指示根据PR命令已被存储在数据缓冲器中的数据将被发送到主机200。数据RO命令是数据传输命令。当在先前的数据传输完成之后,数据总线状态是空闲状态时,数据RO命令可被发送到eMMC300。
图9是用于eMMC的传统读取操作与根据本发明构思的一些示例实施例的读取操作之间的比较的示意性时序图。图9中的部分(a)示出传统读取操作,并且图9中的部分(b)示出根据本发明构思的当前示例实施例的读取操作。
参照图9中的部分(a),当主机通过命令总线将读取-读取(RD)命令911发送到eMMC时,eMMC响应于RD命令911从闪存读取数据(912),并且通过数据总线DAT将所述数据发送到主机(913)。主机通过数据总线DAT接收读取的数据,并且将它存储在主机存储器中(914)。
仅在接收到与RD命令911相应的数据(913)之后,主机可将下一RD命令915发送到eMMC。因此,在发送RD命令911之后,主机被强制等待将被接收(913)的数据。
参照图9中的部分(b),主机200将第一PR命令921发送到eMMC300。eMMC300响应于第一PR命令921从闪存读取数据,并将所述数据存储在数据缓冲器中(922)。
为了从数据缓冲器读取数据,主机200将数据RO命令923发送到eMMC300。eMMC300响应于数据RO命令923,通过数据总线DAT将存储在数据缓冲器中的数据发送到主机200(924)。主机200通过数据总线DAT接收数据,并将它存储在主机存储器中(925)。同时,在数据传输924完成之前,也就是说,在数据正在被传输(924)时,主机200将下一PR命令926发送到eMMC300,使得eMMC300可准备下一读取操作。eMMC300响应于PR命令926从闪存读取数据,并将读取的数据存储在数据缓冲器中(927)。
按照这种方式,即使在数据正被传输或eMMC300处于忙碌状态时,主机200也将PR命令发送到eMMC300,以允许eMMC300准备用于下一读取操作的数据,从而提高数据读取性能。换句话说,由于eMMC300预先接收PR命令并准备下一读取操作(例如,eMMC300从闪存读取数据,并将其存储在数据缓冲器中),因此提高了读取性能。
在图9中的部分(b)中示出的实施例中,数据RO命令与PR命令一对一地相应,但是本发明构思的示例实施例不限于当前实施例。在其它实施例中,可在使用单个数据RO命令的时间将使用多个PR命令准备的全部读取数据发送到主机200。
图10是示出根据本发明构思的一些示例实施例的非易失性存储卡系统100的操作的示意性时序图。主机200将第一PR命令951发送到eMMC300。eMMC300响应于第一PR命令951从闪存读取数据,并将数据存储在数据缓冲器中(952)。
为了从数据缓冲器读取数据,主机200将数据RO命令953发送到eMMC300。eMMC300响应于数据RO命令953通过数据总线DAT将存储在数据缓冲器中的数据发送到主机200(954)。主机200通过数据总线DAT接收数据,并将其存储在主机存储器中(956)。
在数据传输(954)期间,主机200将第二PR命令957和第三PR命令959连续发送到eMMC300。eMMC300响应于第二PR命令957从闪存读取数据并将其存储在数据缓冲器中(958),并且响应于第三PR命令959从闪存读取数据并将其存储在数据缓冲器中(961)。主机200可在从数据缓冲器读取数据之前取消第三PR命令959。
例如,主机200可将用于取消第三PR命令959的取消命令960发送到eMMC300。取消命令960可具体地取消部分或全部先前的PR命令。eMMC300响应于取消命令960取消第三PR命令959。例如,当在与第三PR命令959相应的数据被从闪存读取之前接收到取消命令960时,可从命令寄存器移除第三PR命令959,而不执行数据读取操作。当在数据响应于第三PR命令959被读取之后接收到取消命令960并且取消命令960被存储在数据缓冲器中时,数据缓冲器中的数据可被移除或无效。
为了从数据缓冲器读取数据,主机200将数据RO命令962发送到eMMC300。eMMC300响应于数据RO命令962通过数据总线DAT将存储在数据缓冲器中的数据958发送到主机200(963)。主机200通过数据总线DAT接收数据,并将其存储在主机存储器中(964)。
图11是用于eMMC的传统读取操作与根据本发明构思的其它示例实施例的读取操作之间的比较的示意性时序图。图11中的部分(a)示出传统读取操作,图11中的部分(b)示出根据本发明构思的示例实施例的读取操作。
参照图11中的部分(a),当主机通过命令总线将RD命令411发送到eMMC时,eMMC通过命令总线将对RD命令411的R1响应412发送到主机。eMMC响应于RD命令411准备从闪存NAND读取数据(431),从闪存单元读取数据(432和433),并通过数据总线将数据发送到主机(421)。
主机可仅在接收到与RD命令411相应的数据421之后,发送后续的RD命令414。因此,由于接收到对RD命令411的R1响应412,因此主机被强制待机(413)直到接收到数据421为止。
然而,参照图11中的部分(b),主机200将第一PR命令441发送到eMMC300。eMMC300将对第一PR命令441的R1响应442发送到主机200。另外,eMMC300响应于第一PR命令441从闪存CE0读取数据(461和462),并将数据存储在数据缓冲器中(463)。
在从eMMC300接收到R1响应442时,主机200将第二PR命令443发送到eMMC300。换句话说,主机200可在尚未接收到与第一PR命令441相应的数据的状态下,将用于读取下一数据的第二PR命令443发送到eMMC300。
eMMC300将对第二PR命令443的R1响应444发送到主机200,并且还响应于第二PR命令443从闪存CE1读取数据(471和472),并将数据存储在数据缓冲器中(473)。
按照这种方式,主机200可发送多达最大多队列深度N的PR命令。例如,当多队列深度N是4时,主机200可发送多达四个PR命令。多队列深度N可被存储在eMMC300的EXT_CSD寄存器371中。主机200可使用特定命令(例如,SEND_EXT_CSD)读取EXT_CSD寄存器371,并且识别多队列深度N。
eMMC300可使用并行操作从闪存370读取数据。例如,eMMC300可使用多平面读取操作并行执行从闪存370的第一存储器元件CE0读取数据的操作(461至463)和从闪存370的第二存储器元件CE1读取数据的操作(471至473)。
为了读出存储在数据缓冲器中的数据,主机200将数据RO命令445发送到eMMC300。eMMC300发送对数据RO命令445的R1响应446,并且还通过数据总线将存储在数据缓冲器中的数据传输到主机200。此时,传输的数据451可以是响应于第一PR命令441从闪存CE0读取的数据463。数据RO命令445可以是用于根据本发明构思的一些示例实施例的数据读取操作的在主机200与eMMC300之间新定义的命令。
为了读出存储在数据缓冲器中的下一数据,主机200将数据RO命令447发送到eMMC300。eMMC300发送对数据RO命令447的R1响应,并还通过数据总线将存储在数据缓冲器中的数据传输到主机200。此时,传输的数据452可以是响应于第二PR命令443从闪存CE1读取的数据473。
如上所述,根据本发明构思的示例实施例,减少了命令之间的空闲时间,从而提高了读取性能。换句话说,eMMC300预先接收PR命令,并且同时或并行地为读取操作做准备(例如,从闪存370读取数据并将数据存储在数据缓冲器中的准备),从而提高读取性能。
图12是用于eMMC的传统写入操作与根据本发明构思的一些示例实施例的写入操作之间的比较的示意性时序图。图12中的部分(a)示出传统写入操作,图12中的部分(b)示出根据本发明构思的示例实施例的写入操作。
参照图12中的部分(a),当主机通过命令总线将写入(WR)命令511发送到eMMC时,eMMC通过命令总线将对WR命令511的R1响应512发送到主机。在接收到R1响应512时,主机通过数据总线将与WR命令511相关的数据传输到eMMC(521)。eMMC将从主机接收到的数据编程到闪存(525)。在eMMC完成数据到闪存的编程之前,eMMC处于忙碌状态。eMMC可通过数据总线中的一个(例如,DAT[0])向主机通知忙碌状态。主机可仅在待机(513)之后直到写入闪存的数据完成为止,才将后续的WR命令514发送到eMMC。
然而,参照根据本发明构思的示例实施例的图12中的部分图(b),主机200将第一WR命令531发送到eMMC300。eMMC300将对第一WR命令531的R1响应532发送到主机200。
在接收到R1响应532时,主机200通过数据总线将与第一WR命令531相关的数据传输到eMMC300(541),并且还可在传输数据的同时将第二WR命令533发送到eMMC300。eMMC300可从主机200接收第二WR命令533,并在完全将与第一WR命令531相关的数据541编程到闪存370(545)之前将R1响应534发送到主机200。
按照这种方式,主机200可发送多达最大多队列深度N的WR命令。例如,当多队列深度N是4时,主机200可发送多达四个WR命令。
eMMC300可将数据依次写入闪存370中(545和546)。在其它实施例中,eMMC300可使用并行操作将数据写入闪存370中。例如,eMMC300可使用多平面编程操作并行执行将数据编程到闪存370的第一存储器元件CE0的操作和将数据编程到闪存370的第二存储器元件CE1的操作。
图13是根据本发明构思的另一示例实施例的读取操作的流程图。在操作S510,主机200将用于指定将被读取的数据的大小的大小指定命令CMD_ds发送到装置控制器310。响应于大小指定命令CMD_ds,在操作S515,装置控制器310将R1响应发送到主机200,并将包括在大小指定命令CMD_ds中的数据大小存储在装置命令寄存器325中。
在从eMMC300接收到R1响应之后,在操作S520,主机200将地址指定命令CMD_sa发送到装置控制器310。在操作S525,装置控制器310响应于地址指定命令CMD_sa将R1响应发送到主机200,并将开始地址存储在装置命令寄存器325中。
可重复操作S510至操作S525多达最大多队列深度N的次数,甚至可在先前数据通过数据总线正被传输的同时执行操作S510至操作S525。
大小指定命令CMD_ds和地址指定命令CMD_sa可与上面已经描述的PR命令相应。换句话说,PR命令可被实现为包括至少两个命令的命令集。
装置控制器310在操作S530根据存储在装置命令寄存器325中的开始地址和数据大小,将读取命令发送到闪存370,并在操作S540,从闪存370读取数据。在操作S545,装置控制器310将数据存储在数据缓冲器中。
当在操作S550先前的数据传输完成(是)时,在操作S555,主机200将数据读出命令CMD_ro发送到装置控制器310。响应于数据读出命令CMD_ro,在操作S560,装置控制器310将R1响应发送到主机200。另外,在操作S565,装置控制器310将存储在数据缓冲器中的数据发送到主机200。数据读出命令CMD_ro可与上面描述的数据RO命令相同。
图14是用于eMMC的传统读取操作与根据本发明构思的其它示例实施例的读取操作之间的比较的示意性时序图。图14中的部分(a)示出传统读取操作,图14中的部分(b)示出根据本发明构思的示例实施例的读取操作。
参照图14中的部分(a),在当前状态是数据传输状态时(即,在数据正通过数据总线被传输(610)时),除了特定命令(例如,用于停止先前命令的停止命令或中止命令)以外,主机不能发送用于从闪存读取数据或将数据写入闪存的命令。仅在数据传输610完成之后,主机可将正常读取命令620发送到eMMC。eMMC响应于正常数据读取命令621和623从闪存读取数据(tR或625),并将数据发送到主机。在eMMC正从闪存读取数据(625)并将数据发送到主机(627)的同时,主机不能发送后续的读取命令。因此,自发送读取命令以后,主机需要等待数据被完全接收。
然而,参照图14中的部分(b),主机200即使在数据传输710期间也将PR命令720发送到eMMC300。详细地,主机200将大小指定命令(即,CMD57721)发送到eMMC300,并且eMMC300将对CMD57721的R1响应722发送到主机200。接下来,主机200将地址指定命令(即,CMD58723)发送到eMMC300,并且eMMC300将对CMD58723的R1响应724发送到主机200。这里,CMD57721与图13中示出的大小指定命令CMD_ds相应,并且CMD58723与图13中示出的地址指定命令CMD_sa相应。PR命令720被实现为包括CMD57721和CMD58723的命令集。主机200可将包括CMD57和CMD58的PR命令发送到eMMC300N次,其中,N是至少为1的整数。
eMMC300响应于PR命令720从闪存370读取数据,并将数据存储在数据缓冲器中。同时,正在传输的数据710可被存储在与数据缓冲器分离的普通缓冲器中。
当先前数据710的传输完成时,为了从数据缓冲器读出数据731至733,主机200将数据读出命令(即,CMD59726)发送到eMMC300。eMMC300响应于CMD59726将R1响应726发送到主机200,并且通过数据总线将存储在数据缓冲器中的数据731至733发送到主机200。
图15是根据本发明构思的其它示例实施例的写入操作的流程图。在操作S610,主机200将用于指定将被写入的数据的大小的大小指定命令CMD_ds发送到装置控制器310。在操作S615,装置控制器310响应于大小指定命令CMD_ds将R1响应发送到主机200,并将与大小指定命令CMD_ds相应的数据大小存储在装置命令寄存器325中。
在从eMMC300接收到R1响应之后,在操作S620,主机200将地址指定命令CMD_sa发送到装置控制器310。在操作S625,装置控制器310响应于地址指定命令CMD_sa将R1响应发送到主机200,并将开始地址存储在装置命令寄存器325中。
操作S610至操作S625可被重复多达最大多队列深度N的次数,并且虽然未示出,但是即使在先前数据正通过数据总线被传输时,也可执行操作S610到操作S625。即使在装置控制器310在操作S630将编程命令应用到闪存370以对先前数据进行编程并在操作S640将先前数据编程到闪存370时,也可执行操作S610至操作S625。此时,正被传输或编程到闪存370的先前数据可被存储在普通缓冲器中。
当在操作S650先前数据的传输完成(即,是)时,在操作S655,主机200将数据写入命令CMD_wr发送到装置控制器310。响应于来自主机200的数据写入命令CMD_wr,在操作S660,装置控制器310将R1响应发送到主机200。随后,在操作S665,主机200将写入数据传输到eMMC300。
在操作S670,eMMC300将写入数据存储在数据缓冲器中。装置控制器310在操作S675将用于对存储在数据缓冲器中的数据进行编程的编程命令应用到闪存370,并在操作S680,将写入数据编程到闪存370。
在图15中示出的实施例中,大小指定命令CMD_ds和地址指定命令CMD_sa可形成准备写入命令,其中,所述准备写入命令是一种不伴随数据传输的非数据传输命令。数据写入命令CMD_wr可以是伴随写入数据的传输的数据传输命令。
图16是用于eMMC的传统写入操作与根据本发明构思的另一示例实施例的写入操作之间的比较的示意性时序图。图16中的部分(a)示出传统写入操作,图16中的部分(b)示出根据本发明构思的示例实施例的写入操作。
参照图16中的部分(a),在先前数据811的传输完成之后,主机发送eMMC数据812、写入命令821和与写入命令821相应的数据DAT–a或812。eMMC将数据DAT-a或812编程到闪存(tPRG1)。仅当数据DAT-a或812完全被编程到闪存时,数据DAT-a或812的传输完成。因此,主机待机直到数据DAT-a的编程完成为止,并且直到那时才将另一写入命令822和与写入命令822相应的数据DAT–b或813发送到eMMC。
然而,参照图16中的部分(b),即使在先前数据831的传输期间,主机200也将准备写入命令CS或841至844发送到eMMC300。如图15所示,准备写入命令CS或841至844可包括大小指定命令CMD_ds和地址指定命令CMD_sa。
eMMC300依次接收准备写入命令CS或841至844,并将其存储在装置命令寄存器325中。当先前数据831的传输和编程(tPROG)完成时,主机200将数据写入命令845和与数据写入命令845相应的数据DAT-a、DAT–b、DAT–c和DAT–d发送到eMMC300。eMMC300将数据DAT-a、DAT–b、DAT–c和DAT–d存储在数据缓冲器中,并将存储在数据缓冲器中的数据DAT-a、DAT–b、DAT–c和DAT–d编程到闪存370。
在本发明构思的示例实施例中,eMMC被解释为示例。然而,本发明构思的示例实施例不限于此,而是可被应用于包括命令总线和数据总线的任何非易失性存储卡以及控制所述卡的任何主机。
如上所述,根据本发明构思的一些示例实施例,在数据传输期间或在eMMC完成读取/写入操作之前,主机可将命令发送到eMMC,使得即使在eMMC的读取/写入操作期间,也执行对下一读取/写入命令的准备。作为结果,提高了eMMC的读取/写入性能。
因此,已经描述了本发明构思的示例实施例,将明显的是,本发明构思的示例实施例可按照很多方式变化。这样的变化不被视为偏离本发明构思的示例实施例的意图精神和范围,并且对于本领域的技术人员而言将是明显的所有这样的修改意图被包括在权利要求的范围内。
Claims (27)
1.一种操作与非易失性存储卡连接的主机的方法,所述方法包括:
通过命令总线将第一命令从主机发送到非易失性存储卡,第一命令指示第一数据;
通过执行以下步骤中的至少一个来传输第一数据:
通过一个或多个数据总线将第一数据从主机发送到非易失性存储卡,以及
通过所述一个或多个数据总线在主机处从非易失性存储卡接收第一数据;
在第一数据的传输期间或之前,通过命令总线将第二命令发送到非易失性存储卡,
其中,第二命令是包括数据大小和开始地址的准备读取命令或准备写入命令,其中,数据大小指示将被读取或将被写入的数据的大小。
2.如权利要求1所述的方法,其中,当非易失性存储卡处于忙碌状态时,发送第二命令。
3.如权利要求2所述的方法,其中,由所述一个或多个数据总线中的一个来指示非易失性存储卡的忙碌状态。
4.如权利要求1所述的方法,还包括:
操作用于管理命令总线的状态的命令总线状态机;以及
操作独立于命令总线状态机的用于管理所述一个或多个数据总线的状态的数据总线状态机,
其中,
所述一个或多个数据总线的状态包括空闲状态、数据传输状态和接收响应状态或等待状态,
当所述一个或多个数据总线的状态是数据传输状态或接收响应状态或等待状态时,将第二命令发送到非易失性存储卡。
5.如权利要求1所述的方法,其中,第一命令是伴随数据的命令,第二命令是不伴随数据的命令。
6.如权利要求1所述的方法,还包括:
管理第二命令被发送的次数。
7.如权利要求6所述的方法,还包括:
存储主机多队列深度,所述主机多队列深度识别第二命令可被发送的最大次数。
8.如权利要求7所述的方法,其中,存储主机多队列深度的步骤包括:
从非易失性存储卡的扩展卡具体数据(CSD)寄存器读取信息;
从所述信息提取多队列深度;
将提取的多队列深度存储为主机多队列深度。
9.如权利要求1所述的方法,还包括:
将第三命令发送到非易失性存储卡,以从包括在非易失性存储卡中的数据缓冲器读取数据,其中,非易失性存储卡响应于第二命令而从非易失性存储器单元读取数据,并将读取的数据存储在数据缓冲器中。
10.如权利要求9所述的方法,其中,第三命令指定第二命令中的全部或部分,并且非易失性存储卡响应于第三命令将数据发送到主机,其中,响应于第三命令发送的数据仅包括与指定的一个或多个第二命令相应的数据。
11.如权利要求9所述的方法,还包括:
将取消命令发送到非易失性存储卡,以具体地取消第二命令中的全部或部分。
12.如权利要求1所述的方法,还包括:
通过所述一个或多个数据总线将与第二命令中的第一个第二命令相应的数据发送到非易失性存储卡,
其中,在与所述第一个第二命令相应的数据正通过所述一个或多个数据总线被发送时,将第二命令中的第二个发送到非易失性存储卡。
13.如权利要求1所述的方法,还包括:
通过命令总线将用于发送与第二命令中的至少一个第二命令相应的数据的第三命令发送到非易失性存储卡;
通过所述一个或多个数据总线将与所述至少一个第二命令相应的数据发送到非易失性存储卡。
14.一种通过时钟总线、命令总线和一个或多个数据总线来操作包括与非易失性存储卡连接的主机的非易失性存储卡系统的方法,所述方法包括:
通过命令总线将第一命令从主机发送到非易失性存储卡;
通过所述一个或多个数据总线将与第一命令相应的第一数据在主机与非易失性存储卡之间传输;
在第一数据的传输期间,通过命令总线将一个或多个第二命令从主机发送到非易失性存储卡,
其中,所述一个或多个第二命令中的每一个是包括数据大小和开始地址的准备读取命令或准备写入命令,其中,数据大小指示将被读取或将被写入的数据的大小。
15.如权利要求14所述的方法,还包括:
在非易失性存储卡依次接收所述一个或多个第二命令中的多个第二命令,并且将所述多个第二命令存储在命令寄存器中,
其中,将所述一个或多个第二命令发送到非易失性存储卡的步骤包括:主机将所述多个第二命令发送到非易失性存储卡,其中,所述多个第二命令具有相同的命令类型。
16.如权利要求15所述的方法,其中,
数据大小和起始地址被存储在命令寄存器中。
17.如权利要求16所述的方法,还包括:
响应于每个第二命令,在非易失性存储卡处从非易失性存储器单元读取数据,并且将读取的数据存储在包括在非易失性存储卡中的数据缓冲器中。
18.如权利要求17所述的方法,还包括:
将第三命令从主机发送到非易失性存储卡;
响应于第三命令,将存储在数据缓冲器中的读取的数据从非易失性存储卡发送到主机。
19.如权利要求18所述的方法,其中,响应于第三命令发送到主机的数据是响应于所述多个第二命令从非易失性存储器单元读取的数据。
20.如权利要求15所述的方法,还包括:
将用于取消所述多个第二命令中的一个或多个的取消命令从主机发送到非易失性存储卡;
响应于取消命令,在非易失性存储卡使以下项中的至少一个无效:
由取消命令指定的所述多个第二命令中的一个或多个,
与由取消命令指定的所述多个第二命令中的所述一个或多个相应的数据。
21.如权利要求14所述的方法,还包括:
通过所述一个或多个数据总线将与所述多个第二命令中的第一个第二命令相应的第二数据从主机发送到非易失性存储卡;
在非易失性存储卡接收第二数据;
响应于所述第一个第二命令,将接收到的第二数据编程到非易失性存储器单元;
在第二数据正通过所述一个或多个数据总线被发送的同时,将所述多个第二命令中的第二个第二命令从主机发送到非易失性存储卡;
在第二数据被完全发送之后,通过所述一个或多个数据总线将与所述多个第二命令中的第二个第二命令相应的第三数据从主机发送到非易失性存储卡;
在非易失性存储卡接收第三数据;
响应于所述第二个第二命令,将接收到的第三数据编程到非易失性存储器单元。
22.如权利要求14所述的方法,还包括:
通过命令总线将第三命令从主机发送到非易失性存储卡;
通过所述一个或多个数据总线将与所述多个第二命令相应的第二数据从主机依次发送到非易失性存储卡;
在非易失性存储卡接收第二数据;
响应于第三命令,将第二数据编程到非易失性存储器单元。
23.一种通过时钟总线、命令总线和一个或多个数据总线与非易失性存储卡连接的主机,所述主机包括:
处理器,被配置为控制主机的整体操作;
主机控制器,被配置为与所述处理器电连接,并且与非易失性存储卡进行交互,
其中,主机控制器被配置为:
通过命令总线将第一命令发送到非易失性存储卡,
通过数据总线将与第一命令相应的第一数据发送到非易失性存储卡,或通过所述一个或多个数据总线从非易失性存储卡接收第一数据,
在第一数据的传输期间或之前,通过命令总线将第二命令发送到非易失性存储卡,
其中,第二命令是包括数据大小和开始地址的准备读取命令或准备写入命令,其中,数据大小指示将被读取或将被写入的数据的大小。
24.如权利要求23所述的主机,其中,主机控制器被配置为使得第二命令在非易失性存储卡处于忙碌状态时被发送。
25.如权利要求23所述的主机,其中,主机控制器包括:
状态控制单元,被配置为操作用于管理命令总线的状态的命令总线状态机,并操作独立于命令总线状态机的用于管理所述一个或多个数据总线的状态的数据总线状态机,
其中,状态控制单元被配置为使得所述一个或多个数据总线的状态包括空闲状态、数据传输状态和接收响应状态或等待状态,
主机控制器被配置为使得当所述一个或多个数据总线的状态是数据传输状态或接收响应状态或等待状态时,第二命令被发送到非易失性存储卡。
26.如权利要求25所述的主机,其中,第一命令是伴随数据的命令,第二命令是不伴随数据的命令。
27.如权利要求25所述的主机,其中,所述主机控制器还包括:
计数器,被配置为管理第二命令被发送的次数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120102484A KR101932920B1 (ko) | 2012-09-14 | 2012-09-14 | 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 |
KR10-2012-0102484 | 2012-09-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678193A CN103678193A (zh) | 2014-03-26 |
CN103678193B true CN103678193B (zh) | 2018-02-16 |
Family
ID=49640124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310421932.9A Active CN103678193B (zh) | 2012-09-14 | 2013-09-16 | 控制非易失性存储卡的主机、包括主机的系统、操作方法 |
Country Status (8)
Country | Link |
---|---|
US (3) | US9389804B2 (zh) |
JP (1) | JP6341642B2 (zh) |
KR (1) | KR101932920B1 (zh) |
CN (1) | CN103678193B (zh) |
AU (1) | AU2013228071A1 (zh) |
DE (1) | DE102013110085B4 (zh) |
NL (1) | NL2011439B1 (zh) |
TW (1) | TWI626544B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9166918B1 (en) * | 2013-09-30 | 2015-10-20 | Juniper Networks, Inc. | Methods and apparatus for scheduling transmission of data in a network |
US8935465B1 (en) * | 2014-06-16 | 2015-01-13 | Sandisk Technologies Inc. | System and method of communicating command data in a master-slave environment |
US9367392B2 (en) | 2014-08-01 | 2016-06-14 | Winbond Electronics Corporation | NAND flash memory having internal ECC processing and method of operation thereof |
US9851902B2 (en) | 2014-10-09 | 2017-12-26 | Memobit Technologies Ab | Searching memory for a search key |
US10067688B2 (en) * | 2015-01-23 | 2018-09-04 | Qualcomm Incorporated | Storage resource management in virtualized environments |
US10127172B2 (en) * | 2015-06-22 | 2018-11-13 | Qualcomm Technologies International, Ltd. | Single SDIO interface with multiple SDIO units |
US9542269B1 (en) * | 2015-06-29 | 2017-01-10 | SK Hynix Inc. | Controller controlling semiconductor memory device and operating method thereof |
CN105046296B (zh) * | 2015-06-30 | 2018-06-22 | 上海玮舟微电子科技有限公司 | 安全数码卡的数据传输方法及装置 |
KR102615659B1 (ko) * | 2016-07-08 | 2023-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
KR102558947B1 (ko) * | 2016-08-25 | 2023-07-25 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 |
KR102618699B1 (ko) * | 2016-09-28 | 2024-01-02 | 삼성전자주식회사 | 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템 |
CN107885671B (zh) | 2016-09-30 | 2021-09-14 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
CN108228405A (zh) * | 2016-12-15 | 2018-06-29 | 北京兆易创新科技股份有限公司 | 一种数据传输方法及装置 |
US11210019B2 (en) | 2017-08-23 | 2021-12-28 | Micron Technology, Inc. | Memory with virtual page size |
US10394456B2 (en) | 2017-08-23 | 2019-08-27 | Micron Technology, Inc. | On demand memory page size |
KR102430983B1 (ko) * | 2017-09-22 | 2022-08-09 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
KR102536637B1 (ko) | 2018-03-29 | 2023-05-26 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR102686917B1 (ko) * | 2018-10-31 | 2024-07-19 | 삼성전자주식회사 | 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법 |
KR20210012439A (ko) * | 2019-07-25 | 2021-02-03 | 삼성전자주식회사 | 마스터 지능 소자 및 이의 제어 방법 |
US11397684B2 (en) * | 2019-11-13 | 2022-07-26 | Sandisk Technologies Llc | Command interface and pre-fetch architecture |
CN111176566B (zh) * | 2019-12-25 | 2023-09-19 | 山东方寸微电子科技有限公司 | 一种支持queue命令的eMMC读写控制方法及存储介质 |
EP3869315B1 (en) | 2020-02-20 | 2024-07-31 | Samsung Electronics Co., Ltd. | Storage device and storage system including the same |
WO2022133397A1 (en) * | 2020-12-14 | 2022-06-23 | Micron Technology, Inc. | Exclusion regions for host-side memory address translation |
US11734193B2 (en) | 2020-12-14 | 2023-08-22 | Micron Technology, Inc. | Exclusion regions for host-side memory address translation |
US11989458B2 (en) * | 2022-09-12 | 2024-05-21 | Western Digital Technologies, Inc. | Splitting sequential read commands |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1475922A (zh) * | 2002-07-30 | 2004-02-18 | 三星电子株式会社 | 使用源同步传递的异步存储器和采用它的系统 |
US7984214B2 (en) * | 2006-01-30 | 2011-07-19 | Thomson Licensing | Data bus interface with interruptible clock |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69133216T2 (de) * | 1990-11-09 | 2003-12-18 | Seagate Technology Llc, Scotts Valley | Festplattenantriebsteuerungsarchitektur mit mehreren Mikrokontrollern |
US5526484A (en) * | 1992-12-10 | 1996-06-11 | International Business Machines Corporation | Method and system for pipelining the processing of channel command words |
US6081860A (en) * | 1997-11-20 | 2000-06-27 | International Business Machines Corporation | Address pipelining for data transfers |
US6323867B1 (en) * | 1999-04-26 | 2001-11-27 | Mediaq Inc. | Parsing graphics data structure into command and data queues |
US7243185B2 (en) | 2004-04-05 | 2007-07-10 | Super Talent Electronics, Inc. | Flash memory system with a high-speed flash controller |
US6496192B1 (en) * | 1999-08-05 | 2002-12-17 | Matsushita Electric Industrial Co., Ltd. | Modular architecture for image transposition memory using synchronous DRAM |
JP2003233993A (ja) | 2002-02-08 | 2003-08-22 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置の書き換え方法 |
US6870774B2 (en) | 2002-12-10 | 2005-03-22 | Micron, Technology, Inc. | Flash memory architecture for optimizing performance of memory having multi-level memory cells |
JP4460867B2 (ja) * | 2003-09-26 | 2010-05-12 | 東芝ストレージデバイス株式会社 | インターフェース装置及びパケット転送方法 |
JP2006252079A (ja) | 2005-03-09 | 2006-09-21 | Kyodo Printing Co Ltd | 情報記録媒体、情報通信システム、情報通信方法及び情報通信プログラム |
JP2007058518A (ja) | 2005-08-24 | 2007-03-08 | Renesas Technology Corp | メモリカード |
JP5158740B2 (ja) | 2006-08-28 | 2013-03-06 | 株式会社メガチップス | メモリシステム |
WO2009039222A2 (en) | 2007-09-19 | 2009-03-26 | Marvell World Trade Ltd. | Flexible sequencer design architecture for solid state memory controller |
US20090094678A1 (en) * | 2007-10-05 | 2009-04-09 | Nokia Corporation | Mulimode device |
US8266371B2 (en) * | 2008-07-30 | 2012-09-11 | Panasonic Corporation | Non-volatile storage device, host device, non-volatile storage system, data recording method, and program |
US20100131701A1 (en) | 2008-11-25 | 2010-05-27 | Samsung Electronics Co., Ltd. | Nonvolatile memory device with preparation/stress sequence control |
JP5330409B2 (ja) * | 2008-11-28 | 2013-10-30 | パナソニック株式会社 | メモリ制御装置、データプロセッサ及びデータ読み出し方法 |
JP2012511789A (ja) | 2008-12-09 | 2012-05-24 | ラムバス・インコーポレーテッド | 並行且つパイプライン化されたメモリ動作用の不揮発性メモリデバイス |
US8386736B2 (en) * | 2008-12-18 | 2013-02-26 | Spansion Llc | Rapid memory buffer write storage system and method |
CN101515221A (zh) | 2009-03-17 | 2009-08-26 | 成都市华为赛门铁克科技有限公司 | 一种读数据的方法、装置和系统 |
US20100262979A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Circular command queues for communication between a host and a data storage device |
KR20100115583A (ko) | 2009-04-20 | 2010-10-28 | 삼성전자주식회사 | 데이터 저장 시스템 |
US8321647B2 (en) | 2009-05-06 | 2012-11-27 | Apple Inc. | Multipage preparation commands for non-volatile memory systems |
JP2010287128A (ja) * | 2009-06-12 | 2010-12-24 | Toshiba Corp | コントローラ、記憶媒体、及び情報制御方法 |
US9003414B2 (en) * | 2010-10-08 | 2015-04-07 | Hitachi, Ltd. | Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution |
JP5296041B2 (ja) * | 2010-12-15 | 2013-09-25 | 株式会社東芝 | メモリシステムおよびメモリシステムの制御方法 |
JP5884276B2 (ja) | 2011-03-08 | 2016-03-15 | 富士ゼロックス株式会社 | 静電荷像現像用トナー、トナーカートリッジ、静電荷像現像剤、プロセスカートリッジ及び画像形成装置 |
US20130019053A1 (en) * | 2011-07-14 | 2013-01-17 | Vinay Ashok Somanache | Flash controller hardware architecture for flash devices |
-
2012
- 2012-09-14 KR KR1020120102484A patent/KR101932920B1/ko active IP Right Grant
-
2013
- 2013-09-12 US US14/025,334 patent/US9389804B2/en active Active
- 2013-09-13 AU AU2013228071A patent/AU2013228071A1/en not_active Abandoned
- 2013-09-13 DE DE102013110085.6A patent/DE102013110085B4/de active Active
- 2013-09-13 TW TW102133275A patent/TWI626544B/zh active
- 2013-09-13 NL NL2011439A patent/NL2011439B1/en active
- 2013-09-16 CN CN201310421932.9A patent/CN103678193B/zh active Active
- 2013-09-17 JP JP2013192280A patent/JP6341642B2/ja active Active
-
2016
- 2016-06-24 US US15/191,749 patent/US10108373B2/en active Active
-
2018
- 2018-09-17 US US16/133,111 patent/US20190018615A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1475922A (zh) * | 2002-07-30 | 2004-02-18 | 三星电子株式会社 | 使用源同步传递的异步存储器和采用它的系统 |
US7984214B2 (en) * | 2006-01-30 | 2011-07-19 | Thomson Licensing | Data bus interface with interruptible clock |
Also Published As
Publication number | Publication date |
---|---|
CN103678193A (zh) | 2014-03-26 |
NL2011439A (en) | 2014-03-18 |
KR101932920B1 (ko) | 2019-03-18 |
US20190018615A1 (en) | 2019-01-17 |
JP6341642B2 (ja) | 2018-06-13 |
NL2011439B1 (en) | 2016-02-10 |
AU2013228071A1 (en) | 2014-04-03 |
US20140082268A1 (en) | 2014-03-20 |
TW201418990A (zh) | 2014-05-16 |
US20160306594A1 (en) | 2016-10-20 |
US9389804B2 (en) | 2016-07-12 |
DE102013110085B4 (de) | 2023-12-21 |
TWI626544B (zh) | 2018-06-11 |
DE102013110085A1 (de) | 2014-03-20 |
JP2014059876A (ja) | 2014-04-03 |
US10108373B2 (en) | 2018-10-23 |
KR20140036094A (ko) | 2014-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678193B (zh) | 控制非易失性存储卡的主机、包括主机的系统、操作方法 | |
KR102111741B1 (ko) | 임베디드 멀티미디어 카드 및 이의 동작 방법 | |
KR101919903B1 (ko) | 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 | |
KR101988260B1 (ko) | 임베디드 멀티미디어 카드, 및 이의 동작 방법 | |
US9824004B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
EP2973572B1 (en) | System and method of reading data from memory concurrently with sending write data to the memory | |
KR20110010707A (ko) | 슬레이브 디바이스 사이에서 직접 데이터를 전송하는 방법 | |
KR20190083148A (ko) | 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 | |
US9342445B2 (en) | System and method for performing a direct memory access at a predetermined address in a flash storage | |
KR20200114086A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
WO2009115058A1 (zh) | 提供闪存存储功能的主板及其存储方法 | |
KR102475688B1 (ko) | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그것의 동작 방법 | |
KR20130009536A (ko) | 메모리 제어 장치 및 방법 | |
US20130019055A1 (en) | Memory control device and method | |
CN109933281B (zh) | 存储器系统及其操作方法 | |
US20240231698A1 (en) | Storage devices and operating methods thereof | |
WO2011119151A1 (en) | Communication between a computer and a data storage device | |
TW201604772A (zh) | 資料儲存裝置及操作該資料儲存裝置的方法 | |
KR101192594B1 (ko) | 슬레이브 디바이스 사이에서 직접 데이터를 전송하는 방법 | |
KR20210006163A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
US20160034192A1 (en) | Data storage device and operation method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |