跳到主要内容

PTO-ARCH-MEMORY-MODEL-ATOMICITY

PTO-ARCH-MEMORY-MODEL-ATOMICITY

ASL 伪代码

下面直接显示完整的 ASL 所有者。

// PTO-UNIT: {"id":"PTO-ARCH-MEMORY-MODEL-ATOMICITY","surface":"arch","classification":["memory-model","atomicity"],"depends_on":["PTO-ARCH-MEMORY-MODEL-MEMORY-EVENTS"]}readonly func NextMemoryCoherenceRank(address: Word,                                      size_bytes: integer {1,2,4,8})                                      => MemoryCoherenceRankbegin    var next_rank: integer {1..PTO_MODEL_MEMORY_EVENTS} = 1;    if _MemoryEventCount > 0 then        for event_number = 0 to _MemoryEventCount - 1 do            let event = _MemoryEvents[[event_number as MemoryEventIndex]];            if MemoryEventIsWrite(event) && event.address == address &&               event.size_bytes == size_bytes &&               event.coherence_rank >= next_rank then                next_rank = (event.coherence_rank + 1) as                    integer {1..PTO_MODEL_MEMORY_EVENTS};            end;        end;    end;    assert next_rank < PTO_MODEL_MEMORY_EVENTS;    return next_rank as MemoryCoherenceRank;end;
func ResolveCapturedReadFrom(read: MemoryEventIndex)begin    let read_event = _MemoryEvents[[read]];    var found = FALSE;    var source: MemoryEventIndex = 0;    if read > 0 then        for candidate_number = 0 to read - 1 do            let candidate_index = candidate_number as MemoryEventIndex;            let candidate = _MemoryEvents[[candidate_index]];            if MemoryEventIsWrite(candidate) &&               MemoryEventsShareLocation(read_event, candidate) &&               candidate.write_value == read_event.read_value then                found = TRUE;                source = candidate_index;            end;        end;    end;    if found then SetMemoryReadFrom(read, source); end;end;
func RecordLoadEvent(address: Word, size_bytes: integer {1,2,4,8},                     value: Word, order: MemoryOrder)begin    RecordLoadEventForAgent(_CurrentMemoryAgent, address, size_bytes, value,        order);end;
func RecordLoadEventForAgent(agent: MemoryAgentId, address: Word,                             size_bytes: integer {1,2,4,8}, value: Word,                             order: MemoryOrder)begin    if _MemoryEventCaptureEnabled then        let event = AddLoadEvent(agent, address, size_bytes,            value, order);        ResolveCapturedReadFrom(event);    end;end;
func RecordStoreEvent(address: Word, size_bytes: integer {1,2,4,8},                      value: Word, order: MemoryOrder)begin    RecordStoreEventForAgent(_CurrentMemoryAgent, address, size_bytes, value,        order);end;
func RecordStoreEventForAgent(agent: MemoryAgentId, address: Word,                              size_bytes: integer {1,2,4,8}, value: Word,                              order: MemoryOrder)begin    if _MemoryEventCaptureEnabled then        - = AddStoreEvent(agent, address, size_bytes, value,            order, NextMemoryCoherenceRank(address, size_bytes));    end;end;
func RecordAtomicEvent(address: Word, size_bytes: integer {1,2,4,8},                       read_value: Word, write_value: Word,                       order: MemoryOrder, write_performed: boolean)begin    if _MemoryEventCaptureEnabled then        let rank = if write_performed then            NextMemoryCoherenceRank(address, size_bytes) else 0;        let event = AddAtomicOutcomeEvent(_CurrentMemoryAgent, address,            size_bytes, read_value, write_value, order,            rank as MemoryCoherenceRank, write_performed);        ResolveCapturedReadFrom(event);    end;end;
func RecordDataFenceEvent(predecessor: bits(4), successor: bits(4))begin    if _MemoryEventCaptureEnabled then        - = AddDataFenceEvent(_CurrentMemoryAgent, predecessor, successor);    end;end;
func SetMemoryReadFrom(read: MemoryEventIndex, source: MemoryEventIndex)begin    assert read < _MemoryEventCount && source < _MemoryEventCount;    _MemoryEvents[[read]].read_from = source;end;

架构行为

