資源描述:
《atomic Weapons The C 11 Memory Model and Modern Hardware (Herb Sutter).pdf》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、atomic<>Weapons:HerbSutterTheC++MemoryModelandModernHardwareHerbSutter?Optimizations,Races,andtheMemoryModel?Ordering–What:AcquireandRelease?Ordering–How:Mutexes,Atomics,and/orFences?OtherRestrictionsonCompilersandHardware(?Bugs)?CodeGen&Performance:x86/x64,IA64,POWER,ARM,...??
2、??RelaxedAtomics(astimeallows)?Coda:Volatile(astimeallows)Dateupdated:February15,2013Page:1atomic<>Weapons:HerbSutterTheC++MemoryModelandModernHardwareCPUcoreCPUcoreCPURAMcoreCPUcoreCPUcorecorecorecorecorecorecoreSBSBSBSBSBSBL1$L1$L1$L1$L1$L1$3MB3MB3MBL2cacheL2cacheL2cache16MBL
3、3cacheRAMDateupdated:February15,2013Page:2atomic<>Weapons:HerbSutterTheC++MemoryModelandModernHardwarecorecorecorecorecorecoreSBSBSBSBSBSBL1$L1$L1$L1$L1$L1$3MB3MB3MBL2cacheL2cacheL2cache16MBL3cacheRAMDon’twritearaceconditionorusenon-defaultatomicsandyourcodewilldowhatyouthink.U
4、nlessyou:(a)usecompilers/hardwarethatcanhavebugs;(b)areirresistablydrawntopullRandomBigRedLevers;or(c)areoneofThoseFolkswholongtotakeoverthegearsintheMachine.Dateupdated:February15,2013Page:3atomic<>Weapons:HerbSutterTheC++MemoryModelandModernHardware?Q:Doesyourcomputerexecutet
5、heprogramyouwrote??Q:Doesyourcomputerexecutetheprogramyouwrote??A:Whataquaintconcept!?Onbigiron,contemporarywithliveBeatlesperformances.?OnPCs,contemporarywithlegwarmers.?Think:Compileroptimization,processorOoOexecution,cachecoherency.Dateupdated:February15,2013Page:4atomic<>We
6、apons:HerbSutterTheC++MemoryModelandModernHardware?Compiler/processor/cachesays:“No,it’smuchbettertoexecuteadifferentprogram.Hey,don’tcomplain.It’sforyourowngood.Youreallywouldn’twanttoexecutethatdreckyouactuallywrote.”?Sequentialconsistency(SC):Executingtheprogramyouwrote.?Def
7、inedin1979byLeslieLamportas“theresultofanyexecutionisthesameasifthereadsandwritesoccurredinsomeorder,andtheoperationsofeachindividualprocessorappearinthissequenceintheorderspecifiedbyitsprogram”?Racecondition:Amemorylocation(variable)canbesimultaneouslyaccessedbytwothreads,anda
8、tleastonethreadisawriter.?Memorylocation==non-bitfield