控制单元

控制单元为整个计算过程提供了指令控制,负责整个AI Core的运行,指令的分类处理机制如下图所示。

图1 控制单元指令分类处理机制(以分离架构为例)

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

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

Ascend C提供同步控制API,开发者可以使用这类API来自行完成同步控制。需要注意的是,通常情况下,开发者基于编程模型中介绍的编程模型和范式进行编程时不需要关注同步,编程模型帮助开发者完成了同步控制;使用编程模型和范式是我们推荐的编程方式,自行同步控制可能会带来一定的编程复杂度。

但是我们仍然希望开发者可以理解同步的基本原理,便于后续更好的理解设计并行计算程序;同时少数情况需要开发者手动插入同步,您可以通过什么时候需要开发者手动插入同步来了解具体内容。