一种降低片上系统运行功耗的装置和方法与流程

文档序号:11177066阅读:307来源:国知局
一种降低片上系统运行功耗的装置和方法与流程

本发明涉及片上系统设计领域,尤其涉及一种降低基于片内非易失性存储器的片上系统运行功耗的装置和方法。



背景技术:

近年来,随着对高性能、多功能、便携式的电子设备的应用需求越来越广泛,其中将微处理器(mcu)、存储器、数字ip核、模拟ip核等集成在一块芯片上的soc系统(systemonchip,简称soc芯片)的速度越来越快、智能化程度越来越高,这必然导致芯片的功耗呈指数级增加,这就使得低功耗设计逐渐成为与芯片面积和时序同样重要的设计目标。

嵌入式soc芯片执行应用程序的过程是,微处理器读取保存在片内非易失性存储器中的指令,由微处理器进行译码和处理,执行过程中微处理器需要不断从片内非易失性存储器(nvm:non-volatilememory)中读取指令和数据,因此soc芯片的运行能耗除了微处理器执行程序消耗的能耗之外,有很大一部分消耗在读取片内非易失性存储器上,尤其是在嵌入式soc的应用环境中,例如移动式手持设备和各类非接触式ic卡芯片,由于其供电方式的限制,功耗指标尤为重要,对该类芯片的低功耗设计目标实际上是降低给定时间内的能量消耗。

目前在片上系统的低功耗设计中,常用的技术手段有:

1、降低芯片供电电压,由于芯片功耗与供电电压呈平方正比的关系,降低芯片供电电压是降低芯片功耗最直接的方法;

2、多供电电压技术,将芯片划分成多个电源域,对于不同性能要求的电路模块,分别使用不同的尽可能低的工作电压;

3、电源关断技术,对芯片内部空闲部分电路断电,最大限度降低芯片空闲状态下的静态功耗。

降低芯片的供电电压是降低soc芯片功耗的最直接方法,但是降低电源电压的同时,芯片的性能也会同时大幅降低;电源关断技术可以降低soc芯片整体或部分在不工作时的静态功耗,但是对于其运行过程中的动态功耗没有作用;多供电电压技术可以降低芯片工作时的动态功耗,但是由于芯片在工作时,消耗功耗最大的部分往往是要求工作性能最高的部分,该技术对于降低动态功耗作用有限。



技术实现要素:

本发明提供一种降低片上系统运行功耗的装置和方法,降低了片上系统运行过程中读取片内非易失性存储器的次数,同时降低了片内非易失性存储器的工作频率,从而降低了片上系统的运行功耗。

为了达到上述目的,本发明提供一种降低片上系统运行功耗的装置,包含:

微处理器,其用于读取片内高速缓存或片内非易失性存储器中的指令和数据,并运行应用程序;

片内非易失性存储器,其用于保存应用程序的指令和数据;

片内高速缓存,其用于保存片内非易失性存储器中的指令和数据;

缓存控制器,其电性连接微处理器、片内非易失性存储器和片内高速缓存,用于处理微控处理器发起的访问存储器请求,如果访存地址命中片内高速缓存,则缓存控制器读取片内高速缓存中的数据提供给微处理器,如果访存地址没有命中片内高速缓存,则缓存控制器读取片内非易失性存储器中的数据提供给微处理器,并将读取的片内非易失性存储器中的数据写入片内高速缓存。

所述的缓存控制器包含:

主控模块,其电性连接微处理器,用于处理微控处理器发起的访问存储器请求,并控制其他模块的工作;

预取控制与保存模块,其电性连接主控模块,用于暂时存储片内非易失性存储器中的数据;

非易失性存储器接口,其电性连接预取控制与保存模块和片内非易失性存储器,用于实现缓存控制器和片内非易失性存储器之间的数据交换;

高速缓存接口,其电性连接主控模块和片内高速缓存,用于实现缓存控制器和片内高速缓存之间的数据交换。

本发明还提供一种降低片上系统运行功耗的方法,包含以下步骤:

