多线程

✍ dations ◷ 2024-12-22 19:19:39 #电脑架构,中央处理器,微处理器,并发计算

多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。

软件多线程。即便处理器只能运行一个线程,操作系统也可以通过快速的在不同线程之间进行切换,由于时间间隔很小,来给用户造成一种多个线程同时运行的假象。这样的程序运行机制被称为软件多线程。如微软的Windows作业系统和Linux就是在各个不同的线程间来回切换,被称为单人多任务作业系统。而DOS这类文字接口作业系统在一个时间只能处理一项工作,被视为单人单工作业系统。

除此之外,许多系统及处理器也支持硬件多线程技术。对称多处理机(SMP)系统具有多个处理器,所以具有真正的同时执行多个线程的能力;CMP技术通过在一块芯片上集成多个核心(Core)也具有真正的多线程能力;CMT技术则稍有不同,有的是依靠硬件执行线程切换来获得多线程能力,操作系统不再负责线程切换,因而这部分开销可以减少甚至消除,这方面典型的例子是Sun的UltraSPARC T1,它同时综合了CMP和CMT。微软的Windows 2000以后的操作系统皆支持多线程与超线程技术。

由于程序代码中存在的数据及控制依赖关系,单线程中所能发掘的指令并行潜力是有限的。为了发掘有限的指令级并行潜力而一味强化乱序执行和分支预测,以至于处理器复杂度和功耗急剧上升,有时候是得不偿失的。因此,现代微处理器多采用硬件多线程技术来发掘线程之间的线程级并行潜力。这样子允许在接口转换的专业领域之运算能力大幅提升:

有两种提升运算能力的主要技术分别是多进程与多线程。

不过有些对多线程的批评如下:

一个线程持续运行,直到该线程被一个事件挡住而制造出长时间的延迟(可能是内存load/store操作,或者程序分支操作)。该延迟通常是因缓存失败而从核心外的内存读写,而这动作会使用到几百个CPU周期才能将数据回传。与其要等待延迟的时间,线程化处理器会切换运行到另一个已就绪的线程。只要当之前线程中的数据送达后,上一个线程就会变成已就绪的线程。这种方法来自各个线程的指令交替执行,可以有效的掩盖内存访问时延,填补流水线空洞。

举例来说:

在概念上,它与即时操作系统中使用的合作式多任务类似,在该任务需要为一个事件等待一段时间的时候会主动放弃运行时段。

此种多线程硬件支持的目标,是允许在挡住的线程与已就绪的线程中快速切换。为了要达成这个目标,硬件成本将复制程序看得见的寄存器与一些处理器控制寄存器(像是程序计算器)。从一个线程切换到另一个线程对硬件来讲意谓著从一个寄存器复制到另一个。

这些新增功能的硬件有这些优势:

为了要在各个现行中的线程有效率的切换,每个现行中的线程需要有自己的暂存设置(register set)。像是为了能在两个线程中快速切换,硬件的寄存器需要两次例示(instantiated)。

另一种更高性能的多线程做法是将所有 CPU 周期轮流切换至不同的线程,来自各线程的指令按顺序交替执行。执行过程很像桶形处理器(Barrel Processor)就像这样:

这种线程的效果是会将所有从运行管线中的数据从属(data dependency)关系移除掉。因为每个线程是相对独立,管线中的一个指令层次结构需要从已跑完管线中的较旧指令代入输出的机会就相对的变小了。

而在概念上,这种多线程与操作系统的核心先占多任务(pre-exemptive multitasking)相似。

除了讨论块状多线程的硬件成本,交错式多线程也因每层管线需要追踪运行中指令的线程代码而增加硬件成本。而且,当越来越多的线程同时在管线中运行,像是缓存与 TLB 等共享资源也要加大来避免不同线程之间的冲突。

当前最先进的多线程技术是应用在超标量处理器上。超标量处理器内在每个CPU周期中,单独一个线程会发布众多的指令。套用同步多线程(SMT)之后,超标量处理器就可以在每个CPU周期中,从多个线程中发布指令。识别到任何一个单一线程拥有有限数量的指令平行处理,这种类型的多线程是试着利用并行的方式跨越多线程,以减少浪费与闲置的资源。举例来说:

