Skip to main content

超线程

h
超线程HT, Hyper-Threading)[1]英特尔研发的一个技术,于2002年发布。超线程技术原先只应用于Xeon处理器中,当时称为“Super-Threading”。之后陆续应用在Pentium 4中,将技术主流化。早期代号为Jackson。
通过此技术,英特尔实现在一个实体CPU中,提供两个逻辑线程。之后的Pentium D纵使不支持超线程技术,但就集成了两个实体核心,所以仍会见到两个线程。超线程的未来发展,是提升处理器的逻辑线程,英特尔有计划将8核心的处理器,加以配合超线程技术,使之成为16个逻辑线程的产品。
英特尔表示,超线程技术让(P4)处理器增加5%的裸晶面积,就可以换来15%~30%的性能提升。但实际上,在某些程序或未对多线程编译的程序而言,超线程反而会降低性能。除此之外,超线程技术亦要操作系统的配合,普通支持多处理器技术的系统亦未必能充分发挥该技术。例如Windows 2000,英特尔并不鼓励用户在此系统中利用超线程。原先不支持多核心的Windows XP Home Edition却支持超线程技术。

运作方式

每个单位时间内,一个CPU只能处理一个线程操作系统:thread),以这样的单位进行,如果想要在一单位时间内处理超过一个线程是不可能的,除非是有两个CPU的实体单元。双核心技术是将两个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的HT技术是在CPU内部仅复制必要的资源、让CPU模拟成两个线程;也就是一个实体核心,两个逻辑线程,在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作。
Intel自Pentium开始引入超标量乱序运行、大量的暂存器寄存器重命名、多指令解码器预测运行等特性;这些特性的原理是让CPU拥有大量资源,并可以预先运行及平行运行指令,以增加指令运行效率,可是在现实中这些资源经常闲置;为了有效利用这些资源,就干脆再增加一些资源来运行第二个线程,让这些闲置资源可运行另一个线程,而且CPU只要增加少数资源就可以模拟成两个线程运作。

使用HT技术的CPU

编号SL6WK支持HT的P4 3.0G
虚拟的2个CPU在任务管理器中显示出都在运转
Pentium 4 CPU中,Northwood及其之后推出的版本内置超线程技术;但在早期的Northwood核心中,一些型号的HT技术被关闭,纵使有软件侦测到超线程技术的存在,用户并不可以激活;而双核心的Pentium D中也只有EE版提供HT技术。英特尔的Core 2 Duo处理器则没有HT技术。但处理器已集成了两个实体CPU核心,所以仍然支持两个线程。[2]
而在2008年推出的Intel Core i7Intel Atom处理器又支持类似HT的技术,在 Nehalem 中,Hyper-Threading 大举卷土重来。在 Intel NetBurst 架构的 Northwood 版本中开始导入的 Hyper-Threading-在 Intel 世界之外称为 Simultaneous Multi-Threading (SMT)-是善用线程平行性的方法,让单一核心在应用软件层能运行两个逻辑线程

顾虑

由于处理器实际上只有一个核心,能够提升的性能约为5~15%左右,且万一发生资源互抢的情形时,整体性能反而会下降。这亦是AMD不提供虚拟双核心处理器的理由。
要令到电脑支持超线程技术,必须要软件和硬件的配合。处理器本身要支持超线程,芯片组亦要支持相关处理器。为此,当时的Intel推出了新的芯片 组,i865PE和i875P。要充分发挥超线程的性能,用户要使用Windows 2000之后的操作系统,而Windows XP家用版亦同样支持超线程技术。除了微软的Windows外,Linux kernel 2.4.x亦开始支持该技术。软件方面,不是所有程序都可以发挥超线程,通常优化了多处理器的程序都可以支持到。此类软件通常是图形或视频处理软件。早期,游戏软件的支持是比较少。但随着多核心技术的普及,愈来愈多游戏软件支持多线程的处理器。[3]
ttp://gengwg.blogspot.com/

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...