CN108369562A - 具有增强型访问调度器的智能编码存储器架构 - Google Patents
具有增强型访问调度器的智能编码存储器架构 Download PDFInfo
- Publication number
- CN108369562A CN108369562A CN201580084975.XA CN201580084975A CN108369562A CN 108369562 A CN108369562 A CN 108369562A CN 201580084975 A CN201580084975 A CN 201580084975A CN 108369562 A CN108369562 A CN 108369562A
- Authority
- CN
- China
- Prior art keywords
- data
- library
- repository
- code
- 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.)
- 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- 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
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Abstract
提供了一种用于高效地访问由多个处理器核共享的存储器中的数据的方法、系统和架构,其降低了库冲突的可能性并减少了延迟。在一个实施例中,一种用于访问存储器中的数据的方法包括:调度器确定读取模式,所述读取模式用于从存储器读取数据以服务于多个库队列中的请求,所述存储器包括多个存储库和多个编码库,所述编码库存储所述多个存储库中存储的至少一部分数据的编码版本;读取来自第一存储库的第一数据;读取来自所述编码库的其中一个的编码数据;以及根据所述编码数据和所述第一数据确定所述第二数据。
Description
相关申请的交叉引用
本申请要求2015年12月1日提交的申请号为14/955,966、名称为“具有增强型访问调度器的智能编码存储器架构”的美国非临时申请的优先权,其全部内容通过引用并入本文。
技术领域
本发明,一般地,涉及存储器访问系统和方法,并且在特定实施例中,涉及用于多核计算机架构中的存储器访问的增强型访问调度器的系统和方法。
背景技术
当前的通用多核计算机架构包括连接到共享的存储器控制器的多个核心。如图1所示,具有N个处理器核102的通用多核架构100共享包括M个存储库110的存储器。来自每个核102的请求首先被发送到存储器控制器112,然后用核心仲裁单元104仲裁,并转而向存储器发出请求。该存储器控制器被分成三个主要部分:核心仲裁单元104、库队列106和访问调度器108。由于存储器控制器112具有对所有M个存储库110的并行访问,所以对每个单独的库请求使用库队列106。在每个存储器时钟周期服务这些库队列106,并且将具有数据的确认(在读取的情况下)发送回处理器102。
在多核102请求访问属于同一库110的存储器位置的情况下,存储器控制器112将这些请求放置在相应的库队列106中。核102可以是中央处理单元(central processingunit,CPU)/数字信号处理(digital signal processing,DSP)核、硬件加速器或任何可启动对存储器的读/写访问的主处理器。访问同一个库110的多个核102之间的竞争被称为库冲突。库冲突意味着请求将被顺序地提供,并且一些核102将不得不等待更长的时间来执行它们的请求。随着库冲突的数量增加,增加了存储器访问库110的延时,从而增加了整个系统100的延时。因此,需要一种新方法、系统和架构以改进存储器访问,降低延时。
发明内容
根据一个实施例,一种用于读取存储器中的数据的方法包括:调度器形成读取模式,所述读取模式用于从存储器读取数据以服务于多个库队列中的请求,所述存储器包括多个存储库以及多个编码库,所述编码库存储所述多个存储库中存储的至少一些数据的编码版本;所述调度器读取来自第一存储库的第一数据;所述调度器读取来自所述编码库的其中一个的编码数据;所述调度器根据所述编码数据和所述第一数据确定所述第二数据。
根据一个实施例,用于访问存储器中的数据的一个或多个主处理器中的方法,包括:从写入库队列中选择第一元素和第二元素;将所述第一元素写入存储库;以及将所述第二元素作为编码存储器元素写入编码库,并且与将所述第二元素写入所述编码库并行执行将所述第一元素写入所述存储库。
根据一个实施例,一种数据处理系统包括:一个或多个主处理器和存储由所述处理器执行的程序的非暂时性计算机可读存储介质,所述程序包括用于执行以下操作的指令:形成读取模式,所述读取模式用于从存储器读取数据以服务于多个读取存储库队列中的请求,所述存储器包括多个存储库和多个编码库,所述编码库存储所述多个存储库中存储的至少一些数据的编码版本;从第一存储库读取第一数据;从所述编码库的其中一个读取编码数据;并根据所述编码数据和所述第一数据确定所述第二数据。
根据一个实施例,一种处理器包括:多个主核处理器、编码存储器控制器、以及包括多个存储库和多个编码库的存储器,所述编码库包括所述存储库中的所述数据的至少一部分的编码数据,其中所述编码存储器控制器包括多个库队列和访问调度器,其中所述库队列包括读取请求和写入请求的列表;其中所述访问调度器搜索所述库队列并且调度来自所述存储器的读取操作,使得来自对应于第一读取请求的存储库的读取操作能够从满足第二读取请求的所述编码库的其中一个获得数据,并且其中所述访问调度器从写入库队列中获得两个条目,并将第一条目写入存储库中的其中一个,以及将第二条目作为编码数据条目写入编码库中的其中一个。
一个或多个实施例的优点是减少了死循环并且相对于现有设备提高了对存储器的访问速度。一个或多个实施例的另一个优点是比现有技术方法更快速地服务关键词。一个或多个实施例的另一个优点是与现有技术相比,处理器的核之间的库冲突减少了。对于本领域的普通技术人员来说,这些以及其它优点将是显而易见的。
附图说明
为了更完整地理解本发明及其优点,现在参考结合附图进行的以下描述,其中:
图1是现有技术中具有共享包括多个存储库的存储器的多个处理器核的通用多核架构的结构示意图;
图2是多核处理器系统的实施例的结构示意图;
图3是用于存储存储库中每行的代码状态的存储器的结构示意图;
图4是用于从存储器读取数据的方法的实施例的流程图;
图5是编码存储器的实施例的结构示意图;
图6A-6U描述了处理器和存储器系统访问模式情景的实施例;
图7A和7B示出了用于将数据写入存储库的实施例系统;
图8是从存储器写入数据的方法的实施例的流程图;
图9A-9Y是说明写入方法的系统的实施例的结构示意图;和
图10示出了用于实现多核处理器以及用于执行本文描述的方法的实施例处理系统的结构示意图。
具体实施方式
下面详细地论述当前优选实施例的实施和使用。然而,应当理解的是,本发明提供了许多可应用的发明构思,其可以在多种具体情况下实施。所论述的具体实施例仅在于示出实施和使用本发明的具体方式,而并不在于限制本发明的范围。
本文公开了通过数据处理系统改进存储器访问的系统、方法和架构。在一个实施例中,通过使用一些额外的编码库来实现用于创建和存储数据的额外冗余。在一个实施例中,所述编码库存储数据处理系统的存储库中存储的一些或全部数据的编码副本。访问调度器利用编码库创建用于读取和写入存储库的访问模式,以提供存储器请求的并行化来提高访问速率。在实施例中,提供了从一个库到所有并行库的存储器请求以及从所有库到所有编码库的请求的并行化。所公开的系统、方法和架构的实施例降低了库冲突的可能性并且提供对特定库的更高访问以及对整个系统的高访问。
图2是多核处理器系统200的实施例的结构示意图。系统200包括多个核202(标记为1、2、……、N)、编码存储器控制器214、多个存储库210(标记为1、2、……、M)和多个编码库212(标记为1、2、……、P)。编码存储器控制器214由所有核202共享。存储库210和编码库212也由核202共享。
在一个实施例中,每个核202是处理器。在一个实施例中,核202可以是其它主机,例如直接存储器访问(Direct Memory Access,DMA)控制器。在一些示例实施例中,所有核202在单个芯片上操作并且可以被认为是单个处理器的多个核心。在其它示例实施例中,这些核202可以位于多个芯片或电路上。无论架构如何,对存储库210的访问都由存储器控制器214控制。应该注意,在一些示例实施例中,实际上存在多个存储器控制器214,其中每个存储器控制器214控制一个或多个存储库。
在一个实施例中,核202通过互连(未示出)与共享存储器控制器214通信。该互连可以用一个或多个总线、一个或多个网络(例如分组交换网络)或总线和网络的某种组合来实现。所述互连中各种总线的总线宽度可能与其它总线相同或不同。例如,该互连中的一些总线可能是128位宽,而另一些总线是256位宽。因此,作为一个例子,一个核202可以在128位总线上通信,而另一个核202在256位总线上通信。在一个实施例中,编码存储器控制器214直接连接到一个或多个核202。而且,将核202连接到编码存储器控制器214的各种总线和网络可以观察相同或不同的协议。在一个实施例中,一个或多个核202被配置有到编码存储器控制器214的点对点的直接连接。当使用节拍级仲裁的实施例时,这可以有助于实现高性能。
核202、存储库210、编码库212和编码存储器控制器214可以在共同频率计时,或者可以独立计时。而且,核202、存储库210、编码库212和编码存储器控制器214可以同步或异步计时。如果同步计时,则存储库210、编码库212和编码存储器控制器214的时钟速度与核202的时钟速度成比例。另外,如果异步计时,每个可以以不同的频率并且以不同的时钟阶段计时。例如,在一个示例实施例中,核202以频率F计时,而编码存储器控制器214、存储库210和编码库212以1/2F计时。在另一实施例中,存储库210和编码库212以1/2F计时,而编码存储器控制器214以1/4F计时。特定实施例的时钟速度可以在性能与功率之间权衡,因为设备超频通常会浪费功率,而降频引入延迟。
编码存储器控制器214包括核心仲裁单元204、多个库队列208(标记为1、2、……、M)和增强访问调度器206。库队列208的数量M等于存储库210的数量。取决于实施例,核202的数量可以等于或不等于存储库的数量。取决于实施例,编码库212的数量可以等于或不等于存储库210的数量。
核仲裁单元204负责与核202的交互。核仲裁单元204仲裁来自核202的请求并且负责核202和存储器控制器214之间的所有握手。应该注意的是,虽然描绘了单个核仲裁单元204,但是在一些实施例中存在多个核仲裁单元204,其对应于库/队列的数量,并且在其它实施例中,存在用于读取的一个核仲裁单元204,以及用于写入的另一个核仲裁单元204。在一些实施例中,一个核仲裁单元204同时执行读取和写入仲裁两者。
库队列208保持来自特定库210的待服务的请求。当核仲裁单元204接收到来自核202的请求时,核心仲裁单元204填充库队列208。在示例实施例中,每个库队列208对应于特定存储库210。当接收到对特定存储库(例如标记为#1的存储库210)的访问时,将其放置在对应的库队列中(例如,标记为#1的库队列208),直到其可被服务。应该注意的是,尽管在图2中示出了对应于每个存储库210的单个库队列208,但在一个实施例中,每个库队列208实际上包括读取队列和写入队列或组合的读取和写入队列。在一个实施例中,读取和写入队列取决于正在使用的物理存储器的类型。该读取队列保持从相应的存储库210读取的请求,而该写入队列保持写入到对应的存储库210的请求。
编码库212存储在存储库210中存储的数据的编码副本。这与增强型访问调度器206相结合,尤其是通过减少在现有技术中观察到的存储器访问的延迟,改善了系统200的性能。编码库212是额外的库,其用于存储在存储库210中的一些(或全部)数据的副本。在示例实施例中,这些副本使用专用编码方案以编码的形式存储。访问调度器206被设计为创建利用编码库212来提高访问效率的增强访问调度。应该注意的是,代码通常存储在编码库212(与存储库210分离)中。然而,取决于编码方案,代码也可以保持在存储库210中。换句话说,在一个实施例中,存在一种编码方案,其中代码被存储在存储库210中并被交织。因此,在一个实施例中,编码库212的概念是可以使用适当的编码方案也包含在存储库210中的构造。
在一个实施例中,每个编码库212比存储库210中的任何一个都小。这导致有效使用需要利用编码库212的附加存储器,从而最小化所需的额外存储器的量。这与例如仅仅提供每个存储库210的每个存储器条目的详尽覆盖的解决方案相反。
访问调度器206为每个存储器周期形成访问模式。该访问调度器负责存储器控制器214和存储库210以及编码库212之间的握手。在一个实施例中,对于读取请求,访问调度器206按照它们的队列大小顺序访问库队列208,其中最小的库队列208最先被访问以形成该访问模式。访问调度器206试图形成用于从存储库210和编码库212读取的最优(或基本上最优)的模式。该访问调度器维护编码库212的可用性的位图,并且在访问调度器206从相应的库分配待服务的访问时将编码库212标记为忙碌。访问调度器206搜索整个库队列208以找到可以从编码库212服务的请求。这使得访问调度器206能够最大化最后的存储库210能够服务四个读取请求的机会。
该系统200的一个益处在于,通过经由编码库212创建对存储库210的并行访问,提高了对存储器中的数据的访问速率。这支持从一个库到所有并行库的存储器请求以及从所有存储库210到所有编码库212的请求的并行化。因此,所述编码系统克服库冲突,从而提供对特定库的更高访问并且也提供对对系统200整体的高访问。
访问调度器206包括保持存储库中的每行的代码的状态的存储器。在一个实施例中,存储库中每行的代码的状态被存储在访问调度器206外部的存储器中。图3是用于存储存储库中每行代码的状态的代码状态存储器300的结构示意图。在图3所描述的示例中,有四个存储库,其具有代码状态存储器300中相应的列301、302、303、304。每行(1-10)对应于存储库中的其中一个的一行。例如,行1列301包括条目“00”,行2列302包括条目“01”,并且行3列303包括条目“10”。存储器300的条目中的两位数字代码指示编码库212中的编码存储器的状态,用于相应的行和存储库。下面的表1显示了这些位的值及其含义。
00 | 代码是最新的 |
01 | 代码是过期的。数据库中的新代码 |
10 | 代码是过期的。编码库中的新代码 |
11 | 保留的 |
表1:代码状态表
因此,例如,行1列301的代码(即“00”)指示编码库212和存储库210中的相应位置中的数据是最新的。行2列302的代码(即“01”)指示代码已过期,并且新的数据在存储库210中,而编码库212中的相应数据过期。行3列303的代码(即“10”)指示代码已过期,并且新数据在编码库212中的相应位置处,而存储库中相应位置中的数据过期。
对于写入请求,访问调度器206仅在库队列208已满时调度对存储库210的写入。这确保了读取请求优先于写入请求,从而降低了系统的延迟。在一个实施例中,每个周期每个库执行两次写入。这是通过使用该存储器系统中的编码库212来实现的。当针对特定库210的写入被调度时,访问调度器206从对应库队列208的头部拾取两个请求。访问调度器206将第一请求写入相应的存储库210,并且第二写入被提交给对应于适当的存储库210的相应行的编码库212。
在一个实施例中,每个编码库212被保留用于对来自存储库210的现有数据进行有效编码。传统上,当由核202中的一个或多个发出对单个存储库210的多次访问时,产生停顿。这些停顿被称为库冲突,并且是由于一次只能访问来自特定存储库210的一个地址的导致的。在示例实施例中,同时访问编码库212和对应的存储库210以帮助缓解源于库冲突的停顿。
在一个实施例中,根据包括编码库212和存储库210的编码方案的函数,分配为编码库212的额外存储器被限制为总存储器的15%。这允许将其与两端口存储器的平均面积和逻辑开销进行比较。
编码库212的编码的精确功能可以根据存储库210的大小和编码库212大小而变化。
在一个实施例中,使用异或(Exclusive OR,XOR)函数来将数据存储在编码库212中。这能够减少复杂度开销并保持代码的线性度。线性码提供最广泛的功能,因为码的任何顺序都可以用于编码或解码。缺乏依赖性允许设计以尽可能灵活的方式使用编码库212。另外,在示例实施例中,可以为XOR函数将不同的权重分配给存储器元素。例如,对于属于任何伽罗瓦域(Galois field)的整数值α和β,存储元素器a0和b0可以被存储为αa0+βb0。另一个设计考虑因素可能是生成代码的压缩因子。所述XOR可以在2个或更多存储器元素上执行,因此执行XOR的存储器元素的数量越多,压缩因子越大(并且解码的复杂度越高)。例如,假设有四个存储库A、B、C和D,分别保存元素a0到an,b0到bn,c0到cn和d0到dn。与编码库中的这些元素相对应的可能的代码可以是
ai+bi;bi+ci;ci+di;和ci+ai,对于i=0~n。
应该注意,这里使用的“+”符号意味着结合涉及的一个或多个数据来执行一个或多个功能。
该方案使用2个存储器元素的组合来生成代码。虽然使用了100%的额外存储器开销,但还可以在每个周期内实现100%的额外存储器访问(即4次额外访问)。另一种设计可以是通过组合所有4个存储器元素生成代码来压缩代码:
ai+bi+ci+di对于i=0~n。
该设计以25%的存储开销为代价给每个周期一次额外访问。然而,此处解码器需要获得3个元素才能够解码第4个元素。因此,尽管更多的数据可以被编码到一个单一的存储位置,但这种压缩带来了额外的访问时间和复杂性的成本。上面描述的方案使用来自不同存储库210的元素“编码”编码库212。这可以被称为“库间编码(Interbank Coding)”。在一个示例性实施例中,提供了称为“库内编码(Intrabank Coding)”的正交编码方式,其中来自相同的库的存储器元素用于生成代码。另外,在其它实施例中,使用库间编码和库内编码两者。
图4是用于从存储器读取数据的方法400的实施例的流程图。方法400的一个目标是在所有情况下实质上最大化每个周期的读取访问。在一个实施例中,方法400可以由图2中的访问调度器206执行。方法400使用编码库212中的冗余以便服务更多的访问。在一个实施例中,来自编码库的访问仅在对存储库210进行相应访问之一时有用。方法400在块402处开始,其中计数器i被设置为等于1。在块404处,方法400确定计数器i是否小于或等于该区域中的数据库的数量。如果在块404处计数器i不小于或等于该区域中的数据库的数量,则方法400结束。如果在块404处计数器i小于或等于该区域中的数据库的数量,则方法400前进至块406,在块406处从对应的存储器库210向库i提供读取。在块408,方法400确定是否有可能使用编码向另一个库请求服务读取。如果在块408处不可能使用编码向另一存储库请求服务读取,则该方法进行到块414,其中计数器i增加1,并且该方法返回到块404。如果在块408,有可能使用编码向另一个库请求服务读取,则方法400前进至块410,在块410处使用编码来向另一个库请求服务读取。在块412处,所述编码的可用性被更新,并且方法400前进到块414。
图5是编码存储器500的实施例的结构示意图。编码存储器500可实现为例如图2中的存储库210及编码库212。编码存储器500包含设置在代码区域I和代码区域II中的多个数据库502和多个数据库504。数据库502可以被实现为存储库210,并且编码库504可以被实现为图2中的编码库212。代码区域I中的数据库502被标记为A、B、C和D。代码区域II中的存储库502被标记为E、F、G和H。区域I的编码库504包括编码存储库A和B的内容的一个编码库、用于存储库B和C的一个编码库、用于存储库C和D的一个编码库、用于存储库A和C的一个编码库、用于存储库A和D的一个编码库、以及用于存储库B和D的一个编码库。类似地,区域II的编码库504包括编码存储库E和F的内容的一个编码库、用于存储库F和G的一个编码库、用于存储库G和H的一个编码库、用于存储库E和G的一个编码库、用于存储库E和H的一个编码库、以及用于存储库F和H的一个编码库。如果,例如,对存储库A的特定行进行读取,然后可以对用于A和B的编码库的对应行进行读取,其中可以在不从存储库B读取的情况下确定存储库B的相应行的内容。可以并行地进行对存储库502和编码库504的读取。此外,存储库C的相应行的内容可以通过从编码A和C的编码库中读取来确定,并且存储库D的相应行的内容可以通过从编码A和D的编码库读取来确定。
图6A-6U描述了一种用于系统600的实施例的访问模式场景。系统600包括多个库读取队列602A、602B、602C、602D,多个数据库604A、604B、604C、604D,以及多个编码库606A、606B、606C、606D、606E、606F。虽然被描述为四个数据库604,但是本领域的普通技术人员将认识到,所公开的系统和方法适用于包括任意数量的数据库的存储器。在一个实施例中,库读取队列602A、602B、602C、602D可以被实现为图2中的库队列208。在一个实施例中,数据库604A、604B、604C、604D可以被实现为图2中的存储库210。在一个实施例中,编码库606A、606B、606C、606D、606E、606F可以被实现为图2中的编码库212。通过使用编码库606A、606B、606C、606D、606E、606F将所述读取最大化。在一个实施例中,一个密钥能够使用编码库606A、606B、606C、606D、606E、606F来向其它存储库604A、604B、604C、604D服务读取。库读取队列602A包括对来自数据库604A的数据的读取请求;库读取队列602B包括对来自数据库604B的数据的读取请求;库读取队列602C包括对来自数据库604C的数据的读取请求;并且库读取队列602D包括对来自数据库604D的数据的读取请求。在所描述的示例中,如图6A所示,库读取队列602A包括对a1的请求(即,从存储库A 604A的第一行读取)和对a2的请求。库读取队列602B包括对b2、b9和b1的请求。库读取队列602C包括对c2、c3、c8和c1的请求。库读取队列602D包括对d4、d2、d30、d1和d3的请求。
在确定用于读取请求的访问模式的示例过程中,如图6B所示,所述存储器控制器(或该存储器控制器中的访问调度器)首先标记要从数据库A读取的a1。存储器控制器随后遍历存储库B 602B、C、602C和D 602D以找出是否有任何读取请求可以从编码库606来服务。因此,在所描绘的示例中,调度器确定b1、c1和d1可以使用编码库606来服务。调度器将对应的编码库606A、606D、606E标记为繁忙。在图6C中,通过对库读取队列602A中的a1的请求画出一条线以指示a1已经被调度。如图6D所示,可以从编码库606A读取a1+b1,以对b1的请求提供服务。因此,在图6E中,通过对库读取队列602B中的b1的请求画出了一条线,以指示已经调度了对b1的读取。应该注意的是,b1不是库读取队列602B中的第一个请求。在图6F中,编码库606D的读取被调度,从其对c1的请求服务。因此,在图6G中,通过对库读取队列602C中的c1的请求画出一条线,以指示对c1的请求已被调度。在图6H中,编码库606E的读取被调度,从其对d1的请求服务。因此,在图6I中,通过对库读取队列602D中的d1的请求画出一条线,以表示对d1的请求已被调度。
接下来,如图6J所示,控制器调度要从数据库604B读取的b2。由于来自于编码库606的c2和d2可用,控制器服务来自于编码库606的c2和d2。因此,在图6K中,通过对库读取队列602B中的b2的请求画出一条线,以指示对b2的请求已被调度。在图6L中,编码库606B的读取被调度,从其可对c2的请求服务。因此,在图6M中,通过对库读取队列602C中的c2的请求画出一条线,以指示对于d2的请求已被调度。在图6N中,编码库606F的读取被调度,从其可以对d2的请求服务。因此,在图6O中,通过对在库读取队列602D中的d2的请求画出一条线,以表示对于d1的请求已被调度。
接下来,如图6P所示,控制器调度来自数据库604C的待服务的对c3的请求。控制器服务来自于编码库606的d3,因为其可用。因此,在图6Q中,通过对c3的请求画出一条线以指示已经调度了对库读取队列602C中的c3的读取。在图6R中,编码库606C的读取被调度,从其可以对d3的请求服务。因此,在图6S中,通过对在库读取队列602D中的d3的请求画出一条线,以表示对d3的请求已被调度。
接下来,如图6T所示,所述控制器调度来自数据库604D待服务的对d4的请求。因此,在图6U中,通过对d4的请求画出一条线,以表明库读取队列602D中d4的读取已被调度。
正如图6U中可见的,在调度了完整的访问模式(对于一个周期)之后,所述控制器服务来自于库读取队列602D(即,最大的库读取队列602)的4个请求,因为它包含五个请求-相对于其它库读取队列602、602B、602C分别为2、3和4,因此库读取队列602按照库队列的大小以最小队列首先被访问的顺序(即库读取队列602A)来进行访问以形成访问模式。但是,这个规则并不保证对第一个库有一个访问,对最后一个库有四个访问,这取决于库读取队列602中的访问。
在以上描述图6A-6U的段落中示出的示例强调了所公开的读取算法的实施例的三个不同方面。首先,所述访问调度器试图形成最适合读取的模式。来自其它库队列602的访问被搜索。所述控制器维护编码库606的可用性的位图,并且当调度器从相应的编码库606分配待服务的访问时将其标记为繁忙。其次,所述调度器具有在整个队列602中搜索以便找到来自编码库606的待服务的请求的能力。第三,所述调度器按其队列大小从小到大的顺序访问库队列602。这使所述控制器能够最大化最后一个库能够服务四个读取请求的机会。(应该注意的是,如果存在多于四个的数据库604,则最后的库队列602可以具有多于四个所要服务的读取请求-所服务的读取请求的数量可以等于数据库604的数量)。
所公开的用于优化每个周期的访问的方案可能伴随着成本。它可能会增加无序执行存储器访问请求的机会。这在存储器请求针对不同核乱序执行的情况下不会造成问题。然而,例如,在图2中所示的存储器控制器214中的逻辑,应当被实现,以确保来自每个核的所有请求的按序执行。
图7A和7B示出了用于将数据写入存储库的实施例系统700。系统700包括多个库写入队列702、多个数据库704、多个编码库706和状态表708。状态表708可以被实现为代码状态存储器300。来自核的写入请求首先被填充到每个库写入队列702的库写入队列中。每个库写入队列702保持这些请求,直到库写入队列702已满。所述调度器仅在存储库写入队列702已满时才写入存储器,然后仅用于已满的所述存储库写入队列702或存储库写入队列702。这确保读取优先于写入,从而实质上最小化系统700中的延迟。
在一个实施例中,编码系统700每个周期每个库704执行两次写入。这通过使用编码存储器系统700中的编码库706来实现。当为特定库704调度写入时,所述调度器从相应的库写入队列702的头部拾取两个请求。所述调度器将第一请求写入到相应的数据库702,将第二写入提交到相应行的编码库706。
图7B示出了所述写入已被执行之后的访问模式和已更新的状态表708。在图7A中,状态表708中的每个单元的条目是“00”,表示编码库706中的所有代码都是最新的。在执行所述写入之后,行2-列2、行2-列3、行4-列4的条目是被改变为“01”的行5-列1以指示所述代码已过时并且新数据在数据库704中找到。在执行所述写入之后,行2-列4、行3-列3、行7-列1和行9-列2的条目变为“10”以指示代码已过时并且新数据在编码库706中找到。状态表708中的剩余单元保持为“00”,因为没有执行写入过程到对应数据库704和编码库706。
在一个实施例中,对与状态表708中标记为“01”的单元条目相对应的存储器位置的编码存储库706进行更新,使得数据存储库704和编码存储库706两者中的数据都是新的并且相应单元的状态表708被改回“00”以指示所述代码对于这些存储位置是最新的。类似地,在一个实施例中,对应于状态表708中标记为“10”的单元条目的存储器位置的数据库704被更新,使得数据库704和编码库706中的数据都是新的,相应单元的状态表708被改回“00”以指示所述代码对于这些存储位置是最新的。例如,可以在较低的存储器访问请求期间执行该更新,由此允许存储器访问更快地发生并且不会被数据写入过程减慢。
图8是用于从存储器写入数据的方法800的实施例的流程图。方法800开始于块802,其中所述访问调度器从库队列702读取前两个请求。在块804,将第一请求写入对应的数据库704,并将第二请求写入对应的编码库706。在一个实施例中,这两个写入是并行执行的,由此增加了系统的写入速度。
在图7A和7B所描绘的例子中,对于所有四个存储库804,存储库写入队列702已满。调度器拾取两个写入请求并将其调度以写入相应的数据库704和编码库706。所述调度器还更新具有适当的状态的代码状态表708。调度器用“01”更新提交给数据库704的写入,并用“10”更新提交给编码库706的写入。
关于所有库同时满员的上述示例的提醒,这不是一般情况。为每个库704选择写入或读取操作。所述控制器被设计为调度每个库704的读取和写入,取决于所述队列大小和编码库706的可用性。在一个实施例中,写入队列阈值被编程。如果写入队列包含的请求多于阈值,则对库的写入访问被调度。这确保读取优先于写入。而且,这些队列充当后续读取/写入请求的缓存。所述控制器在访问存储库704之前先检查所述写入队列。
在一个实施例中,所述写入逻辑的另一个例外是当访问对于四个库704本质上是线性的时。例如,如果写入是针对a1、b1、c1和d1,在这种情况下,所述调度器更新编码库以写入编码a1+b1、b1+c1、c1+d1、d1+a1,d1+b1和a1+c1,确保编码库保持更新,并且存储器控制器不再需要更新所述编码库。这是调度程序总是试图满足的最佳情况。
图9A-9Y是说明写入方法的系统900的实施例的结构示意图。系统900包括多个库写入队列902A、902B、902C、902D,多个数据库904A、904B、904C、904D,多个编码库906A、906B、906C、906D、906E、906F和代码状态表908。虽然描绘为四个数据库904,但本领域普通技术人员将认识到,所公开的系统和方法适用于包括任何数量的数据库的存储器。在一个实施例中,存储库写入队列902A、902B、902C、902D可以被实现为图2中的库队列208。在一个实施例中,数据库904A、904B、904C、904D可以被实现为图2中的存储库210。在一个实施例中,编码库906A、906B、906C、906D、906E、906F可以被实现为图2中的编码库212。通过使用编码库606A、606B、606C、606D、606E、606F最大化所述写入。库写入队列902A包括写入数据到数据库904A的写入请求;库写入队列902B包括写入数据到数据库904B的写入请求;库写入队列902C包括将数据写入数据库904C的写入请求;并且库写入队列902D包括写入数据到数据库904D的写入请求。在所描绘的示例中,如图9A所示,存储库写入队列902A包括写入a5的请求(即,写入存储库A 904A的第五行)、写入a7的请求、写入a3的请求、写入a10的请求以及写入a22的请求。库写入队列902B包括写入到b2、b9、b1、b44和b23的请求。库写入队列902C包括写入到c2、c3、c8、c1和c12的请求。库写入队列902D包括写入到d4、d2、d30、d1和d3的请求。代码状态表908中的每个数据库(由列表示,其中第一列对应于数据库904A,第二列对应于数据库904B等)的每行中的所有条目都是“00”,表示该代码是最新的,即编码库906和数据库是最新的。
当对应的存储库的存储库写入队列902已满时,为该库选择所述写入。所述调度器拾取来自每个库的两个元素进行写入。所述调度器调度要写入到数据库904的第一元素和要写入到编码库906中的第二元素。所述存储器控制器根据表1更新代码状态表908。对于存储到数据库904的元素,即第一元素,所述存储器控制器将代码状态表908中的相应条目更新为“01”,并且对于存储在所述编码库中的元素,即从库写入队列902中选择的第二元素,存储器控制器将代码状态表908中的对应条目更新为“10”。
因此,在图9A-9Y所示的例子中,所述调度器选择来自库写入队列902A的a5和a7。如图9B所示,所述调度器将a5写入数据库904A,如图9C所示,消除来自存储库写入队列的a5(由通过a5的线所示),并且如图9D所示,更新代码状态表908中的行5列1的条目(对应于数据库904的第五行)为“01”。如图9E所示,所述调度器还将a7写入编码库906A,如图9F所示消除来自库写入队列902A的a7,并且将代码状态表908中的行7列1的条目更新为“10”。
由于存储库写入队列902B也是满的,因此所述调度器拾取队列中的前两个元素(即,b2和b9),并如图9H所示,将b2写入数据存储库904B,如图9I所示消除来自存储库写入队列902B额b2,并且为如图9J所示将代码状态表映射908中的行1、列2的条目更新的“01”。调度器还如图9K所示将b9写入编码库906B,如图9L所示消除来自存储库写入队列902B的b9,并且如图9M所示将代码状态表映射908中的行9、列2的条目更新为为“10”。
由于库写入队列902C也是满的,所以调度器拾取队列中的前两个元素(即,c2和c3)并如图9N所示将c2写入数据库904C,如图9O所示消除来自库写入队列902C的c2,并且如图9P所示将代码状态表映射中的行2、列3的条目更新为“01”。所述调度器还如图9Q所示将c3写入编码库906C,如图9R所示消除来自存储库写入队列902C的c3,并且如图9S所示将代码状态表映射908中的行3、列3的条目更新为“10”。
由于库写入队列902D也是满的,所述调度器拾取队列中的前两个元素(即,d4和d2)并如图9T所示将d4写入数据存储库904D,如图9U所示消除来自库写入队列902D的d4,并且如图9V所示将代码状态表908中的行4、列4的条目更新为“01”。所述调度器还如图9W所示将d2写入编码库906D,如图9X所示消除来自存储库写入队列902D的d2,并且如图9Y所示将代码状态表908中的行2、列4的条目更新为“10”。
图10示出了用于执行本文描述的方法的实施例处理系统1000的结构示意图,其可以被安装在主机设备中。正如所示,处理系统1000包括主设备1004、存储器1006和接口1010-1014,其可以(或可以不)如图10所示设置。主设备代表可以发起到所述存储器的读取和写入访问的任何模块,并且在不同实施例中,可以包括CPU/DSP核心、DMA和HAC硬件加速器。主设备1004可以是适于执行计算和/或其它处理相关任务的任何组件或组件的集合,并且存储器1006可以是适于存储由主设备1004执行的编程和/或指令的任何组件或组件的集合。在一个实施例中,存储器1006包括非瞬时性计算机可读介质。接口1010、1012、1014可以是允许处理系统1000与其它设备/组件和/或用户进行通信的任何组件或组件的集合。例如,接口1010、1012、1014中的一个或多个可适用于将来自主设备1004的数据、控制或管理消息传送到安装在主设备和/或远程设备上的应用。作为另一个例子,接口1010、1012、1014中的一个或多个可以适用于允许用户或用户设备(例如,个人计算机(personal computer,PC)等)与处理系统1000交互/通信。处理系统1000可以包括图10中未示出的附加组件,例如长期存储(例如,非易失性存储器等)。
在一些实施例中,处理系统1000被包括在网络设备中,其正在访问电信网络或者以为电信网络的一部分。在一个示例中,处理系统1000位于诸如基站、中继站、调度器、控制器、网关、路由器、应用服务器、或者电信网络中的任何其它设备的无线或有线电信网络中的网络侧设备中。在其它实施例中,处理系统1000处于访问无线或有线电信网络的用户侧设备中,例如移动台、用户设备(user equipment,UE)、个人计算机(PC)、平板电脑、可穿戴通信设备(例如,智能手表等)或适用于访问电信网络的任何其它设备。
在一个实施例中,一种用于访问存储器中的数据的方法包括:调度器形成读取模式,所述读取模式用于从存储器读取数据以服务于多个读取库队列中的请求,所述存储器包括多个存储库和多个编码库,所述编码库存储所述多个存储库中存储的至少部分数据的编码版本;所述调度器读取来自第一存储库的第一数据;所述调度器读取来自所述编码库的其中一个的编码数据,所述编码数据包括编码的第一数据和编码的第二数据;所述调度器根据所述编码数据和所述第一数据确定所述第二数据。读取来自所述第一存储库的所述第一数据和读取来自所述编码库的其中一个的所述编码数据是并行执行的。在一个实施例中,以与所述多个读取库队列中的请求的顺序不同的顺序来读取多个读取库队列中的请求。在一个实施例中,该方法还包括从写入库队列中选择第一元素和第二元素;将所述第一元素写入存储库;并将所述第二元素作为编码存储器元素写入编码库。该方法还可以包括根据写入所述第一元素和写入所述第二元素来更新状态存储器,所述状态存储器表示所述存储库的一部分的代码的状态,该状态指示所述编码库中的代码与所述存储库中的数据是否是最新的,所述代码是否过时以及存储库中的数据是否是当前的,或者所述代码是否过时以及编码库中的数据是否是当前数据。在一个实施例中,该方法包括每个周期调度读取比写入更多。在一个实施例中,该方法包括仅当写入存储库队列满时或者当满足阈值时调度对存储器的写入。在一个实施例中,不同库的阈值是不同的。在一个实施例中,形成所述读取模式包括:确定来自第一库队列的第一读取请求;调度来自所述存储库的其中一个的待读取的所述第一读取请求;以及搜索第二库队列以确定是否可以使用对第一读取请求的读取服务来自所述编码库中的其中一个的第二库队列中的任何读取请求。在一个实施例中,所述第一读取请求是根据库队列的大小确定的。
在一个实施例中,用于访问存储器中的数据的一个或多个主处理器中的方法包括:从写入库队列中选择第一元素和第二元素;将所述第一个元素写入存储库;以及将所述第二元素作为编码存储器元素写入编码库,将所述第一元素写入所述存储库与将所述第二元素写入所述编码库是并行执行的。
在一个实施例中,数据处理系统包括一个或多个主处理器和存储用于由处理器执行的程序的非瞬时性计算机可读存储介质,所述程序包括用于执行以下操作的指令:形成读取模式,所述读取模式用于从存储器读取数据以服务于多个读取库队列中的请求,所述存储器包括多个存储库和多个编码库,所述编码库存储所述多个存储库中存储的至少部分数据的编码或编码版本;读取来自第一存储库的第一数据;读取来自所述编码库的其中一个的编码数据,该编码数据包括编码的第一数据和编码的第二数据;并根据所述条目和所述第一数据确定所述第二数据。执行从所述第一存储库读取所述第一数据的指令和从所述编码库之一读取所述编码数据的指令是并行的。在一个实施例中,以与多个读取库队列中的请求的顺序不同的顺序来读取多个读取库队列中的请求。在一个实施例中,程序还包括用于执行以下操作的指令:从写入库队列中选择第一元素和第二元素;将所述第一元素写入存储库;并将所述第二元素作为编码存储器元素写入编码存储区。在一个实施例中,所述程序还包括根据所述写入第一元素和所述写入第二元素来更新状态存储器的指令,该状态存储器表示所述存储库的一部分的代码的状态,该状态指示所述编码库中的代码与所述存储库中的数据是否是最新的,所述代码是否过时以及存储库中的数据是否是当前的,或所述代码是否过时以及所述编码库中的数据是否是当前的。在一个实施例中,所述程序包括每个周期调度的读取比写入更多的指令。在一个实施例中,所述程序包括仅当写存储库队列满时调度写入存储器的指令。在一个实施例中,形成读取模式的指令包括用于执行以下操作的指令:确定来自第一库队列的第一读取请求;调度来自所述存储库的其中一个的待读取的所述第一读取请求;以及搜索第二库队列以确定是否可以使用对第一读取请求的读取服务来自所述编码库中的其中一个的第二库队列中的任何读取请求。在一个实施例中,该第一读取请求是根据库队列的大小确定的。
在一个实施例中,处理器包括多个主核处理器;编码存储器控制器;以及包括多个存储库和多个编码库的存储器,所述编码库包括所述存储库中的所述数据的至少一部分的编码数据,其中所述编码存储器控制器包括多个库队列和访问调度器,其中所述库队列包括读取请求和写入请求的列表;其中所述访问调度器搜索所述库队列并且调度来自所述存储器的读取操作,使得来自对应于第一读取请求的存储器库的读取操作能够从满足第二读取请求的所述编码库的其中一个获得数据,其中所述访问调度器从写入库队列获得两个条目,将第一条目写入到存储库中的其中一个,并将第二条目作为编码数据条目写入到编码库中的其中一个,并且其中访问调度器每个周期调度读取比写入更多。在一个实施例中,所述处理器还包括由所述访问调度器维护的状态存储器,其中所述状态存储器指示所述存储库和所述编码库中的数据是否是最新的。存储在状态存储器中的存储位置的状态表示三种状态之一,其中三种状态包括:(1)存储库中的数据和编码库中相应存储位置的数据都是最新的,(2)只有相应存储位置的存储库中的数据是最新的,以及(3)只有相应存储位置的编码库中的数据是最新的。在一个实施例中,访问调度器根据库队列的大小确定待服务的第一读取请求。在一个实施例中,所述访问调度器不按顺序调度一些写入请求。
虽然已经参考说明性实施例描述了本发明,但是该描述不旨在被解释为限制意义。说明性实施例的各种修改和组合以及本发明的其它实施例结合说明书对本领域技术人员将是显而易见的。因此,所附权利要求旨在涵盖任何这样的修改或实施例。
Claims (26)
1.一种访问存储器中的数据的方法,包括:
调度器确定读取模式,所述读取模式用于从存储器读取数据以服务于多个读取库队列中的请求,所述存储器包括多个存储库和多个编码库,所述编码库存储所述多个存储库中存储的至少一部分数据的编码版本;
所述调度器读取来自第一存储库的第一数据;
所述调度器读取来自所述编码库的其中一个的编码数据;以及
所述调度器根据所述编码数据和所述第一数据确定第二数据。
2.根据权利要求1所述的方法,其中所述读取来自第一存储库的第一数据以及所述读取来自所述编码库的其中一个的编码数据是并行执行的。
3.根据权利要求1所述的方法,其中所述多个读取库队列中的所述请求是以与所述多个读取库队列中的所述请求的顺序不同的顺序来读取的。
4.根据权利要求1所述的方法,还包括:
从写入库队列中选择第一元素和第二元素;
将所述第一元素写入存储库;以及
将所述第二元素作为编码存储元素写入编码库。
5.根据权利要求4所述的方法,还包括:
根据所述写入的所述第一元素和所述写入的所述第二元素来更新状态存储器,所述状态存储器表示所述存储库的一部分的代码的状态,所述状态指示编码库中的所述代码是否与所述存储库中的数据同步,所述代码是否过时以及所述存储库中的数据是否是当前的,或者所述代码是否过时以及所述编码库中的数据是否是当前的。
6.根据权利要求4所述的方法,还包括:
每个周期调度读取比写入更多。
7.根据权利要求4所述的方法,还包括:
只有在写入库队列已满或满足阈值时才调度写入到存储器。
8.根据权利要求4所述的方法,其中所述阈值对于不同的写入库队列是不同的。
9.根据权利要求1所述的方法,其中所述形成所述读取模式包括:
确定来自第一库队列的第一读取请求;
调度要从所述存储库的其中一个读取的所述第一读取请求;以及
搜索第二库队列以确定是否可以从使用针对所述第一读取请求的读取的编码库的其中一个中来服务来自于第二库队列的任何读取请求。
10.根据权利要求9所述的方法,其中所述第一读取请求是根据所述库队列的大小来确定的。
11.一种用于访问存储器中的数据的一个或多个主处理器中的方法,包括:
从写存储库队列中选择第一元素和第二元素;
将所述第一元素写入存储库;以及
将所述第二元素作为编码存储器元素写入编码库,其中将所述第一元素写入所述存储库与将所述第二元素写入所述编码库是并行执行的。
12.一种数据处理系统,包括:
一个或多个主处理器;以及
存储由处理器执行的程序的非瞬时性计算机可读存储介质,所述程序包括用于执行以下操作的指令:
确定读取模式,所述读取模式用于从存储器读取数据以服务于在多个读取库队列中的请求,所述存储器包括多个存储库和多个编码库,所述编码库存储在所述多个存储库中存储的至少一些数据的编码版本;
读取来自第一存储库的第一数据;
读取来自所述编码库的其中一个的编码数据;以及
根据所述编码数据和所述第一数据确定所述第二数据。
13.根据权利要求12所述的数据处理系统,其中用于读取来自所述第一存储库的所述第一数据的指令和用于读取来自所述编码库的其中一个的所述编码数据的指令是并行执行的。
14.根据权利要求12所述的数据处理系统,其中,所述多个读取库队列中的所述请求是以与所述多个读取库队列中的所述请求的顺序不同的顺序来读取的。
15.根据权利要求12所述的数据处理系统,其中所述程序还包括用于执行以下操作的指令:
从写入库队列中选择第一元素和第二元素;
将所述第一元素写入存储库;以及
将所述第二元素作为编码存储器元素写入编码库。
16.根据权利要求15所述的数据处理系统,其中所述程序还包括用于执行以下操作的指令:
根据所述写入的所述第一元素和所述写入的所述第二元素来更新状态存储器,所述状态存储器表示所述存储库的一部分的代码的状态,所述状态指示所述编码库中的所述代码是否与所述存储库中的数据同步,所述代码是否过时以及所述存储库中的数据是否是当前的,或所述代码是否过时以及所述编码库中的数据是否是当前的。
17.根据权利要求15所述的数据处理系统,其中所述程序进一步包括用于执行以下操作的指令:
每个周期调度的读取多于写入。
18.根据权利要求15所述的数据处理系统,其中所述程序进一步包括用于执行以下操作的指令:
只有在写入库队列已满时才调度写入到存储器。
19.根据权利要求12所述的数据处理系统,其中形成所述读取模式的所述指令包括用于以下操作的指令:
确定来自第一库队列的第一读取请求;
调度要从所述存储库的其中一个读取的所述第一读取请求;以及
搜索第二库队列以确定是否可以从使用针对所述第一读取请求的读取的编码库的其中一个中服务来自于第二库队列的任何读取请求。
20.根据权利要求19所述的数据处理系统,其中,所述第一读取请求是根据所述库队列的大小来确定的。
21.一种处理器,包括:
多个主核处理器;
编码存储器控制器;以及
包括多个存储库和多个编码库的存储器,所述编码库包括所述存储库中的至少一部分数据的编码数据,
其中所述编码存储器控制器包括多个库队列和访问调度器,
其中所述库队列包括读取请求和写入请求的列表;
其中所述访问调度器搜索所述库队列并且调度来自所述存储器的读取操作,使得来自与第一读取请求相对应的存储库的读取操作能够从满足第二读取请求的所述编码库的其中一个获得数据,并且
其中所述访问调度器从写入库队列中获得两个条目,并将第一条目写入所述存储库中的其中一个,以及将第二条目作为编码数据条目写入所述编码库中的其中一个。
22.根据权利要求21所述的处理器,还包括由所述访问调度器维护的状态存储器,其中所述状态存储器指示存储库和编码库中的数据是否是最新的。
23.根据权利要求22所述的处理器,其中,存储在所述状态存储器中的存储器位置的状态指示三种状态中的一种,其中所述三种状态包括:(1)相应存储器位置的所述存储库中的所述数据和所述编码库中的所述数据两者都是最新的、(2)只有相应存储器位置的所述存储库中的数据是最新的、以及(3)只有相应存储器位置的所述编码库中的数据是最新的。
24.根据权利要求21所述的处理器,其中,所述访问调度器根据所述库队列的大小确定待服务的第一读取请求。
25.根据权利要求21所述的处理器,其中,所述访问调度器不按顺序调度一些写入请求。
26.根据权利要求21所述的处理器,其中,所述访问调度器每个周期调度的读取比写入更多。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/955,966 US10437480B2 (en) | 2015-12-01 | 2015-12-01 | Intelligent coded memory architecture with enhanced access scheduler |
US14/955,966 | 2015-12-01 | ||
PCT/CN2015/098231 WO2017092087A1 (en) | 2015-12-01 | 2015-12-22 | Intelligent coded memory architecture with enhanced access scheduler |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108369562A true CN108369562A (zh) | 2018-08-03 |
CN108369562B CN108369562B (zh) | 2021-01-05 |
Family
ID=58776947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580084975.XA Active CN108369562B (zh) | 2015-12-01 | 2015-12-22 | 具有增强型访问调度器的智能编码存储器架构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10437480B2 (zh) |
EP (1) | EP3368989B1 (zh) |
CN (1) | CN108369562B (zh) |
WO (1) | WO2017092087A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273873A1 (zh) * | 2021-06-30 | 2023-01-05 | 中兴通讯股份有限公司 | 访问存储器中数据的方法、电子设备及存储介质 |
CN116594570A (zh) * | 2023-07-03 | 2023-08-15 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9760432B2 (en) | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US10180803B2 (en) * | 2015-07-28 | 2019-01-15 | Futurewei Technologies, Inc. | Intelligent memory architecture for increased efficiency |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
JP6160717B1 (ja) * | 2016-01-15 | 2017-07-12 | 日本電気株式会社 | プロセッサ、および、データ転送方法 |
KR20170136382A (ko) * | 2016-06-01 | 2017-12-11 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
US20230041362A1 (en) * | 2018-01-29 | 2023-02-09 | Micron Technology, Inc. | Memory Controller with Programmable Atomic Operations |
KR102407128B1 (ko) * | 2018-01-29 | 2022-06-10 | 마이크론 테크놀로지, 인크. | 메모리 컨트롤러 |
TWI727203B (zh) * | 2018-09-07 | 2021-05-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN110908591B (zh) * | 2018-09-17 | 2023-05-30 | 群联电子股份有限公司 | 存储器管理方法、存储器储存装置及存储器控制电路单元 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1735869A (zh) * | 2001-09-27 | 2006-02-15 | 英特尔公司 | 降低存储器访问等待时间的存储器访问调度方法和装置 |
US20070156946A1 (en) * | 2005-12-29 | 2007-07-05 | Intel Corporation | Memory controller with bank sorting and scheduling |
CN101165663A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 使用高速缓存的地址转换与i/o适配器进行通信的装置、方法 |
CN101646994A (zh) * | 2006-12-06 | 2010-02-10 | 弗森多系统公司(dba弗森-艾奥) | 利用内存库交错管理固态存储器的命令的装置、系统及方法 |
US20110022791A1 (en) * | 2009-03-17 | 2011-01-27 | Sundar Iyer | High speed memory systems and methods for designing hierarchical memory systems |
US20120127818A1 (en) * | 2010-11-22 | 2012-05-24 | Gil Levy | Sharing access to a memory among clients |
CN103064882A (zh) * | 2012-12-03 | 2013-04-24 | 国家电网公司 | 适用于电力调度自动化系统的商用库故障隔离方法 |
US20150178159A1 (en) * | 2013-12-20 | 2015-06-25 | Fujitsu Semiconductor Limited | Memory device and control method of memory device |
US20150278110A1 (en) * | 2014-03-31 | 2015-10-01 | International Business Machines Corporation | Transparent code patching |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60108944A (ja) | 1983-11-17 | 1985-06-14 | Toshiba Corp | 記憶装置 |
JP3184129B2 (ja) | 1997-09-29 | 2001-07-09 | 甲府日本電気株式会社 | 記憶装置 |
JPH11327796A (ja) | 1998-05-11 | 1999-11-30 | Toshiba Corp | ディスクアレイ制御装置及び同装置に適用されるキャッシュ制御方法 |
US6415355B1 (en) | 1998-05-11 | 2002-07-02 | Kabushiki Kaisha Toshiba | Combined disk array controller and cache control method for parity generation mode and data restoration mode |
US6385708B1 (en) | 1998-11-16 | 2002-05-07 | Infineon Technologies Ag | Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses |
US6757791B1 (en) * | 1999-03-30 | 2004-06-29 | Cisco Technology, Inc. | Method and apparatus for reordering packet data units in storage queues for reading and writing memory |
JP4712214B2 (ja) | 2001-04-09 | 2011-06-29 | 富士通セミコンダクター株式会社 | 半導体メモリの動作制御方法および半導体メモリ |
US6877077B2 (en) * | 2001-12-07 | 2005-04-05 | Sun Microsystems, Inc. | Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency |
US7093059B2 (en) * | 2002-12-31 | 2006-08-15 | Intel Corporation | Read-write switching method for a memory controller |
US7127574B2 (en) * | 2003-10-22 | 2006-10-24 | Intel Corporatioon | Method and apparatus for out of order memory scheduling |
US7480829B2 (en) | 2005-11-15 | 2009-01-20 | International Business Machines Corporation | Method, system and computer program product for recovery of formatting in repair of bad sectors in flash memory |
US7475278B2 (en) | 2005-11-15 | 2009-01-06 | International Business Machines Corporation | Method, system and computer program product for recovery of formatting in repair of bad sectors in disk drives |
CN100530070C (zh) | 2006-11-24 | 2009-08-19 | 骆建军 | 基于flash的硬盘 |
JP4925301B2 (ja) | 2007-02-07 | 2012-04-25 | 株式会社メガチップス | 半導体メモリシステム |
US20090100236A1 (en) | 2007-10-15 | 2009-04-16 | Ricardo Spencer Puig | Copying data onto a secondary storage device |
JP5194703B2 (ja) | 2007-10-16 | 2013-05-08 | ソニー株式会社 | データ処理装置及び共有メモリのアクセス方法 |
CN100499556C (zh) | 2007-10-17 | 2009-06-10 | 中国人民解放军国防科学技术大学 | 异构多核处理器高速异步互连通信网络 |
US8245232B2 (en) | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
CN101196857B (zh) | 2008-01-04 | 2010-11-10 | 太原理工大学 | 双端口访问对称动态存储器的接口 |
JP4985512B2 (ja) | 2008-03-26 | 2012-07-25 | エヌイーシーコンピュータテクノ株式会社 | 分散共有メモリ型マルチプロセッサシステム及びマルチプロセッサシステムにおける負荷分散方法 |
US8650364B2 (en) * | 2008-05-28 | 2014-02-11 | Vixs Systems, Inc. | Processing system with linked-list based prefetch buffer and methods for use therewith |
GB2463078B (en) | 2008-09-02 | 2013-04-17 | Extas Global Ltd | Distributed storage |
US8799743B2 (en) | 2008-10-28 | 2014-08-05 | Micron Technology, Inc. | Error correction in multiple semiconductor memory units |
CN102257482B (zh) | 2008-12-19 | 2015-06-03 | 惠普开发有限公司 | 用于一致读取等待时间的冗余数据存储 |
US8266408B2 (en) | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
DE112009005006T5 (de) | 2009-06-26 | 2013-01-10 | Intel Corporation | Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM) |
US8615629B2 (en) | 2010-01-18 | 2013-12-24 | Marvell International Ltd. | Access scheduler |
US8838853B2 (en) | 2010-01-18 | 2014-09-16 | Marvell International Ltd. | Access buffer |
CN101763437B (zh) | 2010-02-10 | 2013-03-27 | 华为数字技术(成都)有限公司 | 高速缓冲存储实现方法及装置 |
US8560796B2 (en) | 2010-03-29 | 2013-10-15 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
JP2012059337A (ja) | 2010-09-13 | 2012-03-22 | Renesas Electronics Corp | 半導体記憶装置 |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
US9348696B2 (en) | 2010-10-01 | 2016-05-24 | Pure Storage, Inc. | Distributed multi-level protection in a raid array based storage system |
EP2717186A4 (en) | 2011-05-25 | 2015-05-13 | Panasonic Ip Man Co Ltd | INFORMATION PROCESSING DEVICE AND INFORMATION PROCESSING METHOD |
JP5744244B2 (ja) | 2011-10-19 | 2015-07-08 | 株式会社日立製作所 | ストレージシステム |
US9239786B2 (en) * | 2012-01-18 | 2016-01-19 | Samsung Electronics Co., Ltd. | Reconfigurable storage device |
KR101349899B1 (ko) | 2012-03-16 | 2014-01-14 | 한국과학기술원 | 메모리 제어기 및 이의 메모리 접근 스케줄링 방법 |
US9158683B2 (en) | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US8909860B2 (en) | 2012-08-23 | 2014-12-09 | Cisco Technology, Inc. | Executing parallel operations to increase data access performance |
US10621040B2 (en) | 2012-11-30 | 2020-04-14 | Hewlett Packard Enterprise Development Lp | Memory controllers to form symbols based on bursts |
US9118352B2 (en) | 2012-12-26 | 2015-08-25 | Allen LeRoy Limberg | Remedying low densities of ONEs in transmission and reception of digital television signals |
CN103077123A (zh) | 2013-01-15 | 2013-05-01 | 华为技术有限公司 | 一种数据写入和读取方法及装置 |
US10089018B2 (en) | 2015-05-07 | 2018-10-02 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with multiple read ports and multiple write ports per cycle |
US9921754B2 (en) | 2015-07-28 | 2018-03-20 | Futurewei Technologies, Inc. | Dynamic coding algorithm for intelligent coded memory system |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US9870163B2 (en) | 2016-04-27 | 2018-01-16 | Globalfoundries Inc. | Double bandwidth algorithmic memory array |
-
2015
- 2015-12-01 US US14/955,966 patent/US10437480B2/en active Active
- 2015-12-22 CN CN201580084975.XA patent/CN108369562B/zh active Active
- 2015-12-22 WO PCT/CN2015/098231 patent/WO2017092087A1/en active Application Filing
- 2015-12-22 EP EP15909601.5A patent/EP3368989B1/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1735869A (zh) * | 2001-09-27 | 2006-02-15 | 英特尔公司 | 降低存储器访问等待时间的存储器访问调度方法和装置 |
US20070156946A1 (en) * | 2005-12-29 | 2007-07-05 | Intel Corporation | Memory controller with bank sorting and scheduling |
CN101165663A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 使用高速缓存的地址转换与i/o适配器进行通信的装置、方法 |
CN101646994A (zh) * | 2006-12-06 | 2010-02-10 | 弗森多系统公司(dba弗森-艾奥) | 利用内存库交错管理固态存储器的命令的装置、系统及方法 |
US20110022791A1 (en) * | 2009-03-17 | 2011-01-27 | Sundar Iyer | High speed memory systems and methods for designing hierarchical memory systems |
US20120127818A1 (en) * | 2010-11-22 | 2012-05-24 | Gil Levy | Sharing access to a memory among clients |
CN103064882A (zh) * | 2012-12-03 | 2013-04-24 | 国家电网公司 | 适用于电力调度自动化系统的商用库故障隔离方法 |
US20150178159A1 (en) * | 2013-12-20 | 2015-06-25 | Fujitsu Semiconductor Limited | Memory device and control method of memory device |
US20150278110A1 (en) * | 2014-03-31 | 2015-10-01 | International Business Machines Corporation | Transparent code patching |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273873A1 (zh) * | 2021-06-30 | 2023-01-05 | 中兴通讯股份有限公司 | 访问存储器中数据的方法、电子设备及存储介质 |
CN116594570A (zh) * | 2023-07-03 | 2023-08-15 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116594570B (zh) * | 2023-07-03 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3368989A1 (en) | 2018-09-05 |
WO2017092087A1 (en) | 2017-06-08 |
CN108369562B (zh) | 2021-01-05 |
EP3368989B1 (en) | 2020-02-05 |
US10437480B2 (en) | 2019-10-08 |
US20170153824A1 (en) | 2017-06-01 |
EP3368989A4 (en) | 2018-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108369562A (zh) | 具有增强型访问调度器的智能编码存储器架构 | |
CN105978704B (zh) | 用于创建新的云资源指令集体系结构的系统和方法 | |
Bell et al. | Optimizing bandwidth limited problems using one-sided communication and overlap | |
CN109359736A (zh) | 网络处理器和网络运算方法 | |
CN107657581A (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN104699631A (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
CN102870089A (zh) | 将数据存储到虚拟高速存储系统中的系统和方法 | |
CN103314363A (zh) | 用于设计分级存储器系统的高速存储器系统和方法 | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
CN103034617A (zh) | 用于实现可重构系统配置信息存储的缓存结构和管理方法 | |
CN107810478A (zh) | 具有连续块的并行执行的基于块的架构 | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN103778017B (zh) | 改进虚拟处理器调度的亲和性 | |
CN107844267A (zh) | 缓冲区分配和存储器管理 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
CN108292267A (zh) | 总线-装置-功能地址空间的推测性枚举 | |
CN110312994A (zh) | 使用指令地址映射绕过加载指令的存储器访问 | |
CN111860807B (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN107851059A (zh) | 提高效率的智能存储器架构 | |
CN113569508B (zh) | 基于id进行数据索引与访问的数据库模型构建方法及设备 | |
CN102279818A (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN107728935A (zh) | 对分布式计算系统中的数据重新分区 | |
CN107818114A (zh) | 一种数据处理方法、装置及数据库 | |
CN101789944B (zh) | 多功能电能表通信协议栈的开发系统 | |
JP2013117790A (ja) | 情報処理装置、情報処理方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |