How SRT Division Uses Lookup Tables in Binary
The Sweeney, Robertson, and Tocher (SRT) division algorithm accelerates binary hardware division by using redundant number representations and small lookup tables to select quotient digits. Instead of performing slow, full-width comparisons at each iteration, the algorithm inspects only a few leading bits of the divisor and the intermediate remainder to determine the next quotient digit. This table-driven prediction minimizes critical path latency, enabling microprocessors to compute floating-point and integer division at high clock frequencies.
The Problem with Traditional Division
In conventional restoring or non-restoring binary division, determining each quotient bit requires subtracting the full-width divisor from the partial remainder. If the result is negative, the operation must be restored or corrected. This creates a sequential bottleneck because every step depends on the complete propagation of carries across the entire word length before the next bit can be chosen.
Redundant Digit Sets and Overlap
SRT division overcomes this bottleneck by using a redundant quotient digit set (such as \(\{-1, 0, 1\}\) for Radix-2, or \(\{-2, -1, 0, 1, 2\}\) for Radix-4) instead of the standard binary \(\{0, 1\}\).
The redundant digit representation introduces overlapping regions in the Robertson diagram (P-D plot), which maps the partial remainder against the divisor. Because multiple quotient digit choices are mathematically valid within these overlap zones, the hardware does not need an exact value of the partial remainder to pick a valid next digit. An approximation is sufficient.
Quotient Selection via Lookup Tables
Because an approximation is allowed, the Quotient Selection Logic (QSL) can be implemented as a compact lookup table (often synthesized as a small Programmable Logic Array or combinational ROM).
The lookup table functions through the following steps:
- Bit Truncation: At each iteration, the system extracts only the most significant bits (typically 3 to 5 bits depending on the radix and redundancy factor) of the shifted partial remainder and the normalized divisor.
- Table Indexing: These truncated bits serve as the address inputs to the lookup table.
- Digit Output: The table outputs the next quotient digit (\(q_{j+1} \in \{-1, 0, 1\}\)).
- Recurrence Update: The partial remainder is updated using the recurrence formula: \[R_{j+1} = r \cdot R_j - q_{j+1} \cdot D\] where \(r\) is the radix, \(R\) is the partial remainder, and \(D\) is the divisor.
Synergies with Carry-Save Arithmetic
The lookup table approach allows the partial remainder to be stored in redundant carry-save form (separate sum and carry vectors) rather than being fully resolved with a carry-propagate adder. When feeding the lookup table, only the top few bits of the sum and carry vectors are added together using a very short, fast adder. The remainder of the division step uses carry-save adders, which operate in constant time independent of operand width.
Hardware Efficiency and Speed
By replacing full-width comparisons with a low-input lookup table and carry-save additions, SRT division reduces the cycle time of each division step to a few logic gate delays. The lookup table guarantees that as long as the inputs remain within normalized bounds, the selected digit keeps the next partial remainder bounded, allowing rapid, digit-by-digit quotient generation until the desired precision is achieved.