1*4882a593SmuzhiyunThis document provides background reading for memory models and related 2*4882a593Smuzhiyuntools. These documents are aimed at kernel hackers who are interested 3*4882a593Smuzhiyunin memory models. 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunHardware manuals and models 7*4882a593Smuzhiyun=========================== 8*4882a593Smuzhiyun 9*4882a593Smuzhiyuno SPARC International Inc. (Ed.). 1994. "The SPARC Architecture 10*4882a593Smuzhiyun Reference Manual Version 9". SPARC International Inc. 11*4882a593Smuzhiyun 12*4882a593Smuzhiyuno Compaq Computer Corporation (Ed.). 2002. "Alpha Architecture 13*4882a593Smuzhiyun Reference Manual". Compaq Computer Corporation. 14*4882a593Smuzhiyun 15*4882a593Smuzhiyuno Intel Corporation (Ed.). 2002. "A Formal Specification of Intel 16*4882a593Smuzhiyun Itanium Processor Family Memory Ordering". Intel Corporation. 17*4882a593Smuzhiyun 18*4882a593Smuzhiyuno Intel Corporation (Ed.). 2002. "Intel 64 and IA-32 Architectures 19*4882a593Smuzhiyun Software Developer’s Manual". Intel Corporation. 20*4882a593Smuzhiyun 21*4882a593Smuzhiyuno Peter Sewell, Susmit Sarkar, Scott Owens, Francesco Zappa Nardelli, 22*4882a593Smuzhiyun and Magnus O. Myreen. 2010. "x86-TSO: A Rigorous and Usable 23*4882a593Smuzhiyun Programmer's Model for x86 Multiprocessors". Commun. ACM 53, 7 24*4882a593Smuzhiyun (July, 2010), 89-97. http://doi.acm.org/10.1145/1785414.1785443 25*4882a593Smuzhiyun 26*4882a593Smuzhiyuno IBM Corporation (Ed.). 2009. "Power ISA Version 2.06". IBM 27*4882a593Smuzhiyun Corporation. 28*4882a593Smuzhiyun 29*4882a593Smuzhiyuno ARM Ltd. (Ed.). 2009. "ARM Barrier Litmus Tests and Cookbook". 30*4882a593Smuzhiyun ARM Ltd. 31*4882a593Smuzhiyun 32*4882a593Smuzhiyuno Susmit Sarkar, Peter Sewell, Jade Alglave, Luc Maranget, and 33*4882a593Smuzhiyun Derek Williams. 2011. "Understanding POWER Multiprocessors". In 34*4882a593Smuzhiyun Proceedings of the 32Nd ACM SIGPLAN Conference on Programming 35*4882a593Smuzhiyun Language Design and Implementation (PLDI ’11). ACM, New York, 36*4882a593Smuzhiyun NY, USA, 175–186. 37*4882a593Smuzhiyun 38*4882a593Smuzhiyuno Susmit Sarkar, Kayvan Memarian, Scott Owens, Mark Batty, 39*4882a593Smuzhiyun Peter Sewell, Luc Maranget, Jade Alglave, and Derek Williams. 40*4882a593Smuzhiyun 2012. "Synchronising C/C++ and POWER". In Proceedings of the 33rd 41*4882a593Smuzhiyun ACM SIGPLAN Conference on Programming Language Design and 42*4882a593Smuzhiyun Implementation (PLDI '12). ACM, New York, NY, USA, 311-322. 43*4882a593Smuzhiyun 44*4882a593Smuzhiyuno ARM Ltd. (Ed.). 2014. "ARM Architecture Reference Manual (ARMv8, 45*4882a593Smuzhiyun for ARMv8-A architecture profile)". ARM Ltd. 46*4882a593Smuzhiyun 47*4882a593Smuzhiyuno Imagination Technologies, LTD. 2015. "MIPS(R) Architecture 48*4882a593Smuzhiyun For Programmers, Volume II-A: The MIPS64(R) Instruction, 49*4882a593Smuzhiyun Set Reference Manual". Imagination Technologies, 50*4882a593Smuzhiyun LTD. https://imgtec.com/?do-download=4302. 51*4882a593Smuzhiyun 52*4882a593Smuzhiyuno Shaked Flur, Kathryn E. Gray, Christopher Pulte, Susmit 53*4882a593Smuzhiyun Sarkar, Ali Sezgin, Luc Maranget, Will Deacon, and Peter 54*4882a593Smuzhiyun Sewell. 2016. "Modelling the ARMv8 Architecture, Operationally: 55*4882a593Smuzhiyun Concurrency and ISA". In Proceedings of the 43rd Annual ACM 56*4882a593Smuzhiyun SIGPLAN-SIGACT Symposium on Principles of Programming Languages 57*4882a593Smuzhiyun (POPL ’16). ACM, New York, NY, USA, 608–621. 58*4882a593Smuzhiyun 59*4882a593Smuzhiyuno Shaked Flur, Susmit Sarkar, Christopher Pulte, Kyndylan Nienhuis, 60*4882a593Smuzhiyun Luc Maranget, Kathryn E. Gray, Ali Sezgin, Mark Batty, and Peter 61*4882a593Smuzhiyun Sewell. 2017. "Mixed-size Concurrency: ARM, POWER, C/C++11, 62*4882a593Smuzhiyun and SC". In Proceedings of the 44th ACM SIGPLAN Symposium on 63*4882a593Smuzhiyun Principles of Programming Languages (POPL 2017). ACM, New York, 64*4882a593Smuzhiyun NY, USA, 429–442. 65*4882a593Smuzhiyun 66*4882a593Smuzhiyuno Christopher Pulte, Shaked Flur, Will Deacon, Jon French, 67*4882a593Smuzhiyun Susmit Sarkar, and Peter Sewell. 2018. "Simplifying ARM concurrency: 68*4882a593Smuzhiyun multicopy-atomic axiomatic and operational models for ARMv8". In 69*4882a593Smuzhiyun Proceedings of the ACM on Programming Languages, Volume 2, Issue 70*4882a593Smuzhiyun POPL, Article No. 19. ACM, New York, NY, USA. 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun 73*4882a593SmuzhiyunLinux-kernel memory model 74*4882a593Smuzhiyun========================= 75*4882a593Smuzhiyun 76*4882a593Smuzhiyuno Jade Alglave, Will Deacon, Boqun Feng, David Howells, Daniel 77*4882a593Smuzhiyun Lustig, Luc Maranget, Paul E. McKenney, Andrea Parri, Nicholas 78*4882a593Smuzhiyun Piggin, Alan Stern, Akira Yokosawa, and Peter Zijlstra. 79*4882a593Smuzhiyun 2019. "Calibrating your fear of big bad optimizing compilers" 80*4882a593Smuzhiyun Linux Weekly News. https://lwn.net/Articles/799218/ 81*4882a593Smuzhiyun 82*4882a593Smuzhiyuno Jade Alglave, Will Deacon, Boqun Feng, David Howells, Daniel 83*4882a593Smuzhiyun Lustig, Luc Maranget, Paul E. McKenney, Andrea Parri, Nicholas 84*4882a593Smuzhiyun Piggin, Alan Stern, Akira Yokosawa, and Peter Zijlstra. 85*4882a593Smuzhiyun 2019. "Who's afraid of a big bad optimizing compiler?" 86*4882a593Smuzhiyun Linux Weekly News. https://lwn.net/Articles/793253/ 87*4882a593Smuzhiyun 88*4882a593Smuzhiyuno Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and 89*4882a593Smuzhiyun Alan Stern. 2018. "Frightening small children and disconcerting 90*4882a593Smuzhiyun grown-ups: Concurrency in the Linux kernel". In Proceedings of 91*4882a593Smuzhiyun the 23rd International Conference on Architectural Support for 92*4882a593Smuzhiyun Programming Languages and Operating Systems (ASPLOS 2018). ACM, 93*4882a593Smuzhiyun New York, NY, USA, 405-418. Webpage: http://diy.inria.fr/linux/. 94*4882a593Smuzhiyun 95*4882a593Smuzhiyuno Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and 96*4882a593Smuzhiyun Alan Stern. 2017. "A formal kernel memory-ordering model (part 1)" 97*4882a593Smuzhiyun Linux Weekly News. https://lwn.net/Articles/718628/ 98*4882a593Smuzhiyun 99*4882a593Smuzhiyuno Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and 100*4882a593Smuzhiyun Alan Stern. 2017. "A formal kernel memory-ordering model (part 2)" 101*4882a593Smuzhiyun Linux Weekly News. https://lwn.net/Articles/720550/ 102*4882a593Smuzhiyun 103*4882a593Smuzhiyuno Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and 104*4882a593Smuzhiyun Alan Stern. 2017-2019. "A Formal Model of Linux-Kernel Memory 105*4882a593Smuzhiyun Ordering" (backup material for the LWN articles) 106*4882a593Smuzhiyun https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/LWNLinuxMM/ 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun 109*4882a593SmuzhiyunMemory-model tooling 110*4882a593Smuzhiyun==================== 111*4882a593Smuzhiyun 112*4882a593Smuzhiyuno Daniel Jackson. 2002. "Alloy: A Lightweight Object Modelling 113*4882a593Smuzhiyun Notation". ACM Trans. Softw. Eng. Methodol. 11, 2 (April 2002), 114*4882a593Smuzhiyun 256–290. http://doi.acm.org/10.1145/505145.505149 115*4882a593Smuzhiyun 116*4882a593Smuzhiyuno Jade Alglave, Luc Maranget, and Michael Tautschnig. 2014. "Herding 117*4882a593Smuzhiyun Cats: Modelling, Simulation, Testing, and Data Mining for Weak 118*4882a593Smuzhiyun Memory". ACM Trans. Program. Lang. Syst. 36, 2, Article 7 (July 119*4882a593Smuzhiyun 2014), 7:1–7:74 pages. 120*4882a593Smuzhiyun 121*4882a593Smuzhiyuno Jade Alglave, Patrick Cousot, and Luc Maranget. 2016. "Syntax and 122*4882a593Smuzhiyun semantics of the weak consistency model specification language 123*4882a593Smuzhiyun cat". CoRR abs/1608.07531 (2016). https://arxiv.org/abs/1608.07531 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun 126*4882a593SmuzhiyunMemory-model comparisons 127*4882a593Smuzhiyun======================== 128*4882a593Smuzhiyun 129*4882a593Smuzhiyuno Paul E. McKenney, Ulrich Weigand, Andrea Parri, and Boqun 130*4882a593Smuzhiyun Feng. 2018. "Linux-Kernel Memory Model". (27 September 2018). 131*4882a593Smuzhiyun http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0124r6.html. 132