Register Clustering Methodology for Low Power Clock Tree Synthesis
Register Clustering Methodology for Low Power Clock Tree Synthesis
1.概要
背景
一个时钟网络通常消耗整个芯片功率的40%。因此,许多研究者关注根据(1)中提出的参数对时钟网络进行功率优化。
KMR:基于k均值的寄存器聚类算法
KSR:基于k-分裂的寄存器聚类算法
GSR:基于贪婪搜索的寄存器聚类算法
2.算法描述
2.1KMR
2.2.1.伪中心(“Pseudo Center” )
“伪中心”技术不仅避免了寄存器聚类算法的失败,而且还破坏了可能违反约束条件的大型聚类(包括旋转、最大扇出、最大负载电容等)。
2.2.2.Algorithm1 : Get center
如果一个集合 \(C\) 是空集,那么他的中心点为最大集合的一半的点的几何中心;否则,则为该集合所有点的集合中心。
2.2.3 簇的个数
相比K-Means算法,KMR算法根据以下公式确定簇的个数。
$ K = Total_r / Max_f $
\(Total_r\) 表示寄存器总数,\(Max_f\)表示缓冲器最大扇出,\(\alpha\) 为用户自定义参数,通常大于1。
2.2.4 算法流程
首先计算出簇的个数\(K\),初始化\(K\)个簇的中心点,开始迭代。每次迭代先将所有簇清空,然后计算出每个点到每个簇的距离,将其分配到离他最近的簇中;全部分配完之后,重新计算簇的中心点,开始下一轮迭代,直到总线长不再减少为止。
2.2.5 小结
白看半天,其实跟K-Means算法一样,只是多了一个计算K的方法。
2.2 KSR
KMR没有考虑寄存器的分布,选择一个不合适的\(K\),结果会很糟。
首先选取最小生成树方法生成一个初始聚类,然后再使用MSR方法迭代优化。
2.3 GSR
从1~n遍历所有寄存器,如果可以找到满足条件的中心,则将该寄存器插入到这个簇中,否则,将该寄存器设置为一个新的簇中心。
2.4 buffer allocation
buffer放置于每个簇的中心,但需要考虑中心点放buffer是否会与寄存器重叠问题,需要将buffer向上下左右移动微调。