|
|
|
|
|
|
|
Figure 8.38
Producer-consumer timing. (a) Fetching without prefetch. (b) Invalidate
protocols with write prefetch (early invalidate). (c) Update protocols
with read prefetch. (Reads are forwarded to consumers when data is
available.) |
|
|
|
|
|
|
|
|
simply be invalidated again, creating extra network traffic. Prefetching gives update protocols (Figure 8.38c) a larger advantage. The consumer can read the unwritten line (i.e., the line before it is made available by the producer) and when it is available, the producer will automatically update or forward the value to the consumer. This enables the consumer to access the desired value as soon as it is available. |
|
|
|
|
|
|
|
|
Two other techniques are available to update protocols which can enhance their performance. The first is local combining; the second is word synchronization. Local combining can be used effectively for update protocols. Suppose each node has a single line write buffer (Figure 8.39). When a write occurs, suppose we hold that value in the buffer for a fixed number of cycles (say, five cycles). If other values are produced to be written into the same line during that time, they are combined with the original write in that line buffer. As soon as five cycles elapse after the last write to the line buffer, the updated values are forwarded to all nodes in this system that have copies of that line. If a write to another line occurs while the |
|
|
|
|
|