步骤s1、缓存控制器接收微控处理器发起的访问存储器请求,判断访存地址是否命中片内高速缓存,如果命中,则进行步骤s2,如果未命中,则进行步骤s3;

步骤s2、缓存控制器读取片内高速缓存中的数据提供给微处理器,返回步骤s1;

步骤s3、缓存控制器判断访存地址是否命中预取控制与保存模块,如果命中,则进行步骤s4,如果未命中,则进行步骤s5;

步骤s4、缓存控制器将预取控制与保存模块中的数据提供给微处理器,同时将该数据写入片内高速缓存,返回步骤s1;

步骤s5、缓存控制器读取片内非易失性存储器中的数据写入预取控制与保存模块,返回步骤s1。

本发明降低了片上系统运行过程中读取片内非易失性存储器的次数,同时降低了片内非易失性存储器的工作频率,从而降低了片上系统的运行功耗。

附图说明

图1是本发明提供的一种降低片上系统运行功耗的装置的电路框图。

图2是缓存控制器的电路框图。

图3是本发明提供的一种降低片上系统运行功耗的方法的流程图。

图4是本发明一个实施例中提供的降低片上系统运行功耗的装置的电路框图。

图5是运行zip测试程序得到的时间图。

图6是运行zip测试程序得到的总能耗图。

图7是运行sha测试程序得到的时间图。

图8是运行sha测试程序得到的总能耗图。

具体实施方式

以下根据图1~图8,具体说明本发明的较佳实施例。

如图1所示,本发明提供一种降低片上系统运行功耗的装置,包含:

微处理器1,其用于读取片内高速缓存或片内非易失性存储器中的指令和数据,并运行应用程序;

片内非易失性存储器4,其用于保存应用程序的指令和数据;

片内高速缓存3,其用于保存片内非易失性存储器4中的指令和数据;

缓存控制器2,其电性连接微处理器1、片内非易失性存储器4和片内高速缓存3,用于处理微控处理器1发起的访问存储器请求,如果访存地址命中片内高速缓存3,则缓存控制器2读取片内高速缓存3中的数据提供给微处理器1,如果访存地址没有命中片内高速缓存3,则缓存控制器2读取片内非易失性存储器4中的数据提供给微处理器1,并将读取的片内非易失性存储器4中的数据写入片内高速缓存3。

所述的片内非易失性存储器4通常包含闪存(flash)或电可擦只读存储器(eeprom),具有掉电数据不丢失的特性。

所述的片内高速缓存3通常包含静态随机存储器(sram),其与片内非易失性存储器相比,存储速度更快,功耗更低。

如图2所示,所述的缓存控制器2包含:

主控模块201,其电性连接微处理器1,用于处理微控处理器1发起的访问存储器请求,并控制其他模块的工作;

预取控制与保存模块202,其电性连接主控模块201,用于暂时存储片内非易失性存储器4中的数据;

非易失性存储器接口203,其电性连接预取控制与保存模块202和片内非易失性存储器4,用于实现缓存控制器2和片内非易失性存储器4之间的数据交换;

高速缓存接口204,其电性连接主控模块201和片内高速缓存3,用于实现缓存控制器2和片内高速缓存3之间的数据交换。

如图3所示,本发明还提供一种降低片上系统运行功耗的方法,包含以下步骤:

步骤s1、缓存控制器接收微控处理器发起的访问存储器请求,判断访存地址是否命中片内高速缓存,如果命中,则进行步骤s2,如果未命中,则进行步骤s3;

步骤s2、缓存控制器读取片内高速缓存中的数据提供给微处理器,返回步骤s1;

步骤s3、缓存控制器判断访存地址是否命中预取控制与保存模块,如果命中,则进行步骤s4,如果未命中,则进行步骤s5;

步骤s4、缓存控制器将预取控制与保存模块中的数据提供给微处理器,同时将该数据写入片内高速缓存,返回步骤s1;

步骤s5、缓存控制器读取片内非易失性存储器中的数据写入预取控制与保存模块,本次写入的数据会覆盖之前的数据,返回步骤s1。

