Previous Up Next

Write to Read relaxations

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.

Read into uncached memory type

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.

There are 18 such tests
 TSOHardwareModelCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
R+mfence+po+UC+UCAllowOk, 0/3.7GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+UC+UCAllowOk, 0/3.1GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+po+UC+WBAllowOk, 0/3.7GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+UC+WBAllowOk, 0/3.1GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+po+UC+WCAllowOk, 0/3.7GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+UC+WCAllowOk, 0/3.1GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+po+UC+WTAllowOk, 0/2.8GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+UC+WTAllowOk, 0/2.2GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
SB+mfence+po+UC+UCAllowOk, 0/3.6GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+UC+UCAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+UC+UCAllowOk, 0/3.7GForbidOk, 0/778MOk, 0/204MOk, 0/432MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+pontnas+UC+UCAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+po+UC+WBAllowOk, 0/3.6GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+UC+WBAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+po+UC+WCAllowOk, 0/3.6GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+UC+WCAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+po+UC+WTAllowOk, 0/2.8GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+UC+WTAllowOk, 0/2.2GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M

Read into write combining memory type

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.

There are 18 such tests
 TSOHardwareModelCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
R+mfence+po+WC+UCAllowOk, 0/3.7GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+po+WC+WBAllowOk, 0/3.7GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+po+WC+WCAllowOk, 0/3.7GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+po+WC+WTAllowOk, 0/2.8GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
SB+mfence+po+WC+UCAllowOk, 0/3.6GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+po+WC+WBAllowOk, 0/3.6GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+po+WC+WCAllowOk, 0/3.6GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+WC+WCAllowOk, 0/3.7GForbidOk, 0/778MOk, 0/204MOk, 0/428MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+po+WC+WTAllowOk, 0/2.8GForbidOk, 0/738MOk, 0/204MOk, 0/392MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/227M
R+mfence+pontna+WC+UCAllowOk, 0/3.1GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+WC+WBAllowOk, 0/3.1GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+WC+WCAllowOk, 0/3.1GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
R+mfence+pontna+WC+WTAllowOk, 0/2.2GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/267M
SB+mfence+pontna+WC+UCAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+WC+WBAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+WC+WCAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+mfence+pontna+WC+WTAllowOk, 0/2.2GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M
SB+pontnas+WC+WCAllowOk, 0/3.0GForbidOk, 0/624MOk, 0/180MOk, 0/240MOk, 0/863MOk, 0/456MOk, 0/192MOk, 0/66MOk, 0/173MOk, 0/227M

Read into write back memory type

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.

There are 18 such tests
 TSOHardwareModelCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
R+mfence+po+WB+UCAllowOk, 1.5M/3.7GAllowOk, 119k/738MOk, 7.7k/204MOk, 7.4k/392MOk, 526k/863MOk, 204k/408MOk, 580k/553MNo, 0/66MOk, 54k/173MOk, 9/267M
          Allow unseen  
R+mfence+po+WB+WBAllowOk, 1.3M/3.7GAllowOk, 135k/738MOk, 5.3k/204MOk, 194k/392MOk, 147k/863MOk, 207k/408MOk, 389k/553MOk, 186/66MOk, 35k/173MOk, 182k/267M
R+mfence+po+WB+WCAllowOk, 273M/3.7GAllowOk, 42M/738MOk, 18M/204MOk, 38M/392MOk, 29M/863MOk, 42M/408MOk, 89M/553MOk, 5.1k/66MOk, 15M/173MOk, 426k/267M
R+mfence+po+WB+WTAllowOk, 967k/2.8GAllowOk, 118k/738MOk, 4.7k/204MOk, 7.9k/392MOk, 189k/408MOk, 598k/553MOk, 1/66MOk, 49k/173MOk, 4/267M
R+mfence+pontna+WB+UCAllowOk, 528k/3.1GAllowOk, 36k/624MOk, 6.4k/180MOk, 43k/240MOk, 175k/863MOk, 208k/456MOk, 14k/192MNo, 0/66MOk, 45k/173MNo, 0/267M
          Allow unseen Allow unseen
