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:
- There are two or more similar processors of comparable capability.
- 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.
- All processors share access to I/O devices, either through the same channels or through different channels that provide paths to the same device.
- All processors can perform the same functions (hence the term symmetric).
- 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.
