{"title":"数据依赖图支撑","authors":"V. Allan","doi":"10.1145/62504.62670","DOIUrl":null,"url":null,"abstract":"The Sunburst compiler refined at Utah State University employs a powerful mechanism for management of data anti-dependencies in data dependency graphs, <italic>DDG's</italic>: the <italic>DDG Bracer</italic>. The term <italic>bracing</italic><supscrpt>1</supscrpt> is used to mean the fastening of two or more parts together. There are two major goals in bracing: 1) semantic correctness, and 2) creation of an optimal DDG. Bracing provides necessary joining of code fragments, produced by a divide and conquer code generation algorithm, while yielding multiple code sequences.\nSince no anti-dependency arcs are present, the input <italic>DDG's</italic> are said to be in <italic>normal form</italic>. Because anti-dependency arcs occur only when a resource must be reused, a <italic>DDG</italic> in normal form represents infinite resources. The output <italic>DDG</italic> is a merging of the two input <italic>DDG's</italic> such that data dependency arcs between the two <italic>DDG's</italic> are inserted and data anti-dependency arcs are added to sequentialize the use of common resources.\nVegdahl [Veg82] was one of the first to recognize the importance of live track manipulation. A <italic>live track</italic> is an ordered pair: the first component is the microoperation node ( MO) in which a resource is born, and the second component is the set of nodes in which the resource dies.","PeriodicalId":378625,"journal":{"name":"[1988] Proceedings of the 21st Annual Workshop on Microprogramming and Microarchitecture - MICRO '21","volume":"25 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1988-01-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":"{\"title\":\"Data Dependency Graph Bracing\",\"authors\":\"V. Allan\",\"doi\":\"10.1145/62504.62670\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The Sunburst compiler refined at Utah State University employs a powerful mechanism for management of data anti-dependencies in data dependency graphs, <italic>DDG's</italic>: the <italic>DDG Bracer</italic>. The term <italic>bracing</italic><supscrpt>1</supscrpt> is used to mean the fastening of two or more parts together. There are two major goals in bracing: 1) semantic correctness, and 2) creation of an optimal DDG. Bracing provides necessary joining of code fragments, produced by a divide and conquer code generation algorithm, while yielding multiple code sequences.\\nSince no anti-dependency arcs are present, the input <italic>DDG's</italic> are said to be in <italic>normal form</italic>. Because anti-dependency arcs occur only when a resource must be reused, a <italic>DDG</italic> in normal form represents infinite resources. The output <italic>DDG</italic> is a merging of the two input <italic>DDG's</italic> such that data dependency arcs between the two <italic>DDG's</italic> are inserted and data anti-dependency arcs are added to sequentialize the use of common resources.\\nVegdahl [Veg82] was one of the first to recognize the importance of live track manipulation. A <italic>live track</italic> is an ordered pair: the first component is the microoperation node ( MO) in which a resource is born, and the second component is the set of nodes in which the resource dies.\",\"PeriodicalId\":378625,\"journal\":{\"name\":\"[1988] Proceedings of the 21st Annual Workshop on Microprogramming and Microarchitecture - MICRO '21\",\"volume\":\"25 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1988-01-03\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"4\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"[1988] Proceedings of the 21st Annual Workshop on Microprogramming and Microarchitecture - MICRO '21\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/62504.62670\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"[1988] Proceedings of the 21st Annual Workshop on Microprogramming and Microarchitecture - MICRO '21","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/62504.62670","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 4
摘要
犹他州立大学(Utah State University)改进的Sunburst编译器采用了一种强大的机制来管理数据依赖图(DDG’s)中的数据反依赖:DDG Bracer。术语“支撑”是指将两个或多个部件紧固在一起。支撑有两个主要目标:1)语义正确性,2)创建最佳DDG。支撑提供了必要的代码片段连接,由分而治之的代码生成算法产生,同时产生多个代码序列。由于不存在反依赖弧线,所以我们称输入DDG为标准形式。因为反依赖弧线只在资源必须被重用时发生,所以标准形式的DDG表示无限的资源。输出DDG是两个输入DDG的合并,插入两个DDG之间的数据依赖弧线,并添加数据反依赖弧线,从而对公共资源的使用进行顺序化。Vegdahl [Veg82]是第一个认识到现场轨道操作的重要性。活动轨道是一个有序对:第一个组件是资源诞生的微操作节点(MO),第二个组件是资源死亡的节点集。
The Sunburst compiler refined at Utah State University employs a powerful mechanism for management of data anti-dependencies in data dependency graphs, DDG's: the DDG Bracer. The term bracing1 is used to mean the fastening of two or more parts together. There are two major goals in bracing: 1) semantic correctness, and 2) creation of an optimal DDG. Bracing provides necessary joining of code fragments, produced by a divide and conquer code generation algorithm, while yielding multiple code sequences.
Since no anti-dependency arcs are present, the input DDG's are said to be in normal form. Because anti-dependency arcs occur only when a resource must be reused, a DDG in normal form represents infinite resources. The output DDG is a merging of the two input DDG's such that data dependency arcs between the two DDG's are inserted and data anti-dependency arcs are added to sequentialize the use of common resources.
Vegdahl [Veg82] was one of the first to recognize the importance of live track manipulation. A live track is an ordered pair: the first component is the microoperation node ( MO) in which a resource is born, and the second component is the set of nodes in which the resource dies.