基于识别标识的可扩展重排序方法

文档序号:6378521阅读:405来源:国知局
专利名称:基于识别标识的可扩展重排序方法
技术领域
本发明涉及计算机技术领域,更具体地说,本发明涉及一种基于识别标识的可扩展重排序方法。
背景技术
在微处理器设计中,处理器核心需要访问存储器中数据。访问存储器数据延迟较长,为了提高访存性能,处理器核心一般同时飞行(换言之,处理及运行)多个请求,从而尽量掩盖访存延迟。从正确性角度而言,对于同时飞行的多个访存请求,处理器核心要求响应返回顺序和请求发送顺序保持一致;从性能角度而言,对于同时飞行的多个访存请求,由于响应返回具有乱序特性,其响应返回时间越早,处理器核心执行等待时间开销越小。这点在多来源请求处理(例如多核处理器设计)中体现的尤为明显来源于同一处理核心的访存请求要求具有保序性,从而保证执行的正确性;来源于不同处理核心的访存请求可尽可能乱序,提高访存效率。因此,如何在保证正确性的同时尽可能提高访问请求处理的乱序性成为请求处理部件设计的关键。对于飞行中的多个请求,传统处理方法可归纳为乱序处理、顺序处理和弱乱序处理。在乱序处理中,请求与响应的匹配由处理器核心来完成,请求处理部件仅乱序发送请求,乱序返回响应;在顺序处理中,请求处理部件采用完全顺序的方式进行处理即请求按序发送,响应虽然乱序返回,但经过重排序缓冲后全部顺序返回;在弱乱序处理中,根据请求类别将请求保存至不同队列,每个队列按照顺序处理方式对请求和响应进行处理器,彼此独立不关联。但是上述传统处理方法存在如下问题在乱序处理方法中,请求处理部件最为简单,其不对请求发送与响应序作任何特殊处理,只需根据接收次序逐个转发请求和返回响应即可,请求序和响应序的匹配由处理器核心或者存储器部件来完成,增加了两者设计的复杂性;在顺序处理方法中,请求处理部件将所有请求不加区分归为一类,按序转发请求,并通过设置统一的重排序缓冲缓存存储器乱序返回的响应,以对应请求接收序为依据按序返回响应数据,使得后发送请求所对应的响应先返回无任何意义,降低了访存性能;与前两者相比,弱乱序处理方式目标最贴近实际需求,但传统实现方法采用简单的独立队列方式对请求序列加以区分,不同请求队列物理上隔离,彼此之间无任何关联,使得不同队列的请求未能动态共享队列资源,限制了访存并发度。

