Repository

Looks good to me!

User Tools

Site Tools


kb:tools:pcbuild

PC Building

This is a consolidation of what I've learnt about building a new computer in July 2022. Nothing fancy, just a helpful reminder of what steps to consider. Some resources are linked to explore.

There are two parts to building a new computer: selecting what to buy, and eventually assembling them. Assembly is the easy part - selecting what to buy may not.

Selecting components

There are many guides out there talking about choosing components, offering pre-build solutions, dispelling myths about building your own PC, etc. Some of these resources I found helpful are linked below.

Resources

Logical increments

  • Provides recommendations for general usage PCs catering to different budgets
  • Parts they recommend are compatible, so is a good reference for parts selection
  • CPUs chosen tend towards the latest generation of CPUs
  • As of July 2022, their recommended cost distribution (based on 'Outstanding' category) seems to be the following. Note the currently inflated GPU prices. In comparison, my current build has the following distribution. Remember: configure based on your needs!
GPU CPU MOBO RAM HDD SSD PSU Fan Case
Logical Increments 41% 18% 12% 3% 3% 6% 5% 3% 9%
Current build 24% 21% 14% 16% 0% 8% 8% 5% 4%

Reddit - r/buildapc

  • Generally helpful recommendations on what components to avoid, and other technical stuff
  • Typically reachable when searching for information via Google
  • Note that many comments are anecdotes, so there will be occasional conflicting advice - take them with a pinch of salt

Reddit - r/homelab

Bizgram Asia Pte Ltd

  • If you live in Singapore, Bizgram is a pretty great wholesaler for computer components and miscellaneous stuff
  • Check the regularly updated pricelist to compile costs and availability of components

Decision chart

A plausible decision flow might follow the lines of this.

First consider if you need any of the following:

  • High availability / production systems: Strongly consider investing in memory with error-correction capabilities. This limits the type of CPU you can get, e.g. for Intel CPUs, this is only supported by Xeon processors or 12th gen Core processors coupled with W680 chipset.
  • Portability: Small cases like mini-ITX are limited mainly by the available PCIe slots and is dependent on whether the case has sufficient clearance. If portability is a priority, either buy a laptop (these are very much custom-built components that would be hard/costly to source and assembly) or do some serious planning for it, e.g. sufficient airflow, low profile GPUs, etc.
  • Overclocking: Overclocking is typically done to boost system performance by increasing CPU clock rates. Not only heat dissipation will be a bigger concern, only certain CPU + chipset combinations can perform overclocking.

On form factors - here is a rough comparison between common case sizes by CG Director:

An entire listing of different form factors on Wikipedia.

  • ATX: Most popular form for desktops, typically 12x9.6" (width x depth)
  • microATX: Popular in desktops and SFF as of 2017, 9.6x9.6"
  • Mini-ATX: Designs for mobile on desktop technology, 5.9x5.9"
  • Mini-ITX: For thin clients, 6.7x6.7"
  • Nano-ITX: For set top boxes, 4.7x4.7"
  • Mini PC: e.g. NUC

A short note on mini-ITX, and why it might not be worth the time:

Two key options guiding the form factor to use:

  1. Availability of parts for form factor
    • Potential for extension? e.g. to fit a GPU
    • Compatibility between motherboard and components
    • Heat management more critical
  2. Portability
    • How easy is it to lug it around / maintain it?
    • Placement in storage / server shed?

Back to the main topic...

The CPU and motherboard tends to go hand-in-hand because the CPU socket tends to change, e.g. for any of the Intel Alder Lake series (12th gen) CPUs, the available chipsets for it are:

  • Z690: For enthusiast builds (read: overclocking)
  • W680: For performance builds with overclocking and ECC support, see article
  • H670: For performance builds without overclocking and ECC support
  • Q670: For performance builds without overclocking/ECC support, but retains peripherals, see article
  • B660: For general builds, generally starts to have performance cuts
  • H610: For budget builds

Motherboards are built around these chipsets, with varying levels of feature support and available footprints.

Tip

Choose CPU based on the following requirements:

  • Number of cores (for parallel computing)
  • Core clock (for performance, and by extension, power consumption)
  • Presence of integrated GPU (useful when no discrete GPU available)
  • Budget (lower generations tend to be cheaper, but also less efficient)

Available choices for Intel CPUs include the range from Pentium, i3, i5, i7, i9, -U/-M series, -Xe series, etc. Then shop for motherboard, perhaps using PC Part Picker (note that the CPU should be selected first to check for compatibility):

  • Form factor (ATX, micro-ATX, mini-ITX, etc.)
  • Peripheral support:
    • Ethernet port speeds
    • PCIe slots
    • etc.

