当前位置: 首页 > news >正文

怎么做装修网站福州网站设计网站系统制作

怎么做装修网站,福州网站设计网站系统制作,logo设计的六大要素,中石化石油工程建设公司网站同步多线程#xff08;SMT#xff09;是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上#xff0c;同步多线程是一种将线程级并行处理#xff08;多CPU#xff09;转化为指令级并行处理#xff08;同一CPU#xff09;的方法。 同步多线…同步多线程SMT是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上同步多线程是一种将线程级并行处理多CPU转化为指令级并行处理同一CPU的方法。   同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多线程用于在商用环境中及为周期/指令CPI计数较高的工作负载创造性能优势。   处理器采用超标量结构最适于以并行方式读取及运行指令。同步多线程使您可在同一处理器上同时调度两个应用程序从而利用处理器的超标量结构性质。任何单个应用程序都不能完全使该处理器达到满负荷。当一个线程遇到较长等待时间事件时同步多线程还允许另一线程中的指令使用所有执行单元。例如当一个线程发生高速缓存不命中另一个线程可以继续执行。同步多线程是 POWER5™ 和 POWER6™ 处理器的功能可与共享处理器配合使用。   SMT 对于商业事务处理负载的性能优化可达30%。在更加注重系统的整体吞吐量而非单独线程的吞吐量时SMT 是一个很好地选择。   但是并非所有的应用都能通过SMT 取得性能优化。那些性能受到执行单元限制的应用或者那些耗尽所有处理器的内存带宽的应用其性能都不会通过在同一个处理器上执行两个线程而得到提高。   尽管SMT 可以使系统识别到双倍于物理CPU数量的逻辑CPUlcpu但是这并不意味着系统拥有了两倍的CPU能力。   SMT技术允许内核在同一时间运行两个不同的进程以此来压缩多任务处理时所需要的总时间。这么做有两个好处其一是提高处理器的计算性能减少用户得到结果所需的时间其二就是更好的能效表现利用更短的时间来完成任务这就意味着在剩下的时间里节约更多的电能消耗。当然这么做有一个总前提——保证SMT不会重复HT所犯的错误而提供这个担保的则是在酷睿微架构中表现非常出色的分支预测设计。[1] [编辑本段]同步多线程的同步机制  1、 Event   用事件Event来同步线程是最具弹性的了。一个事件有两种状态激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型手动重置事件和自动重置事件。手动重置事件被设置为激发状态后会唤醒所有等待的线程而且一直保持为激发状态直到程序重新把它设置为未激发状态。自动重置事件被设置为激发状态后会唤醒“一个”等待中的线程然后自动恢复为未激发状态。所以用自动重置事件来同步两个线程比较理想。MFC中对应的类为CEvent.。CEvent的构造函数默认创建一个自动重置的事件而且处于未激发状态。共有三个函数来改变事件的状态:SetEvent,ResetEvent和PulseEvent。用事件来同步线程是一种比较理想的做法但在实际的使用过程中要注意的是对自动重置事件调用SetEvent和PulseEvent有可能会引起死锁必须小心。   多线程同步-event   在所有的内核对象中事件内核对象是个最基本的。它包含一个使用计数与所有内核对象一样一个BOOL值(用于指明该事件是个自动重置的事件还是一个人工重置的事件)还有一个BOOL值(用于指明该事件处于已通知状态还是未通知状态)。事件能够通知一个线程的操作已经完成。有两种类型的事件对象。一种是人工重置事件另一种是自动重置事件。他们不同的地方在于当人工重置的事件得到通知时等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时等待该事件的线程中只有一个线程变为可调度线程。   当一个线程执行初始化操作然后通知另一个线程执行剩余的操作时事件使用得最频繁。在这种情况下事件初始化为未通知状态然后当该线程完成它的初始化操作后它就将事件设置为已通知状态而一直在等待该事件的另一个线程在事件已经被通知后就变成可调度线程。   当这个进程启动时它创建一个人工重置的未通知状态的事件并且将句柄保存在一个全局变量中。这使得该进程中的其他线程能够非常容易地访问同一个事件对象。程序一开始创建了三个线程这些线程在初始化后就被挂起等待事件。这些线程要等待文件的内容读入内存然后每个线程都会访问这段文件内容。一个线程进行单词计数另一个线程运行拼写检查第三个线程运行语法检查。这3个线程函数的代码的开始部分都相同每个函数都调用WaitForSingleObject.这将使线程暂停运行直到文件的内容由主线程读入内存为止。一旦主线程将数据准备好它就调用SetEvent给事件发出通知信号。这时系统就使所有这3个辅助线程进入可调度状态它们都获得了C P U时间并且可以访问内存块。这3个线程都必须以只读方式访问内存,否则会出现内存错误。这就是所有3个线程能够同时运行的唯一原因。如果计算机上配有三个以上CPU理论上这个3个线程能够真正地同时运行从而可以在很短的时间内完成大量的操作   如果你使用自动重置的事件而不是人工重置的事件那么应用程序的行为特性就有很大的差别。当主线程调用S e t E v e n t之后系统只允许一个辅助线程变成可调度状态。同样也无法保证系统将使哪个线程变为可调度状态。其余两个辅助线程将继续等待。已经变为可调度状态的线程拥有对内存块的独占访问权。   让我们重新编写线程的函数使得每个函数在返回前调用S e t E v e n t函数就像Wi n M a i n函数所做的那样。   当主线程将文件内容读入内存后它就调用SetEvent函数这样操作西永就会使这三个在等待的线程中的一个成为可调度线程。我们不知道系统将首先选择哪个线程作为可调度线程。当该线程完成操作时它也将调用S e t E v e n t函数使下一个被调度。这样三个线程会以先后顺序执行至于什么顺序那是操作系统决定的。所以就算每个辅助线程均以读/写方式访问内存块也不会产生任何问题这些线程将不再被要求将数据视为只读数据。   这个例子清楚地展示出使用人工重置事件与自动重置事件之间的差别。   P u l s e E v e n t函数使得事件变为已通知状态然后立即又变为未通知状态这就像在调用S e t E v e n t后又立即调用R e s e t E v e n t函数一样。如果在人工重置的事件上调用P u l s e E v e n t函数那么在发出该事件时等待该事件的任何一个线程或所有线程将变为可调度线程。如果在自动重置事件上调用P u l s e E v e n t函数那么只有一个等待该事件的线程变为可调度线程。如果在发出事件时没有任何线程在等待该事件那么将不起任何作用[5]。   2、 Critical Section   使用临界区域的第一个忠告就是不要长时间锁住一份资源。这里的长时间是相对的视不同程序而定。对一些控制软件来说可能是数毫秒但是对另外一些程序来说可以长达数分钟。但进入临界区后必须尽快地离开释放资源。如果不释放的话会如何答案是不会怎样。如果是主线程GUI线程要进入一个没有被释放的临界区呵呵程序就会挂了临界区域的一个缺点就是Critical Section不是一个核心对象无法获知进入临界区的线程是生是死如果进入临界区的线程挂了没有释放临界资源系统无法获知而且没有办法释放该临界资源。这个缺点在互斥器(Mutex)中得到了弥补。Critical Section在MFC中的相应实现类是CcriticalSection。CcriticalSectionLock()进入临界区CcriticalSectionUnLock()离开临界区。   3、 Mutex   互斥器的功能和临界区域很相似。区别是Mutex所花费的时间比Critical Section多的多但是Mutex是核心对象(Event、Semaphore也是)可以跨进程使用而且等待一个被锁住的Mutex可以设定TIMEOUT不会像Critical Section那样无法得知临界区域的情况而一直死等。MFC中的对应类为CMutex。Win32函数有创建互斥体CreateMutex() 打开互斥体OpenMutex()释放互斥体ReleaseMutex()。Mutex的拥有权并非属于那个产生它的线程而是最后那个对此Mutex进行等待操作WaitForSingleObject等等并且尚未进行ReleaseMutex()操作的线程。线程拥有Mutex就好像进入Critical Section一样一次只能有一个线程拥有该Mutex。如果一个拥有Mutex的线程在返回之前没有调用ReleaseMutex()那么这个Mutex就被舍弃了但是当其他线程等待(WaitForSingleObject等)这个Mutex时仍能返回并得到一个WAIT_ABANDONED_0返回值。能够知道一个Mutex被舍弃是Mutex特有的。   4、 Semaphore   信号量是最具历史的同步机制。信号量是解决producer/consumer问题的关键要素。对应的MFC类是Csemaphore。Win32函数CreateSemaphore用来产生信号量。ReleaseSemaphore用来解除锁定。Semaphore的现值代表的意义是目前可用的资源数如果Semaphore的现值为1表示还有一个锁定动作可以成功。如果现值为5就表示还有五个锁定动作可以成功。当调用Wait…等函数要求锁定如果Semaphore现值不为0Wait…马上返回资源数减1。当调用ReleaseSemaphore资源数加1当时不会超过初始设定的资源总数。 [编辑本段]有关多线程的一些技术问题  1、 何时使用多线程   2、 线程如何同步   3、 线程之间如何通讯   4、 进程之间如何通讯   先来回答第一个问题线程实际主要应用于四个主要领域当然各个领域之间不是绝对孤立的他们有可能是重叠的但是每个程序应该都可以归于某个领域   1、 offloading time-consuming task。由辅助线程来执行耗时计算而使GUI有更好的反应。我想这应该是我们考虑使用线程最多的一种情况吧。   2、 Scalability。服务器软件最常考虑的问题在程序中产生多个线程每个线程做一份小的工作使每个CPU都忙碌使CPU一般是多个有最佳的使用率达到负载的均衡这比较复杂我想以后再讨论这个问题。   3、 Fair-share resource allocation。当你向一个负荷沉重的服务器发出请求多少时间才能获得服务。一个服务器不能同时为太多的请求服务必须有一个请求的最大个数而且有时候对某些请求要优先处理这是线程优先级干的活了。   4、 Simulations。线程用于仿真测试。 [编辑本段]线程之间的通讯  线程常常要将数据传递给另外一个线程。Worker线程可能需要告诉别人说它的工作完成了GUI线程则可能需要交给Worker线程一件新的工作。   通过PostThreadMessage可以将消息传递给目标线程当然目标线程必须有消息队列。以消息当作通讯方式比起标准技术如使用全局变量等有很大的好处。如果对象是同一进程中的线程可以发送自定义消息传递数据给目标线程如果是线程在不同的进程中就涉及进程之间的通讯了。下面将会讲到。   进程之间的通讯   当线程分属于不同进程也就是分驻在不同的地址空间时它们之间的通讯需要跨越地址空间的边界便得采取一些与同一进程中不同线程间通讯不同的方法。   1、 Windows专门定义了一个消息WM_COPYDATA,用来在线程之间搬移数据――不管两个线程是否同属于一个进程。同时接受这个消息的线程必须有一个窗口即必须是UI线程。WM_COPYDATA必须由SendMessage来发送不能由PostMessage等来发送这是由待发送数据缓冲区的生命期决定的出于安全的需要。   2、 WM_COPYDATA效率上面不是太高如果要求高效率可以考虑使用共享内存Shared Memory。使用共享内存要做的是设定一块内存共享区域使用共享内存同步处理共享内存。   第一步设定一块内存共享区域。首先CreateFileMapping产生一个file-mapping核心对象并指定共享区域的大小。MapViewOfFile获得一个指针指向可用的内存。如果是C/S模式由Server端来产生file-mapping那么Client端使用OpenFileMapping然后调用MapViewOfFile。   第二步使用共享内存。共享内存指针的使用是一件比较麻烦的事我们需要借助_based属性允许指针被定义为从某一点开始起算的32位偏移值。   第三步清理。UnmapViewOfFile交出由MapViewOfFile获得的指针CloseHandle交出file-mapping核心对象的handle。   第四步同步处理。可以借助Mutex来进行同步处理。   3、 IPC   1Anonymous Pipes。Anonymous Pipes只被使用于点对点通讯。当一个进程产生另一个进程时这是最有用的一种通讯方式。   2Named Pipes。Named Pipes可以是单向也可以是双向并且可以跨越网络步局限于单机。   3Mailslots。Mailslots为广播式通讯。Server进程可以产生Mailslots,任何Client进程可以写数据进去但是只有Server进程可以取数据。   4OLE Automation。OLE Automation和UDP都是更高阶的机制允许通讯发生于不同进程间甚至不同机器间。   5DDE。DDE动态数据交换使用于16位Windows目前这一方式应尽量避免使用。[4] [编辑本段]同步多线程的工作方式  图中首先显示了单线程方式其中所有物理资源都通过单个线程。POWER™ 系统支持单线程和 同步多线程的工作方式同步多线程。   随后图中显示了粗粒度多线程方式其中每次只有一个线程运行。当线程遇到长等待时间事件如高速缓存不命中时硬件切换到第二个线程以使用处理资源而不是让服务器保持空闲状态。此设计允许其他任务使用原本将空闲的处理器周期从而提高了总系统吞吐量。为了节约资源两个线程共享许多系统资源如结构寄存器。因此将程序控制从一个线程切换到另一个线程需要数个周期。   最后图中显示了同步多线程方式其中处理器同时从多个硬件线程检索指令。处理器将多个硬件线程中的指令调度为同时执行。借助同步多线程系统将根据环境进行动态调节从而允许在可能的情况下执行每个硬件线程中的指令当一个硬件线程遇到长等待时间事件时它还允许另一个硬件线程中的指令使用所有执行单元。   同步多线程主要在以下上下文中有用   在单个事务速度不如所执行事务的总数重要的商用环境中。同步多线程将通过大型或经常变化的工作集如数据库服务器和 Web 服务器增加工作负载的吞吐量。   具有高 CPI 计数的工作负载。这些工作负载往往很少使用处理器和内存资源。高 CPI 计数通常由大型工作机的高速缓存不命中率较高而导致。较大的商用工作负载在某些程度上取决于两个硬件线程是否共享指令或数据或取决于两个硬件线程是否完全不同。共享指令或数据的工作负载可能从同步多线程中获得较大的好处这些指令或数据可包括在操作系统中或单个应用程序中广泛运行的指令或数据。[3] [编辑本段]IBM Power5 中的同步多线程技术(SMT)  内容提要Power5 芯片是IBM Power 芯片家族中的新一代高端CPU 产品它与Power4 在二进制上兼容但在性能和功能上比Power4 有很大的增强。本文将介绍Power5 所支持的同步多线程技术Simultaneous MultiThreading 。 应用  在单个事务速度不如所执行事务的总数重要的商用环境中。同步多线程将通过大型或经常变化的工作集如数据库服务器和 Web 服务器增加工作负载的吞吐量。 具有高 CPI 计数的工作负载。这些工作负载往往很少使用处理器和内存资源。高 CPI 计数通常由大型工作机的高速缓存不命中率较高而导致。较大的商用工作负载在某些程度上取决于两个硬件线程是否共享指令或数据或取决于两个硬件线程是否完全不同。共享指令或数据的工作负载可能从同步多线程中获得较大的好处这些指令或数据可包括在操作系统中或单个应用程序中广泛运行的指令或数据。 说 明   同步多线程示意图传统的CPU 在某一时间只能处理一个指令序列通常我们把它称为一个线程。在线程处理的过程中CPU 的处理单元需要不断调入指令与数据进行处理。随着CPU 技术的发展CPU 的主频与性能不断提高需要调入指令和数据的速度不断提高。但不幸的是内存技术的发展并没有跟上CPU 发展的速度内存通常无法提供足够的指令和数据给CPU 进行处理。   为了解决这个问题业界通常采用多级缓存的方式。CPU 处理单元中的寄存器是最快的通常一个CPU 中有一、两百个寄存器它可以在一个时钟周期内提供指令和数据。其次是一级缓存他的大小通常为几十KB 它需要几个时钟周期的访问时间。再下面是二级缓存他的大小通常为几MB 它需要十几个时钟周期的访问时间。然后是内存从内存中取得数据需要几十个个时钟周期。而最慢的是硬盘通常需要几千甚至几万个时钟周期的访问时间。   当CPU 需要处理下一条指令时他通常按照寄存器、一级缓存、二级缓存、内存、硬盘这一顺序去查找。但如果在内存中仍然找不到需要的指令或数据时。系统会进行Context Switch 终止此线程在CPU 上的运行使其处于等待状态而让其他的线程运行当此线程需要的数据被调入内存后此线程处于就绪状态可以被调度到CPU 上运行。线程间的Context Switch 需要几十个时钟周期。   由此可见当CPU 需要从内存中取数据时处理单元需要空转几十个时钟周期有关统计显示当前CPU 处理单元的平均利用率不足25% 。为了提高CPU 处理单元的利用率设计者采用了线程级的并行技术即在CPU 的核心中执行一个以上的指令序列。对于操作系统来说一个物理的处理器相当于两个逻辑的处理器当前有三种不同的方式实现多线程技术。   粗粒度的多线程在任一时刻只有一个线程执行当线程遇到一个长延迟事件时如二级缓存不命中则系统调度另一个线程执行而不是让系统资源空转等待此线程。这一机制可以提高整个系统的利用率。这两个线程共享许多系统资源如CPU 的寄存器和缓存等因此这两个线程的切换比Context Switch 要快得多只需要几个时钟周期。IBM 在使用PowerPC RS64 IV 处理器的pSeries 680 和pSeries 660-6M1 上使用过这种粗粒度的多线程技术。   另一种与粗粒度的多线程技术相对的是细粒度多线程技术采用这种多线程的系统循环的执行两个线程的指令这就需要在处理器的设计上增加许多冗余的部件。如果一个线程遇到个长延迟事件时对应这一线程执行的时钟周期仍然没有被利用。   第三种多线程技术是同步多线程技术(SMT) 与其他的多线程技术一样同步多线程能够从多个线程中取出指令来运行它能够同时执行不同线程的指令。通过同步多线程技术系统能够动态调整系统环境如有可能同时执行不同线程的指令。当一个线程遇到长延迟事件时允许另一个线程使用所用的处理单元。   Power5 处理器的设计采用两路的同步多线程设计虽然更多路的同步多线程也是可能的但模拟现实其所增加的系统的复杂性是不经济的。另外一个需要注意的问题是同步多线程技术可能会由于缓存争用而降低整个系统的性能。 [编辑本段]Intel超线程技术有多少种  基于NetBurst架构的超线程OOOE SMT   基于Itanium架构的超线程IOE CMT   基于Atom架构的超线程IOE SMT   基于Nehalem架构的超线程OOOE SMT   SMT(Simultaneous Multi-Threading同步多线程)实乃是一个专有名词是一种类技术的名称不仅仅Nehalem有采用Pentium 4也有采用还有很多其他商用处理器也有采用。正确的情况应该是Nehalem的HT技术和Pentium 4的HT技术一样都是属于SMT技术。   实际上超线程技术在Intel的很多处理器里面都有使用除了Pentium 4NetBurst架构、Core i7Nehalem架构之外Itanium 2(Mondecito)和Atom(Silverthorne)处理器里面都有然而它们携带的HT技术却不属于SMT   在整理Intel的多种HT超线程技术之前我们先来回顾一下MultiThreading多线程技术的分类MultiThreading多线程就是在一个单个的处理核心内同时运行多个工作线程的技术和CMPChip MultiProcessing芯片多处理不同后者是通过集成多个处理内核的方式来让系统的处理能力提升——也就是现在常见的多核技术。现在主流的处理器都使用了CMP技术。   然而CMP技术大规模增加了相应的电路从而增加了成本MTMultiThreading技术却不是 多线程架构异同这样它只需要增加规模很少的部分线路通常约2%就可以提升处理器的总体处理器能力从而可以很简单地提升相关应用的性能。   MultiThreading或作Multi-Threading来源于可以追溯到上个世纪90年代开始的一个叫做ILPInstruction Level Parallelism指令级并行化的思想这个思想产生了一个叫做Throughput Computing吞吐量计算的名词用来提升如在线交易这样的并行计算的性能。Throughput Computing的两种主要方式就是MultiProcessing和MultiThreading。   一开始为了开发ILP在过去的几十年中利用了超标量Superscalar同时具备多个执行器、乱序执行Out-Of-Order Execute允许无数据关联性的指令同时运行、动态分支预测、VLIWVery Long Instruction Word超长指令集 等技术前三种可在经典的Pentium Pro架构上看到最后一个就是Itanium的特色技术。然而超标量使设计的复杂性急剧增加同时指令之间的数据和控制相关可以开发的ILP 也有限以及一些其它因素使得经典的超标量结构处理器难以进一步提高处理器性能。   而且从应用的角度看如在线事务处理OLTP、决策支持系统DSS、Web服务等这样的应用的特点是具有丰富的线程级并行性Thread Level Parallelism而缺乏ILP因此也就促使了MultiProcessing和MultiThreading的出现。   MultiThreading多线程技术的思想有些类似于早期的分时共享计算系统执行多个线程的处理器在遇到某个线程由于Cache Miss或者分支预测失败而停顿的时候可以切换到另一个线程来执行。目前主流的MultiThreading具有着三种形式差别在于线程间共享的资源以及线程切换的机制   其中CMT和FMT都是在单个执行单元下的技术不同的线程在指令级别上并不是真正的“并行”而SMT则具有多个执行单元同一时间内可以同时执行多个指令因此前两者有时先归类为TMTTemporal MultiThreading时间多线程以和SMT相区分。   首先介绍CMT——Coarse-Grained MultiThreading是因为它是最简单的多线程技术当单一执行线程遇到长时间的延迟如Cache Missed时就进行线程切换直到原线程等待的操作完成才切换回去。Coarse-Grained MultiThreading有时也叫Block MultiThreading堵塞多线程或者Cooperative MultiThreading协作多线程。   由于CMT很简单因此很多处理器都有实现除了下面列出之外很多嵌入式微控制器都有实现   1999年的IBM RS64 III「Pulsar」单核心双线程   2005年Fujitsu SPARC64 VI「Olympus-C」双核心4线程   2006年Intel Itanium 2「Montecito」双核心4线程   2007年Intel Itanium 2「Montvale」双核心4线程   Intel的Itanium 2赫然在目   FMT——Fine-Grained MultiThreading随时可以在每个时钟周期内切换多个线程以追求最大的输出能力——当然随时可以切换也是有代价的它拉长了每个执行线程的平均执行时间。Fine-Grained MultiThreading有时也叫Interleaved MultiThreading交错多线程或者Pre-emptive MultiThreading抢先多线程。   和CMT比起来FMT要复杂一些因此相应的处理器就没有那么多例   2005年Sun UltraSPARC T1「Niagara」8核心32线程   2007年Sun UltraSPARC T2「Niagara 2」8核心64线程   其实UltraSPARC T2同时还使用了其他的MT技术才实现了比T1多了一倍的多线程能力仔细看看上图T2还使用了什么MT技术注意第一段的CMT是Chip MultiThreading的意思而不是Coarse-Grained M 最典型的:IntelPentium4或者Corei7ultiThreading的意思   虽然CPU上使用FMT技术的并不 早在NV G40以及ATI R520开始GPU内部就开始应用了FMT细粒度多线程技术为了隐含Cache Miss的存储器高延迟GPU内部的执行单元不停地在工作线程之间切换提升总的处理能力。不过G40的FMT实现了具体多少个线程笔者倒不是很清楚根据资料看应该在100左右。   前面说过SMT其实和其他两种多线程技术都不同——那两种技术被称之为TMT时间多线程。SMT——Simultaneous MultiThreading具有多个执行单元可以同时运行多条指令因此才叫做“同步多线程”SMT起先源自充分挖掘超标量架构处理器的潜力——超标量的意思就是可以同时执行多个不同的指令。因此SMT具有最大的灵活性和资源利用率然而实现也最复杂当然比起多核结构来说就是小意思了。   2002年Intel Pentium 4 Xeon「Prestonia」单核心双线程   2007年Sun UltraSPARC T2「Niagara 2」8核心64线程   2008年Intel Core i7「Nehalem」4核心8线程   这里又看到了UltraSPARC T2这是因为它同时采用了FMT和SMT技术因为UltraSPARC T2具有两个执行单元每一个线程组使用一个线程组内则按照T1那样执行4个线程。现代的GPU也采用了类似的混合设计   不同的流处理器可以同时执行不同的线程当然同一个流处理器也可以在不同的线程之间切换。   介绍了所有的MT多线程技术种类之后我们可以来看Intel的HyperThreading超线程技术了前面说过Intel具有超线程技术的CPU有Pentium 4NetBurst架构、Core i7Nehalem架构、Itanium 2(Mondecito)、Atom(Silverthorne)。我们已经知道具有超线程技术的Pentium 4/Pentium 4 Xeon不是所有的P4都有超线程技术采用的是SMT架构Core i7的则是其改进版本。我们再来看看Itanium 2Itanium 2 Montecito采用了双核心设计每核心两个线程Itanium 2 Montecito的超线程技术采用了CMT架构 可见Itanium 2的超线程技术和Pentium 4的SMT不同它实际上是CMT粗粒度多线程技术。这是因为Itanium 2是In-Order架构的SMT的原始构想就是充分压榨OOOEOut-Of-Order Execution的能力因此In-Order架构的Itanium 2就没有采用SMT的方式。因为要创建多个线程的代价太大。   那是否In-Order架构的处理器就不能实现SMT了呢并不是Intel的Atom就是一个典型的例子 除了Atom之外IBM的怪物Power6起始频率4.7GHz也采用了基于In-Order架构的SMT技术Power5的SMT是基于Out-Of-OrderIBM Power6处理器双核每核两个线程Power6:In-Order SMTPower5则是Out-Of-Order SMT。[2] [编辑本段]超线程“灵魂附体”——同步多线程技术  在NetBurst微架构后期Intel为了维持性能上的优势将Prescott核心的Pentium 4流水线拉长到31级细化后的流水线可以被分成若干个环节然后执行不同的任务进程Intel将其称为“Hyper-Threading Technology(超线程技术简称HT)”。但过长的流水线需要进行大量的分支预测工作而且一旦预测失准就要把当前的工作全部推倒重新来过。这就造成了Pentium 4 HT处理器空有高频率发热量也大得惊人性能却提高有限最终还被扣上了“高频低能”的大帽子。   从原则上来讲HT技术绝对是一项非常有意义的创新和尝试如果我们假设当初HT遇到的不是流水线冗长Prescott Pentium 4而是更加精简高效的Core 2 Duo结果会怎样   当然只有14级流水线的Core 2 Duo最终还是与HT擦肩而过(当初的理由是过短的流水线没必要引入超线程技   术)但这并不代表Intel放弃了这方面的努力现在Nehalem就在尝试做这样的事情。所不同的是这次的主角有了一个新名字——Simultaneous Multi-Threading(同步多线程简称SMT)。   新技术允许内核在同一时间运行两个不同的进程以此来压缩多任务处理时所需要的总时间。这么做有两个好处其一是提高处理器的计算性能减少用户得到结果所需的时间其二就是更好的能效表现利用更短的时间来完成任务这就意味着在剩下的时间里节约更多的电能消耗。当然这么做有一个总前提——保证SMT不会重复HT所犯的错误而提供这个担保的则是在Core微架构中表现非常出色的分支预测设计。转载于:https://www.cnblogs.com/czjone/archive/2010/05/20/1739979.html
http://www.yutouwan.com/news/111828/

