mlir 编译器学习笔记之四 -- 调度

1、指令的活跃区间 LiveRange startTime, endTime

startTime: 节点开始执行的时间(指令被发射到功能单元)

endTime: 节点结果就绪的时间(指令执行完成,结果可用)

前驱指令P: R1 = R2 + R3 // LiveRange: 10, 12

当前指令C: R4 = R1 * 2 // 什么时候可以开始?==> R1 就绪,即endTime

2、普通调度 (严格顺序)& 硬件循环(允许重叠)的原因

复制代码
T1 = max(preStart + hardware_switch_overhead,preEnd + loop_iteration_period - latency)

普通调度OOO:可以提前发射,但会在流水线中等待

硬件循环:可以更早开始执行,因为有数据转发 (专有硬件,不竞争通用资源)

3、资源占用:级联模式时需要多个功能单元

相关推荐
彧azz4 小时前
算法设计与分析:贪心与动态规划
数据结构·学习·算法·贪心算法·动态规划
一条小小yu6 小时前
基于数据库唯一索引 + 过期时间的分布式锁
学习
传奇开心果编程6 小时前
【ArkUI 练中学】第15课:UI 界面设计与实战
学习·ui·华为·harmonyos
zjxtxdy6 小时前
SPI通信协议
笔记·单片机
传奇开心果编程8 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
扶风ff8 小时前
练题簿小程序:家庭在线练题,课后复习更简单
学习·小程序
传奇开心果编程8 小时前
【Flutter入门练中学】第2课:布局系统
学习·flutter·ui
彧azz8 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
一尘之中9 小时前
指挥控制中心与指控系统:概念、应用、厂商与DDS技术全景
学习·架构·ai写作
aramae9 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他