Coprocessor Interface
ARM DDI 0301H
Copyright © 2004-2009 ARM Limited. All rights reserved.
11-4
ID012310
Non-Confidential, Unrestricted Access
Other instructions, for example MCR and MRC, transfer data between core and coprocessor
registers. The CDP instruction controls the execution of a specified operation on data already
held within the coprocessor, writing the result back into a coprocessor register, or changing the
state of the coprocessor in some other way. Opcode fields within the CDP instruction determine
the operation that is to be carried out.
The core pipeline handles both core and coprocessor instructions. The coprocessor, on the other
hand, only deals with coprocessor instructions, so the coprocessor pipeline is likely to be empty
for most of the time.
11.2.2
Coprocessor control
The coprocessor communicates with the core using several signals. Most of these signals control
the synchronizing queues that connect the coprocessor pipeline to the core pipeline. Table 11-2
lists the signals used for general coprocessor control.
11.2.3
Pipeline synchronization
Figure 11-1 on page 11-5 shows an outline of the core and coprocessor pipelines and the
synchronizing queues that communicate between them. Each queue is implemented as a very
short
First In First Out
(FIFO) buffer.
No explicit flow control is required for the queues, because the pipeline lengths between the
queues limits the number of items any queue can hold at any time. The geometry used means
that only three slots are required in each queue.
The only status information required is a flag to indicate when the queue is empty. This is
monitored by the receiving end of the queue, and determines if the associated pipeline stage can
move on. Any information that the queue carries can also be read and acted on at the same time.
Table 11-2 Coprocessor control signals
Signal
Description
CLKIN
This is the clock signal from the core.
nRESETIN
This is the reset signal from the core.
ACPNUM[3:0]
This is the fixed number assigned to the coprocessor, and is in the range 0-13. Coprocessor numbers
10, 11, 14, and 15 are reserved for system control coprocessors.
ACPENABLE
When set, enables the coprocessor to respond to signals from the core.
ACPPRIV
When asserted, indicates that the core is in privileged mode. This might affect the execution of certain
coprocessor instructions.