Answers:
超标量处理器意味着您可以在一个时钟周期内调度多个指令。它与多核的区别在于您只能获得一个指令计数器。因此,您可以实时跟踪多个指令,但是所有指令均来自单个程序。这仍然只是一个过程。现在我说“您得到一个指令计数器”,从技术上讲,这是正确的,除了使用某些分支预测方案(推测执行:您同时执行两个分支并丢弃“错误”的预测结果)。
当您进入多核时,您会同时执行多个指令流。重要的是,每个内核(使用自己的指令计数器执行)也可以是超标量的,以便更快地执行每个进程!
通过使用所谓的超长指令字或“ VLIW”,可以在不进行流水线处理或无序执行的情况下实现超标量。这也称为“静态”超标量(即在代码本身中)。在这里,您基本上具有足够的组件来同时执行多条指令,然后一次获取多条指令然后运行它们。以最简单的形式,假设您说“此处理器将始终同时获取并执行两条指令”。然后,只要编码人员可以发现在同一过程中同时完成工作,您的吞吐量就会增加一倍!如果找不到两个指令放在一起,则只需将一个指令和一个NOP配对即可。这个想法不是很好,主要是因为如果您制造了可以同时执行3、4或更多指令的更好版本的处理器,那么所有旧代码都会中断!但是他们以一种非常巧妙的方式解决了这个问题,如果您想了解更多信息,则应该查看显式并行指令计算或“ EPIC”资料。
具有流水线的动态超标量可以利用与数据无关的指令以及指令级并行性,这就是它如此强大的组合。本质上,它允许您使用足够的硬件来同时执行尽可能多的独立指令。
具有流水线处理和无序执行的动态超标量本质上是指令级并行性的限制:您将尝试在同一阶段同时执行多个指令,以查找没有数据依赖性的操作。您可能会无序地完成任务,也可能会无序地开始工作,在进行超标量处理时,您需要做各种事情来保持头脑清醒。多核说:“嘿,程序员!给我多个我可以同时解决的问题!” 然后,由于程序员能够看到已编译的汇编中相距仅几行的独立可解决问题,因此他们可以更有效地为多核编程这些解决方案。
超标量甚至无法解决“如何更快地执行这两个程序”之类的问题。它只能更快地执行每个独立程序。
希望能有所帮助,对不起,如果有点不对劲。
- 编辑 -
修改为考虑到ajs410的观点,即我混淆了多个想法。
如果您回头看看80486或Pentium之类的早期处理器,那么CPU就是一个逻辑处理单元。它一次执行一条指令流。一个CPU也是一个硅芯片。如果您想要更多的处理能力,则可以购买昂贵的服务器主板,该主板的插槽可容纳两个单独的CPU。然后,您有两台CPU机器,因此有两个处理核心。
在某个时候,摩尔定律意味着我们在硅片上有太多可用的晶体管,您可以将两个CPU的所有电路都放在一个芯片中。现在,您可能会命名混乱。假设您有两个CPU,则可能意味着您拥有旧式的两个硅封装或较新的单硅封装,但具有两个处理器的处理设置。为了解决这个问题,我们现在的意思是CPU是单个硅封装,而Core是其中的单个逻辑处理单元。
超标量是指在内核中使用的一种技术,可以尝试提高性能并允许其平均每个周期处理更多指令。标量处理器每个周期最多执行一条指令,超标量意味着它每个周期可能执行多条指令。例如,如果处理器具有用于整数算术的功能单元和用于浮点运算的功能单元,那么为什么不同时使用两者来同时执行两条指令。如果您有三个整数单位和两个浮点单位怎么办?现在,您具有更大的并行执行潜力。但是您还需要更多的晶体管来实现,并且需要更复杂的逻辑以使其可靠地工作。在现实世界中,您倾向于将超标量与乱序设计结合使用,因为它们相互补充。