news 2026/9/19 8:05:46

PTO 虚拟 ISA 手册解析:Ascend CANN Tile 级指令集架构契约、执行模型与一致性体系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PTO 虚拟 ISA 手册解析:Ascend CANN Tile 级指令集架构契约、执行模型与一致性体系

PTO 虚拟 ISA 手册解析:Ascend CANN Tile 级指令集架构契约、执行模型与一致性体系

【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa

导读:PTO(Parallel Tile Operation)是 Ascend CANN 设计的一套面向 Tile 级运算的虚拟指令集架构(Virtual ISA, VISA)。本文以仓库稳定入口 docs/PTO-Virtual-ISA-Manual_zh.md 及其章节化手册(权威维护于 docs/mkdocs/src/manual/)为主体,系统讲解 PTO 的架构级契约:执行模型、状态与类型、Tile 与 GlobalTensor 数据模型、同步语义、指令族分类、Auto/Manual 编程模型、虚拟 ISA 与 AS 分层、字节码与工具链、内存顺序一致性以及后端画像与一致性等级。读完本文,你将掌握 PTO 虚拟 ISA 的完整契约骨架,理解前端 IR 流水线、后端代码生成与一致性测试各自需要满足的架构约束,并知道如何在仓库中逐条核对指令语义。

一、手册定位、受众与阅读路径

1.1 稳定入口与权威来源

PTO-Virtual-ISA-Manual_zh.md 是 PTO 虚拟指令集架构手册的稳定入口页,其章节化手册的权威来源维护在docs/mkdocs/src/manual/(共 11 个正文章节与 4 个附录,均有中英文版本,如01-overview_zh.md08-virtual-isa-and-ir_zh.md等)。

