控制单元

控制单元为整个计算过程提供了指令控制,相当于AI Core的司令部,负责整个AI Core的运行,AI Core包含的控制单元如表1所示。

指令执行过程中,可以提前预取后续指令,并一次读入多条指令进入缓存,提升指令执行效率。多条指令从系统内存通过总线接口(BIU)进入到AI Core的指令缓存模块(I Cache)中等待后续硬件快速自动解码或运算。指令被解码后便会被导入标量队列中,实现地址解码与运算控制。

表1 控制单元介绍

控制单元

描述

系统控制模块(System Control)

外部的Task Scheduler控制和初始化AI Core的配置接口, 配置PC、Para_base、BlockID等信息,具体功能包括:Block执行控制、Block执行完之后中断和状态申报、执行错误状态申报等。

指令缓存模块(Instruction Cache)

AI Core内部的指令Cache, 具有指令预取功能。

标量指令处理队列(Scalar PSQ)

Scalar指令处理队列。

指令发射模块(Instruction Dispatch)

CUBE/Vector/MTE指令经过Scalar PSQ处理之后,地址、参数等要素都已经配置好,之后Instruction Dispatch单元根据指令的类型,将CUBE/Vector/MTE指令分别分发到对应的指令队列等待相应的执行单元调度执行。

矩阵运算队列(Cube Queue)

Cube指令队列。同一个队列里的指令顺序执行,不同队列之间可以并行执行。

向量运算队列(Vector Queue)

Vector指令队列。同一个队列里的指令顺序执行,不同队列之间可以并行执行。

存储转换队列(MTE Queue)

MTE指令队列。同一个队列里的指令顺序执行,不同队列之间可以并行执行。

事件同步模块(Event Sync)

用于控制不同队列指令(也叫做不同指令流水)之间的依赖和同步的模块。