CN112597080B - 读请求控制装置及方法以及存储器控制器 - Google Patents
读请求控制装置及方法以及存储器控制器 Download PDFInfo
- Publication number
- CN112597080B CN112597080B CN202011589829.1A CN202011589829A CN112597080B CN 112597080 B CN112597080 B CN 112597080B CN 202011589829 A CN202011589829 A CN 202011589829A CN 112597080 B CN112597080 B CN 112597080B
- Authority
- CN
- China
- Prior art keywords
- functional unit
- read requests
- unit
- processed
- read
- 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
Images
Classifications
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- 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
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Bus Control (AREA)
Abstract
本发明涉及一种读请求控制装置及方法以及存储器控制器,其中,该读请求控制装置包括多个功能单元、仲裁单元和PCIE控制单元,每个功能单元在发送读请求之前,会检查自身正在处理的读请求数量是否超过最大标签阈值,如果超过最大标签阈值,不会发送读请求,如此避免仲裁单元收到大量读请求,导致数据拥堵和性能下降;仲裁单元为每个功能单元为预留一定数量的可自由申请的标签,每个功能单元可自行决定紧急的、重要的读请求,并优先发送紧急的、重要的读请求给仲裁单元,只要不超过最小标签阈值,这些读请求都能够得到快速处理,使得紧急、重要的读请求能够被及时响应,整体提高传输速率。
Description
技术领域
本申请涉及存储器领域,并且更具体地涉及一种读请求控制装置及方法以及存储器控制器。
背景技术
固态硬盘(Solid State Disk),简称SSD,是一种主要以闪存颗粒(NAND Flash)作为永久性存储器的计算机存储设备,被广泛应用于笔记本电脑、工控、视频监控、网络监控、网络终端、导航设备等诸多领域。
图1示出闪存系统的示意性框图,包括主机110以及包括存储器控制器120和存储器130的固态硬盘。主机110经由存储器控制器120访问存储器130。该存储器130包括至少一个闪存芯片131。主机110可包括处理器。
存储器控制器120例如是单独的集成电路芯片,包括写操作控制装置(未示出)、读操作控制装置(未示出)以及芯片控制装置(未示出)。写操作控制装置是根据主机110发送的写入命令将数据写入到闪存芯片130中。读操作控制装置是根据主机110发送的读取命令从闪存信息130中读取数据。芯片控制装置是根据主机110发送的控制命令来控制芯片的运行。在上述写操作控制装置、读操作控制装置以及芯片控制装置的运行过程当中,存储器控制器120都会通过发送读请求至主机110,以从主机110读取相应的数据信息。
主机110和存储器控制器120之间的通信采用PCIE协议。PCIE(peripheralcomponent interconnect express)协议是一种高速串行计算机扩展总线标准,拥有数据传输速率高,抗干扰能力强,传输距离远,功耗低等优点,被广泛应用于各类高速/大数据量的设备当中。
PCIE协议需要支持乱序传输。存储器控制器120按照一定顺序通过PCIE传输通路向主机110发送多个读请求,主机110在收到多个读请求之后,分别去准备相应的数据,先准备好的数据可以即时返回给存储器控制器120,不需要等之前的读请求的数据准备好。乱序传输意味着存储器控制器120发出的读请求和主机110返回的读数据,它们的顺序并不是一一对应的,这样就需要一个标签来将读请求以及返回的读数据一一对应起来,来保证数据传输的正确性,这个标签就是PCIE PACKET TAG。在SSD的应用场景当中,主机110和存储器控制器120之间能够支持的PCIE PACKET TAG的最大个数是固定的,通常为32个,即存储器控制器120最多能够同时发送32个读请求。
存储器控制器120发出的多个读请求可以来自存储器控制器120内部的多个不同的功能单元。存储器控制器120内部采用流水线模式,当接收到主机110发送过来的命令之后,将其分配到由多个功能单元组成的流水线上执行,以实现执行效率最大化。每个功能单元在其内部条件允许的情况下都会发送读请求,因此多个功能单元发送的读请求的总和很容易会超过PCIE PACKET TAG的上限。此时存储器控制器会对多个读请求进行仲裁。目前存储器控制器多采用轮询的仲裁方式,即每个功能单元会被预先分配一个固定的优先级,存储器控制器当收到多个功能单元的读请求之后,会首先根据它们各自的固定优先级选择其中一个功能单元的读请求,而在下一次的仲裁当中,会从下一个优先级的功能单元开始进行循环遍历,直到选出下一个读请求。
采用轮询的仲裁方式来分配PCIE PACKET TAG,虽然能够保证每个功能单元都能够申请到PCIE PACKET TAG,但是对于某些比较紧急的读请求来说,如果它排在了当前轮询顺序的最后一位,且PCIE PACKET TAG已经全部被分配,那么它需要等待有PCIE PACKETTAG被释放出来且轮询顺序排在它之前的读请求被处理完成,才能够申请到PCIE PACKETTAG,这就会导致这个比较紧急的读请求没有被及时响应,从而可能会拉低整个设备整体的传输速率。
发明内容
有鉴于此,本发明提供一种读请求控制装置及方法以及存储器控制器,以解决现有技术中存在的技术问题。
根据本发明的第一方面,提供一种用于存储器的读请求控制装置,包括:
命令处理单元,包括多个功能单元,第一功能单元用于获得当前正在处理的读请求数量,并在每次发送读请求之前,判断所述当前正在处理的读请求数量是否大于或者等于所述第一功能单元的最大标签阈值,如果所述当前正在处理的读请求数量大于或者等于所述第一功能单元的最大标签阈值,则暂停发送读请求,直到所述当前正在处理的读请求数量小于所述第一功能单元的最大标签阈值;
仲裁单元,与所述命令处理单元耦接,用于获得每个功能单元当前正在处理的读请求数量,并在接收所述第一功能单元的读请求之后,判断所述第一功能单元当前正在处理的读请求数量是否小于所述第一功能单元的最小标签阈值,如果所述第一功能单元当前正在处理的读请求数量小于所述第一功能单元的最小标签阈值,则为所述第一功能单元分配一个标签,并将该标签和所述读请求组织成读请求命令数据发送出去,所述第一功能单元为所述多个功能单元中的任意一个;
PCIE控制单元,用于基于PCIE协议封装所述读请求命令数据并将封装后的数据传送给主机。
可选地,所述仲裁单元还包括:
如果所述第一功能单元当前正在处理的读请求数量大于或者等于所述最小标签阈值,则按照轮询的仲裁方式从未被使用的标签中任选一个标签分配给所述第一功能单元,并将该标签和所述读请求组织成读请求命令数据发送给所述PCIE控制单元。
可选地,每个功能单元在发送读请求后,将该功能单元正在处理的读请求数量增加1,在接收到所述主机返回的读请求数据后,将该功能单元正在处理的读请求数量减去1。
可选地,所述多个功能单元为第1级别的功能单元,所述读请求控制装置还包括:第2级别至第N级别的功能单元,所述N大于或等于2,所述第N级别至第1级别的功能单元逐级发送读请求,
所述第2级别至所述第N级别的功能单元中的任意一个功能单元执行以下操作:
统计与其耦接的下级功能单元当前正在处理的读请求数量;
在接收到下级功能单元的读请求之后,判断该功能单元当前正在处理的读请求数量是否小于该功能单元的最小标签阈值,如果是,则为该功能单元申请一个标签,如果否,则采用轮询的仲裁方式为该功能单元申请一个标签;
在每次发送读请求之前,判断本功能单元正在处理的读请求数量是否大于或等于本功能单元的最大标签阈值,如果是,则暂停发送读请求,直到本功能单元正在处理的读请求数量小于本功能单元的最大标签阈值,本功能单元正在处理的读请求数量包括自身产生和下级功能单元生成的正在处理的读请求数量。
可选地,每个功能单元的最大标签阈值和最小标签阈值是可配置的。
可选地,下级功能单元的最小标签阈值之和不超过与它耦接的上级功能单元的最小标签阈值,下级功能单元的最大标签阈值超过与其耦接的上级功能单元的最大标签阈值。
可选地,所述读请求控制装置还包括:命令解析单元,用于解析从所述PCIE控制单元接收到的命令,所述命令由所述主机发送给所述PCIE控制单元,所述命令解析单元将所述命令发送给所述命令处理单元,所述命令处理单元将所述命令分发给至少一个功能单元执行,所述至少一个功能单元在执行过程中产生读请求。
可选地,所述多个功能单元各自的最大标签阈值之和大于所述PCIE控制单元能够支持的标签总量,所述多个功能单元各自的最小标签阈值之和则小于所述PCIE控制单元能够支持的标签总量。
根据本发明的第二方面,提供一种用于存储器的读请求控制方法,所述存储器包括多个功能单元、仲裁单元和PCIE控制单元,所述功能单元执行以下操作:
统计当前正在处理的读请求数量;
在每次发送读请求之前,判断所述当前正在处理的读请求数量是否大于或者等于自身的最大标签阈值,如果所述当前正在处理的读请求数量大于或者等于自身的最大标签阈值,则暂停发送读请求,直到所述当前正在处理的读请求数量小于所述自身的最大标签阈值;
所述仲裁单元执行以下操作:
统计每个功能单元当前正在处理的读请求数量;
在接收第一功能单元的读请求之后,判断所述第一功能单元当前正在处理的读请求数量是否小于所述第一功能单元的最小标签阈值,如果所述第一功能单元当前正在处理的读请求数量小于所述第一功能单元的最小标签阈值,则为所述第一功能单元分配一个标签,并将该标签和所述读请求组织成读请求命令数据发送出去,所述第一功能单元为所述多个功能单元中的任意一个;
所述PCIE控制单元执行以下操作:
基于PCIE协议封装所述读请求命令数据并将封装后的数据传送给主机。
可选地,所述仲裁单元还执行:
如果所述第一功能单元当前正在处理的读请求数量大于或者等于所述最小标签阈值,则按照轮询的仲裁方式从未被使用的标签中任选一个标签分配给所述第一功能单元,并将该标签和所述读请求组织成读请求命令数据发送给所述PCIE控制单元。
可选地,每个功能单元在发送读请求后,将该功能单元正在处理的读请求数量增加一,在接收到所述主机返回的读请求数据后,将该功能单元正在处理的读请求数量减去一。
可选地,所述多个功能单元为第一级别的功能单元,所述读请求控制装置还包括:第2级别至第N级别的功能单元,所述N大于或等于2,所述第2级别至第N级别的功能单元逐级发送读请求,
所述第2级别至所述第N级别的功能单元中的任意一个功能单元执行以下操作:
统计与其耦接的下级功能单元当前正在处理的读请求数量;
在接收到下级功能单元的读请求之后,判断该功能单元当前正在处理的读请求数量是否小于该功能单元的最小标签阈值,如果是,则为该功能单元申请一个标签,如果否,则采用轮询的仲裁方式为该功能单元申请一个标签;
在每次发送读请求之前,判断本功能单元正在处理的读请求数量是否大于或等于本功能单元的最大标签阈值,如果是,则暂停发送读请求,直到本功能单元正在处理的读请求数量小于本功能单元的最大标签阈值,本功能单元正在处理的读请求数量包括自身产生和下级功能单元生成的正在处理的读请求数量。
可选地,每个功能单元的最大标签阈值和最小标签阈值是可配置的。
可选地,下级功能单元的最小标签阈值之和不超过与它耦接的上级功能单元的最小标签阈值,下级功能单元的最大标签阈值超过与其耦接的上级功能单元的最大标签阈值。
可选地,所述多个功能单元各自的最大标签阈值之和大于所述PCIE控制单元能够支持的标签总量,所述多个功能单元各自的最小标签阈值之和则小于所述PCIE控制单元能够支持的标签总量。
根据本发明的第三方面,提供一种存储器控制器,包括上述任一项所述的读请求控制装置。
根据本发明的第四方面,提供一种闪存系统,包括存储器和上述的存储器控制器。
本发明提供的基于可动态调整的PCIE数据包标签的读请求控制装置具有以下优势:首先每个功能单元在发送读请求之前,会检查自身正在处理的读请求数量是否超过最大标签阈值,如果超过最大标签阈值,不会发送读请求,如此避免仲裁单元收到大量读请求,导致数据拥堵和性能下降;其次仲裁单元为每个功能单元为预留一定数量的可自由申请的标签(这个数量等于每个功能单元的最小标签阈值),每个功能单元可自行决定紧急的、重要的读请求,并优先发送紧急的、重要的读请求给仲裁单元,只要不超过最小标签阈值,这些读请求都能够得到快速处理,避免重要、紧急的读请求会被仲裁单元安排在非重要和非紧急的读请求之后,使得紧急、重要的读请求能够被及时响应,从而整体提高整个设备的传输速率。
在进一步的实施例中,通过逐级的标签管理,减轻了仲裁单元的性能压力。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出闪存系统的示意性框图;
图2示出根据本发明一实施例的闪存系统中读请求控制装置的示意性框图;
图3示出根据本发明另一实施例的闪存系统中读请求控制装置的示意性框图;
图4是一个多级功能单元的示例图;
图5a是由图2中的仲裁单元执行的操作的流程图;
图5b是由图2中的功能单元执行的操作的流程图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
图2是本发明一实施例的闪存系统中读请求控制装置的详细结构图。
如图上所示,闪存系统中的存储器控制器120包括基于可动态调整的PCIE数据包标签的读请求控制装置,该读请求控制装置包括PCIE控制单元1201、命令解析单元1202、仲裁单元1203以及多个功能单元。PCIE控制单元1201和主机110基于PCIE协议进行格式转换和数据收发。当从命令解析单元1202接收数据时,按照PCIE协议封装数据,并将封装后的数据发送给主机110。当从主机110接收数据时,按照PCIE协议解析数据,并将解析出来的数据发送给命令解析单元1202。命令解析单元1202接收自PCIE控制单元1201发送的各种命令,对每个命令进行解析、分解,并将处理后的命令发送给命令处理单元1204,由命令处理单元1204组织将命令在多个功能单元中的一个或多个中执行。功能单元是芯片内部的硬件执行单元。
存储器控制器120可执行三种命令:写命令、读命令以及控制命令,根据上述三种命令都会从主机110当中读取数据信息,以保证命令的正确执行。
以写命令为例,写命令是主机110向存储器控制器120发送的一种命令。它表示主机110向存储器130写入数据。写命令会经过PCIE控制单元1201和命令解析单元1202传送给命令处理单元1204中的一个或多个功能单元。这些功能单元在接收到写命令之后,从写命令中提取出数据地址。数据地址表示要写到存储器130中的数据的物理或逻辑地址。根据数据地址,这些功能单元生成读请求并发送给仲裁单元1203。
仲裁单元1203用于对多个读请求进行仲裁,根据仲裁结果为选择的一个读请求分配标签,并发送该读请求至PCIE控制单元1201。当然,功能单元还可以发送除了读请求之外的其他请求,当这些请求需要经过仲裁单元1203时,同样经由仲裁得到标签。
读请求经由PCIE控制单元1201发送给主机110。主机110执行后,将读请求对应的数据再经由PCIE控制单元1201和仲裁单元1203传送给相应的功能单元。在此过程中,当发送读请求时,需要读请求申请一个空闲的标签,当读请求的数据返回时,需要释放已申请的标签。这样,有限的标签被循环使用,保证系统正常工作。背景技术中,仲裁单元1203申请标签时,采用轮询的仲裁方式,这就导致一些重要的、紧急的读请求会被安排在非重要和非紧急的读请求之后。
在本实施例中,对标签管理做了改进。首先为每个功能单元设置维护一个最小标签阈值和一个最大标签阈值,可将每个功能单元的最大标签阈值存储在该功能单元内部的固件里,并将所有功能单元的最小标签阈值存储在仲裁单元1203的固件中。仲裁单元1203的固件中还可以维护一个PCIE控制单元1201能够支持的标签总量。
其次,每个功能单元实现以下操作:获得当前正在处理的读请求数量,并在每次发送读请求之前,判断当前正在处理的读请求数量是否大于或者等于最大标签阈值,如果当前正在处理的读请求数量大于或者等于最大标签阈值,则暂停发送读请求,直到当前正在处理的读请求数量小于最大标签阈值。这里的正在处理的读请求数量是指在处理过程中的读请求的数量,通常在每个读请求发送之后,将当前正在处理的读请求数量加1,在读请求对应的数据返回之后,将当前正在处理的读请求数量减1。
再次,仲裁单元1203实现以下操作:获得每个功能单元当前正在处理的读请求数量,并在接收第一功能单元的读请求之后,判断第一功能单元当前正在处理的读请求数量是否小于第一功能单元的最小标签阈值,如果第一功能单元当前正在处理的读请求数量小于第一功能单元的最小标签阈值,则为第一功能单元分配一个标签,并将该标签和读请求组织成读请求命令数据发送给PCIE控制单元1201;如果第一功能单元当前正在处理的读请求数量大于或者等于第一功能单元的最小标签阈值,则按照轮询的仲裁方式从未被使用的标签中任选一个标签分配给第一功能单元,并将该标签和读请求组织成读请求命令数据发送给所述PCIE控制单元1201。未被使用的标签等于PCIE控制单元1201能够支持的所有标签减去所有功能单元正在使用的标签。这里的第一功能单元可为多个功能单元中的任意一个。
每个功能单元的最小标签阈值小于该功能单元的最大标签阈值。所有功能单元的最小标签阈值之和应该小于PCIE控制单元1201能够支持的标签总量,或所有功能单元的最小标签阈值之和应该小于PCIE控制单元1201能够支持的标签总量乘以一个百分比,这个百分比可以设置,例如可以是20%。所有功能单元的最大标签阈值之和应大于PCIE控制单元1201能够支持的标签总量。例如假设PCIE控制单元1201能够支持的标签总量为32,而功能单元有4个,则每个功能单元的最小标签阈值可设置为4,而最大标签阈值则可以设置为10。
本实施例具有以下优势:首先每个功能单元在发送读请求之前,会检查自身正在处理的读请求数量是否超过最大标签阈值,如果超过最大标签阈值,不会发送读请求,如此避免仲裁单元收到大量读请求,导致数据拥堵和性能下降;其次仲裁单元为每个功能单元为预留一定数量的可自由申请的标签(这个数量等于每个功能单元的最小标签阈值),每个功能单元可自行决定紧急的、重要的读请求,并优先发送紧急的、重要的读请求给仲裁单元,只要不超过最小标签阈值,这些读请求都能够得到快速处理,从而避免重要、紧急的读请求会被仲裁单元安排在非重要和非紧急的读请求之后。
在一个实施例中,仲裁单元1203的固件中存储所有功能单元的最大标签阈值和最小标签阈值。而且,所有和标签相关的管理逻辑都在仲裁单元1203实现。具体地,仲裁单元1203获得每个功能单元当前正在处理的读请求数量,如果第一功能单元当前正在处理的读请求数量大于或者等于第一功能单元的最大标签阈值,则不再接收第一功能单元的读请求,如果第一功能单元正在处理的读请求数量小于第一功能单元的最大标签阈值但是大于或者等于第一功能单元的最小标签阈值,则按照轮询的仲裁方式从未被使用的标签中为第一功能单元分配一个标签,并将该标签和读请求组织成读请求命令数据发送给PCIE控制单元1201,如果第一功能单元当前正在处理的读请求数量小于第一功能单元的最小标签阈值,则为第一功能单元申请一个空闲的标签,并将该标签和读请求组织成读请求命令数据发送给PCIE控制单元1201。
应该理解的是,每个功能单元的最大标签阈值和最小标签阈值是可配置的。因此在芯片成品当中,某些应用场景下,部分功能单元所对应的功能是被屏蔽的,那么可以将这部分功能单元的最大和最小标签阈值都配置为0,则上级功能单元将不会再分配标签给这部分功能单元,这部分空余出来的标签可以按需分配给其他功能单元,提高其他功能单元的传输效率。还可以为有特殊需求的功能单元预留足够数量的标签,保证其能够及时申请到标签,提高传输速率。在运行过程中,还可以根据实际需求,在每个功能单元被分配的最大和最小标签阈值范围之内,按需调整每个功能单元实际能够申请到的标签数量,自动适应不同场景下各功能单元的使用需求。
图3是本发明另一实施例的闪存系统中读请求控制装置的详细结构图。图3中,存储器控制器130中的读请求控制装置(未示出)包括PCIE控制单元1301、命令解析单元1302和仲裁单元1303,分别和图2中的PCIE控制单元1201、命令解析单元1202和仲裁单元1203大致相同。不同之处主要在于命令处理单元。参考图上所示,命令处理单元1304包括N个级别的功能单元。第一级别的功能单元包括与仲裁单元1303耦接的功能单元1-1、1-2、1-3、1-4、等等。第二级别的功能单元与第一级别的功能单元耦接。第N级别的功能单元包括功能单元N-1、N-2、等等。每个功能单元可以有多个下级功能单元,但是只可以有一个上级功能单元。第N级别至第1级别的功能单元逐级向上发送读请求。
首先,仲裁单元1303只和第一级别的功能单元进行数据收发。由此,第2级别到第N级别的功能单元的读请求都需要逐级发送给上一级别的功能单元直到发送给第一级别的功能单元,同理,第2级别到第N级别的功能单元的读请求对应的数据需要由第1级别的功能单元逐级发送下来。仲裁单元1303关于标签管理的操作流程可参见上文对于仲裁单元1203的描述,这里就不再重复。
其次,为每个功能单元都设置一个最大标签阈值和最小标签阈值,对于第1级别至第N-1级别的功能单元,首先对于接收到的读请求,判断下级功能单元正在处理的读请求数量(下级功能单元直接发送和转发的读请求数量总和)是否小于该功能单元的最小标签阈值,如果是,则为接收到的读请求申请一个空闲的标签,并将标签和读请求的映射关系保留下来,将该读请求作为待发送读请求;如果下级功能单元正在处理的读请求数量大于或等于该功能单元的最小标签阈值,采用轮询的方式进行仲裁获取标签,选择优先级最高的一个读请求作为待发送读请求,与被选中的下级功能单元进行映射并将必要的信息保存在当前功能单元中。然后对于所有待发送的读请求(包括本级功能单元要发送的读请求),判断本级功能单元正在处理的读请求数量是否小于本级功能单元的最大标签阈值,如果是,则将待发送读请求发送出去,如果不是,则暂停发送读请求直到本级功能单元正在处理的读请求数量小于本级功能单元的最大标签阈值。当上级功能单元返回数据之后,根据一同返回的标记信息和当前功能单元当中存储的信息,找到相应的下级功能单元,返回数据给下级功能单元。当数据返回后,释放标签。
本实施例通过分级进行标签管理,能够减少由于无限制地发送读请求导致在仲裁单元上的数据拥堵和性能降低。
在上述标签管理中,需要针对存储器控制器的实际结构为每个功能单元设置最小标签阈值和最大标签阈值。图4是一个示例性的各个功能单元的标签设计图。如图上所示,假设PCIE接口能够支持的标签总量为32,三个第1级功能单元1-1、1-2和1-3的最小和最大标签阈值为(4,15)、(2,12)和(2,11)。五个第2级功能单元2-1、2-2、2-3、2-4和2-5的最小和最大标签阈值分别为(2,10)、(1,15)、(2,10)、(1,10)和(1,10)。一般地,下级功能单元的最小标签阈值之和不超过与它耦接的上级功能单元的最小标签阈值,而下级功能单元的最大标签阈值则超过与其耦接的上级功能单元的最大标签阈值。
本发明还提供一种读请求控制方法,该方法在图2所示的系统实施,并分别由功能单元和仲裁单元1203执行。仲裁单元1203执行的操作如图5a所示。参考图5a所示,包括步骤S01至S06。
步骤S01是统计每个功能单元当前正在处理的读请求数量。由于有多个功能单元与仲裁单元耦接,这里是统计所有功能正在处理的读请求数量。
步骤S02是接收第一功能单元的读请求。第一功能单元是多个功能单元中的任意一个。
步骤S03是判断第一功能单元当前正在处理的读请求数量是否小于第一功能单元的最小标签阈值。如果第一功能单元当前正在处理的读请求数量小于第一功能单元的最小标签阈值,则执行步骤S04;否则,执行步骤S05。
步骤S04是将该标签和读请求组织成读请求命令数据发送给PCIE控制单元。
步骤S05是通过轮询的仲裁方式获得一个标签。轮询的仲裁方式是根据功能单元的优先级,为优先级高的功能单元先提供标签。因此第一功能单元未必能够马上获得标签,而可能需要等待一段时间,等待其他优先级更高的功能单元优先获得标签之后获得标签,当然前提条件是还有未被使用的标签。
步骤S06是将该标签和读请求组织成读请求命令数据发送出去。
功能单元执行的操作如图5b所示。参考图5b所示,包括以下步骤。
步骤S11是统计当前正在处理的读请求数量。
步骤S12是判断当前正在处理的读请求数量是否大于或者等于最大标签阈值,如果是,则执行步骤S13,即暂停发送读请求,直到判断当前正在处理的读请求数量小于最大标签阈值;如果否,则执行步骤S14,发送读请求。
应该理解的是,图5b所示的操作也可以由仲裁单元执行,即仲裁单元判断每个功能单元正在处理的读请求数量是否大于该功能单元的最大标签阈值,如果是,则不在接收该功能单元的读请求,如果否,则继续接收该功能单元的读请求并通过轮询的仲裁方式为该功能单元申请标签。
在进一步的实施例中,参考上文所述,可对各个功能单元进行分级管理,这里就不再详述。
在此所用的术语“模块”可以指代以下各项、作为以下各项的一部分或者包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所描述的功能性的其他合适的组件。
本领域技术人员可以理解,根据本发明的数据处理系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。
根据本发明的数据处理系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种用于存储器的读请求控制装置,包括:
命令处理单元,包括多个功能单元,第一功能单元用于获得当前正在处理的读请求数量,并在每次发送读请求之前,判断所述当前正在处理的读请求数量是否大于或者等于所述第一功能单元的最大标签阈值,如果所述当前正在处理的读请求数量大于或者等于所述第一功能单元的最大标签阈值,则暂停发送读请求,直到所述当前正在处理的读请求数量小于所述第一功能单元的最大标签阈值,否则,所述第一功能单元确定需优先发送的读请求并按此发送;
仲裁单元,与所述命令处理单元耦接,所述仲裁单元为每个功能单元指定数量为最小标签阈值的可自由申请的标签,所述仲裁单元用于获得每个功能单元当前正在处理的读请求数量,并在接收所述第一功能单元的读请求之后,判断所述第一功能单元当前正在处理的读请求数量是否小于所述第一功能单元的最小标签阈值,如果所述第一功能单元当前正在处理的读请求数量小于所述第一功能单元的最小标签阈值,则只要有空闲标签则分配给所述第一功能单元,并将该标签和所述读请求组织成读请求命令数据发送出去,所述第一功能单元为所述多个功能单元中的任意一个,每个功能单元的最大标签阈值大于该功能单元的最小标签阈值;
PCIE控制单元,用于基于PCIE协议封装所述读请求命令数据并将封装后的数据传送给主机。
2.根据权利要求1所述的读请求控制装置,其中,所述仲裁单元还包括:
如果所述第一功能单元当前正在处理的读请求数量大于或者等于所述最小标签阈值,则按照轮询的仲裁方式从未被使用的标签中任选一个标签分配给所述第一功能单元,并将该标签和所述读请求组织成读请求命令数据发送给所述PCIE控制单元。
3.根据权利要求1所述的读请求控制装置,其中,每个功能单元在发送读请求后,将该功能单元正在处理的读请求数量增加1,在接收到所述主机返回的读请求数据后,将该功能单元正在处理的读请求数量减去1。
4.根据权利要求1所述的读请求控制装置,其中,所述多个功能单元为第1级别的功能单元,所述读请求控制装置还包括:第2级别至第N级别的功能单元,所述N大于或等于2,所述第N级别至第1级别的功能单元逐级发送读请求,
所述第2级别至所述第N级别的功能单元中的任意一个功能单元执行以下操作:
统计与其耦接的下级功能单元当前正在处理的读请求数量;
在接收到下级功能单元的读请求之后,判断该功能单元当前正在处理的读请求数量是否小于该功能单元的最小标签阈值,如果是,则为该功能单元申请一个标签,如果否,则采用轮询的仲裁方式为该功能单元申请一个标签;
在每次发送读请求之前,判断本功能单元正在处理的读请求数量是否大于或等于本功能单元的最大标签阈值,如果是,则暂停发送读请求,直到本功能单元正在处理的读请求数量小于本功能单元的最大标签阈值,本功能单元正在处理的读请求数量包括自身产生和下级功能单元生成的正在处理的读请求数量。
5.根据权利要求1或4所述的读请求控制装置,其中,每个功能单元的最大标签阈值和最小标签阈值是可配置的。
6.根据权利要求4所述的读请求控制装置,其中,下级功能单元的最小标签阈值之和不超过与它耦接的上级功能单元的最小标签阈值,下级功能单元的最大标签阈值超过与其耦接的上级功能单元的最大标签阈值。
7.根据权利要求1所述的读请求控制装置,其中,所述读请求控制装置还包括:命令解析单元,用于解析从所述PCIE控制单元接收到的命令,所述命令由所述主机发送给所述PCIE控制单元,所述命令解析单元将所述命令发送给所述命令处理单元,所述命令处理单元将所述命令分发给至少一个功能单元执行,所述至少一个功能单元在执行过程中产生读请求。
8.根据权利要求1所述的读请求控制装置,其中,所述多个功能单元各自的最大标签阈值之和大于所述PCIE控制单元能够支持的标签总量,所述多个功能单元各自的最小标签阈值之和则小于所述PCIE控制单元能够支持的标签总量。
9.一种用于存储器的读请求控制方法,所述存储器包括多个功能单元、仲裁单元和PCIE控制单元,所述功能单元执行以下操作:
统计当前正在处理的读请求数量;
在每次发送读请求之前,判断所述当前正在处理的读请求数量是否大于或者等于自身的最大标签阈值,如果所述当前正在处理的读请求数量大于或者等于自身的最大标签阈值,则暂停发送读请求,直到所述当前正在处理的读请求数量小于所述自身的最大标签阈值,否则,确定需优先发送的读请求并按此发送;
所述仲裁单元执行以下操作:
统计每个功能单元当前正在处理的读请求数量;
在接收第一功能单元的读请求之后,判断所述第一功能单元当前正在处理的读请求数量是否小于所述第一功能单元的最小标签阈值,如果所述第一功能单元当前正在处理的读请求数量小于所述第一功能单元的最小标签阈值,则只要有空闲标签则分配给所述第一功能单元,并将该标签和所述读请求组织成读请求命令数据发送出去,所述第一功能单元为所述多个功能单元中的任意一个,所述仲裁单元为每个功能单元指定数量为最小标签阈值的可自由申请的标签,每个功能单元的最大标签阈值大于该功能单元的最小标签阈值;
所述PCIE控制单元执行以下操作:
基于PCIE协议封装所述读请求命令数据并将封装后的数据传送给主机。
10.根据权利要求9所述的读请求控制方法,其中,所述仲裁单元还执行:
如果所述第一功能单元当前正在处理的读请求数量大于或者等于所述最小标签阈值,则按照轮询的仲裁方式从未被使用的标签中任选一个标签分配给所述第一功能单元,并将该标签和所述读请求组织成读请求命令数据发送给所述PCIE控制单元。
11.根据权利要求9所述的读请求控制方法,其中,每个功能单元在发送读请求后,将该功能单元正在处理的读请求数量增加一,在接收到所述主机返回的读请求数据后,将该功能单元正在处理的读请求数量减去一。
12.根据权利要求9所述的读请求控制方法,其中,所述多个功能单元为第一级别的功能单元,所述读请求控制装置还包括:第2级别至第N级别的功能单元,所述N大于或等于2,所述第2级别至第N级别的功能单元逐级发送读请求,
所述第2级别至所述第N级别的功能单元中的任意一个功能单元执行以下操作:
统计与其耦接的下级功能单元当前正在处理的读请求数量;
在接收到下级功能单元的读请求之后,判断该功能单元当前正在处理的读请求数量是否小于该功能单元的最小标签阈值,如果是,则为该功能单元申请一个标签,如果否,则采用轮询的仲裁方式为该功能单元申请一个标签;
在每次发送读请求之前,判断本功能单元正在处理的读请求数量是否大于或等于本功能单元的最大标签阈值,如果是,则暂停发送读请求,直到本功能单元正在处理的读请求数量小于本功能单元的最大标签阈值,本功能单元正在处理的读请求数量包括自身产生和下级功能单元生成的正在处理的读请求数量。
13.根据权利要求9或12所述的读请求控制方法,其中,每个功能单元的最大标签阈值和最小标签阈值是可配置的。
14.根据权利要求12所述的读请求控制方法,其中,下级功能单元的最小标签阈值之和不超过与它耦接的上级功能单元的最小标签阈值,下级功能单元的最大标签阈值超过与其耦接的上级功能单元的最大标签阈值。
15.根据权利要求9所述的读请求控制方法,其中,所述多个功能单元各自的最大标签阈值之和大于所述PCIE控制单元能够支持的标签总量,所述多个功能单元各自的最小标签阈值之和则小于所述PCIE控制单元能够支持的标签总量。
16.一种存储器控制器,包括如权利要求1至8任一项所述的读请求控制装置。
17.一种闪存系统,包括存储器和权利要求16所述的存储器控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011589829.1A CN112597080B (zh) | 2020-12-29 | 2020-12-29 | 读请求控制装置及方法以及存储器控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011589829.1A CN112597080B (zh) | 2020-12-29 | 2020-12-29 | 读请求控制装置及方法以及存储器控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597080A CN112597080A (zh) | 2021-04-02 |
CN112597080B true CN112597080B (zh) | 2022-10-21 |
Family
ID=75203572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011589829.1A Active CN112597080B (zh) | 2020-12-29 | 2020-12-29 | 读请求控制装置及方法以及存储器控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597080B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113138802B (zh) * | 2021-04-29 | 2024-03-05 | 上海阵量智能科技有限公司 | 命令分发装置、方法、芯片、计算机设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100466601C (zh) * | 2005-04-28 | 2009-03-04 | 华为技术有限公司 | 一种数据读写装置及其读写方法 |
US7949794B2 (en) * | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
MX2013002773A (es) * | 2010-09-16 | 2013-04-05 | Apple Inc | Controlador de memoria con multiples puertos con puertos asociados con las clases de trafico. |
CN103543954B (zh) * | 2012-07-16 | 2018-03-23 | 深圳市中兴微电子技术有限公司 | 一种数据存储管理方法和装置 |
US9430410B2 (en) * | 2012-07-30 | 2016-08-30 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load accesses of a cache in a single cycle |
US9535860B2 (en) * | 2013-01-17 | 2017-01-03 | Intel Corporation | Arbitrating memory accesses via a shared memory fabric |
US9619396B2 (en) * | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
CN109144898B (zh) * | 2017-06-19 | 2023-02-17 | 深圳市中兴微电子技术有限公司 | 一种系统内存管理装置和系统内存管理方法 |
CN107766270B (zh) * | 2017-10-20 | 2020-05-26 | 深圳市风云实业有限公司 | 用于PCIe设备的数据读取管理方法及装置 |
-
2020
- 2020-12-29 CN CN202011589829.1A patent/CN112597080B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112597080A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230412365A1 (en) | Technologies for managing a flexible host interface of a network interface controller | |
US9430411B2 (en) | Method and system for communicating with non-volatile memory | |
EP2616937B1 (en) | Using process location to bind io resources on numa architectures | |
JP5744909B2 (ja) | アクセラレータ・リソースを動的に管理するための方法、情報処理システム、およびコンピュータ・プログラム | |
KR101455899B1 (ko) | 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 | |
US7716336B2 (en) | Resource reservation for massively parallel processing systems | |
KR20150117221A (ko) | 실시간 운영 체제에서 선점형 태스크 스케줄링 방식을 제공하는 방법 및 장치 | |
CN107480078B (zh) | 一种总线带宽分配方法、装置及芯片 | |
CN105808328A (zh) | 任务调度的方法、装置和系统 | |
US9390033B2 (en) | Method and system for communicating with non-volatile memory via multiple data paths | |
CN103609077A (zh) | 用于数据传输的方法、装置和系统以及物理网卡 | |
CN115237587A (zh) | 用于基于多资源参数的i/o命令调度的系统和方法 | |
CN104391656A (zh) | 一种存储设备的io资源分配方法、装置及存储设备 | |
CN112597080B (zh) | 读请求控制装置及方法以及存储器控制器 | |
US9377968B2 (en) | Method and system for using templates to communicate with non-volatile memory | |
US20120131590A1 (en) | Managing virtual functions of an input/output adapter | |
CN114546606A (zh) | 非易失性存储器存储模块及其操作方法 | |
CN115878333A (zh) | 进程组间的一致性判断方法、装置及设备 | |
CN112328519B (zh) | 一种pcie设备、基于sr-iov的数据包有序传输方法和系统 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN111800446B (zh) | 调度处理方法、装置、设备和存储介质 | |
WO2015073608A1 (en) | Method and system for communicating with non-volatile memory | |
US8346988B2 (en) | Techniques for dynamically sharing a fabric to facilitate off-chip communication for multiple on-chip units | |
US20210141435A1 (en) | Software switch and method therein | |
US10977046B2 (en) | Indirection-based process management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 310051 room c1-604, building C, No. 459, Qianmo Road, Xixing street, Binjiang District, Hangzhou, Zhejiang Province Applicant after: Lianyun Technology (Hangzhou) Co.,Ltd. Address before: 6 / F, block C1, spotlight center, 459 Qianmo Road, Binjiang District, Hangzhou City, Zhejiang Province, 310051 Applicant before: MAXIO TECHNOLOGY (HANGZHOU) Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |