Background: The speculator receives two inputs. One is the (real) data, which is used for the comparison with the predicted data (sometimes also speculative data). The other is a control token called enable signal, which is used to determine the timing of performing speculation.
In Haoran's implementation, the two ready bits of the predictor (internal module in the speculator) are always set to 1, which makes the speculator's all ready signals always 1.
It may cause a bug in the following situation.
In the circuit of the figure below, when the data channel of the cond_br stalls, the output data of the speculator also stalls. If the two inputs of the speculator don't stall, it loses some tokens that should be passed to predecessor units and causes the matching problem.
Background: The speculator receives two inputs. One is the (real) data, which is used for the comparison with the predicted data (sometimes also speculative data). The other is a control token called enable signal, which is used to determine the timing of performing speculation.
In Haoran's implementation, the two ready bits of the predictor (internal module in the speculator) are always set to 1, which makes the speculator's all ready signals always 1. It may cause a bug in the following situation.
In the circuit of the figure below, when the data channel of the cond_br stalls, the output data of the speculator also stalls. If the two inputs of the speculator don't stall, it loses some tokens that should be passed to predecessor units and causes the matching problem.