6-36 Instruction Set of the I/O Processor
6.7 Memory Move Instructions
This SCRIPTS instruction allows the LSI53C810A to execute
high-performance block moves of 32-bit data from one part of main
memory to another. In this mode, the LSI53C810A is an independent,
high-performance DMA controller irrespective of SCSI operations. Since
the registers of the LSI53C810A can be mapped into system memory,
this SCRIPTS instruction also moves an LSI53C810A register to or from
memory or another LSI53C810A register.
For Memory Move instructions, bits 5 and 4 (SIOM and DIOM) in the
DMA Mode (DMODE) register determine whether the source or
destination addresses reside in memory or I/O space. By setting these
bits appropriately, data may be moved within memory space, within I/O
space, or between the two address spaces.
The Memory Move instruction is used to copy the specified number of
bytes from the source address to the destination address.
Allowing the LSI53C810A to perform memory moves frees the system
processor for other tasks and moves data at higher speeds than available
from current DMA controllers. Up to 16 Mbytes may be transferred with
one instruction. There are two restrictions:
• Both the source and destination addresses must start with the same
address alignment A[1:0]. If source and destination are not aligned,
then an illegal instruction interrupt occurs.
• Indirect addresses are not allowed. A burst of data is fetched from
the source address, put into the DMA FIFO and then written out to
the destination address. The move continues until the byte count
decrements to zero, then another SCRIPTS instruction is fetched
from system memory.