我知道线程之间有一些共享资源,例如L2缓存等,因此同一内核上的两个线程可以并行运行来自不同进程的指令吗?
答案 0 :(得分:1)
这是术语问题。硬件和软件人员使用相同的词的方式有所不同。我了解您的问题如下:
我知道硬件线程之间有一些共享资源,例如L2缓存等,因此同一内核上的两个硬件线程可以运行来自不同并行处理?
然后我将硬件术语翻译为软件语言:
我知道处理器之间有一些共享资源,例如L2缓存等,因此同一内核上的两个处理器可以运行来自不同软件的指令线程并行吗?
并立即回答:是的。
UPDT “两个软件线程(来自同一进程)是否可以在两个不同的CPU上并行运行?”
是的,当然。此外,如果每个CPU包含多个内核,则每个内核可以服务于单独的软件线程,因此与处理器是无法区分的。例如,我的Intel i7微芯片具有4个内核/ 8个线程,并且标准Java函数Runtime :: availableProcessors()返回8,也就是说,可以并行运行8个独立的软件线程。如果我的机器上有2个这样的微芯片,它将返回16个,并且可以并行运行16个单独的线程。