更多核心并不意味着计算机更强大

选择具有更多内核的处理器的事实 使用某些程序时,通常不会转化为相同程度的性能提升。 为什么会出现这种现象,其成因是什么? 我们为您详细解释。

随着时间的推移使用更新版本的程序的原因之一是它们旨在更好地利用具有更高核心数的处理器。 我们不要忘记,随着时间的推移,CPU 中的这些数量正在增加。 但是,为什么程序的性能没有按标准提高?

更多核心并不意味着计算机更强大

程序永远不会随着内核数量的增加而扩展

重要的是要考虑到,根据我们在我们的系统中拥有的执行线程数,被执行的程序无法在任何给定时刻划分它们的活动进程或任务 中央处理器. 最重要的是,这种划分在程序代码中是明确的,也就是说,它是程序员技能和应用程序设计的产物。

实际上,编写程序时相关的不是优化它以使用尽可能多的内核,而是延迟。 将后者理解为处理器完成以时间为单位的任务所花费的时间。 CPU的性能就是在尽可能短的时间内完成最多的任务。 这首先取决于您的体系结构,其次取决于您的时钟速度。

然而,我们对延迟感兴趣的是知道在给定时间内它可以完成多少任务,这就是工作量,这将取决于情况和编写程序的方式。 换句话说,性能不仅取决于硬件,还取决于软件编写的好坏。

Futuro Procesadores 渲染

分工在几个核心

现在,如果我们增加系统中的核心数量,就可以将工作分解成多个部分并更容易地完成。 这就是 T/N 公式的用武之地,其中 T 是要执行的任务数,N 是系统可以执行的执行线程数。 显然,我们可以在几个内核上加载最大数量的作业,然后暴力破解它们。 问题是这种措施适得其反,因为它有利于大多数现代 CPU,它们在每个内核上都具有更高的性能。

多核

但是,在不同的核心之间划分工作是额外的工作,通常会交给充当导体的核心,并且必须执行以下任务:

  • 您必须创建流程和任务列表,并始终对其进行良好控制。
  • 他们必须知道如何随时预测任务的开始和结束时间,包括完成一项任务和开始另一项任务所需的时间。
  • 不同的内核必须能够向主内核发送信号以了解进程何时开始和结束。

该解决方案被索尼、东芝和 IBM 用于 Cell Broadband Engine,这是 PS3 的中央处理器,其中一个主内核负责指挥其余部分。 尽管要早得多,它还是被 Atari Jaguar 采用了。 对于 PS4,SONY 没有再次重复这种模式,也没有人在 PC 上实现它,因为这是一场噩梦,然而,这是分工的最有效方式。

并非所有东西都可以在多核上运行

如果我们问自己是否可以将任何任务划分为子任务以无限期地分布在更多的核心中,答案是否定的。 具体来说,我们必须将任务分为三种不同的类型:

  • 那些可以完全并行化的,因此可以在中央处理器拥有的不同内核之间进行划分。
  • 可以部分并行运行的任务。
  • 无法并行执行的部分代码。

在第一种情况下,T/N 应用于 100%,在第二种情况下,我们已经进入所谓的 Amdahl 定律,其中由于增加核心数量而导致的加速是部分的,在第三种情况下,我们只需要所有该任务的单核功率,

多线程中 CPU 与 GPU 的区别

在这里我们来到一个差异点,每个 GPU 或图形芯片有一个控制单元,负责读取命令列表并将它们分配给不同的 GPU 核心,甚至分配给不同的单元。 这是前一个案例的硬件级实现,并且可以在您想要饱和的任何配置中完美运行,只要有工作,因此让尽可能多的内核保持忙碌。 但是,我们必须明白,GPU 中执行线程的概念总是对应于相应的数据及其指令列表。 即像素、顶点或任何数据。

中央处理器 GPU

这使它们易于并行化。 也就是说,如果我们想煎一个鸡蛋,CPU 中的过程就是煎鸡蛋,这将是完全顺序的。 另一方面,在图形芯片中,任务只是加热油或在锅中加入鸡蛋。 所有这些都不会加速煎一个鸡蛋,而是多个鸡蛋,这就是为什么 GPU 更适合同时计算数百万个多边形或像素等任务,但不适用于顺序任务。