1.一种低功耗的处理器,其特征在于,包括功耗管理模块、取指模块、译码模块、执行模块、访存模块、写回模块、流水线控制模块和数据模块;
功耗管理模块用于控制取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中各个SRAM的工作状态;取指模块用于读取指令PC值,并在PC中截取有效地址位,根据地址在指令存储器中取出指令;译码模块对指令进行译码,并在数据模块中取出指令的源操作数;执行模块用于分支跳转指令的跳转PC值和整形指令、乘除法指令结果的计算以及访存指令中访存地址的计算;访存模块根据执行模块计算出来的访存地址来对数据模块中寄存器进行读写;写回模块根据目的寄存器号将计算结果写回到数据模块的寄存器中;同时取指模块、译码模块、执行模块、访存模块、写回模块这五个模块依次相连以完整的运行每条指令;流水线控制模块分别与取指模块、译码模块、执行模块、访存模块、写回模块相连以完成5级流水线控制以及与数据模块相连以完成SRAM寄存器的选择;数据模块分别与执行模块、访存模块、写回模块相连以实现数据的传输;
取指模块、译码模块、执行模块、访存模块和写回模块采用5级流水线的模式进行布置,使处理器可以在一个时钟周期内同时处理多条指令;
所述的功耗管理模块包括总线时钟单元和总线电源单元;
所述的取指模块包括指令存储器和取指模块流水寄存器;
所述的译码模块包括拆分单元、整形译码单元、分支跳转译码单元、访存译码单元、乘除译码单元和译码模块流水寄存器;
所述的执行模块包括整型执行单元、乘法执行单元、除法执行单元、访存执行单元和执行模块流水寄存器;
所述的访存模块包括缓存单元、读写单元和访存模块流水寄存器;
所述的写回模块包括处理单元;
数据模块包括一读一写SRAM、单口SRAM、双口SRAM和数据通路寄存器;
取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM都有独立的时钟控制单元和电源控制单元,并通过功耗管理模块中的总线时钟单元、总线电源单元控制;
处理器工作模式划分如下:
将处理器分为正常和低功耗两种模式,通过功耗管理模块控制处理器进入不同模式;
在处理器为正常模式工作的情况下,功耗管理模块中的总线时钟单元和总线电源单元开启,同时各个功能模块开始工作,首先取指模块根据指令PC值读取在指令存储器中的指令,然后取指模块将指令发送至流水线控制模块并完成指令的检测,流水线控制模块通过5级流水线中的控制位表示该级流水线是否有有效指令,若为无有效指令则该级流水线控制位置0,流水线控制模块将指令PC值以及指令传入取指模块流水寄存器,然后流水线控制模块将控制译码模块、执行模块、访存模块、写回模块依次关闭;若为休眠指令则功耗管理模块将控制处理器进入低功耗模式;若为有效指令则该级流水线控制位置1,数据模块将通过该指令所需数据量来选择相应的SRAM里的数据进行传输,一般选取单口SRAM传输,当该指令所需数据量超过设定的最大阈值时,将选择双口SRAM数据进行传输,以便可以使数据可以快速的从存储器中读取出来,当该指令所需数据量低于设定的最小阈值时,将选择一读一写SRAM数据进行传输,以达到资源合理利用、降低功耗的目的;将指令所需数据从选用的SRAM中传入数据通路寄存器中等待调用,并将指令PC值以及指令传入取指模块流水寄存器中,这样可以减少数据通路部分的寄存器翻转率,减少处理器的动态功耗;
然后通过取指模块流水寄存器将PC值以及指令传输至译码模块,译码模块将指令写入拆分单元进行分离,获得操作码、源寄存器号以及目的寄存器号;然后将拆分出来的操作码通过四种类型的指令译码单元进行译码,判断当前运算指令类型;同时译码模块根据源寄存器号的值进入数据模块对数据通路寄存器进行数据读取,将源操作数从数据通路寄存器中取出,然后将指令PC值、运算指令类型、目的寄存器号以及源操作数传入译码模块流水寄存器中;所述的四种类型的指令译码单元包括整形译码单元、分支跳转译码单元、访存译码单元、乘除译码单元,然后通过译码模块流水寄存器将指令PC值、运算指令类型、目的寄存器号以及源操作数传输至执行模块,执行模块根据运算指令类型在对应的指令执行单元进行相应的计算;
若为分支跳转指令,则在整型执行单元中判断跳转条件是否成立,若跳转条件成立则计算分支跳转PC值并将分支跳转的使能信号、分支跳转PC值直接传输至取指模块;若为整型指令,则在整型执行单元中进行运算;若为乘、除法指令,则分别在乘法执行单元、除法执行单元中进行运算;若为访存指令,则在访存执行单元中进行访存地址的运算,并将访存的使能信号、访存数据以及访存地址信号不经过执行模块流水寄存器直接传输至访存模块,这样可以避免造成流水线拥堵;执行模块运算结束后将指令PC值、运算指令类型、运算结果或访存数据、访存地址、目的寄存器号传输至执行模块流水寄存器中;
然后通过执行模块流水寄存器将指令PC值、运算指令类型、运算结果或访存数据、访存地址、目的寄存器号传输至访存模块,若当前指令为整型、乘除法指令,则将指令PC值、运算指令类型、运算结果及目的寄存器号直接写入缓存单元;若当前指令为访存类指令中的写数据指令,则首先访存模块将访存数据的值传入读写单元进行字对齐后再将进行字对齐后的数据写入数据模块的数据通路寄存器中,随后根据访存的使能信号、访存地址信号的值将数据通路寄存器中的数据写入访存地址对应的SRAM存储器中;如果当前指令为读数据指令,则数据模块会根据访存地址在SRAM存储器中读出数据传至数据通路寄存器中,再将数据通路寄存器中的数据传入读写单元;最后访存模块将读写单元中的读取数据、缓存单元中的指令PC值、运算指令类型、运算结果和目的寄存器号传入访存模块流水寄存器中;
然后通过访存模块流水寄存器将读写单元中的读取数据、缓存单元中的指令PC值、运算指令类型、运算结果和目的寄存器号传输至写回模块,写回模块首先将数据写入处理单元,通过处理单元将数据中的读取数据、运算结果进行对齐,然后写回模块将需要写回的数据写回到数据模块的数据通路寄存器中,再根据目的寄存器号将数据通路寄存器中的写回数据写入相应的SRAM寄存器中;
取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM都配置了独立的时钟控制单元和独立的电源控制单元,所有独立的时钟控制单元和独立的电源控制单元均由功耗管理模块中的总线时钟单元和总线电源单元控制,当取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM出现闲置时,总线时钟单元立即控制对应的独立时钟控制单元关闭,等待5个时钟周期,若5个时钟周期后取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM仍然为闲置状态将通过总线电源单元控制对应的独立电源控制单元关闭,这样可以有效的降低处理器的功耗;
当处理器进入低功耗模式时,处理器将直接选择调用2单口SRAM中的数据,并且由于处理器中的取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM都有独立的时钟控制单元和电源控制单元并通过功耗管理模块中的总线时钟单元、总线电源单元控制,一旦处理器中的取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM处于闲置状态,总线时钟单元将控制对应的独立时钟控制单元关闭,等待时间将缩短为1个时钟周期,若1个时钟周期后取指模块、译码模块、执行模块、访存模块、写回模块以及数据模块中的一读一写SRAM、单口SRAM、双口SRAM仍然为闲置状态将通过总线电源单元控制对应的独立电源控制单元关闭,以节省动态功耗。