浏览代码

footnote about hardware caches

Ryan Newton 7 年之前
父节点
当前提交
28d37af47b
共有 1 个文件被更改,包括 16 次插入10 次删除
  1. 16 10
      book.tex

+ 16 - 10
book.tex

@@ -1022,16 +1022,22 @@ language to compile $R_1$.
 \section{The x86 Assembly Language}
 \section{The x86 Assembly Language}
 \label{sec:x86}
 \label{sec:x86}
 
 
-An x86 program is a sequence of instructions. The program is stored in
-the computer's memory and the \emph{program counter} points to the
-address of the next instruction to be executed. For most instructions,
-once the instruction is executed, the program counter is incremented
-to point to the immediately following instruction in the program.
-Each instruction may refer to integer constants (called
-\emph{immediate values}), variables called \emph{registers}, and
-instructions may load and store values into memory.  For our purposes,
-we can think of the computer's memory as a mapping of 64-bit addresses
-to 64-bit values. Figure~\ref{fig:x86-a} defines the syntax for the
+An x86 program is a sequence of instructions. The program is stored in the
+computer's memory and the \emph{program counter} points to the address of the
+next instruction to be executed. For most instructions, once the instruction is
+executed, the program counter is incremented to point to the immediately
+following instruction in the program.  Each instruction may refer to integer
+constants (called \emph{immediate values}), variables called \emph{registers},
+and instructions may load and store values into memory.  For our purposes, we
+can think of the computer's memory as a mapping of 64-bit addresses to 64-bit
+%
+values\footnote{This simple story doesn't fully cover contemporary x86
+  processors, which combine multiple processing cores per silicon chip, together
+  with hardware memory caches.  The result is that, at some instants in real
+  time, different programs may hold conflicting cached values for a given memory
+  address.}.
+%
+Figure~\ref{fig:x86-a} defines the syntax for the
 subset of the x86 assembly language needed for this chapter.  (We use
 subset of the x86 assembly language needed for this chapter.  (We use
 the AT\&T syntax expected by the GNU assembler inside \key{gcc}.)
 the AT\&T syntax expected by the GNU assembler inside \key{gcc}.)
 Also, Appendix~\ref{sec:x86-quick-reference} includes a
 Also, Appendix~\ref{sec:x86-quick-reference} includes a