发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种能够实现对读写请求高效公平处理、基于识别标识的可扩展重排序方法。根据本发明,提供了一种基于识别标识的可扩展重排序方法,其中,以识别标识来标识请求特性;对于具有相同识别标识的请求,按序转发请求和返回响应;对于具有不同识别标识的请求,乱序转发请求和返回响应;源端通过识别标识标注读写请求各自的保序特性,目的端对接收的请求乱序处理。优选地,在读请求处理中,读请求和读响应分别保存于不同缓冲中;采用统一的飞行状态控制器记录同时飞行的多个请求状态,每个条目对应一个正在飞行的读请求,条目深度与读响应缓冲深度保持一致。优选地,在读请求处理中,无论是相同识别标识请求还是不同识别标识请求,均共享请求与响应缓冲、飞行状态控制器等硬件逻辑资源。优选地,在读请求处理中,飞行状态控制器记录各个飞行请求的识别标识,并计算飞行请求的年龄,根据飞行请求的年龄逻辑上建立一个或多个请求序列并标注序列内各请求先后顺序。优选地,在读请求处理中,每个条目对应的飞行请求状态包括有效位域、标识位域、年龄位域和响应位域;其中,有效位域表示条目占用与否;标识位域表示条目对应飞行请求的识别标识号;年龄位域表示本条目飞行请求在同一请求序列内的资历;响应位域表示条目请求对应响应是否有效。优选地,在读请求处理中当请求缓冲非满时,若源端发送读请求有效,则接收并保存至请求缓冲中;当请求缓冲中存在请求时,空闲条目分配逻辑申请条目号,并携带条目号信息进行转发至目的端,同时根据识别标识号计算转发请求年龄值,并保存转发请求相关状态至飞行状态控制器中;请求成功转发后修改占用条目的有效位域;目的端采用完全乱序方式返回读响应,同时携带条目号标记信息;当目的端返回读响应时,根据读响应的条目号保存至响应缓冲对应条目中,同时根据条目号标记修改飞行状态控制器中对应条目状态;返回条目搜索逻辑从候选返回条目中搜索返回响应条目的条目号,根据条目号从响应缓冲中获取读响应数据、从飞行状态控制器中获取对应识别标识,返回至源端;响应成功返回后清除对应条目的有效位域和状态位域,同时根据需要修改其他具有相同识别标识条目的年龄位域。优选地,在写请求处理中,请求处理部件仅在收到前一个相同识别标识的写响应时才会转发下一个相同识别标识的写请求,飞行状态控制器记录请求与数据缓冲中各写请求的状态,每个条目对应一个写请求状态。优选地,在写请求处理中,每个条目对应的飞行请求状态包括有效位域、标识位域、年龄位域和转发位域;其中,有效位域表示条目占用与否;标识位域表示条目对应请求的标识标识号;年龄位域表示本条目请求在同一请求序列内的资历;转发位域表示条目请求转发与否。优选地,在写请求处理中当请求与数据缓冲非满时,若源端写请求与数据有效,则分配空闲条目保存写请求与数据至缓冲中,同时计算该写请求的年龄,并修改飞行控制器中对应条目状态位;若请求与数据缓冲中存在候选转发请求,则通过转发条目搜索逻辑获取具体条目号进行转发,并修改相应条目中对应状态位。优选地,在写请求处理中,当目的端返回写响应时,写响应处理逻辑根据携带条目标记号从飞行状态控制器中获取对应请求的识别标识号转发至源端,同时清除对应条目状态并修改其他具有相同识别标识的条目年龄位域。
根据本发明,通过可扩展重排序方法,实现对读写请求的高效、公平处理,相同识别标识请求保序处理、不同识别标识请求乱序处理;源端以识别标识为标识标注请求的保序要求;目的端无需关心请求顺序特性。请求缓冲与响应缓冲深度可任意独立配置;相同识别标识、不同识别标识的请求均动态共享状态控制器、缓冲等硬件逻辑资源,以较小硬件开销实现请求处理的高效性;而且,通过基于历史记录的近似轮转搜索算法,保证请求处理的公平性。


