瀏覽單個文章
qwerty
Senior Member
 

加入日期: Aug 2001
您的住址: TaiPei
文章: 1,165
引用:
作者ianme
1.我想該澄清一個觀點,不管是什麼核心,只要在於X86之下的架構,可說是"不可能"有同時分配的問題的。因為指令執行是序列式的,平時是在於這些指令沒有很相關的關係時才會發生。

2.HT不是虛擬兩個CPU,他是虛擬一個Thread來做"可以"平行處理狀況的執行,本身需要程式有特別為他編寫才能發揮效能。

3.我想HT根管線長短沒有什麼關係,管線只不過是指令分級的程度,跟導入虛擬Thread沒有直接關係。

4.因為管線分的更細了,所以其實有時候指令執行是卡再分時上面,就是序列式的執行,但是其實如果中間比如有一些如邏輯運算的東西可以先做,那是不是可以先做出來存起來備用,如此就有了平行化的處理方式,那麼如果把主序列的指令也這樣做呢?為了完成這樣的想法,所以必須再原有架構上面再虛擬一個Thread(一個通路),當然程式也要這樣寫才有用。程式就必須把它模組化,讓它可以個別來...


第一點和第四點中,指令當然是不相關才可以非循序執行,和是不是 X86 架構應該沒有關係才對不是嗎?Out-Of-Order-Execution 是現在大多數先進處理器的基礎。而多處理器系統執行程式時仍然會遇到這個問題,只是能夠藉由適當的在設計程式時事先避免部分相依性的指令編排,以再進一步提升效率。而搬到單處理器系統來說這也還是有好處的。

HT 我從來沒有去看過他的技術文件,不過我覺得和虛擬 thread 是不同的兩回事,thread 是用來被執行的,多虛擬一個我不覺得有幫助,形容成多出一個指令執行單元我覺得可能比較合適,即使我認為這恐怕還是簡化的形容方式....。一個 thread 不是一個通路,而是一個佔資源的東西。

[以下是無根據發言,印象來自多年前的 0&1 Byte]------
在 superscalar 這種概念中,平行化的程度不如純粹的雙處理器,主要是為了軟體相容性,避免發生錯誤,畢竟由硬體做判斷所能判斷的程度有限,所以能平行化的規模不大,但也因此不須特別為其編寫程式 (說是這樣說,靠 Compiler 來做一定程度的最佳化還是有的,只是不用像寫 Multi-Thread 程式那樣)
[不負責發言結束]----------------------------------

有錯的話也請大家不吝指導。
舊 2005-07-16, 08:28 AM #210
回應時引用此文章
qwerty離線中