星期三, 6月 08, 2005

令人震驚的消息

昨晚看完了 Apple WWDC 2005 的 Keynote, 因為 IBM 一直沒辦法搞定 PowerPC 的散熱和效能問題, 蘋果決定投向 Intel 陣營了, 我的媽啊, 這真是幾年來最讓人震撼的 Keynote 了, 當 Steve Jobs 說出了, "and yes, it's true!" 全場都笑翻了

Macintosh 改用 x86, 我想對 user 而言基本上是有利的, 最明顯的想必是新機售價應該可以進一步下降, 不過對我來說, 有另外一點想法

對一個 end user 或是 application programmer, 底層的硬體是怎麼回事基本上是無關緊要, 不過對 kernel developer (還有 compiler developer) 來說就不一樣了, 因為他們必須面對最底層的 ISA

x86 是個為了和古代相容, 疊床架屋, 醜到不行的 architecture, trace 過或是寫過 bootstrap 的人就知道 x86 有多麼的髒, 首先開機的時候是 16-bits real mode, BIOS 做完事情之後, 你必須有一沱 code (16-bits binary) 負責把 cpu 切進 32-bits protected mode, 接下來你才能照一般的流程 - 設定 page table, 打開 MMU - 寫你的 kernel (32-bits binary), 兩種 mode 的 address space 根本不一樣, compile 的方法也不同, 你不時還要處理一下古代的遺骸 (好比 A20 那種鳥東西), 這對 kernel developer 根本就是個惡夢 (另一個惡夢是 x86 GNU assembly 恐怖的語法 - 如果你要用 gas 的話)

好消息是現在有了 Multiboot 這種東西, GRUB 可以幫你做掉那些骯髒的事, 讓你的 kernel 打從一開始就是在 32-bits 執行

看起來 kernel developer 得救了, 不過 bootloader 和 BIOS 的 developer 還是一樣水深火熱, 對我來說, 真希望 x86 趕快消失在地球上

Intel 想必也這麼希望, 不過短期內看來 IA64 沒辦法幹掉 x86, AMD 覺得 x86 不死, 所以搞了個 x86-64, ISA 看起來漂亮多了, 不過終究還是疊床架屋 (這下子 bootstrap 又要多一段從 32-bits 切進 64-bits 的 code 了), 現在又多了個蘋果, x86 簡直所向無敵, 救命啊!!!

不過至少蘋果應該不太可能使用 BIOS 這種老舊的架構 (只是我的一廂情願, 不過他們好像也不打算把 Open Firmware 弄到 x86 上), 搞不好 x86 Mac 的 firmware 一開始就跳進 protected mode?

歐對了, 以後 PowerMac 大概得改名字了吧... iMac? XD
張貼留言