BCM1250/BCM1125/BCM1125H
User Manual
10/21/02
B r o a d c o m C o r p o r a t i o n
Page
104
Section 6: DRAM
Document
1250_1125-UM100CB-R
M
EMORY
C
ONTROLLER
A
RCHITECTURE
The memory controller consists of a ZBbus interface and one or two memory channel interfaces. The channels
on the BCM1250 are numbered 0 and 1, the BCM1125/H only has channel 1. The block diagram is shown in
The ZBbus interface consists of:
•
The request queue (RQQ).
•
A data buffer (DBF) for read and write.
•
The scheduler for issuing requests to memory (out-of-order).
The Request Queue (RQQ) is a 16 entry shift-register queue. Entries are added in-order as requests come
from ZBbus and are issued out-of-order to the memory channels. Any entry in the RQQ can be issued to
memory. Entries in the queue can be reserved for use by network DMA, this reduces the latency of reads and
improves performance when using slower or highly loaded memory systems.
The Data Buffer (DBF) is also 16 entry and is shared between reads and writes. Each entry in the buffer is a
full 256 bit block wide. The buffer has multiple pairs of read and write ports; one pair for ZBbus which can
transfer a full block each access, and a pair for each of the memory ports that transfer 64 bit double words.
When a request is received from ZBbus, entries are allocated in both the RQQ and the DBF. Entries are
normally added to the RQQ in sequential order. However, checks are first done to detect any write to read or
write to write address dependencies.
The RQQ holds the memory access information and initially the DBF is empty. If the request is a write then the
request is not ready for submission to the memory until the data has been received from ZBbus and written to
the DBF, at which time the RQQ entry becomes valid for the memory scheduler. Both entries are freed when
the write request is issued to the SDRAMs. If the request is a read the RQQ entry becomes valid as soon as
the L2 cache reports a miss, and the DBF entry is used to stage the data when it returns from memory. In this
case the entries are freed when the data is sent on ZBbus.
The memory controller calculates an ECC during writes, and will check it during reads. This provides correction
of all single bit errors and detection of double bit errors. An extra 8 bit ECC bus accompanies the 64 bit data
bus, matching the standard 72 bit DDR DIMMs. ECC checking can be disabled.
The memory controller will service uncacheable requests from ZBbus. A read-modify-write cycle for the full line
is needed for uncacheable writes, merging the new data into the existing block and recalculating the ECC. The
additional memory accesses and the poor utilization of the DBF will cause the memory system performance
to degrade if many uncacheable accesses are done.