R+mfence+pontna+WB+WBAllowOk, 86M/3.1GAllowOk, 8.1M/624MOk, 2.8M/180MOk, 6.2M/240MOk, 24M/863MOk, 11M/456MOk, 16M/192MOk, 983k/66MOk, 10M/173MOk, 6.9M/267M
R+mfence+pontna+WB+WCAllowOk, 155M/3.1GAllowOk, 14M/624MOk, 17M/180MOk, 21M/240MOk, 28M/863MOk, 38M/456MOk, 22M/192MOk, 4.3k/66MOk, 15M/173MOk, 423k/267M
R+mfence+pontna+WB+WTAllowOk, 84M/2.2GAllowOk, 14M/624MOk, 18M/180MOk, 19M/240MOk, 10M/456MOk, 11M/192MOk, 67k/66MOk, 8.4M/173MOk, 2.5M/267M
SB+WB+WBAllowOk, 165M/3.8GAllowOk, 9.4M/778MOk, 7.5M/236MOk, 4.7M/432MOk, 106M/927MOk, 14M/408MOk, 13M/553MOk, 347k/66MOk, 4.5M/173MOk, 5.2M/227M
SB+mfence+po+WB+UCAllowOk, 1.4M/3.6GAllowOk, 358k/738MOk, 977/204MOk, 13k/392MOk, 539k/863MOk, 231k/408MOk, 285k/553MNo, 0/66MOk, 21k/173MOk, 5/227M
          Allow unseen  
SB+mfence+po+WB+WBAllowOk, 1.1M/3.6GAllowOk, 52k/738MOk, 5.7k/204MOk, 64k/392MOk, 125k/863MOk, 103k/408MOk, 490k/553MOk, 535/66MOk, 19k/173MOk, 232k/227M
SB+mfence+po+WB+WCAllowOk, 222M/3.6GAllowOk, 47M/738MOk, 23M/204MOk, 43M/392MOk, 23M/863MOk, 10M/408MOk, 62M/553MOk, 62k/66MOk, 10M/173MOk, 2.1M/227M
SB+mfence+po+WB+WTAllowOk, 1.9M/2.8GAllowOk, 351k/738MOk, 95k/204MOk, 240k/392MOk, 264k/408MOk, 876k/553MOk, 514/66MOk, 61k/173MOk, 586/227M
SB+mfence+pontna+WB+UCAllowOk, 573k/3.0GAllowOk, 96k/624MOk, 1.3k/180MOk, 109k/240MOk, 142k/863MOk, 180k/456MOk, 24k/192MNo, 0/66MOk, 21k/173MOk, 7/227M
          Allow unseen  
SB+mfence+pontna+WB+WBAllowOk, 109M/3.0GAllowOk, 10M/624MOk, 2.7M/180MOk, 12M/240MOk, 35M/863MOk, 12M/456MOk, 19M/192MOk, 443k/66MOk, 12M/173MOk, 7.4M/227M
SB+mfence+pontna+WB+WCAllowOk, 124M/3.0GAllowOk, 16M/624MOk, 21M/180MOk, 24M/240MOk, 22M/863MOk, 11M/456MOk, 17M/192MOk, 77k/66MOk, 11M/173MOk, 2.0M/227M
SB+mfence+pontna+WB+WTAllowOk, 75M/2.2GAllowOk, 10M/624MOk, 2.8M/180MOk, 12M/240MOk, 12M/456MOk, 19M/192MOk, 507k/66MOk, 11M/173MOk, 6.9M/227M
SB+pontnas+WB+WBAllowOk, 1.3G/3.0GAllowOk, 165M/624MOk, 66M/180MOk, 101M/240MOk, 569M/863MOk, 178M/456MOk, 73M/192MOk, 1.5M/66MOk, 73M/173MOk, 98M/227M

Read into write through memory type

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.

There are 18 such tests
 TSOHardwareModelCoreI5CoreI5-dualCoreI7LimouxTeraramEstepheBarsacZdani
R+mfence+po+WT+UCAllowOk, 49k/2.8GAllowOk, 6.6k/738MOk, 5.5k/204MOk, 3.8k/392MOk, 4.1k/408MOk, 28k/553MNo, 0/66MOk, 1.4k/173MNo, 0/267M
         Allow unseen Allow unseen
R+mfence+po+WT+WBAllowOk, 143k/2.8GAllowOk, 8.0k/738MOk, 722/204MOk, 11k/392MOk, 2.6k/408MOk, 110k/553MOk, 2/66MOk, 7.1k/173MOk, 3.0k/267M
R+mfence+po+WT+WCAllowOk, 360M/2.8GAllowOk, 57M/738MOk, 23M/204MOk, 54M/392MOk, 93M/408MOk, 106M/553MOk, 204/66MOk, 26M/173MOk, 30k/267M
R+mfence+po+WT+WTAllowOk, 45k/2.8GAllowOk, 5.9k/738MOk, 5.2k/204MOk, 3.6k/392MOk, 3.3k/408MOk, 26k/553MNo, 0/66MOk, 1.2k/173MOk, 1/267M
         Allow unseen  
