在单个内核中同时执行线程是否存在限制?因为在英特尔处理器的规格中,他们提到如果处理器有4个内核,则同时执行8个线程是可能的。请澄清,如果它是完全abusrd处理器中每个内核的线程数
-1
A
回答
1
的4核心处理器只能同时运行4个线程好心承担......
... ...技术上
...或在使用至少是真实的。
[现代] CPU的流水线有几个工作站存储操作。例如,当一条指令将内存提取到寄存器中时,它将被分配给一个具有所有依赖关系的工作站。随后的将该数字加1的指令被存储,取决于获取操作,该操作占用该工作站直到完成提取。
随着指令送入CPU,它们被分配到工作站。然而,只有这么多的内存提取站,所以如果一个提取进来,但取数据站被占用,它将等待,直到取出完成。
这是一个线程发生的情况。
但是,通常情况下,两个线程正在做不同的事情:一个可能会做一堆内存获取操作,然后是整数算术操作,然后是内存存储操作,而另一个线程可能只想做一堆浮点运算操作......如果只允许执行第一个线程,则浮点运算操作站将闲置,未使用。
那么为什么不使用它们呢?
这简直就是超线程。
所以,如果你有线程在做同样的操作,你在任何时候都有四个线程运行。
如果您有线程做不同的事情,您可以将吞吐量增加到理论上最多八个线程在任何给定时间运行。
你的线索越相似,越接近4;你的线程越不同,越接近8。
相关问题
- 1. 处理器数量/每个处理器的内核数量Intel Core 2 Duo
- 2. 多核心处理器中的线程
- 3. 在处理器内核上如何执行多个线程
- 4. 多核处理器的多线程
- 5. Spark中每个核心的线程数
- 6. 为什么单个线程进程在多个处理器/内核上执行?
- 7. 具有单核处理器和多核处理器的单线程代码的多线程代码
- 8. 每个线程的处理时间?
- 9. 如何优化每个内核数量的线程数
- 10. 多核处理器中的多线程应用程序
- 11. Java多线程 - 分配线程到处理器核心
- 12. 使用单核的Android线程处理
- 13. 每个JVM或每个CPU核心的线程数
- 14. Erlang - 将每个“erlang进程”映射到新的内核线程
- 15. 确定多核处理器中特定内核的负载
- 16. 在异常处理程序内部创建的Linux内核线程停止
- 17. 限制每个处理器使用IIS 7.5线程
- 18. 如何使用PowerShell脚本获取每个内核或处理器的负载?
- 19. 在后台线程中处理核心数据延迟
- 20. 每个CPU内核的线程分配(仅限Windows)
- 21. MPI:内核还是处理器?
- 22. Linux内核3.9 KVM for ARM处理器
- 23. 如何使用线程池来处理新线程中的每个连接
- 24. Linux内核编程:“无法处理内核NULL指针引用”
- 25. 如何处理具有多个线程的文件,以便每个文件仅由一个线程处理
- 26. 线程和内核
- 27. 线程vs内核
- 28. 处理器线程C#
- 29. 每个线程或每个处理程序的Android消息队列
- 30. 仅使用一个内核的JNI C++环境中的Java线程。 ARM处理器和Ubuntu
具有超线程的4个内核可以同时运行8个线程。如果线程更多,则使用时间分片切换相同优先级的线程。 – rcgldr
阅读关于同步vs暂时线程:https://en.m.wikipedia.org/wiki/Simultaneous_multithreading – John