Previous Up Next

Specific experiments

Uncached memory type and SC

Assigning the UC (Uncached) memory type to all variables is an expensive technique to ban non-SC behaviours.

There are 26 such tests
 SCTSOHardwareCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
2+2W+UC+UCForbidForbidNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/432MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/267M
LB+UC+UCForbidForbidNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/432MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/267M
MP+UC+UCForbidForbidNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/432MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/267M
R+UC+UCForbidAllowNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/432MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/267M
S+UC+UCForbidForbidNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/428MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/267M
SB+UC+UCForbidAllowNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/432MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/227M
RWC+UC+UCForbidAllowNo, 0/1.9GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
W+WR+WR+UC+UCForbidAllowNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
W+WW+RR+UC+UCForbidForbidNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
W+WW+WR+UC+UCForbidAllowNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
WRC+UC+UCForbidForbidNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
WRR+2W+UC+UCForbidForbidNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
WRW+2W+UC+UCForbidForbidNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
WRW+WR+UC+UCForbidAllowNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
WWC+UC+UCForbidForbidNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
3.2W+UC+UC+UCForbidForbidNo, 0/2.0GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
3.LB+UC+UC+UCForbidForbidNo, 0/2.0GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
3.SB+UC+UC+UCForbidAllowNo, 0/2.0GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
ISA2+UC+UC+UCForbidForbidNo, 0/2.0GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
W+RWC+UC+UC+UCForbidAllowNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
Z6.0+UC+UC+UCForbidAllowNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
Z6.1+UC+UC+UCForbidForbidNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
Z6.2+UC+UC+UCForbidForbidNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
Z6.3+UC+UC+UCForbidForbidNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
Z6.4+UC+UC+UCForbidAllowNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
Z6.5+UC+UC+UCForbidAllowNo, 0/1.9GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M

Write combine memory type and the message passing litmus test

The table below shows that assigning the WC (Write Combined) memory type to any end of a write-to-write sequence relaxes the TSO write-to-write ordering. The relaxation is achieved more easily by assigning WC to the first write (MP+WC+WB below).

There are 3 such tests
 TSOHardwareCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
MP+WB+WCForbidOk, 37k/4.3GOk, 36/890MOk, 154/300MOk, 49/560MOk, 124/991MOk, 994/504MOk, 34k/553MNo, 0/66MOk, 1.8k/173MOk, 56/267M
         Allow unseen  
MP+WC+WBForbidOk, 260M/4.3GOk, 76M/890MOk, 16M/300MOk, 68M/560MOk, 19M/991MOk, 21M/504MOk, 50M/553MOk, 73k/66MOk, 11M/173MOk, 1.2M/267M
MP+WC+WCForbidOk, 108k/4.3GOk, 15k/890MOk, 25k/300MOk, 21k/560MOk, 6.4k/991MOk, 13k/504MOk, 25k/553MNo, 0/66MOk, 2.8k/173MNo, 0/267M
         Allow unseen Allow unseen

Write combine memory type and the store buffer litmus test

Those tests demonstrate that the WC (Write-Combine) memory types and the non-temporal store instruction operating on the default (WB) memory type may yield different results. More precisely the former corresponds the observed store-buffer tests SB+pontnas and SB+pontnts;1 while the the latter corresponds to the non-observed store-buffer tests SB+WC+WC, SB+WC+WC+NT and SB+WC+WC+preload.

There are 5 such tests
 TSOHardwareCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
SB+pontnasAllowOk, 2.7G/5.3GOk, 375M/894MOk, 127M/332MOk, 145M/396MOk, 654M/991MOk, 801M/1.4GOk, 405M/822MOk, 1.4M/66MOk, 74M/173MOk, 97M/227M
SB+pontntsOk, 365M/600MOk, 365M/600M
SB+WC+WCAllowNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/428MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/227M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
SB+WC+WC+NTAllowNo, 0/3.6GNo, 0/734MNo, 0/204MNo, 0/268MNo, 0/863MNo, 0/462MNo, 0/572MNo, 0/66MNo, 0/173MNo, 0/227M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
SB+WC+WC+preloadAllowNo, 0/4.8GNo, 0/894MNo, 0/332MNo, 0/396MNo, 0/991MNo, 0/842MNo, 0/822MNo, 0/66MNo, 0/173MNo, 0/269M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen

