From cedb3eb5a58241d9d6079f07d5cd40e8ef81007d Mon Sep 17 00:00:00 2001
From: Mohit Agarwal <mohit.agarwal@sky.com>
Date: Sat, 9 Oct 2021 19:07:24 +0100
Subject: Initial commit. Started notes and data rep test.

---
 notes/hardware.tex | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 239 insertions(+)
 create mode 100644 notes/hardware.tex

(limited to 'notes/hardware.tex')

diff --git a/notes/hardware.tex b/notes/hardware.tex
new file mode 100644
index 0000000..d9cebed
--- /dev/null
+++ b/notes/hardware.tex
@@ -0,0 +1,239 @@
+\chapter{Hardware}
+
+\begin{myquote}
+Hardware is the wiring and other physical components of a computer.
+\end{myquote}
+
+Modern computers have several typical components. There is a
+motherboard which has wiring printed on it in order to connect all of
+the other components. The central processing unit (CPU) is the main
+component that performs the instructions of computer programs.
+Graphics and sound cards provide the user with graphics on screen and
+sound through headphones or speakers. Input/output ports (I/O ports)
+transfer data between input devices such as a mouse or keyboard and
+output devices such as a printer or speakers.
+
+A popular I/O connector is the Universal Serial Bus (USB). A bus is a
+collection of parallel wires that transmit data as electrical signals.
+
+\section{von Neumann architecture}
+
+\footnote{Prof David Murray, University of Oxford, `A3 Computer
+Architecture',
+\url{https://www.robots.ox.ac.uk/~dwm/Courses/3CO_2000/3CO-L2.pdf}}
+In the 1940s von Neumann's (pronounced Noy-Man, not New-Man) created a
+design for general purpose computer, reliant on a CPU alongside
+\textbf{a single memory unit for both instructions and data}.
+Instructions are executed in series in the `fetch-decode-execute'
+cycle. It is very successful due to its need for only one memory unit
+and the ability to have general purpose rather than specific purpose
+hardware, which early computers were and had to be rewired to change.
+
+The design however does lead to the \textbf{`von Neumann bottleneck'} as data
+and instructions must be fetched from the same memory unit over the
+same bus.
+
+\section{Boolean logic}
+
+George Boole was able to devise a mathematical representation of
+arithmetic using only 1 (True) and 0 (False). Computers use circuits
+that can perform this logic by using on and off circuitry to represent
+1s and 0s. We can represent these circuits as `gates' and describe the
+logic in truth tables to show all possibilities.
+Typically we consider:
+\begin{itemize}
+    \item `And' gates, where the result is true if and only if both of
+        the two inputs are true.
+    \item 'Or' gates, where the result is true if either of the two
+        inputs are true.
+    \item 'Not' gates where the result is the inverse of the one input,
+        so a 1 becomes a 0 and a 0 becomes a 1.
+\end{itemize}
+
+\section{Central processing unit and performance}
+
+The central processing unit (CPU) performs the instructions that we
+ask of a computer. It controls data and instructions through the
+\textit{fetch-decode-execute} cycle, where an instruction is fetched
+from main memory, decoded by the CPU so that it can perform the
+correct logic (such as adding two numbers), and then the instruction
+is executed giving the output of the instruction (say the result of
+the addition).
+
+There are some critical components of the CPU that we typically consider:
+
+\begin{itemize}
+    \item The \textbf{control unit} `oversees' the operations of the CPU and
+        organises the operations performed and the movement of data
+        and instructions.
+    \item The \textbf{arithmetic and logic unit} (ALU) carries out the boolean
+        logic and mathematics via circuits that are designed to do so.
+    \item \textit{Registers} are high speed, small memory locations which hold
+        important data.
+        \begin{itemize}
+            \item The \textit{program counter} is a specific register
+                which stores the location in memory of the next
+                instruction to be executed.
+        \end{itemize}
+\end{itemize}
+
+The CPU executes instructions at a rate dictated by the system
+\textit{clock}. The \textit{clock speed} determines how many
+\textit{clock cycles} (fetch-decode-execute cycles) occur per second.
+This is measured in Hertz (Hz), which means times per second. A CPU
+in a computer today cycles with a clock speed around 4 GHz or
+around 4 billion clock cycles per second
+\footnote{7-Zip LZMA Benchmark, Intel Ice Lake:
+\url{https://www.7-cpu.com/cpu/Ice_Lake.html}}.
+
+The performance of the CPU can be bettered by:
+
+\begin{itemize}
+    \item Increasing the clock speed, so that more clock cycles occur
+        per second (overclocking). This does, however, increase power
+        consumption and CPU heat production.
+    \item Increasing the number of CPU cores. A \textit{multicore} CPU
+        has the ability to do multiple cycles at the same time,
+        depending on the number of cores and, for programs that have
+        the functionality, can perform parallel processing where a
+        large algorithm or calculation is distributed between cores,
+        thus improving performance.
+    \item Increasing cache size, to allow faster access to data and
+        instructions.
+    \item Increasing cache/memory speed, to allow faster access to data and
+\end{itemize}
+
+\section{Memory}
+
+Volatile memory is erased when electrical power to the system is
+turned off or interrupted, meaning that all data is lost. Random
+access memory (RAM) is reasonably fast and is volatile. RAM holds
+current application and operating system data, as well as instructions
+for programs that need to be executed.
+
+Read only memory (ROM) is not volatile and cannot be changed by the
+system, as the name suggests. Modern computers use ROM to contain the
+Basic Input/Output System (BIOS) and other instructions that are
+required in the \textit{booting process} of a computer. This performs
+tasks such as initialising hardware and initialising the operating
+system.
+
+Virtual memory might be necessary when there is insufficient RAM for
+data and instructions. This stores data that would be stored in RAM in
+secondary storage. \textit{Paging} is the process of swapping chunks
+of data between RAM and storage. Because secondary storage is
+significantly slower than RAM and due to the paging process, when
+virtual memory is necessary, the computer is significantly slowed
+down.
+
+\section{Cache}
+
+Cache is memory that is much smaller and more expensive than RAM, but
+is significantly faster also. Cache is used to store current
+instructions and data in order to increase CPU performance. There are
+three levels of cache, each with varying size and speed
+\footnote{7-Zip LZMA Benchmark, Apple M1:
+\url{https://www.7-cpu.com/cpu/Apple_M1.html}; Intel Ice Lake:
+\url{https://www.7-cpu.com/cpu/Ice_Lake.html}}:
+
+\begin{itemize}
+    \item Level 1 (L1) cache is very fast and small. It is located
+        directly on CPU cores. It is in the range of 64kB.
+    \item Level 2 (L2) cache is larger and slower than L1. It is
+        shared between CPU cores but is still very close to them, It
+        is in the range of 512kB.
+    \item Level 3 (L3) cache is significantly slower and larger than
+        L2, but is still much faster than normal RAM. It is in the
+        range of 8MB.
+\end{itemize}
+
+\section{Storage media}
+
+--intro
+
+\subsection{Magnetic storage}
+
+Magnetic storage relies on rotating \textit{platters} coated with
+magnetic material. A \textit{read/write head} can move across the
+platter. To write data the head contains electromagnets that can give
+the magnetic particles a positive or negative charge, representing one
+or zero in binary. A platter is divided into \textit{tracks} which are
+concentric circles, and segments which are radial divisions. A single
+segment on a single track is called a \textit{block}. Data is
+generally organised by blocks.
+
+Magnetic storage is high capacity with the highest available capacity
+in 2021 being 20TB
+\footnote{\url{https://www.tomshardware.com/news/seagate-ships-hamr-hdds-increases-dual-actuator-shipments}}.
+Magnetic storage is reasonably cheap and fast. However, the read/write
+head of a modern hard drive can be only 5 nm from the platter, which
+can spin at up to 15,000 rpm
+\footnote{\url{https://en.wikipedia.org/wiki/Hard_disk_drive};
+\url{https://en.wikipedia.org/wiki/Flying_height}}. This can create a
+lot of noise, power. The moving parts involved can fail and the
+read/write head can \textit{crash} into the platter causing
+significant data loss, particularly in the case the drive is impacted
+when running, such as if a laptop is dropped.
+
+\subsection{Solid state storage}
+
+\textit{Flash} memory chips store data with transistors that can reain
+their one or zero sate without power (non-volatile). As there are no
+moving parts, they are durable, silent, and portable. They are,
+however, very expensive per unit data and risk corruption of data in a
+power interruption event.
+
+\subsection{Optical storage}
+
+Optical media (such as a DVD) contains an inwardly spiralling track
+with pits and lands (small changes in height) to store data. A LASER
+is aimed at the media, and the reflection is captured by a sensor. The
+change from a pit to land can represent a zero or a one. This relies
+on the laser to be moved very precisely by motors to align with the
+track, and for the disc to be rotated at a precise speed (much like
+magnetic storage) in order to read data at the correct rate.
+
+Optical storage is very portable and can be read by many devices, but
+requires that they have a compatible drive.  However, large quantities
+of data are expensive to store and discs can very easily be scratched
+or damaged, although error correcting methods are generally used
+\footnote{3Blue1Brown, `How to send a self-correcting message':
+\url{https://www.youtube.com/watch?v=X8jsijhllIA}}. Reading data from
+an optical disc is slower than solid state or magnetic storage.
+
+\subsection{Cloud storage}
+
+Businesses and other organisations (such as schools) traditionally use
+servers for data storage of all data and for running services such as
+email and websites. This however, depends on skilled IT staff and
+expensive equipment and maintenance. Cloud data storage involves the
+use of offsite servers around the world, provided by large
+organisations providing storage for a monthly cost. This can be
+cheaper than an in house operation and provides the benefit of the
+server model to individuals such as the ability to access data from
+many devices and reliable backups. However, a cloud storage solution
+requires a reliable internet connection to access data, can become
+expensive for large amounts of data and due to the repeat cost, and
+raises philosophical concerns such as those surrounding the ownership
+of data.
+
+\section{Embedded systems}
+
+An embedded system
+\footnote{\url{https://en.wikipedia.org/wiki/Embedded_system}} is
+\textbf{custom built hardware} designed to perform a
+\textbf{specific task as part of a wider system}, as opposed to a
+general purpose computer.  Examples of embedded systems are visible
+all around us, such as in common electricals appliances such as
+printers, televisions, and cameras; in household appliances such as
+dishwashers and microwaves; and in advanced situations such as engine
+management in cars, guidance systems in aeroplanes, and medical
+equipment such as an MRI scanner.
+
+Embedded systems generally have no RAM and only have ROM which
+contains the \textit{firmware} for the specific program the system
+needs. They have \textbf{no operating system}. The have
+\textit{sensors} to gather informations about their surroundings (such
+as a thermometer or camera) and \textit{actuators} to act on or change
+their surroundings (such as the shutter in a camera or the motor in a
+washing machine).
-- 
cgit v1.2.3

