關閉廣告

關於AMD推土機在Win8下表現較好?以及效能倍增補丁?


fpe wrote:
請問亂序執行都排列出來了,為何又有 A 與 B 依存性的問題???(恕刪)


亂序也可以把 B 丟到 A 前面去啊...
但那只是浪費時間的行為...

不管怎麼排列, 只要 B 一定需要 A 完成的結果
這個依存性就會使兩者的先後次序一定是 A 優先於 B
而不是 A 等於 B , 或 A 排後於 B

如果延伸到後面需要等待的 G

那麼又還是會變成 A 先於 B 先於 G 的問題
亦即不管你要怎麼亂序, 怎麼多核心, 就算一百個核心
也不可能把 A , B , G 分別丟進三個核心內打算只以一個時間單位完成
一定要耗費三個時間單位, 因為 A 必須被完成才能接著做 B , 而 B 被完成後才能接著做 G
所以 G 不可能被排到 B 甚至 A 之前, 這就是定序.

也就是說, 極端平行化的難度最後仍然卡在這個上面.

AMD 的這個設計怎麼看都是要把平行化優化
因此可以合理推測, 若設計得宜
可平行化的日常單純工作, 例如壓縮/ 解壓縮 / 轉檔 ...
這些本身就可以被切成數n個等份同時下去的工作自然是越多核心架構越快處理
然而遇上有先後計算問題的東西, 例如遊戲
仍然會逃不過必要的問題.
(總不會你人才剛從第一關開始, 第五關的某種結局就已經跑出來給你看了, 甚至於你都還不知道過不過得到第三關.)


AMD 的單線程擺明沒優化打算, 先行處理了平行化運算問題
這推土機與其說是想要提升 CPU 核心的效能
不如說是打算避開與 Intel 正面交手比較單線程的效能問題
而改由可多核分工的部份先下手為強.
利用平行化企圖在不同的部份形成互有領先的局勢.

簡單講.

我個人以為, 這不是一個單純家庭或日常用的個人PC要使用的中央處理器設計方向.
而比較像是想做成伺服器, 或工作站, 或特定用途的機器...


littlewbot wrote:
記得哈雷機車出廠可說決大多數是一樣的,但每年史特吉斯鎮年會.
可以看到麟囊滿目各有千秋的機車,連現在密爾瓦基廠內也增設客製區.
同樣的思維,量不量產與戰鬥正面並非絕對.
中華民族-美利堅合眾國-那個戰鬥正面不寬?...(恕刪)

不好意思....其實您這棟樓回文不只一次,之所以沒有回應,是因為抓不到您舉例子的類推邏輯,不太確定從何回應....

enm wrote:
亂序也可以把 B 丟到 A 前面去啊...
但那只是浪費時間的行為...

不管怎麼排列, 只要 B 一定需要 A 完成的結果
這個依存性就會使兩者的先後次序一定是 A 優先於 B
而不是 A 等於 B , 或 A 排後於 B

如果延伸到後面需要等待的 G

那麼又還是會變成 A 先於 B 先於 G 的問題
亦即不管你要怎麼亂序, 怎麼多核心, 就算一百個核心
也不可能把 A , B , G 分別丟進三個核心內打算只以一個時間單位完成
一定要耗費三個時間單位, 因為 A 必須被完成才能接著做 B , 而 B 被完成後才能接著做 G
所以 G 不可能被排到 B 甚至 A 之前, 這就是定序.

也就是說, 極端平行化的難度最後仍然卡在這個上面....(恕刪)


了解


enm wrote:
AMD 的單線程擺明沒優化打算, 先行處理了平行化運算問題
這推土機與其說是想要提升 CPU 核心的效能
不如說是打算避開與 Intel 正面交手比較單線程的效能問題
而改由可多核分工的部份先下手為強.
利用平行化企圖在不同的部份形成互有領先的局勢.....(恕刪)


單線程如果要做優化,它的電路會更複雜,體積會更大,不用說,會比現在嚇死人的耗電量來的高


enm wrote:
簡單講.

我個人以為, 這不是一個單純家庭或日常用的個人PC要使用的中央處理器設計方向.
而比較像是想做成伺服器, 或工作站, 或特定用途的機器...


