星期六, 8月 23, 2008

[2006年二月的舊文]冷飯熱炒:半導體巨人的獨特思維模式Ver 2.0

不知道Intel殺聲震天的Larrabee還是不是繼續死性不改喔...(酒)倒是過去的文筆和現在差很多是真的(汗),回過頭來都有點看不下去(泣)。

處理器路邊社Processor Watch
冷飯熱炒:半導體巨人的獨特思維模式Ver 2.0
這篇文章,原本發表在iThome 128期「2004年春季IDF特別報導」,作為長達12頁封面故事的最後結尾。事隔近兩年,以及四屆IDF的現場心得,筆者決定將該文修正至2.0版,作為本期的內容。希望可以在技術與產品規格之外,讓讀者在過年時可以看到「很不一樣」的東西。

自1971年創造全球首顆微處理器4004、在1978年8086被選為IBM PC的處理器而踏上半導體大廠之路,至今Intel已經穩坐全球半導體產業的龍頭,在IT產業有著無與倫比的影響力。就以半導體產業而言,Intel甚至早已遠邁藍色巨人,無人可及。

但在Intel的歷史上,充滿了諸多備受產業界及學術界爭議的架構及產品設計,除了已經在教科書上遺臭萬年的x86/x87指令集、命徒多舛的i432、「Cray on a chip」的i860、和i432貌同實異的i960、市場尚未成熟就已進入「指令集設計錯誤示範觀察名單」的IA-64等等,不少微處理機的微架構更成為眾矢之的,在當時承受了排山倒海般的批判。這些被視為「毫無道理可循(doesn't make a lot of sense)」的決策,究竟是基於何種特殊的想法?為何這家公司還能這麼成功?我們現在就從Intel的歷史,來幫助讀者了解Intel的思維模式,這也有助於理解這家公司的獨到之處。

極度著重成本與效益

熟悉半導體及微處理器業界的人,應該都會記得Intel歷史上一個極為重要的里程碑:從1996年的Pentium MMX(P55C)及1997年的Pentium II(Klamath)開始,Intel放棄從Pentium開始已經投入數年的BiCMOS製程,轉回傳統的CMOS。當初Intel之所以會導入BiCMOS,主因在於希望可以達成最好的時脈速率,但是基於降低耗電及晶粒面積的考量,後來放棄了,再也沒有回頭。外界普遍將其視為Intel策略上的重大轉折,從此走上高度追求成本效益的路線。換言之,如其採用昂貴的特殊製程技術,不如竭盡所能的進行製程的縮小化。

另一個例子,則是數年前以IBM為首的眾多處理器廠商,競相投入銅導線製程,Intel卻依然堅守鋁導線,所以創造了「沒有銅的銅礦」(Pentium III 180nm製程核心的代號為「Coppermine」)。當時Intel認為,銅導線製程尚未成熟,鋁導線依然有相當大的應用潛力。後來,Intel是直到130nm製程的Northwood才導入銅導線,遠落後於其它廠商。但是,Intel並沒有因此吃虧,依然維持對競爭對手處理器產品效能及時脈上的優勢。目前Intel對SOI晶圓的保守態度,就是一個很好的佐證,Intel已經在去年春季IDF公開表示,他們並不打算採用PD-SOI,等到FD-SOI才會「再考慮看看」。當然,SOI相關專利長期由IBM所掌握,也是主因之一。

Intel著重成本及效益、希望可以將同樣的資源做到最大限度利用的態度,也充分反映在處理器微架構的設計上,相較於競爭對手,Intel的處理器微架構都有著遠較為長的市場壽命,也較能配合未來的製程發展趨勢。

就以Intel的x86處理器經典微架構P6來說,從1996年的Pentium Pro開始,直到目前的Pentium M、Yonah與Merom,已經十年了,而競爭對手AMD陸續推出K5/K6/K7/K8、Cyrix出現M1/M2以及難產的M3,但是都無法動搖IntelP6微架構在市場上的主導地位。P6的諸多優秀設計以及幾近完美的取捨,推出至今已經超過10倍的時脈成長,應用範圍從伺服器一路延伸至筆記型電腦,都足以證明其遠見和前瞻。稱P6是Intel甚至x86最成功的處理器微架構,實當之無愧。

無論是P6以及NetBurst,均遭受「因過度追求時脈而忽略IPC」的批判。其實,Intel的想法並不難理解,因為x86指令集本身所能達成的指令平行化執行能力極為有限,發展類似RISC處理器的大型化複數執行單元,並不划算,因為執行單元利用率並不高,這從Intel的x86處理器均無專屬的位址計算單元(AGU)就可略見一二。NetBurst所導入的超執行緒(Hyper-Threading)更是明顯的證明,希望將現有處理器的運算資源發揮到最高的程度。這種觀念,一直主導著Intel所有的產品設計。近期Intel放棄NetBurst、轉向以追求「效能/功耗比」的Merom微架構,也不脫離追求經濟效益的思考模式。

以「製造」做為思考的出發點

但相較於睿智的微架構設計及製程技術研發,Intel在指令集的架構上,卻是淪落到過街老鼠、北港香爐差可比擬的窘境。x86/x87指令集是如何的飽受批評,這已經不必浪費篇幅來描述了,大概情況只比Digital VAX好一點點,但是,現在連全新設計的IA-64也遭遇到類似的處境。

照例說,指令集架構應該基於長遠的考量。換言之,指令集架構是「戰略」,處理器產品實作是「作戰」,而生產就是「戰術」。但是,Intel所發展出來的指令集可以說一個比一個詭異,到底問題出在哪裡?答案很簡單,因為Intel是以「利於製造」做為思考的出發點。套句普魯士名將老毛奇的名言:「只要戰術成功,戰略可以讓步」。這也許就是Intel設計指令集的信念。

我們先檢討Intel在x86處理器的新增指令方式,往往很多「按照常理」而言應該提供的指令,Intel不是不提供、就是拖很久才提供。例如在SSE不提供乘積和(FMA),在SSE3才提供浮點整數資料型別轉換指令(fisttp),外加在2004年春季IDF發表NX防止緩衝區溢出攻擊保護機制、初期的Prescott核心卻沒有提供分頁表NX位元等,均飽受抨擊。除此之外,Intel習慣針對單一的硬體微架構提供特殊的指令,但是轉換到另一個微架構,這些指令就沒有用處了,直接受害者就是其它廠商的x86相容處理器。

相較於x86的疊床架屋,毫無包袱的IA-64更是到了讓人匪夷所思的程度。首先,IA-64的整數乘法指令,並不能直接使用通用暫存器,而是必須先把值傳遞至浮點暫存器才能執行。另外,IA-64的浮點除法指令,是透過乘積和指令進行倒數運算,為了維持精確度,才將浮點暫存器寬度加長至82位元。最後,IA-64沒有sign-extended載入指令、從記憶體載入32位元值至64位元暫存器時就必須浪費不少時間。更讓人感到納悶的是,IA-64並沒有基底偏移([base + disp])定址模式,這和傳統的載入儲存架構相比,就會增加有效位址就必須事先計算的麻煩。

根據IBM的研究,IA-64指令集的程式碼體積竟然高達x86的「4.8倍」,所以讀者就不難理解,為何Intel會特別重視Itanium的快取記憶體容量,屢次在歷代Itanium打造快取容量的世界紀錄。

很明顯的,這些都是屈就實作及生產限制所作出的讓步,上述的例子僅為冰山的一角。種種因素的累積,導致IA-64並不是一個簡潔的指令集架構,而且非常消耗記憶體空間,這些限制,日後一定......不,已經造成了Intel的大麻煩。當然,Intel也許認為這些都可以倚賴製程來彌補,因為它們就是摩爾定律的創造者兼忠實信徒,雖然Itanium產品一直延期,也不是什麼新聞了。

目前還有一種普遍的看法:Intel刻意讓指令集變得更複雜、更難實作,以提高其它廠商製作相容產品的技術門檻。當然,這是絕對沒有確切證據可以證實的。不過,從x87浮點指令集的創造者William Kahan事後的看法,似乎認為這種觀點所言不虛。唯一可以確定的是,「理論上」,Intel自己一定可以順利的推出新產品,其它廠商可就不一定了。

特殊思維逐漸延伸至市場策略

半導體產業一直有一個說法:其它的廠商都是先決定功能再研發製程,而Intel則是在既有的製程上選擇可提供最大獲利的功能設計。基於這樣的思維,Intel理所當然的退出獨立顯示晶片市場,因為那是晶圓單位獲利最低的產品。反過來說,也因此,Intel全力投入整合型晶片組,也是一樣的想法,因為晶片組的晶粒面積都不大,增加繪圖功能反而可以大幅提升產品的價值。

因為Intel一以貫之的追求最大的效益,不在產品功能性上斤斤計較,這種做法,也往往避免了理想過高、導致產品實作不順及良率過低的問題,更可以免除最後被迫犧牲既定的功能、東縮西減的窘境。在商業化的市場上,是否可以穩定的推出新產品、新設計,持續的驗證、累積新技術的基礎,往往遠比強大的產品功能更加的重要。

雖然「奇謀而短」,卻仍是最成功的半導體廠商

Intel獨特的思維模式使其毀譽參半。肯定的人,認為這是非常成功的商業模式,造就全球最大的半導體霸權;否定的人,則認為Intel非常的市儈、缺乏格調,難登大雅之堂。

不過,在商業市場上均以成敗論英雄,Intel也是持之以恆的維持世界頂尖的製程技術及產能,在製程技術發展上選擇極為獨特的路線,才能有今天的成就,這些都是不能否認的。如此的思維,卻又能如此的成功,一再擊出「逆向思考全壘打」,歷史上恐怕也找不出幾個例子吧?

4 則留言:

匿名 提到...

使用BiCMOS製程的應該只有Pentium 60/66(P5),從Pentium 75(P54C)以後就已經換回標準CMOS製程了。

Intel策略跟TOYOTA一樣,汽車設計部門設計一款車後,製造部分若反應那一部分比較難生產,且即便客福也不能在銷售上帶來效益,則設計部門必須修改,等於是在設計好生產的車而已,所以日本車初期各款車型都差異不大,原因在此。

不過您太把Intel霸業看成是技術成功,其實小弟的觀點是他的成功在於產銷上的抵制,在市佔第一後,那個PC業者敢用非Intel CPU,Intel就刻意讓該廠缺CPU,這是連反托拉斯都沒輒。

台灣過去的小報都會死(明日報、勁報、大成報),就是中時、聯合、自由等跟配報商直接攤牌:要鋪這些小報,我就不配我們的報紙給您,最後小報都陣亡,只有蘋果硬撞才成功。

Intel打死不用銅製程也是付出慘痛代價,一直無法破1GHz時脈,或破了後功耗超超超高,最後還是乖乖回頭用銅製程。

molesterwaterball 提到...

ㄟ,我是確定P54C到200MHz都還是BiCMOS,查一下資料就有了。

P5

3M, 0.80 µm, BiCMOS

P54C

4M, 0.50 µm, BiCMOS (up to 120 MHz)
4M, 0.35 µm, BiCMOS (up to 200 MHz)

P55C

4M, 0.28 µm, CMOS (up to 233 MHz)
4M, 0.25 µm, CMOS (up to 266 MHz)

P6

4M, 0.50 µm, BiCMOS (150 MHz)
4M, 0.35 µm, BiCMOS (166, 180, and 200 MHz)
4M, 0.50 µm for 256 KB L2 Cache
4M, 0.35 µm for 512 KB or 1 MB L2 Cache

P2

4M, 0.28 µm, CMOS (233..300 MHz Pentium II)
5M, 0.25 µm, CMOS (All Others)
?M, 0.18 µm, CMOS (400 MHz Mobile Celeron A)
?M, 0.18 µm, CMOS (400 MHz Mobile Pentium II PE)

匿名 提到...

呵呵!

看來您研究上可能有點給他草根,P54C一起頭是用0.6um CMOS,不是您留言中的0.5um BiCMOS。(我與第一則留言者是同一人)

匿名 提到...

附帶一提,超過133MHz以上叫P54CS,這時才縮成0.35um,然後時脈一路到200MHz,OverDrive方面叫P54CT,C字母應當就是指CMOS。

原本還有個P54,是將原有P5的0.8um BiCMOS轉成0.6um BiCMOS,不過Intel製程進步良好,P5之後就是P54C,沒有P54。