手册开篇(index_zh.md)就明确了边界:

  • 手册定义 PTO 虚拟 ISA 的架构级契约,规定前端、IR 流水线、后端与运行时在执行 PTO 程序时MUST 保持的行为
  • 逐条指令页面docs/isa/*_zh.md仍是单条指令语义的权威来源,手册则定义围绕这些语义的系统级契约

1.2 受众

手册面向四类工程师:

  • 实现 PTO 降层链路的编译器与 IR 工程师
  • 实现目标合法化与代码生成的后端工程师
  • 需要验证架构可见行为的内核开发者
  • 仿真器与一致性测试开发者

1.3 文档约定与规范术语

手册借鉴 PTX/Tile-IR 的结构化写法,章节在适用时采用统一节奏:范围 → 语法/形式 → 语义 → 约束 → 诊断 → 兼容。

规范性术语遵循 RFC 惯例:

术语含义
MUST/MUST NOT强制架构要求
SHOULD推荐要求,偏离时需要明确理由
MAY架构显式允许的可选行为

1.4 权威来源优先级

文档冲突时按以下顺序对齐:

  1. docs/isa/*_zh.md:逐条指令语义与约束;
  2. include/pto/common/pto_instr.hpp:公共 API 形态与重载契约;
  3. 本手册:分层模型、架构契约与一致性策略。

推荐阅读顺序为index_zh.md0111章 → 附录 A/B/C/D,对应 手册总览章节、虚拟 ISA 与 AS 契约、字节码与工具链契约、内存顺序与一致性、后端画像与一致性。

二、设计目标与架构特征

2.1 设计目标

PTO 虚拟 ISA 的设计目标(见 01-overview_zh.md)是:

  • 硬件代际演进中提供稳定架构契约
  • Tile 为中心定义语义,并显式定义有效区域行为;
  • 明确区分"架构定义"与"实现定义";
  • 在内建接口、IR 与后端代码生成之间建立可验证桥接

2.2 一等架构对象

与通用 GPU ISA 写法相比,PTO 将以下概念提升为一等架构对象:

  • Tile 为主计算单位:指令语义在 Tile 域上定义;
  • 有效区域优先Rv/Cv定义架构计算覆盖;
  • 位置-意图模型Mat/Left/Right/Acc/Bias/Scale等类型参与合法性约束;
  • 双编程模型:Auto 与 Manual 都是架构层公民;
  • 事件中心同步:顺序通过事件与 event synchronization 显式表达。

2.3 架构边界

架构层定义:有效区域内可观察的指令结果、必须满足的顺序与同步语义、对用户和工具链可见的合法性边界。

架构层不定义:微架构调度细节、片上布局的具体实现、后端特定优化策略。后端差异 MUST 以"实现定义约束"形式记录。

2.4 兼容性原则

  • SHOULD 优先采用增量演进而非破坏性变更;
  • 破坏性架构行为变更 MUST 包含显式版本策略与迁移说明
  • 实现定义行为 MUST 在手册、IR、后端文档中保持一致标注

一个实际例证:仓库在 docs/isa/README_zh.md 中列出了自 PTO ISA v9.2.0 起关闭兼容窗口的历史接口(如TADDCTSYNCTSUBVIEW等),并给出迁移建议(如TSYNC(events...)替换为普通 event 顺序表达,或调用WaitAllEvents(events...)TFUSEDMULADD改名TMADDTMULADDDST改名TMULA),正是这一兼容策略在仓库中的落地。

三、执行模型:三层抽象代理与顺序域

02-machine-model_zh.md 定义了虚拟 ISA 程序面向的抽象执行模型,描述架构可见的顺序与职责边界,不描述微架构内部实现。

3.1 三个概念执行代理

抽象 PTO 机器由三个概念代理构成:

  1. Host machine:准备负载、提交执行、管理全局资源;
  2. Device machine:在执行资源间调度 Tile 程序;
  3. Core machine:执行 Tile/标量指令和同步原语。

实现可在内部采用不同映射,但 MUST 保持架构可见行为一致。

3.2 程序粒度与派发调度

  • PTO 程序以Tile 粒度运行:程序是对 tile、scalar、memory、event 值进行操作的有序指令序列;
  • 执行单元 MAY 并发处理相互独立的 Tile 程序;
  • 可见顺序 MUST 遵循数据依赖显式同步语义;
  • 独立工作 MAY 乱序并行执行,有依赖的工作 MUST 满足要求的 happens-before 关系;
  • 后端/运行时 MAY 采用 SPMD、MPMD 或混合派发模型。

3.3 架构可见顺序域

顺序语义在三个域上定义:

  1. 程序顺序域:单一依赖链中,后续操作 MUST 观察到前序已提交效果;
  2. 事件/同步域:事件操作与 event synchronization MUST 建立架构定义的顺序点;
  3. 内存可见性域TLOAD/TSTORE的可见性遵循内存顺序约束(第 11 章)。

3.4 Auto 与 Manual 职责划分

  • Auto 模式:编译器/运行时 SHOULD 自动插入合法同步与放置策略,用户意图保留为架构可见语义,执行细节由工具链管理;
  • Manual 模式:程序员负责显式放置、顺序控制与流水线安全调度,工具链 MUST 保留显式编写的同步语义。

3.5 实现定义边界

调度启发策略、流水线占用与发射细节、内部缓冲与临时放置、后端支持子集的合法性约束,均属于实现定义且 MUST 在后端画像中说明,且MUST NOT 改变架构定义语义

四、状态与类型系统

03-state-and-types_zh.md 定义 PTO 虚拟 ISA 操作可见的架构状态模型与类型契约。

4.1 架构状态模型

架构层抽象以下概念状态:Tile 值及其元数据(含有效区域元数据)、标量值与立即数属性、全局内存视图与地址、同步/事件相关的可见顺序状态。后端内部临时状态不在本章范围内(除非影响架构可观察行为)。

4.2 类型类别

PTO 虚拟 ISA 的类型类别包括:

  • Tile 类值(!pto.tile<...>);
  • 内存/全局视图(!pto.memref<...>或等价类);
  • 标量整型/浮点/index 类;
  • 用于同步依赖的事件/token 类

每个指令族 MUST 定义每个操作数/结果位置可接受的类型类别。

4.3 Tile 合法性维度

Tile 合法性受以下维度约束:元素类型(dtype)、形状与有效区域兼容性、位置-意图角色(Mat/Left/Right/Acc/Bias/Scale等)、布局与对齐约束(后端支持子集)。虚拟 ISA 定义合法性接口,具体支持集合由后端画像定义。

4.4 有效区域语义

有效区域是架构一等语义:语义定义仅作用于声明的有效域索引;有效域之外的值在未明确说明时为未指定;多输入操作 MUST 定义域兼容规则。标准记号使用Rv(有效行)与Cv(有效列)表示。这与术语表中对"有效区域(valid region)"的定义一致:Tile 中在某个操作下具有语义定义的元素子集,常写作[Rv, Cv]

4.5 属性契约与诊断要求

指令属性(比较模式、舍入模式、变换模式等)MUST 定义类型与取值域约束、默认行为、对语义与合法性检查的影响以及无效取值的诊断要求。类型/状态验证诊断 SHOULD 包含:操作数位置、期望/实际类型类别、相关合法性维度(dtype/layout/location/shape)、面向 CI 稳定性的确定性错误标识。

五、Tile 与 GlobalTensor 数据模型

04-tiles-and-globaltensor_zh.md 定义 Tile 操作数与全局内存操作数之间的数据模型契约。

5.1 Tile 数据模型

Tile 是计算类指令的主要架构数据对象,其契约包含:元素类型与形状类别、有效区域元数据(RvCv)、指令合法性要求的位置-意图角色、后端合法性需要的布局/对齐属性。

5.2 GlobalTensor 数据模型

GlobalTensor(或等价内存视图)表示可寻址的全局内存数据,架构可见契约包括:与相关 Tile 操作兼容的元素类型、内存指令要求的地址与步长解释、顺序约束下的可见性行为。术语表补充:它是对全局内存(GM)的带类型视图,包含形状/步幅等元数据,通常用于TLOAD/TSTORE

5.3 GM ↔ Tile 搬运契约

TLOADTSTORE指令族是 GM 与 Tile 的主要桥接。一致性实现 MUST 保持:定义有效域内的元素映射语义、在 event synchronization 与内存模型约束下的顺序保证、量化/缩放与模式属性的已记录行为。同一家族还包括TPREFETCHTPREFETCH_ASYNCTSTORE_FP、索引内存操作MGATHER/MSCATTER(见 docs/isa/manifest.yaml 与 指令族矩阵附录)。

5.4 形状与域兼容性

对搬运和布局变换操作:源域与目标域 MUST 满足指令定义的兼容约束;域外行为 MUST 要么显式定义(如 pad/fill),要么声明为未指定;后端合法性检查 MUST 对不支持的 shape/layout 组合给出确定性拒绝

5.5 布局变换类操作

extract/insert/reshape/transpose 等操作是对 Tile 域的架构级变换,MUST 定义:索引空间映射、有效域映射、部分覆盖域行为、存在硬件差异时的实现定义约束。对应仓库中的TEXTRACTTINSERTTRESHAPETTRANSTFILLPAD*TMOV*TCONCATTINTERLEAVETDEINTERLEAVE等指令(见 PTO ISA 参考)。

5.6 诊断要求

搬运/布局诊断 SHOULD 报告:出错操作与操作数位置、不兼容的 shape/layout/location 维度、相关索引/偏移参数上下文、可复现 CI 的确定性错误文案。

六、同步与顺序语义

05-synchronization_zh.md 定义 PTO 虚拟 ISA 程序的架构可见同步与顺序语义。

6.1 同步原语与 event synchronization 契约

PTO 同步机制包括:基于事件的依赖链接、通过 event synchronization 建立的生产者/消费者顺序点、由架构语义抽象的后端低层同步原语。Auto 模式可使用工具链自动同步;所有模式下显式同步都保持架构合法。

event synchronization 契约要求一致性实现 MUST 保证:顺序点之前的操作结果按照内存模型对顺序点之后的消费者可见、优化与降层过程保持同步语义、不支持的同步形式以确定性诊断拒绝。

6.2 冒险类别

同步需求通常来自四类冒险:

  • RAW(读后写)依赖;
  • 资源复用时的WAR(写后读)交互;
  • WAW(写后写)顺序约束;
  • 跨流水线交接冒险(内存/向量/矩阵域)。

后端 MAY 在内部优化冒险处理,但 MUST 保持架构可观察顺序。

6.3 事件与依赖模型、同步职责

事件模型 MUST 提供确定性依赖关系,以支持生产者/消费者指令组间的流水线交接、Tile 与内存资源的安全复用、等价程序顺序与依赖描述下的可复现执行。Auto 模式中工具链 SHOULD 自动插入合法同步;Manual 模式中,当依赖无法自然保证时,程序员 MUST 提供显式同步;工具链 MUST NOT 删除必要的用户显式同步(除非证明存在等价顺序保持)。

6.4 源码级例证:SYNCALL

以 SYNCALL_zh.md 为例看同步原语的公共 API 形态(声明位于 include/pto/common/pto_instr.hpp):

// 硬件模式(所有 CoreType 通用) template <SyncCoreType CoreType = SyncCoreType::AIVOnly> PTO_INST void SYNCALL(); // 软件模式 — GM 共享原子计数器 template <SyncAllMode Mode, SyncCoreType CoreType = SyncCoreType::AIVOnly, typename GlobalData, std::enable_if_t<is_global_data_v<GlobalData>, int> = 0> PTO_INST void SYNCALL(GlobalData &gmWorkspace, int32_t usedCores = 0);
  • SyncCoreType选参与者集合:AIVOnly(默认)、AICOnlyMix(AIC+AIV);
  • SyncAllMode选实现路径:Hard(FFTS 硬件旗标,无 workspace 重载)、Soft(GM 共享原子计数器,带 workspace 重载);
  • gmWorkspaceGlobalTensor<int32_t, pto::Shape<>, pto::Stride<>>,只用首个 int32 作为共享到达计数器,分配一条 cache line 即可且首次使用前必须清零;
  • usedCores为 0 时自动推算参与核数;显式指定时可小于 launch 核数(未参与核不得调用SYNCALL)。

七、指令族体系与契约

06-instructions_zh.md 定义"指令族级"的规范契约,逐条指令规范语义仍以docs/isa/*_zh.md为准。

7.1 指令族分类

PTO 指令族分为八类:

  1. 同步与资源绑定;
  2. Tile-Tile 逐元素运算;
  3. Tile-标量与 Tile-立即数运算;
  4. 轴归约与扩展运算;
  5. 内存操作(GM <-> Tile与索引变体);
  6. 矩阵乘与 GEMV 运算;
  7. 数据搬运与布局变换;
  8. 不规则/复杂操作。

源同步清单由 docs/isa/manifest.yaml 维护(该文件为 YAML 兼容 JSON,每条指令记录instructioncategory、中英文 summary、diagram_templateoperands)。

7.2 指令族通用契约与有效区域优先

每个指令族 MUST 定义:操作数/结果类别与位置规则、语义作用域(有效区域处理)、必需约束(dtype/layout/location/shape)、同步与顺序影响、非法使用的诊断行为、实现定义边界。

有效区域优先规则:除非具体指令另有定义,语义仅在操作有效域内定义,域外结果为未指定,多输入操作 MUST 定义域组合规则。

7.3 各指令族摘要

  • 同步与资源绑定:event synchronization、TASSIGN及模式/配置类指令,MUST 保持架构顺序语义;
  • 逐元素与标量变体:算术、位运算、比较、选择、一元数学及标量融合形式,MUST 定义逐元素行为与模式相关约束;
  • 归约/扩展族:按行/按列归约及广播扩展,MUST 定义轴语义与域兼容关系;
  • 内存指令族:load/store/prefetch 与索引 gather/scatter,MUST 定义 Tile 域与内存域的映射关系;
  • 矩阵运算族TMATMUL*TGEMV*,契约 MUST 定义累加域、操作数角色合法性与精度模式交互;
  • 搬运/布局族:extract/insert/reshape/transpose/fillpad 等变换,MUST 定义索引映射与域保持规则;
  • 复杂/不规则族:sort/quant/partial/gather 变体等,MUST 显式标注实现定义部分。

7.4 单条指令文档契约与同步策略

逐条指令页面 SHOULD 按附录 B 指令契约模板组织:SyntaxOperandsSemanticsConstraintsDiagnosticsImplementation-defined behaviorCompatibility notes

指令族与指令索引 MUST 与以下来源保持同步:docs/isa/manifest.yaml、include/pto/common/pto_instr.hpp、docs/tools/下的索引/矩阵生成工具(如 gen_isa_indexes.py 从 manifest 生成 ISA 索引文档,gen_isa_svgs.py 生成指令示意图,check_isa_consistency.py 校验一致性)。

7.5 指令族矩阵规模

附录 D 指令族矩阵(由 manifest 自动生成)给出覆盖统计:同步 1 条、手动/资源绑定 6 条、逐元素(Tile-Tile)29 条、Tile-标量/Tile-立即数 19 条、轴归约/扩展 28 条、内存(GM ↔ Tile)7 条、矩阵乘 9 条、数据搬运/布局 15 条、复杂指令 20 条、Cross-core Communication 4 条,总计 138 条。头文件同步状态:pto_instr.hpp含 134 个唯一指令 API,manifest 含 138 条目;头文件有但 manifest 缺失:无;manifest 有但头文件缺失:TMATMUL_MX_HIF4TPREFETCH_ASYNCTQUANT_DNTQUANT_HIF4。附录用于分类与覆盖追踪,不替代逐条指令的规范化语义描述。

八、编程模型契约:Auto 与 Manual

07-programming_zh.md 定义两种模式下的架构安全编程契约,重点是正确性与可移植边界。

8.1 契约分工

Auto 模式:工具链 SHOULD 自动推导合法放置、顺序与调度;生成代码 MUST 保持虚拟 ISA 语义;在等价源码与选项下,用户可见行为 MUST 保持确定性。

Manual 模式:程序员 MAY 显式控制放置与同步;用户显式编写的依赖与顺序点 MUST 被保留;非法手工配置 MUST 以可执行诊断失败。

8.2 可移植安全编程规则

跨后端可移植的程序 SHOULD:保持在文档定义的指令族合法域内;避免依赖实现定义副作用;在数据流无法保证顺序时显式使用同步;将 dtype/layout/location 组合限制在后端交集画像内。

8.3 性能导向且可移植的模式

  • 显式且域安全的 tiling 与有效区域管理;
  • 通过事件/event synchronization 建立清晰的生产-消费边界;
  • 使用能力检查进行后端受控特化;
  • 对不支持组合提供确定性回退路径

8.4 反模式(SHOULD 避免)

将有效域外值当作有意义数据读取;依赖未文档化流水线时序行为;在无依赖定义时假设隐式顺序;未经画像门控直接编码后端特定假设。

8.5 调试与验证流程

建议五步流程:①结构正确性检查(类型、元数、属性)→ ②合法域检查(shape/layout/location 组合)→ ③同步检查(依赖完备性)→ ④后端一致性检查(画像约束)→ ⑤跨代表目标差分行为检查。当代码依赖实现定义行为时,假设 MUST 被文档化,后端画像约束 MUST 明确声明,可行时 SHOULD 提供回退行为。

九、虚拟 ISA 与 AS 分层契约

08-virtual-isa-and-ir_zh.md 定义虚拟 ISA 语义与 PTO AS/降层链路之间的契约。

9.1 三层契约模型

  1. 虚拟 ISA 层:架构可见语义;
  2. AS 层:用于验证与变换的结构化强类型表示;
  3. 后端降层层:目标相关合法化与代码生成。

后端特化 MUST 保持虚拟 ISA 可观察行为。

9.2 AS 对象模型与验证边界

一致性 PTO AS 模型 SHOULD 定义:模块与符号契约、函数/基本块结构及顺序、SSA 值拓扑、操作 schema(名称、操作数、结果、属性、副作用)、显式同步与内存副作用。

验证分两层:

  • 结构验证器(IR 层):MUST 验证操作 schema、元数、类型类别与必需属性,且 MUST 与目标无关;
  • 目标合法性验证器(后端层):MUST 验证选定后端画像下的 dtype/layout/location/shape 组合,对不支持组合输出确定性诊断。

9.3 降层不变量与源同步

降层 MUST 保持:有效区域语义、显式顺序依赖(event、event synchronization、内存顺序点)、架构定义域内的操作语义;MUST NOT 将实现定义行为静默改写为架构定义行为

AS 契约 MUST 与docs/isa/*_zh.md(语义意图)和include/pto/common/pto_instr.hpp(API 形态)同步。兼容策略:优先增量 AS 演进;破坏性变更 MUST 含版本与迁移说明;未知必需字段 MUST 验证失败;已弃用结构 SHOULD 至少在一个兼容窗口内可解析。

9.4 最小一致性场景

一致性验证 SHOULD 包含:结构验证器合法/非法样例测试、按后端画像划分的合法性通过/失败矩阵、IR 与字节码往返检查、与逐条指令语义对齐的差分检查。

十、字节码与工具链契约

09-bytecode-and-toolchain_zh.md 定义 PTO IR 与字节码形态之间的实际交换与验证契约。

10.1 表示层次与模块契约

PTO 表示层次:虚拟 ISA 语义 → PTO IR 结构化形态 → 字节码序列化交换形态,层间转换 MUST 保持架构可观察语义。

一致性 v1 字节码模块 MUST 保留:操作/基本块/函数顺序、SSA 定义-使用拓扑、操作数/结果类型信息、必需属性与模式元数据、符号与入口身份;若无法无损保留,序列化 MUST 确定性失败。

10.2 验证流水

建议流水:①前端生成 PTO IR → ②运行结构验证器 → ③IR 序列化为字节码 → ④字节码反序列化为 IR → ⑤再次运行结构验证器 → ⑥可选运行目标合法性验证器。CI SHOULD 覆盖前 1-5 步

10.3 诊断契约与最小错误类别

诊断 MUST:文本形态具备定位信息、对等价输入具备确定性、提供期望与实际约束差异。最小错误类别:解析错误、结构验证错误、字节码格式/兼容错误、目标合法性错误。

10.4 兼容策略与往返保证

演进策略 MUST 定义 schema 版本字段、向后兼容窗口、未知字段与未知操作处理规则。默认策略:未知必需字段 → 拒绝;未知可选字段 → 除非兼容模式显式允许,否则拒绝;未知操作 → 以确定性"未支持操作"诊断拒绝。

对支持特性,text -> IR -> bytecode -> IR -> textSHOULD 保持语义、验证相关结构与必需元数据(不要求文本逐字节一致)。

10.5 运行验收清单

每次发布 SHOULD 验证:解析器正反例套件、结构验证一致性套件、畸形字节码鲁棒性测试、往返回归语料、诊断文案稳定性快照。

十一、内存顺序与一致性

10-memory-ordering-and-consistency_zh.md 定义架构可见内存顺序与可见性保证。

11.1 内存对象与一致性基线

架构可见内存域包括:Tile 本地值、通过内存操作访问的全局内存视图、影响可见性边界的同步状态。后端私有缓存/缓冲属于实现定义,但 MUST 满足架构可见顺序结果。

基线模型为"依赖有序一致性":数据依赖与显式同步定义必须满足的可见顺序;相互独立操作在内部 MAY 重排;必需同步点 MUST 建立定义的可见性关系。

11.2 顺序保证与编程要求

一致性实现 MUST 保证:必需同步/顺序点之后,生产者写入对依赖消费者可见;显式依赖链中的内存操作保持链路顺序;event synchronization 与事件依赖定义的顺序在内存可见性上得到体现。

程序 SHOULD:在生产者/消费者边界使用显式同步;在无定义依赖时避免假设隐式全局顺序;避免依赖未指定域外值。在非工具自动同步场景下,Manual 模式程序员MUST 显式确保顺序。后端 SHOULD 提供诊断:非法上下文中的顺序假设缺失、不支持的内存顺序形式、后端画像特定限制;一致性测试 SHOULD 覆盖代表性依赖模式下的有序可见性场景。

十二、后端画像与一致性等级

11-backend-profiles-and-conformance_zh.md 定义后端能力子集的描述方式与一致性等级评估方法。

12.1 后端画像模型与能力门控

后端画像 MUST 记录:支持的指令族与操作形式、支持的 dtype/layout/location/shape 组合、同步与内存顺序限制、实现定义行为边界、对不支持特性的诊断策略。画像可对应具体目标(例如A2/A3/A5/CPU 仿真器)。

工具链 MUST 基于画像能力门控后端特化。当请求行为超出画像支持时:编译/合法化 MUST 确定性失败,或选择显式定义的回退路径。

12.2 一致性维度与等级

一致性评估维度:①语义一致性(指令行为)、②合法性一致性(契约验证)、③顺序一致性(同步与内存可见性)、④诊断一致性(确定性且可执行错误)。

建议等级:

等级名称内容
Level 0解析/形态仅结构工具链正确性
Level 1指令族合法性具备文档化指令族合法性与诊断
Level 2指令语义代表性样例验证逐条语义
Level 3跨层稳定性AS/字节码/后端转换后语义、顺序、诊断保持稳定

后端 SHOULD 公布最高已验证等级及已知缺口。

12.3 必需测试矩阵与变更管理

画像一致性套件 SHOULD 包含:按指令族划分的合法/非法组合测试、同步与内存顺序场景测试、精度/模式交互测试(含混合精度路径)、文本/AS/字节码往返工具链测试、诊断稳定性快照测试。

后端行为变更时:画像文档 MUST 在同一变更集中更新、MUST 说明一致性影响;对已发布等级的回归 MUST 视为发布阻断(除非有明确豁免和理由)。

十三、附录体系:术语、契约模板、诊断分类与矩阵

13.1 术语表(附录 A)

附录 A 术语表定义:Tile(片上二维操作数,含类型/形状/布局/有效区域元数据)、GlobalTensor(对 GM 的带类型视图)、有效区域[Rv, Cv])、位置 LocationVec/Mat/Left/Right/Acc等存储类别/意图)、Block/Sub-block(并行工作单元)、流水线 Pipeline(load/transform/compute/store 阶段重叠调度)、event synchronization(阶段类别间建立顺序关系的同步抽象)。

13.2 指令契约模板(附录 B)

附录 B 定义单条指令文档的标准章节顺序:# <INSTR>→ Scope → Syntax → Operands → Semantics → Constraints → Diagnostics → Implementation-defined behavior → Compatibility → Examples,并给出各章节的规范要求(如 Semantics MUST 定义有效域迭代模型与域外行为;Constraints MUST 区分架构层要求与后端画像限制)及可复制的模板正文。

13.3 诊断分类体系(附录 C)

附录 C 定义五类主诊断类别:

前缀用途
PARSE_*PTO-AS 文本错误(token、文法、字面量)
STRUCT_*IR 结构违规(元数、属性缺失、类型不兼容)
LEGAL_*后端/画像合法性失败(dtype/layout/location/shape、模式组合、指令变体)
ORDER_*同步/顺序错误(缺失依赖边、非法同步形式、顺序契约违反)
BCODE_*交换/序列化失败(版本、section 畸形、未知字段/操作码)

诊断质量契约:确定性错误类别、确定性主消息形态、可执行上下文(期望 vs 实际)、可用时提供源码定位。稳定性策略:错误类别标识在补丁版本内 MUST 稳定;消息文案在 CI 快照中 SHOULD 尽量稳定;实质变化 SHOULD 记入发布说明。示例格式:

LEGAL_UNSUPPORTED_TUPLE: tmatmul operand src1 has unsupported tuple expected: layout in {fractal_a, fractal_b}, dtype in {fp16, bf16} actual: layout=row_major, dtype=int8 context: backend_profile=A3, op_loc=line 42

13.4 指令族矩阵(附录 D)

见本文第七章,附录 D 由docs/isa/manifest.yaml自动生成,逐类列出指令、图示模板、操作数契约与语义页面(如SYNCALL对应docs/isa/SYNCALL_zh.mdTMATMUL*对应矩阵乘族、TALLOC/TPUSH/TPOP/TFREE对应 Cross-core Communication 族),用于分类与覆盖追踪。

十四、在仓库中继续深入

  • 手册入口与章节:docs/PTO-Virtual-ISA-Manual_zh.md 与 docs/mkdocs/src/manual/(11 章 + 附录 A-D,中英双语);
  • 逐条指令语义:docs/isa/README_zh.md 及docs/isa/*_zh.md各指令页(如 SYNCALL_zh.md、TLOAD_zh.md、TMATMUL_zh.md),并配合 docs/isa/manifest.yaml 使用;
  • 公共 API 形态:include/pto/common/pto_instr.hpp(指令内建接口声明与MAP_INSTR_IMPL*宏的 CPU 仿真 trace 机制,见__CPU_SIM分支)、include/pto/pto-inst.hpp(公共头);
  • 工具链与一致性工具:docs/tools/ 下的gen_isa_indexes.pygen_isa_svgs.pycheck_isa_consistency.pycheck_virtual_manual_consistency.pygen_virtual_manual_matrix.py
  • 测试佐证:tests/cpu/st/、tests/npu/(按 a2a3/a5/a6/kirin 等目标划分)、tests/costmodel/ 中的指令一致性测试,可作为手册各章契约(语义/合法性/顺序/诊断)在具体后端画像上的落地验证。

PTO 虚拟 ISA 的核心设计哲学在于:把"架构定义"与"实现定义"清晰切分,用有效区域、位置-意图角色、事件中心同步与分层验证把指令语义固化为可验证、可移植、可在硬件代际间稳定演进的契约。无论是编写 Auto/Manual 内核,还是实现降层、合法化、字节码与一致性测试,本手册都是绕不开的架构级规范。

【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 8:05:34

智能日志模式聚类实战:基于 LogPai Drain 算法的日志模版秒级抽取

智能日志模式聚类实战&#xff1a;基于 LogPai Drain 算法的日志模版秒级抽取在微服务集群与大型分布式系统的日常运维中&#xff0c;日志中心每天都会吞噬海量的非结构化文本数据&#xff08;如每日 500GB 到 2TB 的原始日志流&#xff09;。 当线上系统突发未知故障时&#x…

作者头像 李华
网站建设 2026/9/19 8:05:13

Linux中文环境与YOLOv11开发环境配置指南

1. Linux系统中文环境配置实战作为一名长期在Linux环境下工作的开发者&#xff0c;我深知中文支持对于国内用户的重要性。很多新手在配置YOLO等AI环境时&#xff0c;常常被满屏的英文报错信息困扰。下面我将分享两种主流Linux发行版的中文配置方法&#xff0c;这些命令都是我多…

作者头像 李华
网站建设 2026/9/19 8:04:12

水下机器人集群分布式控制与ROS仿真实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 8:04:01

国产MCU上LwIP移植与稳定性调优实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 8:03:03

基于Copula的气象-农业干旱联合概率与重现期计算(MATLAB实操)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华