4 ms·
What is the typical window size for an Intel OOO decoder ? (measured in the number of instructions or code bytes in the memory?!)
by yazr 8y ago
What is the typical window size for an Intel OOO decoder ?
(measured in the number of instructions or code bytes in the memory?!)
- BeeOnRope 8y agoThere are (at least) two types of windows - the ROB (reorder buffer) which usually usually on the order of 200 instructions on modern chips, and the scheduler, on the order of 60-100 instructions. My impression is that usually people refer to the ROB size as the "out of order window", but maybe just because it's bigger and sounds better. The former limits the distance between the oldest unfinished instruction and the newest instruction that can be executed. The latter (scheduler limit) puts a smaller limit on the possible lookahead in the case of dependent instructions. It is the number of not-executed instructions that can be buffered while looking for instructions to execute. For example, if you have a scheduler size of 60 and take a cache miss (this will become the oldest incomplete instruction), and the following instructions mostly aren't data-dependent on the miss, you could execute up to ROB-size (~200) additional instructions while waiting for the cache miss. If the next 60 instructions are data-dependent on the cache miss, however, the scheduler will fill up and then you don't be able to execute anything, even if there exist instructions beyond the 60 that don't depend on on the cache miss. Obviously in real code it won't usually be so "binary" - you'll often have an intermediate case where both limits matter in a soft way. There are also other types of buffers such as load/store buffers, branch order buffers, and other things which might fill up before the two I mentioned and limit OoO execution. There might be various other limits to out-of-order execution as well: a scheduler may not be "unified" so not all scheduler slots may be available to all types of instructions, making the apparent scheduler size smaller, etc.