一种低功耗流水线的实现方法
技术领域
本发明公开一种低功耗流水线的实现方法,属于芯片设计领域。
背景技术
本发明涉及芯片设计领域,具体涉及一种多节点网络之中网络控制协议芯片的电路实现过程中数据通路的流水线调度处理的新型实现方法。
随着服务器应用领域的不断发展,高端服务器的应用需求已经进入了一个重要阶段。复杂的体系结构实现支持高端服务器系统实现高性能指标即高安全性、高可用性、高可靠性等特点。其中网络控制类芯片控制多路处理器系统,使系统内部报文传输达到高效可靠、安全稳定的目的。对于该类的控制芯片的设计来说,多路高速报文的流水线高效调度是非常有必要的。利用流水线的高效调度,一般情况下需要每一级都进行寄存器锁存传输,然后根据每级流水线设定的处理对数据进行更新,并传输至下一级寄存器。对于大规模高速协议处理器而言,单位时间处理的数据量相当庞大,且没有必然的相关性,采用常规方法导致寄存器的反转率非常高,而对于芯片电路的供电与压降变化是有很高的设计要求与设计难度的,传统的流水线结构处理方式已不能满足要求,并且传统流水线结构的功耗与驱动也难达要求,导致电路后端设计具有极大的风险。不利于电路的设计者设计电路。
鉴于此,本发明提供一种低功耗流水线的实现方法,有助于在保持寄存器与逻辑电路规模不变的情况下,降低寄存器的反转率,在电路持续长时间有效工作的时候,对于动态功耗的降低有显著的帮助。采用新型的流水线电路结构,构建了唯一不变的寄存器堆栈,只有部分数据在流水线处理过程中进行更新,有助于在保持寄存器与逻辑电路规模不变的情况下,降低寄存器的反转率,在电路持续长时间有效工作的时候,对于动态功耗的降低有显著的帮助,优化了电路设计的资源,简化了电路结构,减轻了芯片后端设计的复杂度,从整体上降低整个芯片系统设计复杂度。
发明内容
本发明针对流水线的高效调度,对于大规模高速协议处理器而言,数据量庞大,采用常规方法导致寄存器的反转率非常高,增加设计要求与设计难度,并且传统的流水线结构处理方式不能满足现有要求,导致电路后端设计具有极大的风险,不利于电路的设计者设计电路等不足和缺陷,提供一种低功耗流水线的实现方法,有助于在保持寄存器与逻辑电路规模不变的情况下,降低寄存器的反转率,在电路持续长时间有效工作的时候,对于动态功耗的降低有显著的帮助。
本发明提出的具体方案是:
一种低功耗流水线的实现方法,具体步骤如下:
①建立新型流水线,从流水线输入端建立流水线第1级直至流水线第n级的流水线输出端,逐级流水线电路相连,且跨级流水线电路也互相连通,每级流水线内设寄存器数据指针,流水线外设寄存器堆栈,寄存器堆栈按照流水线级数内的寄存器数据指针进行分组,根据流水线级数多少,对应设有多少组寄存器在寄存器堆栈中;
②每级流水线内构建流水线主控单元,使用流水线主控单元读取本级流水线需要处理的数据,以及将本级寄存器修改的数据内容输出到寄存器堆栈,并给出寄存器堆栈需要写入的寄存器数据指针,以及给出下一级流水线主控单元和寄存器堆栈需要读出的寄存器数据指针;
③寄存器堆栈设数据指针管理单元,将每个寄存器组的数据与每级流水线的数据以及读写指针进行动态桥接管理,每一组数据进入到流水线中,需要在寄存器堆栈中占用一组寄存器,最后一级流水线输出后,对应在寄存器堆栈相应寄存器数据指针中的数据失效,此指针与对应的寄存器组提供给新进入流水线的数据使用;每一级流水线只更新本级流水线修改的数据到寄存器堆栈中;每一级流水线主控单元根据本级处理决定输出到下级流水线主控单元的数据,将其寄存器数据指针同时送至寄存器堆栈和下一级主控单元。
将各级流水线主控单元的写入数据线与对应写入寄存器数据指针所指定寄存器组的输入数据接口相连接,各级流水线的读出数据线与对应读出寄存器数据指针所指定的寄存器组的输出数据接口相连接。
所述的数据从进入到流水线,到从最后一级流水线输出的过程为:数据进入流水线第1级时,寄存器堆栈的数据指针管理单元块分配了一个固定指针用于存储数据,在流水线1处理完成后,将更新的数据写入分配的固定指针中,同时将指针锁存给第2级流水线使用;第2级流水线根据从第一级流水线锁存的指针数值,选取寄存器堆栈中对应指针的寄存器组数据作为输入数据,进行数据处理后,同样是将数据写入此指针指定的寄存器堆栈组中去;以后每一级流水线更新数据都是写入寄存器堆栈的同一组数据中去,直到最后一级流水线处理完成后直接输出最终处理结果。
一种低功耗流水线系统,应用于一种低功耗流水线的实现方法,包括流水线输入、输出端,各级流水线,流水线电路,寄存器堆栈;各级流水线通过流水线电路逐级以及跨级连接,并连接到寄存器堆栈;
各级流水线内分别设有流水线主控单元和寄存器数据指针,流水线主控单元负责读取本级流水线需要处理的数据,以及将本级寄存器修改的数据内容输出到寄存器堆栈,并给出寄存器堆栈需要写入的寄存器数据指针,以及给出下一级流水线主控单元和寄存器堆栈需要读出的寄存器数据指针;
寄存器堆栈内设数据指针管理单元,根据流水线级数多少,对应设有多少组寄存器在寄存器堆栈中;数据指针管理单元负责将每个寄存器组的数据与每级流水线的数据以及读写指针进行动态桥接管理。
所述的各级流水线主控单元的写入数据线与对应写入寄存器数据指针所指定寄存器组的输入数据接口相连接,各级流水线的读出数据线与对应读出寄存器数据指针所指定的寄存器组的输出数据接口相连接。
本发明的有益之处是:本发明改进流水线结构在不增加电路规模的前提下,采用构建的寄存器堆栈方式,不仅在电路持续长时间有效工作的时候,降低数据通路导致的寄存器反转产生的大量动态功耗,并且根据构建的指针向量可以准确定位每一级流水线处理所需要输入输出更新的数据内容,只对有数据更新的寄存器进行可能存在的数据反转操作,优化了电路设计的资源,简化了电路结构,减轻了芯片后端设计的复杂度,从整体上降低整个芯片系统设计复杂度。
附图说明
图1传统流水线工作运行时数据传递与处理示意图;
图2本发明流水线数据工作运行时数据的传递与处理示意图;
图3本发明多级不同数据同时在流水线中处理时寄存器堆栈数据管理的示意图。
具体实施方式
下面参照附图,对本发明的内容的实施方式进行一个简单的说明。
参看图1,这是传统的流水线工作模式,数据进入流水线处理后,从流水线1到流水线n每一级都有一定的逻辑算法处理操作,此操作都是在一个时钟时间内完成,然后将处理结果数据锁存进入寄存器中,在下一个时钟输出给流水线的下一级处理。由于每一级处理的数据在每一个时钟都是几乎完全独立的,因此锁存入每一级寄存器的数据几乎都是要全部被更新的,寄存器几乎需要完全翻转。对于每一级的流水线处理都是如此,因此所有的流水线中的寄存器在每一个时钟都几乎全部要进行反转,动态功耗基本上是所有寄存器动态功耗标称值的总和。
与之相对,参看图2,首先建立新型流水线,从流水线输入端建立流水线第1级直至流水线第n级的流水线输出端,逐级流水线电路相连,且跨级流水线电路也互相连通,每级流水线内设寄存器数据指针,流水线外设寄存器堆栈,寄存器堆按照流水线级数内的寄存器数据指针进行分组,根据流水线级数多少,对应设有多少组寄存器在寄存器堆栈中。在新型的流水线结构下,数据从进入流水线处理开始,就总是被锁存在寄存器堆栈中分配的固定指针地址中。数据进入流水线第1级时,就被寄存器堆栈的数据指针管理单元分配了一个固定指针用于存储数据。在流水线1处理完成后,将更新的数据写入分配的固定指针中,同时将指针锁存给第2级流水线使用。第2级流水线根据从第一级流水线锁存的指针数值,选取寄存器堆栈中对应指针的寄存器组数据作为输入数据,进行数据处理后,同样是将数据写入此指针指定的寄存器堆栈组中去。以后每一级流水线更新数据都是写入寄存器堆栈的同一组数据中去,直到最后一级流水线处理完成后直接输出最终处理结果。在最后一级流水线处理完成后,此指针释放,用于分配给此时进入第1级流水线开始进行处理的数据的指针,时间更新后写入寄存器堆栈用。由于每一包数据从进入流水线到出流水线,中间更新数据都是在同一组寄存器中进行,同一包数据的相关性远远高于不同包数据,因此每次写入寄存器中的数据只有极少部分需要进行更新,导致少量寄存器反转,大部分的寄存器只需要保持数值不变,在不反转的情况下,动态功耗是不存在的。因此动态功耗得以很大程度的降低与减少。
当每一级流水线都在同时工作,处理不同数据包的数据时,参看图3,在构建的寄存器堆栈中,使用数据指针管理单元,将每个寄存器组的数据与每级流水线的数据以及读写指针进行动态桥接管理。其中每级流水线主控单元的写入数据线与对应写入指针所指定寄存器组的输入数据接口相连接,每级流水线的读出数据线与对应读出指针所指定的寄存器组的输出数据接口相连接。每个时钟,数据指针都会向后一级流水线处理模块锁存,因此数据接口的连接,在每个时钟都会动态重建。在最后一级流水线输出之后,对应分配指针失效,被寄存器堆栈中的数据指针管理单元收回,重新分配给此时进入第1级流水线,准备开始进行数据处理的新的数据包使用。