Some instructions require additional clock cycles due to a “Next Instruction Component” identified by a “+m” in the instruction clock cycle listings. This is due to the prefetch queue being purge on a control transfers. Below is the general rule for calculating “m”:
| 88/86 | not applicable |
| 286 | “m” is the number of bytes in the next instruction |
| 386 | “m” is the number of components in the next instruction (the instruction coding (each byte), plus the data and the displacement are all considered components) |
| Description | Clock Cycles |
|---|---|
| Displacement | 6 |
| Base or Index (BX,BP,SI,DI) | 5 |
| Displacement+(Base or Index) | 9 |
| Base+Index (BP+DI,BX+SI) | 7 |
| Base+Index (BP+SI,BX+DI) | 8 |
| Base+Index+Displacement (BP+DI,BX+SI) | 11 |
| Base+Index+Displacement (BP+SI+disp,BX+DI+disp) | 12 |
Task State Calculation
“TS” is defined as switching from VM/486 or 80286 TSS to one of the following:
| New Task | |||||
|---|---|---|---|---|---|
| Old Task | 486 TSS (VM=0) | 486 TSS (VM=1) | 386 TSS (VM=0) | 386 TSS (VM=1) | 286 TSS |
| 386 TSS (VM=0) | 309 | 226 | 282 | ||
| 386 TSS (VM=1) | 314 | 231 | 287 | ||
| 386 CPU/286 TSS | 307 | 224 | 280 | ||
| 486 CPU/286 TSS | 199 | 177 | 180 | ||
Miscellaneous
- all timings are for best case and do not take into account wait states, instruction alignment, the state of the prefetch queue, DMA refresh cycles, cache hits/misses or exception processing. - to convert clocks to nanoseconds divide one microsecond by the processor speed in MegaHertz: