benny950 wrote:
多工作業細統如Windows 7,可以同時(宏觀上)做很多工作。每個工作又被細分成一或多個更小單位的工作(thread),這些小工作要被排入CPU的線程(thread)裡才能運行。CPU有4線程就表示同時(微觀上)可以有4個小工作被排入CPU一起運行。

以上的每個小工作裡有許多如加減乘除等指令,這些指令一定要送進CPU核心才能執行。如果一核心有兩線程,兩線程會不斷往核心送指令進去,但每一核心一次只能執行一個指令,另一個只能等待。看起來沒什麼好處。但有些時候線程塞給核心指令時會有延誤,如果是一核心一線程,核心只能乾等,若一核心有2線程,核心不必枯等,可以執行由另一個線程塞進來的指令。由此達到加速的目的。


每核心一次只能執行一指令應該改成每核心一次只能執行一線程

雖然作業系統能用單核心系統處理多任務 但是CPU每次只能處理一線程

不是CPU每次只能處理一條指令 CPU一時脈週期能處理的指令可不是1條



許多人在評估處理器的效能時,大多是觀察它的時脈,但是在效能的評估上其實還有另一個重要的指標,那就是IPC(Instruction Per Clock cycle)每一時脈周期可執行的「指令」,筆者利用處理器來做解釋。例如同樣是2GHz的處理器,A處理器的IPC值為「1」、B處理器的IPC值為「2」,就等於2GHz x 1、2GHz x 2,在每一周期的運算下,這兩顆處理器的IPC值就有兩倍差距,因此,就算處理器的時脈較快,仍然會因為IPC值較低,而A、B處理器有不同的效能。

因此,不論是一顆處理器或是顯示晶片,若是要評估它的效能,就不能只看它的時脈,這得要把它的IPC值給算進去才行。而Intel、AMD等等的處理器,也都會在IPC值上做努力
http://www.techbang.com/posts/213-performance-of-ipc-performance
yinhell wrote:
這部分不太對>...(恕刪)


Intel Core i7 2600K 128,300 MIPS at 3.4 GHz


I7 2600K是12800MIPS 跟我計算的結果是相差不多的

IPS代表每秒能處理的指令速量

I7 2600K在3.5GHz下1秒鐘能處理1280億條指令 遠遠比他的3.5GHz時脈 35億次每秒X4核來的高

http://en.wikipedia.org/wiki/Instructions_per_second

benny950 wrote:
這些指令一定要送進CPU核心才能執行。如果一核心有兩線程,兩線程會不斷往核心送指令進去,但每一核心一次只能執行一個指令,另一個只能等待。...(恕刪)

紅色的部份錯了。

abc003 wrote:
3.5GCPU代表每一個1hz的時脈週期時間只需要 3.5GHz10^-9次方秒 就是35億分之一秒


3.5GCPU代表每一個cycle的時脈週期時間只需要 3.5GHz10^-9次方秒 就是35億分之一秒

abc003 wrote:
那一秒鐘理論上能處理3.5*10^9 *15*6*4 =1260億條指令


這式子應該多一個參數IPS 算出來的結果才能加上"指令"

abc003 wrote:
Intel Core i7 2600K 128,300 MIPS at 3.4 GHz


I7 2600K是12800MIPS 跟我計算的結果是相差不多的

IPS代表每秒能處理的指令速量

I7 2600K在3.5GHz下1秒鐘能處理1280億條指令 遠遠比他的3.5GHz時脈 35億次每秒X4核來的高

http://en.wikipedia.org/wiki/Instructions_per_second


128,300 MIPS = 128.3 GIPS

若IPS 等於1,則3.5*10^9 *15*6*4*1(IPS) = 1260 GIPS

haswell 比上前兩代的CPU 應該沒有將近10倍的差距吧...
Whistle Blow wrote:
紅色的部份錯了。


懇請大大解惑,

小弟的觀點也是跟這位大大一樣,

執行序的增加是類似cache的作用,

在cache命中失敗時會去ram中擷取資料,

在這等待的時間內,若是雙執行序,

則在這等待時間內可以執行另一個執行序內的程序,

所以在某些條件下HT技術會導致效能下降的原因,

一個核心一個單位時間內僅能執行一個指令。


在我的認知裡

HT的執行序並沒有像CPU核心一樣具有資料處理的能力

不知這觀念是否正確還有請各位大大協助,感恩
人間飛雀 wrote:
一個核心一個單位時間內僅能執行一個指令。
...(恕刪)

以當代的設計,一個實體核心內部普遍有多個管線(super-scalar),何以"只能執行一個指令"?

