General Computer Architecture Quick Start
This page details the parts of a modern computer and their connectivity that we need to understand to apply to running jobs on a HPC cluster.
These descriptions are drastically simplified in order to give a basic overview which users can use to better understand requesting cluster resources.
Computer architecture as a concept
Before discussing aspects of “computer architecture” we must first define what this means. In short:
Computer architecture refers to how a computer system is designed and what technologies it is compatible with.
This can also be roughly subdivided into, system (physical) design, instruction set architecture and microarchitecture.
Further info on these subdivisions can be found at the following link: https://online.sunderland.ac.uk/what-is-computer-architecture/
Physical architecture refers to the real physical components and structures used by computers.
A central processing unit (CPU), the most common processing device in a computer which performs calculations in order to run applications and coordinate work with other components. Also known as a microprocessor.
CPU cache refers to smaller, faster memory which is located on the CPU itself. CPUs usually have multiple caches at different “levels” with higher levels able to store larger amounts of data but going slower. These caches are used to speed up computation by keeping the most frequently accessed data located in faster memory close to the CPU and its cores.
A CPU core or processor core is a single subprocessing unit capable of one task at a time. Modern CPUs are made of multiple processor cores which share system memory.
A physical socket on a motherboard in which a CPU is inserted. Physical sockets are usually connected to their own groups of memory slots.
A motherboard is the main electronic board in which computer components reside and connect to one another. They contain one or more sockets, memory slots, PCIe slots and buses.
System bus / buses
A system bus or motherboard bus is a physical pathway of electronic circuits which enable discrete components within a computer to communicate with one another via the motherboard.
A memory slot is a physical slot in which physical memory sticks are inserted to provide the system memory.
Memory, system memory or RAM is a computer’s low latency, extremely high bandwidth short term data storage. It is used to store the data which the CPU currently requires to perform the computations to run applications.
This is the communication bus between system memory and a Socket/CPU.
PCI or PCIe Bus
A communication bus between a Socket/CPU and input/output controllers connected to storage such as hard drives or solid state disks, network adaptors, GPUs or other compatible devices.
PCI or PCIe slot
A physical slot on the motherboard in which additional compatible components like a GPU can be inserted to connect with the PCIe Bus.
A graphical processing unit (GPU) is the second most common processing unit in a computer which is designed to perform specific graphical calculations very quickly and is normally used to drive a computer’s displays. These are commonly connected via a PCIe slot and bus. More recently GPUs have been used to perform similar graphical calculations but for other purposes such as AI or machine learning.
CPU Microarchitecture refers to the fundamental design of a CPU including the physical layout, components and methods which enables the CPU to execute desired instructions or instruction sets.
One of the most important things about a CPU microarchitecture is which instruction sets it enables. Using purpose optimised instruction sets for our software can enable enhanced performance if the software is compiled with these in mind.
In this case, virtual architecture refers to the virtual components, concepts or structures used by computers.
Threads / Hyperthreading
A thread can be considered a flow of instructions to be executed. A modern CPU core can normally execute 2 threads, or conceptually, 2 flows of instructions at the same time for additional performance. This is called hyperthreading. Performance improvements are usually modest but hyperthreading can decrease performance for some programs. Hyperthreading is disabled on the University of Sheffield HPC clusters.
Multiple threads running on one core can be thought of like a single human (core) using both hands (two threads) to complete tasks. Simple tasks like carrying and moving items can be completed quicker by moving more items at once. More complex tasks like throwing darts accurately could be detrimentally affected by attempting to do so with both hands at the same time.
Virtual memory is a memory management technique where storage can be used as if it were a part of the main memory to compensate for physical memory shortages, temporarily transferring data from random access memory (RAM) to disk storage. You may also hear this mentioned as virtual memory paging or paged virtual memory.
Instruction sets or instruction set architecture are the part of the computer architecture that provide the commands or instructions that a processor can execute.
An example of an instruction could be the ADD or SUBTRACT instructions which follow their namesake operation on numbers.
Examples of instruction sets could include general sets such as x86 (common to 32bit and 64 bit processors) or x64 (common to 64bit processors) but can also be very specific such as AES-NI which is designed to specifically accelerate cryptographic algorithms.