Bus interface
ARM610 Data Sheet
10-5
10.8 Memory Access Types
ARM610 performs many different bus accesses, and all are constructed out of
combinations of nonsequential and sequential accesses. There may be any number of
idle cycles between two other memory accesses. If a memory access is followed by
an idle period on the bus (as opposed to another nonsequential access), the address,
and the signal
nRW
and
nBW
, will remain at their previous value in order to avoid
unnecessary bus transitions.
The accesses performed by an ARM610 are:
Unbuffered Write
See
·
10.8.1 Unbuffered Writes / Uncacheable Reads
Buffered Write
See
·
10.8.2 Buffered Write
Linefetch
See
·
10.8.3 Linefetch
Level 1 translation fetch
See
·
10.8.4 Translation Fetches
Level 2 translation fetch
See
·
10.8.4 Translation Fetches
Read-Lock-Write sequence
See
·
10.8.5 Read - Lock - Write
10.8.1 Unbuffered Writes / Uncacheable Reads
These are the most basic access types. Apart from the difference between read and
write, they are the same. Each may consist of a single (LDR/STR) or multiple (LDM/
STM) access. A multiple access consists of a nonsequential access followed by a
sequential access. These cycles always reflect the type of the instruction requesting
the cycle (ie. read/write, byte/word).
10.8.2 Buffered Write
The external bus cycle of a buffered write is identical to and indistinguishable from the
bus cycle of an unbuffered write. These cycles always reflect the type (byte/word) of
the instruction requesting the cycle. If several write accesses are stored concurrently
within the write buffer, each access on the bus will start with a nonsequential access.
10.8.3 Linefetch
This appears on the bus as a nonsequential access followed by three sequential
accesses. Linefetch accesses always start on a quad-word boundary, and are always
word accesses. So if the instruction which caused the linefetch was a byte load
instruction (ie. LDRB), the linefetch access will be a word access on the bus.