片内缓存方法及装置制造方法

文档序号:6486282阅读:221来源:国知局
片内缓存方法及装置制造方法
【专利摘要】本发明提供了一种片内缓存方法及装置,其中,该方法包括:迭代计算的流水线在预设时隙启动;按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,预设时隙的间隔周期为预设周期的整数倍。本发明解决了相关技术中片内缓存容易出错、硬件资源开销大的问题,从而有效地提高片内缓存的正确性,节约了硬件资源,同时也提高了迭代计算的速度。
【专利说明】片内缓存方法及装置
【技术领域】
[0001]本发明涉及通信领域,具体而言,涉及一种片内缓存方法及装置。
【背景技术】
[0002]在数字电路的算法设计中,经常会遇到大规模的迭代计算,为了节约硬件资源,迭代变量经常会存放在具有较大固定延迟的片外存储器件(例如,QDR存储器件)中,但是,这个时候会遇到这样的问题:对于同一组靠得比较近的两次迭代运算,当前迭代计算需要运用上次迭代变量的计算结果作为当前迭代计算的输入,而上次迭代变量的计算结果还来不及从片外存储器中读出或者还来不及写入到片外存储器中,此时,如果当前迭代计算采用读取片外存储器的方式来获取上次迭代变量的计算结果,则会导致迭代计算的错误。
[0003]对于单组迭代计算的情况,目前技术人员常用的做法是将上次迭代变量的计算结果用片内缓存装置存储起来,后续的迭代计算可以直接读取此片内缓存装置中的值作为当前迭代计算的输入,而不用从片外存储器件中读取上次迭代变量的计算结果。
[0004]但是,在实际电路设计中,一般遇到的情况是多组迭代计算交叉进行,同时,为了对迭代计算进行加速,技术人员往往采用流水线的设计,这个时候,需要对片内缓存装置做许多特定的标识,设计起来往往很繁琐,既容易出错也需要大量的硬件资源开销。
[0005]针对相关技术中至少之一的问题,目前尚未提出有效的解决方案。

【发明内容】

[0006]本发明提供了一种片内缓存方法及装置,以至少解决相关技术中片内缓存容易出错、硬件资源开销大的问题。
[0007]根据本发明的一个方面,提供了一种片内缓存方法,其包括:迭代计算的流水线在预设时隙启动;按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,预设时隙的间隔周期为预设周期的整数倍。
[0008]优选地,按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,同时,将迭代计算的各级流水线的迭代变量结果写入到主存储器件中。
[0009]优选地,方法还包括:迭代计算的流水线在预设时隙启动后,获取与当前流水线相对应的索引值,其中,索引值用于指示是否需要从片内缓存中获取当前迭代变量的输入值;根据索引值的指示获取当前迭代变量的输入值进行迭代计算。
[0010]优选地,获取与当前流水线相对应的索引值包括:将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,获取与当前流水线变量寄存器的组号相同的流水线变量寄存器;根据当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成索引值。
[0011]优选地,根据索引值的指示获取当前迭代变量的输入值进行迭代计算包括:在索引值为零时,从主存储器件中获取当前迭代变量的输入值进行迭代计算;或者在索引值不为零时,从片内缓存装置中获取当前迭代变量的输入值进行迭代计算。[0012]优选地,从片内缓存装置中获取当前迭代变量的输入值进行迭代计算包括:根据当前流水线变量寄存器的级数和索引值获取当前迭代变量的输入值在片内缓存装置中的存储地址;根据存储地址获取当前迭代变量的输入值进行迭代计算。
[0013]优选地,预设周期为迭代计算的流水线周期。
[0014]根据本发明的另一方面,提供了一种片内缓存装置,包其括:启动模块,用于在预设时隙启动迭代计算的流水线;存储模块,用于按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,预设时隙的间隔周期为预设周期的整数倍。
[0015]优选地,上述片内缓存装置还包括:获取模块,用于在迭代计算的流水线在预设时隙启动后,获取与当前流水线相对应的索引值,其中,索引值用于指示是否需要从片内缓存中获取当前迭代变量的输入值;计算模块,用于根据索引值的指示获取当前迭代变量的输入值进行迭代计算。
[0016]优选地,获取模块包括:获取单元,用于将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,获取与当前流水线变量寄存器的组号相同的流水线变量寄存器;生成单元,用于根据当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成索引值。
[0017]优选地,计算模块包括:第一计算单元,用于在索引值为零时,从主存储器件中获取当前迭代变量的输入值进行迭代计算;或者第二计算单元,用于在索引值不为零时,从片内缓存装置中获取当前迭代变量的输入值进行迭代计算。
[0018]优选地,第二计算单元包括:获取子单元,用于根据当前流水线变量寄存器的级数和索引值获取当前迭代变量的输入值在片内缓存装置中的存储地址;计算子单元,用于根据存储地址获取当前迭代变量的输入值进行迭代计算。
[0019]在本发明中,通过将迭代计算的流水线在预设时隙启动,并按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,该预设时隙的间隔周期为预设周期的整数倍,实现了迭代计算的流水线有规律地启动,在预设时隙启动流水线后,并以预设周期为时间单位将各级流水线的迭代变量结果移位寄存到片内缓存中,可以有效地提高片内缓存的正确性,同时,也提高了片内缓存的操作便捷性,由于采用了流水线的设计,从而节约了硬件资源,同时也提高了迭代计算的速度。
【专利附图】

