【问题标题】:What exactly is the difference between multi-threaded processing and parallel processing?多线程处理和并行处理之间究竟有什么区别?
【发布时间】:2009-12-06 08:11:35
【问题描述】:
  1. 单核 CPU 或具有单 CPU 的计算机无法进行并行处理。真/假?

  2. 在单核单进程 CPU 中,无论在任何给定时间有多少进程和多少线程正在运行(不包括休眠线程),都只能执行一个线程的汇编指令。对/错?

很抱歉问题太多,它们似乎都相关。

【问题讨论】:

    标签: linux multithreading


    【解决方案1】:

    在单核 CPU(没有超线程)中,只有一个线程实际执行,是的。但是,这并不完全排除并行处理。例如,您可以完成三个任务:

    • 从事大量网络活动的人
    • 一个正在执行大量磁盘活动的设备
    • CPU 活动量很大的一个

    使用线程并行运行这三个当然可以提高性能,即使在单核机器上也是如此。当其他活动之一有更多数据要处理时,需要大量 CPU 的活动将不得不等待,但总体效果是并行处理。这基本上是因为“其他事情”可以在不占用 CPU 的情况下发生(磁盘磁头移动、Web 服务在远程机器上执行某些工作)。

    【讨论】:

    • 仍然在最严格的意义上不会有并行处理,即在任何时候在 CPU 上,但如果你采取小的时间步长,并查看其中的一些,那么每个步骤都可以保留根据您的示例,整个系统都很忙。
    • @Simeon:这取决于您对“并行处理”IMO 的定义——移动磁盘头和调用 Web 服务所需的工作是否算作“处理”?这是需要完成的工作,并且正在并行完成。我认为出于实际目的,这算作并行处理。实际上,如果 Web 服务中的 CPU 与本地系统上的 CPU 同时运行,则它是跨系统的并行计算。
    • 或者实际上是本地网卡或磁盘控制器上的处理器执行 DMA 传输。
    【解决方案2】:
    1. 是的。

    2. 是的。如果只有一个 CPU,那么一次只能执行一个指令序列。

    【讨论】:

    • 现在许多 CPU 都有多个内核 - 用内核代替 CPU。
    【解决方案3】:
    1. 取决于“并行”处理的含义。您需要清楚的描述才能得到明确的答案。

    2. 通常是正确的,但是...

    请注意,某些处理器支持超线程 - 一个具有一个内核的处理器将自己呈现为两个“虚拟”内核。这允许处理器在一个线程上执行指令,而另一个线程正在等待内存访问等等。

    因此,即使是单核单处理器机器,也可以同时在处理器上拥有多个线程。

    【讨论】:

    • 嗨,匿名,我所说的并行处理是指两个(或更多)线程在任何给定时间执行机器指令(即 CPU 周期不共享)。感谢您的宝贵时间。
    • 在这种情况下,是的,单核机器一次不能执行多个机器指令。但它可以通过超线程“伪造”它,即使它可能正在等待内存访问,它也可以真正做有用的工作。
    • @Anon,我不确定你的意思。使用超线程,您可以同时执行多条算术指令。使用一些非常具体(无用)的代码,我可以使用单个 HT 处理器实现 2 倍的加速。所以根据给定的定义,ht 是并行性,即使在实践中它也没什么用。
    • 我想我认为问题中隐含了“有用”的并行性。
    猜你喜欢
    • 2010-12-21
    • 2018-08-09
    • 2023-01-18
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2012-05-04
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多