我有一台2011年早期的Quad Core i7 Mac。由于超线程,许多程序报告8个“内核”。如果我要编写一个并行执行的程序,我是否可以启动该程序的8个实例或仅4个实例?
我可以启动任意多个线程,但是会看到该程序的4或8个实例并行执行吗?
英特尔酷睿i7处理器具有4个物理内核,但是每个内核一次最多可以输入2个线程,以“可用逻辑CPU”的形式向操作系统显示总共8个线程。
实际上,单个内核一次只能处理一个线程,但是它具有特殊的排队/计时/调度机制,允许2个线程同时处于“管道”的不同阶段。这使得CPU可以比仅一次处理一个线程更快地完成2个线程。因为两个线程共享同一个管道,所以性能收益显然不会达到2倍。大多数测试将收益的多少定在10%到50%之间,具体取决于执行的指令类型。
在回答您的问题时,如果您启动程序的4、8或16个实例,它们都将在“运行”,但是每个实例的指令将排队,具体取决于可用的THREADS数量。一旦超出了可用的物理核心数量(例如5个或更多),性能将降低,因为除基数4外的任何线程都将共享一个物理CPU内核。
最后,一旦达到可用的CPU线程功能的限制(超过8个线程),操作系统便会开始调度/排队指令,直到流水线中的指令完成为止。理想情况下,您希望避免遍历可用线程,因为这可能会对性能产生负面影响,并导致系统瓶颈。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句