相关文章:

  • 西安网站制作公司排阜阳哪里做网站的多
  • 怎样在手机做自己的网站wordpress 外链图片
  • vps做自己的网站洛阳做网站哪家便宜
  • php网站后台模板下载不了利用大平台做网站
  • 做暧暧小视频免费网站抖音代运营都做什么
  • 常熟网站建设专业的公司网站的定位分析
  • php网站开发 多少钱外贸软件定制
  • 网站制作和推广lv官网微信网页版下载安装
  • 网站建设维护属于什么专业广告推广是什么
  • 手机网站建设的背景有别墅的件怎么写者
  • 华为电子商务网站建设网站首页html
  • 中学网站建设 课设17网站一起做网店广州国大
  • 兰州优化网站网站建设的认可
  • 做网站图片怎么做wordpress实现301跳转详解
  • 泉州有哪些做网站的平面设计公司广告语
  • 做英文网站怎样网站建设
  • 吉林省级建设行政主管部门政务网站烟台网站制作企业
  • wordpress删除角色名seo网站推广的作用
  • 南昌加盟网站建设现代简约室内设计说明200字
  • 红酒网站建设方案范本网站首页制作采用
  • 网站设计的公司选哪家淘宝推广网站怎么做
  • 建站宝盒模板wordpress微信接口
  • 网站维护托管企业网站建设公司郑州
  • 西安网站开发哪家好生鲜超市店面设计
  • 如何做网站监控安徽做网站哪家好
  • 潜山网站建设南充手机网站建设
  • 网站宣传推广策划联通物联网服务运营平台
  • 淘宝不允许 网站建设简单网站建设教学视频
  • 做小说网站做国外域名还是国内的好做视频网站的空间
  • 网站建设公司转型搜索 龙岩网