跳到主要内容

从心智模型进入精确 owner

架构

先建立 Scalar、Block/bundle、Tile、状态与内存之间的阅读关系,再进入对应 ASL/NDF owner。这里不创建第二套语义。

发布v0.58.5.0

第一步

架构心智模型

用途与范围

PTO 在这里被定义为一种 64 位架构:PTO_XLEN 为 64,当前架构标识的版本为 0。

这个入口刻意保持精简。它建立顶层所有权、状态闭包、完成与事件、Tile 容量以及发布验证契约,同时把具体指令行为留给可达的 ASL 所有者。

概念与可见状态

架构可见状态恰好由下面列出的具名状态所有者组成一个封闭集合。

  • 标量与控制状态包括 PTO-STATE-ARCH-GPR、PTO-STATE-ARCH-TEMPORARY-QUEUES、PTO-STATE-ARCH-PROGRAM-CONTROL 和 PTO-STATE-ARCH-FAULT。
  • 系统状态包括 PTO-STATE-ARCH-MEMORY、PTO-STATE-ARCH-MAINTENANCE、PTO-STATE-ARCH-SYSTEM-REGISTERS、PTO-STATE-ARCH-EXTENDED-SYSTEM-REGISTERS、PTO-STATE-ARCH-TRAP-CONTEXT 和 PTO-STATE-ARCH-GQM。
  • Tile 与指令束执行在这个封闭集合中加入 PTO-STATE-TILE-LOCAL、PTO-STATE-TILE-SHARED 和 PTO-STATE-BLOCK-CONTROL。

规则与交互

当前架构语意由指令助记符 ASL 或架构 ASL 拥有。目录和 Markdown 只是确定性的投影或证据,并不是替代性的语意所有者。

被接受的指令完成行为和架构可见内存事件,由可达的分派、完成和内存事件 ASL 所有者决定。

封闭状态集合中的每个成员,只能通过相应状态单元所拥有且已被接受的 ASL 状态转换发生变化。

  1. 01编程与执行模型PTO-ARCH-DISPATCH-TOP-LEVEL
  2. 02架构状态PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT
  3. 03寄存器与 Tile 存储PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGY
  4. 04内存模型PTO-ARCH-MEMORY-MODEL-ORDERING
  5. 05类型与 shape 模型PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES
  6. 06Fault、exception 与 diagnosticPTO-ARCH-MEMORY-MODEL-FAULT-PRECISION
  7. 07版本与兼容性PTO-ARCH-OVERVIEW-ARCHITECTURE

阅读关系

主题与规范所有者

架构主题到当前 owner 的 source map
主题主要 owner交叉链接源状态
编程与执行模型PTO-ARCH-DISPATCH-TOP-LEVEL4显示 owner 声明的边界
架构状态PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT4当前 owner 已定位
寄存器与 Tile 存储PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGY5当前 owner 已定位
内存模型PTO-ARCH-MEMORY-MODEL-ORDERING5当前 owner 已定位
类型与 shape 模型PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES5显示 owner 声明的边界
Fault、exception 与 diagnosticPTO-ARCH-MEMORY-MODEL-FAULT-PRECISION3显示 owner 声明的边界
版本与兼容性PTO-ARCH-OVERVIEW-ARCHITECTURE4显示 owner 声明的边界

典型阅读场景

编程与执行模型

示例性阅读示例

已识别的 48 位标量形式先无法匹配命令形式,随后进入 ExecuteScalarInstruction;最终状态再映射回 PTOInstructionExecutionStatus。

不匹配任何命令形式的随机 64 位载体不会落入标量解码,而会进入显式非法指令路径。

PTO-ARCH-DISPATCH-TOP-LEVEL

目的与范围

ExecutePTOInstruction 是单条已编码 PTO 指令的全覆盖入口,返回 PTOInstruction_Executed 或 PTOInstruction_Rejected。

它区分命令形式分派与标量分派,并为无法匹配的 64 位输入提供明确的拒绝路径。

概念与可见状态

  • 输入载体为 bits(64),length_bits 只能取 16、32、48 或 64。
  • 分派器首先调用 DecodeCommandForm;识别出的命令形式交给 ExecuteCommandInstruction。
  • 若没有命令形式匹配且长度不是 64,则将低 48 位连同原始 16/32/48 长度传给 ExecuteScalarInstruction。

规则与交互

命令执行状态直接映射为顶层的已执行或已拒绝状态。

命令解码器报告无匹配形式后,标量执行状态按相同方式映射。

无法匹配的 64 位输入会开始一次架构指令尝试,在 ReadTPC() 处设置 Fault_IllegalInstruction,并返回拒绝状态。

架构边界

该分派器不重复定义命令或标量的合法性与操作语义,而是委托给相应的当前归属单元。

