parallel-processing - 并行处理真的可能吗?

标签 parallel-processing

我见过在同一个主板上有两个处理器的新计算机。
同一块主板上的两个处理器如何正常工作,因为这就像两个大脑(试图)控制一个 body ,它们实际上是如何进行并行处理的,是真的吗?

最佳答案

如果两个(或更多)CPU/内核想要访问相同的资源,则有一些规则决定谁获胜。通常,稍后会有一个 CPU 尝试访问它,因此它必须等待。如果两个 CPU 实际上想同时访问同一个资源,那么规则将确保一个获胜。今天,规则变得非常复杂,以确保一个 CPU 不能占用资源(耗尽另一个)。

缓存是其中一个非常复杂的部分;每个 CPU 都会将真实 RAM 的一部分复制到其缓存中。这意味着如果 CPU 1 在其缓存中具有地址 X,并且 CPU 2 读取或写入该地址,那么有趣的事情就会发生。解决这个问题的技术是地址嗅探(CPU 1 注意到 CPU 2 想要查看的地址并发送信号告诉它该地址的内容现在无效),RAM 分段(CPU 实际上无法看到大部分内存,所以只有很小的重叠,这个问题实际上可能发生),或者一个特殊的缓存总线,CPU 的缓存相互通信(“我只是读取这个地址”,“我正在将 X 写入那个地址”)。

这是一个非常复杂的领域,而且每天都变得越来越复杂。据我们所知,这是保持Moore's Law的唯一方法。再过几年。

更多详情请见 Wikipedia article .

关于parallel-processing - 并行处理真的可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673538/

相关文章:

c++ - 通过多个并行区域的 OpenMP 线程亲和性

c++ - 扫描快速排序拆分

c - 具有功能的多个进程

c++ - 使用 MPI 进行并行编程以使用动态二维数组进行矩阵乘法时如何解决问题?

bash - 易于并行化

C++和MPI如何并行编写部分代码?

perl - 从 Perl 中的输出记录

r - bnlearn 的并行化(使用并行包)

c - C 和 Mathematica 中的并行计算

c# - 嵌套的 Parallel.For() 循环速度和性能