资源描述:
《atomic Weapons The C 11 Memory Model and Modern Hardware (Herb Sutter).pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、atomic<>Weapons:HerbSutterTheC++MemoryModelandModernHardwareHerbSutterOptimizations,Races,andtheMemoryModelOrdering–What:AcquireandReleaseOrdering–How:Mutexes,Atomics,and/orFencesOtherRestrictionsonCompilersandHardware(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++MemoryModelandModernHardwareQ:Doesyourcomputerexecutet
5、heprogramyouwrote?Q:Doesyourcomputerexecutetheprogramyouwrote?A:Whataquaintconcept!Onbigiron,contemporarywithliveBeatlesperformances.OnPCs,contemporarywithlegwarmers.Think:Compileroptimization,processorOoOexecution,cachecoherency.Dateupdated:February15,2013Page:4atomic<>We
6、apons:HerbSutterTheC++MemoryModelandModernHardwareCompiler/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