本发明中,片内高速缓存中保存的内容是片内非易失性存储器中保存内容的一个子集,微处理器发起的大部分访存请求都可以在片内高速缓存中命中,所以在芯片运行过程中,不需要频繁读取片内非易失性存储器,大部分微处理器访问存储器的请求都可以由片内高速缓存提供,由于片内高速缓存由寄存器和sram构成,其读写功耗要远远低于片内非易失性存储器的读取功耗,因此soc芯片运行的功耗可以大大降低,另一方面,由于片内高速缓存的存在,在保持微处理器工作频率不变的条件下,片内非易失性存储器的工作频率可以降低,对于整体芯片运行性能没有太大的影响,从而进一步降低片上系统的运行功耗。

以下具体说明本发明的一个较佳实施例,在该实施例中,实现了一种片内高速缓存的结构,并且在该soc系统上运行了sha、zip两个测试程序,得到了相应的功耗和性能数据,证明了本发明提出的降低soc芯片运行能耗方法的可行性和有效性。

如图4所示,本实施例中,提供一种降低片上系统运行功耗的装置,其中,微处理器1采用mcu,作为系统中的主设备,发起访问存储器的请求,片内高速缓存3包含静态随机存储器sram,sram用于保存地址标志tag和片内非易失性存储器中的数据data,静态随机存储器sram包含地址存储器301和数据存储器302,片内非易失性存储器4采用位宽为72比特的flash存储器,缓存控制器2中的主控模块201用于处理mcu发起的访存请求,并控制其他模块工作,地址缓存接口205电性连接主控模块201和地址存储器301,地址缓存接口205中包含有效位寄存器2051,用于保存片内高速缓存3的有效位valid_bit,数据缓存接口206电性连接主控模块201和数据存储器302,预取控制与保存模块202电性连接主控模块201,该预取控制与保存模块202采用寄存器实现,用于保存地址标示和数据,非易失性存储器接口203电性连接预取控制与保存模块202和片内非易失性存储器4,主控模块201、地址缓存接口205和数据缓存接口206中还分别包含状态控制寄存器(图中未显示)。

所述的地址存储器301采用宽度9bit,深度128的sram,用于存储地址tag信息,数据存储器302采用宽度72bit,深度256的sram,用于存储指令data信息。

所述的微处理器1的访存地址按照片内高速缓存3的组织结构分成三部分:mcu_addr={tag,index,offset},其中,offset表示片内非易失性存储器4中每一条缓存块cacheline的大小,在本实施例中缓存块cacheline的大小是16byte,因此offset共4位,一条缓存块cacheline就是片内非易失性存储器4中16byte的连续数据,index用于对地址存储器301和数据存储器302寻址,在本实施例中,片内高速缓存3采用直接映射(主存中的地址只能唯一映射到片内高速缓存中的一个位置)的结构,位宽为72比特的flash存储器中的缓存块cacheline共有128条,因此index共7位,tag是访存地址mcu_addr中剩下的高位地址,存储在地址存储器301中,用于判断是否在片内高速缓存中命中,在本实施例中tag是9位,因此地址存储器301中保存的是128条9bittag信息,对应128条缓存块cacheline,表示为9bitx128,数据存储器302中保存的是128条16bytedata信息,表示数据存储器302的位宽是72bit,因此一条缓存块cacheline所需的data信息在数据存储器302中分成两个地址存放,多出来的比特数是校验位,有效位寄存器2051用于保存128条缓存块cacheline的有效位valid、预取控制与保存模块202用于保存{tag,index}信息和数据data信息。

在不同结构的片内高速缓存中,寄存器和sram的作用可能不同,例如本实施例中,sram用于地址存储器301(保存地址标志tag)和数据存储器302(保存nvm数据data),寄存器用于保存有效位valid和预取控制与保存模块202的信息,其他的实施例也可以将有效位valid用sram实现,或者不使用预取控制与保存模块202。

