目录

控制单元

控制单元为整个计算过程提供了指令控制,负责整个AI Core的运行。AI Core包含的控制单元如图1所示,每个模块的具体介绍请参考表1。

图1 控制单元

表1 控制单元及相关的指令队列介绍

控制单元/指令队列 描述
标量计算单元(Scalar) Scalar计算单元。
矩阵运算队列(Cube Queue) Cube指令队列。同一个队列里的指令顺序执行,不同队列之间可以并行执行。
向量运算队列(Vector Queue) Vector指令队列。同一个队列里的指令顺序执行,不同队列之间可以并行执行。
存储转换队列(MTE Queue) MTE指令队列。同一个队列里的指令顺序执行,不同队列之间可以并行执行。
事件同步模块(Event Sync) 用于控制不同队列指令(也叫做不同指令流水)之间的依赖和同步的模块。

多条指令从系统内存通过总线接口进入到AI Core的指令缓存模块(Instruction Cache)中,后续的指令执行过程,根据指令的类型,有两种可能:

同一个指令执行队列中的指令是按照进入队列的顺序进行执行的,不同指令执行队列之间可以并行执行,通过多个指令执行队列的并行执行可以提升整体执行效率。对于并行执行过程中可能出现的数据依赖,通过事件同步模块插入同步指令来控制流水线的同步,提供PipeBarrier、SetFlag/WaitFlag两种指令,保证队列内部以及队列之间按照逻辑关系执行。

AscendC API提供了用于同步控制的接口,开发者可以使用这类API来自行完成同步控制。推荐开发者基于编程模型中介绍的范式进行编程,该编程模型帮助开发者完成了同步控制,从而避免自行同步控制带来的编程复杂度,但理解同步的基本原理,会便于更好地设计并行计算程序。