交错式多线程如果不计硬件成本,SMT在每个管线层次结构的追踪线程指令会有多余的花费。而且,像是缓存与TLB这类共享的资源可能会因为多出来的线程而变得更大。

在大多数研究领域内是要求线程调度器要能够快速选择其中一个已就绪线程去运行,而不是一个一个运行而降低效率。所以要让调度器去分辨线程的优先级是很重要的。而线程调度器可能是以硬件、软件,或是软硬件并存的形式存在。

而另一个研究领域则是要研究何种事件(缓存失败、内部运行续连系、使用DMA等)会造成线程切换。

如果多线程的方案会复制所有软件可见的状态,包括特许的控制登录、TLB 等,那就能够让虚拟机去创造各式线程。这样子就允许在相同的处理器中每个线程跑各自的操作系统。换句话说,如果只有存储了用户模式的状态,就能够让相同的裸晶大小的芯片在一段时间内处理更多的线程。


相关

  • 天冬氨酸转氨酶天冬氨酸氨基转移酶(英语:Aspartate Transaminase,缩写 AST),也称作谷草转氨酶(SGOT),是一种磷酸吡哆醛蛋白质,也可以作用于L-苯丙氨酸、L-酪氨酸和L-色氨酸(EC 2.6.1.1)。谷草转氨酶
  • 夏尔·戴高乐夏尔·安德烈·约瑟夫·马里·戴高乐(法语:Charles André Joseph Marie de Gaulle,1890年11月22日-1970年11月9日)是法国军事家、政治家,曾在第二次世界大战期间领导自由法国运动
  • 无机酸无机酸是一类酸性无机化合物。最常见的无机酸有盐酸、硫酸、硝酸等。 无机酸溶于水中时会释出氢离子和共轭碱离子。多数无机酸不溶于有机溶剂。无机酸还可以分成含氧酸和无
  • 萨哈罗夫奖获得者萨哈罗夫思想自由奖(英语:Sakharov Prize for Freedom of Thought,简称萨哈罗夫奖)名从俄罗斯著名物理学家、异议人士及1975年诺贝尔和平奖得主安德烈·萨哈罗夫,1988年12月由欧
  • 楠梓园区加工出口区楠梓园区,旧称楠梓加工出口区,位于台湾高雄市楠梓区,成立于1969年。加工区内有日月光半导体、楠梓电子、华泰电子、国巨、万宝至马达、台弟工业等公司设厂,通用验证(SG
  • 接触力接触力(Contact force)是描述一种在宏观尺度下需要触碰到才能展现出来的力,例如:拉力、推力、浮力、摩擦力、正向力等。但是在微观尺度下,接触力仍是电磁力的作用所表现出的现象
  • 礼萨呼罗珊礼萨呼罗珊省(波斯语:استان خراسان رضوی)是伊朗三十一个省份之一。面积144,681公里,在所有省份中排行第3。人口约5,202,770(2005年数据);首府位于马什哈德市。礼
  • 美国国家税务局国家税务局(Internal Revenue Service)是美国联邦政府的税务机构,隶属于美国财政部,受国税局局长的直接领导。国税局局长由美国总统任命,一届任期为五年。国税局负责征收税款以及
  • 安可安可拉斯维加斯(Encore Las Vegas,又译万利拉斯维加斯)是一间位于位于内华达州拉斯维加斯赌城大道上的一间高级度假村、赌场和饭店。度假村与其姊妹饭店永利拉斯维加斯相连;两间
  • 美国宪法第十九条修正案宪法正文I ∙ II ∙ III ∙ IV ∙ V ∙ VI ∙ VII其它修正案 XI ∙ XII ∙ XIII ∙ XIV ∙ XV XVI ∙ XVII ∙ XVIII ∙ XIX ∙ XX XXI ∙ XXII ∙ XXIII ∙