Write combine memory type and the TSO model

Those tests demonstrate that assigning the WC (Write-Combine) memory type to all variables in a tests yields a memory model which is neither stronger nor weaker than the base TSO model.

There are 26 such tests
 TSOHardwareCoreI5CoreI5-dualCoreI7ChiantiLimouxTeraramEstepheBarsacZdani
2+2W+WC+WCForbidNo, 4.7M/4.3GNo, 931k/890MNo, 279k/300MNo, 1.2M/560MNo, 1.2M/991MNo, 253k/504MNo, 541k/553MNo, 26k/66MNo, 204k/173MNo, 100k/267M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated
LB+WC+WCForbidOk, 0/3.7GOk, 0/778MOk, 0/204MOk, 0/432MOk, 0/863MOk, 0/408MOk, 0/553MOk, 0/66MOk, 0/173MOk, 0/267M
MP+WC+WCForbidNo, 108k/4.3GNo, 15k/890MNo, 25k/300MNo, 21k/560MNo, 6.4k/991MNo, 13k/504MNo, 25k/553MOk, 0/66MNo, 2.8k/173MOk, 0/267M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated Forbid invalidated 
R+WC+WCAllowOk, 202k/4.3GOk, 7.6k/890MOk, 18k/300MOk, 15k/560MOk, 10k/991MOk, 36k/504MOk, 110k/553MNo, 0/66MOk, 5.3k/173MOk, 1/267M
         Allow unseen  
S+WC+WCForbidNo, 263k/4.3GNo, 8.0k/890MNo, 16k/300MNo, 14k/556MNo, 14k/991MNo, 87k/504MNo, 111k/553MOk, 0/66MNo, 13k/173MOk, 0/227M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated Forbid invalidated 
SB+WC+WCAllowNo, 0/3.7GNo, 0/778MNo, 0/204MNo, 0/428MNo, 0/863MNo, 0/408MNo, 0/553MNo, 0/66MNo, 0/173MNo, 0/227M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
RWC+WC+WCAllowNo, 0/1.9GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
W+WR+WR+WC+WCAllowNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
W+WW+RR+WC+WCForbidNo, 6.6k/1.8GNo, 636/336MOk, 0/82MNo, 1.2k/124MNo, 276/447MNo, 2.4k/232MNo, 1.7k/318MOk, 0/33MNo, 318/115MOk, 0/161M
  Forbid invalidatedForbid invalidated Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated Forbid invalidated 
W+WW+WR+WC+WCAllowOk, 10k/1.8GOk, 540/336MNo, 0/82MOk, 940/124MOk, 279/447MOk, 3.5k/232MOk, 3.6k/318MNo, 0/33MOk, 706/115MNo, 0/161M
    Allow unseen    Allow unseen Allow unseen
