一种用于对硬件加速器的请求队列重排的方法和系统的制作方法

文档序号:6603379阅读:175来源:国知局
专利名称:一种用于对硬件加速器的请求队列重排的方法和系统的制作方法
技术领域
本发明一般涉及信号处理,更具体地,涉及一种用于对硬件加速器的请求队列重排的方法和系统。
背景技术
CMP (单芯片多处理器)的构成分成同构和异构两类,同构是指内部核的结构是相同的,而异构是指内部的核结构是不同的。图1示出了一个异构多核处理器芯片100的模块化结构,图1中,CPU为一个通用处理器,以太网媒体访问控制器(Ethernet Media Access Controller,简称EMAC),包括EMACO,EMACl, EMAC2,均为网络加速处理器,与硬件加速器(Accelerator) —起,是专用处理器。多核处理器中广泛使用硬件加速器,尤其对于计算密集型的应用,例如通信、金融服务、能源、制造业、化学等产业。目前一些多核处理器芯片中集成的硬件加速器主要包括压缩/解压缩加速器,加密/解密集速器,模式识别即速器,XML解析加速器,等等。图1 的存储控制器(Memory controller)用于控制该芯片和存储器之间的协同工作,请求队列 (Request Queue)用于保存接收的,加速器还来不及处理的请求。下面以电信数据中对压缩请求进行过滤的应用为例,来说明图1所示的芯片中数据流以及各模块如何协同工作。本领域技术人员可以知道,在其它消息需要快速处理应用中,例如金融服务、能源、制造业、化学等产业的应用中,问题是类似的。在电信数据中对压缩请求进行过滤的应用中,一个或多个电信服务器用于处理接收的被压缩的数据包,将数据包解压缩后确认该数据包没有敏感信息后,将数据包发送出去。具体在服务器中多核处理器芯片的EMAC模块接收多个要被解压缩的数据包(pocket),例如,该数据包可以为支持加密的Httpl. 1数据包,然后CPU将每个数据包的网络协议相关信息去除后,重新包装成协处理器请求块(Coprocessor Request Block,简称CRB),CRB本身不是数据包,包含指定数据的相关位置等信息,CRB被置于请求队列中,要求硬件加速器对该CRB指定的数据的进行解压缩。硬件加速器接收到该请求后,对该CRB指定的数据块解压缩,并把解压缩的结果返回给CPU,从而CPU可以判别该数据块是否包含敏感信息,如果不包含,就可以将该数据块转发出去,否则,可以直接丢弃该数据块,这样,接收端接收到的数据块就不够完整,而接收端本身需要全部的数据块才能够进行解压缩获得发送数据,这样接收端就无法接收发送数据,使得敏感信息不能够通过电信网络传输。电信数据中对压缩请求进行过滤的应用要接收无数的消息发送请求,因此,对消息的处理速度需要非常快,一般来说,软件的处理速度是很难满足电信应用的实时性要求, 因此,电信一般采用图1所示的多核处理器芯片上的硬件加速器来完成解压缩的。但是,对于这类应用,硬件加速器在解压下一个CRB指定的压缩数据时,需要前一个CRB指定的数据的状态,例如前一个CRB指定的数据解压缩结果等,因此,除一个消息的最后一个CRB的状态外,该消息的其它CRB的状态,以及所有CRB指定的数据都要存储在存储器中。这样,硬件加速器在处理请求队列的CRB时,除了需要从存储器获得CRB指定的数据外,还要反复向存储器存储CRB指定的数据的状态,以及获得已经存储的CRB指定的数据的状态,造成整个芯片的处理速度慢,效率低。

发明内容
现有技术中硬件加速器需要频繁访问存储器,相对于CPU的处理时间,访问存储器的时间是很长的,造成整个芯片,乃至服务器系统处理效率低下,并且还消耗了更多的能源。因此,需要一种方法和系统,能够提高上述硬件加速器的处理效率。根据本发明的一个方面,提供了一种用于对硬件加速器的请求队列重排的系统, 其中,请求队列中存储着将要输入到硬件加速器中的多个协处理器请求块CRB,该系统包括内容可寻址存储器,与请求队列相连,以与在请求队列中相同的物理存储位置存储着请求队列中的每个CRB的状态指针,并且响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针,并将内容可寻址存储器中存储的状态指针中与所述新的CRB 的状态指针相同的CRB在请求队列中的物理存储位置输出;以及CRB插入模块,用于接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,并控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的 CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中。根据本发明的另一个方面,提供了一种用于对硬件加速器的请求队列重排的方法,其中,请求队列中存储着将要输入到硬件加速器中的多个协处理器请求块CRB,该方法包括响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针;获得请求队列中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置;以及控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中。根据本发明的再一个方面,提供了一种芯片,包括如上所述的用于对硬件加速器的请求队列重排的系统。