R+mfence+pontna+WT+UCAllowOk, 15k/2.2GAllowOk, 1.8k/624MOk, 4.5k/180MOk, 3.2k/240MOk, 3.7k/456MOk, 199/192MNo, 0/66MOk, 2.0k/173MNo, 0/267M
         Allow unseen Allow unseen
R+mfence+pontna+WT+WBAllowOk, 52M/2.2GAllowOk, 8.9M/624MOk, 401k/180MOk, 13M/240MOk, 8.4M/456MOk, 14M/192MOk, 6.7k/66MOk, 7.3M/173MOk, 586k/267M
R+mfence+pontna+WT+WCAllowOk, 203M/2.2GAllowOk, 19M/624MOk, 21M/180MOk, 28M/240MOk, 81M/456MOk, 27M/192MOk, 174/66MOk, 26M/173MOk, 29k/267M
R+mfence+pontna+WT+WTAllowOk, 83M/2.2GAllowOk, 18M/624MOk, 19M/180MOk, 26M/240MOk, 5.9M/456MOk, 10M/192MOk, 4.1k/66MOk, 4.2M/173MOk, 284k/267M
SB+WT+WTAllowOk, 103M/2.9GAllowOk, 37M/778MOk, 5.1M/236MOk, 34M/428MOk, 9.4M/408MOk, 8.0M/553MOk, 204k/66MOk, 3.3M/173MOk, 5.7M/227M
SB+mfence+po+WT+UCAllowOk, 32k/2.8GAllowOk, 169/738MOk, 199/204MOk, 261/392MOk, 3.4k/408MOk, 27k/553MNo, 0/66MOk, 1.0k/173MNo, 0/227M
         Allow unseen Allow unseen
SB+mfence+po+WT+WBAllowOk, 135k/2.8GAllowOk, 7.9k/738MOk, 655/204MOk, 10k/392MOk, 3.0k/408MOk, 103k/553MOk, 2/66MOk, 10k/173MOk, 1.0k/227M
SB+mfence+po+WT+WCAllowOk, 202M/2.8GAllowOk, 52M/738MOk, 23M/204MOk, 48M/392MOk, 10M/408MOk, 60M/553MOk, 1.3k/66MOk, 8.6M/173MOk, 252k/227M
SB+mfence+po+WT+WTAllowOk, 88k/2.8GAllowOk, 17k/738MOk, 2.8k/204MOk, 13k/392MOk, 4.2k/408MOk, 46k/553MNo, 0/66MOk, 4.5k/173MOk, 105/227M
         Allow unseen  
SB+mfence+pontna+WT+UCAllowOk, 5.0k/2.2GAllowOk, 86/624MOk, 316/180MOk, 207/240MOk, 3.0k/456MOk, 160/192MNo, 0/66MOk, 1.3k/173MNo, 0/227M
         Allow unseen Allow unseen
SB+mfence+pontna+WT+WBAllowOk, 72M/2.2GAllowOk, 14M/624MOk, 1.7M/180MOk, 21M/240MOk, 9.2M/456MOk, 17M/192MOk, 6.7k/66MOk, 8.3M/173MOk, 546k/227M
SB+mfence+pontna+WT+WCAllowOk, 99M/2.2GAllowOk, 18M/624MOk, 21M/180MOk, 26M/240MOk, 10M/456MOk, 16M/192MOk, 1.3k/66MOk, 8.4M/173MOk, 240k/227M
SB+mfence+pontna+WT+WTAllowOk, 72M/2.2GAllowOk, 15M/624MOk, 1.2M/180MOk, 21M/240MOk, 9.1M/456MOk, 17M/192MOk, 2.5k/66MOk, 8.1M/173MOk, 561k/227M
SB+pontnas+WT+WTAllowOk, 764M/2.2GAllowOk, 170M/624MOk, 67M/180MOk, 103M/240MOk, 180M/456MOk, 72M/192MOk, 995k/66MOk, 73M/173MOk, 97M/227M

Previous Up Next