4 Programming the scatter list walker

The scatter list walker receives translation requests from the translation control block and initiates an AXI transaction to read entries from the scatter list. It generates translation responses after the AXI read response is received.

The scatter list walker is initialized when the CATU is enabled in translate mode. During initialization, internal Translation Lookaside Buffers (TLBs) are populated by fetching the translation values stored at SLADDR over the AXI master interface. TLBs cache recently accessed address translations.

The scatter list forms a double linked list. This double linked list ensures that the list itself is not larger than 4KB, and that the list can be walked through in both directions.

The translation control block is responsible for controlling the address translation. In the event of a failed lookup in the TLB, translation requests are sent to the scatter list walker. There are two types of translation request:

TLB update

In the case of a write address, the scatter list walker generates a read request for the current and the next page address. After receiving the read response, it generates a translation response and the WR and WR_NEXT TLB entries are filled.

In the case of a read address, the scatter list walker generates a read request for the current page address. After receiving the read response, it generates a translation response and the RD TLB entry is filled.

TLB prefetch

In this case, the scatter list walker generates a read request for the next page only. After receiving the read response, the WR_NEXT TLB entry is updated.

The AXI AR channel cache and prot signals are set according to the AXICTRL register.

Non-ConfidentialPDF file icon PDF version100806_0300_00_en
Copyright © 2017, 2018 Arm Limited or its affiliates. All rights reserved.