【信息科学与工程学】计算机科学与自动化——第二十四篇 编译器 101 面向编译器开发设计01
编号 | 类型 | 领域 | 编译器产品 | 问题 | 问题的数学分析及编译方法及配置策略 | 算法/算子设计及算法/算子数学分析及数学表达式及方程式/多项式/矩阵/集合/离散数学/队列/数组/图/表/其他的表达式及参数的数值设计及数值范围设计 | 硬件资源需求 | 关联知识 |
|---|---|---|---|---|---|---|---|---|
1 | 性能优化 | 循环优化 | LLVM (Clang) | 嵌套循环中访存局部性差导致缓存缺失率高 | 通过循环分块(tiling)将大跨度访问转化为小块连续访问;数学模型:缓存容量C,块大小B需满足B ≤ C/2;编译方法:自动检测循环步长与依赖关系,插入分块变换pass;配置策略:设置分块因子为L1缓存行大小的倍数 | 分块因子T = floor(sqrt(CacheLineSize * Associativity / DataTypeSize)),取值范围[4,64];循环索引变换后新迭代空间为多维矩形网格,使用整数线性规划确定最优分块形状 | L1数据 |
