SPRUJ28E November 2021 – September 2024 AM68 , AM68A , TDA4AL-Q1 , TDA4VE-Q1 , TDA4VL-Q1
The device interconnect provides two mechanisms to achieve quality of service (QoS): parallel routing based on order ID and arbitration based on priority. The order ID has two main usages: to order execution of transactions and parallel paths selection. The parallel paths are defined as multiple paths between master and slave. If two or more slaves share same physical memory map assignment, it is considered parallel paths.
The CBASS_MAP_i[7-4] ORDERID bit field is for transactions for each master and each channel of the master. This allows different mapping not only for each master, but also for each channel of the master, if multiple channels are supported. The CBASS_MAP_i[7-4] ORDERID bit field specifies the initial order ID value. The ORDERIDx bit fields in CBASS_GRP_MAP1_j and CBASS_GRP_MAP2_j registers take the initial order ID value and result in a final order ID value, which is nothing more than a 4-bit identifier used for path routing. The final order ID is used to differentiate the paths to a slave and thus allowing load balancing of the traffic over each path.
The interconnect performs traffic routing and switching from a number of masters to a number of slaves. The masters send transactions. The interconnect decodes which slave is being accessed based on special signals and memory map and routes that transaction to the slave. The interconnect also arbitrates for a slave when there are multiple transactions being requested simultaneously. The arbitration is based on transaction priority. Once a transaction is selected, the interconnect sends the transaction to the slave. The transaction priority is controlled per master and per channel of the master through the CBASS_MAP_i[14-12] EPRIORITY bit field. The priority setting for each master can be done by any processor. Increasing the priority level for certain master can help the transaction from that master to have advantage on winning arbitration, therefore improving the latency and bandwidth for the transactions from that master.
Since the order ID is controlled from configuration registers, the user can re-partition the traffic among parallel paths to achieve better load balance adjusted for specific use cases. As order ID has routing implication for both command and return data, its configuration must not be changed during run time. Otherwise, the return data may be routed to wrong path and cause system hang. To avoid this, the system must be put into idle state with no traffic on the interconnect before reprogramming procedure.
Route ID is not related to QoS. For route ID description, see Section 3.2.2.
There are no master modules on the INFRA_CBASS0 and INFRA_NS_CBASS0 interconnects.
The interconnect inside NAVSS0 uses order ID to provide multiple (at least two) parallel paths to DDR and a separate set of multiple (at least two) parallel paths to SRAM. NAVSS0 also provides multiple (at least two) parallel paths for the DMA traffic to SoC level, which can provide isolated DMA traffic paths. For more information, see Navigator Subsystem (NAVSS).
The MSMC does not use order ID for routing purpose to provide separate physical paths for transaction. Instead, it provides two threads to isolate two classes of transactions: thread 0 and thread 2. The arbitration between these two threads is based on credits, and thread 2 has priority over thread 0 when both threads have credits available for transfer. In addition, there is bandwidth management scheme based on transaction priority and bandwidth starvation prevention mechanism. For more information, see Multicore Shared Memory Controller (MSMC).
By default all masters send transactions with order ID = 0. All transactions with the same order ID execute in order if they are sent to the same slave or going through a common bridge. On the SoC level interconnect, the order ID is used to partition the transactions to MSMC and DDR data space into parallel routing paths. Further, the north bridge inside NAVSS0 provides multiple parallel paths to the compute cluster. Each path is separated by order ID value. All read commands towards MSMC and DDR sharing the same order ID and sharing the same master path from SoC side (including NAVSS0) provide read return data in order back to the master port. The write response can be returned out of order for the same order ID value. Therefore, programming order ID has implications on overall system performance as well as achieving QoS for certain class of traffic. Multiple configurations are needed to make sure that the QoS goal is met.
For any write to address range 0x4500_0000 to 0x45FF_FFFF, it is recommended to read back the value after the write to make sure the write landed. The registers in this regions are mainly for firewall configuration, ISC/DMA credential configuration, QoS MMR configuration.
On QoS MMR configuration, in order to configure certain transaction to be the highest priority, the priority field needs to be set to zero for that transaction. In order to make sure that priority field is indeed to set to zero, the following sequence should be followed:
See Appendix Spreadsheet for CBASS0 QoS MMR details.