一种保序装置、方法和芯片与流程
未命名
07-12
阅读:111
评论:0

1.本技术涉及计算机领域,特别涉及一种保序装置、方法和芯片。
背景技术:
2.在ic(集成电路设计)设计中,访问一些非保序模块时,返回的响应数据会乱序返回,也就是返回的响应数据不是按照访问该模块时的访问请求的顺序来返回的,因此对于需要保序的系统就需要做保序处理,以使访问非保序模块时,返回的响应数据也是按照访问该模块时的访问请求的顺序来返回。
3.不过对于访问非保序模块的访问请求可以细分为多条流,在各条流之间需要单独保序的场景,为了实现保序,需要对各条流各自单独设置一个缓存单元(即保序buffer),每个缓存单元的深度为访问请求的总outstanding能力(即系统中未完成的访问请求的最大在线数),因为有可能所有访问非保序模块的访问请求都属于同一条流,则如果有n条流,就需要n个outstanding深度的缓存单元,十分耗费buffer资源。
技术实现要素:
4.本技术公开了一种保序装置、方法和电子设备,以在多条流经过乱序处理访问非保序模块,但需要实现保序的场景中,减少保序输出响应数据时耗费的buffer资源。
5.根据本技术实施例的第一方面,提供一种保序装置,包括:保序标志生成单元,用于接收多流源发送的访问请求,并为每一所述访问请求分配对应的流号和保序id;乱序处理单元,用于接收所述访问请求并对其进行乱序处理,输出处理后的访问请求;保序单元,用于接收总线返回的响应数据,以及所述乱序处理单元输出的访问请求对应的流号和保序id,从所述保序单元的同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位;保序读出单元,用于根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据。
6.优选地,所述保序单元的缓存单元的深度值为所述多流源发出的请求个数与所述缓存单元缓存的响应个数之间的差值的最大值。
7.优选地,所述保序读出单元包括:输出保序id指针单元,包括多个输出保序id指针,每一条流具有一个输出保序id指针;输出保序id指针控制单元,用于控制输出保序id指针跳转,并在输出保序id指针对应的响应数据写入所述保序单元的情况下,发起响应数据读出调度申请。
8.优选地,所述输出保序id指针控制单元具体用于:所述输出保序id指针控制单元在确定任一流对应的输出保序id指针对应的响应
数据已存入所述缓存单元时,向调度单元发起响应数据读取调度申请;所述输出保序id指针控制单元还接收调度单元返回的流号,根据所述流号和输出保序id指针读取对应的响应数据。
9.优选地,所述输出保序id指针控制单元还用于:在该输出保序id指针的值与所述缓存单元的深度值相同时,将该输出保序id指针的值重置为初始值。
10.本发明第二方面提供一种保序方法,应用于保序装置,所述保序装置包括保序标志生成单元、乱序处理单元、保序单元和保序读出单元,该方法包括:保序标志生成单元接收多流源发送的访问请求,并为每一所述访问请求分配对应的流号和保序id;乱序处理单元对所述访问请求进行乱序处理并输出处理后的访问请求;保序单元接收总线返回的响应数据,以及所述乱序处理后的访问请求对应的流号和保序id,从同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位;保序读出单元根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据。
11.优选地,所述缓存单元的深度值为所述多流源发出的请求个数与所述缓存单元缓存的响应个数之间的差值的最大值。
12.优选地,所述保序读出单元根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据具体包括:所述输出保序id指针控制单元在确定任一流对应的输出保序id指针对应的响应数据已存入所述缓存单元时,向调度单元发起响应数据读取调度申请;所述输出保序id指针控制单元还接收调度单元返回的流号,根据所述流号和输出保序id指针读取对应的响应数据,并控制所述输出保序id指针值加1。
13.优选地,所述方法还包括:在该输出保序id指针的值与所述缓存单元的深度值相同时,将该输出保序id指针的值重置为初始值。
14.本发明第三方面提供一种芯片,所述芯片包括前述的保序装置。
15.本技术的实施例提供的技术方案可以包括以下有益效果:由以上技术方案可知,本技术提供的方案在监控到多流源发送的访问请求时,通过保序标志生成单元为每一所述访问请求分配对应的流号和保序id,然后对接收到的访问请求进行乱序处理,进而在保序单元接收到总线返回的响应数据时,以及所述乱序处理单元输出的访问请求对应的流号和保序id时,从所述保序单元的同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位,最后由保序读出单元根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据。本技术中不同流的响应数据都可以缓存到同一缓存单元中,不需要针对每一个流单独设置一个缓存单元,减少了保序耗费的buffer资源。
16.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
18.图1为本技术实施例提供的一种保序装置的示意框图;图2为本技术实施例提供的一种保序方法的流程图;图3为本技术实施例提供的一种缓存单元的结构示意图。
实施方式
19.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
20.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
21.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
22.为了使本领域技术人员更好地理解本技术实施例提供的技术方案,并使本技术实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术实施例提供的方法实施例进行描述。
23.请参见图1,图1为本技术实施例提供的保序装置。该装置包括:保序标志生成单元101,用于接收多流源发送的访问请求,并为每一所述访问请求分配对应的流号和保序id。
24.作为一个实施例,当保序标志生成单元101监控到多流源产生的用于访问非保序模块的访问请求生成并在axi总线上传输时,将确定每一访问请求对应的流,在访问请求传输至乱序处理单元102之前,生成每一访问请求对应的流号和保序id。其中上述流号用于表征所述访问请求所属的流,保序id用于表征所述访问请求在所述流中的位置顺序。不同流的来源一般不同,比如流1是由软件a发出的,流2是由软件b发出的,但不同流的访问请求是通过同一axi总线传输的。
25.可选地,在生成上述访问请求对应的流号和保序id之后,上述访问请求将携带着对应的流号和保序id在axi总线传输。
26.可选地,上述实施例中访问请求的保序id最大值为n,当一个流中的访问请求的保序id为n,则该流中下面的访问请求的保序id将从0开始重新排序。
27.乱序处理单元102,用于接收所述访问请求并对其进行乱序处理,输出处理后的访问请求。
28.作为一个实施例,乱序处理单元102为了实现效率最大的访问策略,会对接收到的访问请求进行乱序处理,然后将乱序处理后的访问请求输出至ddr控制器,以执行访问请求返回响应数据。
29.保序单元103,用于接收总线返回的响应数据,以及所述乱序处理单元102输出的该访问请求对应的流号和保序id,从所述保序单元103的同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位。
30.作为一个实施例,乱序处理单元102输出的访问请求对应的流号和保序id可以先缓存在预先设置的保序id缓存器中,在保序单元103接收到总线返回的响应数据时,由保序单元103从缓存单元中查找空位,将响应数据和响应数据对应的流号和保序id保存至所述空位。本实施例中,无论保序单元103接收到总线返回的响应数据属于哪一条流,都会缓存到保序单元103的同一缓存单元中。
31.优选地,在一些实施例中,该保序单元只有一个缓存单元,该保序单元的缓存单元的深度值为所述多流源发出的请求个数与所述缓存单元接收的响应个数之间的差值的最大值。
32.保序读出单元104,用于根据所述流号和所述保序id读出对应的响应数据。
33.作为一个实施例,为了使响应数据按照各个流中访问请求的位置顺序依次输出,本实施例中的所述保序读出单元104还包括:输出保序id指针单元,包括多个输出保序指针,每一条流对应一个输出保序指针。
34.输出保序id指针控制单元,用于在输出保序id指针对应的响应数据写入所述保序单元的情况下,发起响应数据读出调度申请,并根据调度申请结果读取响应数据。
35.可选地,输出保序id指针控制单元在确定任一流对应的输出保序id指针对应的响应数据已存入所述缓存单元中,则向调度单元发起响应数据读取调度申请,调度单元根据调度申请向输出保序id控制单元返回对应的流号,输出保序id指针控制单元根据流号以及该流号对应的输出保序id指针从缓存单元中读取对应的响应数据,并控制该流的输出保序id指针值加1。
36.其中,读出的响应数据的流号和保序id号与输出保序id指针所在的流号相同,响应数据的保序id号与所述输出保序id指针相匹配。
37.可选地,在一些实施例中,输出保序id指针控制单元还用于:针对每一输出保序id指针,在该输出保序id指针的值与所述缓存单元的深度值相同时,将该输出保序id指针的值重置为初始值。可选地,本实施例中的保序id若从0开始计数,则这里的初始值可以设置为0。
38.至此完成了对图1所示装置的描述。
39.通过图1所示的实施例,可以看出,本技术实施例在监控到多流源发送的访问请求时,通过保序标志生成单元为每一所述访问请求分配对应的流号和保序id,然后对接收到的访问请求进行乱序处理,进而在保序单元接收到总线返回的响应数据时,以及所述乱序处理单元输出的访问请求对应的流号和保序id时,从所述保序单元的同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位,最后由保序读出单元根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据。本技术实施例中不同流的响应数据都可以缓存到同一缓存单元中,不需要针对每一个流单独设置一个缓存单元,
减少了保序耗费的buffer资源。以上对本技术实施例提供的装置进行了描述。下面对本技术实施例提供的方法进行描述:请参见图2,图2提供了一种保序方法的流程图。作为一个实施例,该方法可以应用于前述实施例1中的保序装置。
40.如图2所示,该方法包括以下步骤:步骤201,保序标志生成单元接收多流源发送的访问请求,并为每一所述访问请求分配对应的流号和保序id。
41.作为一个实施例,当接收到从axi总线上传输过来的多流源生成的用于访问非保序模块的访问请求时,首先确定每一访问请求对应的流,在每一访问请求传输至乱序处理单元进行乱序处理之前,生成每一访问请求对应的流号和保序id。其中上述流号用于表征所述访问请求所属的流,保序id用于表征所述访问请求在所述流中的位置顺序。不同流的来源一般不同,比如流1是由软件a发出的,流2是由软件b发出的,但不同流的访问请求是通过同一axi总线传输的。
42.可选地,在生成上述访问请求对应的流号和保序id之后,上述访问请求将携带着对应的流号和保序id在axi总线继续传输。
43.作为另一个实施例,也可以在监控到用于访问非保序模块的访问请求被传输至乱序处理单元,但是未进行乱序处理之前,由乱序处理单元确认该访问请求的对应的流,生成该访问请求的对应流号和保序id。
44.可选地,上述实施例中访问请求的保序id最大值为n,当一个流中的访问请求的保序id为n,则该流中下面的访问请求的保序id将从0开始重新排序。
45.步骤202,乱序处理单元对所述访问请求进行乱序处理并输出处理后的访问请求。
46.可选地,本实施例中可以将所述访问请求、所述访问请求对应的流号和保序id缓存到乱序处理单元进行乱序处理,然后将乱序处理后的所述访问请求从乱序处理单元传输至所述非保序模块以获取对应的响应数据,然后按照先进先出的规则将所述访问请求对应的流号和保序id从乱序处理buffer缓存至保序id缓存器。
47.示例性地,以非保序模块为ddr(double data rate,双倍速率)控制器为例,多个不同流的访问请求通过axi总线从各自的访问源传输至乱序处理单元,乱序处理单元将会对接收到的访问请求进行乱序处理,以得到效率最大的访问策略,然后将乱序处理后的访问请求从乱序处理buffer输入至ddr控制器,以执行访问请求获得响应数据。本实施例中是由于ddr控制器不能处理访问请求对应的流号和保序id,因此,在任一乱序处理后的访问请求输入至ddr控制器时,该访问请求对应的流号和保序id将按照先进先出的规则缓存至保序id缓存器。
48.步骤203,保序单元接收总线返回的响应数据,以及所述乱序处理后的访问请求对应的流号和保序id,从同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位。
49.作为一个实施例,在具体实现步骤203时,具体步骤可以为:在接收总线返回的响应数据之后,查询所述缓存单元中是否存在空闲的缓存位置;若存在,则获取已缓存的所述响应数据对应的访问请求的流号和保序id,将所述响应数据、所述响应数据对应的访问请
求的流号和保序id存放至任一空闲的缓存位置中。
50.其中,可选地,上述缓存单元的深度为n,所述n为所述保序单元的缓存单元的深度值为所述访问请求的多流源发出的请求个数与所述缓存单元接收的响应个数之间的差值的最大值。本实施例中缓存单元的深度为n,意味着该缓存单元最多存放n个响应数据。
51.示例性地,缓存单元的结构可参照图3,以图3所示的实施例为例,ddr控制器在执行完访问请求时,将针对已完成的访问请求获得对应的响应数据,ddr控制器通过axi总线将响应数据传输至axi总线的返回路线上的保序单元中的缓存单元。
52.保序单元在接收到响应数据时,将查询缓存单元中空闲的缓存位置,在缓存单元中存在空闲的缓存位置的情况下,从保序id 缓存器中获取该响应数据对应的访问请求的流号和保序id,将该响应数据和获取到的流号和保序id缓存到任一空闲的缓存位置,比如图3中将ddr控制器返回的响应数据11、保序id11和流号2缓存到缓存单元中的空位。
53.步骤204,保序读出单元根据流号和所述保序id读出对应的响应数据。
54.作为一个实施例,为了使响应数据按照各个流中访问请求的位置顺序依次输出,针对各个流分别设置了对应的输出保序id指针。
55.具体地,所述输出保序id指针控制单元在确定任一流对应的输出保序id指针对应的响应数据已存入所述缓存单元时,向调度单元发起响应数据读取调度申请,所述输出保序id指针控制单元还接收调度单元返回的流号,根据所述流号和输出保序id指针读取对应的响应数据,并控制所述输出保序id指针值加1。示例性的,如图3所示,流号0对应的输出保序id指针的值为1,则在缓存单元中读取到对应的流号为0、保序id为1的响应数据时,将该响应数据作为目标响应数据输出。
56.可选地,为了实现上述响应数据的输出过程,本实施例可以通过设置rr(轮询)调度器实现保序读出单元。在存在多条流通过axi总线访问非保序模块时,rr调度器将通过系统提前获知存在总流数,针对每个流设置对应的输出保序id指针。输出保序id指针控制单元在确定输出保序id指针对应的响应数据已写入缓存单元的情况下,输出保序id指针控制单元向调度单元发起读出响应数据调度请求,调度单元基于接收的调度申请返回对应的流号给输出保序id指针控制单元,输出保序id指针控制单元根据接收的流号和该条流的保序输出指针从所述缓存单元中读出对应的响应数据。
57.另外,作为一个实施例,针对每一输出保序id指针,在该输出保序id指针的值与缓存单元的深度相同时,将该输出保序id指针的值重置为初始值。这里的初始值为0,本实施例中的保序id也是从0开始的。
58.至此完成了对图2所示流程的描述。
59.通过图2所示的实施例,可以看出,本技术实施例在监控到多流源发送的访问请求时,通过为每一所述访问请求分配对应的流号和保序id,然后对接收到的访问请求进行乱序处理,进而在保序单元接收到总线返回的响应数据时,以及所述乱序处理后输出的访问请求对应的流号和保序id时,从同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位,最后根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据。本技术中不同流的响应数据都可以缓存到同一缓存单元中,不需要针对每一个流单独设置一个缓存单元,减少了保序耗费的buffer资源。
对应地,本技术实施例还提供了一种芯片,该芯片包括前述实施例一提供的保序装置。
60.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
技术特征:
1.一种保序装置,其特征在于,包括:保序标志生成单元,用于接收多流源发送的访问请求,并为每一所述访问请求分配对应的流号和保序id;乱序处理单元,用于接收所述访问请求并对其进行乱序处理,输出处理后的访问请求;保序单元,用于接收总线返回的响应数据,以及所述乱序处理单元输出的访问请求对应的流号和保序id,从所述保序单元的同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位;保序读出单元,用于根据所述流号和所述保序id读出对应的响应数据。2.根据权利要求1所述的装置,其特征在于,所述保序单元的缓存单元的深度值为所述多流源发出的请求个数与所述缓存单元缓存的响应个数之间的差值的最大值。3.根据权利要求2所述的装置,其特征在于,所述保序读出单元包括:输出保序id指针单元,包括多个输出保序id指针,每一条流具有一个输出保序id指针;输出保序id指针控制单元,用于在输出保序id指针对应的响应数据写入所述保序单元的情况下,发起响应数据读出调度申请,并根据流号和对应的输出保序id指针读出对应的响应数据。4.根据权利要求3所述的装置,其特征在于,所述输出保序id指针控制单元具体用于:所述输出保序id指针控制单元在确定任一流对应的输出保序id指针对应的响应数据已存入所述缓存单元时,向调度单元发起响应数据读取调度申请;所述输出保序id指针控制单元还接收调度单元返回的流号,根据所述流号和所述流号对应的流的输出保序id指针读取对应的响应数据。5.根据权利要求3或4所述的装置,其特征在于,所述输出保序id指针控制单元还用于:在该输出保序id指针的值与所述缓存单元的深度值相同时,将该输出保序id指针的值重置为初始值。6.一种保序方法,其特征在于,应用于保序装置,所述保序装置包括保序标志生成单元、乱序处理单元、保序单元和保序读出单元,该方法包括:保序标志生成单元接收多流源发送的访问请求,并为每一所述访问请求分配对应的流号和保序id;乱序处理单元对所述访问请求进行乱序处理并输出处理后的访问请求;保序单元接收总线返回的响应数据,以及所述乱序处理后的访问请求对应的流号和保序id,从同一缓存单元中查找空位,将所述响应数据及其对应的流号和保序id保存至所述空位;保序读出单元根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据。7.根据权利要求6所述的方法,其特征在于,所述缓存单元的深度值为所述多流源发出的请求个数与所述缓存单元缓存的响应个数之间的差值的最大值。8.根据权利要求7所述的方法,其特征在于,所述保序读出单元根据所述缓存单元中的所述流号和所述保序id读出对应的响应数据具体包括:所述输出保序id指针控制单元在确定任一流对应的输出保序id指针对应的响应数据已存入所述缓存单元时,向调度单元发起响应数据读取调度申请;所述输出保序id指针控制单元还接收调度单元返回的流号,根据所述流号和输出保序
id指针读取对应的响应数据,并控制所述输出保序id指针值加1。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:在该输出保序id指针的值与所述缓存单元的深度值相同时,将该输出保序id指针的值重置为初始值。10.一种芯片,其特征在于,所述芯片包括如权利要求1-5任一项所述的保序装置。
技术总结
本申请实施例公开了一种保序装置、方法和芯片。本申请提供的方案在监控到多流源发送的访问请求时,通过保序标志生成单元为每一所述访问请求分配对应的流号和保序ID,然后对接收到的访问请求进行乱序处理,进而在保序单元接收到总线返回的响应数据时,以及所述乱序处理单元输出的访问请求对应的流号和保序ID时,从所述保序单元的同一缓存单元中查找空位,将响应数据及其对应的流号和保序ID保存至所述空位,最后由保序读出单元根据所述缓存单元中的流号和保序ID读出对应的响应数据。本申请中不同流的响应数据都可以缓存到同一缓存单元中,不需要针对每一个流单独设置一个缓存单元,减少了保序耗费的buffer资源。少了保序耗费的buffer资源。少了保序耗费的buffer资源。
技术研发人员:张学利 刘洛
受保护的技术使用者:深圳云豹智能有限公司
技术研发日:2023.05.17
技术公布日:2023/7/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/