显式非法指令路径只在命令解码失败且所选长度为 64 时生效。

相关归属单元

继续阅读这些 owner

典型阅读场景

架构状态

示例性队列演示

假设复位后 T 队列的所有相对索引都不可用。压入 0x11 后,T 索引 0 变为可用,值为 0x11;再压入 0x22 后,索引 0 保存 0x22,索引 1 保存较早的 0x11,并且两项都可用。

随后把 0x33 压入 U 队列,只会改变 U 索引 0。上一步中的 T 值仍留在各自的 T 相对位置。

PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT

用途与范围

执行上下文是 PTO 执行期间主要架构可见标量、控制、故障、内存、维护、扩展系统寄存器和陷阱上下文存储的中央所有者。

一个 Core 有四组私有标量寄存器文件。指令携带一个绝对 GPR 选择器,但每个 PE 都在自己的寄存器文件中解析这个选择器。

概念与状态族

  • PTO-STATE-ARCH-GPR 拥有 PE 私有寄存器文件;PTO-STATE-ARCH-TEMPORARY-QUEUES 拥有 T、U 值队列及其逐项有效位。
  • PTO-STATE-ARCH-PROGRAM-CONTROL 拥有 PC、BPC、指令束活动状态、返回值、提交值和谓词寄存器;PTO-STATE-ARCH-FAULT 拥有最近一次故障及其地址。
  • PTO-STATE-ARCH-MEMORY 拥有建模的字节、保留状态、屏障选择器、捕获的内存事件和当前内存主体。
  • 维护纪元、扩展系统寄存器、按 ACR 索引的陷阱元数据、保存的陷阱上下文和当前 ACR,分别属于本单元中显式声明的状态族。

队列规则与交互

ReadTemporaryQueue 在 use_t_queue 为真时选择 T 队列,否则选择 U 队列,并返回所请求相对索引处的值。

TemporaryQueueSourceAvailable 对有效位快照采用相同的 T 或 U 选择,并返回所请求相对索引处的有效位。压入操作移动某个值时,会把对应的有效位与该值一起移动。

PushTemporaryQueue 把新值插入索引 0,将该项标记为有效,并把所选队列索引 0 至 2 的值和有效位一起移到索引 1 至 3。

边界

T 和 U 是相互独立的队列:向其中一个队列压入数据,不会修改另一个队列的值或有效位快照。

一次压入会保留所选队列中最新的四项。当索引 0 至 2 上移时,之前的索引 3 项会被替换。

本单元声明上述架构存储,但不单独定义这些存储上的每一种状态转换。内存排序、复位、系统寄存器行为和陷阱恢复仍由各自专门的 ASL 所有者定义。

相关所有者

继续阅读这些 owner

典型阅读场景

寄存器与 Tile 存储

示例性索引示例

当读者从语义 PE2 出发时,应先应用桥接再索引掩码:3 - 2 得到掩码位 1。直接把 2 当作位索引会选中错误的语义 PE。

PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGY

用途与范围

本单元汇集 PTO 编程模型使用的固定命名空间大小,并定义语义 PE 标识与四位 PE 掩码之间的表示桥接规则。

需要核对数量或从标识换算掩码索引时,应查看本页。本单元不定义指令行为或内存排序。

命名空间与标识

标量命名空间有 32 个寄存器编码,其中包括 24 个绝对 GPR,以及两个深度为 4 的临时队列。本单元还固定了 8 个宽度为 32 的谓词寄存器、16 个 ACR、64 个 Tile 寄存器和 64 个 Shared Tile 寄存器。

语义 PE 标识是从 0 到 3 的整数,通常读作 PE0 到 PE3。

标识到掩码的规则

PTOPEMaskBitOfPEIdentity 用 3 减去语义 PE 标识,得到对应的掩码索引。

之所以需要这个桥接,是因为 PE0 位于四位架构掩码的最高位:PE0 映射到位 3,PE1 映射到位 2,PE2 映射到位 1,PE3 映射到位 0。

模型边界

PTO_MODEL_MEMORY_AGENTS 和 PTO_MODEL_MEMORY_EVENTS 把可执行模型分别定为 4 个代理和 16 个事件。其 PTO_MODEL_ 前缀表明这些是模型边界;本页不会把这些值泛化成额外的实现要求。

相关所有者

继续阅读这些 owner

典型阅读场景

内存模型

示例性分析示例

对于存储缓冲(store-buffering)候选执行,记录每个内存主体的写和后续读,把每个读指向它观察到的初始写,然后运行有效性与无环性查询。在没有更强边闭合成环时,可放宽的“写后读”组合可以使候选执行仍被允许。

