Intel Agilex® 7 F-Series and I-Series FPGA Memory Subsystem IP User Guide

ID 789389
Date 12/04/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.2.3.6. Optimization Features

Handles

To make entry management operations more efficient in a system, each key can be uniquely addressed using a handle. The handles are generated by the lookup hardware, as illustrated in the following figure.

Figure 14. Generating a Handle

The handles are unique within a logical table, but not between logical tables. It is the responsibility of the upper software layers external to the lookup subsystem, to maintain handles on a per-logical table basis.

Alternatively, the software can merge the table ID and the handle returned by the lookup, to form a globally-unique handle, within the lookup system. This operation must be reversed before any operations are requested from the lookup engine.

MBL supports several handle-management modes: full auto, semi-auto, and full manual. You can control the mode through software, using the MBL_GEN_CTRL register.

The get handle feature is available when you enable the Semi-automatic pointer management option. (Refer to the description of the MBL_GEN_CTRL register for details). When enabled, a number of next handles can be obtained using the MBL_GET_HANDLE management command. The number of free handles that you can obtain is limited only by the key table capacity to which the lookup module has been configured.

The free handles can be stored by the software and used later when key insertion commands are used. In this mode, the key insertion commands do not automatically obtain the next free pointer. The software must provide a handle as part of the insert command (via the MBL_KEY_HANDLE register), which becomes the pointer to the key table and is returned to the handle register.

When a key is deleted from the database, the pointer release is performed automatically by the hardware.

Note: Setting the mode should be done after the initialization and before inserting entries. The mode must not be changed during the module’s operation. Switching modes can cause unexpected behavior.

The reserved handles feature allows you to reserve a number of handles, starting from 0. This can be necessary in systems that require some initial handle values to be reserved and not used by the main lookup. The number of reserved handles is defined by the START_POINTER parameter. The capacity of the system is reduced by the number of reserved handles

Logical Tables

The MBL can operate as a single lookup table or can be divided into a number of logical tables. It can be configured through the LOG2_TABLES parameter. All logical tables are independent; the same key can be inserted into multiple logical tables.

If the system is configured to support more than one logical table, each lookup request must be directed to a specific logical table, which is selected by a dedicated input port app_ss_st_req_tuser_tab within the lookup request interface.

The order of lookup requests is maintained in the responses at the output, including the logical tables to which requests were made. This is also applicable in the case when the DDR throughput is exceeded; in that case, the responses have the error flag set, but the order is maintained.