October 28, 2023
CHESS 目标处理器特征支持范围
- Memory structure: load-store architecture
- data path op 可以从 addressable register 获取操作数或者存储结果
- mem 和 teg 之间需要独立的 mov op
- Register structure: homogeneous/heterogeneous
- homogeneous: 都是 general-purpose reg
- heterogeneous: 可以有 special-purpose reg 和配套 op
- Code type: microcoded
- 每个指令在一个 cycle 内执行
- (截止原文发布)正在拓展到 macrocoded
- Instruction format: orthogonal/encoded
- orthogonal: 有几个独立的、固定的控制域
- encoded: 指令位作为控制域的解释依赖于指定格式位的值
DSP 编译器的挑战
- (截止原文发布)传统的 RA 技术都是为 homogeneous reg structure 设计的
- DSP 提供的并行性不能被很好地利用
- 原文没看懂,可能是说只在后端考虑不够:The parallelism offered by a DSP processor (between arithmetic operations, data moves, and address computations) can only be exploited in the final compaction pass in a traditional compiler. However, at that stage a large number of constraints have to be taken into account, resulting from the code selection and register allocation techniques, which assume a vertical machine model.
CHESS 的关键特性
- Retargetability: 使用从 ADL (nML) 自动生成的 ISG (Instruction Set Graph) 模型描述目标处理器行为
- Code quality: 指令选择和 RA 使用 ISG 携带的 structural information (eg. what?),还提到了 global opt 和不同优化间的 phase coupling,但没有说明为什么后面这部分对传统编译器是有差异化竞争力的
Design Flow
- DFL: 描述应用行为 (chess header?)
- nML: 描述目标处理器行为
- Codegen: 产生 machine code 和 statistical feedback
- Optimising transformations and flow graph refinement
- 原文没看懂,应该是在说 legalize CDFG 使其可以被 ISG 描述的 op 表达:The initial specification is refined such that all nodes in the CDFG correspond to microoperations that can be implemented by the processor.
- 现在的编译器应该都把这一步放到 code selection 了
- Code selection
- RA
- Bit alignment: 决定不同 carrier (bus, interconnection, reg) 上数据的 bit-level mapping
- Scheduling
- Code assembly
- 有一个 intermediate scheduling view 来表达 Scheduling 之前的每个阶段引入的 resource constraint,从而后面的阶段虽然和前面的阶段分离实现,但是可以考虑到与前面的阶段的耦合
使用 ISG 建模处理器