You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I found another strange thing (possibly a bug):
I accidentally set the NoCache mode to return always a fault (the got: false should have been got: true).
public getFaultyDatum(address: number): Datum | Error {
const data = this.memory.getData(address);
if (data instanceof Error) return data;
return { value: data, got: false };
}
I expected that this would cause an infinite execution of code that uses memory instructions, as the memory FU would always stall. Instead, the machine assumes that after a fault it always gets the datum, should be this the accepted behavior?
There are 2 mains issues:
https://github.com/etsiiull/SIMDE/blob/d577cd8cfc7bb244ac8c1ba0ab42797ea3391797/src/core/Common/Memory.ts#L49
As we have discussed, not allowing cache faults twice in a row is not necessary, this should fail at random.
https://github.com/etsiiull/SIMDE/blob/d577cd8cfc7bb244ac8c1ba0ab42797ea3391797/src/core/Superescalar/Superescalar.ts#L495
When we get a memory fault, we stall the FU, but that instructions is still executed. The correct behavior should be to stop that instruction execution the stall time. The same happens for the VLIW.
The text was updated successfully, but these errors were encountered: