跳转至

WbFuBusyTable

  • Version: V2R2
  • Status: OK
  • Date: 2025/01/20
  • commit: xxx

Functionality

The main function of the WbFuBusyTable module is to manage and synchronize the busy tables of different execution units with the writeback ports.

The main process is as follows:

  1. Busy table information from the integer scheduler, floating-point scheduler, vector scheduler, and load/store scheduler is merged by type into a global busy table.
  2. Bind the global busy table with execution unit parameters. Obtain the maximum delay and deterministic flag (whether the functional unit execution delay is deterministic) for each writeback port from the parameters, and generate the hardware busy table based on the delay configuration.
  3. Determine if the execution unit is connected to the specified writeback port based on the writeback physical register type.
  4. Merge the busy status of each execution unit into the busy table of the writeback port.
  5. Distribute the busy table of the writeback port to the issue queues of each scheduler.

Functional Unit Busy Table FuBusyTable

The functional unit busy table records the busy status of each functional unit at different time points. Only functional units with deterministic delays have a functional unit busy table. Its width is the delay length of the functional unit's execution. Each bit corresponds to a specific time point, where "1" means the functional unit is busy at this time point, and "0" means it is idle.

Functional Unit Busy Table Write FuBusyTableWrite

The main function of the functional unit busy table write is to update the state of the functional unit busy table. It receives various response signals, such as the issue queue dequeue signal (deqResp), the response signal returned after the og0 stage processing is completed (og0Resp), and the response signal returned after the og1 stage processing is completed (og1Resp). It updates the busy table based on the validity of these signals and the functional unit type. When an instruction is successfully issued, the corresponding position in the busy table will be set to "1" based on the functional unit type and delay information in the response signal, indicating that the functional unit is busy. When an instruction fails to issue in the og0 or og1 stage, the value corresponding to the time point in the busy table will be cleared based on the functional unit type and delay information in the response signal, indicating that the functional unit is idle.

Functional Unit Busy Table Read FuBusyTableRead

The functional unit busy table read generates a mask by processing the busy table and functional unit type, which is used to indicate which instructions can use the corresponding functional unit.