Definition
An instruction cache in this context is a simulator-side cache for decoded instruction information. The cited work describes storing information about previously decoded instructions in a cache so that, when the same instruction is executed again, the simulator can reuse the stored information rather than decode the instruction again. This is presented as a way to obtain performance comparable to compiled simulation while retaining interpretive flexibility.
Role in instruction-set simulation
The optimization is tied to the simulator's decode functionality. A decode macro decomposes an instruction word into bit fields according to the instruction specification, and those decoded fields are stored in a record-like data type. By caching the result of this decode function, the simulator avoids repeated decoding during simulation.
The paper also describes an architectural-style representation in which an instruction_t object keeps the decoded fields of the current instruction word. That information can be used to avoid repeated decoding of the same instruction in the simulator.
Why it improves performance
The efficiency of this technique depends on software locality. The source notes that most software exhibits locality, for example because of loop constructs. As a result, the same instruction may be encountered repeatedly, making reuse of cached decode information an effective way to reduce simulation run time.
Relationship to JIT-style simulation
The described technique is compared to just-in-time compiled simulation. In the cited JIT-CS discussion, previously decoded instruction information is stored in a cache and reused when the instruction executes again. The generated simulator applies a similar idea by caching the results of the decode function.
Implementation context
The cited simulator generation flow produces a C++ instruction-set simulator. The generated simulator includes public functions such as next_state, decode, and interface macros, and the generated C++ class forms the simulator core. Within this environment, decode-result caching is one of several optimizations used to improve simulation performance.