Simultaneous Multithreading (SMT)

Simultaneous multithreading is the process of a CPU splitting each of its physical cores into virtual cores, which are known as threads.

  • Increase performances and allow each core to run two instruction streams at once

I learned in CS343 that some of the components are shared by each core. For example, for floating point units, both cores share the computation for that.

https://www.tomshardware.com/reviews/simultaneous-multithreading-definition,5762.html

Also ran into the term hyper-threading learning Eigen: https://eigen.tuxfamily.org/dox/TopicMultiThreading.html

Symmetric Multiprocessor (SMP)

SMP can be defined as a stand-alone computer system with the following characteristics:

  1. There are two or more similar processors of comparable capability.
  2. These processors share the same main memory and I/O facilities and are interconnected by a bus or other internal connection scheme, such that memory access time is approximately the same for each processor.
  3. All processors share access to I/O devices, either through the same channels or through different channels that provide paths to the same device.
  4. All processors can perform the same functions (hence the term symmetric).
  5. The system is controlled by an integrated operating system that provides interaction between processors and their programs at the job, task, file, and data element levels.

SMT vs SMP?

  • SMP = “more cores”
  • SMT/HT = “more hardware threads per core”

Your physical computer combines both.