The rest is really a mix-and-match. See the following description of each component in the subsequent sections. Then finally decide miscellaneous stuff like airflow management / fan placement (note this is more critical when working with smaller builds with limited airflow):

  • Power supply:
  • Airflow management:
    • LinusTechTips video on the possible effects of intake.
    • Intake fans on the side and exhaust fans on the bottom. Do not put intakes on top/bottom where dust likely to settle.
    • Dust filters on intake very important.
    • More fans = more dust.
  • Noise management:
    • Noise can go for silent components. All or nothing.
    • Avoid water-cooled systems, typically not cost-effective cooling, mainly for aesthetics.
  • Remote GUI access:
    • Commercial centralized server connection: Teamviewer, RealVNC
    • Free software client-server connection: TigerVNC, Remote Desktop (RDP), Guacamole

CPU

Background

Clock rate:

  • The rate at which operations are processed - higher means faster
  • The specified clock rate is typically achieved using a lower front-side bus (base) frequency and multiplying using a PLL

Nothing much here - main part described above.


RAM

Diagram shows CPU retrieving data via a single memory channel, where data is internally stored in bank group 0, rank 1, of RAM card 2.

graph TD C === |"Channel 0"| D0["DRAM Memory
controller"] C --- |"Channel 1"| D1["DRAM Memory
controller"] D0 --- |"Card 1"| A0["..."] D0 === |"Card 2"| A1{" "} D1 --- |"Card 1"| A2["..."] D1 --- |"Card 2"| A3["..."] subgraph "RAM card 4" A3 end subgraph "RAM card 1" A0 end subgraph "RAM card 2 (dual-rank, DDR4 x16)" A1 -.- B10["Rank 0"] A1 === B11["Rank 1"] B11 === M{" "} M === G0["Bank group 0"] M -.- G1["Bank group 1"] end subgraph "RAM card 3" A2 end subgraph "Motherboard chipset
(2 DIMMs/Ch)" D0; D1; end subgraph "CPU (max 2 memory channels)" C00["Processor"] === C["Memory management
unit (MMU)"]; C9["Cache"] -.- C end

Background

This Reddit post is a nice overview of the topics below, consider reading.

DIMM:

  • Stands for dual-inline memory module, the physical interface for common memory cards

Channel:

  • A single memory channel is typically a 64-bit physical link between CPU and RAM
  • Number of memory channels supported is typically limited by CPU, chipset and motherboard
  • The number of slots on motherboard does not necessarily correspond to number of memory channels
    • Consumer motherboards tend to allow duplexing of RAM cards per channel

Rank:

  • Each memory card can support multiple ranks of 64-bit width each
  • A dual-rank memory card has 128-bit width (quad with 256-bit width)
  • The memory controller for *each* memory channel can only address a single rank at a time
    • The order in which memory cards are placed in a four-slot, two-channel motherboard is thus critical with only two memory cards - either achieve dual-channel (good) or single-channel (bad)
  • A dual-channel dual-rank setup (2 dual-rank cards or 4 single-rank cards) can boost performance by roughly 5-10% compared to dual-channel single-rank setup (2 single-rank cards)
  • The number of ranks per memory channel is determined by the motherboard chipset

Bank groups:

  • Introduced in DDR4 to multiplex two 8N prefetches in separate memory groups to achieve interleaving
  • Typically in memory geometries of x8 (4 bank groups of 4 memory banks) or x16 (2 bank groups of 8 memory banks)
  • There is a performance hit if same bank group accessed consecutively
  • Inferring from NotebookCheck, a total of 4 memory banks per DIMM is ideal - for single-ranked memory, 1Rx8 performs better than 1Rx16 geometry

CAS latency (CL):

  • The fixed number of clock cycles mandated by RAM to return data after a CPU data request instruction

Clock rate:

  • The clock frequency at which RAM runs operations - higher means faster operations
  • Must be compatible with CPU max memory speed, otherwise RAM will be downclocked
  • Typically not overclocked (unless via Intel XMP in motherboard chipset to support non-industry-standard speeds - the CPU specified max memory speed usually only quotes in industry-standard speeds), can be undervolted for longevity/lower power
    • See interpretation in table below
  • Modern architecture typically does not directly synchronize to CPU processor clock, but to front-side bus frequency (FSB) / memory controller speeds instead
    • Frequency ratio to FSB can be further tuned using memory dividers when overclocking CPU via increased FSB rate, to avoid a corresponding overclock to RAM for stability
  • Access to memory is arbitrated by the memory controller, which internally handles differences in clock speeds using clock domain crossing
CPU memory
types
Chipset max
memory clock
RAM clock Intel XMP
enabled
Effective clock
2400 MHz 3200 MHz 2400 MHz No 2400 MHz
Yes 3200 MHz
2400 MHz 2000 MHz 3200 MHz - 2000 MHz
2000 MHz 2400 MHz 3200 MHz No 2000 MHz
Yes 2400 MHz

First-word latency:

  • The real latency of response is determined by the clock rate to CL ratio, typically on order of 10ns
  • Typically the shorter, the better. Standard values are generally already in DDR specification

Error-correcting codes (ECC):

  • Increases data width by encoding data with parity bits, protects against bit flips in RAM
  • Unbuffered vs registered ECC: Registered = more memory at expense of additional middleman register buffer
  • Incidence of errors is rare
  • Necessary only for production servers where long uptime is required - optional for consumer systems which can tolerate occasional restarts / OS reinstallation, e.g. when kernel issues start occurring due to RAM errors
  • May result in higher costs, although prices have generally converged

Market conditions (July 2022)

  • For ECC memory, only up to DDR4 available, up to 64 GB sticks for both registered and unbuffered ECC. Average FWL (first word latency) is 14 ns.
  • For non-ECC memory, both DDR4 and DDR5 available, up to 32 GB sticks for unbuffered. No market for registered non-ECC memory. Average FWL is 11 ns.
    • Note that DDR5 typically has on-die ECC (separate from true ECC with extra data correction chip), so FWLs are also around 14 ns. Relatively new standard released in 2020.
    • DDR4 memory sticks are most popular at the moment (2022).
  • Ranks are typically dual-ranks, to take advantage of rank-interleaving.

Guiding recommendations

  1. Choose CPU (and motherboard) based on:
    • Supported memory types, speeds, and capacity
    • Number of DIMM slots available
    • If quad-channel needed
    • If support for ECC memory needed
  2. Prefer RAM:
    • Lowest first word latency
    • Two sticks if at least dual-rank, otherwise four single-rank sticks
    • Must be same type of RAM

GPU

Shamelessly copied from TomsHardware.

Nvidia GPUs AMD GPUs Class Recommended use
GT 1030 RX 550 Cheap No gaming, w/o integrated graphics
GTX 1050 (Ti)
GTX 1060
GTX 1650 (Super)
RX 560-590
RX 5500 XT
RX 6400-6500
Budget 1080p, low/med settings
GTX 1070 (Ti)
GTX 1660 (Super/Ti)
RTX 2060
RTX 3050
RX Vega 56
RX 5600 XT
RX 5700
RX 6600 (XT)
Mid-range 1080p, VR-compatible
GTX 1080 (Ti)
RTX 2060 Super
RTX 2070 (Super)
RTX 2080 (Super/Ti)
RTX 3060 (Ti)
RTX 3070 (Ti)
RX Vega 64
Radeon VII
RX 5700 XT
RX 6800
High-end 1440p, high-refresh 1080p, VR
Titan Xp
Titan V
Titan RTX
RTX 3080 (Ti)
RTX 3090 (Ti)
RX 6800 XT
RX 6900 XT
Extreme 4K, great ray-tracing, AI

Another great table on bandwidth requirements for displays, as defined by VESA: Resolution vs refresh rate + color-depth -> Required data bandwidth

1080p 1440p 2160p
60 Hz, 8-bit 3.20 Gbps 5.63 Gbps 12.54 Gbps
60 Hz, 10-bit 4.00 Gbps 7.04 Gbps 15.68 Gbps
144 Hz, 8-bit 8.00 Gbps 14.08 Gbps 31.35 Gbps
144 Hz, 10-bit 10.00 Gbps 17.60 Gbps 39.19 Gbps

Notably, DisplayPort 1.4 and HDMI 2.1 support Display Stream Compression 1.2a (DSC), which provides up to 3:1 compression ratio. Note that 8-bit color depth means 24-bit color (8-bit each RGB). Pretty much just get whatever is convenient, e.g. HDMI.

Need to look out for form factors compatible with motherboard / case.

Supplementary power connectors are typically required to supply more power than available through PCIe x16 slot (75W). Extensions seem to be for PCIe and/or PSU.

Background

Graphics card memory (VRAM):

  • Internal memory used by GPU
  • Read the many GPU buying guides to get a sense of what capacity is recommended

Video ports:

  • This article explains the difference between DisplayPort and HDMI
  • Need to balance with bandwidth requirements on displays used, see table above

Clock speed:

  • Same as that in RAM and CPU

CUDA Cores / Stream Processors:

  • No idea at the moment, didn't read it up

FLOPS:

  • Floating-point operations per second, maximum theoretical speed
  • Useful only when comparing between same architecture

Memory speed/bandwidth:

  • Also no idea at the moment

Guiding recommendations

None at the moment, but consider reading these articles:


Storage

graph LR B1[SATA]; B2[SAS]; B3[PCIe] B4[Ethernet] subgraph "Serial ATA interface (half-duplex)" A1("SATA 3.0
(6 Gbps; 2008)") -.- B1 end subgraph "PCIe interface (dual-simplex)" A5("PCIe 3.0
(8 Gbps/lane; 2010)") -.- B3 A6("PCIe 4.0
(16 Gbps/lane; 2017)") -.- B3 A7("PCIe 5.0
(32 Gbps/lane; 2017)") -.- B3 end subgraph "Serial Attached SCSI interface (full-duplex)" A2("SAS-2
(6 Gbps; 2009)") -.- B2 A3("SAS-3
(12 Gbps; 2013)") -.- B2 A4("SAS-4
(22.5 Gbps; 2017)") -.- B2 end subgraph "Ethernet interface" A8("Gigabit Ethernet
(1 Gbps)") -.- B4 A9("10GbE
(10 Gbps)") -.- B4 end B1 --> C1; B3 --> C2; B3 --> C1 B2 --> C3 subgraph "Physical layer" F1["M.2"] --> |"≤ 4 lanes"| A5 F1 --> A1 F2["U.2
(2011)"] --> |"≤ 4 lanes"| A5 F2 --> A1 F2 --> A2 F3["SFP"] --> A2 F3 --> A8 end subgraph "Host protocols" C2(["NVMe 2.0
(2020)"]) C1(["AHCI 1.3
(2011)"]) C3(["SCSI"]) end

Distinguish between transfer rate (raw transfer speed) and throughput (actual data rate after encoding, e.g. for 8b/10b encoding, overhead is 20%, so throughput is 80% of transfer rate).

This only a summary - in reality, PCIe/SATA/SAS are specifications for multiple layers, including the physical, link, transport, etc. Read this diagram with a pinch of salt and treat it more like a starting point

Serial buses are preferred over parallel buses due to inherent problems with the latter, most importantly the timing skew (different signal arrival times due to differences in paths/velocities) on order of nanoseconds requires a longer interface clock period, limiting it to sub-GHz performance. On the other hand, serial connections only has a single differential signal in each direction per data lane (reducing timing skew), and the point-to-point serial links between device host and other devices allows for full duplex communication without need for arbitration by the host (needed in parallel configuration since all devices share common set of data and address lines).

Note that you can compare the speed of a storage interface (order of ~1 Gbps) relative to the bus speeds (order of ~50 Gbps), so typically it won't be a huge constraint.

Guiding recommendations

None, but consider reading these articles:


Specification list

Good as a rough overview of what specifications to consider, but this isn't actually updated. See the list of components purchased updated on PC Part Picker.

Component Target Remarks
Motherboard
Chipset
Product family -
Bus speed - Not sure what this affects
Overclocking support -
DIMMs per channel 1 / 2 Depends on CPU memory channels
PCIe support 4.0/5.0 Sync with CPU
PCIe lanes ≥ 16 Sync with CPU
USB ports ≥ 3 USB 3.0
SATA ports -
Peripherals
Audio card/ports - Depends
Form factor Micro-ATX Mini-ITX if possible, but chances are, more powerful specs cannot fit into small form factor. To see.
DIMM channels 2 / 4 Whichever supported by motherboard and/or cheaper
PCIe slots
SATA ports
M.2 ports
SLI/Crossfire - Support for multi-GPU setups, typically not necessary nor cost-effective
Wireless card - Not necessary
Ethernet 10GbE Maximize connection to NAS
PCIe lanes
RAM
Type DDR4 Clock speed as high as supported by CPU/chipset
Capacity ≥ 64GB Needs to support virtualization and heavy workloads
Registers No
CPU
CPU
Product family 12th gen Intel For power efficiency. Later generations typically better
Total cores ≥ 8 cores For parallel performance
Base frequency - As high as possible
Cache - As much as possible
Instruction set 64-bit
TPM 2.0 Recommended
Memory
Max size ≥ 128GB For extensibility
Type DDR4/5 support For extensibility
Max channels 2 / 4
Max bandwidth - As much as possible
ECC support -
Graphics
Integrated - Might be handy if GPU fails
Expansion
PCIe support 4.0/5.0
Max lanes ≥ 16 Discrete GPUs require 16 lanes. Not sure for others
GPU GPUs tend to have PCIe x16 interface.
Storage
HDD None Outsource this to local NAS
HDD speed -
SSD ≥ 2TB Preferably two separate cards if cheaper
SSD speed NVMe, - IOPS Check if limited
RAID None Minimize heavy-writes inherent in fault-tolerant RAID levels by eliminating redundancy.
kb/tools/pcbuild.txt · Last modified: 18 months ago ( 2 May 2023) by 127.0.0.1