多线程技术

线程由程序上下文表示,该程序上下文包括程序计数器,寄存器集和上下文状态。在多线程并行计算模型中,无论是在SIMD,多处理器或多计算机上运行还是在具有分布式或共享内存,基本单元都由同时运行的多个计算线程组成,每个线程都处理基于上下文切换中的不同的上下文。 多线程并行的基本结构如下:计算从顺序线程开始,然后是监督调度,在此调度中计算线程开始并行工作。分布式存储器体系结构通常在每个处理器上运行一个或多个线程,需要根据需要执行处理器间的通信。最后,在开始下一个并行工作单元之前进行多个线程的同步。

即使一个线程停滞了,它也不会阻止其它线程使用可用资源,并且处理同一数据的多个线程可以共享高速缓存以更好地使用高速缓存。因此,多线程提高了整体执行性能。但是,线程通常在独立的数据集上工作,并且在使用共享资源时经常会相互干扰。这通常会导致高速缓存未命中。另外,多线程的同步,优先级和抢占处理要求等方面增加了计算复杂性。

从多个线程同时执行指令通常被称为并行多线程,或称为Intel处理器上的Intel超线程技术。为了减少流水线中相关指令的数量,超线程利用了虚拟或逻辑处理器内核。对于每个物理核心,操作系统都寻址两个逻辑处理器,并在可能时共享工作负载和执行资源。

由于仅使用媒体专用指令的性能优化不足以实现实时编码性能,因此利用线程级并行提高视频编码器的性能已变得非常流行。如今,多线程通常用于视频编码器速度优化。异步运行的线程可以将帧数据分派给基于CPU的软件和GPU加速的实现中的多个执行单元。在CPU和GPU之间分配各种执行线程也成为可能。

多线程通常与任务并行化,数据并行化或其组合一起使用,其中每个线程对不同的任务或数据集进行操作。关于视频编码中使用的多线程的讨论可以在Gerber等人的文章中找到,该论文使用多线程技术实现帧级(frame-level)和切片级(slice-level)并行性。

Last updated