目的与范围

用途与范围

本单元把实际内存操作连接到有界候选执行事件模型。捕获启用时,它记录读取、存储、原子操作和数据栅栏,并维护逐位置的一致性与读自信息。

概念与架构状态

事件关系

  • NextMemoryCoherenceRank 扫描地址和 size_bytes 相同的较早写事件,为新写事件分配下一个一致性序号。
  • ResolveCapturedReadFrom 查找同一位置上较早且 write_value 等于已捕获 read_value 的写事件。
  • SetMemoryReadFrom 检查两个事件索引都已存在后,写入所选来源索引。
规则与交互

记录规则

  • 读取记录先加入事件序列,找到来源时再解析捕获的来源。
  • 存储记录在发布前获得新的一致性序号。
  • 原子操作记录只有在 write_performed 为真时才获得一致性序号;它仍会记录读取结果并尝试解析读自关系。
  • 包装形式使用 _CurrentMemoryAgent;显式形式接收 MemoryAgentId。
边界与未定义范围

边界

当 _MemoryEventCaptureEnabled 为假时,所有记录辅助函数都没有效果。捕获的来源依据较早事件、相同位置和相同值选择;完整的候选执行合法性判断仍由内存排序所有者负责。

使用示例

示例性事件示例

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

相关所有者

  • PTO-ARCH-MEMORY-MODEL-MEMORY-EVENTS 定义事件记录和捕获存储。
  • 内存排序使用一致性与读自关系检查候选执行。

NDF 条款

正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。

No NDF clause is attached to this unit.

Evidence index

8 matching entries

Executable evidence1
  • PTO-ARCH-MEMORY-MODEL-ATOMICITY compiles as an independent normative unit
    1. surfaceARCH
    2. ownerPTO-ARCH-MEMORY-MODEL-ATOMICITY
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-MEMORY-MODEL-ATOMICITY-STATIC-001
    Path
    tests/asl/arch/memory-model/atomicity/arch-static-atomicity-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    ea0c6316331d9350df7677b683ca0fbb1534c6e4614b67ad45c4fcb36685ec49
    Open exact source ↗ for PTO-AVS-ARCH-MEMORY-MODEL-ATOMICITY-STATIC-001
Commit-scoped evidence5
  • spec/evidence/release-traceability-readiness.json · closedPTO-EVIDENCE-RELEASE-TRACEABILITY
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-TRACEABILITY
    Path
    spec/evidence/release-traceability-readiness.json
    Kind / role
    ASL/NDF/documentation/AVS traceability
    SHA-256
    c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-TRACEABILITY
  • spec/evidence/instruction-contract-closure.json · closedPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Path
    spec/evidence/instruction-contract-closure.json
    Kind / role
    mnemonic and encoding contract closure
    SHA-256
    3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
    Open exact source ↗ for PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
  • spec/evidence/architecture-readiness.json · openPTO-EVIDENCE-ARCHITECTURE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-ARCHITECTURE-READINESS
    Path
    spec/evidence/architecture-readiness.json
    Kind / role
    architecture maturity and blockers
    SHA-256
    4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
    Open exact source ↗ for PTO-EVIDENCE-ARCHITECTURE-READINESS
  • spec/evidence/release-gate-readiness.json · ready-for-exact-head-verificationPTO-EVIDENCE-RELEASE-GATE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-GATE-READINESS
    Path
    spec/evidence/release-gate-readiness.json
    Kind / role
    exact-head gate readiness
    SHA-256
    a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-GATE-READINESS
  • spec/release-manifest.json · draftPTO-EVIDENCE-RELEASE-MANIFEST
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-MANIFEST
    Path
    spec/release-manifest.json
    Kind / role
    release content and encoding fingerprints
    SHA-256
    1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-MANIFEST
