Hardware and Software Flashcards
ALU
Arithmetic and Logic Unit - a part of the processor which performs binary arithmetic and Boolean logical comparisons.
FPU
Floating-point Unit - a part of the processor which operates on floating-point numbers.
Main Memory
A storage area which contains program instructions and data. It is volatile, and each byte has a unique memory address.
Word
A fixed-size collection of data handled by the processor.
Register
A small memory location used to hold temporary data in the processor.
Cache Memory
A form of memory contained within the processor which is used to exchange data between the registers and main memory. It prevents bottlenecking as the speed of data written and read by registers is faster than that of main memory. It is split into multiple levels, and is volatile.
Level 1 Cache
The fastest and smallest level of cache, used for data and instructions to be immediately transferred to registers. If data cannot be found in level 1 cache, level 2 will be searched.
Level 2 Cache
A larger but slower level of cache memory. There may be two more levels of cache beyond level 2, which are slower and larger still.
Bottlenecking
Limiting the capacity or speed of the processor due to a specific component.
Accumulator
A register which stores the result of ALU operations.
SR
Status Register - holds information about the last operation executed, such as overflow or the sign of the result.
CU
Control Unit - coordinates movement within the processor by sending electrical pulses known as control signals that activate required connections.
Control Signal
An electrical pulse sent by the CU to activate needed connections.
Address Register
A register which holds the memory address of the next instruction to be executed. It is incremented each time to point towards the next instruction to be processed if they are sequential in memory.
Data Register
A register where data is stored when being transferred to the ALU or FPU or back to main memory.
Multi-Core Processor
A chip which contains two or more cores (containing a processor), which can run at the same time, increasing speed. Some levels of cache and main memory can be shared between them.
Threading
The process of splitting a task into multiple independent sub-tasks which can be completed by a different core.
Volatile Memory
Any memory where data is lost when the device is powered off.
RAM
Random Access Memory - any volatile memory where data can be directly accessed at any memory address. Main memory is a form of RAM.
ROM
Read-Only Memory - the non-volatile memory which stores information to be kept after a computer is powered down, such as boot programs.
Non-Volatile Memory
Any memory where data is kept when the device is powered off.
Boot Program
The program which is automatically executed when a computer is turned on. It typically tests memory before loading larger programs such as the OS into main memory.
Persistent Memory
Any memory which stores data even after a device a powered down or a process ends.
Bootstrapping
Using a small program to load a larger program.
Memory Address
An indicator of a unique location in memory. The first memory location is given an address of zero and each after that has a value one greater than the last. Hexadecimal is used to represent addresses as binary addresses would likely become too long. Hex values often begin with 0x to indicate the number base.
Bus
A wire which connects components of a computer.
Control Bus
A bus which carries the control signals sent by the CU to parts of the computer.
Address Bus
A bus which carries addresses of memory locations to be accessed.
Data Bus
A bus which carries data between components.
Processor Clock
A device which sends out pulses at regular intervals to synchronise instructions. The number of pulses per second is typically measured in GHz. A higher frequency, or clock speed, permits faster processing.
Clock Cycle
The time between two clock pulses. Some instructions can complete in one clock cycle.
Overclocking
Increasing the speed at which a computer executes instructions.
OS
Operating System - a collection of programs which manage data and coordinate hardware in a computer. It enables complex tasks to be carried out whilst hiding complexities from the user, provides an interface so that the user can operate at a higher level of abstraction, and often includes some standard programs such as web browsers.
Motherboard
The circuit board which contains main memory, the processor, and ports.
Peripheral Device
An input and output device which can be connected to a computer, either through slots on the motherboard or a port.
Port
A socket or plug which permits external peripheral devices to be linked to a computer.
USB
Universal Serial Bus - a port socket which allows external peripherals to be connected without the need to restart a computer. Other examples include lightning ports, microphone jacks and HDMI ports.
Expansion Bus
A bus which enables communication between a computer and a peripheral, sometimes called the I/O bus.
PCI
Peripheral Component Interconnect - a form of high-speed bus technology used as a standard for modern expansion buses.
Haptic Devices
The use of devices relating to touch.
Secondary Memory
Memory which contains persistent data, often in the form of a HDD or SSD built into the case. It is used to store program code or data files not immediately needed, and usually makes up the majority of memory in a computer.
Sound Card / Graphics Card
A dedicated separate peripheral for processing sound or graphics which fits into expansion slots on the motherboard.
Sound Processor Unit
A cheap integrated processor which handles sound, but can slow a computer overall.
GPU
Graphics Processor Unit - a dedicated processor which is mainly used to process graphics, but can also perform tasks such as floating-point arithmetic.
Instruction Set
The set of all possible instructions that a computer can process.
Arithmetic and Logical Operations
Operations including addition, subtraction, multiplication, division, comparing register contents, AND, NOT, and OR.
Control Flow Operations
Operations such as changing the flow of execution to complete instructions out of order, in a while loop for example.
Data Handling and Memory Operations
Operations such as setting a register to a fixed value, copying data from a memory location to register or vice versa, and reading or writing to hardware.
Program Counter
A register which points towards the address of the next location in memory to be accessed.
Data
A collection of bits used to store information. It is stored in the form of a ‘word’.
Instruction
An operation for a computer component to complete using data. It is usually represented in three to four distinct parts in binary, which consist of code indicating the intended operation, and any value to be used. OP codes indicate the process.
OP Code
Operations Code - an indicator of a unique operation to complete by the processor, making up part of an instruction. It is represented in binary.
Machine Language
Binary code that a computer can directly understand.
Fetch-Decode-Execute Cycle
During each clock cycle, the processor uses the value stored in the program counter to load the next instructions operator from memory to the instruction register. The instruction is then decoded, and, if additional values are needed, they are fetched into the appropriate registers. It can then be executed using the ALU and FPU, and by updating registers including the SR if required.
Turing Machine
A machine that can complete any task it is possible for a computer to do.
RISC
Reduced Instruction Set Computing - a system in which a computer can execute a small number of optimal and distinct instructions of a single operation in singular clock cycles. Instructions are represented in the same number of bits as only one memory location is used.
CISC
Complex Instruction Set Computing - a system in which a computer can execute large distinct instructions of many operations across many clock cycles. Instructions have varying numbers of bits and use multiple memory locations. The number of clock cycles varies due to this fact.
Pipelining
Speeding up a task by splitting it into steps that can be executed in parallel (the next instruction can begin processing after a certain amount of time used by the current, when it is no longer using a certain register). It is more effective in RISC due to the constant number of clock cycles.
Assembly Language
A programming language which uses instructions and addresses readable by a human but can also directly access features available on the processor it is designed for. It permits data in forms other than binary, lets an assembler perform error checks, and can include comments.
Translator
A program which converts source code to machine language.
Assembler
A program which converts an assembly language program to a machine language equivalent.
Low-Level Language
A programming language which can be understood directly by a computer, including machine code and assembly language.
High-Level Language
A programming language which cannot be directly understood by a computer, but can be learnt by a human. It includes Python, C#, and many other examples.
Source Code
A program written in high-level language. It can be translated into object code.
Compiler
A translator program which translates a source code to a machine language program known as an object code.
Object Code
A program written in low-level language.
Interpreter
A type of translator program which translates each instruction in a source code only when it is required to be executed, line-by-line.
Bytecode
An intermediate program which is created when some high-level programming languages such as Python need to be translated to machine language. It can be translated by a collection of software known as a virtual machine before being executed by the OS. Bytecode can be understood by any computer with the appropriate VM, and is more secure as it has already been compiled, but is slower and requires different virtual machines in different devices.
Virtual Machine (for Translation)
A layer of software in the OS which understands bytecode instructions and can translate it into machine code.
Virtualisation
The use of software to emulate a physical computer system, for example recreating a windows platform on a Linux device.