Operands and parameters
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| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
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
SrcLSrcRThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
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 copies exactly 64 bytes from the address in SrcL to the address in SrcR as one restartable scalar operation.
The ASL DOC contract selects ExecuteScalarDMACopy64: it probes the complete source range before the complete destination range.
All source bytes are captured before the first destination write, so exact, forward, and backward overlap follow memmove-style snapshot behavior.
SrcL carries the Reg5 source byte-address source; SrcR carries the Reg5 destination byte-address source.
This form has no ordering or route modifier.
A successful copy emits eight relaxed 8-byte load events followed by eight relaxed 8-byte store events, then advances TPC by 4 bytes.
Only a successful destination overlap invalidates the local reservation; unrelated reservation state is preserved.
Both complete 64-byte ranges must pass preflight before any byte is read or written, and the first failing source-or-destination probe determines the fault.
A fault exposes no event prefix or partial destination update, leaves memory unchanged, and preserves the original TPC for full reissue.
This example only shows one accepted spelling; the generated contract below remains authoritative.
For a first reading, use dma [SrcL], SrcR and follow source preflight, destination preflight, the 64-byte snapshot, and the final copy commit; this instruction has no ordering or route modifier.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
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 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd86812d9e350edd735d1afad258460093f9dbaabd8decf7bc62926587cf909f615ed92d8053612127cdf49dd8fc97d04c43cb622df55fd9d5806b20bc1537a549ff76dasl/scalar/amo/DMA.aslasl/scalar/amo/DMA.asl