Decision history2
  • PTO total store order candidate model · accepted
    1. decision recordADR
    2. case0006

    Decision record

    Loading ADR-0006…

    Sources and references
    Complete stable ID
    ADR-0006
    Path
    docs/status/decisions/0006-pto-total-store-order.md
    Affected units
    PTO-ARCH-MEMORY-MODEL-ADDRESS-SPACE, PTO-ARCH-MEMORY-MODEL-ATOMICITY, PTO-ARCH-MEMORY-MODEL-FAULT-PRECISION, PTO-ARCH-MEMORY-MODEL-MEMORY-EVENTS, PTO-ARCH-MEMORY-MODEL-ORDERING, PTO-ARCH-OVERVIEW-ARCHITECTURE
    Affected NDF
    PTO-ARCH-COMMIT-EVENT-CONFORMANCE-001
    SHA-256
    b80d8782e4587d4023edf02df9d2ba4d3cb2b2999fdc8991e49a2af4f9817735
    Open exact decision source ↗ for ADR-0006
  • Production memory events and atomic corners · accepted
    1. decision recordADR
    2. case0020

    Decision record

    Loading ADR-0020…

    Sources and references
    Complete stable ID
    ADR-0020
    Path
    docs/status/decisions/0020-production-memory-events-and-atomic-corners.md
    Affected units
    PTO-ARCH-MEMORY-MODEL-ADDRESS-SPACE, PTO-ARCH-MEMORY-MODEL-ATOMICITY, PTO-ARCH-MEMORY-MODEL-FAULT-PRECISION, PTO-ARCH-MEMORY-MODEL-GLOBAL-MEMORY-ACCESS, PTO-ARCH-MEMORY-MODEL-MEMORY-EVENTS, PTO-ARCH-MEMORY-MODEL-ORDERING, PTO-BLOCK-BSTART-GMOV, PTO-BLOCK-BSTART-MGATHER, PTO-BLOCK-BSTART-MGATHER-CAS, PTO-BLOCK-BSTART-MGATHER-MASK, PTO-BLOCK-BSTART-MSCATTER, PTO-BLOCK-BSTART-MSCATTER-MASK, PTO-BLOCK-BSTART-TLOAD, PTO-BLOCK-BSTART-TPREFETCH, PTO-BLOCK-BSTART-TSTORE, PTO-SCALAR-CASB, PTO-SCALAR-CASD, PTO-SCALAR-CASH, PTO-SCALAR-CASW, PTO-SCALAR-DMA, PTO-SCALAR-HL-CASB, PTO-SCALAR-HL-CASD, PTO-SCALAR-HL-CASH, PTO-SCALAR-HL-CASW, PTO-SCALAR-LD-ADD, PTO-SCALAR-LD-AND, PTO-SCALAR-LD-OR, PTO-SCALAR-LD-SMAX, PTO-SCALAR-LD-SMIN, PTO-SCALAR-LD-UMAX, PTO-SCALAR-LD-UMIN, PTO-SCALAR-LD-XOR, PTO-SCALAR-LR-B, PTO-SCALAR-LR-D, PTO-SCALAR-LR-H, PTO-SCALAR-LR-W, PTO-SCALAR-LW-ADD, PTO-SCALAR-LW-AND, PTO-SCALAR-LW-OR, PTO-SCALAR-LW-SMAX, PTO-SCALAR-LW-SMIN, PTO-SCALAR-LW-UMAX, PTO-SCALAR-LW-UMIN, PTO-SCALAR-LW-XOR, PTO-SCALAR-SC-B, PTO-SCALAR-SC-D, PTO-SCALAR-SC-H, PTO-SCALAR-SC-W, PTO-SCALAR-SD-ADD, PTO-SCALAR-SD-AND, PTO-SCALAR-SD-OR, PTO-SCALAR-SD-SMAX, PTO-SCALAR-SD-SMIN, PTO-SCALAR-SD-UMAX, PTO-SCALAR-SD-UMIN, PTO-SCALAR-SD-XOR, PTO-SCALAR-SW-ADD, PTO-SCALAR-SW-AND, PTO-SCALAR-SW-OR, PTO-SCALAR-SW-SMAX, PTO-SCALAR-SW-SMIN, PTO-SCALAR-SW-UMAX, PTO-SCALAR-SW-UMIN, PTO-SCALAR-SW-XOR, PTO-SCALAR-SWAPB, PTO-SCALAR-SWAPD, PTO-SCALAR-SWAPH, PTO-SCALAR-SWAPW, PTO-TILE-GMOV, PTO-TILE-MGATHER, PTO-TILE-MGATHER-CAS, PTO-TILE-MGATHER-MASK, PTO-TILE-MSCATTER, PTO-TILE-MSCATTER-MASK, PTO-TILE-TLOAD, PTO-TILE-TMOV, PTO-TILE-TPREFETCH, PTO-TILE-TSTORE
    Affected NDF
    PTO-ARCH-GM-ACCESS-001, PTO-BSTART-GMOV-COLLECTIVE-001, PTO-BSTART-MGATHER-CAS-SCHEMA-001, PTO-BSTART-MGATHER-MASK-SCHEMA-001, PTO-BSTART-MGATHER-SCHEMA-001, PTO-BSTART-MSCATTER-MASK-SCHEMA-001, PTO-BSTART-MSCATTER-SCHEMA-001, PTO-BSTART-TLOAD-CUBE-001, PTO-BSTART-TLOAD-MEMORY-001, PTO-BSTART-TPREFETCH-MEMORY-001, PTO-BSTART-TSTORE-CUBE-001, PTO-BSTART-TSTORE-MEMORY-001, PTO-GMOV-CORE4-PEER-001, PTO-MGATHER-BYTE-DISPLACEMENT-001, PTO-MGATHER-CAS-ATOMIC-001, PTO-MGATHER-CAS-PUBLICATION-001, PTO-MGATHER-MASK-PREDICATE-001, PTO-MGATHER-MASK-PUBLICATION-001, PTO-MGATHER-MASK-TYPE-002, PTO-MSCATTER-BYTE-DISPLACEMENT-001, PTO-MSCATTER-DUPLICATE-ORDER-001, PTO-MSCATTER-MASK-DUPLICATE-001, PTO-MSCATTER-MASK-PREDICATE-001, PTO-MSCATTER-MASK-TYPE-002, PTO-SD-XOR-ADR-CONTRACT-001, PTO-SW-ADD-ADR-CONTRACT-001, PTO-SW-AND-ADR-CONTRACT-001, PTO-SW-OR-ADR-CONTRACT-001, PTO-SW-SMAX-ADR-CONTRACT-001, PTO-SW-SMIN-ADR-CONTRACT-001, PTO-SW-UMAX-ADR-CONTRACT-001, PTO-SW-UMIN-ADR-CONTRACT-001, PTO-SW-XOR-ADR-CONTRACT-001, PTO-SWAPB-ADR-CONTRACT-001, PTO-SWAPD-ADR-CONTRACT-001, PTO-SWAPH-ADR-CONTRACT-001, PTO-SWAPW-ADR-CONTRACT-001, PTO-TLOAD-CUBE-001, PTO-TLOAD-MEMORY-001, PTO-TMOV-CONTRACT-001, PTO-TPREFETCH-FOOTPRINT-001, PTO-TSTORE-CUBE-001, PTO-TSTORE-MEMORY-001
    SHA-256
    215b18f05d0b53120949373fce6a5ce22f7ab534fb22df24743a9b2b4beb2dec
    Open exact decision source ↗ for ADR-0020

Unit metadata

Open 4 generated metadata fields
id
PTO-ARCH-MEMORY-MODEL-ATOMICITY
surface
arch
classification
[
  "memory-model",
  "atomicity"
]
depends_on
[
  "PTO-ARCH-MEMORY-MODEL-MEMORY-EVENTS"
]
Open generated traceability record
{
  "classification": [
    "memory-model",
    "atomicity"
  ],
  "documentation": "docs/arch/memory-model/atomicity.md",
  "id": "PTO-ARCH-MEMORY-MODEL-ATOMICITY",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0006",
    "ADR-0020"
  ],
  "semantic_tests": [],
  "source": "asl/arch/memory-model/atomicity.asl",
  "surface": "arch",
  "tests": [
    "PTO-AVS-ARCH-MEMORY-MODEL-ATOMICITY-STATIC-001"
  ]
}

来源与发布信息

展开 commit、路径、hash、版本和规范所有者
发布
0.58.5 · 候选发布
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
62f7e2c43e82c804a98665bf2410b8309d581d1ff401a7adcdb9b993e04ec5cb
文档 SHA-256
b86ae6353f3bc7d0be6af50c1a107298b67e0067b13ea39a285c77c008a8e4cf

精确所有者