This document provides background reading for memory models and related
tools.  These documents are aimed at kernel hackers who are interested
in memory models.


Hardware manuals and models
===========================

o	SPARC International Inc. (Ed.). 1994. "The SPARC Architecture
	Reference Manual Version 9". SPARC International Inc.

o	Compaq Computer Corporation (Ed.). 2002. "Alpha Architecture
	Reference Manual".  Compaq Computer Corporation.

o	Intel Corporation (Ed.). 2002. "A Formal Specification of Intel
	Itanium Processor Family Memory Ordering". Intel Corporation.

o	Intel Corporation (Ed.). 2002. "Intel 64 and IA-32 Architectures
	Software Developer’s Manual". Intel Corporation.

o	Peter Sewell, Susmit Sarkar, Scott Owens, Francesco Zappa Nardelli,
	and Magnus O. Myreen. 2010. "x86-TSO: A Rigorous and Usable
	Programmer's Model for x86 Multiprocessors". Commun. ACM 53, 7
	(July, 2010), 89-97. http://doi.acm.org/10.1145/1785414.1785443

o	IBM Corporation (Ed.). 2009. "Power ISA Version 2.06". IBM
	Corporation.

o	ARM Ltd. (Ed.). 2009. "ARM Barrier Litmus Tests and Cookbook".
	ARM Ltd.

o	Susmit Sarkar, Peter Sewell, Jade Alglave, Luc Maranget, and
	Derek Williams.  2011. "Understanding POWER Multiprocessors". In
	Proceedings of the 32Nd ACM SIGPLAN Conference on Programming
	Language Design and Implementation (PLDI ’11). ACM, New York,
	NY, USA, 175–186.

o	Susmit Sarkar, Kayvan Memarian, Scott Owens, Mark Batty,
	Peter Sewell, Luc Maranget, Jade Alglave, and Derek Williams.
	2012. "Synchronising C/C++ and POWER". In Proceedings of the 33rd
	ACM SIGPLAN Conference on Programming Language Design and
	Implementation (PLDI '12). ACM, New York, NY, USA, 311-322.

o	ARM Ltd. (Ed.). 2014. "ARM Architecture Reference Manual (ARMv8,
	for ARMv8-A architecture profile)". ARM Ltd.

o	Imagination Technologies, LTD. 2015. "MIPS(R) Architecture
	For Programmers, Volume II-A: The MIPS64(R) Instruction,
	Set Reference Manual". Imagination Technologies,
	LTD. https://imgtec.com/?do-download=4302.

o	Shaked Flur, Kathryn E. Gray, Christopher Pulte, Susmit
	Sarkar, Ali Sezgin, Luc Maranget, Will Deacon, and Peter
	Sewell. 2016. "Modelling the ARMv8 Architecture, Operationally:
	Concurrency and ISA". In Proceedings of the 43rd Annual ACM
	SIGPLAN-SIGACT Symposium on Principles of Programming Languages
	(POPL ’16). ACM, New York, NY, USA, 608–621.

o	Shaked Flur, Susmit Sarkar, Christopher Pulte, Kyndylan Nienhuis,
	Luc Maranget, Kathryn E. Gray, Ali Sezgin, Mark Batty, and Peter
	Sewell. 2017. "Mixed-size Concurrency: ARM, POWER, C/C++11,
	and SC". In Proceedings of the 44th ACM SIGPLAN Symposium on
	Principles of Programming Languages (POPL 2017). ACM, New York,
	NY, USA, 429–442.


Linux-kernel memory model
=========================

o	Andrea Parri, Alan Stern, Luc Maranget, Paul E. McKenney,
	and Jade Alglave.  2017. "A formal model of
	Linux-kernel memory ordering - companion webpage".
	http://moscova.inria.fr/∼maranget/cats7/linux/. (2017). [Online;
	accessed 30-January-2017].

o	Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and
	Alan Stern.  2017.  "A formal kernel memory-ordering model (part 1)"
	Linux Weekly News.  https://lwn.net/Articles/718628/

o	Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and
	Alan Stern.  2017.  "A formal kernel memory-ordering model (part 2)"
	Linux Weekly News.  https://lwn.net/Articles/720550/


Memory-model tooling
====================

o	Daniel Jackson. 2002. "Alloy: A Lightweight Object Modelling
	Notation". ACM Trans. Softw. Eng. Methodol. 11, 2 (April 2002),
	256–290. http://doi.acm.org/10.1145/505145.505149

o	Jade Alglave, Luc Maranget, and Michael Tautschnig. 2014. "Herding
	Cats: Modelling, Simulation, Testing, and Data Mining for Weak
	Memory". ACM Trans. Program. Lang. Syst. 36, 2, Article 7 (July
	2014), 7:1–7:74 pages.

o	Jade Alglave, Patrick Cousot, and Luc Maranget. 2016. "Syntax and
	semantics of the weak consistency model specification language
	cat". CoRR abs/1608.07531 (2016). http://arxiv.org/abs/1608.07531


Memory-model comparisons
========================

o	Paul E. McKenney, Ulrich Weigand, Andrea Parri, and Boqun
	Feng. 2016. "Linux-Kernel Memory Model". (6 June 2016).
	http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0124r2.html.
