多线程或多核多线程进程的速度是多少?

时间:2016-03-07 16:25:51

标签: multithreading parallel-processing cpu multicore single-threaded

假设我有一个由两个理想独立任务组成的进程(理想情况下,用于消除通信开销)。在3GHz速度的单核处理器或1.5GHz速度的双核处理器上进行它会更快吗?

当然,对于双核处理器,该作业非常适合 parallization 。对于单核,这两个任务将是时间共享

更新: questition换句话说

速度加倍的单核处理器总是比双核处理器更好的选择吗?

2 个答案:

答案 0 :(得分:2)

理想情况下,在Windows 2012等不理想的操作系统上运行的独立2个任务将在1.5GHz的2个核心上运行得更快,而在3GHz的1个核心运行速度更快,因为消除了线程上下文切换开销。

不幸的是,很少有理想独立的任务。

答案 1 :(得分:2)

发布的问题严重不足。首先,它似乎将性能与处理器频率混淆。即使具有相同的核心微体系结构,内存延迟也不会在循环计数中得到修复。遍历十亿项目链接列表是一种(人为的)工作负载,它依赖于内存延迟,其中两个并行的“半速”线程比时间切片更快。

如果较低频率不是产品装箱,省电配置等的结果,而是来自较浅的管道(相同宽度),那么“较慢”的处理器将具有较低的分支误预测罚分和降低相同缓存容量周期的延迟,从而在大多数工作负载上实现每周期更高的指令。

即使使用相同的微体系结构,两个内核也可以避免缓存预热上下文切换开销。上下文切换的成本不仅仅是调用操作系统所花费的时间,运行操作系统调度程序(两个内核上只有两个活动线程,操作系统调度程序开销会略低,因为没有其他就绪线程但是会有两倍的定时器中断)和交换寄存器内容。 (如果以批处理模式运行,则可以避免这种上下文切换开销。)

要考虑的另一个因素是这两个任务是否遇到独立的瓶颈。例如,如果一个任务是非常计算密集但另一个任务受主内存带宽限制,那么并行运行它们可以提供比时间分片更好的性能;随着时间的推移,在计算密集型时间片中未使用内存带宽潜力。

另一个因素是对受限资源的干扰。例如,DRAM可能遭受银行冲突,这可能会大大降低有效带宽。如果内存寻址和定时恰好在并行操作期间引起最大冲突,则有效带宽将减少。可以从共享的最后一级缓存中的有限关联性生成类似的效果。

更新近的处理器也往往受到热量限制,因此如果在电源病毒条件下无法保证该频率,则双频处理器可能无法在最大利用率下维持该频率,而备用双核系统则是可能不会遇到功率密度约束。