利用本实施例中提供的一种降低片上系统运行功耗的装置来降低片上系统soc的运行功耗,包含以下步骤:

步骤1、微处理器发起一条访存地址mcu_addr,记为{tag,index,offset};

步骤2、主控模块根据index搜索数据存储器中对应的内容,如果有一条相等,并且相应的有效位valid有效,说明当前访存的地址在片内高速缓存中命中,读取数据存储器,如果访存地址没有命中片内高速缓存,则进行步骤3;

步骤3、主控模块比较{tag,index}与预取控制与保存模块中保存的值是否相等,如果相等,表示当前访存地址片内高速缓存中缺失,在预取控制与保存模块中命中,则进行地址存储器的替换,将预取控制与保存模块中的数据写入片内高速缓存中的数据存储器,并同时将该数据提供给微处理器,然后根据当前预取控制与保存模块中保存的块地址,顺序加1进行指令预取,如果{tag,index}与预取控制与保存模块中保存的值不相等,表示当前访存地址在片内高速缓存中缺失,在预取控制与保存模块中缺失,则进行步骤4;

步骤4、主控模块取消不命中的指令预取,并读取片内非易失性存储器,将读到的数据写入预取控制与保存模块,当下一次微处理器访存命中预取控制与保存模块时,再将数据写入片内高速缓存中的数据存储器。

本实施例中,片内高速缓存的结构是直接映射,因此替换只需要用当前微处理器发起的访存中的index对地址存储器进行寻址,用预取控制与保存模块中保存的tag替换地址存储器中地址等于index的单元即可。

指令预取发生在当前访存地址mcu_addr中的{tag,index}与预取控制与保存模块中保存的值相等的情况下,此时缓存控制器将预取控制与保存模块中保存的数据提供给微处理器,同时向片内非易失性存储器发起地址为{{tag,index}+1,4’h0}的读取请求(4’h0表示4个比特位宽的全0数据,即4位二进制数0000),由于该次片内非易失性存储器读取请求实际上发生在微处理器需要该片内非易失性存储器地址的数据之前,并且所取的地址是预取控制与保存模块的下一个顺序地址,因此叫做顺序指令预取。

在本实施例中,主要的能耗来源是读写地址存储器tag_ram能耗、读写数据存储器data_ram能耗、读片内非易失性存储器flash能耗,其他数字电路的能耗可以忽略,同时,在以下的比较中微处理器mcu的工作频率相同并且运行相同的应用程序,因此微处理器mcu的能耗影响也忽略。

对于存储器,其能耗的计算方式如下:

存储器能耗=访问存储器次数*存储器访问功耗*存储器访问时间=访问存储器次数*存储器访问功耗/存储器工作频率。

下表列出了本实施例中地址存储器tag_ram、数据存储器data_ram、片内非易失性存储器flash的存储器访问功耗/存储器工作频率数据。

在本实施例的soc系统上,运行测试程序zip和sha,得到tag_ram、data_ram、flash的存储器访问次数,并与一个没有高速缓存的系统(flash位宽为36比特)做对比。由于本实施例中的flash工作频率最高为30mhz,因此设定处理器的工作频率为30mhz,ram的工作频率为30mhz。

图5是对比系统、本实施例系统在30mhzflash频率下,运行zip测试程序所需要的时间图。

图6是对比系统、本实施例系统在30mhzflash频率下,运行zip测试程序的总能耗图。

可以看出,加入高速缓存之后,程序运行速度基本不变(6516.9us→6588.6us),程序的能耗降低了66.36%(54.78uj→18.428uj)。证明本发明提出的方法,可以保证应用程序性能不变的前提下,降低soc芯片的能耗。

图7是对比系统、本实施例系统在30mhzflash频率下,运行sha测试程序所需要的时间图。

图8是对比系统、本实施例系统在30mhzflash频率下,运行sha测试程序的总能耗图。

可以看出,加入高速缓存之后,程序运行速度基本不变(432.2us→441.7us),程序的能耗降低了41.55%(3.389uj→1.981uj)。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1