Hardware

Hardware is the physical, tangible machinery of a computing system: the processors, memory, storage, and interconnects that carry out computation. It is distinguished from software, the instructions that direct that machinery, and from firmware, the low-level software that controls specific devices. The boundary is not always sharp. Modern processors run microcode, and GPUs are programmed for general computation. But the distinction remains useful.

A typical computer is built from a few major classes of hardware.

  • Processors. The units that execute instructions. See processor architectures.
  • Memory. Registers, caches, RAM, and other storage that holds data the processor accesses directly. Its hierarchy and access patterns are central to caching and to memory allocation.
  • Storage. Non-volatile media such as SSDs and disks that persist data across power cycles.
  • Interconnects and buses. The channels that move data between processors, memory, and devices. Their bandwidth and latency shape overall performance.
  • Networking hardware. Network interface cards, switches, and links that connect machines, the substrate of network protocols.

Hardware characteristics are physical constraints, not implementation details. Processor cores share caches, memory is layered with widely varying latency, and buses have finite bandwidth. Software that ignores these realities works against the machine. Mechanical sympathy is the practice of designing with them in mind, and data-oriented design applies the same thinking to data layouts.

Because hardware is complex and varies between machines, most software does not address it directly. Operating systems and device drivers present abstract interfaces, virtualization and the hypervisor decouple workloads from specific machines, and cloud platforms hide the underlying hardware entirely. These abstractions make software portable, at the cost of hiding the characteristics that affect performance, concurrency, and parallelism.

See also