Interconnect components often use the Single Slave per ID (SSID) rule to
simplify implementation. This means some loss of performance. The rule applies in the
following circumstances:
- A master routes transactions to more than one output port (slave), and
- Multiple transactions are outstanding, and
- Transactions use the same ID
According to AXI ordering rules, transactions using the same ID must be responded to in the same order they were issued. However, under the conditions stated above, it is possible that different slaves have different latencies. As a result, the responses might be returned out of order. To prevent that occurring, the component does the following:
- If a transaction destined to port A with ID x arrives, and there are already some pending transactions with ID x to port B. In this case the master waits until all pending transactions with ID x to port B complete before routing the new request to port A.
In effect, the master ensures that any ID value can be pending only to a single slave destination. This ensures that responses cannot return out of order, thus the name “Single Slave per ID”. In some cases, particularly with interleaved memories, this can have a negative impact on performance.