【问题标题】:Chordal graphs and SSA form programs弦图和 SSA 形式程序
【发布时间】:2018-11-30 14:48:45
【问题描述】:

我的问题是为什么每个 SSA 表单程序默认都对应一个弦图。 Wikipedia defines弦图为

弦图是四个或更多顶点的所有循环都具有 一个和弦,它是一个不属于循环但连接的边缘 循环的两个顶点

这是一个取自some lecture notes 的简单示例,为了了解SSA 表单注册分配的好处。作者写道:

[...] 以下程序和相应的弦图:

第一:我不明白这个图表是如何弦的。我意识到该程序不是 SSA 形式。然后作者将其转换为SSA形式得到这个干扰图

但我还是看不出这是一个弦图,或者第一个图与后面的任何图有什么关系。

所有这些都让我们很难理解 SSA 程序是如何产生弦交点图的。

以下是我调查过的一些来源:

  1. https://pdfs.semanticscholar.org/db6b/c047856bee4eb4e7d04f1b934864dca4b065.pdf?_ga=2.67844629.501567003.1543477413-723933249.1539714051

  2. https://homepages.dcc.ufmg.br/~fernando/publications/papers/APLAS05.pdf

  3. http://compilers.cs.uni-saarland.de/papers/ifg_ssa.pdf

  4. https://homepages.dcc.ufmg.br/~fernando/classes/dcc888/ementa/slides/SSABasedRA.pdf

【问题讨论】:

  • 我编辑了您的问题以删除与您所问问题无关的额外信息。

标签: graph compiler-optimization register-allocation ssa


【解决方案1】:

关于你在讲义第 6 节中列出的程序:

我不明白这个图表是如何和弦的。我意识到该程序不是 SSA 形式的。

您说得对,原始程序不是 SSA 形式。你也有理由对它的“弦图”为什么是弦图感到困惑:不是。作者犯了一个小错误。他们在参考第一个程序时写“弦图”的地方,他们意味着写“干涉图”。

您所指的第二张图是平凡的弦,因为它不包含任何循环。记住你给出的弦图的定义:

弦图是四个或更多顶点的所有循环都有一个弦,弦是不属于循环的一部分但连接循环的两个顶点的边

如果有零个循环,那么这些循环中的所有都包含一个和弦。

【讨论】:

  • 谢谢你的回答,但我没有得到这条线(如果有零个周期,那么所有这些周期都空无一物地包含一个和弦。)你能否正确地澄清一下@AlexReinking跨度>
  • 我的意思是我的理解是,要使图成为弦图,必须有至少四个创建循环的顶点,并且循环的两个顶点之间有一条边但不是它的一部分(如第一张图片),所以如果你能澄清一下我对弦图的定义有什么错误@AlexReinking
  • 不,这是不对的。如果图没有包含四个或更多顶点的环,则默认情况下它是弦的。因此,所有少于 4 个顶点的图都是弦的。
  • 现在我明白了定义的意思是,如果有一个具有四个顶点的图并且这四个顶点形成一个循环,那么必须有一个和弦来调用这个图弦,对吧?
  • 更像是如果一个图没有长度为 4 或以上的环,或者如果每个长度为 4 或以上的环都有一个和弦,则该图是和弦的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多