Unformatted text preview: he coprocessor cannot begin executing the instruction yet. The timing is such that both the ARM and the coprocessor must generate their respective signals autonomously. The coprocessor cannot wait until it sees cpi before generating cpa and cpb. Handshake outcomes Once a coprocessor instruction has entered the ARM7TDMI and coprocessor pipelines, there are four possible ways it may be handled depending on the handshake signals: 1. The ARM may decide not to execute it, either because it falls in a branch shadow or because it fails its condition code test. (All ARM instructions are con ditionally executed, including coprocessor instructions.) ARM will not assert cpi, and the instruction will be discarded by all parties. 2. The ARM may decide to execute it (and signal this by asserting cpi), but no present coprocessor can take it so cpa stays active. ARM will take the unde fined instruction trap and use software to recover, possibly by emulating the trapped instruction. 3. ARM decides to execute the instruction and a coprocessor accepts it, but cannot execute it yet. The coprocessor takes cpa low but leaves cpb high. The ARM will 'busy-wait' until the coprocessor takes cpb low, stalling the instruction stream at this point. If an enabled interrupt request arrives while the coprocessor is busy, ARM will break off to handle the interrupt, probably returning to retry the coprocessor instruction later. 4. ARM decides to execute the instruction and a coprocessor accepts it for immedi ate execution, cpi, cpa and cpb are all taken low and both sides commit to com plete the instruction. Data transfers If the instruction is a coprocessor data transfer instruction the ARM is responsible for generating an initial memory address (the coprocessor does not require any connection to the address bus) but the coprocessor determines the length of the transfer; ARM will continue incrementing the address until the coprocessor signals completion. The cpa and cpb handshake signals are also used for this...
View Full Document
This document was uploaded on 10/30/2011 for the course CSE 378 380 at SUNY Buffalo.
- Spring '09