OMAP-L1x/C674x/AM1x SoC Level Optimizations

From Texas Instruments Embedded Processors Wiki

Jump to: navigation, search
Translate this page to   

^ Up to main OMAP-L1x/C674x/AM1x SOC Architecture and Throughput Overview Table of Contents

Contents

Master Priority and Interconnect Arbitration

The system interconnect or the Switched Central Resource (SCR) system provides priority-based arbitration to select the connection between master and slave peripherals; this arbitration is based on the priority value of each master port.
Each master can have a priority value between 0 and 7


Interconnect Arbitration Scheme

At any given instance read and write requests from multiple masters may compete for the same end point (an end point can be a slave peripheral, on- or off-chip memory, or an infrastructure component such as a bridge/SCR that connects to multiple slave peripherals). The SCRs use the following arbitration scheme to resolve contention:

  1. At each priority level, one request from each master is selected in a round robin manner.
  2. The highest priority request is selected.
  3. Arbitration occurs at burst size boundaries (or lower).

Recommendations

NOTE: EMIFB controller on OMAPL1x7/C6747/C6745/C6745 and DDR2/mDDR memory controller on OMAPL1x8/C6748/C6746/C6742 slave endpoint may re-order commands, irrespective of the master priority. For EMIF command re-ordering please review the next sub-section.

External Memory Interface Controller (EMIFB SDRAM/mDDR/DDR2) Command Re-Ordering (BPRIO/PBBPR setting)

The external memory interface controller has the ability to re-order commands to optimize its efficiency. This command re-ordering is performed by the EMIF controller irrespective of priority of the master sending these commands.

NOTE: The command re-ordering and associated details do not apply to EMIFA SDRAM interface on this device family. 

Impact of Command Re-ordering Scheme

EMIF command re-ordering may:


Recommendations

OMAP-L137/c6747'/c6745/AM17x': 
EMIFB BPRIO register (offset 0x20), PRIO_RAISE value. 
Bus Word: 4 bytes (32 bit bus internally connecting to EMIFB controller)

OMAP-L138/c6748/c6746/c6742/AM18x: 
mDDR/DDR2 PBBPR register (offset 0x20), PR_OLD_COUNT value. 
Bus Word: 8 bytes (64 bit bus internally connecting to mDDR/DDR2 controller 


EMIF Arbitration/Command Re-Ordering Scheme Details (Advanced Reading)

Stage 1 (for command from each master):

Stage 2 (for all commands in the command FIFO):

Stage 3

Stage 4



c674x DSP Related Optimizations

The following sub-sections are specific to the c674x megamodule within the OMAPL1x/c674x device family. These are primarily relevant to data transfers and accesses to L1/L2 memories internal to the c674x DSP (from components within the megamodule or from masters outside the megamodule) and highlight some c674x megamodule specific features and optimization guidelines.


EDMA3 vs IDMA vs c674x CPU

Internal Direct Memory Access (IDMA) Controller

The internal direct memory access (IDMA) controller is used to perform fast-block transfers between any two memories local to the C674x+ DSP. Local memories include Level 1 program (L1P), Level 1 data (L1D), and Level 2 (L2) memories. The IDMA is optimized for rapid burst transfers of memory blocks (contiguous data). The intent of the IDMA is to relieve the C674x+ DSP of on-chip memory (to/from L1D/L2) data movement tasks. For more details on the IDMA controller, see TMS320C674x DSP Megamodule Reference Guide

NOTE: IDMA cannot be used for transfers to/from system memory external to the DSP megamodule including Shared RAM, ARM RAM or external memory.
Enhanced Direct Memory Access (EDMA3) Controller

The EDMA3 is the device/system DMA controller. Its primary purpose is to service user programmed data transfers between internal (DSP L1/L2, Shared RAM) and external (SDRAM, DDR2/mDDR, or flash memory) or memory-mapped peripherals (like serial ports, MMC/SD etc). Apart from linear transfers, it also allows enables advanced features such as linking, chaining, 2-D transfers, etc.

Things to note

The following are a couple of points to keep in mind when choosing EDMA, c674x CPU, or IDMA for data transfers:

In summary, when the geometry is fairly simple (i.e., 1-D transfers) and performance is the biggest care-about, the IDMA makes the most sense. On the other hand, when extra flexibility and features (e.g., linking, chaining, 2-D transfers) are desired over performance, the EDMA should be used. Note that competing accesses to these memories (by multiple masters) will degrade the IDMA performance.


Bandwidth Management Module

The bandwidth management module (BWM) in the c674x megamodule is responsible for arbitrating requests from multiple requestors into DSP L1/L2 memories. This allows better overall bandwidth allocation of the DSP memoreis as well ensure that some requestors do not block the resources/memories for extended period of time. The potential requestors for c674x megamodule memories are c674x CPU initiated transfers ( data/program accesses), c674x cache controller accesses, IDMA and accessess initiated from outside the DSP via the DSP SDMA port ( system DMA, master peripherals like EMAC, UHPI etc). The BWM has programmable priority control and conflict counters that be tuned based on the system tuning.

In general the default values for priorities and conflict counters (maxwait period) do not need to be changed and when dealing with chip/system level bottlenecks and resource issues, it is recommended to focus on other system level optimization knobs mentioned in this page.

For additional details on the BWM module, please see the TMS320C674x DSP Megamodule guide. 


E2e.jpg For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article OMAP-L1x/C674x/AM1x SoC Level Optimizations here.
Hyperlink blue.png Links
ARM Microcontroller MCU ARM Processor Digital Media Processor Digital Signal Processing Microcontroller MCU Multi Core Processor
Ultra Low Power DSP 8 bit Microcontroller MCU 16 bit Microcontroller MCU 32 bit Microcontroller MCU

Leave a Comment
Personal tools
Namespaces
Variants
Actions
Navigation
Print/export
Toolbox