操作数与参数
RegSrc0- absolute GPR containing destination byte address
RegSrc1- absolute GPR containing source byte address
RegSrc2- absolute GPR containing complete unsigned XLEN byte count
Copies a non-overlapping byte range in restartable forward memory steps.
PTO-BLOCK-MCOPYMCOPY [RegSrc0, RegSrc1, RegSrc2]| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
RegSrc0 | 5 | encoding-defined | absolute GPR containing destination byte address | Encoded zero reads destination byte address zero. |
RegSrc1 | 5 | encoding-defined | absolute GPR containing source byte address | Encoded zero reads source byte address zero. |
RegSrc2 | 5 | encoding-defined | absolute GPR containing complete unsigned XLEN byte count | Encoded zero reads length zero and selects the legal memory-free no-op. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| RegSrc2 | 31:27 | variable |
| Constant | 26:25 | 2'b00 |
| RegSrc1 | 24:20 | variable |
| RegSrc0 | 19:15 | variable |
| Constant | 14:0 | 15'b000000000110001 |
{
"reg": [
{
"bits": 15,
"name": "15'b000000000110001"
},
{
"bits": 5,
"name": "RegSrc0"
},
{
"bits": 5,
"name": "RegSrc1"
},
{
"bits": 2,
"name": "2'b00"
},
{
"bits": 5,
"name": "RegSrc2"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}MCOPY [RegSrc0, RegSrc1, RegSrc2]
RegSrc0RegSrc1RegSrc2Decode 与 Operation 均直接来自指令所有者,并按执行阶段分开显示。
readonly func InstructionContractMatches_MCOPY(operation: CommandOperation) => booleanbegin return (operation == CommandOperation_mcopy_32_4fc4a803e995);end;readonly func InstructionContractHandler_MCOPY() => CommandSemanticHandlerbegin return CommandHandler_ExecuteMemoryCopy;end;
pure func InstructionContractMemoryStepRestartable_MCOPY() => booleanbegin return TRUE;end;
pure func InstructionContractForbidsOverlap_MCOPY() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["MCOPY [RegSrc0, RegSrc1, RegSrc2]"],"block":[],"catalog_indices":[69],"catalog_records":[{"asm":"MCOPY [RegSrc0, RegSrc1, RegSrc2]","constraints":[{"field":"RegSrc0","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},{"field":"RegSrc1","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},{"field":"RegSrc2","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]}],"encoding":[{"index":0,"mask":"0x06007fff","match":"0x00000031","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"RegSrc0","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"RegSrc1","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"RegSrc2","pieces":[{"instruction_lsb":27,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5}],"form_id":"mcopy_32_4fc4a803e995","length_bits":32,"mnemonic":"MCOPY","semantic_family":"CMD","semantic_group":"Bundle Split","semantic_handler":"ExecuteMemoryCopy","semantic_summary":"Copies a non-overlapping byte range in restartable forward memory steps.","status":"accepted"}],"classification":["lifecycle"],"contract":{"block_composition":["MCOPY is one standalone template block. It retires only after the complete byte range has copied or after a legal zero-length no-op."],"canonical_assembly":["MCOPY [RegSrc0, RegSrc1, RegSrc2]"],"defaults":["No operand is omitted. RegSrc0, RegSrc1, and RegSrc2 are absolute GPR selectors 0..23; selector zero reads architectural zero.","RegSrc2 supplies the complete unsigned XLEN byte count. Zero length is legal and performs no memory access."],"encoding_class":"standalone-encoded","examples":["MCOPY [a0, a1, a2]"],"exceptions":["Selector codes 24..31, a wrapping source or destination interval, or overlapping nonempty intervals raise Fault_IllegalInstruction before register-dependent memory, event, reservation, progress, last-command, or TPC effects.","A source or destination access fault is precise to the current memory step. Earlier completed steps remain visible; the rejected step has no read, write, event, reservation, or progress effect."],"field_contracts":{},"field_zero_meanings":{"RegSrc0":"Encoded zero reads destination byte address zero.","RegSrc1":"Encoded zero reads source byte address zero.","RegSrc2":"Encoded zero reads length zero and selects the legal memory-free no-op."},"legality":["Each RegSrc field accepts exactly absolute GPR selectors 0..23. Relative T/U selector codes 24..31 are reserved for MCOPY.","For nonzero length, both half-open intervals must be non-wrapping and disjoint."],"memory_effects":["Copy forward from source to destination in 8-, 4-, 2-, or 1-byte steps. Each step probes source and destination before reading, then records the source load and destination store in program order.","The step write invalidates an overlapping local reservation. A successful zero-length command performs no access and does not change reservation state."],"operands":[{"field":"RegSrc0","role":"absolute GPR containing destination byte address"},{"field":"RegSrc1","role":"absolute GPR containing source byte address"},{"field":"RegSrc2","role":"absolute GPR containing complete unsigned XLEN byte count"}],"ordering":["Each source read precedes its corresponding destination write. The write and progress advance commit together at one restart boundary.","On recovery the template resumes from its saved operand snapshot and first uncommitted byte without rereading GPRs or repeating earlier memory events."],"standalone_opcode":true,"state_effects":["At accepted start, snapshot destination, source, length, instruction PC, and zero progress into trap-preserved MemoryCopyTemplateState.","After the final step, clear active progress, record the original destination and full length as the last memory command, and retire exactly once."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-BLOCK-MCOPY","mnemonic":"MCOPY","summary":"Copies a non-overlapping byte range in restartable forward memory steps.","surface":"block"}// NDF-BEGIN: PTO-MCOPY-RESTART-001// ndf: kind=contract level=L1 layer=block status=accepted// MCOPY MUST snapshot absolute GPR destination, source, and complete XLEN// length, reject wrapping or overlapping nonempty ranges, and copy forward.// Each memory step MUST be an exact restart boundary and MUST NOT be repeated.// NDF-END: PTO-MCOPY-RESTART-001// DOC-BEGIN: decodereadonly func InstructionContractMatches_MCOPY(operation: CommandOperation) => booleanbegin return (operation == CommandOperation_mcopy_32_4fc4a803e995);end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_MCOPY() => CommandSemanticHandlerbegin return CommandHandler_ExecuteMemoryCopy;end;
pure func InstructionContractMemoryStepRestartable_MCOPY() => booleanbegin return TRUE;end;
pure func InstructionContractForbidsOverlap_MCOPY() => booleanbegin return TRUE;end;// DOC-END: operation// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}
MCOPY 是独立的可重启内存命令;操作数快照与进度状态共同规定精确完成和恢复。
MCOPY 作为独立的 32 位命令执行,不要求放在 BSTART/BSTOP Block 体内。
已接受载体使用 L32 编码类别;命令在读取绑定或改变状态前,会先解析所有显示字段。
命令会在第一个可见效果前快照所有必需源,随后遵循归属单元定义的提交或重启边界。
RegSrc0 — 保存目的字节地址的绝对 GPR; RegSrc1 — 保存源字节地址的绝对 GPR; RegSrc2 — 保存完整无符号 XLEN 字节数的绝对 GPR。源验证与快照发生在所有寄存器、队列、栈帧、内存、事件或控制流效果之前。
命令按内存契约规定的重启边界提交;只有归属单元明确允许保存重启进度时,先前已提交步骤才保持可见。
固定比特、保留值、选择器取值域与必需的 Block 放置关系都在架构效果之前检查。
当前归属单元通过 Fault_IllegalInstruction 报告无效模式、状态、地址或后继条件;本页说明文字不创建额外故障规则。
除非当前归属单元明确规定带保留进度的重启边界,否则拒绝发生在效果之前;完成顺序始终采用 ASL 顺序。
该示例只演示放置关系与载体流;精确行为仍由当前 ASL 和指令契约定义。
MCOPY [a0, a1, a2]所示已接受拼写从当前载体解析字段,快照必需源,再执行归属单元规定的状态与顺序转换。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
MCOPY MUST snapshot absolute GPR destination, source, and complete XLEN length, reject wrapping or overlapping nonempty ranges, and copy forward. Each memory step MUST be an exact restart boundary and MUST NOT be repeated.
PTO-MCOPY-RESTART-001asl/block/lifecycle/MCOPY.asldb49373a481ffb30922c7a852a3f01e4bdb0442c39292fe8d48375f55cb520b906e3dc2ee6ebe4264371613a62f05321f4ccce45b26436df93800a3eac43803815 matching entries
PTO-AVS-BLOCK-MCOPY-DECODE-001tests/asl/block/lifecycle/MCOPY/block-decode-mcopy-canonical-001.aslcd46d630486a3ce97decadf3d1119d99c1117834d1033d73059184b8444ac23aPTO-AVS-BLOCK-MCOPY-GPR-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-gpr-001.asl052cc6b0cd601edcf044689d0d7372b5bad0249bc1cec167538976e2ca962605PTO-AVS-BLOCK-MCOPY-OVERLAP-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-overlap-001.asl8d40efb47749d5102e8d082c6e15016b8d85c2a448840f78fcd63124e8a8a951PTO-AVS-BLOCK-MCOPY-RANGE-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-range-001.asl8a2ad3ddd5c6c5f7f40b03146ae2276ad43f0eaac3886a4586d85750e4986b71PTO-AVS-BLOCK-MCOPY-RESTART-001tests/asl/block/lifecycle/MCOPY/block-fault-mcopy-restart-001.asl42cd0eb95bcfdbb5b5843c31abec30ce12de5ba09be386ea3bc2ee26442018faPTO-AVS-BLOCK-MCOPY-XLEN-001tests/asl/block/lifecycle/MCOPY/block-exec-mcopy-xlen-001.asld4e40724d0a5048297842bdd6ad766f964f5bcaf2f86f96e8a83cab7ae44027aPTO-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-0032…
ADR-0032docs/status/decisions/0032-bundle-command-totality-and-profile-boundaries.mde1f91826817343c0977a565a91e495a15397b83fa2af227124f225821ffa54aeLoading ADR-0052…
ADR-0052docs/status/decisions/0052-direct-tile-and-bundle-catalog-closure.md5fdb38bf480e37affe5075f93b35a57d32803018c986bfe05160f188a19ccaf6Loading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0084…
ADR-0084docs/status/decisions/0084-scalar-system-and-queue-operations.mde068992fa81e2c4ac46e492391a2f784141d68e041bf0b9e0586c37217d1e08c{
"classification": [
"lifecycle"
],
"documentation": "docs/block/lifecycle/MCOPY.md",
"id": "PTO-BLOCK-MCOPY",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "MCOPY",
"ndf_clause": "PTO-INST-BLOCK-MCOPY"
},
"mnemonic": "MCOPY",
"readiness_subjects": [
"ADR-0032",
"ADR-0052",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-BLOCK-MCOPY-GPR-001",
"PTO-AVS-BLOCK-MCOPY-OVERLAP-001",
"PTO-AVS-BLOCK-MCOPY-RANGE-001",
"PTO-AVS-BLOCK-MCOPY-RESTART-001",
"PTO-AVS-BLOCK-MCOPY-XLEN-001"
],
"source": "asl/block/lifecycle/MCOPY.asl",
"surface": "block",
"tests": [
"PTO-AVS-BLOCK-MCOPY-DECODE-001",
"PTO-AVS-BLOCK-MCOPY-GPR-001",
"PTO-AVS-BLOCK-MCOPY-OVERLAP-001",
"PTO-AVS-BLOCK-MCOPY-RANGE-001",
"PTO-AVS-BLOCK-MCOPY-RESTART-001",
"PTO-AVS-BLOCK-MCOPY-XLEN-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd86812db49373a481ffb30922c7a852a3f01e4bdb0442c39292fe8d48375f55cb520b9f7cb99a50cd3e17597763d0403f151555d43008dd39b463b31da6b2ec1596d15asl/block/lifecycle/MCOPY.aslasl/block/lifecycle/MCOPY.aslasl/block/lifecycle/MCOPY.asl