用途与范围
执行上下文是 PTO 执行期间主要架构可见标量、控制、故障、内存、维护、扩展系统寄存器和陷阱上下文存储的中央所有者。
一个 Core 有四组私有标量寄存器文件。指令携带一个绝对 GPR 选择器,但每个 PE 都在自己的寄存器文件中解析这个选择器。
PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT下面直接显示完整的 ASL 所有者。
// PTO-UNIT: {"id":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","surface":"arch","classification":["programming-model","execution-context"],"depends_on":["PTO-ARCH-SYSTEM-REGISTERS-ADDRESSING"]}// PTO-STATE: {"id":"PTO-STATE-ARCH-GPR","classification":["architecture","scalar","gpr"],"scope":"pe","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_PEGPRs"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-TEMPORARY-QUEUES","classification":["architecture","temporary-queues"],"scope":"bundle","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_TQueue","_TQueueValid","_UQueue","_UQueueValid"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-PROGRAM-CONTROL","classification":["architecture","program-control"],"scope":"core","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_PC","_BPC","_BundleActive","_BundleBodyActive","_ReturnAddress","_CommitArgument","_PredicateRegisters"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-FAULT","classification":["architecture","fault"],"scope":"core","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_LastFault","_FaultAddress"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-MEMORY","classification":["architecture","memory"],"scope":"system","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_Memory","_ReservationValid","_ReservationAddress","_ReservationSize","_LastFencePredecessor","_LastFenceSuccessor","_MemoryEvents","_MemoryEventCount","_MemoryEventCaptureEnabled","_CurrentMemoryAgent"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-MAINTENANCE","classification":["architecture","maintenance"],"scope":"system","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_DataCacheEpoch","_InstructionCacheEpoch","_BundleCacheEpoch","_TLBEpoch","_LastMaintenanceOperation","_LastMaintenanceOperand","_BundleHintEpoch","_ArchitectureRequestEpoch","_LastControlRequest","_ControlRequestOperand"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-EXTENDED-SYSTEM-REGISTERS","classification":["architecture","extended-system-registers"],"scope":"system","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_ExtendedSystemRegisters","_CurrentACR"],"depends_on":[]}// PTO-STATE: {"id":"PTO-STATE-ARCH-TRAP-CONTEXT","classification":["architecture","trap-context"],"scope":"acr","owner":"PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT","members":["_ACRTrapAsynchronous","_ACRTrapArgumentValid","_ACRTrapCause","_ACRTrapNumber","_ACRTrapArgument0","_TrapContexts"],"depends_on":[]}
// NDF-BEGIN: PTO-REQ-STATE-001// ndf: kind=contract level=L1 layer=state status=accepted// Architecture-visible execution state MUST be the state defined by// [[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]], and// [[PTO-STATE-ARCH-TRAP-CONTEXT]].// NDF-END: PTO-REQ-STATE-001
// Requirement references: PTO-REQ-PROFILE-001, PTO-REQ-MEMORY-TSO-001.
// A core owns four private scalar register files. An encoded absolute GPR// selector is shared by the instruction, but each PE resolves that selector// in its own file.var _PEGPRs : array [[PTO_MODEL_MEMORY_AGENTS]] of PERegisterFile;var _TQueue : TemporaryQueueSnapshot;var _TQueueValid : TemporaryQueueValiditySnapshot;var _UQueue : TemporaryQueueSnapshot;var _UQueueValid : TemporaryQueueValiditySnapshot;var _PC : Word;var _BPC : Word;var _BundleActive : boolean;var _BundleBodyActive : boolean;var _ReturnAddress : Word;var _CommitArgument : Word;var _PredicateRegisters : PredicateSnapshot;var _LastFault : FaultCode;var _FaultAddress : Word;var _Memory : array [[PTO_MODEL_MEMORY_BYTES]] of Byte;var _ReservationValid : boolean;var _ReservationAddress : Word;var _ReservationSize : integer {1,2,4,8};var _LastFencePredecessor : bits(4);var _LastFenceSuccessor : bits(4);var _MemoryEvents : array [[PTO_MODEL_MEMORY_EVENTS]] of MemoryEvent;var _MemoryEventCount : integer {0..PTO_MODEL_MEMORY_EVENTS};var _MemoryEventCaptureEnabled : boolean;var _CurrentMemoryAgent : MemoryAgentId;var _DataCacheEpoch : integer;var _InstructionCacheEpoch : integer;var _BundleCacheEpoch : integer;var _TLBEpoch : integer;var _LastMaintenanceOperation : MaintenanceOperation;var _LastMaintenanceOperand : Word;var _BundleHintEpoch : integer;var _ArchitectureRequestEpoch : integer;var _LastControlRequest : ExecutionControlRequest;var _ControlRequestOperand : Word;var _ExtendedSystemRegisters : array [[65536]] of Word;var _ACRTrapAsynchronous : array [[PTO_ACR_COUNT]] of boolean;var _ACRTrapArgumentValid : array [[PTO_ACR_COUNT]] of boolean;var _ACRTrapCause : array [[PTO_ACR_COUNT]] of bits(24);var _ACRTrapNumber : array [[PTO_ACR_COUNT]] of TrapNumber;var _ACRTrapArgument0 : array [[PTO_ACR_COUNT]] of Word;var _TrapContexts : array [[PTO_ACR_COUNT]] of TrapContext;var _CurrentACR : AccessControlRing;
readonly func ReadTemporaryQueue(use_t_queue: boolean, index: TemporaryQueueIndex) => Wordbegin return if use_t_queue then _TQueue[[index]] else _UQueue[[index]];end;
readonly func TemporaryQueueSourceAvailable( use_t_queue: boolean, index: TemporaryQueueIndex) => booleanbegin return if use_t_queue then _TQueueValid[[index]] else _UQueueValid[[index]];end;
func PushTemporaryQueue(use_t_queue: boolean, value: Word)begin if use_t_queue then _TQueue[[3]] = _TQueue[[2]]; _TQueueValid[[3]] = _TQueueValid[[2]]; _TQueue[[2]] = _TQueue[[1]]; _TQueueValid[[2]] = _TQueueValid[[1]]; _TQueue[[1]] = _TQueue[[0]]; _TQueueValid[[1]] = _TQueueValid[[0]]; _TQueue[[0]] = value; _TQueueValid[[0]] = TRUE; else _UQueue[[3]] = _UQueue[[2]]; _UQueueValid[[3]] = _UQueueValid[[2]]; _UQueue[[2]] = _UQueue[[1]]; _UQueueValid[[2]] = _UQueueValid[[1]]; _UQueue[[1]] = _UQueue[[0]]; _UQueueValid[[1]] = _UQueueValid[[0]]; _UQueue[[0]] = value; _UQueueValid[[0]] = TRUE; end;end;
执行上下文是 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 所有者定义。
假设复位后 T 队列的所有相对索引都不可用。压入 0x11 后,T 索引 0 变为可用,值为 0x11;再压入 0x22 后,索引 0 保存 0x22,索引 1 保存较早的 0x11,并且两项都可用。
随后把 0x33 压入 U 队列,只会改变 U 索引 0。上一步中的 T 值仍留在各自的 T 相对位置。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
Architecture-visible execution state MUST be the state defined by [[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]], and [[PTO-STATE-ARCH-TRAP-CONTEXT]].
PTO-REQ-STATE-001asl/arch/programming-model/execution-context.asl705e7c8efbbafbb95a744adb5b2ee97153f7b6c2b1aa11604a97dc9d438f224a7fb4e52acf318d03e0c1866dcb9f894837eb016f947fb2240c3fcda70279ca6e13 matching entries
PTO-AVS-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT-STATIC-001tests/asl/arch/programming-model/execution-context/arch-static-execution-context-contract-001.asl2bcf1898b386faaa22e531c42cf59bcd7a8793ffce16f41d8fac2964a43b0a57PTO-AVS-ARCH-QUEUE-READINESS-RECOVERY-001tests/asl/arch/state/trap-context/arch-fault-queue-readiness-recovery-001.asl3c6609590e7bbc2666d9a498a2eda8ba5d2cb8a64d966e01f82922353f943e43PTO-AVS-ARCH-TEMPORARY-QUEUE-VALIDITY-001tests/asl/arch/programming-model/execution-context/arch-state-temporary-queue-validity-001.asl80d8a8fc0d55071ffc3213590bef0cdada0bffa8b61797a4dd7dd80f31b88443PTO-EVIDENCE-RELEASE-TRACEABILITYPTO-EVIDENCE-RELEASE-TRACEABILITYspec/evidence/release-traceability-readiness.jsonc7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3ePTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREspec/evidence/instruction-contract-closure.json3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106aPTO-EVIDENCE-ARCHITECTURE-READINESSPTO-EVIDENCE-ARCHITECTURE-READINESSspec/evidence/architecture-readiness.json4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004PTO-EVIDENCE-RELEASE-GATE-READINESSPTO-EVIDENCE-RELEASE-GATE-READINESSspec/evidence/release-gate-readiness.jsona0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0PTO-EVIDENCE-RELEASE-MANIFESTPTO-EVIDENCE-RELEASE-MANIFESTspec/release-manifest.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8Loading ADR-0008…
ADR-0008docs/status/decisions/0008-architectural-state-contract.md9c33e1b57d0f04c4d808ee61aaf975187a3dbd32a071329ca65a916dc0e614caLoading ADR-0009…
ADR-0009docs/status/decisions/0009-scalar-tpc-and-execution-status.md158daf8c726f443cb35afc2e6218d64f0a7da1a68cb3aa9624472baf25467a11Loading ADR-0010…
ADR-0010docs/status/decisions/0010-acr-routing-and-context-reset.md7594432a33c54880227fa3ab495bf5b29d406ac3b4e83634ffefe0a713e85f35Loading ADR-0011…
ADR-0011docs/status/decisions/0011-visible-ebarg-snapshot.mdae2cbaccfe91a2f072b930dd9141a851d3adfe30ac960121836553ff4f3362b6Loading ADR-0023…
ADR-0023docs/status/decisions/0023-uniform-instruction-attempt-status.mdfc6e86c946ab5257cf678f7f3fffa6b5f651953eb0498bd71b83633f91741fc7{
"classification": [
"programming-model",
"execution-context"
],
"documentation": "docs/arch/programming-model/execution-context.md",
"id": "PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT",
"mnemonic": null,
"readiness_subjects": [
"ADR-0008",
"ADR-0009",
"ADR-0010",
"ADR-0011",
"ADR-0023"
],
"semantic_tests": [
"PTO-AVS-ARCH-TEMPORARY-QUEUE-VALIDITY-001"
],
"source": "asl/arch/programming-model/execution-context.asl",
"surface": "arch",
"tests": [
"PTO-AVS-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT-STATIC-001",
"PTO-AVS-ARCH-TEMPORARY-QUEUE-VALIDITY-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd86812705e7c8efbbafbb95a744adb5b2ee97153f7b6c2b1aa11604a97dc9d438f224ad78ca54a62a1d0ad2de887b5f172f47b69700b5328da78cfb37bc1f9ebc7ef1easl/arch/programming-model/execution-context.aslasl/arch/programming-model/execution-context.asl