Multithreading 硬件多线程和同时多线程(SMT)

Multithreading 硬件多线程和同时多线程(SMT),multithreading,parallel-processing,computer-science,cpu-architecture,Multithreading,Parallel Processing,Computer Science,Cpu Architecture,我正在阅读,又名硬件线程,我试图理解第二段: (p2):当多处理系统在一个或多个内核中包含多个完整的处理单元时,多线程旨在通过使用线程级并行以及指令级并行来提高单个内核的利用率 而线程级并行性的链接显示: ():线程级并行(TLP)是一个同时运行多个线程的应用程序固有的并行性。这种类型的并行性主要存在于为商业服务器编写的应用程序中,如 这不是很有用。。。因此我阅读了上面的任务并行性,因为我猜TLP是它的一个子类型: 任务并行(也称为功能并行和控制并行)是并行计算环境中跨多个处理器的计算机代码并行

我正在阅读,又名硬件线程,我试图理解第二段:

(p2):当多处理系统在一个或多个内核中包含多个完整的处理单元时,多线程旨在通过使用线程级并行以及指令级并行来提高单个内核的利用率

线程级并行性的链接显示:

():线程级并行(TLP)是一个同时运行多个线程的应用程序固有的并行性。这种类型的并行性主要存在于为商业服务器编写的应用程序中,如

这不是很有用。。。因此我阅读了上面的任务并行性,因为我猜TLP是它的一个子类型:

任务并行(也称为功能并行和控制并行)是并行计算环境中跨多个处理器的计算机代码并行化的一种形式。任务并行性侧重于将由进程或线程同时执行的任务分配到不同的处理器上

问题:如果线程级并行是任务并行,而任务并行是跨多个处理器的并行,那么如何通过使用线程级并行来提高单个内核的利用率

猜测:我猜对于TLP,它应该意味着跨多个逻辑处理器,即从操作系统的角度来看,硬件线程,对吗


另一个小问题是,对于我的第一个链接,多线程:

在计算机体系结构中,多线程是指中央处理器(CPU)(或多核处理器中的单核)在操作系统支持下并发执行多个进程或线程的能力


在(p2)中,它的目标是通过使用线程级别的并行性来提高单个内核的利用率?多么矛盾啊。

我认为我的直觉应该是正确的,它是:

  • 任务并行(也称为功能并行和控制并行)是并行计算环境中跨多个处理器的计算机代码并行化的一种形式

    应更新至:

    任务并行(也称为功能并行和控制并行)是并行计算环境中跨多个逻辑处理器的计算机代码并行化的一种形式

    包括超线程的可能性

  • 没有更新,但任务并行性关注于跨处理器并行性,而对于TLP则意味着

    线程级并行是并行计算环境中跨多个逻辑处理器的计算机代码并行化的一种形式

    再次强调,包括超线程的可能性


  • 有用资源:

    • 特别是:

      多线程的名称不明确,因为不仅可以在一个CPU核上同时执行多个线程,而且还可以执行多个任务(具有不同的页表、不同的任务状态段、不同的保护环、不同的I/O权限等)

      因此,有关次要问题,请参见:

      并行计算的概念经常与相关但不同的并行计算概念混淆[2][3],尽管两者都可以被描述为“在同一时间段内执行的多个进程”。在并行计算中,执行发生在同一物理瞬间:例如,在多处理器机器的不同处理器上,为了加快计算速度,在(单核)单处理器上不可能进行并行计算,因为在任何瞬间(在任何单时钟周期内)只能进行一次计算


      • 我认为我们不应该以维基的定义为基础,那里的措辞不够准确,不值得寻找矛盾之处

        首先,我将任务并行性描述为某种算法或问题固有的并行性形式,其中可能有一个功能分解为多个具有不同性质的任务,这些任务可以并发运行。并行的替代形式包括例如空间或数据分解,其中问题可以分解为数据或输入布局的不同部分(例如,阵列范围、矩阵块、图像部分…)

        线程级并行是一种不同的分类法,它是任何形式的并行,可以被多线程系统提取利用。它要求分解的粒度足够粗,以允许不同的线程独立运行(否则所需的同步开销将使其无用)。 另一种方法是例如ILP(指令级并行),即单线程上下文可以通过运行在一台完全无序的机器上来提取代码中的并行性,该机器可以根据准备情况进行调度。这通常允许更细粒度的并行性和更少的程序员参与,但将并行性限制在OOO窗口的深度

        在一个相关的主题上-小心不要混淆同时执行和并发执行


        线程级并行可以通过从代码中提取任务级并行或其他形式的算法分解来使用。然后,它可以在单核(抢占式)或多线程的系统上运行。后一种类型可以通过多核系统、同步多线程或两者兼而有之(普通处理器通常有多个核,其中可能支持SMT)

        维基百科关于软件工程的文章不是很好,你最好读一本介绍abo的书