xref: /OK3568_Linux_fs/kernel/tools/memory-model/Documentation/references.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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