cpu线程和核数的关系 cpu线程( 三 )


事实上 , 目前的操作系统(包括Windows和Linux)将任务分解为进程和线程 , 并能够自由地安排和分派到处理器 。 相似的工作方式我们可以在数据库引擎、科学计算程序、工程软件和多媒体软件等很多高性能应用程序中都看到 。 为了能够进一步发挥处理器的效能 , 目前的不少操作系统和应用软件都支持使用SMP技术的多处理器架构 。
超线程技术通过同一个核心中两个独立的逻辑处理器实现目前操作系统和应用程序普遍支持的进程级和线程级的并行处理 。 每个线程可以由两个逻辑处理器之一执行 。 两个线程的指令同时分派到处理器核心 , 处理器核心通过乱序执行机制并发地执行两个线程 , 使处理器在每一个时钟周期中都保持最高的运行效率 。
要真正发挥超线程处理器的威力 , 除了硬件方面具有NetBurst微架构之外 , 还需要配合带有多线程代码的IA-32指令 。 Intel的NetBurst微架构是专门针对单指令流设计并优化的 , 但即使是执行最优化的代码 , 运行周期当中处理器的执行单元都不能完全被利用 。 平均来说 , 当处理器执行多种复合的IA-32指令时 , NetBurst架构中仅有35%的执行单元被利用(在这一点上AMD的架构更有优势) 。 为了使剩余的执行单元能被充分利用起来 , 超线程技术通过自身的并行多线程代码为处理器核心分配第二个可执行线程 。 两个被执行的线程通过公共的指令缓冲池向处理器提供指令编排 , 两个指令的相关性越少 , 两者的资源冲突就越少 , 因而处理器当中利用起来的执行单元数就越多 , 这样就使指令的执行速度得到提高 。
使用超线程技术的IA-32处理器对于软件而言等同于两个独立的IA-32处理器 , 和传统的多处理器系统相似 。 这使得原来为传统多处理器系统设计的应用软件不需要任何修改就可以直接在使用超线程技术的IA-32处理器上运行 。 只不过对于多处理器系统而言指令是向多个处理器分发 , 而现在指令分发的对象是相对独立的逻辑处理器 。
在固件(BIOS)方面 , 超线程处理器的运作模式和传统多处理器系统相似 。 支持传统双处理器和多处理器的操作系统也可以通过CPUID指令侦测使用超线程技术的IA-32处理器的存在 。 但尽管目前的应用代码都能在使用超线程技术的处理器上正常运行 , 但为了获得最理想的运行效果 , 简单的代码修改还是必须的 。
在得到操作系统和应用软件的支持之下 , 使用超线程技术的处理器比起普通处理器有30%的额外性能提升 。 超线程技术应用到多处理器系统时 , 效能的提升和处理器的数量基本成线性关系增长 。 在理想状况下 , 不需要增加额外成本就能有如此可观的性能增幅 , Intel的超线程技术应该有不错的发展潜力 。 当然30%只是理想情况下 , 实际运行当中超线程技术可能会带来缓存命中率下降 , 物理资源冲突以及内存带宽紧缺等问题 , 这些负面影响不但会使影响超线程技术所带来的性能增幅 , 在极端情况下还可能造成性能的不升反降 , 所以要进一步发挥超线程技术的威力 , 还需要Intel和其他软件厂商在硬件和软件方面做进一步的完善 。
超线程技术就是利用特殊字符的硬件指令 , 把两个逻辑内核模拟成物理芯片 , 让单个处理器能使用线程级并行计算 , 从而兼容多线程并行计算 , 从而兼容多线程操作系统和软件 , 使运行性能提高30%.
【cpu线程和核数的关系 cpu线程】虽然单线程芯片每秒钟能处理成千上万条指令 , 但是在任一时刻只能对一条指令进行操作 。 而“超线程”技术可以使芯片同时进行多线程处理 , 使芯片性能得到提升 。 如果单单是CPU支持超线程技术而没有芯片组、软件进行协同作战的话 , 超线程技术也就是一句空话而已 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。