加上HT功能,只是讓同時脈內不同管線所能執行的指令,可以來自不同執行緒,這是降低管線bubble的設計。

下面左邊示意圖a),每個核心有三條管線(示意,不是代表Intel核心內真的只有三個管線),從橫切過來則是每個單位時脈,可以看到,某單位時脈內通常不只一個指令在執行,因此並沒有「一個核心一個單位時間內僅能執行一個指令」這件事。灰色的部份是管線的bubble。Bubble越多,IPC就會降低。



中間示意圖6)是兩個核心可以同時執行兩個執行緒的示意,但是通常這以silicon代價來看最昂貴(兩個獨立核心),而且個別核心的管線bubble問題沒有大改善。

右邊示意圖b),是單一個核心加入Hyperthreading,讓同個時脈內不同管線所能執行的指令,可以是來自不同執行緒,用意是改善bubble,也改善了IPC,純粹產出或許比不上兩個獨立核心,但相對silicon代價卻低不少。
人間飛雀 wrote:
懇請大大解惑,

小弟的觀點也是跟這位大大一樣,

執行序的增加是類似cache的作用,

在cache命中失敗時會去ram中擷取資料,

在這等待的時間內,若是雙執行序,

則在這等待時間內可以執行另一個執行序內的程序,

所以在某些條件下HT技術會導致效能下降的原因,

一個核心一個單位時間內僅能執行一個指令。

在我的認知裡

HT的執行序並沒有像CPU核心一樣具有資料處理的能力

不知這觀念是否正確還有請各位大大協助,感恩


執行緒不是快取 他是作業系統和軟體能同時進行多任務的一個單位

要有作業系統處理資料的單位的概念 行程>線程

行程就是一個程式在執行的狀態而 不在執行的時候他在當軟體在硬碟理才叫做程式 在執行狀態時就叫行程

比如一個流覽器一個播放軟體或包括在背景運作的程式軟體執行時會有的一個單位

當你開啟一個程式 一定會有一個行程在記憶體等待被CPU執行

(你工作管理原裡面一堆.EXE的在執行的都叫行程)

而一個行程能有多個執行緒因為 比如你流覽器是一個行程 這個瀏覽器他的處理音效 和處理文字的

和處理器鍵盤輸入的工作有可能是同時不同的執行緒在執行

多執行緒的技術能夠讓一個行程(執行中的程式) 同時執行不同的工作 而且充分利用CPU單元中閒置的單元

當CPU有空黨的時候或是等待I/O 輸出輸入時的閒置時間會被OS執行緒切換這樣可以充分利用CPU的資源

HT只是複製兩組狀態暫存器 利用亂序執行部件和CPU理沒利用到的部件 閒置時有的空檔來進行處理

所以也是可以使用完整CPU的功能 只不過他只能利用到在CPU有空閒的部件的時間

HT技術其是就是SMT技術 稱為同步多執行緒

能夠達到真正同時執行多的執行緒的硬體技術不只SMT

有SMT稱為同步多執行緒 就是1個核心能同時執行多個執行緒 如英特爾的HT就是屬於一種SMT

還有SMP稱為多處理機系統 有些主機板能夠插很多顆CPU的屬於此類 如XEON的伺服器主機版..........

還有CMP稱為多核心系統 只要把多的CPU封裝到一起或是在一個DIE上集成多個的ALU內核就屬於此類

yinhell wrote:
這式子應該多一個參數IPS 算出來的結果才能加上"指令"



128,300 MIPS = 128.3 GIPS

若IPS 等於1,則3.5*10^9 *15*6*4*1(IPS) = 1260 GIPS

haswell 比上前兩代的CPU 應該沒有將近10倍的差距吧...


我上面給的式子已經考慮進去IPS了

實際上 *15*6*4 就已經是考慮進去IPC的東西

IPC稱為在一個時脈週期能執行的指令數 這個數值乘上CPU時脈就是效能

IPS效能=CPU時脈頻率 * IPC

會影響IPC的就是指令管線化技術 超純量處理 亂序執行部件 多核心系統CMP 同步多執行緒SMT

快取記憶體等技術
abc003 wrote:發現好多人根本沒搞清楚基本的觀念 卻跟著


這個解釋不錯,很通用,也避開談到架構的問題。

abc003 wrote:
發現好多人根本沒搞清楚基本的觀念 卻跟著別人在那裡喊專業名詞
線程就是執行緒 只是翻譯名稱不同
是分時作業系統處理工作時用的單位 作業系統能同時處理多個工作因此有多線程


哥哥,您這句話基本上是沒錯.但是分時作業系統的thread跟CPU的thread一點關係都沒有.
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!