如果在每组写与读之间插入匹配的屏障,MemoryFenceOrders 会贡献保留程序顺序边。每个读取初始写的读还带有一条读后边;MemoryFromReadBefore 根据该读的 read_from 来源以及同一位置上后续的一致性后继写推导这条边。这些边共同形成环,因此 MemoryExecutionAllowedTSO 会拒绝该观察结果。

PTO-ARCH-MEMORY-MODEL-ORDERING

用途与范围

本单元决定一个已捕获的候选内存执行是否被 PTO-TSO 允许。它验证事件集合、构建必需的排序关系,并拒绝必需关系中存在环的任何候选执行。

最终查询 MemoryExecutionAllowedTSO 同时要求候选执行有效,并要求同一位置的执行关系和外部可见的保序关系都无环。

事件关系

  • 一致性关系(coherence)按递增的 coherence_rank 排序同一位置上的写;读自关系(reads-from)把一次写连接到 read_from 字段指向该写的读。
  • 外部读自关系(external reads-from)只保留两类读:其来源写是初始写,或者来源写与该读属于不同的内存主体;读后关系(from-read)把一次读连接到它所观察写之后的另一个一致性后继写。
  • 同一内存主体在一个位置上的程序顺序,以及跨位置的保留程序顺序,构成两个无环检查所使用的程序顺序视图。
  • 只有当屏障位于同一内存主体的两个事件之间,并且两个事件类别分别匹配其前驱掩码和后继掩码时,该屏障才会贡献一条边。

候选执行规则

每个被访问的位置恰好有一个初始写事件,并且每个初始写的 coherence rank 都是 0。

同一位置上的每个后续写都具有唯一的非零 coherence rank,并且在前一 rank 上存在直接前驱。

每个读都指向一个范围内、同位置的写,并携带该来源写入的值。成功的原子写在一致性顺序中紧接其读取来源。

PTO-TSO 保留“读到后续内存操作”和“内存操作到后续写”的程序顺序。写后读取另一个位置是可放宽的组合,除非原子事件、acquire/release 顺序或匹配的屏障恢复这条边。

边界与保守拒绝情形

当不同大小或部分重叠的访问,其范围相交却并未描述同一位置时,候选执行会被拒绝。因此这个所有者不会为此类候选执行静默补充字节级一致性规则。

原子事件不会为自身的写入侧创建读后边;读后关系只考虑另一个一致性后继写。

空事件集合不是有效的候选执行,尽管无环性辅助函数本身会把空关系视为无环。

相关所有者

  • 原子性是本单元声明的依赖项,并定义排序所依赖的事件属性。
  • 内存事件定义事件的构造与捕获。
  • 执行上下文拥有已捕获的事件数组、事件计数、屏障选择器和当前内存主体。

继续阅读这些 owner

典型阅读场景

类型与 shape 模型

示例性阅读示例

编码 2 通过验证并映射到 TileDataType_TF32;编码 31 不映射到任何数据类型,即使独立的 DTYPE_NONE 哨兵值使用同一比特模式。

数据类型解码完成后,可查阅 TileNumericFormatDescriptor 获取格式元数据,再查阅使用该类型的指令以确认操作支持范围。

PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES

目的与范围

本单元拥有 Tile 操作手、公开的五位数据类型命名空间、Tile 数据布局与存储布局枚举、填充值以及位置意图。

它构成已编码 DataType 字段与数值/Tile 执行归属单元所使用类型化值之间的边界。

概念与可见状态

  • TileHand 命名 T、U、M 和 N;TileDataType 包含 15 个浮点/缩放成员、五个有符号整数成员和五个无符号整数成员。
  • TileDataTypeEncoding 的类型为 bits(5)。编码 0..14、16..20 和 24..28 已分配;15、21..23 和 29..31 保留。
  • 本单元还分别定义面向转换的 TileDataLayout、物理 TileLayout、TilePadValue 和 TileLocation 命名空间。

规则与交互

TileDataTypeEncodingValid 只接受三个已分配编码范围;TileDataTypeFromEncoding 要求先确认编码有效再进行映射。

TileDataTypeToEncoding 提供反向映射。编码 0 表示 TileDataType_FP64,不表示缺省、继承或不存在。

DTYPE_NONE 使用编码 31,但只作为字段级哨兵值;它有意不属于 TileDataType,也没有宽度、格式或算术语义。

架构边界

保留的数据类型编码会在产生架构效果之前被拒绝,并留待未来扩展。

TileLayout_ImplementationDefined 只供非架构模型夹具使用;没有已分配的 B.DATR 布局编码映射到它。

相关归属单元

继续阅读这些 owner

典型阅读场景

Fault、exception 与 diagnostic

示例性阅读示例

本示例块只用于帮助阅读:先应用上文规则,再到规范 ASL 所有者中确认结果。它不会增加任何架构契约。

