Services and Modeling for Embedded Software Development
Embecosm divider strip
Prev  Next

2.3.3.  Blocking, Non-Blocking, Debug and Direct Memory Interfaces

There are two principal types of TLM 2.0 transport function.

  1. The blocking transport functions are called by the initiator thread, received by the target thread, which processes the request and then returns the result. Until the transaction has been processed and released the initiator thread is blocked.

  2. The non-blocking transport functions are called by the initiator thread, received by the target thread, which immediately returns, before processing the request. Subsequently the target, having processed the request makes a transport call backwards to the initiator to return the result.

In the non-blocking case there are actually two types of transport used. The forward transport path is used by the initiator to pass the request to the target and the backward transport path used by the target to return the response. The advantage of the non-blocking transport interface is that the initiator can carry on processing, while the target is processing the request originally made.

In addition TLM 2.0 provides two more specialized types of transaction.

  1. A debug transaction is a read that does not affect the state of the model. These are for use by debuggers, which wish to see the state of a model, without affecting that state.

  2. TLM 2.0 recognizes that a full-blown transaction is too heavyweight for some types of access. For example an ISS accessing memory using transactions would destroy performance. TLM 2.0 provides the concept of a direct memory interface, allowing threads direct access to blocks of memory in other threads for high performance.

Embecosm divider strip