Cycle stealing


Cycle stealing

Cycle stealing is used to describe the "stealing" of a single CPU cycle, for example, to allow a DMA controller to perform a DMA operation. This is opposed to block operation where a DMA controller would request a bus, hold it for a complete transaction (typically 16-32 bytes but could last much longer) before releasing to a CPU.

Cycle stealing generally occurs when the entire DMA transfer of data is finished, the DMA controller interrupts the CPU.

Modern architecture

This term is less common in modern computer architecture (say above 66-100 MHz), where the various external buses and controllers generally run at different rates, and CPU internal operations are no longer closely coupled to I/O bus operations.

Examples in actual computer systems

Cycle stealing has been the cause of major performance degradation on machine such as the Sinclair QL, where, for economy reasons, the video RAM was not dual access. Consequently, the M68008 was denied access to the memory bus when the ZX8301 was accessing memory, and the machine performed poorly when compared with machines using similar processors at similar speeds.

Cycle stealing was also the cause of errors reported by the Apollo PGNCS of the Apollo Guidance Computer.[1][2]

References

  1. ^ Adler, Peter (1998), Jones, Eric M., ed., "Apollo 11 Program Alarms", Apollo 11 Lunar Surface Journal (NASA), http://www.hq.nasa.gov/office/pao/History/alsj/a11/a11.1201-pa.html, retrieved 2009-09-01 
  2. ^ Martin, Fred H. (July, 1994), Jones, Eric M., ed., "Apollo 11 : 25 Years Later", Apollo 11 Lunar Surface Journal (NASA), http://www.hq.nasa.gov/alsj/a11/a11.1201-fm.html, retrieved 2009-09-01