Multithreading 多核到单核仿真(核心团队)?

Multithreading 多核到单核仿真(核心团队)?,multithreading,multiprocessing,cpu,virtualization,Multithreading,Multiprocessing,Cpu,Virtualization,只是今天从我头上掠过的东西。例如,是否有可能将4个内核组合成一个单核cpu,其Ghz是这4个内核的4倍 我是说,假设我有一个3Ghz的四核CPU。在该仿真中,仿真CPU将是单核CPU,但具有稳定的12Ghz功率 我99%肯定这是不可能的,但我很好奇,有什么障碍会阻止一个人实现这样的目标 谢谢。主要的障碍与自动并行编译器相同:很难将为串行执行编写的程序转换为执行相同操作的并行程序。人类花了很多时间做这件事,而机器也帮不了什么忙 将机器指令流视为串行程序。每一条指令都访问资源(寄存器、内存),有时还

只是今天从我头上掠过的东西。例如,是否有可能将4个内核组合成一个单核cpu,其Ghz是这4个内核的4倍

我是说,假设我有一个3Ghz的四核CPU。在该仿真中,仿真CPU将是单核CPU,但具有稳定的12Ghz功率

我99%肯定这是不可能的,但我很好奇,有什么障碍会阻止一个人实现这样的目标


谢谢。

主要的障碍与自动并行编译器相同:很难将为串行执行编写的程序转换为执行相同操作的并行程序。人类花了很多时间做这件事,而机器也帮不了什么忙

将机器指令流视为串行程序。每一条指令都访问资源(寄存器、内存),有时还会更改它们。未来的指令“假定”前面的指令已完成对共享数据的更改。在所有输入可用之前,指令无法执行。 但是,如果将来的指令不依赖于当前正在处理的任何数据段,则可以更早地启动它

现代无序CPU扫描串行指令流,寻找与数据无关的指令,并将它们调度到处理器内的多个执行资源上。这是可能的,因为a)存在一些可提取的并行性,b)所有事情都在处理器内部完成,可以快速做出决策

首先,这种并行性本质上是有限的。如果您编写一个合成程序,其中每个后续指令都依赖于前一条指令(例如,所谓的“指针跟踪”序列),那么无论CPU中有多少并行执行单元可用,都不会有可提取的并行性。如果您添加更多的CPU,显然没有什么帮助

其次,请记住,当来宾代码已经运行时,必须在运行时决定并行运行什么。如果你对独立运行哪些块是安全的想得太久,那么浪费在思考上的时间将超过实际运行时可能节省的时间。在单CPU内部,存在这样一种可能性,因为所有东西都彼此非常接近。多个CPU甚至CPU核彼此之间的距离相当远,它们通过较慢的内存进行通信,因此,在运行时对如何并行当前任务进行编程决策的速度太慢


将所描述的“运行时”情况与“脱机”情况进行比较,此时软件编译器的任务是获取串行程序并从中生成并行代码。相对而言,它在世界上一直有时间这样做。知道吗,经过30多年的研究,他们在这方面仍然很差劲。

这么说吧——如果可能的话,每个人都会这么做。