WRC+WC+WCForbidOk, 0/1.8GOk, 0/336MOk, 0/82MOk, 0/124MOk, 0/447MOk, 0/232MOk, 0/318MOk, 0/33MOk, 0/115MOk, 0/161M
WRR+2W+WC+WCForbidNo, 1.0M/1.8GNo, 87k/336MNo, 451k/82MNo, 182k/124MNo, 13k/447MNo, 24k/232MNo, 9.2k/318MNo, 3/33MNo, 265k/115MNo, 25/161M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated
WRW+2W+WC+WCForbidNo, 1.6M/1.8GNo, 108k/336MNo, 595k/82MNo, 214k/124MNo, 67k/447MNo, 83k/232MNo, 25k/318MOk, 0/33MNo, 514k/115MNo, 2/161M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated Forbid invalidatedForbid invalidated
WRW+WR+WC+WCAllowNo, 0/1.8GNo, 0/336MNo, 0/82MNo, 0/124MNo, 0/447MNo, 0/232MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/161M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
WWC+WC+WCForbidOk, 0/1.8GOk, 0/336MOk, 0/82MOk, 0/124MOk, 0/447MOk, 0/232MOk, 0/318MOk, 0/33MOk, 0/115MOk, 0/161M
3.2W+WC+WC+WCForbidNo, 22M/2.3GNo, 3.0M/392MNo, 4.6M/150MNo, 2.2M/228MNo, 1.6M/511MNo, 4.4M/336MNo, 4.4M/318MNo, 4.9k/33MNo, 1.7M/115MNo, 3.7k/185M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated
3.LB+WC+WC+WCForbidOk, 0/2.0GOk, 0/336MOk, 0/102MOk, 0/164MOk, 0/447MOk, 0/272MOk, 0/318MOk, 0/33MOk, 0/115MOk, 0/185M
3.SB+WC+WC+WCAllowNo, 0/2.0GNo, 0/336MNo, 0/102MNo, 0/164MNo, 0/447MNo, 0/272MNo, 0/318MNo, 0/33MNo, 0/115MNo, 0/185M
  Allow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseenAllow unseen
ISA2+WC+WC+WCForbidNo, 2.0M/2.3GNo, 632k/392MNo, 829k/150MNo, 350k/228MNo, 17k/511MNo, 21k/336MNo, 126k/318MOk, 0/33MNo, 70k/115MOk, 0/185M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated Forbid invalidated 
W+RWC+WC+WC+WCAllowOk, 2.6M/2.2GOk, 292k/392MOk, 295k/150MOk, 216k/228MOk, 32k/511MOk, 1.3M/336MOk, 266k/318MNo, 0/33MOk, 145k/115MNo, 0/161M
         Allow unseen Allow unseen
Z6.0+WC+WC+WCAllowOk, 3.2M/2.2GOk, 952k/392MOk, 1.3M/150MOk, 447k/228MOk, 20k/511MOk, 65k/336MOk, 246k/318MNo, 0/33MOk, 131k/115MNo, 0/161M
         Allow unseen Allow unseen
Z6.1+WC+WC+WCForbidNo, 29M/2.2GNo, 4.8M/392MNo, 2.8M/150MNo, 2.9M/228MNo, 3.8M/511MNo, 8.6M/336MNo, 4.5M/318MNo, 3/33MNo, 1.7M/115MNo, 3/161M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated
Z6.2+WC+WC+WCForbidNo, 2.0M/2.2GNo, 132k/392MNo, 112k/150MNo, 136k/228MNo, 86k/511MNo, 482k/336MNo, 762k/318MOk, 0/33MNo, 333k/115MOk, 0/161M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated Forbid invalidated 
Z6.3+WC+WC+WCForbidNo, 23M/2.2GNo, 4.3M/392MNo, 2.1M/150MNo, 2.5M/228MNo, 3.1M/511MNo, 6.0M/336MNo, 3.3M/318MNo, 40/33MNo, 1.5M/115MNo, 28/161M
  Forbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidatedForbid invalidated
Z6.4+WC+WC+WCAllowOk, 3.3M/2.2GOk, 1.0M/392MOk, 1.6M/150MOk, 510k/228MOk, 13k/511MOk, 20k/336MOk, 73k/318MNo, 0/33MOk, 29k/115MOk, 2/161M
         Allow unseen  
Z6.5+WC+WC+WCAllowOk, 22M/2.2GOk, 4.0M/392MOk, 2.3M/150MOk, 2.2M/228MOk, 3.3M/511MOk, 6.7M/336MOk, 2.0M/318MNo, 0/33MOk, 1.2M/115MOk, 5/161M
         Allow unseen  

Previous Up Next