摘要:
周知cpu为方便乱序执行,内部会使用重命名寄存器技术消除数据依赖(war和waw)。编译器在如下场景也会用到重命名 1. 静态单赋值。过程内的每个变量唯一定义一次,原有相同的则会重命名,包括phi结点的定值 2. bb表调度。为消除反相关依赖即war,可以重命名读操作使用或写操作定义的值,这样能 阅读全文
posted @ 2023-09-06 23:35
cq12yue
阅读(21)
评论(0)
推荐(0)
摘要:
1. 不可达代码是指无论输入什么都不会执行的代码,对过程而言,即是从入口基本块到不了(没有路径可达)的那些基本块;死代码是指可达但计算了后面任何可执行路径都不会使用其计算结果的代码,比如死变量和死指令 2. 不可达代码的识别本质是有向图的可达性判定与传递闭包计算问题,一般用DFS法处理。先找到从入口 阅读全文
posted @ 2023-09-06 23:33
cq12yue
阅读(71)
评论(0)
推荐(0)
摘要:
1. 目的是识别循环中那种在每个迭代都产生相同值的计算,并将它们移到循环之外。注意,如果一个计算出现在嵌套循环内,对外循环的特定迭代而言,内循环的每个迭代都产生相同的值,但外循环的不同迭代产生不同的值,那么这种计算将移到内循环外,而非外循环外 2. 识别循环不变量可以基于数据流分析求得的use-de 阅读全文
posted @ 2023-09-06 23:30
cq12yue
阅读(78)
评论(0)
推荐(0)
摘要:
叶调用优化与收缩包装 1. 叶调用优化适用于被调者是不调用任何过程的过程之场景,这种过程叫叶过程 2. 有几种可能的优化 a)如果过程的实现使用display数组来寻址非局部变量,那么叶过程可避免在起始代码序列中更新display数组 b)如果叶过程内不使用由被调者保存的寄存器(寄存器分配器应设法优 阅读全文
posted @ 2023-09-06 23:23
cq12yue
阅读(7)
评论(0)
推荐(0)
摘要:
1. 数学基础:两者的共同点是都基于数据流值的半格和对组合运算封闭的传递函数,不同点是区域分析算法还要求传递函数是一个半格,不仅支持组合运算,而且支持交汇运算和闭包运算,交汇运算用于把有相同后继的不同执行路径组合起来,闭包运算用于环上(比如循环)执行零到多次的效果 2. 流程:迭代算法由初始化和循环 阅读全文
posted @ 2023-09-06 23:18
cq12yue
阅读(31)
评论(0)
推荐(0)
摘要:
1. 作为指令高速缓层优化的一种重要技术,它根据CFG流图边的执行频率将频繁执行的基本块排列在一起,并布局那些基本块在下降分支路径,而不在一起的也就是很少执行的基本块布局在转移分支路径。这样做一来可以使取到I-cache中的指令实际被执行的比例较高,二来对于某些体系结构上转移和下降路径延迟不等的分支 阅读全文
posted @ 2023-09-06 23:15
cq12yue
阅读(5)
评论(0)
推荐(0)
摘要:
【输入输出】 一个过程的所有基本块,除entry和exit外的每个基本块包含指令序列 【流程】 由前向数据流分析、局部复写传播和遍历基本块构成 1. 前向数据流分析:目标是计算出每个基本块入口处有效的复写赋值集合,这里定义为CPin(i),i为基本块,其元素为表示复写赋值的四元组<u,v,blk,p 阅读全文
posted @ 2023-09-06 23:13
cq12yue
阅读(16)
评论(0)
推荐(0)
摘要:
【输入】 ssa控制流图。结点为一个phi函数或一条运算指令,边包含控制流边和ssa边 【输出】 所有ssa变量的最终LatCell(常量半格值) 【流程】 1. 算法维护两个工作表,一是流图边FlowWL,用于跟踪控制流的执行,二是ssa边SSAWL,用于单赋值变量的传播。还有一个ExecFlag 阅读全文
posted @ 2023-09-06 23:10
cq12yue
阅读(19)
评论(0)
推荐(0)
摘要:
【输入】 程序控制流图CFG 【输出】 带区域结点的控制依赖图CDG 【流程】 1. 为CFG添加一个虚构谓词结点start,它的Y边指向入口结点entry,出边指向出口结点exit,得到CFG+。添加start是因为entry到第1个基本块没有条件判断 2. 为CFG+构建后必经结点树PDOMTr 阅读全文
posted @ 2023-09-06 23:07
cq12yue
阅读(57)
评论(0)
推荐(0)
摘要:
【输入】 根过程,及每个过程(含根过程)的指令序列 【输出】 调用图,由过程点集和调用边(形如<p,i,q>,p在位置i调用q)集构成 【全局结构】 PVVs:过程值变量集合 PVVals:过程值变量到过程常数集合的映射 PVBinds:过程值变量到过程值变量集合的映射 PVCalls:调用边的集合 阅读全文
posted @ 2023-09-06 23:04
cq12yue
阅读(24)
评论(0)
推荐(0)