CN105723317A - 用于与非易失性存储器通信的方法和系统 - Google Patents
用于与非易失性存储器通信的方法和系统 Download PDFInfo
- Publication number
- CN105723317A CN105723317A CN201480062303.4A CN201480062303A CN105723317A CN 105723317 A CN105723317 A CN 105723317A CN 201480062303 A CN201480062303 A CN 201480062303A CN 105723317 A CN105723317 A CN 105723317A
- Authority
- CN
- China
- Prior art keywords
- command sequence
- memory
- thread
- data path
- subset
- 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.)
- Granted
Links
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
- 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/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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种装置,包括存储器接口模块和与存储器接口模块通信的存储器控制器。存储器接口模块配置为与第一和第二存储器条进行通信。响应于从主机系统接收多个存储器命令,存储器控制器生成多个命令序列。多个命令序列的每个对应于多个存储器命令的一个。多个命令序列的一些包括第一部分和第二部分,并且第一部分和第二部分的每个是原子的。多个命令序列的每个与优先级相关联。基于相关联的优先级,多个命令序列的一个被选择。多个命令序列的一个的第一部分被发送到第一存储器条或第二存储器条的任一个。
Description
技术领域
本申请一般涉及在存储器系统中管理数据。更具体地,本申请涉及存储器系统的操作以改善在与具有多个裸芯或条的可重复编程的非易失性半导体闪速存储器通信中的并行性。
背景技术
这里提供的背景技术描述是为了一般呈现本公开的上下文的目的。当前提名的发明人的工作,以及其它在提交时可能否则有资格作为现有技术的说明书的方面,在该背景技术部分中描述的程度上,既没有明示也没有暗示地承认作为针对本公开的现有技术。
复杂的操作系统(OS)为通用计算机以及如数码相机、扫描仪等的专用装置提供动力。OS的常常被吹捧的优点之一是其允许用户同时使用多个软件应用。经常地,这些软件应用访问经由硬件接口连接到装置的处理器的硬件组件。取决于系统架构,硬件组件可以共享公共硬件接口。硬件接口可以包含PCI总线、USB总线、ISA总线、ATAPI总线和/或允许经由硬件接口与处理器通信的多个硬件组件的任何专有接口。经由硬件接口访问硬件组件可以取决于访问的类型消耗有限的时间量。为了该讨论的目的,硬件组件包含闪速存储器、紧凑式闪速、打印机、扫描仪、硬盘驱动器、DVD、CD、USB存储棒等。为了访问的持续时间,其它软件应用有时被锁定在访问连接到硬件接口的其它硬件组件之外。如果另一个应用需要访问另一个硬件组件以进行时间严格的操作,这是不期望的。可能期望的是,共享在以有序的并且可配置的方式的若干应用程序之间的公共硬件接口。
另外,软件应用程序和硬件组件之间传送的数据的量取决于访问的类型。例如,硬件组件的状态检查可以仅消耗少量的时间。与此相反,传送包括若干兆字节的数据文件可以消耗更大量的时间。时间密集的访问可以通过向访问部署可用的硬件资源而被加快。可能期望的是,基于量化或者限制访问的类型的度量而将硬件资源分配到访问。如果这样的分配(和解除分配)以灵活的、透明的方式进行,一般地,稀少的和有限的硬件资源可以被明智地用于优化系统的操作。
发明内容
为了解决在多个条和/或多个裸芯存储器系统中的改善的存储器管理的需要,这里公开了用于实现在与闪速条通信中的并行性的方法和系统。
根据一个方面,公开了一种在闪速存储器系统中通信数据的方法。在一个实施例中,闪速存储器包括存储器控制器和闪速装置。闪速存储器系统接收包括用于在存储器控制器和第一闪速装置之间通信数据的第一集合的资源。基于第一模板,闪速存储器系统配置用于在存储器控制器和第一闪速装置之间通信数据的第一集合的资源。根据该方法,闪速存储器系统经由第一集合的资源引起在存储器控制器和第一闪速装置之间通信数据。响应于接收到包括用于在存储器控制器和第一闪速装置通信数据的第二集合的资源的第二模板,基于第二模板,闪速存储器系统配置用于在存储器控制器和第一闪速装置之间通信数据的第二集合的资源。最后,闪速存储器系统经由第二集合的资源引起在存储器控制器和第一闪速装置之间通信数据。
根据另一个方面,公开了一种用于与闪速装置通信的系统。该系统包括具有闪速接口模块的存储器控制器。存储器控制器适配为通信地耦接到主机系统。存储器控制器配置为接收模板。模板包括用于基于模板在存储器控制器和的闪速装置之间通信数据的第一集合的资源。存储器控制器适配为配置用于在存储器控制器和第一闪速装置之间通信数据的第一集合的资源。最后,闪速接口模块被可通信地耦接到存储器控制器。闪速接口模块配置为经由第一集合的资源在存储器控制器和第一闪速装置之间通信数据。
根据一个方面,公开了一种用于在闪速存储器系统中通信数据的方法。在一个实施例中,闪速存储器系统包括存储器控制器、第一闪速装置和第二闪速装置,第一和第二闪速装置经由公共闪速接口被可通信地耦接到存储器控制器。在接收到用于在存储器控制器和第一闪速装置之间通信数据的第一命令时,基于第一命令,存储器控制器从逻辑数据路径的集合选择逻辑数据路径的第一子集,该逻辑数据路径的第一子集在存储器控制器和第一闪速装置之间。存储器控制器配置逻辑数据路径的第一子集以在存储器控制器和第一闪速装置之间通信数据。最后,存储器控制将第一闪速命令通信到第一闪速装置以经由逻辑数据路径的第一子集启动数据的通信,其中,第一闪速命令对应于接收到的命令。
根据另一个方面,公开了一种用于在存储器控制器、第一闪速装置和第二闪速装置之间进行通信数据的系统。该系统包括存储器系统、数据路径管理器(DPM)和存储器控制器。该存储器系统配置为从主机处理器接收闪速命令。此外,响应于接收到闪速命令,存储器系统配置为将闪速命令序列通信到第一闪速装置或第二闪速装置中的一个。另外,数据路径管理器(DPM)配置为从逻辑数据路径的集合选择逻辑数据路径的第一子集,并配置为在存储器控制器和第一闪速装置或第二闪速装置的任一个之间通信数据。
根据一个方面,公开了一种用于在闪速存储器系统中管理数据的方法。在一个实施例中,闪速存储器系统包括存储器控制器、第一闪速条和第二闪速条,第一和第二闪速条经由公共闪速接口被可通信地耦接到存储器控制器。存储器控制器从第一闪速命令生成第一命令序列,其中第一命令序列包括第一部分和第二部分,并且从第二闪速命令生成第二命令序列,其中第二命令序列包括至少一个部分。该方法包括,存储器控制器基于第一标准和第二标准选择第一命令序列,其中,第一标准与第一命令序列相关联,并且第二标准与第二命令序列相关联。该方法还包括,经由公共闪速接口将第一命令序列的第一部分通信到第一闪速条;在通信第一部分之后,在通信第一命令序列的第二部分之前,经由公共闪速接口将第二命令序列的至少一部分通信到第二闪速条。最后,在通信第二命令序列的至少一部分之后,经由公共闪速接口,存储器控制器将第一命令序列的第二部分通信到第一闪速条。
根据另一个方面,公开了一种在存储器控制器中实现的用于经由公共闪速接口与第一闪速条和第二闪速条通信的方法。响应于接收到第一闪速命令,存储器控制器确定第一存储器命令旨在将被通信到第一闪速条。此外,存储器控制器从第一闪速命令生成命令序列,其中命令序列包括两个部分,并且其中每个部分包括一系列命令,其中命令的系列是原子的,并且其中每个部分包括第一闪速条的标识。存储器控制器将命令序列的第一部分通信到第一闪速条。最后,响应于检测到在第一部分中的命令,生成指示,其中该指示指明命令序列的第一部分已经被通信到第一闪速条。
根据又一个方面,公开了一种用于与第一闪速条和第二闪速条通信的存储器控制器。存储器控制器包括闪速接口模块,该闪速接口模块配置为用于与第一和第二闪速条进行通信,以及与闪速接口模块进行通信的处理器。处理器配置为,响应于从主机系统接收多个闪速命令,生成多个命令序列。多个命令序列的每个对应于多个闪速命令的相应的一个。多个命令序列的一些包括第一部分和第二部分。第一部分和第二部分的每个是原子的。此外,多个命令序列的每个与优先级相关联。处理器进一步配置为,经由闪速接口模块,基于与多个命令序列的一个相关联的优先级,选择多个命令序列的一个,并将多个命令序列的一个的第一部分顺序地发送到第一闪速条或第二闪速条的任一个。
当回顾下面的附图、详细的描述和权利要求书时,其它特征和优点将变得显而易见。此外,公开了其它实施例,并且每个实施例可以单独使用或组合在一起使用。现在将参照附图描述实施例。
附图说明
图1示出了与具有包含多个闪速条的多个条非易失性存储器连接的主机。
图2是与图1的多个闪速条通信的图1的示例的存储器控制器的示例的框图。
图3是可以由闪速接口模块的元件生成的示例的闪速命令和对应的命令序列的表示。
图4是使能在图1的存储器控制器和多个闪速条之间的并行通信的示例的闪速接口模块的框图。
图5是在图1的闪速接口模块中实现的示例的方法的流程图。
图6是可以生成具有若干原子的部分的命令序列的示例的命令生成器的流程图。
图7是可以经由公共硬件接口通信命令序列的部分的示例的闪速协议定序器的流程图。
图8是可以选择用于通信的命令序列的示例的仲裁单元的流程图。
图9是可以经由公共硬件接口通信命令序列的部分的另一个示例的闪速协议定序器的流程图。
图10A-C是示出了在不同的情景下的命令序列的通信的时序图。
图11是用于通信数据的逻辑数据路径的概念性表示。
图12是将逻辑数据路径分配到不同的数据传送的示例的方法的流程图。
图13是可以被用于允许资源的灵活分配的示例的模板。
具体实施方式
这里描述的方法可以允许主机系统经由公共硬件接口与两个或多个硬件组件同时通信。经常地,与硬件组件通信需要命令的传送和接收。例如,与闪速装置通信需要通信闪速命令。闪速命令可以包括若干原子的部分。一般地,原子的部分的通信不可以被中断,而命令的不同的原子的部分的通信可以被中断。因此,闪速命令可能被转化成命令序列,其中该命令序列包含可分离的一系列原子的部分,从而允许每个部分的独立的通信。在将多个原子的部分命令序列的第一原子的部分通信到第一硬件组件后,这里描述的方法可以选择性地将来自另一个命令序列的另一个原子的部分通信到第二硬件单元,而等待第一硬件组件进行与第一原子的部分相关联的功能。这允许命令序列在公共接口上交织。尽管这里描述的方法是参照存储器系统来解释的,但是该方法同样适用于包括在两个或多个硬件组件之间共享接口的其它系统。
与仅仅是在数据总线上的数据的交织相比,这里描述的设备和方法不但促进跟在在将多个部分命令序列的第二部分传送到第一闪速装置之前将命令序列传送到第二闪速装置之后的,经由多个部分命令序列的第一部分的公共接口带第一闪速装置的传送,而且还促进动态地修改优先级,其中不同的命令序列以该优先级被传送到第一和第二闪速装置。因此,较低的优先级的多个部分命令序列可以被更高优先级的命令序列抢占或中断。
适用于在实现本发明的各方面中使用的闪速存储器系统在图1中示出。图1的主机系统100将数据存储到存储器系统102中并从存储器系统102取回数据。存储器系统可以是嵌入在主机内的闪速存储器,诸如以固态磁盘(SSD)驱动器的形式安装在个人计算机中。可替代地,存储器系统102可以是卡的形式,该卡通过如图1中所示的机械的和电的连接器的配合部件104和106可拆卸地连接到主机。配置为用作内部的或嵌入的SSD驱动器的闪速存储器可能看起来类似于图1的示意图,其中主要的差异是存储器系统102的位置在主机的内部。SSD驱动器可以是用于旋转磁盘驱动器的插入式替代的分立模块的形式。
图1的主机系统100可以被视为具有两个主要部分,就存储器系统102而言,由电路和软件的组合构成。它们是应用程序部分108和与存储器系统102接口的驱动器部分110。在PC中,例如,应用程序部分108可以包含运行文字处理、图形、控制或其它流行的应用程序软件的主机处理器112,以及用于在主机系统100上管理数据的文件系统114。在照相机、蜂窝电话或主要致力于进行单个集合的功能的其它主机系统中,应用程序部分108包含操作照相机以拍摄和存储图片、操作蜂窝电话拨打和接听电话等的软件。
图1的存储器系统102可以包含非易失性存储器——诸如闪速存储器116,以及存储器控制器118,该存储器控制器118与主机100接口并且同时控制存储器116,存储器系统102被连接到该主机100以用于往返传递数据。存储器控制器118可以在数据编程和读取期间在由主机100使用的数据的逻辑地址和闪速存储器116的物理地址之间转换。闪速存储器116可以包含任何数目的闪速存储器条120,并且在图1中仅以说明的方式示出两个闪速存储器条120-1、120-2。通过示例而非限制的方式,术语闪速存储器条被用于描述120-1、120-2。然而,120-1、120-2还可以对应于在相同封装体中的闪速裸芯。功能上,存储器控制器118可以包含与主机系统接口的前端122、用于协调存储器116的操作的控制器逻辑124、用于诸如垃圾收集的内部存储器管理操作的闪存管理逻辑126、以及一个或多个多线程闪速接口模块(的FIM)128以提供控制器和闪速存储器116之间的通信接口。
存储器控制器118可以在单个集成电路芯片上实现——诸如在图2中所示的专用集成电路(ASIC)。存储器控制器118的处理器206可以被配置为多线程处理器,该多线程处理器能够经由具有用于闪速存储器116中的闪速条120-1和120-2的单个I/O端口的存储器接口204与相应的存储器条120-1、120-2的每一个通信。存储器控制器118可以包含内部时钟218。处理器206经由内部数据总线202与直接存储器访问(DMA)控制器218、误差校正码(ECC)模块214、RAM212、主机接口216和启动代码ROM210进行通信。
以示例的方式,闪速接口模块128可以在启动代码ROM210中被存储为软件指令。处理器206可以执行软件指令以使能与图1的闪存条120-1和120-2的并行通信。另外,如将在后面详细讨论的,闪速接口模块128可以配置DAM控制器220以在条120-1和120-2与RAM212之间创建一个或多个逻辑数据路径(未示出)。逻辑数据路径可以被用于在闪速条120-1和120-2与RAM212之间并行或同时地经由公共存储器接口204通信数据。
存储器控制器118可以从主机系统100接收命令。命令可以包括数据读取请求、数据写入请求、格式请求和扇区擦除请求。例如,应用程序可以从主机文件系统114请求存储在闪速存储器116中的文件。响应于该请求,驱动器110可以生成读取请求,并将读取请求通信到存储器系统102。
图3示出了可以由存储器系统102从主机系统100中接收的示例的读取请求命令300。读取请求命令300包括读取感测序列300-1、读取状态序列300-2和数据传送序列300-3。每个序列包括闪速指令和数据的组合。如先前讨论的,在序列中实施步骤的过程是不可中断的,并且这样的序列被称为原子的序列。
在实施例中,闪速接口模块128将读取请求命令300转化成三个单独的原子的序列或部分302-1、302-2、302-3,以生成命令序列302。为了生成命令序列302,闪速接口模块128将芯片选择序列304作为前缀添加到部分300-1、300-2和300-3的每一个,并且用预定义的命令或切换指令312来终止部分300-1、300-2和300-3的每一个。芯片选择序列304识别闪速条120-1、120-2的一个。基于芯片选择序列304,闪速条确定跟随芯片选择序列304的命令和数据是否旨在用于芯片选择序列304。
如将在下面更详细讨论的,例如,使用命令序列302的格式,在存储器控制器118的闪速接口模块128中实现的方法可以将另一个命令序列的部分通信到通信部分302-2和302-3之间的闪速存储器116,例如,从而使能经由单个存储器接口204的存储器控制器118以及不同的闪速条120-1和120-2之间的同时的或并行的通信。尽管前面的讨论参照了读取请求命令300,但是存储器系统102能够基于特定的闪速命令将任何闪速命令转化为一个或多个原子序列或部分。
前述的公开仅提供了用于命令序列的一个示例的格式。本领域的普通技术人员的人将认识到,有可能生成仍然遵守生成命令序列的原子的部分的要求的具有不同格式的命令序列。
图4是示例的闪速接口模块128的框图,该闪速接口模块128使能经由单个存储器接口204的存储器接口118以及闪速条120-1和120-2之间的同时的或并行的通信。例如,在上电复位后,处理器210可以将对应于闪速接口模块128的指令复制到RAM212并且从RAM212执行该指令。
闪速接口模块128包括若干线程402-1、402-2、...、402-N。线程402-1、402-2、...、402-N可以在存储器系统102的初始化期间被创建,如将在后面详细讨论的。通常,线程是可以由处理器来执行的一系列软件指令。在操作系统的上下文中,线程是可以由操作系统的调度器有条件地执行的软件对象。在下面的讨论中,线程402-1、402-2、...、402-N可以执行命令序列,而线程由处理器执行。在一个实施例中,闪速接口模块128可以创建上述引用的线程。在另一个实施例中,主机系统100可以指示闪速接口模块128以创建线程。存储器系统102使用与闪速条相关联的线程来与该特定的闪速条通信。在即将到来的讨论中,线程402-1与闪速条120-1相关联,并用于与闪速条120-1通信,线程402-2与闪速条120-2相关联,并用于与闪速条120-2通信等。通常,线程402-1、402-2、...、402-N在创建后是非活动的。线程在被创建时可以被分配优先级。通常,具有较高优先级的活动线程将在具有较低优先级的活动线程之前被执行。在存储器控制器和与较高优先级的线程相关联的闪速条之间的数据通信将在主机和与较低优先级的线程相关联的闪速条之间的数据通信之前发生。在一种情形中,主机系统100可以将要被分配到每个线程的优先级通信到存储器系统102。例如,主机系统100可以指示存储器系统102以创建具有比线程402-2更高优先级的线程402-1。在这种情形下,主机系统100可以选择性地在闪速条120-1中存储高优先级的数据并且在闪速条120-2中存储低优先级的应用程序数据。因为线程402-1比线程402-2被分配更高的优先级,高优先级的数据的通信将在低优先级的应用程序数据的通信之前发生或抢占或中断。使用下述的方法,闪速接口模块128可以在若干线程之间进行切换,以使能经由单个存储器接口204的对不同的存储器裸芯的并行访问。
参照图3的命令序列302,闪速接口模块128可以为命令序列302分配优先级。在另一个实施例中,主机系统100可以分配优先级到读取请求命令300。在该实施例中,闪速接口模块128可以将优先级与生成的命令序列302相关联。在另一个实施例中,每当新的命令序列被线程接收时,线程的优先级可以被调整。在该实施例中,命令序列可以被分配优先级,并且当该命令序列正在被通信时,命令序列的优先级可以被临时分配给对应的线程。因此,某些紧急或时间关键的命令可以被通信到高优先级的闪速条,即使与该闪速条相关联的线程被创建有低优先级。
每个线程402-1、...、402-N包括闪速上下文表(FCT)403。FCT403对应于目前由线程使用的对应的线程和资源的状态的信息。例如,FCT403包括线程可以用来存储线程的目前状态(例如,活动、非活动等)的数据存储、分配给线程的优先级、正被执行的命令序列、正被用于在RAM212以及与线程相关联的闪速条之间通信数据的逻辑数据路径的配置信息等。
在实施例中,闪速接口模块128包括命令生成器404、仲裁单元406和闪速协议定序器408。命令生成器404、仲裁单元406和闪速协议定序器408可以对应于硬件、固件或软件元件。在一些情况下,设计考虑可以保证混合的方法,其中闪速接口模块128的一些部分在硬件中实现,并且其余部分作为可以由图2的处理器206执行的固件或软件指令来实现。在实施例中,命令生成器404进行将闪速命令转化为命令序列的所需的步骤。例如,命令生成器404响应于接收图3的读取请求命令300来生成命令序列302。命令生成器404将生成的命令序列通信到适当的线程。命令生成器404还可以在通信命令序列之后,激活该适当的线程。
在实施例中,仲裁单元406包括检测线程402-1、...、402-N的任何一个是否为活动的指令。在该实施例中,仲裁单元可以扫描线程402-1、...、402-N的状态。例如,仲裁单元406可以询问或查询线程402-1、...、402-N的每一个的FCT403,以识别相应的线程的活动状态。仲裁单元406安排活动线程的执行。在多于一个的线程是活动的情形中,仲裁单元406可以安排具有较高优先级的线程的执行。在另一个情形中,当具有相同的优先级的两个线程是活动的时,仲裁单元406可以“轮循”或时间切片或时分复用该两个活动线程的执行。通常,轮循方案意味着像具有相同优先级的线程、任务或软件功能的软件对象被允许按顺序执行。在本质上,仲裁单元406将不同的软件对象的执行切割成片。例如,如果线程402-1和402-2具有相同的优先权,并且只要这两个线程是活动的,仲裁单元406将切换或交替线程402-1和402-2的执行。
在实施例中,除了线程的优先级,正由每个线程执行的命令序列可以与序列优先级相关联。在该实施例中,仲裁单元406可以为每个线程生成总的线程优先级。线程的总的优先级可以对应于与相应的线程和该线程的优先级相关联的命令的序列优先级。仲裁单元406可以引起与具有最高的总的优先级的线程相关联的命令序列的执行。在一个示例中,为线程生成总的线程优先级可以包括由线程的总数目缩放与线程相关联的命令序列的序列优先级。该缩放操作的结果可以被添加到该线程的优先级,以生成用于特定的线程的总的线程优先级。
仲裁单元406可以可通信地耦接到闪速协议定序器406。仲裁单元406和闪速协议定序器408之间的通信可以使用标注、中断、队列、信号灯等来产生。在实施例中,仲裁单元406可以通过通信活动的线程的指示来安排活动线程的执行。例如,在实施例中,仲裁单元406可以通信对活动线程的FCT的引用。在一部分命令序列已经被通信到闪速条之后,仲裁单元406还可以被配置为调整线程的优先级。
闪速协议序器408被配置为执行与被安排执行的线程相关联的指令和命令序列。在接收对线程的引用时,闪速协议定序器408可以从线程的FCT403取回线程的上下文。闪速协议定序器408可以顺序地进行与线程相关联的命令序列的步骤。参照图3的命令序列302作为示例,在实施例中,闪速协议定序器408可以顺序地进行与命令序列302相关联的步骤,该步骤包括:激活电路以选择对应于芯片选择字段304的闪速条或发送对应于芯片选择字段304的闪速ID,将命令306、308、310通信到所选择的闪速条,以及检查与所选择的闪速条相关联的状态寄存器。在检测切换指令312时,闪速协议定序器408可以发送线程切换指示到仲裁单元406并且暂停操作。在暂停操作前,闪速协议定序器408可以存储在线程的FCT中的线程的上下文。
尽管在前述的讨论中,线程被用来通信存储器控制器118和闪速条120-1和120-2之间的命令序列,但是例如,在其它实施例中,代替于线程,其它适当的数据结构可以被用于存储命令序列、该命令相关联的优先级信息、所分配的资源等。这样的数据结构的阵列可以用于代替线程。例如,数据结构的条目零可以与闪速条120-1相关联,条目一可以与闪速条120-2相关联等。在这些实施例中,数据结构可以被扫描以识别具有最高优先级的命令序列。在数据结构的条目中的空可以指示没有要被传送到对应于该条目的闪速条的命令序列。数据结构条目还可以包括对与需要被通信的该条目相关联的命令序列的部分的引用。例如,参照图3,如果302-1是先前被通信到闪速条的部分,在与命令序列302相关联的数据结构中的条目可以包括对部分302-2的引用。这样的数据结构在当操作系统没有被采用时的情形中是有用的。
图5是示例的方法500的高级别流程图,在实施例中,该方法500可以在闪速接口模块128中来实现,以使能主机处理器112以及闪速条120-1和120-2之间的通信。在该实施例中,归因于示例的方法500的每个块的功能性可以在命令生成器404、仲裁单元406和闪速协议定序器408中来实现。
在块502处,存储器控制器118的部分可以初始化闪速接口模块128。在实施例中,处理器206可以执行存储在启动代码ROM210中的软件指令,以举例说明闪速接口模块128和到RAM212的复制闪速接口模块128。在该实施例中,处理器206可以检测在闪速存储器116中的闪速条的数目。响应于检测到闪速条的数目,闪速接口线程402-1、...、402-N的对应的数目可以被创建或衍生,且闪速接口线程可以与对应的闪速条相关联。在实施例中,在块502处,实时操作系统(RTOS)(未示出)可以被调用以创建线程402-1、402-2、...、402-N。另外,在块502处,当线程被创建时,该线程可以被分配优先级。在一些实施例中,线程被分配相同的优先级。在其它实施例中,存储器118可以从驱动器110接收期望的线程优先级。线程在创建之后可以保持在非活动状态中。在之前描述的数据结构替代线程使用的实施中在块502处,数据结构可以被适当地初始化。
在块504处,闪速接口模块128可以从驱动器110接收一个或多个闪速命令。每个闪速命令可以包括对闪速条的标识的引用。基于该标识,闪速接口模块128可以确定与闪速命令相关联的闪速条的芯片选择或芯片ID。另外,在块504处,命令生成器404可以从闪速命令生成命令序列。生成命令序列的过程已经参照图3在前面讨论过。基于闪速条的标识,命令生成器404可以将生成的命令序列通信到与闪速条相关联的线程。在一些实施例中,当执行命令序列时,命令生成器404可以接收要被分配到与闪速条相关联的线程的新的优先级。该新的优先级可以与在块504处分配到线程的优先级不同。在块504处,命令生成器404可以为线程重新分配新的优先级。
在一些实施例中,基于闪速命令,响应于主机系统100和闪速存储器116之间的命令序列,命令生成器404可以识别并配置可以用于通信数据的软件和硬件资源。硬件资源的示例包括从来自DMA控制器220、定时器(未示出)等的可用的若干逻辑数据路径中选择的逻辑数据路径。软件资源的示例包括信号灯、互斥、队列、从RAM212分配的存储器等。
在块506处,为了使能线程以将命令序列通信到闪速条,分配到线程的硬件资源可以与具有任务的线程相关联,该任务为通过存储对线程的FCT中的硬件资源的引用来执行命令序列。另外,在块506处,硬件资源本身可以被配置。这可以包括配置中断控制器、暴露中断以生成命令序列已经被成功通信的指示、清除状态和误差寄存器等。
在块508处,线程的FCT可以被配置对分配到线程的软件资源的引用,以使能命令序列的通信。存储对软件资源的引用是特别有用的,因为软件资源可以在已经被通信到闪速条的命令序列之后解除分配。另外,在块508处,在一个实施例中,线程可以被转变到活动状态。在一些实施例中,在接收命令序列时,线程可以自动转换到活动状态。在其它实施例中,命令生成器404可以在将命令序列通信到线程之后,强制线程转换到活动状态。
在块510处,闪速接口模块的元件可以识别已经转换到活动的线程。如下面更详细地讨论,在两个或多个线程是活动的情形中,具有较高优先级的线程可以被安排为用于执行。安排用于执行的线程可以包括发送指示到闪速协议定序器408。
在块512处,在实施例中,闪速接口模块128的元件可以执行与被选择被执行的线程相关联的命令序列。在执行命令序列之前,在块512处,线程的上下文可以从线程的FCT恢复。当线程在之前被执行过时,恢复上下文可以包括将处理器210的硬件寄存器恢复到它们的状态。当在线程的执行响应于检测到切换命令被中断之前,命令序列的第一部分被预先通信,并且命令序列的第二部分正准备要被通信到闪速条时,这是特别有用的。在块512处,响应于在命令序列中检测到切换命令,线程的执行可以被暂停,并且,如果这样的线程存在,该方法可以返回到块510以安排较高优先级的活动线程的执行。在命令序列的最后部分被通信的实例中,在块510处,可以生成指示以指示命令序列的完成。
图6是示例的方法600的流程图,根据实施例,该方法600可以在闪速接口模块128的命令生成器404处来实现。在块602处,命令生成器404可以从存储器控制器118接收闪速命令。在实施例中,在块602处,命令生成器404还可以接收作为闪速命令的预期接收方的闪速条的标识。参照图3,闪速命令300是可以在块602处接收的示例的闪速命令。在块602处,命令生成器404还可以接收与闪速命令相关联的优先级。
在块604处,命令生成器404可以解析或分析接收到的闪速指令,以识别在闪速命令中的命令和数据。参照图3,命令生成器404可以在块604处识别读取感测命令306、轮询状态命令308和读取数据命令310。命令生成器404可以与由闪速存储器116支持的所有有效命令的查询表相关联。在块604处,如果命令无效,命令生成器404可以指示误差情况。
在检测到有效的闪速命令时,在块604处,命令生成器404可以生成对应的部分。例如,在检测到读取感测命令306时,命令生成器404可以在块604处生成部分302-1。在实施例中,命令生成器404可以顺序地识别命令和其相关联的数据,并且通过芯片选择304和切换312来封装命令和其相关联的数据。芯片选择304可以对应于在块602处接收的闪速条的身份。在实施例中,以该方式,命令生成器404可以生成命令序列302。基于闪速命令,在块604处,命令生成器404可以确定例如读取感测306和轮询状态308的两个连续命令可以作为单个部分通信。在该情况中,可以生成部分302-1,而没有切换指令312。因此,闪速协议定序器408可以连续地通信部分302-1和302-2。
在块606处,命令生成器404可以将生成的命令序列发送到与接收到的闪速命令相关联的线程。在优先级在块602处被接收的实施例中,在块606处,与接收到的闪速命令相关联的线程可以被分配优先级。在其它实施例中,命令生成器404可以基于命令序列选择适当的优先级,并且将所选择的优先级分配给该线程。
图7是示例的方法700的流程图,该方法700可以在闪速接口模块128处来实现,以允许经由公共闪速接口将部分命令序列通信到不同的闪速条。在块702处,第一命令序列被选择。如先前所解释的,命令序列可以基于与第一命令序列相关联的优先级而被选择。在一些实施例中,如先前所解释的,命令序列可以与线程相关联,并且该线程可以与闪速条相关联。在其它实施例中,命令序列可以被存储在先前讨论的数据结构中。
在块704处,闪速条的标识可以通过检查命令序列来确定。响应于确定该条的标识,闪速条可以通过断言与闪速条相关联的芯片选择信号而被使能。在块704处,所选择的命令序列的第一部分被通信到所识别的闪速条。另外,在所选择的命令序列的第一部分中的命令和数据可以被通信到闪速条。值得注意的是,该命令序列的第一部分经由公共闪速接口被通信。然而,例如,只有其芯片选择信号被断言的闪速条响应于命令和数据。在检测命令序列中的切换312时,在块704处,可以生成指示或信号,以指示第一部分的通信的完成。在使用数据结构代替线程的实施例中,指向命令序列的下一部分的指针可以被存储在与所选择的命令序列相关联的数据结构的条目中。
在块706处,第二命令序列可以经由公共闪速接口被通信到第二闪速条。第二命令序列可以响应于检测到在第一命令序列的第一部分中的切换来被通信。第二命令序列可以被选择,因为其具有比第一命令序列更高的优先级。在第二命令序列与第一命令序列具有相同优先级的实例中,如果轮循方案被用来选择命令序列,第二命令序列可以仍然被选择以用于通信。在块706处,在通信第二命令序列之前,第一闪速条的芯片选择可以在断言第二闪速条的芯片选择之前被解除断言(de-asserted),以避免争用命令闪速接口。虽然,第一闪速条的芯片选择被解除断言,在闪速存储器116中的微控制器(未示出)可以处理第一命令序列的第一部分,而存储器控制器118正将第二命令序列通信到第二闪速条。
在块708处,第一命令序列的第二部分可以经由公共闪速接口被通信到第一闪速条。如先前解释的,第二闪速条的芯片选择可以在第一闪速条的芯片选择在块708处被断言之前被解除断言,以防止争用。
图8是可以在图4的仲裁单元406处实现的示例的方法800的流程图。在实施例中,在块802处,仲裁单元406可以周期性地查询或询问线程402-1、...、402-N的FCT403,以确定线程的402-1、...、402-N的每一个的状态。在该实施例中,在块802处,当周期性定时器到期时,仲裁单元406可以接收指示。在接收指示时,仲裁单元406可以询问线程402-1、...、402-N的状态。在另一个实施例中,在块802处,每当命令生成器404将命令序列通信到线程402-1、...、402-N的一个时,仲裁单元406可以从命令生成器404接收指示。
在一个情形中,仲裁单元406可以在块802处检测两个或多个活动线程。例如,当来自主机系统100的第一应用程序启动与闪速条120-1的通信,且基本上同时地,来自主机系统100的第二应用程序启动与闪速条120-2的通信时,可能会出现这样的情形。在该情形中,命令生成器404可以生成第一命令序列并且将第一命令序列通信到线程402-1,并且生成第二命令序列并且将第二命令序列通信到线程402-2,从而引起线程402-1和402-2变换到活动状态。
如先前所说明的,线程402-1、...、402-N的每一个可以与相应的优先级相关联。响应于检测到两个或多个活动线程,例如,通过询问每个线程的FCT403,仲裁单元406可以在块804处识别每个活动线程的优先级。在识别活动线程的优先级时,在块804处,仲裁单元406可以比较优先级以选择具有较高或较大的优先级的线程。响应于检测到具有较高优先级的线程,仲裁单元406可以在块804处将对所选择的线程的引用通信到闪速协议定序器408。在块804处,仲裁单元406可以进入暂停状态。
在块806处,仲裁单元406可以接收来自闪速协议定序器408的指示。响应于闪速协议定序器408检测到在闪速协议定序器408通信到闪速条的命令序列中的切换命令312,指示可以被接收。该指示可以对应于图3的切换指示312。在实施例中,仲裁单元406可以不在块804处进入暂停状态,而是可以轮询线程切换指示,以确定闪速协议定序器408何时通信命令序列的一部分。
在一个实施例中,响应于接收线程切换指示,仲裁单元可以在块806处由闪速协议定序器408来递减或调整与引起线程切换指示的生成的命令序列相关联的线程的优先级。另外,仲裁单元406可以通过到块802的分支来重复该序列。优先级可以使用任何合适的数学公式根据确定的数量来调整。
图9是可以在闪速接口模块128的闪速协议定序器408中来实现的示例的方法900的流程图。示例的方法900描述了通信命令序列的单个部分的步骤。例如,参照图3,示例的方法900描述了在通信部分302-1、320-2或302-3的一个中的步骤。在块902处,闪速协议定序器408可以接收对命令序列的引用。如先前所讨论的,在使用数据结构的情形中,引用可以包括到与命令序列相关联的数据结构的条目的指针。在采用线程的实施例中,在块902处,对与命令序列相关联的线程的FCT的引用可以被接收。
在块904处,闪速协议定序器408可以设置上下文。设置上下文可以包括,将处理器210的状态恢复到当线程先前由闪速协议定序器408执行时的状态。例如,在块408处,通用和专用寄存器可以被恢复。在实施例中,用于恢复处理器的状态的信息可以从FCT被取回。在块904处,闪速协议定序器408可以顺序地通信来自命令序列的第一部分的命令和数据。闪速协议定序器408也可以激活硬件以选择作为命令序列的预期接收方的闪速条。在一个实现方式中,在块904处,闪速协议定序器408可以分析命令序列以确定闪速条的身份。在使用图3中描述的命令序列的格式的实现方式中,在块904处,闪速协议定序器408可以取回存储在对应于芯片选择302的数据字段中的数据,并且使用该数据以断言连接到预期的闪速条的芯片选择线。在另一个实现方式中,闪速协议定序器408可以经由公共接口通信对应于识别的闪速条的CHIPID。
在通信命令或数据之前,在块904处,闪速协议定序器408可以确定命令或数据是否指示命令序列的第一部分的结尾。在一个实现方式中,结尾的指示可以对应于图3的切换命令312。
如果闪速协议定序器408确定该命令或数据不是该命令序列的第一部分的结尾的指示,命令或数据可以被通信到选择的闪速条。以该方式,在块904处,闪速协议定序器408可以顺序地通信命令序列的第一部分直到结尾被检测到,例如切换312。
响应于检测到第一命令序列的结尾,闪速协议定序器408可以在块906处生成指示。在实施例中,闪速接口模块128的仲裁单元406可以接收该指示。在生成该指示后,闪速协议定序器408可以停止或暂停操作,直到闪速协议定序器408接收对相同的命令的第二部分或另一个命令序列的引用。在实施例中,在块906处,闪速协议定序器408可以在线程的FCT中存储上下文。当线程由闪速协议定序器408在下一个被执行时,该存储的上下文可以用于恢复处理器的状态。在块906处,闪速协议定序器408还可以激活硬件以取消选择闪速条。
在块908处,闪速协议定序器408可以接受指示以重新开始通信在块902处接收到的命令序列。可替代地,闪速协议定序器408可以接收对第二命令序列的引用,其中,例如耦接到公共闪速接口的第二闪速条120-2是第二命令序列的预期接收方。在任一实例中,闪速协议定序器406将重新开始在块902处的操作。在接收到第二命令序列的实例中,先前描述的步骤将被执行以选择第二闪速条。
在上述讨论中,在命令序列的每个部分之后生成指示。然而,例如,如果命令序列的一部分不以切换312终止,本领域的技术人员将认识到,方法900可以在发信号或者指示命令序列的一部分的通信的结尾之前操作以通信命令序列的下一个顺序部分。
图10A-C是示出了基于时序和优先级来交替命令序列排序、执行和通信的时序图。参照图10A,时序图被示出为,示出了经由公共闪速接口,命令序列902到闪速条120-1的通信,以及命令序列1004和1006到闪速条120-2的通信。重要的是,在该情形下,闪速接口模块128被配置为基于接收到的具有命令序列的优先级信息来调整线程的优先级。命令序列1002与线程402-1相关联,并且命令序列1004和1006与线程402-2相关联。命令序列1002包括两个部分1002-1和1002-2。每个部分可以包括数据字段,该数据字段包含芯片选择304、命令、数据和切换312。在该情形中,命令序列1002和1004由线程402-1和402-2在时间1003处基本上同时地接收,并且线程402-1和402-2两者被初始地分配相同的优先级。
因为线程402-1和402-2具有相同的优先级,仲裁单元406以轮询的方式,首先选择与命令序列1002相关联的线程402-1,并且闪速协议定序器将部分1002-1通信到闪速条120-1。在时间1005处,仲裁单元406选择与命令序列1004相关联的线程402-2,并且闪速协议定序器408将命令序列1004通信到闪速条120-2。
命令生成器404在1005和1007之间的时间处接收去往闪速条120-2的高优先级闪速命令,并且作为响应生成命令序列1006。命令生成器404将命令序列1006通信到与闪速条120-2相关联的线程-线程402-2。另外,命令生成器404暂时为线程402-2分配较高的优先级。仲裁单元406检测到线程402-2比线程402-1的优先级具有更高的优先级,并且命令序列1006准备好被通信到闪速条120-2。作为响应,仲裁单元406安排线程402-2,并且闪速协议定序器408通信命令序列1006。最后,仲裁单元404选择命令序列1002,并且闪速协议定序器408将命令序列1002的第二部分1002-2通信到闪速条120-1。另外,仲裁单元404可以将线程402-2的优先级复位到其原始优先级。该情形示出了较低优先级的命令序列1002的部分1002-2的通信被较高优先级的命令序列1006的通信抢占,尽管命令序列1006在命令序列1002之后被接收。
图10B是示出了线程402-1被创建有比线程402-2更低的优先级的情形的时序图。在该情形中,旨在闪速条120-1的命令序列1002由线程402-1在时间1003处接收。结果,大约在时间1003处,线程402-1被转变到活动状态。线程402-2在时间1003处是非活动的,因为没有命令序列可以用于被通信到闪速条120-2。
仲裁单元406安排线程402-1,并且闪速协议定序器408将命令序列的部分1002-1通信到闪速条120-1。在1003和1005之间的某个时间,线程402-2接收命令序列1004并因此转变到活动状态。在时间1005处,仲裁单元406检测到较高优先级线程402-2是活动的且安排线程402-2用于执行。作为响应,闪速协议定序器408将命令序列1004通信到闪速条120-2。线程402-1保持在活动状态,因为命令序列902的一部分1002-2还没有被通信到闪速条120-1。在时间1007处,在通信命令序列1004之后,线程402-2返回到非活动状态,并且仲裁单元安排较低优先级402-1以用于执行。
图10C是示出了线程402-1具有比线程402-2更高的优先级的情形的时序图。在该情形中,可以假设的是,旨在闪速条120-1的命令序列1002和旨在闪速条120-2的命令序列1004分别基本上同时到达线程402-1和402-1。因为线程402-1比线程402-2具有更高的优先级,仲裁单元406选择与命令序列1002相关联的线程402-1以用于执行。闪速协议定序器408将命令序列1002的部分1002-1通信到闪速条120-1,并且响应于在部分1002-1的结尾检测到切换312,闪速协议定序器408断言线程切换指示。响应于线程切换指示,仲裁单元406再次选择线程402-1以用于执行,因为它仍然是活动的,这是由于命令序列1002的部分1002-2还没有被通信。作为响应,闪速协议定序器408通信命令序列1002-2,并且因为没有更多的部分将被通信,线程402-1转变到非活动状态。最后,因为在该情形中线程402-2是仅剩余的活动的线程,仲裁单元406选择线程402-2以用于执行,并且闪速协议定序器408在将线程402-2转变到非活动状态之前通信命令序列1004。
如前所述,可以采用方法来明智分配和解除分配有限的系统资源,以优化系统中的数据转移。这样的方法可以在图1的示例的闪速接口模块128中实现,以改善闪速存储器116和存储器控制器118之间的数据的通信。这样的资源的示例包括在DMA控制器220中的直接存储器存取(DMA)通道。DMA通道可以被采用以用处理器206的很少的干涉或者无干涉来转移存储器的块。重要的是,DMA通道可以穿过相同的公共接口来操作,从而允许或者甚至增强诸如存储器条120-1和120-2的硬件组件的并行访问。虽然即将到来的讨论引用DMA控制器220中的DMA通道的分配,但是本领域的技术人员将认识到其它资源的分配也可以使用这里所述的教导来进行。
图11描绘了DMA控制器220的DMA通道分配到闪速条120-1和120-2之间的数据转移的概念。在该示例中,DMA控制器220具有四个DMA通道1102、1103、1104和1105。在一些实施例中,存储器控制器118可以包括数据路径管理器,该数据路径管理器管理DMA通道1102、1103、1104和1105的分配和配置。四个通道构成可用于分配到数据转移的通道的集合。这些DMA通道的每个表示用于在存储器控制器118和闪速条之间的数据转移的逻辑数据路径。1102和1104分别对应于线程402-1和402-2的FCT。在线程的FCT中的实线框指示对应的DMA通道被用于在线程的控制下所进行的数据转移。因此,分配到线程的DMA通道可以是可用的DMA通道的集合的子集。箭头头部的方向指示数据转移的方向——右至左指示进入到存储器控制器118,并且左至右指示外出到存储器装置116。虚线框指示,尽管对应的DMA通道可用于数据转移,DMA通道没有被分配用于由线程进行的数据转移。示出了四个DMA通道只是为了便于说明,并且可以实现更少或更多数目的DMA通道。
在图11中描述的情形中,DMA通道1102-1105被分配到正在由线程402-1进行的存储器条120-1和存储器控制器118之间的进入数据转移。与此相反,DMA通道1104和1105被分配到外出数据转移。类似地,DMA通道1103-1105被分配到正在由线程402-2进行的存储器条120-2和存储器控制器118之间的进入数据转移。与此相反,没有DMA通道被分配到外出数据转移。还值得注意的是,DMA通道1103、1104和1105被分配到在闪速条120-1和存储器控制器118之间发生的数据转移,以及在闪速条120-2和存储器控制器118之间发生的数据转移。在这种情况下,来自闪速条120-2的数据与来自闪速库120-1的数据交织。
在进行转移的线程的FCT中存储DMA通道信息的一个优点是,闪速协议定序器408可以配置与所分配的DMA通道相关联的适当的资源。另外,当完成数据转移时,DMA通道可以解除分配。例如,存储器控制器118可以逐个闪速命令地分配和解除分配DMA通道。
在一些实施例中,在图1的系统的初始化期间,闪速接口模块128可以提供有模板,该模块可以包含用于不同的闪速命令的资源分配。另外,该模板还可以包含用于不同的存储器条的资源分配。如果,例如,关键数据存储在闪速条120-1中,闪速条120-1可以被分配更大份额的资源以加速数据转移。基于提供的模板的资源分配产生灵活性。
图12是用于管理存储器控制器118和闪速存储器116之间的通信的示例的方法1200的流程图。以示例的方式并且没有限制,方法1200可以在闪速接口模块128中实现。结果,方法1200的即将到来的讨论参考图4。
在块1202处,可以选择可以被用于实现数据转移的数据路径。该选择可以响应于检测到闪速命令可用于被通信到闪速存储器116。在实施例中,在块1202处,闪速命令可以被分析并与先前接收的模板相比较,以确定DMA通道是否需要被分配以实现数据转移。另外,闪速条的身份也可以被用来确定有多少通道(如果有)将被分配到数据转移。在一些实施例中,在块1202处,将被转移的数据的量可以被检测,并且基于数据的量,DMA通道的适当的子集可以被分配以用于转移。DMA通道信息可以存储在将会进行数据转移的线程的FCT中。数据转移的方向也可以用于确定通道的子集。
在块1204处,可以配置数据通道的所选择的子集。例如,在块1204处,闪速协议定序器408可以取回存储在正被执行的线程的FCT中的DMA通道信息。该信息可以用于分配存储器、编程与所选择的DMA通道相关联的缓冲器描述符、使能中断、清除状态寄存器等。
在块1206处,数据转移可以经由所选择的DMA通道来进行。参照图3的读取命令序列302,响应于接收命令序列302的部分302-3,数据可以经由DMA通道而被转移。在一个实施例中,在数据转移完结处,在块1206处,DMA通道可以被解除分配。
如前面所讨论的,闪速接口模块128可以接收以模板形式的配置信息。该模板可以基于特定的使用情况由图2的主机系统100或者存储器控制器102来生成。在一个实施例中,模板可以在当存储器控制器102被初始通电时,响应于检测到可用的资源而被生成。可用的资源可以包含可用的存储器、在DMA控制器220中的DMA通道、系统计时器(未示出)等。在一个实施例中,模板可以存储在图2的RAM212中。
图13示出了示例的模板结构1300的布局,该模板结构1300可以用于有效地分配在存储器控制器102中的资源。模板结构1300包含描述DMA节点或通道1302的数据字段。然而,模板结构1300可以适配为适应其它系统资源。
参照图13,DMA节点描述符1302包含到DMA模板1306的指针1304。DMA模板1306包括包含到描述符1308-1、...、1308-N的指针的可配置的字段。DMA模板1306还包括提供到描述符的数目的DMA存储器220的数据字段1310,其中该描述符被分配给与DMA模板1306相关联的DMA通道。在实施例中,模板1300还可以包括将被与模板1300使用的描述符的类型的指示。因此,基于在模板中的该指示,在描述符中的数据字段或位字段可以由存储器系统102和/或主机系统100的元件适当的引用和访问。
上述讨论描述了在系统中通信数据的不同的新方法。系统不需要实现上述的所有方法。在一些情况下,系统可以仅实现对应于命令序列的部分的通信的特征。在该系统的一些实现方式中,仲裁单元406可以仅实现线程之间的切换的轮询方法,即线程具有相同的优先级。在其它系统中,线程可以具有不同的优先级。但是,其它的系统可以将DMA通道的动态分配与线程的使用组合,以改善系统中的通信。此外,即使在一些实例中的这些系统中,模板可以用于分配资源,并且在其它实例中,可以避免模板的使用。
本领域的技术人员在阅读上述之后可以设想进一步的实施例。在其它实施例中,可以有益地实现上述公开的本发明的组合或子组合。架构的框图和流程图被分组,以便于理解。然而应该理解的是,可以在在本发明的可替代实施例中构思块、新的块的添加、块的重新布置等的组合。
本说明书和附图,相应地,将被视为说明性的而非限制性的。然而,将很明显的是,各种修改和改变可以完成,而不脱离如权利要求中阐述的本发明的更宽的精神和范围的。
Claims (47)
1.一种用于管理存储器系统中的通信的方法,所述存储器系统包括存储器控制器、第一非易失性存储器(NVM)条和第二非易失性存储器条,所述第一非易失性存储器条和所述第二非易失性存储器条经由公共存储器接口可通信地耦接到所述存储器控制器,所述方法包括所述存储器控制器:
从第一存储器命令生成第一命令序列,其中,所述第一命令序列包括第一部分和第二部分,并且从第二存储器命令生成第二命令序列,其中所述第二命令序列包括至少一个部分;
基于第一标准和第二标准选择所述第一命令序列,其中,所述第一标准与所述第一命令序列相关联,并且所述第二标准与所述第二命令序列相关联;
经由所述公共存储器接口将所述第一命令序列的第一部分通信到所述第一非易失性存储器条;
在通信所述第一部分之后,并且在通信所述第一命令序列的所述第二部分之前,经由所述公共存储器接口将所述第二命令序列的所述至少一部分通信到所述第二非易失性存储器条;
在通信所述第二命令序列的所述至少一部分之后,经由所述公共存储器接口将所述第一命令序列的所述第二部分通信到所述第一非易失性存储器条。
2.如权利要求1所述的方法,其中,响应于检测到所述第一命令序列的所述第一部分被通信到所述第一非易失性存储器条,所述第二命令序列的所述至少一部分被通信。
3.如权利要求2所述的方法,其中,响应于检测到所述第二命令序列的所述至少一部分被通信到所述第二非易失性存储器条,所述第二部分被通信。
4.如权利要求1所述的方法,其中,所述第一命令序列与第一线程相关联,且所述第二命令序列与第二线程相关联,并且其中,所述第一线程与所述第一非易失性存储器条相关联,且所述第二线程与所述第二非易失性存储器条相关联,其中所述第一线程和所述第二线程对应于由所述存储器控制器执行的操作系统的软件对象。
5.如权利要求4所述的方法,其中,所述第一标准指示所述第一线程的状态,且所述第二标准指示所述第二线程的状态,并且其中,选择所述第一命令序列是基于确定所述第一线程的状态是活动的,且所述第二线程的状态是不活动的。
6.如权利要求5所述的方法,还包括,为所述第一线程分配第一优先级,并且为所述第二线程分配第二优先级。
7.如权利要求5所述的方法,还包括,响应于通信所述第一部分,调整所述第一优先级。
8.如权利要求7所述的方法,还包括,在通信所述第一部分之后,检测所述第二线程的状态。
9.如权利要求8所述的方法,还包括,响应于检测到所述第二线程是活动的,比较所述第二优先级与所述调整的第一优先级。
10.如权利要求9所述的方法,其中,响应于确定所述第二优先级超过所述调整的第一优先级,经由所述公共存储器接口将所述第二命令序列的所述至少一部分通信到所述第二非易失性存储器条。
11.如权利要求1所述的方法,其中,通信所述第一命令序列的所述第一部分和所述第二部分包括选择所述第一非易失性存储器条,并且其中通信所述第二命令序列的所述至少一个部分包括取消选择所述第一非易失性存储器条。
12.一种用于经由公共存储器接口与第一非易失性存储器(NVM)条和第二非易失性存储器条通信的方法,所述方法包括存储器控制器的处理器:
响应于从主机接收第一存储器命令,确定所述第一存储器命令旨在被通信到所述第一非易失性存储器条;
从所述第一闪速命令生成命令序列,其中,所述命令序列包括两个部分,每个部分包括一系列命令,其中所述命令的系列是原子的,并且其中每个部分包括与所述第一非易失性存储器条相关联的标识信息;
将所述命令序列的第一部分通信到所述第一非易失性存储器条;以及
响应于检测到在所述第一部分中的所述命令的系列中的命令,生成状态指示,其中,所述状态指示指明所述命令序列的所述第一部分已经被通信到所述第一非易失性存储器条。
13.如权利要求12所述的方法,其中,所述命令序列与第一优先级相关联,并且响应于检测到所述第一优先级,通信所述命令序列的所述第一部分。
14.如权利要求13所述的方法,还包括,接收所述指示,并且确定另一个命令序列是否被接收,所述另一命令序列将被通信到所述第二非易失性存储器条。
15.如权利要求14所述的方法,还包括,响应于确定所述另一个命令序列被接收,检测与所述另一个命令序列相关联的第二优先级,并且比较所述第一优先级与所述第二优先级。
16.如权利要求15所述的方法,还包括:
响应于确定所述第一优先级高于所述第二优先级,将所述命令序列的所述第二部分通信到所述第一非易失性存储器条;以及
响应于确定所述第二优先级高于所述第一优先级,将所述另一个命令序列通信到所述第二非易失性存储器条。
17.一种用于与第一非易失性存储器(NVM)条和第二非易失性存储器条通信的存储器控制器,所述存储器控制器包括:
存储器接口模块,配置为与所述第一非易失性存储器条和所述第二非易失性存储器条通信;以及
处理器,与所述存储器接口模块通信,所述处理器被配置为:
响应于从主机系统接收多个存储器命令,生成多个命令序列,其中所述多个命令序列的每个对应于所述多个存储器命令的相应的一个,其中所述多个命令序列的一些包括第一部分和第二部分,并且所述第一部分和所述第二部分的每个是原子的;
将所述多个命令序列的每个与优先级相关联,以及
经由所述存储器接口模块,基于与所述多个命令序列的所述一个相关联的所述优先级,选择所述多个命令序列的一个,并且将所述多个命令序列的一个的所述第一部分顺序地发送到所述第一非易失性存储器条或所述第二非易失性存储器条的任一个。
18.如权利要求17所述的存储器控制器,其中,经由所述存储器接口模块,所述处理器被进一步配置为检测所述多个命令序列的一个的所述第一部分的结尾。
19.如权利要求18所述的存储器控制器,其中,经由所述存储器接口模块,所述处理器被进一步配置为,响应于检测到所述多个命令序列的一个的所述第一部分的结尾,选择所述多个命令序列的第二个,并且其中选择所述多个命令序列的第二个是基于确定与所述多个命令序列的第二个相关联的优先级高于与所述多个命令序列的一个相关联的所述优先级。
20.如权利要求19所述的存储器控制器,其中,经由所述存储器接口模块,所述处理器被进一步配置为将所述多个命令序列的第二个的所述第一部分发送到所述第一非易失性存储器条或所述第二非易失性存储器条的另一个。
21.一种在存储器控制器和第一非易失性存储器(NVM)装置之间通信数据的方法,所述方法包括,所述存储器控制器:
接收第一模板,所述第一模板包括对所述存储器控制器内的第一集合的资源的引用,所述第一集合的资源用于由所述存储器控制器用来与所述第一非易失性存储器装置通信数据;
基于所述第一模板,配置所述第一集合的资源以用于与所述第一非易失性存储器装置通信数据;
使用所述第一集合的资源与所述第一非易失性存储器装置通信数据;以及
接收第二模板,所述第二模板包括对所述存储器控制器内的第二集合的资源的引用,所述第一集合的资源用于由所述存储器控制器用来与所述第一非易失性存储器装置通信数据,其中所述第二集合的资源与所述第一集合的资源不同;
基于所述第二模板,配置所述第二集合的资源以用于与所述第一非易失性存储器装置通信数据;以及
使用所述第二集合的资源与所述第一非易失性存储器装置通信数据。
22.如权利要求21所述的方法,其中,所述第一集合的资源包括从所述存储器控制器的直接存储器存取(DMA)控制器的逻辑路径的集合中选择的逻辑数据路径的第一子集,其中选择数据路径的所述第一子集基于分析所述第一模板,并且配置所述第一集合的资源包括基于所述第一模板配置数据路径的所述第一子集。
23.如权利要求22所述的方法,其中,配置数据路径的所述第一子集包括配置与数据路径的所述第一子集的每个相关联的多个描述符。
24.如权利要求23所述的方法,其中,配置所述多个描述符的每个包括将相应的缓冲器与所述多个描述符的每个相关联。
25.如权利要求24所述的方法,其中,与所述第一非易失性存储器装置通信数据包括在与所述多个描述符的至少一个相关联的所述缓冲器和所述存储器控制器之间通信数据。
26.一种用于与非易失性存储器(NVM)装置通信的系统,所述系统包括:
存储器控制器,具有存储器接口模块,所述存储器控制器适配为可通信地耦接到主机系统,所述存储器控制器配置为接收模板,所述模板包括对所述存储器控制器内的第一集合的资源的引用,所述第一集合的资源用于由所述存储器控制器用来与所述非易失性存储器装置通信数据,并且基于所述模板,所述存储器控制器适配为配置用于与所述非易失性存储器装置通信数据的所述第一集合的资源;以及
其中,所述存储器接口模块可通信地耦接到所述存储器控制器,并且其中所述存储器接口模块配置为使用所述第一集合的资源在所述存储器控制器和所述第一闪速装置之间通信数据。
27.如权利要求26所述的系统,其中,所述存储器接口模块进一步配置为,基于所述模板,从所述存储器控制器的直接存储器存取(DMA)控制器的逻辑路径的集合选择逻辑数据路径的第一子集,其中选择数据路径的所述第一子集基于分析所述第一模板,并且基于所述模板配置所述第一集合的资源。
28.如权利要求27所述的系统,其中,所述存储器接口模块进一步配置为配置多个描述符,并且将所述多个描述符与所述逻辑数据路径的第一子集的每个相关联。
29.如权利要求28所述的系统,其中,所述存储器接口模块进一步配置为将相应的缓冲器与所述多个描述符的每个相关联。
30.如权利要求29所述的系统,其中,所述存储器接口模块进一步配置为使用所述逻辑数据路径的第一子集引起与所述多个描述符的至少一个相关联的所述缓冲器之间的数据的通信。
31.一种在存储器控制器和第一非易失性存储器(NVM)装置和第二非易失性存储器装置之间通信数据的方法,所述方法包括,所述存储器控制器:
接收用于与所述第一非易失性存储器装置通信数据的第一命令;
基于所述第一命令,从所述存储器控制器的直接存储器存取(DMA)控制器的逻辑路径的集合选择所述存储器控制器和所述第一非易失性存储器装置之间的逻辑数据路径的第一子集;
配置所述逻辑数据路径的第一子集以与所述第一非易失性存储器装置通信数据;以及
将第一存储器命令通信到所述第一非易失性存储器装置以使用所述逻辑数据路径的第一子集启动所述数据的通信,其中,所述第一存储器命令对应于所述接收到的命令。
32.如权利要求31所述的方法,其中,选择所述逻辑数据路径的第一子集包括,基于与所述第一非易失性存储器装置通信数据的方向,选择所述逻辑数据路径的第一子集。
33.如权利要求32所述的方法,其中,选择所述逻辑数据路径的第一子集包括,基于将与所述第一非易失性存储器装置通信的数据的数量,选择所述逻辑数据路径的第一子集。
34.如权利要求31所述的方法,还包括,从所述逻辑数据路径的集合选择逻辑数据路径的第二子集。
35.如权利要求34所述的方法,还包括,使得经由所述逻辑数据路径的第二子集与所述第一非易失性存储器装置的数据的通信。
36.如权利要求35所述的方法,其中,所述逻辑数据路径的第一子集和所述逻辑数据路径的第二子集是有区别的。
37.如权利要求36所述的方法,其中,所述逻辑数据路径的集合的一部分在所述逻辑数据路径的第一子集和所述逻辑数据路径的第二子集之间是公共的。
38.如权利要求31所述的方法,还包括,接收第二命令,用于在所述存储器控制器和所述第二非易失性存储器装置之间通信数据,响应于接收到所述第二命令,从所述逻辑数据路径的集合中选择逻辑数据路径的第三子集,其中所述逻辑数据路径的第三子集包括来自所述逻辑数据路径的第一子集的更多的所述逻辑数据路径的一个。
39.如权利要求38所述的方法,还包括,使用所述存储器控制器和所述第二非易失性存储器装置之间的所述逻辑数据路径的第三子集来启动数据的通信,并且其中,使用所述逻辑数据路径的第三子集的数据的通信与使用所述逻辑数据路径的第一子集与所述第一非易失性存储器装置的数据的通信同时发生。
40.如权利要求39所述的方法,其中,使用所述逻辑数据路径的第一子集在所述存储器控制器和所述第一非易失性存储器装置之间的数据的通信的方向与使用所述逻辑数据路径的第三子集在所述存储控制器和所述第二非易失性存储器装置之间的数据的通信的方向是不同的。
41.如权利要求40所述的方法,其中,所述数据经由公共存储器接口与所述第一非易失性存储器装置和所述第二非易失性存储器装置通信。
42.一种用于在存储器控制器、第一非易失性存储器(NVM)装置和第二非易失性存储器装置之间通信数据的系统,所述系统包括:
存储器控制器;
存储器系统,配置为从主机处理器接收存储器命令,并且响应于接收到所述存储器命令,将存储器命令序列通信到所述第一非易失性存储器装置或所述第二非易失性存储器装置中的一个;以及
数据路径管理器(DPM),配置为从所述存储器控制器的直接存储器存取(DMA)控制器的逻辑路径的集合中选择逻辑数据路径的第一子集,其中所述逻辑数据路径的子集配置为与所述第一非易失性存储器装置或所述第二非易失性存储器装置的任一个通信数据。
43.如权利要求42所述的系统,其中,所述数据路径管理器基于所述接收到的存储器命令选择逻辑数据路径的所述第一子集。
44.如权利要求43所述的系统,其中,数据在所述存储控制器和所述第一非易失性存储器装置或所述第二非易失性存储器装置的任一个之间经由所述逻辑数据路径的第一子集被通信。
45.如权利要求44所述的系统,其中,响应于接收到第二存储器命令以在所述存储器控制器与第一闪速装置或第二闪速装置的另一个之间通信数据,所述数据路径管理器配置为从所述逻辑数据路径的集合中选择逻辑数据的第二子集,其中所述逻辑数据路径的第二子集包括来自所述逻辑数据路径的第一子集的至少一个逻辑数据路径。
46.如权利要求45所述的系统,其中,使用所述逻辑数据路径的第二子集,与所述第一非易失性存储器装置或所述第二非易失性存储器装置的另一个通信数据。
47.如权利要求46所述的系统,其中,所述存储器命令和所述另一个存储器命令与相应的第一线程和第二线程相关联,其中所述数据路径管理器在所述第一线程中存储所述逻辑数据路径的第一子集的标识,并且在所述第二线程中存储所述逻辑数据路径的第二子集的标识,并且其中由所述存储器控制器执行的所述第一线程引起所述存储器命令通信到所述第一非易失性存储器装置或所述第二非易失性存储器装置的所述一个,并且其中由所述存储器控制器执行的所述第二线程引起所述另一个存储器命令通信到所述第一非易失性存储器装置或所述第二非易失性存储器装置的另一个。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/079,433 | 2013-11-13 | ||
US14/079,415 US9390033B2 (en) | 2013-11-13 | 2013-11-13 | Method and system for communicating with non-volatile memory via multiple data paths |
US14/079,433 US9430411B2 (en) | 2013-11-13 | 2013-11-13 | Method and system for communicating with non-volatile memory |
US14/079,371 | 2013-11-13 | ||
US14/079,371 US9377968B2 (en) | 2013-11-13 | 2013-11-13 | Method and system for using templates to communicate with non-volatile memory |
US14/079,415 | 2013-11-13 | ||
PCT/US2014/065350 WO2015073608A1 (en) | 2013-11-13 | 2014-11-13 | Method and system for communicating with non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105723317A true CN105723317A (zh) | 2016-06-29 |
CN105723317B CN105723317B (zh) | 2019-06-28 |
Family
ID=52023623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480062303.4A Active CN105723317B (zh) | 2013-11-13 | 2014-11-13 | 用于与非易失性存储器通信的方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105723317B (zh) |
WO (1) | WO2015073608A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878501A (zh) * | 2021-07-27 | 2023-03-31 | 北京特纳飞电子技术有限公司 | 用于灵活存储控制器的固件控制且基于表的条件作用 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11455124B2 (en) | 2020-10-09 | 2022-09-27 | Western Digital Technologies, Inc. | Command prioritization to reduce latencies of zone commands |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136549A1 (en) * | 2005-12-09 | 2007-06-14 | Megachips Lsi Solutions Inc. | Information processing apparatus, controller and file reading method |
TW200900926A (en) * | 2007-04-25 | 2009-01-01 | Apple Inc | Command resequencing in memory operations |
CN101644995A (zh) * | 2008-08-05 | 2010-02-10 | 晶天电子(深圳)有限公司 | 多层控制多闪存装置、存储装置和数据分割固态硬盘 |
US20100088469A1 (en) * | 2008-10-08 | 2010-04-08 | Hitachi, Ltd. | Storage system |
US20120221771A1 (en) * | 2011-02-25 | 2012-08-30 | Samsung Electronics Co., Ltd. | Data storage system and data mapping method of the same |
-
2014
- 2014-11-13 CN CN201480062303.4A patent/CN105723317B/zh active Active
- 2014-11-13 WO PCT/US2014/065350 patent/WO2015073608A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136549A1 (en) * | 2005-12-09 | 2007-06-14 | Megachips Lsi Solutions Inc. | Information processing apparatus, controller and file reading method |
TW200900926A (en) * | 2007-04-25 | 2009-01-01 | Apple Inc | Command resequencing in memory operations |
CN101644995A (zh) * | 2008-08-05 | 2010-02-10 | 晶天电子(深圳)有限公司 | 多层控制多闪存装置、存储装置和数据分割固态硬盘 |
US20100088469A1 (en) * | 2008-10-08 | 2010-04-08 | Hitachi, Ltd. | Storage system |
US20120221771A1 (en) * | 2011-02-25 | 2012-08-30 | Samsung Electronics Co., Ltd. | Data storage system and data mapping method of the same |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878501A (zh) * | 2021-07-27 | 2023-03-31 | 北京特纳飞电子技术有限公司 | 用于灵活存储控制器的固件控制且基于表的条件作用 |
CN115878501B (zh) * | 2021-07-27 | 2024-09-10 | 北京特纳飞电子技术有限公司 | 用于灵活存储控制器的固件控制且基于表的条件作用 |
Also Published As
Publication number | Publication date |
---|---|
CN105723317B (zh) | 2019-06-28 |
WO2015073608A1 (en) | 2015-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9430411B2 (en) | Method and system for communicating with non-volatile memory | |
EP2529308B1 (en) | A system and method for read-while-write with nand memory device | |
US7487302B2 (en) | Service layer architecture for memory access system and method | |
JP5296041B2 (ja) | メモリシステムおよびメモリシステムの制御方法 | |
US8819345B2 (en) | Method, apparatus, and computer program product for inter-core communication in multi-core processors | |
CN111723030B (zh) | 存储器系统及存储器系统的控制方法 | |
US9390033B2 (en) | Method and system for communicating with non-volatile memory via multiple data paths | |
RU2641251C1 (ru) | Способ и устройство для автоматического обмена сигналами между встроенными мультиплатами центрального процессора | |
CN111190842B (zh) | 直接存储器访问、处理器、电子设备和数据搬移方法 | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
US7760768B2 (en) | System and method for allocating a plurality of sources to a plurality of channels | |
CN1975702A (zh) | 控制时钟信号的输出的装置和方法和包括该装置的系统 | |
CN110716691A (zh) | 调度方法、装置、闪存设备和系统 | |
US9377968B2 (en) | Method and system for using templates to communicate with non-volatile memory | |
JP2018518774A (ja) | 複数のsdioユニットを備えた多元接続の単一のsdioインターフェース | |
CN105723317A (zh) | 用于与非易失性存储器通信的方法和系统 | |
CA2616015A1 (en) | Dma simultaneous transfer to multiple memories | |
US9678752B2 (en) | Scheduling apparatus and method of dynamically setting the size of a rotating register | |
US9804959B2 (en) | In-flight packet processing | |
CN110543351B (zh) | 数据处理方法以及计算机设备 | |
US9430427B2 (en) | Structured block transfer module, system architecture, and method for transferring | |
KR100615694B1 (ko) | 복수개의 기능블럭을 제어하는 제어시스템 | |
US6654861B2 (en) | Method to manage multiple communication queues in an 8-bit microcontroller | |
CN104267929A (zh) | 计算系统以及在该计算系统中操作锁的方法 | |
CN103838679A (zh) | 一种缓存处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: texas Applicant after: DELPHI INT OPERATIONS LUX SRL Address before: texas Applicant before: Sandisk Corp. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |