This section presents a systematic study of memory type impact on write-to-read sequences, which the base TSO model relaxes. It is to be noticed that behaviour depends on the memory type of the variable that is read.
When the read of the sequence is from a page of type UC (Uncached), write-to-read order is not relaxed, whatever the memory type of the written variable is.
TSO | Hardware | Model | CoreI5 | CoreI5-dual | CoreI7 | Chianti | Limoux | Teraram | Estephe | Barsac | Zdani | |
R+mfence+po+UC+UC | Allow | Ok, 0/3.7G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+UC+UC | Allow | Ok, 0/3.1G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+po+UC+WB | Allow | Ok, 0/3.7G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+UC+WB | Allow | Ok, 0/3.1G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+po+UC+WC | Allow | Ok, 0/3.7G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+UC+WC | Allow | Ok, 0/3.1G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+po+UC+WT | Allow | Ok, 0/2.8G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | — | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+UC+WT | Allow | Ok, 0/2.2G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | — | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
SB+mfence+po+UC+UC | Allow | Ok, 0/3.6G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+UC+UC | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+UC+UC | Allow | Ok, 0/3.7G | Forbid | Ok, 0/778M | Ok, 0/204M | Ok, 0/432M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+pontnas+UC+UC | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+po+UC+WB | Allow | Ok, 0/3.6G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+UC+WB | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+po+UC+WC | Allow | Ok, 0/3.6G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+UC+WC | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+po+UC+WT | Allow | Ok, 0/2.8G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | — | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+UC+WT | Allow | Ok, 0/2.2G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | — | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
When the read of the sequence is from a page of type WC (Write-Combine), write-to-read order is not relaxed, whatever the memory type of the written variable is.
TSO | Hardware | Model | CoreI5 | CoreI5-dual | CoreI7 | Chianti | Limoux | Teraram | Estephe | Barsac | Zdani | |
R+mfence+po+WC+UC | Allow | Ok, 0/3.7G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+po+WC+WB | Allow | Ok, 0/3.7G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+po+WC+WC | Allow | Ok, 0/3.7G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+po+WC+WT | Allow | Ok, 0/2.8G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | — | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
SB+mfence+po+WC+UC | Allow | Ok, 0/3.6G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+po+WC+WB | Allow | Ok, 0/3.6G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+po+WC+WC | Allow | Ok, 0/3.6G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+WC+WC | Allow | Ok, 0/3.7G | Forbid | Ok, 0/778M | Ok, 0/204M | Ok, 0/428M | Ok, 0/863M | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+po+WC+WT | Allow | Ok, 0/2.8G | Forbid | Ok, 0/738M | Ok, 0/204M | Ok, 0/392M | — | Ok, 0/408M | Ok, 0/553M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
R+mfence+pontna+WC+UC | Allow | Ok, 0/3.1G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+WC+WB | Allow | Ok, 0/3.1G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+WC+WC | Allow | Ok, 0/3.1G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
R+mfence+pontna+WC+WT | Allow | Ok, 0/2.2G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | — | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/267M |
SB+mfence+pontna+WC+UC | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+WC+WB | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+WC+WC | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+mfence+pontna+WC+WT | Allow | Ok, 0/2.2G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | — | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
SB+pontnas+WC+WC | Allow | Ok, 0/3.0G | Forbid | Ok, 0/624M | Ok, 0/180M | Ok, 0/240M | Ok, 0/863M | Ok, 0/456M | Ok, 0/192M | Ok, 0/66M | Ok, 0/173M | Ok, 0/227M |
When the read of the sequence is from a page of type WB (default, Write-Back), write-to-read order is relaxed, whatever the memory type of the written variable is.
TSO | Hardware | Model | CoreI5 | CoreI5-dual | CoreI7 | Chianti | Limoux | Teraram | Estephe | Barsac | Zdani | |
R+mfence+po+WB+UC | Allow | Ok, 1.5M/3.7G | Allow | Ok, 119k/738M | Ok, 7.7k/204M | Ok, 7.4k/392M | Ok, 526k/863M | Ok, 204k/408M | Ok, 580k/553M | No, 0/66M | Ok, 54k/173M | Ok, 9/267M |
Allow unseen | ||||||||||||
R+mfence+po+WB+WB | Allow | Ok, 1.3M/3.7G | Allow | Ok, 135k/738M | Ok, 5.3k/204M | Ok, 194k/392M | Ok, 147k/863M | Ok, 207k/408M | Ok, 389k/553M | Ok, 186/66M | Ok, 35k/173M | Ok, 182k/267M |
R+mfence+po+WB+WC | Allow | Ok, 273M/3.7G | Allow | Ok, 42M/738M | Ok, 18M/204M | Ok, 38M/392M | Ok, 29M/863M | Ok, 42M/408M | Ok, 89M/553M | Ok, 5.1k/66M | Ok, 15M/173M | Ok, 426k/267M |
R+mfence+po+WB+WT | Allow | Ok, 967k/2.8G | Allow | Ok, 118k/738M | Ok, 4.7k/204M | Ok, 7.9k/392M | — | Ok, 189k/408M | Ok, 598k/553M | Ok, 1/66M | Ok, 49k/173M | Ok, 4/267M |
R+mfence+pontna+WB+UC | Allow | Ok, 528k/3.1G | Allow | Ok, 36k/624M | Ok, 6.4k/180M | Ok, 43k/240M | Ok, 175k/863M | Ok, 208k/456M | Ok, 14k/192M | No, 0/66M | Ok, 45k/173M | No, 0/267M |
Allow unseen | Allow unseen | |||||||||||
R+mfence+pontna+WB+WB | Allow | Ok, 86M/3.1G | Allow | Ok, 8.1M/624M | Ok, 2.8M/180M | Ok, 6.2M/240M | Ok, 24M/863M | Ok, 11M/456M | Ok, 16M/192M | Ok, 983k/66M | Ok, 10M/173M | Ok, 6.9M/267M |
R+mfence+pontna+WB+WC | Allow | Ok, 155M/3.1G | Allow | Ok, 14M/624M | Ok, 17M/180M | Ok, 21M/240M | Ok, 28M/863M | Ok, 38M/456M | Ok, 22M/192M | Ok, 4.3k/66M | Ok, 15M/173M | Ok, 423k/267M |
R+mfence+pontna+WB+WT | Allow | Ok, 84M/2.2G | Allow | Ok, 14M/624M | Ok, 18M/180M | Ok, 19M/240M | — | Ok, 10M/456M | Ok, 11M/192M | Ok, 67k/66M | Ok, 8.4M/173M | Ok, 2.5M/267M |
SB+WB+WB | Allow | Ok, 165M/3.8G | Allow | Ok, 9.4M/778M | Ok, 7.5M/236M | Ok, 4.7M/432M | Ok, 106M/927M | Ok, 14M/408M | Ok, 13M/553M | Ok, 347k/66M | Ok, 4.5M/173M | Ok, 5.2M/227M |
SB+mfence+po+WB+UC | Allow | Ok, 1.4M/3.6G | Allow | Ok, 358k/738M | Ok, 977/204M | Ok, 13k/392M | Ok, 539k/863M | Ok, 231k/408M | Ok, 285k/553M | No, 0/66M | Ok, 21k/173M | Ok, 5/227M |
Allow unseen | ||||||||||||
SB+mfence+po+WB+WB | Allow | Ok, 1.1M/3.6G | Allow | Ok, 52k/738M | Ok, 5.7k/204M | Ok, 64k/392M | Ok, 125k/863M | Ok, 103k/408M | Ok, 490k/553M | Ok, 535/66M | Ok, 19k/173M | Ok, 232k/227M |
SB+mfence+po+WB+WC | Allow | Ok, 222M/3.6G | Allow | Ok, 47M/738M | Ok, 23M/204M | Ok, 43M/392M | Ok, 23M/863M | Ok, 10M/408M | Ok, 62M/553M | Ok, 62k/66M | Ok, 10M/173M | Ok, 2.1M/227M |
SB+mfence+po+WB+WT | Allow | Ok, 1.9M/2.8G | Allow | Ok, 351k/738M | Ok, 95k/204M | Ok, 240k/392M | — | Ok, 264k/408M | Ok, 876k/553M | Ok, 514/66M | Ok, 61k/173M | Ok, 586/227M |
SB+mfence+pontna+WB+UC | Allow | Ok, 573k/3.0G | Allow | Ok, 96k/624M | Ok, 1.3k/180M | Ok, 109k/240M | Ok, 142k/863M | Ok, 180k/456M | Ok, 24k/192M | No, 0/66M | Ok, 21k/173M | Ok, 7/227M |
Allow unseen | ||||||||||||
SB+mfence+pontna+WB+WB | Allow | Ok, 109M/3.0G | Allow | Ok, 10M/624M | Ok, 2.7M/180M | Ok, 12M/240M | Ok, 35M/863M | Ok, 12M/456M | Ok, 19M/192M | Ok, 443k/66M | Ok, 12M/173M | Ok, 7.4M/227M |
SB+mfence+pontna+WB+WC | Allow | Ok, 124M/3.0G | Allow | Ok, 16M/624M | Ok, 21M/180M | Ok, 24M/240M | Ok, 22M/863M | Ok, 11M/456M | Ok, 17M/192M | Ok, 77k/66M | Ok, 11M/173M | Ok, 2.0M/227M |
SB+mfence+pontna+WB+WT | Allow | Ok, 75M/2.2G | Allow | Ok, 10M/624M | Ok, 2.8M/180M | Ok, 12M/240M | — | Ok, 12M/456M | Ok, 19M/192M | Ok, 507k/66M | Ok, 11M/173M | Ok, 6.9M/227M |
SB+pontnas+WB+WB | Allow | Ok, 1.3G/3.0G | Allow | Ok, 165M/624M | Ok, 66M/180M | Ok, 101M/240M | Ok, 569M/863M | Ok, 178M/456M | Ok, 73M/192M | Ok, 1.5M/66M | Ok, 73M/173M | Ok, 98M/227M |
When the read of the sequence is from a page of type WT (Write-Through), write-to-read order is relaxed, whatever the memory type of the written variable is.
TSO | Hardware | Model | CoreI5 | CoreI5-dual | CoreI7 | Limoux | Teraram | Estephe | Barsac | Zdani | |
R+mfence+po+WT+UC | Allow | Ok, 49k/2.8G | Allow | Ok, 6.6k/738M | Ok, 5.5k/204M | Ok, 3.8k/392M | Ok, 4.1k/408M | Ok, 28k/553M | No, 0/66M | Ok, 1.4k/173M | No, 0/267M |
Allow unseen | Allow unseen | ||||||||||
R+mfence+po+WT+WB | Allow | Ok, 143k/2.8G | Allow | Ok, 8.0k/738M | Ok, 722/204M | Ok, 11k/392M | Ok, 2.6k/408M | Ok, 110k/553M | Ok, 2/66M | Ok, 7.1k/173M | Ok, 3.0k/267M |
R+mfence+po+WT+WC | Allow | Ok, 360M/2.8G | Allow | Ok, 57M/738M | Ok, 23M/204M | Ok, 54M/392M | Ok, 93M/408M | Ok, 106M/553M | Ok, 204/66M | Ok, 26M/173M | Ok, 30k/267M |
R+mfence+po+WT+WT | Allow | Ok, 45k/2.8G | Allow | Ok, 5.9k/738M | Ok, 5.2k/204M | Ok, 3.6k/392M | Ok, 3.3k/408M | Ok, 26k/553M | No, 0/66M | Ok, 1.2k/173M | Ok, 1/267M |
Allow unseen | |||||||||||
R+mfence+pontna+WT+UC | Allow | Ok, 15k/2.2G | Allow | Ok, 1.8k/624M | Ok, 4.5k/180M | Ok, 3.2k/240M | Ok, 3.7k/456M | Ok, 199/192M | No, 0/66M | Ok, 2.0k/173M | No, 0/267M |
Allow unseen | Allow unseen | ||||||||||
R+mfence+pontna+WT+WB | Allow | Ok, 52M/2.2G | Allow | Ok, 8.9M/624M | Ok, 401k/180M | Ok, 13M/240M | Ok, 8.4M/456M | Ok, 14M/192M | Ok, 6.7k/66M | Ok, 7.3M/173M | Ok, 586k/267M |
R+mfence+pontna+WT+WC | Allow | Ok, 203M/2.2G | Allow | Ok, 19M/624M | Ok, 21M/180M | Ok, 28M/240M | Ok, 81M/456M | Ok, 27M/192M | Ok, 174/66M | Ok, 26M/173M | Ok, 29k/267M |
R+mfence+pontna+WT+WT | Allow | Ok, 83M/2.2G | Allow | Ok, 18M/624M | Ok, 19M/180M | Ok, 26M/240M | Ok, 5.9M/456M | Ok, 10M/192M | Ok, 4.1k/66M | Ok, 4.2M/173M | Ok, 284k/267M |
SB+WT+WT | Allow | Ok, 103M/2.9G | Allow | Ok, 37M/778M | Ok, 5.1M/236M | Ok, 34M/428M | Ok, 9.4M/408M | Ok, 8.0M/553M | Ok, 204k/66M | Ok, 3.3M/173M | Ok, 5.7M/227M |
SB+mfence+po+WT+UC | Allow | Ok, 32k/2.8G | Allow | Ok, 169/738M | Ok, 199/204M | Ok, 261/392M | Ok, 3.4k/408M | Ok, 27k/553M | No, 0/66M | Ok, 1.0k/173M | No, 0/227M |
Allow unseen | Allow unseen | ||||||||||
SB+mfence+po+WT+WB | Allow | Ok, 135k/2.8G | Allow | Ok, 7.9k/738M | Ok, 655/204M | Ok, 10k/392M | Ok, 3.0k/408M | Ok, 103k/553M | Ok, 2/66M | Ok, 10k/173M | Ok, 1.0k/227M |
SB+mfence+po+WT+WC | Allow | Ok, 202M/2.8G | Allow | Ok, 52M/738M | Ok, 23M/204M | Ok, 48M/392M | Ok, 10M/408M | Ok, 60M/553M | Ok, 1.3k/66M | Ok, 8.6M/173M | Ok, 252k/227M |
SB+mfence+po+WT+WT | Allow | Ok, 88k/2.8G | Allow | Ok, 17k/738M | Ok, 2.8k/204M | Ok, 13k/392M | Ok, 4.2k/408M | Ok, 46k/553M | No, 0/66M | Ok, 4.5k/173M | Ok, 105/227M |
Allow unseen | |||||||||||
SB+mfence+pontna+WT+UC | Allow | Ok, 5.0k/2.2G | Allow | Ok, 86/624M | Ok, 316/180M | Ok, 207/240M | Ok, 3.0k/456M | Ok, 160/192M | No, 0/66M | Ok, 1.3k/173M | No, 0/227M |
Allow unseen | Allow unseen | ||||||||||
SB+mfence+pontna+WT+WB | Allow | Ok, 72M/2.2G | Allow | Ok, 14M/624M | Ok, 1.7M/180M | Ok, 21M/240M | Ok, 9.2M/456M | Ok, 17M/192M | Ok, 6.7k/66M | Ok, 8.3M/173M | Ok, 546k/227M |
SB+mfence+pontna+WT+WC | Allow | Ok, 99M/2.2G | Allow | Ok, 18M/624M | Ok, 21M/180M | Ok, 26M/240M | Ok, 10M/456M | Ok, 16M/192M | Ok, 1.3k/66M | Ok, 8.4M/173M | Ok, 240k/227M |
SB+mfence+pontna+WT+WT | Allow | Ok, 72M/2.2G | Allow | Ok, 15M/624M | Ok, 1.2M/180M | Ok, 21M/240M | Ok, 9.1M/456M | Ok, 17M/192M | Ok, 2.5k/66M | Ok, 8.1M/173M | Ok, 561k/227M |
SB+pontnas+WT+WT | Allow | Ok, 764M/2.2G | Allow | Ok, 170M/624M | Ok, 67M/180M | Ok, 103M/240M | Ok, 180M/456M | Ok, 72M/192M | Ok, 995k/66M | Ok, 73M/173M | Ok, 97M/227M |