MMIX LOGO

MMIX Instruction Set

Table of Content

Content

SYNCID

Name:

SYNCID X,$Y,$Z

Timing:

SYNCID: υ

Description:

Synchronize instruction and data cache in the region $Y+$Z to X+$Y+$Z.

SYNCID: "Synchronize instructions and data"
When executed from nonnegative locations these instructions have no effect on registers or memory if the computer has no instruction cache separate from a data cache. But when such a cache exists, they force the computer to make sure that the X + 1 bytes M[$Y + $Z] through M[$Y + $Z + X], or M[$Y + Z] through M[$Y +Z+X], will be interpreted correctly if used as instructions before they are next modified. (Generally speaking, an MMIX program is not expected to store anything in memory locations that are also being used as instructions. Therefore MMIX's instruction cache is allowed to become inconsistent with respect to its data cache. Programmers who insist on executing instructions that have been fabricated dynamically, for example when setting a breakpoint for debugging, must first SYNCID those instructions in order to guarantee that the intended results will be obtained.) A SYNCID command might be implemented in several ways; for example, the machine might update its instruction cache to agree with its data cache. A simpler solution, which is good enough because the need for SYNCID ought to be rare, removes instructions in the specified range from the instruction cache, if present, so that they will have to be fetched from memory the next time.

Please help to keep this site up to date! If you want to point out important material or projects that are not listed here, if you find errors or want to suggest improvements, please send email to email