|
|
|
|
|
|
Figure 4.13
Cache access controller. |
|
|
|
|
|
|
|
|
A. Cache access controller. |
|
|
|
|
|
|
|
|
B. I-buffer (including the I-register). |
|
|
|
|
|
|
|
|
C. Instruction decoder (including branch and run-on instruction manager). |
|
|
|
|
|
|
|
|
D. Data interlocks (including address interlock manager). |
|
|
|
|
|
|
|
|
E. Store interlocks and store buffers. |
|
|
|
|
|
|
|
|
Sub-units B, C, and D are closely related, with relatively more information flow among these units than external to them. Similarly, sub-units A and E control access to the storage system and are closely related to one another. Still, the decoder, for example, must be aware of actions taken by the cache access controller. |
|
|
|
|
|
|
|
|
We look at each of these sub-units and their effect on system performance. |
|
|
|
|
|
|
|
|
4.4.1 Cache Access Controller |
|
|
|
|
|
|
|
|
Requests to the cache may come from one of five sources (Figure 4.13): |
|
|
|
|
|
|
|
|
2. Data write (from AG and store buffer). |
|
|
|
|
|
|
|
|
3. I-buffer: target I-fetch. |
|
|
|
|
|
|
|
|
4. I-buffer: in-line I-fetch. |
|
|
|
|
|
|
|
|
5. External access (I/O, etc.). |
|
|
|
|
|
|
|
|
If, as usual, the rate of external accesses is low, these can be given highest priority to avoid problems such as I/O run-out or overrun (I/O buffer overflow). |
|
|
|
|
|
|
|
|
Ignoring external accesses, cache access priority is usually arranged (highest to lowest): |
|
|
|
|
|