开发者
资源

简介

Mutex用于核内异步流水指令之间的同步处理,其功能类似于传统CPU中的锁机制。通过锁定指定流水再释放流水来完成流水间的同步依赖。每个锁有固定的一个MutexID,该ID可通过用户自定义(范围为0-27)或者通过AllocMutexID/ReleaseMutexID进行申请释放。当用户进行自定义配置时,接口性能达到最优,但此时无法与TQue等接口配合使用,若通过AllocMutexID/ReleaseMutexID申请释放,则可与TQue等框架接口混合使用。

  • Lock:根据MutexID获取Mutex,并阻塞当前流水指令队列,直到对应的MutexID被Unlock。
  • Unlock:直到前置当前流水指令退出后,根据MutexID释放对应Mutex。

原型定义

1
2
3
4
5
6
7
using MutexID = uint8_t;
class Mutex {
template <pipe_t pipe>
static __aicore__ inline void Lock(MutexID id);
template <pipe_t pipe>
static __aicore__ inline void Unlock(MutexID id);
};