關於這點.......AMD不是自己都講過了嗎?
enm wrote:
亂序執行的重要依據是把所有待發送指令先加以整理
然後把 "可以先執行的指令" 分送至各個電路加以處理 :
也就是說, 若這排指令裡面有 A B C D E F G
A 與 B 相依, B 與 G 相依, D 與 F 相依, 但 A與B與G 跟 D與F 不相依
則可以先執行 A , C , D , E 四個指令
其後 A , D 指令出來後再執行 B 及 F , 並在 B 結果出來後再執行 G
在空間與處理單元設定為兩個核心處理情況下
亂序執行的組合可以為此 :
Core1 : A , B , C , G
Core2 : D , E , F , -
...(恕刪)

核心內的亂序執行邏輯電路及諸多執行管線,所處理的是指令層面平行度(Instruction Level Parallelism),如果這邊的A~G都是處理器指令的話,不是分別發送到不同核心唷!是發送到某個核心內部的諸多ALU/FPU管線去執行。

核心與核心間處理的則是執行緒層面的平行度,一個程式本身要處理的事,本身必須先有平行性,程式設計師得花時間去分析平行性,並把可以平行處理的工作分拆後、寫成程式由不同執行緒處理,程式被執行後,產生的執行緒會由作業系統排程去執行,如果是多核處理器、平行的執行緒便可以被分派到不同核心內被執行。

舉個簡化例子來說,某程式可能有1跟2兩個平行的執行緒,執行緒1被分發到核心1、執行緒2被分發到核心2,執行緒1內有A、B、C、D、E、F、G這些指令,再由核心1的邏輯電路去分析這些指令的相依性,亂序執行。如果核心1內有管線1-1與管線1-2,以您舉的相依性來說,兩個管線各自執行的指令如下:

Pipeline 1-1 : A, B, E, G
Pipeline 1-2 : C, D, F

另外還有資料層面的平行度,也就是SSE/AVX這些指令集作的事,而GPGPU擅長的平行處理,也落在這個範疇。假設有陣列X[]、Y[]跟Z[],以往可能是透過一個迴圈重複執行A~G這些指令若干次,直到陣列X[]跟Y[]陣列的每一個相對應項都被同樣的A~G指令運算過,然後存到Z[]陣列的對應項,例如用迴圈處理X[1]+Y[1]=Z[1]、X[2]+Y[2]=Z[2]、....X[n]+Y[n]=Z[n];但是運用A~G指令的SSE/AVX版本A'~G'(這裡是舉例說明,不是每個x86/x64指令都有SSE/AVX的向量對應版本),可能只要執行一次,X[]跟Y[]陣列的每項資料就可以同時被平行處理完畢,一次存到Z[]陣列去,也就是X[1:n]+Y[1:n]=Z[1:n],省掉那個重複執行的迴圈。

SSE/AVX指令A'~G',當然還是可以被亂序處理,只是每個指令處理的資料位元數更寬了,例如AVX暫存器寬達256-bit。一般來說,這個資料平行性,也是要由程式設計師找出來寫成程式(scalar版本改寫成SSE/AVX vector版本、或CUDA/OpenCL版本)。

一般情況,編譯器可以幫忙程式設計師找出一些資料層面平行性,但成果或許不會是最佳;編譯器對於分析某件事情(例如H.264視訊編碼壓縮)自動拆分成平行執行緒,則幾乎無能為力,得靠程式設計師自己的邏輯跟功力;指令層面的平行度,則可由核心內的亂序執行硬體在執行某個執行緒所含的諸多指令當下,動態分析找出來。

ycweng wrote:
不好意思....其實...(恕刪)

我想不只你沒看懂...
ycweng wrote:
核心內的亂序執行邏輯電路,所處理的是指令層面平行度(Instruction Level Parallelism),如果這邊的A~G都是處理器指令的話,不是發送到"Core"唷!是發送到某個核心內部的諸多ALU/FPU管線去執行。

