I come from an electronics background. I know that there are three types of implementations of multithreading (see Computer Architecture: A Quantitative Approach, 5th Edition):
Fine-grain multithreading issues instructions for different threads after every cycle.
Coarse-grain multithreading only switches to issue instructions from another thread when the current executing thread causes some long latency events (like page fault etc.)
Simultaneous multithreading issues multiple instructions from multiple threads in one cycle. The processor must be superscalar to do so.
Does that mean that SMT is an extension of fine-grain and coarse-grain multithreading, and fine-grain and coarse-grain multithreading are only suitable for single core processor?
What is the exact difference between SMT and the other approaches?