结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中图I示意性地示出了根据本发明实施例的基于识别标识的可扩展重排序方法的读请求转发与响应返回示意图。图2示意性地示出了根据本发明实施例的基于识别标识的可扩展重排序方法的写请求转发与响应返回示意图。需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施例方式为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。本发明采用分离事务方式处理读写请求,请求与响应处理相分离。读请求与写请求特点不同,两者采用不同的装置进行处理,彼此之间无关联。源端根据需要以识别标识(ID标识)为标识标注读写请求各自的保序特性;请求处理部件完成保序处理,将其转化为不同且唯一的标记号发送至目的端;目的端对接收的请求乱序处理,无任何保序要求。更具体地说,本发明以识别标识来标识请求特性,具有相同识别标识的请求归类为同一序列,其请求发送和响应返回具有顺序性;不同识别标识的请求分属于不同的请求序列,其请求发送和响应返回可尽量乱序。同时,读写请求作为访存请求的两大类别,彼此之间独立。下面将结合附图来描述本发明的具体的优选实施例。<读请求处理>在读请求处理中,读请求和读响应分别保存于不同缓冲中,读请求和读响应的缓冲深度可独立配置。采用统一的飞行状态控制器记录同时飞行的多个请求状态,每个条目对应一个正在飞行的读请求,条目深度与读响应缓冲深度保持一致。无论是相同识别标识请求还是不同识别标识请求,均共享读请求缓冲与读响应缓冲、飞行状态控制器等硬件逻辑资源。飞行状态控制器记录各个飞行请求的识别标识,并计算飞行请求的年龄,以此为依据逻辑上建立一个或多个请求序列并标注序列内各请求先后顺序,从而以较小的硬件逻辑资源开销实现相同识别标识读请求顺序处理、不同识别标识读请求乱序处理。图I示意性地示出了根据本发明实施例的基于识别标识的可扩展重排序方法的读请求转发与响应返回示意图。如图I所示,读请求转发与响应返回示意图中,N0和N1分别标示读请求缓冲深度和读响应缓冲深度。并且,每个条目对应的飞行请求状态包括有效位域VA1、标识位域IDY、年龄位域AGE和响应位域ACK。其中,有效位域VAl标识条目占用与否,即条目是否对应有效飞行请求,其位宽为Ibit 位。标识位域IDY表示条目对应飞行请求的标识识别标识号,其位宽根据实际需要决定。年龄位域AGE表示本条目飞行请求在同一请求序列内的资历,取值越小则表示条目请求的资历越老,其位宽根据响应缓冲深度决定。响应位域ACK表示条目请求对应响应是否有效,即目的端DST返回对应条目响应与否,其位宽为Ibit位。当请求缓冲FIF0_R非满时,若源端SRC发送读请求有效,则接收并保存至请求缓冲FIF0_R* ;当请求缓冲FIF0_R中存在请求时,空闲条目分配逻辑LGl以最近分配条目“IDLE_LASTIDX”(表示前一次搜索到的、刚分配给请求的条目号)下一个条目为起点从候选条目中搜索空闲条目号作为转发请求的条目号IDX0,并携带条目号IDX信息进行转发至目的端DST,同时根据识别标识号计算转发请求年龄值AGE,并保存转发请求相关状态至飞行状态控制器CLl中。待请求转发后,以条目号IDXO更新最近空闲条目“IDLE_LASTIDX”内容。请求成功转发后修改条目占用的有效位域VAl。目的端DST可采用完全乱序方式返回读响应,同时携带条目号IDXl标记信息。当目的端DST返回读响应时,根据读响应的条目号IDXl保存至对应条目响应缓冲BFO中,同时根据条目号IDXl标记修改飞行状态控制器CLl中对应条目状态。返回条目搜索逻辑LG2以最近返回条目“T0AK_LASTIDX”(表示前一次搜索到的、刚返回响应对应的条目号)下一个条目为起点从候选返回条目中搜索返回响应条目的条目号IDX2,根据条目号IDX2从响应缓冲BR)中获取读响应数据、从飞行状态控制器CLl中获取对应识别标识,返回至源端SRC。待响应返回后,以条目号IDX2更新最近返回条目“Τ0ΑΚ_LASTIDX” 内容。响应成功返回后清除对应条目占用的有效位域VAl和状态位域ACK,同时根据需要修改其他具有相同识别标识条目的年龄位域AGE (减I操作)。候选返回条目特征为条目占用的有效位域VAl和响应位域ACK有效,且年龄位域AGE取值为0,从而确保候选条目所对应请求在具有相同识别标识的请求序列中资历最老。<写请求处理>写请求特点与读请求不同,在写请求处理中,写请求同时携带写数据,但其响应仅为控制信号。由于目的端不对请求序处理作任何保证,为了遵循“相同识别标识的写请求顺序处理、不同识别标识的写请求乱序处理”原则,在写请求处理中,请求处理部件仅在收到前一个相同识别标识的写响应时才会转发下一个相同识别标识的写请求。与读请求处理类似,飞行状态控制器记录请求与数据缓冲中各写请求的状态,每个条目对应一个写请求。图2示意性地示出了根据本发明实施例的基于识别标识的可扩展重排序方法的写请求转发与响应返回示意图。
如图2所示,N2标示写请求与数据缓冲深度。每个条目对应的飞行请求状态包括有效位域VA2、标识位域IDU、年龄位域AG和转发位域TX。其中,条目的有效位域VA2表示条目占用与否,即条目是否对应有效请求,位宽Ibit 位。标识位域IDU表示条目对应请求的标识标识号,其位宽根据实际需要决定。年龄位域AG表示本条目请求在同一请求序列内的资历,取值越小则表示条目的资历越老,其位宽根据请求与数据缓冲深度决定。转发位域TX表示条目请求转发与否,其位宽为Ibit位。当请求与数据缓冲BFl非满时,若源端SRC写请求与数据有效,则分配空闲条目保存写请求与数据至缓冲BFl中,同时计算该写请求的年龄,并修改飞行控制器CL2中对应条目状态位。若请求与数据缓冲BFl中存在候选转发请求,则通过转发条目搜索逻辑LG3以最近转发条目“T0TX_LASTIDX”(表示前一次搜索到的、刚转发请求对应的条目号)下一个条目为起点从候选条目中搜索转发请求条目的条目号IDX3,携带IDX信息转发至目的端DST,并修改相应条目中对应状态位。候选转发请求特征为对应条目的有效位域VA2有效、转发位域TX无效,且年龄位域AG为0,从而确保候选条目所对应请求在具有相同识别标识的请求序列中资历最老。待请求转发后,以条目号IDX3更新最近转发条目“T0TX_LASTIDX”内容。当目的端DST返回写响应时,写响应处理逻辑LG4根据携带标记号IDX4从飞行状态控制器中获取对应请求的识别标识号转发至源端SRC,同时清除对应条目状态并修改其他具有相同识别标识的条目年龄位域AG (减I操作)。<具体操作示例>读请求与写请求处理虽然流程不同,但思路相近,关键逻辑算法相同,包括空闲条目分配、返回条目搜索、转发条目搜索、年龄计算等。空闲条目分配、返回条目搜索和转发条目搜索实现步骤相近,其本质均为搜索,只是候选条目对应特征不同。为了保证分配和搜索过程公平性,分配和搜索逻辑均各自记录最近一次操作条目号,将其自增I后作为下一次搜索条目的起点。例如,优选地,具体实现可参照如下步骤I)计算搜索特征向量;空闲条目、返回条目和转发条目搜索候选条目特征各异。其中空闲条目搜索要求候选条目的有效位域无效即可;返回条目搜索要求候选条目有效位域和响应位域有效,且年龄位域取值为O ;转发条目搜索要求候选条目有效位域有效,转发位域无效,且年龄位域取值为O。采用特征向量e[N-l:0]标注各条目候选特性(N为条目深度),其位宽N bit与飞行状态控制条目深度保持一致,每个bit位对应一个条目,取值为I时标示对应条目满足要求可作为候选项。2)获取搜索起点;各搜索逻辑根据记录最近一次获取条目号LASTIDX,将其自增I作为本次搜索起点 STRIDX。即 STRIDX=LASTIDX+1。
3)循环右移;将特征向量e[N-l:0]循环右移STRIDX位,获得临时向量tmp_e [N-1:0]。SP tmp_e[N-l:0]=R0TR(e[N-l:0], STRIDX),其中 ROTR 标示循环右移操作。以8位向量8’ b01001001为例,其循环右移2位的结果为8’ b01010010。4)数尾O操作;对临时向量tmp_e[N-l:0]进行数尾O操作,即从右往左连续取值为O的bit位个数(亦表示首个取值为I的bit位所在位置),获取索引号tmp_idx (编号从O开始)。即tmp_idx=CTTZ (tmp_e [N_l: 0]),其中 CTTZ 表示数尾 O 操作。以8位向量8’b01010010为例,其数尾O操作结果为I ;若8位向量取值为全O即8’ b00000000,则数尾O结果为整个向量位宽8,表示无有效候选条目项。5)后处理。索引号tmp_idx对应临时向量tmp_e[N_l :0],需对其进行修正。与搜索起点STRIDX相加后得到的条目号IDX即与特征向量e[N-l:0]相对应。同时利用结果IDX条目号更新记录LASTIDX。IDX所对应条目号即为搜索结果,根据不同算法逻辑该条目可用于分配保存新请求、返回响应或者转发请求等。需要说明的是,上述搜索算法方向为从左往右,即从条目O开始;实际实现中亦可从右往左,与上述步骤对称进行即可。年龄计算实现特点为通过与当前飞行请求各ID标识判相等,得到待保存请求在同一请求序列中排名,以此作为基础年龄;当返回响应时,将所有具有相同ID的请求年龄值减I。例如,优选地,具体实现可参照如下步骤I)计算年龄特征向量将待保存请求ID与飞行状态控制器中各有效条目请求ID判相等,得到年龄特征向量E [N-1:0],其中N为条目深度。候选条目特征为条目占用位有效,且标识位ID域取值与待保存请求ID号相等。2)数I操作对特征向量进行数I操作,得到当前飞行请求中与本ID相同请求个数。以8位向量8’ b01010010为例,其数I操作结果为3。3)后处理新请求保存可能与返回响应同时进行。若当前返回响应ID是与待保存请求的ID匹配,则需对数I结果进行修正得到待保存请求对应的年龄值;否则,直接将数I结果作为年龄值。上述实施例以单个源端和目的端为例说明了本发明的原理。但是,若存在多个源端或多个目的端,则先通过添加仲裁器后与请求处理部件相连,即可支持多个源端或多个目的端。综上所述,本发明提出了一种可扩展重排序方法来实现对读写请求的弱乱序处理,其中采用识别标识来标识请求序列,对请求序列进行逻辑意义上划分,同时物理上共享缓冲队列、状态控制器等硬件逻辑资源,具有很强的可扩展性,其中对于具有相同识别标识的请求,按序转发请求和返回响应;对于具有不同识别标识的请求,乱序转发请求和返回响应。
根据本发明,通过可扩展重排序方法,实现了对读写请求的高效、公平处理;相同识别标识请求保序处理、不同识别标识请求乱序处理。源端通过识别标识标注请求的保序要求,目的端无需关心请求顺序特性。请求缓冲与响应缓冲深度可任意独立配置;相同识别标识、不同识别标识的请求均动态共享状态控制器、缓冲等硬件逻辑资源,以较小硬件开销实现请求处理的高效性;而且,通过基于历史记录的近似轮转搜索算法,保证请求处理的公平性。 此外,需要说明的是,说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
权利要求
1.一种基于识别标识的可扩展重排序方法,其特征在于,以识别标识来标识请求特性;对于具有相同识别标识的请求,按序转发请求和返回响应;对于具有不同识别标识的请求,乱序转发请求和返回响应;源端通过识别标识标注读写请求各自的保序特性,目的端对接收的请求乱序处理。
2.根据权利要求I所述的基于识别标识的可扩展重排序方法,其特征在于,在读请求处理中,读请求和读响应分别保存于不同缓冲中;采用统一的飞行状态控制器记录同时飞行的多个请求状态,每个条目对应一个正在飞行的读请求,条目深度与读响应缓冲深度保持一致。
3.根据权利要求I或2所述的基于识别标识的可扩展重排序方法,其特征在于,在读请求处理中,无论是相同识别标识请求还是不同识别标识请求,均共享请求与响应缓冲、飞行状态控制器等硬件逻辑资源。
4.根据权利要求I至3之一所述的基于识别标识的可扩展重排序方法,其特征在于,在读请求处理中,飞行状态控制器记录各个飞行请求的识别标识,并计算飞行请求的年龄,根据飞行请求的年龄逻辑上建立一个或多个请求序列并标注序列内各请求先后顺序。
5.根据权利要求I至4之一所述的基于识别标识的可扩展重排序方法,其特征在于,在读请求处理中,每个条目对应的飞行请求状态包括有效位域、标识位域、年龄位域和响应位域;其中,有效位域表示条目占用与否;标识位域表示条目对应飞行请求的识别标识号;年龄位域表示本条目飞行请求在同一请求序列内的资历;响应位域表示条目请求对应响应是否有效。
6.根据权利要求I至5之一所述的基于识别标识的可扩展重排序方法,其特征在于,在读请求处理中 当请求缓冲非满时,若源端发送读请求有效,则接收并保存至请求缓冲中;当请求缓冲中存在请求时,空闲条目分配逻辑申请条目号,并携带条目号信息转发至目的端,同时根据识别标识号计算转发请求年龄值,并保存转发请求相关状态至飞行状态控制器中; 请求成功转发后修改条目占用的有效位域;目的端采用完全乱序方式返回读响应,同时携带条目号标记信息; 当目的端返回读响应时,根据读响应的条目号保存至对应条目响应缓冲中,同时根据条目号标记修改飞行状态控制器中对应条目状态; 返回条目搜索逻辑从候选返回条目中搜索返回响应条目的条目号,根据条目号从响应缓冲中获取读响应数据、从飞行状态控制器中获取对应识别标识,返回至源端; 响应成功返回后清除对应条目占用的有效位域和状态位域,同时根据需要修改其他具有相同识别标识条目的年龄位域。
7.根据权利要求I至6之一所述的基于识别标识的可扩展重排序方法,其特征在于,在写请求处理中,请求处理部件仅在收到前一个相同识别标识的写响应时才会转发下一个相同识别标识的写请求,飞行状态控制器记录请求与数据缓冲中各写请求的状态,每个条目对应一个写请求。
8.根据权利要求I至7之一所述的基于识别标识的可扩展重排序方法,其特征在于,在写请求处理中,每个条目对应的飞行请求状态包括有效位域、标识位域、年龄位域和转发位域;其中,有效位域表示条目占用与否;标识位域表示条目对应请求的标识标识号;年龄位域表示本条目请求在同一请求序列内的资历;转发位域表示条目请求转发与否。
9.根据权利要求I至8之一所述的基于识别标识的可扩展重排序方法,其特征在于,在写请求处理中 当请求与数据缓冲非满时,若源端写请求与数据有效,则分配空闲条目保存写请求数据至缓冲中,同时计算该写请求的年龄,并修改飞行控制器中对应条目状态位; 若请求与数据缓冲中存在候选转发请求,则通过转发条目搜索逻辑获取具体条目号进行转发,并修改相应条目中对应状态位。
10.根据权利要求I至9之一所述的基于识别标识的可扩展重排序方法,其特征在于,在写请求处理中,当目的端返回写响应时,写响应处理逻辑根据携带条目标记号从飞行状态控制器中获取对应请求的识别标识号转发至源端,同时清除对应条目状态并修改其他具有相同识别标识条目的年龄位域。
全文摘要
本发明提供一种基于识别标识的可扩展重排序方法。以识别标识来标识请求特性;对于具有相同识别标识的请求,按序转发请求和返回响应;对于具有不同识别标识的请求,乱序转发请求和返回响应;源端通过识别标识标注读写请求各自的保序特性,目的端对接收的请求乱序处理。在读请求处理中,读请求和读响应分别保存于不同缓冲中;采用统一的飞行状态控制器记录同时飞行的多个请求状态,每个条目对应一个正在飞行的读请求,条目深度与读响应缓冲深度保持一致。在写请求处理中,请求处理部件仅在收到前一个相同识别标识的写响应时才会转发下一个相同识别标识的写请求,飞行状态控制器记录请求与数据缓冲中各写请求的状态,每个条目对应一个写请求。
文档编号G06F3/06GK102929562SQ20121038070
公开日2013年2月13日 申请日期2012年10月9日 优先权日2012年10月9日
发明者唐勇, 张琦滨, 刘杰, 汪争, 徐毅, 张亮, 刘亮 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1