theartofhpc.com/istc/sequential.html#ThevonNeumannarchitecture
In order to write efficient scientific codes, it is important to understand computer architecture. The difference in speed between two codes that compute the same result can range from a few percent to orders of magnitude, depending only on factors relating to how well the algorithms are coded for the processor architecture. Clearly, it is not enough to have an algorithm and `put it on the computer': some knowledge of computer architecture is advisable, sometimes crucial. Some problems can be solved on a single CPU , others need a parallel computer that comprises more than one processor. We will go into detail on parallel computers in the next chapter, but even for parallel processing, it is necessary to understand the individual CPUs . In this chapter, we will focus on what goes on inside a CPU and its memory system. We start with a brief general discussion of how instructions are handled, then we will look into the arithmetic processing in the processor core; last but not least, we
Single-processor Computing Experimental html version of downloadable textbook, see https://theartofhpc.com \[ % mathjax inclusion. \newcommand\bbP{\mathbb{P}} \newcommand\bbR{\mathbb{R}} \newcommand\becomes{\mathop{:=}} \newcommand\dtdxx{\frac{\alpha\Delta t}{\Delta x^2}} \newcommand\defined{ \mathrel{\lower 5pt \hbox{${\equiv\atop\mathrm{\scriptstyle D}}$}}} \newcommand\fp[2]{#1\cdot10^{#2}} \newcommand\inv{^{-1}}\newcommand\invt{^{-t}} \newcommand\macro[1]{$\langle$#1$\rangle$} \newcommand\nobreak{} \newcommand\Rn{{\cal R}^n} \newcommand\Rnxn{{\cal R}^{n\times x}} \newcommand\sublocal{_{\mat
related reading
- A very concrete explanation of how a cache worksparksb.github.io
- Modern Microprocessors - A 90-Minute Guide!lighterra.com
- What Every Programmer Should Know About Memorypeople.freebsd.org
- Cache Lines - Algorithmicaen.algorithmica.org
- What Every Programmer Should Know About Memoryakkadia.org
- Algorithms for Modern Hardware - Algorithmicaen.algorithmica.org
- abseil / Performance Hintsabseil.io
- Memory location matters for performancepythonspeed.com
- Why do CPUs have multiple cache levels? | The ryg blogfgiesen.wordpress.com
- Memory access is O(N^[1/3])vitalik.eth.limo
- Infographics: Operation Costs in CPU Clock Cycles - 6IT6it.dev
- Microsoft Word - CACM_roofline_complete.docusers.cs.duke.edu