📜  多线程和延迟隐藏

📅  最后修改于: 2021-06-28 15:50:41             🧑  作者: Mango

在计算机体系结构中,多线程是指操作系统支持的中央处理器(CPU)(或多核处理器中的一个内核)同时提供多个执行线程的能力。延迟加密通过使机器执行有用的功能来提高机器的使用率。
多线程是指程序或软件过程一次可以管理一个用户的使用,甚至可以管理同一用户的多个请求,而不必拥有运行在计算机中的多个程序副本的能力。多线程是实现延迟隐藏的一种方法。

  • 延迟隐藏方法的总体思想是使每个处理器进行一些有用的工作,因为它等待远程操作请求得到满足。
  • 延迟隐藏:在等待内存访问请求完成时,为每个处理器提供有用的工作。
  • 延迟隐藏提供了通信与计算完全重叠的权限,从而提高了效率和硬件利用率。
  • 多线程可能是延迟的一种实用机制。

多线程是减少等待时间的有用机制。多线程计算通常从顺序线程开始,然后是一些监督开销,以建立(安排)各种独立线程,然后是各个线程的计算和通信(远程访问),最后是在启动下一个单元之前终止线程的同步步骤。 。

顺序线程:
在程序中,线程是控制的单个顺序流。关于线程的真正嗡嗡声与单个顺序线程无关。相反,它指的是同时运行多个线程并在单个程序中执行不同任务的多个线程的使用。

计划开销:
调度算法运行以确定要运行哪个进程的次数称为调度开销。在多程序操作系统中,这是开销,因为我们有要运行的进程,但还必须决定要运行哪个进程。

远程内存访问:
计算中的远程直接内存访问(RDMA)是从一台计算机的内存到另一台计算机的内存的直接内存访问,而无需涉及任何一台计算机的操作系统。这样可以实现高吞吐量,低延迟的联网,这在大规模并行计算机群集中特别有用。

空闲时间:
理想时间是在没有中断或计划外问题的情况下完成给定任务所需的时间。在计划和估算时,许多基于时间的估算方法都使用此时间范围。

同步开销:
同步开销定义为一个任务等待另一个任务所花费的时间。任务可能会在一个明确的障碍处同步,在这些障碍处它们都完成了一个时间步。等待其他任务所花费的时间浪费了该任务所在的核心。此等待时间称为同步开销。
应该注意的是,多线程的使用不仅限于并行处理环境,而且在单个处理器上也有好处。为了提高性能,具有多个要执行的独立线程的单处理器可以在每个高速缓存未命中,每个负载,每个指令之后或每个固定大小的指令块之后在它们之间进行切换。处理器可能需要多个寄存器集(以减少上下文切换开销)和更大的高速缓存存储器(以为多个线程保存最近引用的数据),但是其好处可能会超过成本。平田等。 [Hira92]声称在具有9个功能单元和2个,4个或8个独立线程的处理器中,加速分别为2.0、3.7和5.8。

多线程隐藏延迟:示例

  1. 在代码中,具有该函数的main(primary)实例访问一对向量元素并等待它们。
  2. 同时,此函数的第二个实例可以在下一个周期内访问其他两个向量元素,依此类推。
  3. 在您的l个单位时间(其中l是内存系统的延迟)之后,主要函数实例从内存中获取请求的数据,并可能执行指定的计算。
  4. 在以下循环中,将出现以下函数实例的信息项,依此类推。这样,在每个时钟周期中,我们都可以执行计算。
  5. 先前示例中的执行计划基于两个假设:内存系统能够处理多个未完成的请求,因此处理器能够在每个周期切换线程。
  6. 它还要求程序在某种线程中拥有一定的并发性规范。
  7. 像HEP和Tera这样的机器依赖于多线程处理器,这些处理器将在每个周期中切换执行上下文。因此,他们准备有效地隐藏延迟。

多线程的优点

  1. 吞吐量增加。一个进程可以处理大量并发的计算操作和I / O请求。
  2. 完全对称地同时使用多个处理器进行计算和I / O。
  3. 出色的应用程序响应能力。如果可以在其自己的线程上启动请求,则应用程序不会冻结或显示“沙漏”。
  4. 改进的服务器响应能力。大型或复杂的请求或速度较慢的客户端不会阻止其他服务请求
  5. 最小化系统资源使用。线程对系统资源的影响最小。
  6. 与传统进程相比,线程在创建,维护和管理方面所需的开销更少。

多线程的缺点
多线程也有一些共同的缺点

  1. 难以理解的调试和测试过程。
  2. 结果有时是不可预测的。
  3. 具有开销的上下文切换。
  4. 发生死锁的可能性更大。
  5. 编写程序的难度增加了。
  6. 通常,复杂度增加了。
  7. 共享资源同步(对象,数据)
  8. 潜在的死锁“饥饿”:如果设计有缺陷,则可能无法使用某些线程。
  9. 线程构造和同步消耗大量CPU /内存。

请参阅线程模型多线程的好处,以及多任务,多线程和多之间的区别