PTO-ARCH-MEMORY-MODEL-FAULT-PRECISION

用途与范围

本单元集中处理故障、服务请求、中断入口以及陷阱状态打包。对于同步 SetFaultWithCause,只有故障代码不是 Fault_None 时才会保存上下文并重定向到目标 AccessControlRing。

陷阱入口状态

  • SetFaultWithCause 对每个输入故障代码记录故障代码、地址、原因和陷阱状态。
  • 当故障代码不是 Fault_None 时,它保存上下文、把目标 AccessControlRing 设为当前层级并重定向 TPC。对于 Fault_None,它保留源 ACR 层级,既不保存上下文也不重定向。
  • RaiseServiceRequest 检查权限,保存位于源 TPC 之后四字节的恢复 TPC,再进入服务目标。
  • RaiseInterrupt 先标记中断待处理状态,并且只在该中断已启用时进入。

状态转换规则

  • 同步故障入口把异步位设为假,并为非零故障设置陷阱参数有效位。
  • 中断入口把异步位设为真,记录陷阱编号 44,并把 InterruptID 放入参数 0。
  • ClearFault 清除当前 ACR 层级的故障报告,但不会重建较早上下文。
  • PackTrapStatus 与 UnpackTrapStatus 映射异步位、参数有效位、24 位原因字段和 6 位编号字段。

提交边界

Fault_BundlePostCommit 被表示为成功提交边界陷阱:保存上下文时后继位置已经选定。被拒绝的服务请求则会引发 Fault_IllegalInstruction 并返回假。

相关所有者

  • PTO-ARCH-STATE-TRAP-CONTEXT 拥有保存上下文的表示。
  • 陷阱上下文恢复单元定义可恢复保存上下文对应的恢复路径。

继续阅读这些 owner

典型阅读场景

版本与兼容性

示例性阅读示例

面对状态变化问题时,先在上面的封闭列表中找到状态 ID,再沿该 ID 定位其 ASL 所有者以及写入该状态的状态转换。使用生成页面阅读所有者,并且只用 AVS 确认建模的状态转换已经被执行。

面对发布问题时,应把所有结果与同一个不可变提交对比。来自其他提交的通过结果不能证明 PTO-RELEASE-VERIFICATION 所描述的候选版本。

PTO-ARCH-OVERVIEW-ARCHITECTURE

用途与范围

PTO 在这里被定义为一种 64 位架构:PTO_XLEN 为 64,当前架构标识的版本为 0。

这个入口刻意保持精简。它建立顶层所有权、状态闭包、完成与事件、Tile 容量以及发布验证契约,同时把具体指令行为留给可达的 ASL 所有者。

概念与可见状态

架构可见状态恰好由下面列出的具名状态所有者组成一个封闭集合。

  • 标量与控制状态包括 PTO-STATE-ARCH-GPR、PTO-STATE-ARCH-TEMPORARY-QUEUES、PTO-STATE-ARCH-PROGRAM-CONTROL 和 PTO-STATE-ARCH-FAULT。
  • 系统状态包括 PTO-STATE-ARCH-MEMORY、PTO-STATE-ARCH-MAINTENANCE、PTO-STATE-ARCH-SYSTEM-REGISTERS、PTO-STATE-ARCH-EXTENDED-SYSTEM-REGISTERS、PTO-STATE-ARCH-TRAP-CONTEXT 和 PTO-STATE-ARCH-GQM。
  • Tile 与指令束执行在这个封闭集合中加入 PTO-STATE-TILE-LOCAL、PTO-STATE-TILE-SHARED 和 PTO-STATE-BLOCK-CONTROL。

规则与交互

当前架构语意由指令助记符 ASL 或架构 ASL 拥有。目录和 Markdown 只是确定性的投影或证据,并不是替代性的语意所有者。

被接受的指令完成行为和架构可见内存事件,由可达的分派、完成和内存事件 ASL 所有者决定。

封闭状态集合中的每个成员,只能通过相应状态单元所拥有且已被接受的 ASL 状态转换发生变化。

架构边界

Local 与 Shared Tile 分配使用彼此独立的容量池。单个 B.IOT Local 对象的 SizeCode 只允许 128 B..64 KiB;同一 PE 的多个 Local 对象可以共同消耗该 PE 的 256 KiB Local 池。B.IOS 表示来自另一个 256 KiB 池、覆盖整个 Core 的一项 Shared 分配。

只有当候选版本对应的确切提交通过固定版本的 ASL 模型、全部独立 AVS 结果、覆盖率、投影和发布证据检查时,该候选版本才有效。

相关所有者

继续阅读这些 owner

显示 commit、路径、hash 与全部 owner
发布版本
0.58.5.0
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812