用途与范围
PTO 在这里被定义为一种 64 位架构:PTO_XLEN 为 64,当前架构标识的版本为 0。
这个入口刻意保持精简。它建立顶层所有权、状态闭包、完成与事件、Tile 容量以及发布验证契约,同时把具体指令行为留给可达的 ASL 所有者。
从心智模型进入精确 owner
先建立 Scalar、Block/bundle、Tile、状态与内存之间的阅读关系,再进入对应 ASL/NDF owner。这里不创建第二套语义。
第一步
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。PTO-STATE-TILE-LOCAL、PTO-STATE-TILE-SHARED 和 PTO-STATE-BLOCK-CONTROL。当前架构语意由指令助记符 ASL 或架构 ASL 拥有。目录和 Markdown 只是确定性的投影或证据,并不是替代性的语意所有者。
被接受的指令完成行为和架构可见内存事件,由可达的分派、完成和内存事件 ASL 所有者决定。
封闭状态集合中的每个成员,只能通过相应状态单元所拥有且已被接受的 ASL 状态转换发生变化。
PTO-ARCH-DISPATCH-TOP-LEVELPTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXTPTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGYPTO-ARCH-MEMORY-MODEL-ORDERINGPTO-ARCH-DATA-TYPES-TILE-DATA-TYPESPTO-ARCH-MEMORY-MODEL-FAULT-PRECISIONPTO-ARCH-OVERVIEW-ARCHITECTURE阅读关系
| 主题 | 主要 owner | 交叉链接 | 源状态 |
|---|---|---|---|
| 编程与执行模型 | PTO-ARCH-DISPATCH-TOP-LEVEL | 4 | 显示 owner 声明的边界 |
| 架构状态 | PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT | 4 | 当前 owner 已定位 |
| 寄存器与 Tile 存储 | PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGY | 5 | 当前 owner 已定位 |
| 内存模型 | PTO-ARCH-MEMORY-MODEL-ORDERING | 5 | 当前 owner 已定位 |
| 类型与 shape 模型 | PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES | 5 | 显示 owner 声明的边界 |
| Fault、exception 与 diagnostic | PTO-ARCH-MEMORY-MODEL-FAULT-PRECISION | 3 | 显示 owner 声明的边界 |
| 版本与兼容性 | PTO-ARCH-OVERVIEW-ARCHITECTURE | 4 | 显示 owner 声明的边界 |
典型阅读场景
已识别的 48 位标量形式先无法匹配命令形式,随后进入 ExecuteScalarInstruction;最终状态再映射回 PTOInstructionExecutionStatus。
不匹配任何命令形式的随机 64 位载体不会落入标量解码,而会进入显式非法指令路径。
PTO-ARCH-DISPATCH-TOP-LEVELExecutePTOInstruction 是单条已编码 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 时生效。
典型阅读场景
假设复位后 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 拥有建模的字节、保留状态、屏障选择器、捕获的内存事件和当前内存主体。ReadTemporaryQueue 在 use_t_queue 为真时选择 T 队列,否则选择 U 队列,并返回所请求相对索引处的值。
TemporaryQueueSourceAvailable 对有效位快照采用相同的 T 或 U 选择,并返回所请求相对索引处的有效位。压入操作移动某个值时,会把对应的有效位与该值一起移动。
PushTemporaryQueue 把新值插入索引 0,将该项标记为有效,并把所选队列索引 0 至 2 的值和有效位一起移到索引 1 至 3。
T 和 U 是相互独立的队列:向其中一个队列压入数据,不会修改另一个队列的值或有效位快照。
一次压入会保留所选队列中最新的四项。当索引 0 至 2 上移时,之前的索引 3 项会被替换。
本单元声明上述架构存储,但不单独定义这些存储上的每一种状态转换。内存排序、复位、系统寄存器行为和陷阱恢复仍由各自专门的 ASL 所有者定义。
典型阅读场景
当读者从语义 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_ 前缀表明这些是模型边界;本页不会把这些值泛化成额外的实现要求。
典型阅读场景
对于存储缓冲(store-buffering)候选执行,记录每个内存主体的写和后续读,把每个读指向它观察到的初始写,然后运行有效性与无环性查询。在没有更强边闭合成环时,可放宽的“写后读”组合可以使候选执行仍被允许。
如果在每组写与读之间插入匹配的屏障,MemoryFenceOrders 会贡献保留程序顺序边。每个读取初始写的读还带有一条读后边;MemoryFromReadBefore 根据该读的 read_from 来源以及同一位置上后续的一致性后继写推导这条边。这些边共同形成环,因此 MemoryExecutionAllowedTSO 会拒绝该观察结果。
PTO-ARCH-MEMORY-MODEL-ORDERING本单元决定一个已捕获的候选内存执行是否被 PTO-TSO 允许。它验证事件集合、构建必需的排序关系,并拒绝必需关系中存在环的任何候选执行。
最终查询 MemoryExecutionAllowedTSO 同时要求候选执行有效,并要求同一位置的执行关系和外部可见的保序关系都无环。
coherence_rank 排序同一位置上的写;读自关系(reads-from)把一次写连接到 read_from 字段指向该写的读。每个被访问的位置恰好有一个初始写事件,并且每个初始写的 coherence rank 都是 0。
同一位置上的每个后续写都具有唯一的非零 coherence rank,并且在前一 rank 上存在直接前驱。
每个读都指向一个范围内、同位置的写,并携带该来源写入的值。成功的原子写在一致性顺序中紧接其读取来源。
PTO-TSO 保留“读到后续内存操作”和“内存操作到后续写”的程序顺序。写后读取另一个位置是可放宽的组合,除非原子事件、acquire/release 顺序或匹配的屏障恢复这条边。
当不同大小或部分重叠的访问,其范围相交却并未描述同一位置时,候选执行会被拒绝。因此这个所有者不会为此类候选执行静默补充字节级一致性规则。
原子事件不会为自身的写入侧创建读后边;读后关系只考虑另一个一致性后继写。
空事件集合不是有效的候选执行,尽管无环性辅助函数本身会把空关系视为无环。
典型阅读场景
编码 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 布局编码映射到它。
典型阅读场景
本示例块只用于帮助阅读:先应用上文规则,再到规范 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 拥有保存上下文的表示。典型阅读场景
面对状态变化问题时,先在上面的封闭列表中找到状态 ID,再沿该 ID 定位其 ASL 所有者以及写入该状态的状态转换。使用生成页面阅读所有者,并且只用 AVS 确认建模的状态转换已经被执行。
面对发布问题时,应把所有结果与同一个不可变提交对比。来自其他提交的通过结果不能证明 PTO-RELEASE-VERIFICATION 所描述的候选版本。
PTO-ARCH-OVERVIEW-ARCHITECTUREPTO 在这里被定义为一种 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。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 结果、覆盖率、投影和发布证据检查时,该候选版本才有效。
7dc8b7e5b121d2b2499a2273bebff29e2cd86812PTO-ARCH-OVERVIEW-ARCHITECTUREasl/arch/overview/architecture.aslsha256:31d8f914357d332bfdb9af50e831727c516861a8a4d5a128bf4a86b8600e24c8PTO-ARCH-DISPATCH-TOP-LEVELasl/arch/dispatch/top-level.aslsha256:302dfff367909f25401d9a994c9e59d48ee6555c70428e638e37f6f35a589e9dPTO-ARCH-OVERVIEW-INSTRUCTION-CLASSIFICATIONasl/arch/overview/instruction-classification.aslsha256:9306ccb6a080dbbe8069a998c8a88e7db48c1c45d0613407b59d2892405f0958PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGYasl/arch/programming-model/core-pe-topology.aslsha256:2c987f6f6573d5da50a569f821dbddcd93ea428f408f59d148ebc5fd3b866447PTO-BLOCK-BSTARTasl/block/lifecycle/BSTART.aslsha256:b4dcde54511161526282bc0a06ee434dbe6fb3beff5ce5f8426669a91125e451PTO-TILE-TLOADasl/tile/memory-and-data-movement/regular/TLOAD.aslsha256:4e6997ee955ecf4aa0915cb518d17f4856dcd2583fa10003cb55a9e493964f13PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXTasl/arch/programming-model/execution-context.aslsha256:705e7c8efbbafbb95a744adb5b2ee97153f7b6c2b1aa11604a97dc9d438f224aPTO-ARCH-STATE-DEFINEDNESSasl/arch/state/definedness.aslsha256:f68778534d67e736f701f8e24e03f27a018f3eabcec1421a6b33856030874ad1PTO-ARCH-STATE-PROGRAM-COUNTERasl/arch/state/program-counter.aslsha256:3b5f7bad14ca62af5d776ae551ddf32b4b9f43fe25d96ce0fd31a59b44e1e845PTO-ARCH-STATE-TRAP-CONTEXTasl/arch/state/trap-context.aslsha256:51f242c89ab71a83f322f15252fbd0dcdccbfd6a973c76e5d14aab7cb0b74ab2PTO-ARCH-GQMasl/arch/programming-model/general-queue-management.aslsha256:fbe8a1fa4b7b67271b461f5c5072891e1977c4a499653ea7fdd2b87a5a655493PTO-ARCH-PROGRAMMING-MODEL-SCALAR-REGISTERSasl/arch/programming-model/scalar-registers.aslsha256:76b63e6e3f5109fe6143d8c337b3d95738ecdadca6501693e2b744801d9fdc63PTO-ARCH-PROGRAMMING-MODEL-PREDICATE-REGISTERSasl/arch/programming-model/predicate-registers.aslsha256:10cfd70a5e5caf277c5abbb3976574946b01be2cbe0cd08ce141cf4bde716968PTO-ARCH-PROGRAMMING-MODEL-TILE-REGISTERSasl/arch/programming-model/tile-registers.aslsha256:59452d3b3b708dc43f6ec4f930b1c7153d6d5247a93119669527bd29b26ec99ePTO-ARCH-PROGRAMMING-MODEL-SHARED-TILE-REGISTERSasl/arch/programming-model/shared-tile-registers.aslsha256:b2802d0449740f79b0bf311ad5c70b1daed25eb232db303a0701d49704aa0e32PTO-ARCH-DATA-TYPES-SYSTEM-REGISTERSasl/arch/data-types/system-registers.aslsha256:c1f9c741dd9e4f1d18eba487fc0a536bf3b5911b5c02909808d959ea8476f6b7PTO-ARCH-MEMORY-MODEL-ORDERINGasl/arch/memory-model/ordering.aslsha256:1f157179434fe7c704a35b7b0d8a086d2ade9280c4f678b3586fc29142844898PTO-ARCH-MEMORY-MODEL-ADDRESS-SPACEasl/arch/memory-model/address-space.aslsha256:849dbcf439dc8dcd09d40056d80bc984bdcf0936c2da074db8fdf7abc22edfd0PTO-ARCH-MEMORY-MODEL-GLOBAL-MEMORY-ACCESSasl/arch/memory-model/global-memory-access.aslsha256:b52b8820dceab5f08c6784f0166c59a4c95e300c992f7b10f02a21b273723ac0PTO-ARCH-MEMORY-MODEL-MEMORY-EVENTSasl/arch/memory-model/memory-events.aslsha256:32b0cee879199679fb9f94e3b95a11e27c1a29d1e9677f45cdef83e2d43f895fPTO-ARCH-MEMORY-MODEL-ATOMICITYasl/arch/memory-model/atomicity.aslsha256:62f7e2c43e82c804a98665bf2410b8309d581d1ff401a7adcdb9b993e04ec5cbPTO-ARCH-MEMORY-MODEL-FAULT-PRECISIONasl/arch/memory-model/fault-precision.aslsha256:b6118998eef77d70e5aec9fffbf56c3ea02bf6d817b713e30b9dc543d68adf47PTO-ARCH-DATA-TYPES-TILE-DATA-TYPESasl/arch/data-types/tile-data-types.aslsha256:5e501f8c7040c336e0102e24b702ba7769a4547e97213a8c42566fc677e60086PTO-ARCH-DATA-TYPES-FORMAT-DESCRIPTORasl/arch/data-types/format-descriptor.aslsha256:28d06bf9eea7977f94fdb7139fa279f7758594423364e00b81bd41a3e671b542PTO-ARCH-STATE-TILE-DESCRIPTORasl/arch/state/tile-descriptor.aslsha256:52604c09f7171f5f530755929970b499296d3ce84a5ee337d7bc8c63eb8d7913PTO-ARCH-FEATURES-TILE-ALLOCATIONasl/arch/features/tile-allocation.aslsha256:5a314d80f3d85f8ef18c02cc8b9dc2ea7bb33eba00f23649a614e918f87ca631PTO-BLOCK-B-DIMasl/block/attributes/B.DIM.aslsha256:be7b6d35546379394673d5c6ab3acbf4b357f7d26c12e8e0e68a448674c85800PTO-ARCH-DATA-TYPES-FAULTasl/arch/data-types/fault.aslsha256:659ed9cbf6286d7011a9156b582b804e5f2e6fa1dd5bd5c3dac70056bd572b9dPTO-ARCH-PROFILE-TRAP-CONTEXT-RECOVERYasl/arch/profile/trap-context-recovery.aslsha256:6c87ee4d53ed316f6ad72768ac84f67bcdf19c3af52dd96f3eb97eddc07c1357PTO-ARCH-PROFILE-APPLICABILITYasl/arch/profile/applicability.aslsha256:b3734d16ed92c3e7f9d8a99047009c8b0996cbeb88a087296c12696d9965de41PTO-ARCH-PROFILE-REFERENCE-PROFILEasl/arch/profile/reference-profile.aslsha256:35985186c37e602be42577c20249bc42984855d210d834347182b222022e2800PTO-ARCH-PROFILE-EXTENSION-FIRST-USEasl/arch/profile/extension-first-use.aslsha256:ef0bbe915fc5fd01cc93cca2a176844dcbdcb6d48af9bf36404c0bfa897615f3