【附图说明】
[0020]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0021]图1是根据本发明实施例的片内缓存方法的流程图;
[0022]图2是根据本发明实施例的片内缓存装置的结构框图;
[0023]图3是根据本发明实施例的另一种片内缓存装置的结构框图;
[0024]图4是根据本发明实施例的获取模块的结构框图;
[0025]图5是根据本发明实施例的计算模块的结构框图;
[0026]图6是根据本发明实施例的第二计算单元的结构框图;
[0027]图7是根据本发明实施例的迭代计算片内缓存结构的示意图;
[0028]图8是根据本发明实施例的索引产生模块的工作示意图;以及[0029]图9是根据本发明实施例的迭代计算片内缓存方法的流程图。
【具体实施方式】
[0030]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0031]本实施例提供了一种片内缓存方法,其中,该片内缓存方法包括步骤S102至步骤S104。
[0032]步骤S102:迭代计算的流水线在预设时隙启动。
[0033]步骤S104:按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,预设时隙的间隔周期为预设周期的整数倍。
[0034]通过上述步骤,将迭代计算的流水线在预设时隙启动,并按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,该预设时隙的间隔周期为预设周期的整数倍,实现了迭代计算的流水线有规律地启动,在预设时隙启动流水线后,并以预设周期为时间单位将各级流水线的迭代变量结果移位寄存到片内缓存中,将各级流水线的迭代变量结果的存储与各级流水线的启动对应起来,可以有效地提高片内缓存的正确性,同时,也提高了片内缓存的操作便捷性,由于采用了流水线的设计,从而节约了硬件资源,同时也提高了迭代计算的速度。
[0035]为了满足不同应用场景的需求,在本优选实施例中,按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,同时,将迭代计算的各级流水线的迭代变量结果写入到主存储器件中。
[0036]在上述优选实施例中,按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,同时,还将迭代计算的各级流水线的迭代变量结果写入到主存储器件中,在迭代计算中,以便可以根据需求从主存储器件中获取迭代变量结果,或者从片内缓存中获取迭代变量结果。
[0037]为了有效地获取迭代变量结果,提高迭代计算的速度,在本优选实施例中,迭代计算的流水线在预设时隙启动后,获取与当前流水线相对应的索引值,其中,索引值用于指示是否需要从片内缓存中获取当前迭代变量的输入值;根据索引值的指示获取当前迭代变量的输入值进行迭代计算。
[0038]在上述优选实施例中,迭代计算的流水线在预设时隙启动后,获取与当前流水线相对应的索引值,根据索引值来判断是从主存储器件中获取当前迭代变量的输入,还是从片内缓存中获取当前迭代变量的输入,进而进行迭代计算,从而可以有效地获取迭代变量结果,提高迭代计算的速度。
[0039]为了准确地、有效地获取当前迭代变量的输入,在本优选实施例中,获取与当前流水线相对应的索引值包括:将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,获取与当前流水线变量寄存器的组号相同的流水线变量寄存器;根据当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成索引值。
[0040]在上述优选实施例中,在迭代计算过程中,各级流水线都会有对应的变量寄存器来存储该级流水线的中间结果,将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,以找到与当前流水线同组的其他级流水线,由于各级流水线的迭代变量是按照预设周期进行移位寄存的,因此,依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,则可以找到与当前流水线同组且最近的流水线,即当前迭代计算流水线的上次迭代计算的流水线,并根据当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成索引值,以便准确地、有效地获取当前迭代变量的输入在片内缓存中的地址。
[0041]为了提高迭代计算的速度,在本优选实施例中,根据索引值的指示获取当前迭代变量的输入值进行迭代计算包括:在索引值为零时,从主存储器件中获取当前迭代变量的输入值进行迭代计算;或者在索引值不为零时,从片内缓存中获取当前迭代变量的输入值进行迭代计算。
[0042]在上述优选实施例中,当索引值为零时,则表示不存在与当前迭代计算流水线相隔比较近的同组流水线,当前迭代计算有充足的时间可以从主存储器件中获取当前迭代变量的输入值,当索引值不为零时,则表示存在相隔比较近的同组流水线,当前迭代计算需要从片内缓存中获取当前迭代变量的输入值进行迭代计算,从而提高迭代计算的速度。
[0043]为了准确地从片内缓存中获取当前迭代变量的输入值,在本优选实施例中,从片内缓存中获取当前迭代变量的输入值进行迭代计算包括:根据当前流水线变量寄存器的级数和索引值获取当前迭代变量的输入值在片内缓存装置中的存储地址;根据存储地址获取当前迭代变量的输入值进行迭代计算。
[0044]在上述优选实施例中,由于各级流水线的迭代变量是按照预设周期进行移位寄存的,可以根据当前流水线变量寄存器的级数和索引值获取当前迭代变量的输入值在片内缓存装置中的存储地址,进而获取当前迭代变量的输入值进行迭代计算,从而提高了获取当前迭代变量的输入值准确性,有助于提高迭代计算的速度。
[0045]为了提高片内缓存的操作便捷性,在本优选实施例中,预设周期可以为迭代计算的流水线周期,实现任何两个同组或不同组之间流水线的时间间隔为流水线周期的整数倍,便于片内缓存的便捷性,提高片内缓存的准确性。
[0046]在本优选实施例中,提供了 一种片内缓存装置,如图2所示,该片内缓存装置包括:启动模块202,用于在预设时隙启动迭代计算的流水线;存储模块204,连接至启动模块202,用于按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,预设时隙的间隔周期为预设周期的整数倍。
[0047]在上述优选实施例中,通过启动模块202将迭代计算的流水线在预设时隙启动,存储模块204按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,该预设时隙的间隔周期为预设周期的整数倍,实现了迭代计算的流水线有规律地启动,在预设时隙启动流水线后,并以预设周期为时间单位将各级流水线的迭代变量结果移位寄存到片内缓存中,将各级流水线的迭代变量结果的存储与各级流水线的启动对应起来,可以有效地提高片内缓存的正确性,同时,也提高了片内缓存的操作便捷性,由于采用了流水线的设计,从而节约了硬件资源,同时也提高了迭代计算的速度。
[0048]为了满足不同应用场景的需求,在本优选实施例中,如图3所示,上述片内缓存装置还包括:获取模块206,用于在迭代计算的流水线在预设时隙启动后,获取与当前流水线相对应的索引值,其中,索引值用于指示是否需要从片内缓存中获取当前迭代变量的输入值;计算模块208,连接至获取模块206,用于根据索引值的指示获取当前迭代变量的输入值进行迭代计算。
[0049]为了有效地获取迭代变量结果,提高迭代计算的速度,在本优选实施例中,如图4所示,上述获取模块206包括:获取单元2062,用于将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,获取与当前流水线变量寄存器的组号相同的流水线变量寄存器;生成单元2064,连接至获取单元2062,用于根据当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成索引值。
[0050]为了准确地、有效地获取当前迭代变量的输入,在本优选实施例中,如图5所示,上述计算模块208包括:第一计算单元2082,用于在索引值为零时,从主存储器件中获取当前迭代变量的输入值进行迭代计算;或者第二计算单元2084,用于在索引值不为零时,从片内缓存装置中获取当前迭代变量的输入值进行迭代计算。
[0051]为了提高迭代计算的速度,在本优选实施例中,如图6所示,上述第二计算单元2084包括:获取子单元602,用于根据当前流水线变量寄存器的级数和索引值获取当前迭代变量的输入值在片内缓存装置中的存储地址;计算子单元604,连接至获取子单元602,用于根据存储地址获取当前迭代变量的输入值进行迭代计算。
[0052]以下结合附图对上述各个优选实施例进行详细地描述。
[0053]图7是根据本发明实施例的迭代计算片内缓存结构的示意图,如图7所示,当迭代计算的流水线在固定时隙启动,使得每级流水线启动时隙的间隔是固定的,为了提高实现的便捷性,可以设计一个计数器,该计数器不断的循环计数,计数周期和迭代计算流水线周期一致,流水线必须在计数器某一固定时隙启动,这样便使得任何两个同组或不同组之间流水线的时间间隔为流水线周期的整数倍,这样也便于后续迭代计算的迭代变量在片内缓存中的寻址。
[0054]迭代变量片内缓存可以分为两个功能模块:第一个功能模块为索引产生模块702(相当于获取模块206),用以产生上次迭代变量的值在片内缓存中存储的地址;第二个功能模块为迭代变量移位存储模块704 (相当于存储模块204),用来暂存迭代计算的迭代变量输出。
[0055]上述索引产生模块702,主要功能是计算当前迭代计算流水线与同组最近的迭代计算流水线的流水周期间隔,是一个预判过程。具体可以是,当前迭代计算流水线启动后,将当前迭代计算第一级流水线变量寄存器(变量寄存器用来保存各级流水线计算的中间结果)的组号按时间顺序依次与其它级处于计算状态的流水线变量寄存器的组号进行比对,直到找到与第一级流水线变量寄存器最近的一个匹配组号为止,然后,根据第一级流水线变量寄存器与匹配得到的流水线变量寄存器的级差产生索引值;如图8所示,第一级流水线变量寄存器自上至下逐一与其它级处于计算状态的流水线变量寄存器的组号进行比对,直到找到与第一级流水线变量寄存器最近的一个匹配组号为止(如图8所示,相同阴影的表示是同组的流水线),此时,确定第一级流水线变量寄存器与第四级流水线变量寄存器的组号相同,即索引值为3,若没有流水线变量寄存器的组号与第一级流水线变量寄存器的组号匹配,则索引值为零,表示当前迭代计算有充足的时间可以从主存储器件(具有较大固定延迟的片外存储器件)中读取上次迭代变量的输出值,无须从片内缓存装置中获取;产生的索引值可以存放到流水线变量寄存器中。[0056]迭代变量移位存储模块704,用来存储迭代变量的输出值,可以为一组移位存储单元,它将以迭代计算的流水线周期为时间单位不间断地对迭代变量的输出值进行移位寄存,因此,迭代变量移位存储模块的功能可以用一组移位寄存器来实现。迭代变量的结果输出将同时写入到主存储器件和移位存储模块中。
[0057]优选地,此移位存储器将顺着内容移位的方向进行自然数形式的编址,当流水线中需要输入上次迭代变量的计算结果的时刻将根据索引值为地址,取出移位存储器中的内容作为当前迭代计算的输入。
[0058]由上述移位存储器的行为特点可得,它只能暂存流水线计算启动后一定流水线级数范围内的计算结果,移位存储器的大小可以根据流水线的级数进行确定。
[0059]基于上述迭代计算片内缓存结构,如图9所示,迭代计算的过程包括如下步骤:
[0060]步骤S902:迭代计算请求。
[0061]步骤S904:判断是否到达迭代计算流水线启动的预设时隙,若是,则转至步骤S906,若否,则重复步骤S904。
[0062]步骤S906:迭代计算流水线启动。
[0063]步骤S908:当前迭代计算的流水线启动后,将先由索引产生模块702判断是否存在与当前流水线相邻同组的流水线,若是,则转至步骤S910,若否,则转至步骤S914。
[0064]步骤S910:索引产生模块702计算出索引值。
[0065]步骤S912:根据索引值从片内缓存中获取当前迭代变量的输入值进行迭代计算。
[0066]步骤S914:向主存储器件发出读操作请求。
[0067]步骤S916:根据主存储器件返回的当前迭代变量的输入值进行迭代计算。
[0068]步骤S918:将迭代变量的计算结果同时写入到主存储器件和移位存储模块中,此结果将作为后续迭代计算的迭代变量的输入,迭代计算结束。
[0069]在本实施例中以令牌桶限速算法为例,以流水线周期为预设周期为例,详细描述上述片内缓存方法。
[0070]需要对一组具有两个以上不同flow id的报文进行令牌桶限速的时候,令牌桶限速算法的参数(例如,令牌桶中令牌数目、限速发生的时刻)将作为迭代变量存储在外围四倍数据率(Quad Data Rate,简称为QDR)主存储器件中。对于某个flow id,它的每次限速运算将读取上次限速参数结果作为当前限速参数的输入值进行限速运算,也就是说,限速运算本身就是一个迭代计算过程。
[0071]对于QDR主存储器件,对它发出读操作后,QDR主存储器件可能固定需要几十个时钟周期返回迭代变量数据,而对于每条flow id而言,由于其报文的数据带宽可能很高,需要对限速的过程设计流水线,且流水线的周期可能只有几个时钟周期,远小于从QDR主存储器件读数据返回周期。这个时候就可能会出现相同flow id的限速运算靠得很近的一前一后两条流水线,前一次限速运算的限速参数结果如果仅存放在QDR主存储器件中,后一次限速运算则来不及从QDR主存储器件中读取前一次限速运算的结果,这样就必须在限速运算电路内部设计一个针对QDR主存储器件的片内缓存模块来暂存每次限速运算的结果参数。
[0072]上述限速运算中各级流水线一般均分配有一变量寄存器用来保存各级流水线计算相关的中间结果,其中,可以包括各流水线对应的flow id、流水线是否处于激活状态(SP限速运算状态)以及其它需要在各级流水线中传递的信息,且限速过程中接受限速参数进行限速运算的时刻一般都固定,这也是流水线设计的基本特点。
[0073]更复杂的情况是,几个不同的flow id的限速运算靠得很近,极端情况是背靠背的流水线计算,这个时候,有的针对QDR的片内缓存还需要区分各个不同的flow id对限速结果参数进行存储,设计起来非常繁琐。
[0074]针对上述情况这里给出一种针对QDR的片内缓存的方法及装置,如下所示:
[0075]I)令牌桶限速运算的流水线在固定时隙启动,使得每级流水线启动时隙的间隔是固定的,为了提高实现的便捷性,可以设计一个计数器,该计数器不断的循环计数,计数周期和令牌桶限速运算的流水线周期一致,流水线必须在计数器一固定时隙启动,这样便使得任何两个相同flow id或不同flow id报文之间流水线的时间间隔为流水线周期的整数倍,这样可便于后续限速运算在片内限速参数缓存中的寻址;
[0076]2)针对QDR的片内限速参数缓存按照功能可以划分为两个功能模块:第一个功能模块为索引产生模块,用以产生上次限速运算结果参数在片内缓存中存储的地址;第二个功能模块为限速参数移位存储模块,用来暂存流水线计算启动后一定流水线级数范围内限速运算的结果参数;
[0077]上述索引产生模块,属于一个预判模块,主要功能是计算当前flow id的限速运算流水线与最近相同flow id限速运算流水线的流水线周期间隔,此值即为索引值。
[0078]优选地,就是限速运算流水线启动后,将当前限速运算第一级流水变量寄存器中包含的flow id按时间顺序依次与其它级处于限速运算状态的流水线变量寄存器的flowid进行比对,直到找到与第一级流水变量寄存器中包含的flow id在时间上最近的一个flow id相匹配的流水线变量寄存器为止,然后根据上述两个流水线变量寄存器的级差产生索引值;若没有匹配的流水线变量寄存器,则索引值为零,表示当前限速运算有充足的时间可以从QDR主存储器件中读取上次迭代变量的输出值,无须从片内缓存装置中获取;产生的索引值可以存放到流水线变量寄存器中。
[0079]此索引值是一个预判值,其指示当限速运算进行到需要从片内缓存中取出限速参数时,待获取的限速参数在片内缓存中存放的地址。
[0080]上述限速参数移位存储模块,是用来暂存限速参数结果的。此限速参数移位存储模块可以为一组移位存储单元,优选地,此限速参数移位存储模块可以是一组移位寄存器,它以限速运算的流水线周期为时间单位不间断地进行内容移位寄存;
[0081]此移位存储器将顺着内容移位的方向进行自然数形式的编址,当流水线中需要输入限速计算参数的时刻将根据索引值为地址,取出移位存储器中的内容作为限速运算参数的输入;
[0082]由上述移位存储器的行为特点可得,它只能暂存流水线计算启动后一定流水线级数范围内限速运算的结果参数,移位存储器的大小可以根据流水线的级数进行确定。
[0083]限速运算的过程包括如下步骤;
[0084]S1:当前限速运算的流水线启动后,将先由索引产生模块计算出索引值;
[0085]S2:限速运算电路模块判断索引值,并进行限速运算的整个过程。若索引值为零,则表示不存在相隔比较近的同flow id运算的流水线,限速运算电路模块将对QDR主存储器件发出读操作命令来获取上次限速参数结果并输入进行当前限速运算;若索引值不为零,则表示存在相隔比较近的相同flow id的限速流水线,限速运算电路模块在需要用到上次限速参数结果的时刻将根据索引值从移位存储器中索引值指示的存储位置获取上次限速参数值并进行当前限速运算;
[0086]S3:限速运算电路更新限速参数结果值:将限速运算参数的输出结果同时写入到QDR主存储器件和移位存储模块中,此结果将作为后续限速运算参数的输入;
[0087]从以上的描述中,可以看出,本发明实现了如下技术效果:将迭代计算的流水线在预设时隙启动,并按照预设周期将迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,该预设时隙的间隔周期与预设周期一致,实现了迭代计算的流水线有规律地启动,并按照与预设时隙的间隔周期一致的预设周期将各级流水线的迭代变量结果移位寄存到片内缓存中,可以有效地提高片内缓存的正确性,同时,也提高了片内缓存的操作便捷性,由于采用了流水线的设计,从而节约了硬件资源,同时也提高了迭代计算的速度。
[0088]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0089]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种片内缓存方法,其特征在于,包括: 迭代计算的流水线在预设时隙启动; 按照预设周期将所述迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,所述预设时隙的间隔周期为所述预设周期的整数倍。
2.根据权利要求1所述的方法,其特征在于,按照所述预设周期将所述迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,同时,将所述迭代计算的各级流水线的迭代变量结果写入到主存储器件中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括: 所述迭代计算的流水线在所述预设时隙启动后,获取与当前流水线相对应的索引值,其中,所述索引值用于指示是否需要从所述片内缓存中获取当前迭代变量的输入值; 根据所述索引值的指示获取所述当前迭代变量的输入值进行迭代计算。
4.根据权利要求3所述的方法,其特征在于,获取与当前流水线相对应的索引值包括: 将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,获取与所述当前流水线变量寄存器的组号相同的流水线变量寄存器; 根据所述当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成所述索引值。
5.根据权利要求3所述的方法,其特征在于,根据所述索引值的指示获取所述当前迭代变量的输入值进行迭代计算包括: 在所述索引值为零时,从所述主存储器件中获取所述当前迭代变量的输入值进行迭代计算;或者 在所述索引值不为零时,从所述片内缓存中获取所述当前迭代变量的输入值进行迭代计算。
6.根据权利要求5所述的方法,其特征在于,从所述片内缓存中获取所述当前迭代变量的输入值进行迭代计算包括: 根据所述当前流水线变量寄存器的级数和所述索引值获取所述当前迭代变量的输入值在所述片内缓存中的存储地址; 根据所述存储地址获取所述当前迭代变量的输入值进行迭代计算。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述预设周期为所述迭代计算的流水线周期。
8.一种片内缓存装置,其特征在于,包括: 启动模块,用于在预设时隙启动迭代计算的流水线; 存储模块,用于按照预设周期将所述迭代计算的各级流水线的迭代变量结果移位寄存到片内缓存中,其中,所述预设时隙的间隔周期为所述预设周期的整数倍。
9.根据权利要求8所述的装置,其特征在于,还包括: 获取模块,用于在所述迭代计算的流水线在所述预设时隙启动后,获取与当前流水线相对应的索引值,其中,所述索引值用于指示是否需要从所述片内缓存中获取当前迭代变量的输入值; 计算模块,用于根据所述索引值的指示获取所述当前迭代变量的输入值进行迭代计笪
ο
10.根据权利要求9所述的装置,其特征在于,所述获取模块包括: 获取单元,用于将当前流水线变量寄存器的组号依次与其他级处于计算状态的流水线变量寄存器的组号进行比对,获取与所述当前流水线变量寄存器的组号相同的流水线变量寄存器; 生成单元,用于根据所述当前流水线变量寄存器的级数与获取的流水线变量寄存器的级数之间的级数差生成所述索引值。
11.根据权利要求9所述的装置,其特征在于,所述计算模块包括: 第一计算单元,用于在所述索引值为零时,从主存储器件中获取所述当前迭代变量的输入值进行迭代计算;或者 第二计算单元,用于在所述索引值不为零时,从所述片内缓存中获取所述当前迭代变量的输入值进行迭代计算。
12.根据权利要求11所述的装置,其特征在于,所述第二计算单元包括: 获取子单元,用于根据所述当前流水线变量寄存器的级数和所述索引值获取所述当前迭代变量的输入值在所述片内缓存中 的存储地址; 计算子单元,用于根据所述存储地址获取所述当前迭代变量的输入值进行迭代计算。
【文档编号】G06F9/38GK103513961SQ201210201491
【公开日】2014年1月15日 申请日期:2012年6月18日 优先权日:2012年6月18日
【发明者】殷俊杰 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1