User Manual
BCM1250/BCM1125/BCM1125H
10/21/02
B r o a d c o m C o r p o r a t i o n
Document
1250_1125-UM100CB-R
Section 6: DRAM Page
107
M
EMORY
A
CCESS
S
EQUENCING
Certain applications need more control over the memory access pattern than is available using the normal
operations in the memory controller, for example when the memory is being used for transaction logging. The
controller was designed to optimize the normal case, but there are several methods that software can use to
force the sequence.
The ultimate control is to set the force_seq bit in the
mc_config
register. This forces the controller to send
requests to the SDRAMs in the same order their address phase happens on the ZBbus. This prevents most of
the memory optimizations and is likely to be low performance.
In many cases a memory barrier operation is sufficient. This can be provided by an access to the memory
controller configuration registers. An access to one of the channel registers will force all reads/writes ahead of
it to complete before any behind it. In the normal case a CPU doing a write of A to address 1 followed by a
write of B to address 2 provides no guarentee that A gets written into the SDRAM before B. However, if the
CPU performs a write of A to address 1 followed by a write of 0 to the
mc_test_ecc
register and finally the
write of B to address 2 then A is always written to memory before B. All these operations are posted, so the
CPU has no way of knowing when they complete.
If the CPU needs to both place a memory barrier and be informed of the completion then a read may be done
to one of the controller configuration registers. If the CPU performs a write of A to address 1 followed by a read
of the
mc_test_ecc
register and finally a write of B to address 2 then A is always written to memory before B
and when the CPU sees the result of the read it knows that A will have been written to the SDRAM (but B may
still be in the queue). A sync instruction or use of the read result can be used to stall the CPU until the read
completes.
C
LOCK
R
ATIOS
AND
C
LOCKING
S
CHEME
The memory clock range is from 133 MHz - 200 MHz produced by dividing down the ZBbus clock, which is half
the CPU core frequency. The ratio of the clocks can be set from 1:2 to 1:4.5 in steps of 0.5, by programming
the channel configuration register. The channels may run at different speeds.
Table 58: Clock Speed
CPU Clock
ZBbus
Clock
Memory
Clock 4.5:1
Memory
Clock 4:1
Memory
Clock 3.5:1
Memory
Clock 3:1
Memory
Clock 2.5:1
Memory
Clock 2:1
1200
600
133.3
150.0
171.4
200.0
240.0
300.0
1150
575
127.8
143.8
164.3
191.7
230.0
287.5
1100
550
122.2
137.5
157.1
183.3
220.0
275.0
1050
525
116.7
131.3
150.0
175.0
210.0
262.5
1000
500
111.1
125.0
142.9
166.7
200.0
250.0
950
475
105.6
118.8
135.7
158.3
190.0
237.5
900
450
100.0
112.5
128.6
150.0
180.0
225.0
850
425
94.4
106.3
121.4
141.7
170.0
212.5
800
400
88.9
100.0
114.3
133.3
160.0
200.0
750
375
83.3
93.8
107.1
125.0
150.0
187.5
700
350
77.8
87.5
100.0
116.7
140.0
175.0
650
325
72.2
81.3
92.9
108.3
130.0
162.5