COHERENCY BYPASS TAGGING FOR READ-SHARED DATA
An example of an apparatus may include memory, two or more caches, and circuitry coupled to the memory and the two or more caches to selectively maintain coherency of data shared among the memory and the two or more caches based on coherency bypass information associated with the data. Other examples are disclosed and claimed.
1 . An apparatus, comprising:
a processor coupled to at least a first cache and a second cache; and
circuitry coupled to the first and second caches to selectively maintain coherency of data shared among a memory and the first and second caches based on coherency bypass information associated with the data.
2 . The apparatus of claim 1 , wherein the circuitry is further to:
bypass a coherency operation for a copy of data stored in one of the first and second caches based on a value of a tag associated with the copy of data.
3 . The apparatus of claim 2 , wherein the circuitry is further to:
evict a first instance of the copy of data from the first cache in response to an eviction request; and
quash an invalidation request for a second instance of the copy of data from the second cache in response to the eviction request if the value of a tag associated with the first instance of the copy of data indicates that the coherency operation is to be bypassed.
4 . The apparatus of claim 3 , wherein the circuitry is further to:
maintain a ghost copy of the second instance of the copy of data in the second cache in accordance with a local cache policy of the second cache, after the first instance is evicted from the first cache.
5 . The apparatus of claim 1 , wherein the circuitry is further to:
determine if a copy of data to be stored in one of the first and second caches is a candidate for coherency bypass; and
set the value of a tag associated with the copy of data based on the determination.
6 . The apparatus of claim 5 , wherein the circuitry is further to:
determine if the copy of data is a candidate for coherency bypass based on a hint from a software agent.
7 . The apparatus of claim 5 , wherein the circuitry is further to:
determine if the copy of data is a candidate for coherency bypass based on a hardware indication of whether the copy of data is read-shared among the first and second caches.
8 . The apparatus of claim 7 , wherein the circuitry is further to:
monitor a pattern of hardware access for the copy of data; and
determine if the copy of data is a candidate for coherency bypass based on the monitored pattern.
9 . The apparatus of claim 1 , further comprising the memory and wherein the circuitry is further coupled to the memory.
10 . An apparatus comprising:
decoder circuitry to decode a single instruction, the single instruction to include a field for an identifier of a first source operand and a field for an opcode, the opcode to indicate execution circuitry is to update coherency bypass information; and
execution circuitry to execute the decoded instruction according to the opcode to update coherency bypass information for data indicated by the first source operand.
11 . The apparatus of claim 10 , wherein the field for the identifier of the first source operand is to identify a vector register.
12 . The apparatus of claim 10 , wherein the field for the identifier of the first source operand is to identify a memory location.
13 . The apparatus of claim 10 , wherein the single instruction is further to include a field for an identifier of a second source operand to indicate a size of the data indicated by the first source operand.
14 . The apparatus of claim 10 , wherein the execution circuitry is further to execute the decoded instruction according to the opcode to:
set a field value according to the opcode for one or more linear address masks for the data indicated by the first source operand.
15 . The apparatus of claim 10 , wherein the execution circuitry is further to execute the decoded instruction according to the opcode to:
set a field value according to the opcode for one or more page table attributes for the data indicated by the first source operand.
16 . A method, comprising:
fetching an instruction having a field for an opcode and a field for an identifier of a first source operand;
decoding the instruction;
scheduling execution of the instruction; and
executing the decoded instruction according to the opcode to update coherency bypass information for data indicated by the first source operand.
17 . The method of claim 16 , wherein the single instruction is further to include a field for an identifier of a second source operand to indicate a size of the data indicated by the first source operand.
18 . The method of claim 16 , further comprising:
executing the decoded instruction according to the opcode to set a field value according to the opcode for one or more linear address masks for the data indicated by the first source operand.
19 . The method of claim 16 , further comprising:
executing the decoded instruction according to the opcode to set a field value according to the opcode for one or more page table attributes for the data indicated by the first source operand.
20 . The method of claim 16 , wherein the opcode indicates that the data indicated by the first source operand is to bypass a coherency operation, further comprising:
executing the decoded instruction according to the opcode to flush any modified data indicated by the first source operand from one or more caches, invalidate any shared data indicated by the first source operand, flush any translation look-aside buffer entries for data indicated by the first source operand, and set one or more tags associated with data indicated by the first source operand to indicate that copies of the data are to bypass the coherency operation.