功能单元静态功耗优化与循环优化对多银行内存系统能耗的影响
功能单元静态功耗优化
在现代处理器设计中,静态功耗的优化是一个重要的研究方向。下面将详细介绍一种通过关闭空闲功能单元来降低静态功耗的技术。
优化策略
- 函数调用分析 :如果某个特定的用户函数在热点代码块中被调用的次数超过阈值,当前框架会跳过对该函数的分析。因为该函数内部的开关操作过于频繁,可能会影响执行速度,得不偿失。
- 代码块功率需求比较 :将每个代码块与其所有后继代码块进行比较,检查它们的功率需求是否存在差异。若有差异,会根据之前制定的策略检查相关代码块是热点还是冷点,然后在边界处生成开启和关闭指令。当热点功率块与冷点代码块相邻时,通常在进入功率块之前会生成关闭指令。从功率块的需求中确定需要开启或关闭的单元。由于功率块的需求是由其中的热点代码块计算得出的,所以热点功率块内可能存在需要当前已关闭单元的冷点代码块。在进入这样的冷点代码块时,会开启相应单元,退出时再关闭。
以下是一个示例代码的优化过程说明:假设系统中有2个整数加法器和2个整数乘法器(由于假设代码中的所有操作都是整数操作,因此省略了浮点单元)。在开始时,除了整数加法器(代表此示例的最小配置)之外,所有功能单元都被关闭。循环代表一个热点功率块,循环前的代码块是冷点代码块。因此,在进入循环之前,会根据功率块的需求引入指令。由于循环中包含 “sum = sum+arr[i]” 和 “i++” 语句的热点基本块需要两个加法器来利用指令级并行性(ILP),所以在进入循环之前会开启一个额外的加法器。注意,乘法器(假设也执行除法