核心與核心間處理的則是執行緒層面的平行度,一個程式本身要處理的事,本身必須先有平行性,程式設計師得花時間去分析平行性,並把可以平行處理的工作分拆由不同執行緒處理,程式被執行後,產生的執行緒會由作業系統排程去執行,如果是多核處理器、平行的執行緒便可以被分派到不同核心內被執行。
...(恕刪)


上面這一段是重點,多謝大大出來解說

ycweng wrote:
[Q8] 如果我不想關核心,又不想讓我的八核推土機在Windows 7下碰到這種當執行高負載是落在雙核到四核之間時、可能的效能減損問題,有沒有解決方式?

[A8] 理論上是有的,但是這比較進階了,可以到工作管理員內,在"處理程序"那頁找出該程式,用滑鼠右鍵點擊,選取"親和性設定",示意圖如下:
按這裡檢視圖片
選取親和性設定後,可以指定該程式的執行緒,只能在哪些核心內執行,示意圖如下:
按這裡檢視圖片
在八核推土機上,會看到八個CPU,接下來,把其中四個核心反勾選,只留下四個核心,但是....要反勾選哪四個?哪四個是對應到每個模組的第一個核心?這部分就需要推土機使用者自力救濟分享一下了,或看M01板上有沒有BIOS/系統軟體專家可以對此指導指導,應該是留下CPU0、CPU2 、CPU4、CPU6,或是留下CPU1、CPU3、CPU5、CPU7。


[Q9] 上述的程序,在重開機後或關閉程式重新執行時,還要再作一次嗎?

[A9] 是的,要再作一次;是的,很麻煩,所以才說這比較進階,不然也只能等Windows 8出來嘍!
(恕刪)

(更新1樓[A9]的部份):或是下載Core Affinity Resident這個程式,可以不透過工作管理員,直接幫你指定程式在那些核心中執行,並記住該設定,之後便不必再每次重來,也不需要玩核心關關樂。

這在Windows 8出來前,可以幫助在Windows 7下實際測試Winindows 8可能採用的排程策略在推土機上帶來的效果,也就是對於主要負載在二到四執行緒的程式來說,到底是盡量先塞滿模組、還是盡量分配到不同模組,以及效能增進的邊際效益 vs. 耗能增加的幅度。

The Tech Report也進行了一篇針對在推土機上作業系統可以如何進行執行緒排程的探討,結果跟1樓的XtremeSystems26樓的Hardware.fr、以及16樓的捷克網站的數據,都蠻類似的:也就是將主要負載在四個執行緒的程式(像最近很紅的遊戲BF3)分配到四個模組的第一個"核心",會比分配到兩個模組的共四個"核心"上,效能來得高;另外當然也會比讓Windows 7在不認得推土機架構特性的情況下"自由發揮"來得高。

下面的Mask 55跟Mask 0f,數字部分是16進位數字,寫成二進位數字分別是0101010100001111,分別代表分配到四個模組的第一個"核心"執行,以及兩個模組內的四個"核心"執行的情況,1代表被使用的"核心",0是不使用的"核心"。執行緒的核心綁定,是透過Win7內建的命令列來啟動應用程式並下Mask 55或Mask 0f的參數為之。








不過The Tech Report進行的測試都是浮點數運算,由於兩個模組雖然有四個"核心",但只有兩個FPU,因此雖然Turbo Core在此情形下能夠把時脈拉到4.2GHz(相較分配到四個模組的第一個核心,時脈只能到3.9GHz),但是不能抵消資源共享的競爭缺點。
這是一年前的報導了
AMD在windows 8下效能會比較好

現在Windows 8也出了正式版
有人可以證實這個新聞是真的還是假的嗎?
或是哪裡有測試 對於推土機在windows7與windows8下的表現?

emu300 wrote:
這是一年前的報導了A...(恕刪)


Tom's hardware測了。
另外...版面第一頁海國王子也測了。
目前回應數:0
基本上這篇首篇看完之後。應該是不可能會對AMD FX在Windows 8會有增進的可能帶有期待的。
軟硬是要配合沒錯,但硬體的問題要軟體來解決。史上還沒有善終的好例子
關閉廣告
文章分享
評分
評分
複製連結

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