操作数与参数
SrcL- Reg5 source byte-address source
SrcR- Reg5 destination byte-address source
DMA performs an exact 64-byte copy, validates both ranges before effects, snapshots the source so overlap has memmove semantics, and guarantees that any fault leaves memory unchanged for precise full reissue.
PTO-SCALAR-DMAdma [SrcL], SrcR| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
SrcL | 5 | encoding-defined | Reg5 source byte-address source | Encoded zero reads the architectural zero register as source byte address zero. |
SrcR | 5 | encoding-defined | Reg5 destination byte-address source | Encoded zero reads the architectural zero register as destination byte address zero. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:25 | 7'b0000000 |
| SrcR | 24:20 | variable |
| SrcL | 19:15 | variable |
| Constant | 14:0 | 15'b111000000001011 |
{
"reg": [
{
"bits": 15,
"name": "15'b111000000001011"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 7,
"name": "7'b0000000"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}dma [SrcL], SrcR
SrcLSrcR下面是该指令所有者中的 Operation;页面没有重写这段行为。
readonly func InstructionContractOperation_DMA() => ScalarOperationbegin return ScalarOperation_DMA;end;readonly func InstructionContractHandler_DMA() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarDMACopy64;end;
pure func InstructionContractCopySizeBytes_DMA() => integer {1..262144}begin return 64;end;
pure func InstructionContractEventChunkSizeBytes_DMA() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractEventChunkCount_DMA() => integer {1..16}begin return 8;end;
pure func InstructionContractSourceProbePrecedesDestination_DMA() => booleanbegin return TRUE;end;
pure func InstructionContractSnapshotsSourceBeforeCommit_DMA() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["dma [SrcL], SrcR"],"block":[],"catalog_indices":[81],"catalog_records":[{"asm":"dma [SrcL], SrcR","constraints":[],"encoding":[{"index":0,"mask":"0xfe007fff","match":"0x0000700b","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"SrcL","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcR","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5}],"form_id":"dma_32_a168aeca5fa5","length_bits":32,"mnemonic":"DMA","semantic_family":"AMO","semantic_group":"AMO","semantic_handler":"ExecuteScalarDMACopy64","semantic_summary":"DMA performs an exact 64-byte copy, validates both ranges before effects, snapshots the source so overlap has memmove semantics, and guarantees that any fault leaves memory unchanged for precise full reissue.","status":"accepted"}],"classification":["amo"],"contract":{"block_composition":["none"],"canonical_assembly":["dma [SrcL], SrcR"],"defaults":["SrcL and SrcR are required Reg5 source fields. Encoded source zero reads the architectural zero register as byte address zero; no field value denotes omission.","DMA has no ordering, route, destination, or size modifier. The copy size is always 64 bytes, its alignment requirement is one byte, and every successful memory event is relaxed."],"encoding_class":"standalone-encoded","examples":["dma [a0], a1","dma [t#1], u#1","dma [zero], sp"],"exceptions":["Bits 31:25 are fixed zero by the instruction match. Any other fixed-bit pattern is not DMA and raises Fault_IllegalInstruction before effects when it has no other legal owner.","The source range is probed before the destination range. The first failing alignment, translation, permission, or bounded-memory check reports the original architectural address.","A source or destination fault occurs before any source byte read, memory event, destination write, reservation update, or TPC advance. Trap entry saves the original TPC and recovery restores it for full reissue."],"field_contracts":{},"field_zero_meanings":{"SrcL":"Encoded zero reads the architectural zero register as source byte address zero.","SrcR":"Encoded zero reads the architectural zero register as destination byte address zero."},"legality":["All 32 SrcL and SrcR Reg5 encodings are assigned: 0..23 select absolute GPRs, 24..27 select T#1..T#4, and 28..31 select U#1..U#4.","Both complete 64-byte ranges must pass access preflight. The source range is probed before the destination range and the first failing probe wins.","Every byte address is naturally aligned because DMA requires one-byte alignment. Exact overlap, forward overlap, backward overlap, and disjoint ranges are all legal."],"memory_effects":["Probe the complete 64-byte source range for read access, then the complete 64-byte destination range for write access, before reading or writing architectural memory.","All 64 source bytes are snapshotted before the first destination write, giving exact, forward, and backward overlap memmove semantics.","A successful captured execution emits eight ordered 8-byte relaxed load events followed by eight ordered 8-byte relaxed store events. Each store event value is derived from the corresponding chunk of the single source snapshot.","The destination store invalidates an overlapping local reservation and preserves a nonoverlapping reservation. Either fault preserves the prior reservation."],"operands":[{"field":"SrcL","role":"Reg5 source byte-address source"},{"field":"SrcR","role":"Reg5 destination byte-address source"}],"ordering":["The eight load events precede all eight store events in instruction program order. Every event uses relaxed ordering.","DMA is one restartable instruction: a fault exposes no event prefix or partial destination update; recovery performs a full reissue and one successful commit."],"standalone_opcode":true,"state_effects":["Snapshot both Reg5 address operands before access preflight so repeated GPR selectors and T/U queue sources observe pre-instruction values. DMA has no scalar destination and consumes no queue entry.","Successful execution advances TPC by four bytes after the complete memory and event commit. Fault entry saves the original TPC, redirects the live TPC, and recovery restores the saved TPC for full reissue.","GPRs, T/U queues, unrelated memory, and unrelated architectural state are unchanged. Reservation state changes only for a successful destination range overlapping the reserved 64-byte granule."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-DMA","mnemonic":"DMA","summary":"DMA performs an exact 64-byte copy, validates both ranges before effects, snapshots the source so overlap has memmove semantics, and guarantees that any fault leaves memory unchanged for precise full reissue.","surface":"scalar"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// DOC-BEGIN: decodereadonly func InstructionContractOperation_DMA() => ScalarOperationbegin return ScalarOperation_DMA;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_DMA() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarDMACopy64;end;
pure func InstructionContractCopySizeBytes_DMA() => integer {1..262144}begin return 64;end;
pure func InstructionContractEventChunkSizeBytes_DMA() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractEventChunkCount_DMA() => integer {1..16}begin return 8;end;
pure func InstructionContractSourceProbePrecedesDestination_DMA() => booleanbegin return TRUE;end;
pure func InstructionContractSnapshotsSourceBeforeCommit_DMA() => booleanbegin return TRUE;end;// DOC-END: operation
DMA 把 SrcL 中的地址指向的恰好 64 字节复制到 SrcR 中的地址,并把整个复制视为一条可重新执行的标量操作。
ASL DOC 契约选择 ExecuteScalarDMACopy64:它先探测完整源范围,再探测完整目的范围。
第一次写入目的地之前会先捕获全部源字节,因此完全重叠、向前重叠和向后重叠都遵循类似 memmove 的快照行为。
SrcL 承载 Reg5 源字节地址源;SrcR 承载 Reg5 目的字节地址源。
该形式没有排序或路由修饰位。
复制成功时,先发出八个宽松的 8 字节载入事件,再发出八个宽松的 8 字节存储事件,随后让 TPC 前进 4 字节。
只有成功写入的目的范围与本地保留重叠时才会使保留失效;不相关的保留状态保持不变。
读取或写入任何字节之前,两个完整的 64 字节范围都必须通过预检;源或目的范围中第一个失败的探测决定故障。
发生故障时不会暴露事件前缀或部分目的更新,内存保持不变,并保留原始 TPC 以便完整重新执行。
本示例只展示一种已接受写法;下方生成的契约仍是权威来源。
初次阅读可从 dma [SrcL], SrcR 开始,依次跟踪源预检、目的预检、64 字节快照和最终复制提交;该指令没有排序或路由修饰位。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
No NDF clause is attached to this unit.
12 matching entries
PTO-AVS-SCALAR-DMA-COPY-001tests/asl/scalar/amo/DMA/scalar-exec-dma-copy-001.asl545d70fbc12e90c9cd7bf35c8f207405c1d1b1e65ad077957c0609689b19036fPTO-AVS-SCALAR-DMA-DECODE-001tests/asl/scalar/amo/DMA/scalar-decode-dma-canonical-001.asl6183ba287faf52b77f9003953253f46ea7cb9c7fd1918713df56d86fabbb0c53PTO-AVS-SCALAR-DMA-OVERLAP-001tests/asl/scalar/amo/DMA/scalar-bound-dma-overlap-001.asl9391defa2ac4f6eebba2030c87372533ee2a01ad08f9a7e83187f0d2c43ba6b7PTO-AVS-SCALAR-DMA-PRECISE-001tests/asl/scalar/amo/DMA/scalar-fault-dma-precise-001.asl6f5a0474fa320a950f985efb32e07c611e334a9edd7d3fd8013cd845fb3953b5PTO-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-0020…
ADR-0020docs/status/decisions/0020-production-memory-events-and-atomic-corners.md215b18f05d0b53120949373fce6a5ce22f7ab534fb22df24743a9b2b4beb2decLoading ADR-0030…
ADR-0030docs/status/decisions/0030-scalar-amo-totality-and-reservation.md110bd32b3004a8383913ac6053cc7d0a1d0b8e03e3ef7c47d83292c94a6a17ebLoading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196{
"classification": [
"amo"
],
"documentation": "docs/scalar/amo/DMA.md",
"id": "PTO-SCALAR-DMA",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "DMA",
"ndf_clause": "PTO-INST-SCALAR-DMA"
},
"mnemonic": "DMA",
"readiness_subjects": [
"ADR-0020",
"ADR-0030",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-SCALAR-DMA-COPY-001",
"PTO-AVS-SCALAR-DMA-OVERLAP-001",
"PTO-AVS-SCALAR-DMA-PRECISE-001"
],
"source": "asl/scalar/amo/DMA.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-DMA-COPY-001",
"PTO-AVS-SCALAR-DMA-DECODE-001",
"PTO-AVS-SCALAR-DMA-OVERLAP-001",
"PTO-AVS-SCALAR-DMA-PRECISE-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd86812d9e350edd735d1afad258460093f9dbaabd8decf7bc62926587cf909f615ed927c67fc0f13524bb23e4bd1f288ec577aeb4ef23e797b004febeea26c5c759e66asl/scalar/amo/DMA.aslasl/scalar/amo/DMA.asl