CN104679671B - 用于处理器端设备中的高效缓存方法及输入缓冲装置 - Google Patents
用于处理器端设备中的高效缓存方法及输入缓冲装置 Download PDFInfo
- Publication number
- CN104679671B CN104679671B CN201510135337.8A CN201510135337A CN104679671B CN 104679671 B CN104679671 B CN 104679671B CN 201510135337 A CN201510135337 A CN 201510135337A CN 104679671 B CN104679671 B CN 104679671B
- Authority
- CN
- China
- Prior art keywords
- request
- buffering
- write
- sub
- pointer
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开一种用于处理器端设备的高效缓存方法以及输入缓冲装置,该缓存方法步骤包括:在端设备中依次设置多个相同结构的用于缓冲请求的子缓冲;2)接收各源设备发送的请求并统计每拍接收到的请求数;每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备。该输入缓冲装置包括请求缓冲模块、写入与读出控制模块以及Busy产生模块。本发明能够实现无间隙的存储源设备请求,具有缓存效率与硬件利用率高、硬件开销小且功耗低的优点。
Description
技术领域
本发明涉及处理器输入缓冲技术领域,尤其涉及用于处理器端设备中的高效缓存方法及输入缓冲装置。
背景技术
处理器的设计随着半导体工艺的不断进步而变得越来越复杂,在当前的处理器中普遍存在着由多个源设备向某个端设备发送请求的情况。当端设备和源设备距离比较远或处于不同时钟域时,端设备的Busy信号则需要多拍才能够传递到源设备中,因而在源设备收到Busy信号之前对已经发出的请求必须能够进行有效地存放和正确地处理。在端设备中添加输入缓冲便是一种常见的解决上述问题做法,高效的端设备中输入缓冲技术也是提高设备间传输效率的重要环节。
无缓冲片上网络是端设备输入缓冲技术的一项重要应用,如图1所示,假设在无缓冲片上网络中通过端设备A与源设备B、C和D间的请求通路有3、2和3个网络节点,且端设备A与源设备B、C和D间的站间数目分别为1级站出、1级站出和2级站出,则端设备A向源设备B、C和D发出的Busy信号分别需要2、2和3拍才能有效送达。当端设备A中输入缓冲接近阈值时,会向源设备B、C、D同时发送Busy信号,源设备B、C、D接收到Busy信号后将不再发送请求。显然,端设备A发出Busy信号之后需要接收的来自源设备B、C和D的请求数分别为4、3和5,而由于各个网络节点采用无缓冲策略不存储请求,故端设备A中输入缓冲在发出Busy之后需要至少能够接收这12个请求,且必须维护请求中的写访问之间、写访问与读访问之间的数据相关性。
传统的端设备输入缓冲如图2、3所示,包括为多个请求通路1~T设置的多个子缓冲1~T,为了维护前后拍请求之间的数据相关性,各子缓冲共享同一套读、写指针1~T,请求写入或读出时均以行为单位进行统一控制,因此传统的端设备输入缓冲存在以下问题:
1)由于该输入缓冲中,请求写入或读出时是以行为单位进行统一控制,因此当请求写入时,若某个子缓冲对应的请求通路无请求,则该子缓冲虽然没有写入请求,但其写指针仍然向下移动,导致产生“气泡”现象,造成存储空间的浪费;
2)由于该输入缓冲中,子缓冲和请求通路是一一对应的,则每一个子缓冲的深度需要至少比Busy信号发出后该请求通路所能够发出的请求数目多,因此该类的端设备输入缓冲中每个子缓冲的深度是由Busy信号发出后,某个源设备已经发出和将要发出的总请求数的最大数目决定,会导致存储空间的浪费;
3)由于该输入缓冲中,只要存在子缓冲中请求接近阈值即产生Busy信号,如图3所示,则当某个源设备对应的子缓冲1中包含的未处理的请求接近阈值而其他子缓冲并未接近阈值时,端设备输入缓冲仍会产生Busy信号,这在源设备请求发送不均匀时会导致效率的降低。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够实现无缝隙存储请求的用于处理器端设备中的高效缓存方法及输入缓冲装置,具有实现方法简单、成本低廉、缓存效率与硬件利用率高、硬件开销小且功耗低的优点。
为解决上述技术问题,本发明提出的技术方案为:
一种用于处理器端设备中的高效缓存方法,步骤包括:
1)在端设备中依次设置多个相同结构的用于缓冲请求的子缓冲;
2)接收各源设备发送的请求并统计每拍接收到的请求数;每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备。
作为本发明方法的进一步改进:所述步骤2)中每拍将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中的具体实施步骤为:
2.1)每拍执行时,控制将上一拍执行结束位置的下一个子缓冲作为起始子缓冲,并从起使子缓冲开始依次循环的取n个目标子缓冲执行写入或读出请求操作,其中n为所述请求数;
2.2)各目标子缓冲按照当前对应的存储位置指针写入或读出请求后,更新各目标子缓冲的存储位置指针。
作为本发明方法的进一步改进:所述步骤2.1)的具体实施步骤为:
2.11)获取当前拍的起始子缓冲位置指针,根据所述起始子缓冲位置指针以及当前拍的请求数生成控制各子缓冲的使能信号,使从起始子缓冲开始依次循环的共n个子缓冲使能有效,其中n为所述请求数;
2.12)控制使能有效的子缓冲执行写入或读出请求,并更新起始子缓冲位置指针为当前拍执行结束位置的下一个子缓冲以用于下一拍执行。
作为本发明方法的进一步改进:所述步骤2.11)中生成控制各子缓冲的使能信号的具体实施步骤为:
2.111)产生一个各数据位与各子缓冲一一对应的使能信号,并初始化所述使能信号的各数据位中高位为0、低位为1,且其中为1的数据位的个数与所述请求数相等,得到初始使能信号;
2.112)对初始使能信号循环移位M位,所述M为将最低位移至起始子缓冲所对应的数据位所需要移动的次数,得到最终使能信号,所述最终使能信号中为1的数据位对应的子缓冲为使能有效。
作为本发明方法的进一步改进:所述步骤2.2)中更新各目标子缓冲的存储位置指针的具体实施步骤为:获取当前拍各子缓冲所处的行位置指针,将所述行位置指针增加1更新得到各目标子缓冲的存储位置指针。
一种利用上述高效缓存方法的输入缓冲装置,包括:
请求缓冲模块,包括依次设置的多个相同结构的用于缓冲请求的子缓冲;
请求管理模块,用于接收各源设备发送的请求并统计每拍接收到的请求数,输出至写入与读出控制模块;
写入与读出控制模块,用于每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;
Busy产生模块,用于当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备。
作为本发明装置的进一步改进:所述写入与读出控制模块包括用于执行写入控制的请求写入控制单元、以及用于执行读出控制的请求读出控制单元;所述请求写入控制单元、请求读出控制单元均包括一个使能控制电路以及一个行控制电路,所述使能控制电路用于每拍执行时,控制将上一拍执行结束位置的下一个子缓冲作为起始子缓冲,并从起使子缓冲开始依次循环的取n个目标子缓冲执行写入或读出请求操作,其中n为所述请求数;所述行控制电路用于各目标子缓冲按照当前对应的存储位置指针写入或读出请求后,更新各目标子缓冲的存储位置指针。
作为本发明装置的进一步改进:所述请求写入控制单元、请求读出控制单元均还包括一个分别与使能控制电路以及行控制电路连接的指针控制电路,所述指针控制电路用于每拍执行时将当前存储的起始子缓冲位置指针以及各子缓冲存储位置所在的行位置指针分别输出至所述使能控制电路、行控制电路,并根据请求数更新所述起始子缓冲位置指针为当前拍执行结束位置的下一个子缓冲以用于下一拍执行、更新所述行位置指针为当前拍执行结束位置的下一个子缓冲中存储位置指针所在的行。
作为本发明装置的进一步改进:所述请求写入控制单元还包括请求排序电路,所述请求排序电路与所述使能控制电路的输出端连接;所述请求排序电路用于将源设备发送的各请求按照对应的使能信号进行排序,得到排序后的请求序列输出至各子缓冲。
作为本发明装置的进一步改进:所述请求缓冲模块包括用于缓冲读请求的读请求缓冲单元、用于缓冲写请求的写请求缓冲单元;所述请求管理模块包括请求识别与统计单元以及管理FIFO单元,所述请求识别与统计单元用于识别源设备发送的请求类型并统计其中读请求、写请求的个数,通过管理FIFO单元存储每拍统计得到的读请求、写请求的个数。
与现有技术相比,本发明的优点在于:
1)本发明通过按每拍到达的读写请求数,将源设备的请求依次循环的写入各子缓冲中,使得子缓冲与各请求通路分离,实现无间隙地缓存,避免了请求存储至输入缓冲时产生空存储的“气泡”情况,提高硬件利用率,因而也降低了子缓冲的深度,显著的减少了输入缓冲的面积同时降低功耗。
2)本发明在只有缓冲存放请求的总深度接近阈值时才会产生Busy信号,相比较传统的输入缓冲需要在任意子缓冲接近阈值就会产生Busy信号,Busy信号产生时机晚,能够有效提高缓存效率。
3)本发明进一步通过起始子缓冲位置指针以及各子缓冲存储位置所在的行位置指针构成全局指针,由全局指针带动各子缓冲的存储位置局部指针,各子缓冲在局部指针的控制下执行读写操作,能够有效的实现请求的无间隙地存储。
附图说明
图1是无缓冲片上网络的一种具体结构原理示意图。
图2是传统的端设备输入缓冲在写入请求时的原理示意图。
图3是传统的端设备输入缓冲中产生Busy请求的原理示意图。
图4是本实施例用于处理器端设备中的高效缓存方法的实现流程示意图。
图5是本实施例用于处理器端设备中的输入缓冲装置的结构示意图。
图6是本实施例中请求写入单元的结构示意图。
图7是本实施例中请求读出单元的结构示意图。
图8是本实施例中Busy产生模块的结构示意图。
图9是本实施例中读写缓冲分离的输入缓冲装置的结构示意图。
图10是本实施例中输入缓冲装置写入请求的实现原理示意图。
图11是本实施例中输入缓冲装置读出请求的实现原理示意图。
图12是本发明具体实施例中写入请求的原理示意图。
图13是本发明具体实施例中读出请求的原理示意图。
图14是本发明具体实施例中Busy信号产生的原理示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图4所示,本实施例用于处理器端设备中的高效缓存方法,步骤包括:
1)在端设备中依次设置多个相同结构的用于缓冲请求的子缓冲;
2)接收各源设备发送的请求并统计每拍接收到的请求数;每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备。
本实施例通过按每拍到达的读写请求数,控制将源设备的请求依次循环的写入各子缓冲中,即依次写入各子缓冲并在各子缓冲中循环执行,以实现无间隙地缓存,避免了请求存储至输入缓冲时产生空存储的“气泡”情况,因而也降低了子缓冲的深度,显著的减少了输入缓冲的面积,同时降低功耗;通过每拍存储的请求数,还能够使得在进行请求读出操作时能够保持数据相关性。
本实施例在只有缓冲存放请求的总深度接近阈值时才会产生Busy信号,而传统的输入缓冲在任意子缓冲接近阈值就会产生Busy信号,因而本实施例高效缓存方法的Busy信号产生时机要比传统方法晚的多,能够有效提高缓存效率。
本实施例中,步骤2)中每拍将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中的具体实施步骤为:
2.1)每拍执行时,控制将上一拍执行结束位置的下一个子缓冲作为起始子缓冲,并从起使子缓冲开始依次循环的取n个目标子缓冲执行写入或读出请求操作,其中n为请求数;
2.2)各目标子缓冲按照当前对应的存储位置指针写入或读出请求后,更新各目标子缓冲的存储位置指针。本实施例中,步骤2.1)的具体实施步骤为:
2.11)获取当前拍的起始子缓冲位置指针,根据起始子缓冲位置指针以及当前拍的请求数生成控制各子缓冲的使能信号,使从起始子缓冲开始依次循环的共n个子缓冲使能有效,其中n为请求数;
2.12)控制使能有效的子缓冲执行写入或读出请求,并更新起始子缓冲位置指针为当前拍执行结束位置的下一个子缓冲以用于下一拍执行。
本实施例中,步骤2.11)中生成控制各子缓冲的使能信号的具体实施步骤为:
2.111)产生一个各数据位与各子缓冲一一对应的使能信号,并初始化使能信号的各数据位中高位为0、低位为1,且其中为1的数据位的个数与请求数相等,得到初始使能信号;
2.112)对初始使能信号循环移位M位,M为将最低位移至起始子缓冲所对应的数据位所需要移动的次数,得到最终使能信号,最终使能信号中为1的数据位对应的子缓冲为使能有效。
本实施例中,步骤2.2)中更新各目标子缓冲的存储位置指针的具体实施步骤为:获取当前拍各子缓冲所处的行位置指针,将行位置指针增加1更新得到各目标子缓冲的存储位置指针。
本实施例将各子缓冲与请求通路分离,通过起始子缓冲位置指针、各子缓冲所处的行位置指针所构成的全局指针来带动各子缓冲的局部存储位置指针,由全局指针以及请求数生成各子缓冲的使能信号,控制使能有效对应子缓冲执行写入或读出操作,执行后再更新局部存储位置指针,以实现无间隙地将请求存储在子缓冲中。
如图5所示,本实施例中采用上述高效缓存方法的输入缓冲装置,包括:
请求缓冲模块,包括依次设置的多个相同结构的用于缓冲请求的子缓冲;
请求管理模块,用于接收各源设备发送的请求并统计每拍接收到的请求数,输出至写入与读出控制模块;
写入与读出控制模块,用于每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;
Busy产生模块,用于当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备。
本实施例中,写入与读出控制模块包括用于执行写入控制的请求写入控制单元、以及用于执行读出控制的请求读出控制单元;请求写入控制单元、请求读出控制单元均包括一个使能控制电路以及一个行控制电路,使能控制电路用于每拍执行时,控制将上一拍执行结束位置的下一个子缓冲作为起始子缓冲,并从起使子缓冲开始依次循环的取n个目标子缓冲执行写入或读出请求操作,其中n为请求数;行控制电路用于各目标子缓冲按照当前对应的存储位置指针写入或读出请求后,更新各目标子缓冲的存储位置指针。通过按每拍到达输入缓冲的读写请求数将源设备的请求依次循环的写入各子缓冲中,能够实现无间隙地存储请求,避免了存储过程中出现的“气泡”问题,同时也降低了子缓冲的深度,从而显著的减少了输入缓冲的面积、降低功耗。
本实施例中,使能控制电路包括初始使能信号产生逻辑以及使能旋转逻辑,初始使能信号产生逻辑用于产生一个各数据位与各子缓冲一一对应的使能信号数据,并初始化使能信号数据的各数据位中高位为0、低位为1,且其中为1的数据位的个数与请求数相等,得到初始使能信号;使能旋转逻辑用于对初始使能信号进行循环移位M位, M为将最低位移至起始子缓冲所对应的数据位所需要移动的次数,得到最终使能信号,最终使能信号中为1的数据位对应的子缓冲为使能有效。
本实施例中,行控制电路包括指针选择信号产生逻辑以及行指针更新逻辑,指针选择信号产生逻辑用于产生一个各数据位与各子缓冲一一对应的指针选择信号数据,并初始化指针选择信号数据的各数据位中高位为0、低位为1,其中为1的数据位的个数与请求数相等,得到指针选择信号;行指针更新逻辑用于对指针选择信号中数据位为1对应的目标子缓冲,将指针控制电路发送的行位置指针增加1更新得到下一拍请求存储位置指针。
如图6、7所示,请求写入控制单元、请求读出控制单元均还包括一个分别与使能控制电路以及行控制电路连接的指针控制电路,指针控制电路用于每拍执行时将当前存储的起始子缓冲位置指针以及各子缓冲存储位置所在的行位置指针分别输出至使能控制电路、行控制电路,并根据请求数更新起始子缓冲位置指针为当前拍执行结束位置的下一个子缓冲以用于下一拍执行、更新行位置指针为当前拍执行结束位置的下一个子缓冲中存储位置指针所在的行。通过指针控制电路完成两个操作:一是把当前起始子缓冲位置指针、行位置指针的全局指针传递给使能控制电路、行控制电路;二是根据统计出的请求数更新全局指针,即计算出执行写入或读出操作结束后的全局指针,其值为将读请求数加上进行请求读出操作前的全局指针至。
本实施例中,由起始子缓冲位置指针L和各子缓冲存储位置所在的行位置指针H两部分构成请求缓冲模块的全局指针,指针L为低位、指针H为高位,指示当拍执行写入或读出操作时的起始子缓冲以及各子缓冲存储位置所在的行。假设缓冲含有X个子缓冲且该缓冲最多能够存储Y个请求,则定义全局指针高log2Y-log2X位为指针H,通过指针H确定进行下一拍操作起始请求所在的行数;定义全局指针低log2X位为指针L,通过指针L确定进行下一拍操作起始请求所在的子缓冲的编号。
在写入请求至子缓冲时,通过请求写入控制单元对请求进行预处理,生成控制各子缓冲的写入使能信号以及写入存储位置指针,将写入存储位置指针作为写指针控制写入位置;在读出请求至子缓冲时,通过请求读出控制单元对请求进行预处理,生成控制各子缓冲的读出使能信号以及读出存储位置指针,将读出存储指针作为读指针控制读出位置。
如图6所示,请求写入控制单元还包括请求排序电路,请求排序电路与使能控制电路的输出端连接;请求排序电路用于请求写入各子缓冲中时,将请求按照对应的使能信号进行排序,按照排序后的请求输出至各子缓冲,使得使能信号为高的请求按照规定的顺序进行排序。
参见图6,请求排序电路包括依次连接的请求统计部分、加法器以及排序部分,请求统计部分用于依据请求的使能信号按照规定的请求顺序统计出位于各个请求之前的有效请求个数。如对于A0、A1、A2、A3四个请求,在某一拍其使能信号为4‘b1010,则A0之前有效请求的个数为0,A1之前有效的请求个数为1(只有A0有效),A2之前有效的请求个数为2(A0和A2有效),A3之前有效的请求个数为3(A0、A2和A3有效)。加法器用于将统计出的请求数和指针控制电路传递来的指针L进行加法操作,排序部分则根据各个请求的使能信号和加法器得出的结果从大到小对请求进行排序,若出现两个或多个请求进行完加法操作后值相等的情况,则按照规定的请求顺序选出位于高顺序位的请求。
如图8所示,Busy产生模块包括请求数判断单元以及Busy产生器,请求数判断单元用于判断请求缓冲模块中请求数的总和是否超过预设阈值,若为是,启动Busy产生器产生Busy信号并发送至各请求通路。当读、写请求分离存储时,则需要同时设置读缓冲判断电路和写缓冲判断电路,Busy产生器为一个或逻辑,将读缓冲判断电路和写缓冲判断电路产生出的信号值进行逻辑或操作,产生Busy信号。
由于请求通路并不必须是同时包含读写缓冲,则还可根据实际需求将读、写缓冲独立或分离设置。与输入缓冲相连的多条请求通路中,若均为可以同时传送读请求和写请求的混合通路,则可只设置写请求缓冲;若请求通路均为只传送读请求的通路,则可只设置读请求缓冲;若请求通路中一部分为只传递读请求、另一部分为只传递写请求的通路,则可设置分离的读请求、写请求缓冲,使读请求全部存放在读请求缓冲中、写请求全部存放在写请求缓冲中。
如图9所示,本实施例请求缓冲模块具体包括用于缓冲读请求的读请求缓冲单元、用于缓冲写请求的写请求缓冲单元;请求管理模块包括请求识别与统计单元以及管理FIFO单元,请求识别与统计单元用于识别源设备发送的请求类型并统计其中读请求、写请求的个数,通过管理FIFO单元存储每拍统计得到的读请求、写请求的个数。管理FIFO单元通过先入先出FIFO序列的行数据高位存放读请求个数、低位存放写请求个数。。
本实施例中,读请求缓冲单元包括依次设置的M个子缓冲1~M,写请求缓冲单元2包括依次设置的N个子缓冲1~N,M和N均为2的幂次方,通过分离的读请求缓冲单元1、写请求缓冲单元2分别缓冲读、写请求。请求写入控制单元分别对应于读请求、写请求设置读请求写入电路、写请求写入电路,请求读出控制单元分别对应于读请求、写请求设置读请求读出电路、写请求读出电路。请求识别与统计单元分别与读请求写入电路、写请求写入电路连接,将读请求、读请求个数发送至读请求写入电路,以及将写请求、写请求个数发送至写请求写入电路。管理FIFO单元7分别将存储的每拍读请求、写请求的个数发送至读请求读出电路、写请求读出电路。
本实施例中,读请求写入电路、写请求写入电路、读请求读出电路以及写请求读出电路均包括上述指针控制电路、使能控制电路、行控制电路。指针控制电路中存储有起始子缓冲位置指针L以及各子缓冲存储位置所在的行位置指针H构成的全局指针,使能控制电路根据起始子缓冲位置指针L,生成使能信号,行控制电路根据行位置指针H更新目标子缓冲的存储位置指针。
本实施例中,读请求读出电路由指针控制电路、使能控制电路以及行控制电路三部分构成,通过指针控制电路首先把读缓冲的全局读指针发送给使能旋转电路和行控制电路,然后计算出进行请求读出操作结束后的全局读指针,即将读请求数加上进行请求读出操作前的全局读指针得到更新后的全局读指针值。使能控制电路根据指针控制电路传递过来的指针L的值,得到进行请求读出操作的各个子缓冲的读使能信号。行控制电路根据指针控制电路传递过来的指针H的值更新存储位置指针,得到读指针。写请求读出电路与读请求读出电路的结构相同,所不同的是写请求读出电路是控制写请求的读出操作。
将源设备的请求写入请求缓冲模块中时,读请求写入电路和写请求写入电路接收到待写入的请求和请求数后,进行写入的预处理操作,产生写入使能信号、写入存储位置指针并输出排序后的请求,根据写入使能信号、写入存储位置指针控制将当拍到达的排序后的请求写入到对应的子缓冲中;在进行请求写入操作的同时,若缓冲不空且下一站要求请求流出,则开始进行请求的读出操作,首先在从管理FIFO单元中取出当拍需要读出的请求数后,由读请求读出电路、读请求读出电路进行读出的预处理操作,产生读出使能信号、读出存储位置指针,根据读出使能信号、读出存储位置指针控制将请求读出对应的子缓冲。Busy产生模块对读请求缓冲单元、写请求缓冲单元进行实时监控,一旦判读到读缓冲或写缓冲出现存放的请求数超过阈值的情况,即读请求总数或写请求总数超过阈值时,产生Busy信号并输出至各请求通路。
如图10所示,本实施例输入缓冲装置执行请求写入流程,包括:
①进行写入判断,若有请求到达输入缓冲,则开始进行写入操作,转入步骤②,否则转入步骤⑤;
②从请求识别与统计电路中取数据,包括请求和请求数,转入步骤③;
③在写入电路中进行写入的预处理操作,产生写使能信号、写指针以及排序后的请求,转入步骤④;
④利用写使能信号、写指针以及排序后的请求对缓冲进行写入操作,转入步骤⑤;
⑤当拍写入操作完成,开始下一拍的写入操作,转入步骤①;
如图11所示,本实施例输入缓冲装置执行请求读出流程,包括:
①进行读出判断,若满足缓冲不空且下一站要求请求流出,则开始进行读出操作,转入步骤②,否则转入步骤⑤;
②从管理FIFO单元中取数据,转入步骤③;
③由读出电路中进行读出的预处理操作,产生读使能信号和读指针,转入步骤④;
④利用读使能信号和读指针对缓冲进行读出操作,转入步骤⑤;
⑤当拍读出操作完成,开始下一拍的读出操作,转入步骤①。
由于读、写缓冲分离,则在读请求缓冲单元或写请求缓冲单元的总深度接近预设阈值时才控制发送Busy信号。如图8所示,本实施例中Busy产生模块的请求数判断单元包括读缓冲判断电路以及写缓冲判断电路,读缓冲判断电路、写缓冲判断电路分别连接Busy产生器。读缓冲判断电路将读请求缓冲单元存放的请求总深度和读请求缓冲单元非溢出时存储空间阈值进行比较,产生一位信号标志读缓冲是否有溢出的危险,若读缓冲存放请求总深度大于读缓冲非溢出时存储空间阈值,则产生的信号为高电平,反之为低电平。写缓冲判断电路将写请求缓冲单元存放请求总深度和写请求缓冲单元非溢出时存储空间阈值进行比较,并产生一位信号标志写缓冲是否有溢出的危险,若写缓冲存放请求总深度大于写缓冲非溢出时存储空间阈值,则产生的信号为高电平,反之为低电平。Busy产生器为一个或逻辑,将读缓冲判断电路和写缓冲判断电路产生出的信号值进行逻辑或操作,产生Busy信号,若产生的Busy信号为高,则将Busy信号传递到源设备,使得暂停源设备发送请求。
本发明具体实施例中写入请求如图12所示,缓冲中包含有T个子缓冲,当T等于M时,表示的是读缓冲的写入操作;当T等于N时,表示的是写缓冲的写入操作。与传统的输入缓冲不同的是,本实施例输入缓冲装置所包含的子缓冲没有与请求通路一一对应,而是分离开来。进行写入操作前,请求写入电路进行写入预处理操作,产生出对应于各个子缓冲的写使能、写指针以及排好序的请求通路中的请求。根据起始子缓冲位置指针L的位置不同,各个子缓冲的写指针位置也不一样,可能位于同一行也可能位于相邻的两行,如图中各个子缓冲对应的写指针位于相邻的两行。从全局写指针指向的位置处开始,结合各个子缓冲对应的写使能信号和写指针将排好序的请求依次写入到缓冲中。写入操作结束后,全局写指针根据实际写入缓冲中的请求数进行移动,如图中的起始子缓冲位置指针L指向了子缓冲2而行位置指针H指向了下一行。更新得到的全局写指针会保存在请求写入电路的指针控制电路中,方便下一次写入操作的进行。各个子缓冲对应的写指针在得到新全局写指针信号后,迅速进行移动。如图中填充部分所示,写指针1、写指针Q+1到T都下移一行,其余的写指针没有变化。按照上述假设写入3个(RP、RP+1、RP+2)请求时,各请求是按顺序依次紧密的存储,因而没有“气泡”现象,存储空间利用率得到了较大提高。
传统的输入缓冲写入机制如图2所示,请求通路1到T分别与子缓冲1到T直接相连,进行写入操作前,缓冲中的各个子缓冲由于共享同一套写指针(写指针1,写指针2,…,写指针T),且写指针位于同一行。写入请求时,将请求对应的写入子缓冲写指针指向的位置处。写入操作结束后,子缓冲写指针全部下移一行,准备下一次的请求写入操作。如图2中的填充部分表示写入的请求,从图中可以看出,当拍写入的请求只有3个(RP、RP+1、RP+2),而T-3个子缓冲没有进行有效的数据写入,产生了“气泡”现象,导致存储空间的浪费。
本发明具体实施例中读出请求如图13所示,缓冲中包含有T个子缓冲,当T等于M时,表示的是读缓冲的读出操作;当T等于N时,表示的是写缓冲的读出操作。进行读出操作前,请求读出电路进行读出预处理操作,产生出对应于各个子缓冲的读使能和读指针。根据起始子缓冲位置指针L的位置不同,各个子缓冲的读指针位置也不一样,可能位于同一行也可能位于相邻的两行,如图中各个子缓冲对应的读指针位于相邻的两行。从全局读指针指向的位置处开始,结合各个子缓冲对应的读使能信号和读指针信号将缓冲中的请求读出,图中的填充部分表示读出的请求,一共有T-Q+1个(RQ、…、RT-1、RT)。读出操作结束后,全局读指针根据实际从缓冲中读出的请求数进行移动,图中的指针L指向了子缓冲2而指针H指向了下一行。更新得到的全局读指针会保存在请求读出电路的指针控制电路中,以进行下一次读出操作。各个子缓冲对应的读指针在得到新全局读指针信号后,迅速进行移动。如图所示,读指针1、读指针Q+1到T都下移一行,其余的读指针没有变化。
本发明具体实施例中Busy信号产生原理如图14所示,缓冲中包含有i个子缓冲,子缓冲和请求通路是分离的,请求通路到达的请求会依照写入策略无间隙的写入到缓冲中,因而请求写入非常紧密。缓冲中至少应该能够容纳的请求数为在端设备Busy发出后各个源设备已经发出和将要发出的总请求数之和,即缓冲总深度为X1+X2+…+Xi,子缓冲的深度为(X1+X2+…+Xi)/i,在缓冲存放请求总深度接近阈值时,才产生出Busy信号。当分离设置读缓冲、写缓冲时,则需要对两个缓冲各自产自的子Busy信号进行或操作。
而对于传统输入缓冲,每个子缓冲和请求通路一一对应,且假定端设备Busy发出后各个源设备已经发出和将要发出的总请求数对应于请求通路(按照通道号由小到大的顺序)分别为X1、X2、…、Xi,由于传统方法是以行为单位对缓冲进行写入操作的,因此每个子缓冲深度相等且为请求通路中传递请求数的最大值,即Max{X1,X2,…,Xi}。如图3所示,子缓冲1接近阈值而其他子缓冲没有任何请求,此时这仍会产生Busy信号。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (7)
1.一种用于处理器端设备中的高效缓存方法,其特征在于,步骤包括:
1)在端设备中依次设置多个相同结构的用于缓冲请求的子缓冲;
2)接收各源设备发送的请求并统计每拍接收到的请求数;每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备;
所述步骤2)中每拍将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中的具体实施步骤为:
2.1)每拍执行时,控制将上一拍执行结束位置的下一个子缓冲作为起始子缓冲,并从起使子缓冲开始依次循环的取n个目标子缓冲执行写入或读出请求操作,其中n为所述请求数;
2.2)各目标子缓冲按照当前对应的存储位置指针写入或读出请求后,更新各目标子缓冲的存储位置指针;
所述步骤2.1)的具体实施步骤为:
2.11)获取当前拍的起始子缓冲位置指针,根据所述起始子缓冲位置指针以及当前拍的请求数生成控制各子缓冲的使能信号,使从起始子缓冲开始依次循环的共n个子缓冲使能有效,其中n为所述请求数;
2.12)控制使能有效的子缓冲执行写入或读出请求,并更新起始子缓冲位置指针为当前拍执行结束位置的下一个子缓冲以用于下一拍执行;
所述步骤2.11)中生成控制各子缓冲的使能信号的具体实施步骤为:
2.111)产生一个各数据位与各子缓冲一一对应的使能信号,并初始化所述使能信号的各数据位中高位为0、低位为1,且其中为1的数据位的个数与所述请求数相等,得到初始使能信号;
2.112)对初始使能信号循环移位M位,所述M为将最低位移至起始子缓冲所对应的数据位所需要移动的次数,得到最终使能信号,所述最终使能信号中为1的数据位对应的子缓冲为使能有效。
2.根据权利要求1所述的用于处理器端设备中的高效缓存方法,其特征在于,所述步骤2.2)中更新各目标子缓冲的存储位置指针的具体实施步骤为:获取当前拍各子缓冲所处的行位置指针,将所述行位置指针增加1更新得到各目标子缓冲的存储位置指针。
3.一种利用权利要求1所述高效缓存方法的输入缓冲装置,其特征在于,包括:
请求缓冲模块,包括在端设备中依次设置的多个相同结构的用于缓冲请求的子缓冲;
请求管理模块,用于接收各源设备发送的请求并统计每拍接收到的请求数,输出至写入与读出控制模块;
写入与读出控制模块,用于每拍根据请求数控制将接收到的各请求按行顺序分别依次循环的写入或读出各子缓冲中;
Busy产生模块,用于当各子缓冲中请求数总和大于预设阈值时,产生Busy信号发送至各源设备。
4.根据权利要求3所述的输入缓冲装置,其特征在于:所述写入与读出控制模块包括用于执行写入控制的请求写入控制单元、以及用于执行读出控制的请求读出控制单元;所述请求写入控制单元、请求读出控制单元均包括一个使能控制电路以及一个行控制电路,所述使能控制电路用于每拍执行时,控制将上一拍执行结束位置的下一个子缓冲作为起始子缓冲,并从起使子缓冲开始依次循环的取n个目标子缓冲执行写入或读出请求操作,其中n为所述请求数;所述行控制电路用于各目标子缓冲按照当前对应的存储位置指针写入或读出请求后,更新各目标子缓冲的存储位置指针。
5.根据权利要求4所述的输入缓冲装置,其特征在于:所述请求写入控制单元、请求读出控制单元均还包括一个分别与使能控制电路以及行控制电路连接的指针控制电路,所述指针控制电路用于每拍执行时将当前存储的起始子缓冲位置指针以及各子缓冲存储位置所在的行位置指针分别输出至所述使能控制电路、行控制电路,并根据请求数更新所述起始子缓冲位置指针为当前拍执行结束位置的下一个子缓冲以用于下一拍执行、更新所述行位置指针为当前拍执行结束位置的下一个子缓冲中存储位置指针所在的行。
6.根据权利要求5所述的输入缓冲装置,其特征在于:所述请求写入控制单元还包括请求排序电路,所述请求排序电路与所述使能控制电路的输出端连接;所述请求排序电路用于将源设备发送的各请求按照对应的使能信号进行排序,得到排序后的请求序列输出至各子缓冲。
7.根据权利要求3~6中任意一项所述的输入缓冲装置,其特征在于:所述请求缓冲模块包括用于缓冲读请求的读请求缓冲单元、用于缓冲写请求的写请求缓冲单元;所述请求管理模块包括请求识别与统计单元以及管理FIFO单元,所述请求识别与统计单元用于识别源设备发送的请求类型并统计其中读请求、写请求的个数,通过管理FIFO单元存储每拍统计得到的读请求、写请求的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135337.8A CN104679671B (zh) | 2015-03-26 | 2015-03-26 | 用于处理器端设备中的高效缓存方法及输入缓冲装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135337.8A CN104679671B (zh) | 2015-03-26 | 2015-03-26 | 用于处理器端设备中的高效缓存方法及输入缓冲装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104679671A CN104679671A (zh) | 2015-06-03 |
CN104679671B true CN104679671B (zh) | 2018-10-12 |
Family
ID=53314748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510135337.8A Active CN104679671B (zh) | 2015-03-26 | 2015-03-26 | 用于处理器端设备中的高效缓存方法及输入缓冲装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104679671B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020124347A1 (zh) * | 2018-12-18 | 2020-06-25 | 深圳市大疆创新科技有限公司 | Fpga芯片和具有该fpga芯片的电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986287A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 用于向量数据流的重整理缓冲器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274967B2 (en) * | 2013-08-07 | 2016-03-01 | Nimble Storage, Inc. | FIFO cache simulation using a bloom filter ring |
-
2015
- 2015-03-26 CN CN201510135337.8A patent/CN104679671B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986287A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 用于向量数据流的重整理缓冲器 |
Also Published As
Publication number | Publication date |
---|---|
CN104679671A (zh) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103914341B (zh) | 数据队列出队管控方法和装置 | |
CN103955436B (zh) | 一种数据处理装置和终端 | |
CN102546406B (zh) | 片上网络路由集中控制系统和装置及自适应路由控制方法 | |
CN103345451B (zh) | 一种在多核处理器中缓冲数据的方法 | |
CN103425538A (zh) | 进程通讯方法及系统 | |
CN1862518A (zh) | 一种异步数据缓存装置 | |
CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
CN102541779A (zh) | 一种提高多数据缓冲区dma效率的系统和方法 | |
CN108228498A (zh) | 一种dma控制装置和图像处理器 | |
JP3027369B2 (ja) | ネットワークシステム、帯域管理装置、送信装置およびネットワーク伝送方法、帯域管理方法、送信方法 | |
CN100498749C (zh) | 串行外围接口数据传输方法及串行外围接口数据传输系统 | |
CN104679671B (zh) | 用于处理器端设备中的高效缓存方法及输入缓冲装置 | |
CN102255818B (zh) | 一种驱动接收报文的方法及装置 | |
CN102622323A (zh) | 动态可重构串行总线中基于开关矩阵的数据传输管理方法 | |
CN101667105A (zh) | 一种对动态内存进行动态读写访问分组的调度装置和方法 | |
CN105824604B (zh) | 多输入多输出处理器流水线数据同步装置及方法 | |
CN111352657A (zh) | FPGA高速高效流水读取x86数据的方法 | |
CN104050635B (zh) | 一种模板尺寸可变的图像非线性滤波实时处理系统及方法 | |
US20230367735A1 (en) | Data transmission method, module and apparatus, device, and storage medium | |
CN110764733B (zh) | 一种基于fpga的多种分布随机数生成装置 | |
CN106789722A (zh) | 一种网络拥塞控制方法和装置 | |
CN108848040A (zh) | 报文发送方法、设备及计算机可读存储介质 | |
CN107329913A (zh) | 一种访问控制的方法及装置 | |
CN111863139B (zh) | 一种基于近内存计算结构的基因比对加速方法和系统 | |
CN107918589A (zh) | 一种基于fpga的dmx512信号高效缓存并发系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |