1. 程式人生 > >Intel雙核與超執行緒的區別與聯絡!(轉帖)

Intel雙核與超執行緒的區別與聯絡!(轉帖)

2006-01-24 09:53 作者: 來源: eNet矽谷動力
多執行緒、超執行緒,多核心

  在現有的計算機裡,程式由多個執行執行緒組成的,這些執行緒是一系列相關指令。在個人電腦時代早期,大多數程式僅含有單個執行緒。當時的作業系統在某一時間 僅能執行一個此類程式。由於系統不能同時處理兩項任務,下一個任務必須等到上一個任務處理結束時才能處理,後來的作業系統創新引入了多工處理,從而能夠 掛起一個程式,以執行另一個程式。通過使用這種方式來迅速地切換程式,系統能夠“看上去”同時執行多個程式。然而,事實上處理器一直執行的僅僅是單個線 程。

  2003 年,
Intel
在自家的至強上應用了新的技術:超執行緒技術,

  超執行緒技術是在一顆CPU同時執行多個程式而共同分享一顆CPU內的資源,理論上能像兩顆CPU一樣在同一時間執行兩個執行緒,這樣,處理器需要多加入一個邏輯處理單元,而其餘部分如整數運算單元(ALU)、浮點運算單元(FPU)、二級快取(L2 Cache)則保持不變,這些部分是被分享的。

  雖然採用超執行緒技術能同時執行兩個執行緒,但它並不像兩個真正的CPU那樣,每個CPU都具有獨立的資源。當兩個執行緒都同時需要某一個資源時,其中一個要暫時停止,並讓出資源,直到這些資源閒置後才能繼續。因此超執行緒的效能並不等於兩顆CPU的效能。

  根據
英特爾
效能指標評測,通過在含有超執行緒技術的處理器上執行,採用多個執行緒編寫的應用程式可獲得高達 30% 的效能提升。更重要的是,兩個程式能夠同時在一枚處理器上執行,而無需來回切換(參見圖1)。

  我們能體會到的好處就是,當在執行一個巨大的遊戲的時候,而CPU的佔用率還沒到100%,所以系統還能迅速的在DOC文件的攻略,瀏覽器搜尋引擎裡的祕籍以及播放自己喜歡音樂的Winamp中自由的切換。


圖1. 超執行緒技術支援在單個處理器核心上同時執行兩個執行緒

  然而,超執行緒技術的效能提升受到了兩個執行執行緒共享資源可用性的限制。結果,由於這些共享資源之間的爭用,超執行緒技術不能實現兩枚獨立處理器的處理吞 吐率。如果想在單個晶片上實現更出色的效能提升,處理器就需要兩個單獨的核心,這樣每個執行緒就能擁有其專屬的整套執行資源。


圖2 不支援超執行緒技術的單核心處理器

  這是一塊單核心不支援HT技術的處理器

  我們可以看到,當CPU在整數單元工作時,浮點單元是閒置的,而反過來浮點單元工作時,整數單元就閒置,當然這樣就造成了CPU資源浪費,為了解決這個問題。HT超執行緒技術出現了。

  支援超執行緒的單核心CPU HT(Hyper-Threading Technology)超執行緒技術:

  因為在CPU中多集成了一個邏輯處理單元,這個多整合的邏輯處理單元可以使用另外一個邏輯處理單元不使用的資源。這樣,在同一時間裡,CPU同時可以處理一個整數運算和一個浮點運算。這樣大大的改善了之前的資源浪費情況。提高了執行效率。這就是超執行緒技術


圖3支援超執行緒技術的處理器

  當然,新的問題也同時誕生了,如果同時只進行整數運算或者只進行浮點運算呢?這樣的話,CPU就無法享受HT技術了,在只進行整數運算或只進行浮點運算時,HT技術是不起作用的


圖4當只進行浮點運算時超執行緒技術的資源利用情況

  那麼,怎麼改善這種情況呢?OK,雙核心技術解決了這個問題

圖5不支援超執行緒技術的雙核心處理器

  雙核心處理器因為具有兩個完整的核心,所以同時可以進行兩個整數或者兩個浮點運算,這樣極大的提高了系統的利用效率,從而推動了系統性能的提升。

  又是但是,現在又回到單核心處理器遇到的問題,另外一個單元在雙核心處理器裡不是還是閒置麼?有人說過雙核心CPU不可以支援HT技術麼?

  支援超執行緒技術的雙核心處理器

圖6支援超執行緒技術的雙核心處理器

  這種設計帶來的好處是前所未有且顯而易見,但是唯一的壞處就是較高的製造成本,所以現在擁有超執行緒技術的雙核心處理器只有在高階的PentiumEE 和一部分Xeon上才擁有。我們知道,在支援超執行緒的處理器的機器上,支援多CPU的WINDOWS會認出兩個CPU。而在支援雙核心處理的機器上, WINDOWS也會認出兩個CPU,在支援超執行緒雙核心的處理器上,WINDOWS會認出四個CPU!哦,這就開始牽扯到一個軟體授權的問題了。

軟體支援

  我們知道,以往的軟體,凡是為多路CPU做過優化的軟體一般都需要付出額外的資金來獲得對多路CPU的支援。比如最典型的Windows,在伺服器操 作系統上,如果需要支援更多處理器的Windows,就需要支付更高的價錢。但是這個問題不會發生在裝備雙核心處理器的電腦上,微軟和多家軟體公司以及承 諾最後的收費標準是按照物理CPU數量來決定而不是CPU核心的數量來決定。那麼大家關心的相容性問題呢,是不是會造成軟體不相容的情況呢?答案是否定 的,雙核心繫統在執行沒有對其進行優化的軟體時和單核心繫統不會有什麼差異。因此不會造成早先的軟體在新處理器上出現相容性問題。
http://www.enet.com.cn/article/2006/0124/A20060124496415_2.shtml

相關推薦

Intel執行區別聯絡

2006-01-24 09:53 作者: 來源: eNet矽谷動力 多執行緒、超執行緒,多核心   在

泥瓦匠聊併發程式設計:執行執行必知必會基礎篇

本文目錄 執行緒與多執行緒 執行緒的執行與建立 執行緒的狀態 1 執行緒與多執行緒 執行緒是什麼? 執行緒(Thread)是一個物件(Object)。用來幹什麼?Java 執行緒(也稱 JVM 執行緒)是 Java 程序內允許多個同時進行的任務。該程序內併發的任務成為執行緒(Thread)

linux下cpu物理個數、多執行判斷解析

在Linux體系中,供給了proc檔案體系顯示體系的軟硬體資訊。若是想懂得體系中CPU的供給商和相干裝置資訊,則可以經由過程/proc/cpuinfo檔案獲得。本文章針對該檔案進行簡單的總結。 基於指令集(ISA)的CPU產生的/proc/cpuinfo檔案不一樣,基於X8

非同步程式設計執行程式設計的聯絡區別

1、非同步程式設計與多執行緒的區別 共同點:非同步和多執行緒兩者都可以達到避免呼叫執行緒阻塞的目的,從而提高軟體的可響應性 不同點:         (1)執行緒不是一個計算機硬體的功能,而是作業系統提供的一種邏輯功能,執行緒本質上是程序中一段併發執行的程式碼,所以執行緒需

高併發執行區別

1、高併發     高併發是一種狀態,如果大量請求訪問閘道器介面。這種情況會發生大量執行操作,如資料庫操作、資源請求、硬體佔用等。這就需要對介面進行優化,而多執行緒是處理高併發的一種手段。 2、多執行緒     是一種非同步處理的一種方式,在同一時刻最大限度的利用計

併發和並行,非同步執行區別

在單CPU系統中,系統排程在某一時刻只能讓一個執行緒執行,雖然這種除錯機制有多種形式(大多數是時間片輪巡為主),但無論如何,要通過不斷切換需要執行的執行緒讓其執行的方式就叫併發(concurrent)。而在多CPU系統中,可以讓兩個以上的執行緒同時執行,這種可以同時讓兩個以上執行緒同時執行的方式叫做並行(p

執行執行

記得當初上學的時候,即使是那些對自己專業比較熱愛的同學依然對計算機組成原理和體系結構這種課程提不起興趣來。因為這兩門課涉及到了硬體,而我們大部分人畢業後的工作都是軟體相關,所以會感覺既枯燥又無用。但現在想想,如果我們畢業後悲催的選擇了本行工作,工作很長時間後依然木有涉及到一點

更新UI的幾種方式?執行UI執行有哪幾種通訊方式?

handler sendMessage方式 private Handler handler = new Handler() { public void handleMessage(Message msg) {

Java 多執行面試題及答案非常全面

這篇文章主要是對多執行緒的問題進行總結的,因此羅列了40個多執行緒的問題。 這些多執行緒的問題,有些來源於各大網站、有些來源於自己的思考。可能有些問題網上有、可能有些問題對應的答案也有、也可能有些各位網友也都看過,但是本文寫作的重心就是所有的問題都會按照自己的理解回答一遍,不會去看網上的

java建立執行的四種方法

java中建立執行緒的四種方法以及區別 Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或其子類的例項。Java可以用四種方式來建立執行緒,如下所示: 1)繼承Thread類建立執行緒 2)實現Runnable介面建立執行緒 3)使用Callable和Future建立執行緒

常量指標指標常量的區別

三個名詞雖然非常繞嘴,不過說的非常準確。用中國話的語義分析就可以很方便地把三個概念區分開。 一) 常量指標。 常量是形容詞,指標是名詞,以指標為中心的一個偏正結構短語。這樣看,常量指標本質是指標,常量修飾它,表示這個指標乃是一個指向常量的指標(變數)。 指標指向的物件是常量,那麼這個物件

java多執行之等待喚醒機制wait-notify

wait()、notify()、notifyAll()方法 Object類裡面提供了這幾個方法: wait():讓當前執行緒處於等待(阻塞狀態),直到其他執行緒呼叫此物件的notify()或noti

Java多執行---阻塞佇列詳解舉例說明

一. 前言   在新增的Concurrent包中,BlockingQueue很好的解決了多執行緒中,如何高效安全“傳輸”資料的問題。通過這些高效並且執行緒安全的佇列類,為我們快速搭建高質量的多執行緒程式帶來極大的便利。本文詳細介紹了BlockingQueue家庭中的所有成員

執行、多程序通訊 java實現

程序間通訊方式1.管道(匿名管道 Pipe)//   PipedInputStream  、PipedOutputStream2.命名管道(NamedPipe/FIFO)//java 不支援?3.訊號(Signal) // wait() notify() notifyall(

Java執行面試題合集含答案

下面是我自己收集整理的Java執行緒相關的面試題,可以用它來好好準備面試。 參考文件: 《Java核心技術 卷一》 Java執行緒面試題 Top 50:http://www.importnew.com/12773.html JAVA多執行緒和併發基礎面試問答: htt

35-多執行--多執行JDK1.5新特性Lock+Condition+使用JDK1.5新特性解決多生產者多消費者問題+總結+範例Lock+Condition-多生產者多消費者問題實際開發程式碼

java.util.concurrent.locks包中提供了幾個介面:Lock、Condition...... 一、java.util.concurrent.locks.Lock 1、interface Lock:Lock實現提供了比使用synchronized方法(同

java執行學習(三)----死鎖面試常見

延遲載入的單例多執行緒設計模式(懶漢式)   單例模式   是讓呼叫者只產生一個唯一的物件。    分為餓漢式和懶漢式    餓漢式: class EHan{ private static final EHan e = new EHan(); publi

執行同步之互斥物件通俗易懂

     先看售票系統的程式,看看多執行緒容易出什麼問題: #include <windows.h> #include <iostream.h> DWORD WINAPI Fun1Proc(LPVOID lpParameter); DWORD WI

[C++][執行池][完整實現] 執行池原理及建立C++實現

文章的主要框架是參考這篇文件的,http://jacky-dai.iteye.com/blog/1090285, 關於作者  張中慶,西安交通大學軟體所,在讀碩士,目前研究方向為分散式網路與移動中介軟體,對Linux極其愛好,可以通過[email protecte

java 多執行 資料流 內部類播放音樂

一.多執行緒 1.程序與執行緒 程序:負責資源管理(記憶體) 執行緒:負責的程式的執行 2.類實現 a、定義一個類,繼承Thread b、重寫Run方法 c、啟動執行緒(執行緒物件.start()