通过对附图中本发明示例实施例方式的更详细描述,本发明的上述、以及其它目的、特征和优势将变得更加明显,其中,相同的参考标号通常代表本发明示例实施例方式中的相同部件。图1示出了一个异构多核处理器芯片100的模块化结构;图2示意性地示出了一种现有的CRB的结构;图3示出了以请求队列中接收三个信息为例的请求队列中CRB的排列;图4示意性地示出了一种上述三个消息的CRB的分布;图fe示出了各消息的CRB在请求队列中的状态以及处理中为状态信息的存储和获取与存储器的交互过程;图恥示出了本发明的方法和系统使得图fe的请求队列中的CRB逻辑上的排列顺序以及处理中为状态信息的存储和获取与存储器的交互过程;图6示意性地示出了根据本发明的一种实施方式的一种用于对硬件加速器的请求队列重排的系统的结构图;图7示出了扩充后的CRB的结构图;图8示出了 CRB插入模块的一种结构;图9示出了一种使用上述图8的技术方案的CRB在请求队列中的变化;图10示出了 CRB插入模块的另外一种结构;图11示出了根据本发明另一个实施方式的用于对硬件加速器的请求队列重排的系统结构图;图12示出了根据本发明的一种实施方式的一种用于对硬件加速器的请求队列重排的方法的流程图;图13示出了图12所示的方法的一种优选实施方式;图14示出了图12方法的另一种优选实施方式;以及图15示出了图12方法的又一种优选实施方式。
具体实施例方式将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。 相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。由CPU将接收的数据包的网络协议相关信息去除后,将数据信息存储到存储器中,并将数据信息在存储器中的存储位置相关信息包装成CRB后发送给请求队列,由硬件加速器对其进行处理。图2示意性地示出了一种现有的CRB的结构,CRB200中包含状态指针201,源数据指针及长度202,目标数据指针及长度203以及其它配置204。状态指针201 是处理当前CRB指定的数据后保留的状态在存储器中存储的初始位置的指针,以便处理下一个CRB指定的数据时可以根据该初始位置获得状态信息来使用。一个消息可能包含多个 CRB,但是一个消息只要在存储器中有保留一个状态信息的存储位置即可,因为只要保留前一个CRB的状态,就可以处理当前的CRB,把当前CRB的状态仍然保留在状态信息的存储位置,就可以处理下一个CRB,而前一个CRB的状态已经不再需要了。优选地,状态指针201还可以包括状态信息的长度,因为有些状态信息的长度可能是不定的。例如,对于硬件加速器要对CRB进行解压缩处理,状态信息可以包括前一个CRB解压缩后的数据的存储位置,前一个CRB解压缩后的数据长度等等,对于加密/解密应用来说,如果每个CRB采用指定的数据的加密密钥都不相同,状态信息为该CRB指定的数据的加密密钥;等等。源数据指针及长度 202为该CRB指定的原始数据在存储器中存储位置的指针以及该CRB指定的原始数据的长度;目标数据指针及长度203为该CRB指定的处理后的数据在存储器中存储位置的指针以及该CRB指定的处理后的数据的长度;其它配置204可以根据应用的需求来配置。每个CRB 指定的数据,包括源数据(例如压缩的数据)以及目标数据(例如解压后的数据)按照CRB 指定的存储器位置,也就是数据指针,放置在存储器中。图3示出了以请求队列中接收三个消信息为例的请求队列中CRB的排列,三个信息分别为信息A (包含3个CRB)、信息B (包含3个CRB)、信息C (包含5个CRB)。这里假设请求队列的长度为8个CRB。各消息的CRB在请求队列中的分布情况由CPU接收的包的顺序决定。图4示意性地示出了一种上述三个消息的CRB的分布。现有技术中,硬件加速器是按照图4的CRB在请求队列中的顺序依次解压每个CRB指定的数据。以解压缩应用为例,由于解压缩过程需要相关CRB的状态信息,例如,对于消息A 的第一个CRB,可以直接进行解压缩,而对于消息A的第二个CRB,解压缩时需要第一个CRB 的部分信息,对于消息A的第三个CRB,解压缩时需要第二个CRB的部分信息,等等。因此, 仅仅在图1的请求队列中包含各个CRB,硬件加速器不能够对所有CRB解压缩,实际设计中是将相关的CRB状态存储在存储器中,当需要时,从存储器中获得。另外,各个消息的CRB 进入到电信服务器时,服务器的多核处理器的CPU可以控制对于每个消息,其CRB是按照时间顺序进入到数据队列的,即消息A的第一个CRB比其第二个CRB先到,其第二个CRB比其第三个CRB先到,等等,但是,各个消息的CRB之间没有逻辑顺序。图fe示出了各消息的CRB在请求队列中的状态以及处理中为状态信息的存储和获取与存储器的交互过程。根据图5a,当消息C的第一个CRB解压缩完毕后,硬件加速器需要在存储器中存储该CRB状态(写入存储器),当消息A的第一个CRB到来时,硬件加速器也需要在存储器中存储该CRB状态(写入存储器),当消息B的第一个CRB到来时,硬件加速器也需要在存储器中存储该CRB状态(写入存储器);然后,当消息C的第二个CRB到来时,硬件加速器需要在存储器中首先获得存储的消息C的第一个CRB的状态(从存储器读出),然后才能对当前的消息C的第二个CRB解压缩,然后再将该CRB的状态写入存储器,以此类推,向下的箭头表示存储器的写入状态操作,向上的箭头表示存储器的读出状态操作, 可见,需要频繁访问存储器,相对于CPU的处理时间,访问存储器的时间是很长的,造成整个芯片,乃至服务器系统处理效率低下,并且还消耗了更多的能源。本发明提出了一种用于对硬件加速器的请求队列重排的方法和系统,该方法和系统通过使同一消息的各个CRB以相邻的方式被硬件加速器处理,来减少硬件加速器为了处理CRB指定的数据而必须保存其状态并且获取相关CRB指定的数据的状态而对存储器的读写访问操作。图恥示出了本发明的方法和系统使得图fe请求队列中的CRB逻辑上的排列顺序以及处理中为状态信息的存储和获取与存储器的交互过程,例如,对于消息C的CRB1, CRB2和CRB3,硬件加速器可以确定当前的CRB的状态可以直接用于处理下一个CRB,因此, 无需将状态存储到存储器中,而处理CRB2,CRB3,和CRB4时,也无需从存储器中获取相关 CRB的状态,只有处理完CRB4后,才需要存储器状态。显然,与图5的状态信息交互过程相比,大大减少了与存储器关于状态的交互过程;但是,这些状态虽然不需要存储在存储器中,硬件加速器处理过程中还是要保留这些状态,才能进行后续处理。另外,硬件加速器处理CRB时,要从存储器获得CRB指定的数据,这种和存储器的交互过程是不能够减少的。本发明要使用内容可寻址存储器CAM(Content-Addressable Memory)这种存储器是以内容进行寻址的存储器,是一种特殊的存储阵列RAM,它的主要工作机制就是将一个输入数据项与存储在CAM中的所有数据项自动同时进行比较,判别该输入数据项与CAM中存储的数据项是否相匹配,如果存在匹配的数据项,输出该数据项的地址信息。CAM是一种硬件模块,各个数据项与CAM的连线为数据项的位数,例如,如果数据项为64位(bit),如果输入一个数据项,并且在CAM存储着7个数据项,则与CAM的连线为8 X 64根,面积会比较大。 在集成电路设计过程中,设计工具都提供CAM模块,只要输入数据项位数以及数据项个数, 设计工具就可以给出要求的CAM模块。图6示意性地示出了根据本发明的一种实施方式的一种用于对硬件加速器的请求队列重排的系统600的结构图,其中,请求队列601中存储着将要输入到硬件加速器602 中的多个CRB,如图6所示,该系统600包括内容可寻址存储器(CAM) 603以及CRB插入模块604,其中,CAM603与请求队列601相连,以与在请求队列601中相同的物理存储位置存储着请求队列601中的每个CRB的状态指针,并且响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针,并将CAM中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置输出到CRB插入模块604 ;CRB插入模块604 接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,并控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中。显然,如果CAM中存储的状态指针中不存在与所述新的 CRB的状态指针相同的CRB,则CRB插入模块604就可以直接将该新的CRB插入到请求队列之尾。在一种实施方式中,图2的CRB结构需要进一步扩充,使得每一个CRB中包含一个指针项,用于指向在请求队列中下一个要输入到硬件加速器的CRB的位置,每个CRB中还要包括消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB中的顺序,例如消息A 的第一个CRB,其顺序号可以为Al,等等。更进一步地,为了硬件加速器更容易处理CRB,每个CRB中还要包括两个状态描述位,其中,一个状态描述位用于指示当前的CRB的状态是否为“存”,例如,如果该状态位为1,表明该CRB处理后的状态应该存储到存储器中,如果该状态位为0,表明该CRB处理后的状态不用存储到存储器中,这里的0和1都是示意性的, 本领域技术人员可以根据需要选择合适的位或者数据表明该CRB的状态是否要存储到存储器中;另一个状态描述位用于指示当前的CRB的状态是否为“取”,例如,如果该状态位为 1,表明处理该CRB应该首先取出存储在存储器中的当前CRB的状态,如果该状态位为0,表明处理该CRB无需首先获得存储在存储器中的当前CRB的状态,这里的0和1都是示意性的,本领域技术人员可以根据需要选择合适的位或者数据表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态。这两个状态描是位是优选的,其能够便于硬件加速器的处理,但是,也可以在CRB中不包含着两个硬件描述位,而是在硬件加速器中包含额外的处理过程来达到同样的目的。图7示出了扩充后的CRB的结构图,还包含了指向在请求队列中的下一个CRB的指针705,消息中的CRB顺序号706,优选地,还包含两个状态描述位707,本领域技术人员能够想到,图7是示意性的,指向在请求队列中的下一个CRB的指针 705、消息中的CRB顺序号706以及两个状态描述位707也可以在其它配置704中,作为一个子项。这样,请求队列中的CRB的位置就包含了两种位置,一种是真实的物理位置,是与 CRB进入请求队列的顺序一致的,另外一种是逻辑位置,通过705的指针项来指定的,与CRB 进入硬件加速器的顺序是一致的。在上述实施方式中,CRB插入模块是通过修改CRB在请求队列中的指针位置来控制请求队列601中所述新的CRB和请求队列中与该新的CRB状态指针相同CRB,按照进入请求队列601的顺序,相邻地输入到硬件加速器602中。具体来说,图8示出了 CRB插入模块的一种模块结构,包括选择器801,用于接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,如果包含多个物理存储位置,选择消息中的CRB顺序号最大的物理存储位置对应的CRB为待处理CRB,例如,如果包括消息C的CRB1、CRB2、CRB3和CRB4,即顺序号为1、2、3和4,则选择CRB4为待处理CRB ;指针修改器802,用于根据选择器确定的待处理CRB的物理存储位置,在请求队列中将新的CRB的指向下一个CRB的指针项修改为所述待处理CRB的原来的指向下一个CRB的指针项,并且将待处理CRB的原来的指向下一个CRB的指针项修改为指向新的CRB的指针项。这样,就完成了请求队列中的CRB逻辑位置修改,使得请求队列601中所述新的CRB和请求队列中与该新的CRB状态指针相同CRB, 按照进入请求队列601的顺序,相邻地输入到硬件加速器602中。优选地,指针修改器802 还相应地更新两个状态描述位707的状态,使得硬件加速器处理该CRB时知道如何处理状态。选择器801和指针修改器802可以采用硬件逻辑来实现,使用硬件描述语言描述其功能后,设计工具能够自动生成该逻辑。图9示出了一种使用上述图8的技术方案的CRB在请求队列中的变化,假设请求队列中包含8个CRB,图中向下的箭头表明该CRB为下一个输入到硬件加速器中的CRB。图 9中,(a)表示请求队列正满,不能加入新的CRB,但是逻辑上的第一个CRB,也就是消息C的第一个CRB(Cl)进入到硬件加速器中,请求队列空出一个CRB的位置,如(b)所示,这时可以接收新的CRB ;(c)示出了新的CRB(C5)要求加入到请求队列中,通过CAM判别,当前请求队列中C2,C3和C4的状态指针与C5的状态指针相同,返回这三个CRB在请求队列中的位置给比较器,比较器确定C4为待处理CRB,在(d)中,将C5的下一个CRB的指针项指向Al, 并且将C4的下一个CRB的指针项原来指向Al,修改为指向C5,这样,消息C的各个CRB就会以C1->C2->C3->C4->C5的顺序进入到硬件加速器中,从而减少为存取和获取CRB的状态而与存储器的交互过程。在一种优选的实施方式中,CRB插入模块800还包括锁定控制器803,用于控制请求队列向硬件加速器输入CRB。锁定控制器803响应于有新的CRB要求加入到请求队列中, 锁定请求队列向硬件加速器输入CRB ;响应于新的CRB被加入到请求队列中,解除上述锁定。由于硬件加速器处理CRB的速度远远慢于CRB插入模块的处理速度,因此,如果没有锁定控制器,一般来说也不会有大问题,因此,该锁定控制器是一个优选模块。而硬件加速器只有在锁定控制器解除锁定时才能获得下一个要处理的CRB。锁定控制器803可以采用硬件逻辑来实现,使用硬件描述语言描述其功能后,设计工具能够自动生成该逻辑。在另外一种实施方式中,图2的CRB结构需要改变,如图7所示,但是不包含指向下一个CRB的指针705,包含其余的改变,即,所述CRB中还包含消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB消息中的CRB顺序。优选地,CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态。本实施例中,请求队列中的每一个CRB的物理位置发生真实的改变,变成如图6所示的位置, 这时请求队列中CRB的逻辑位置和物理位置是一样的。图10示出了 CRB插入模块1000的另外一种结构。与图8所示的CRB插入模块相比,二者都有选择器,并且功能相同,不同的在于图10中包括了队列重排器1002,其接收选择器确定的待处理CRB的物理存储位置后, 将请求队列中待处理CRB后的每一个CRB右移一个CRB的位置,然后将新的CRB插入到待处理CRB的下一个CRB位置。这样也减少了为存取和获取CRB的状态而与存储器的交互过程。优选地,队列重排器1002还相应地更新两个状态描述位707的状态,使得硬件加速器处理该CRB时知道如何处理状态。优选地,该CRB插入模块1000也可以包括图8所示的锁定模块,功能相同。这里的CRB插入模块1000可以采用硬件逻辑来实现,使用硬件描述语言描述其功能后,设计工具能够自动生成该逻辑。由于CAM是一种硬件模块,各个数据项与CAM的连线为数据项的位数,面积会比较大。因此,对于上述各实施方式还可以进一步改进,图11示出了根据本发明另一个实施方式的用于对硬件加速器的请求队列重排的系统1100的结构图,根据图11,在用于对硬件加速器的请求队列重排的系统中记加入映射模块1105,用于将请求队列中的CRB以及要求加入请求队列的CRB的状态指针映射成较少位数的数据项,输入到CAM中。例如,原来CRB的状态指针为存储器中的位置,是一个64位(bit)的数据项,与CAM的连线会有64X8根,由映射模块可以映射成为3位(bit)的数据线,与CAM的连线就只剩下3X8根,减少了芯片面积。加入映射模块的系统中CRB插入模块可以使用上述任何CRB插入模块。在同一个发明构思下,本发明还公开了一种用于对硬件加速器的请求队列重排的方法,请求队列中存储着将要输入到硬件加速器中的多个CRB,图12示出了根据本发明的一种实施方式的一种用于对硬件加速器的请求队列重排的方法的流程图,根据图12,在步骤S1201,响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针;在步骤S1202,获得请求队列中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置;以及在步骤S1203,控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中。优选地,图13示出了图12所示的方法的一种优选实施方式,在该实施方式中,除包含图12所示的步骤,对应为步骤S1301,S1303以及S1304,还包括步骤S1302,将请求队列中的CRB以及要求加入请求队列的CRB的状态指针映射成较少位数的数据项,在步骤 S1301之后。图14示出了图12方法的另一种优选实施方式,在该实施方式中,CRB中还包含一个指针项,用于指向在请求队列中下一个要输入到硬件加速器的CRB的位置;所述CRB中还包含消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB消息中的CRB顺序。 优选地,CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态。根据图14,在步骤S1401,响应于有新的CRB要求加入到请求队列中,锁定请求队列向硬件加速器输入CRB,并接收所述新的CRB的状态指针;在步骤 S1402,获得请求队列中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的存储位置;在步骤S1403,选择获得的所述与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置中消息中的CRB顺序号最大的物理存储位置对应的CRB为待处理CRB ;在步骤S1404,在请求队列中将新的CRB的指向下一个CRB的指针项修改为所述待处理CRB的原来的指向下一个CRB的指针项;在步骤S1405,将待处理CRB的原来的指向下一个CRB的指针项修改为指向新的CRB的指针项;优选地,在步骤S1406,响应于新的CRB被加入到请求队列中,更新该新的CRB的两个状态描述位;在步骤S1407,响应于新的CRB被加入到请求队列中,解除上述锁定。
显然,图13的步骤S1302将请求队列中的CRB以及要求加入请求队列的CRB的状态指针映射成较少位数的数据项也可以加入到图14的步骤中,组成另外一个优选实施方式,具体来说,加在步骤S1401和步骤S1402之间。图15示出了图12方法的又一种优选实施方式,在该实施方式中,CRB中还包含消息中的CRB顺序。优选地,CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态。根据图15,在步骤S1501,响应于有新的CRB要求加入到请求队列中,锁定请求队列向硬件加速器输入CRB,并接收所述新的CRB 的状态指针;在步骤S1502,获得请求队列中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的存储位置;在步骤S1503,选择所述与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置中消息中的CRB顺序号最大的物理存储位置对应的CRB为待处理CRB ;在步骤S1504,将请求队列中待处理CRB后的每一个CRB右移一个 CRB的位置;在步骤S1505,将新的CRB插入到待处理CRB的下一个CRB位置;优选地,在步骤S1506,响应于新的CRB被加入到请求队列中,更新该新的CRB的两个状态描述位;在步骤S1507,响应于新的CRB被加入到请求队列中,解除上述锁定。显然,图13的步骤S1302将请求队列中的CRB以及要求加入请求队列的CRB的状态指针映射成较少位数的数据项也可以加入到图15的步骤中,组成另外一个优选实施方式,具体来说,加在步骤S1501和步骤S1502之间。虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。
权利要求
1.一种用于对硬件加速器的请求队列重排的系统,其中,请求队列中存储着将要输入到硬件加速器中的多个协处理器请求块CRB,该系统包括内容可寻址存储器,与请求队列相连,以与在请求队列中相同的物理存储位置存储着请求队列中的每个CRB的状态指针,并且响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针,并将内容可寻址存储器中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置输出;以及CRB插入模块,用于接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,并控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的CRB, 按照进入请求队列的顺序,相邻地输入到硬件加速器中。
2.根据权利要求1所述的系统,其中该系统还包括映射模块,用于将请求队列中的CRB 以及要求加入请求队列的CRB的状态指针映射成较少位数的数据项,输入到内容可寻址存储器中。
3.根据权利要求1或2所述的系统,其中所述CRB中包含指针项,用于指向在请求队列中下一个要输入到硬件加速器的CRB ;消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB中的顺序。
4.根据权利要求3所述的系统,其中所述CRB插入模块包括选择器,用于接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,如果包含多个物理存储位置,选择消息中的CRB顺序号最大的物理存储位置对应的CRB 为待处理CRB;以及指针修改器,用于根据选择器确定的待处理CRB的物理存储位置,在请求队列中将新的CRB的指向下一个CRB的指针项修改为所述待处理CRB的原来的指向下一个CRB的指针项,并且将待处理CRB的原来的指向下一个CRB的指针项修改为指向新的CRB的指针项。
5.根据权利要求4所述的系统,其中所述CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态,所述两个状态描述位由指针修改器更新其状态。
6.根据权利要求4或5所述的系统,其中所述CRB插入模块还包括锁定控制器,用于响应于有新的CRB要求加入到请求队列中,锁定请求队列向硬件加速器输入CRB;响应于新的CRB被加入到请求队列中,解除上述锁定。
7.根据权利要求1或2所述的系统,其中所述CRB中还包含消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB消息中的CRB顺序。
8.根据权利要求7所述的系统,其中所述CRB插入模块包括选择器,用于接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,如果包含多个物理存储位置,选择消息中的CRB顺序号最大的物理存储位置对应的CRB 为待处理CRB;以及队列重排器,用于接收选择器确定的待处理CRB的物理存储位置后,将请求队列中待处理CRB后的每一个CRB右移一个CRB的位置,然后将新的CRB插入到待处理CRB的下一个CRB位置。
9.根据权利要求8所述的系统,其中所述CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态,所述两个状态描述位由队列重排器更新其状态。
10.根据权利要求7或8所述的系统,其中所述CRB插入模块还包括锁定控制器,用于响应于有新的CRB要求加入到请求队列中,锁定请求队列向硬件加速器输入CRB ;响应于新的CRB被加入到请求队列中,解除上述锁定。
11.一种用于对硬件加速器的请求队列重排的方法,其中,请求队列中存储着将要输入到硬件加速器中的多个协处理器请求块CRB,该方法包括响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针; 获得请求队列中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置;以及控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中。
12.根据权利要求11所述的方法,其中获得请求队列中存储的状态指针中与所述新的 CRB的状态指针相同的CRB在请求队列中的存储位置的步骤之前还包括步骤将请求队列中的CRB以及要求加入请求队列的CRB的状态指针映射成较少位数的数据项。
13.根据权利要求11或12所述的方法,其中所述CRB中包含 指针项,用于指向在请求队列中下一个要输入到硬件加速器的CRB ;以及消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB中的顺序。
14.根据权利要求13所述的方法,其中控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中步骤包括选择获得的所述与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置中消息中的CRB顺序号最大的物理存储位置对应的CRB为待处理CRB ;以及在请求队列中将新的CRB的指向下一个CRB的指针项修改为所述待处理CRB的原来的指向下一个CRB的指针项;以及将待处理CRB的原来的指向下一个CRB的指针项修改为指向新的CRB的指针项。
15.根据权利要求14所述的方法,其中所述CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态,该方法还包括响应于新的CRB被加入到请求队列中,更新该新的CRB的两个状态描述位。
16.根据权利要求14或15所述的方法,其中该方法还包括响应于有新的CRB要求加入到请求队列中,锁定请求队列向硬件加速器输入CRB ; 响应于新的CRB被加入到请求队列中,解除上述锁定。
17.根据权利要求10或11所述的方法,其中所述CRB中还包含消息中的CRB顺序号,用于指定该CRB在所有描述该消息的CRB中的顺序。
18.根据权利要求17所述的方法,其中控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中步骤包括选择获得的所述与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置中消息中的CRB顺序号最大的物理存储位置对应的CRB为待处理CRB ; 将请求队列中待处理CRB后的每一个CRB右移一个CRB的位置;以及将新的CRB插入到待处理CRB的下一个CRB位置。
19.根据权利要求18所述的方法,其中所述CRB中还包含两个状态描述位,其中,一个状态描述位用于表明该CRB处理后的状态是否存储到存储器中,另一个状态描述位用于表明处理该CRB是否需要取出先前存储在存储器中的该消息的当前状态,该方法还包括响应于新的CRB被加入到请求队列中,更新该新的CRB的两个状态描述位。
20.根据权利要求18或19所述的方法,其中还包括响应于有新的CRB要求加入到请求队列中,锁定请求队列向硬件加速器输入CRB ; 响应于新的CRB被加入到请求队列中,解除上述锁定。
21.一种芯片,包括如权利要求1-10之一所述的用于对硬件加速器的请求队列重排的系统。
全文摘要
本发明公开了一种用于对硬件加速器的请求队列重排的系统和方法,其中,请求队列中存储着将要输入到硬件加速器中的多个CRB,该系统包括内容可寻址存储器,与请求队列相连,以与在请求队列中相同的物理存储位置存储着请求队列中的每个CRB的状态指针,并且响应于有新的CRB要求加入到请求队列中,接收所述新的CRB的状态指针,并将内容可寻址存储器中存储的状态指针中与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置输出;以及CRB插入模块,用于接收与所述新的CRB的状态指针相同的CRB在请求队列中的物理存储位置,并控制请求队列中所述新的CRB和请求队列中与该新的CRB状态指针相同的CRB,按照进入请求队列的顺序,相邻地输入到硬件加速器中。该系统和方法能够提高硬件加速器的处理效率。
文档编号G06F12/02GK102262590SQ20101018858
公开日2011年11月30日 申请日期2010年5月31日 优先权日2010年5月31日
发明者冯宽, 常晓涛, 梅小露, 谢东, 郑珺 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1