EMIF
2. Request for a read or a write.
3. SDRAM Activate commands.
4. SDRAM Deactivate commands.
5. SDRAM Deep Power-Down request.
6. SDRAM clock stop or Power-Down request.
7. SDRAM refresh request due to Refresh May or Release level of refresh urgency reached (Refer
Section Refresh Scheduling)
8. (Lowest priority) SDRAM self-refresh request.
7.3.3.5.2 Command Starvation
The reordering and scheduling rules listed above may lead to command starvation, which is the
prevention of certain commands from being processed by the DDR2/3/mDDR memory controller.
Command starvation results from the following conditions:
•
A continuous stream of high-priority read commands can block a low-priority write command
•
A continuous stream of DDR2/3/mDDR SDRAM commands to a row in an open bank can block
commands to the closed row in the same bank.
To avoid these conditions, the DDR2/3/mDDR memory controller can momentarily raise the priority of the
oldest command in the command FIFO after a set number of transfers have been made. The
REG_COS_COUNT_1,REG_COS_COUNT_2 field in the Interface Configuration Register (INT_CONFIG)
sets the number of the transfers that must be made before the DDR2/3/mDDR memory controller will raise
the priority of the oldest command. See Class of Service (COS) section for more details.
NOTE:
Leaving the REG_COS bits at their default value (FFh) in the Interface Configuration register
(INT_CONFIG) disables this feature of the DDR2/3/mDDR memory controller. This means
commands can stay in the command FIFO indefinitely. Therefore, these bits should be set to
FEh immediately following reset to enable this feature with the highest level of allowable
memory transfers. It is suggested that system-level prioritization be set to avoid placing high-
bandwidth masters on the highest priority levels. These bits can be left as FEh unless
advanced bandwidth/prioritization control is required.
7.3.3.5.3 Possible Race Condition
A race condition may exist when certain masters write data to the DDR2/3/mDDR memory controller. For
example, if master A passes a software message via a buffer in DDR2/3/mDDR memory and does not
wait for indication that the write completes, when master B attempts to read the software message it may
read stale data and therefore receive an incorrect message. In order to confirm that a write from master A
has landed before a read from master B is performed, master A must wait for the write completion status
from the DDR2/3/mDDR memory controller before indicating to master B that the data is ready to be read.
If master A does not wait for indication that a write is complete, it must perform the following workaround:
1. Perform the required write.
2. Perform a dummy write to the DDR2 memory controller module ID and revision register.
3. Perform a dummy read to the DDR2 memory controller module ID and revision register.
4. Indicate to master B that the data is ready to be read after completion of the read in step 3.
The completion of the read in step 3 ensures that the previous write was done.
For a list of the master peripherals that need this workaround, see the device-specific data sheet.
7.3.3.5.4 Class of Service (COS)
The commands in the Command FIFO can be mapped to 2 classes of service namely 1 and 2. The
mapping of commands to a particular class of service can be done based on the priority or the connection
ID.
415
SPRUH73H – October 2011 – Revised April 2013
Memory Subsystem
Copyright © 2011–2013, Texas Instruments Incorporated