absmiddle 首卷


AlbertB.bbs@bbs.cis.nctu (匪諜藏鏡人): 書名: 80386, 80486, Pentium 系統剖析 出版:松崗書局 出版日期:1994 年四月 初版 1994 年七月 出版二刷 作者:洪逸祥 (魁 工作室成員) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 本書第一頁「序」第一句 1936 年, 美國 IBM 公司發明了世界第一部電腦, 當時的電腦由真空管做成, 所以體 積龐大, 並且僅能做簡單的運算, 剛開始並沒有軟體程式的概念...(以下省略) { 需不需要我介紹 ENIAC? 需不需要我說明 von Neumann, Eckert 和 Mauchly 是何許 人物? 需不需要我提醒你 IBM 在 1950 年之前從來沒有插手電腦業? 需不需要我告訴 你這些淺得不能再淺的基礎知識是從一本眳p出版的計算機結構的入門教材的第一章 裡面附錄節錄下來的? (只有對電腦發展史完全陌生的門外漢, 才有能耐寫出這種序言) } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= P.1-13 ┌───────────────────────────┐ │ 註:這是個 GJI(Graphic Joke Interface)笑話,請看看作者 │ │ 自創的 RISC 與 CISC 架構圖(圖 1-5、1-6) │ └───────────────────────────┘ <Page 1-13> 的疑問 您說圖 1-5、1-6 是本人自創, 您太抬舉本人了,本人從事微處理機設計十餘年,目 前功力只停留在 32 位元微處理機的設計,尚未有自創能力。 任何硬體書籍均有,請 您好好研讀硬體線路書籍,以模組化分析,您將會發覺原來「洪逸祥」真是沒有創造 RISC 和 CISC 的能力。其實許多英、德文書皆有此觀念的。PC Hardware Book Hans-Peter Messmen,Addison-Wesley 發行,Page 263 { 為了不讓你賴帳, 我把圖畫出來: 圖 1-5 CISC 微處理機 ┌─┐算術運算補助器 ┌───┐ ┌────┐ │ │ ↑ │微 碼│ │控制單元│ │匯├────┘ │記憶體│ │ │ │流│ └───┘ ┌→│計算器 │ │排│ ↓ │ │ │ │界│ ┌───┐ ┌────┐ ┌───┐│ │暫存器 │ │面│ │預 取│ │解碼單元│ │微 碼││ │ │ │ ├→│等待列├→ │ ├→│ ├┴→│執行單元│ └─┘ └───┘ └────┘ └───┘ └────┘ 圖 1-6 RISC 微處理器架構 ┌─┐ 算術運算補助器 ┌────┐ │ │ ↑ ┌→ │控制單元│ │匯├─────┘ │ │ │ │流│ │ │計算器 │ │排│ │ │ │ │界│ ┌───┐ │ │暫存器 │ │面│ │預 取│ │ │ │ │ ├→│等待列├─────────────┴→ │執行單元│ └─┘ └───┘ └────┘ 洪先生, 我看不只是我太抬舉您, 您自己也太抬舉您自己了, 上面兩個圖是我照著您 書上的圖畫出來的, 您的圖至少犯了兩個大錯誤: 圖1-6「據說」是 RISC 的架構是吧? 哇塞! RISC 沒有解碼單元! 洪先生, 您的 RISC 也未免太「R」了點吧? 連解碼都不需要就直接執行? 您真的設計過微處理機? 這一點 兩個圖通通錯! 算術副處理器不會直接接在匯流排界面上, 至少 CPU 的控制單元和解 碼單元都必須和 NPU 有連接, NPU 的指令集也是 CPU 指令集的一部份, 至少需要解 碼單元解碼完才能送到 NPU, 親愛的洪先生, 您還真以為我們在用平行處理器呀? 至於圖本身的幼稚和不切實際, 我想就不用多說了, 這樣子的圖如果就能讓初學者了 解 RISC 和 CISC 的分別的話, Hennessy 和 Patterson 就不用混了, 既然畫都畫不 對, 又沒有什麼效果, 這種拿來湊篇幅的抽象畫我看也不要登在書裡, 放到畫廊去展 覽比較適當, 至於名字, 我可以幫洪先生想一個:「笑話」... 哈哈哈... } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= P.1-14 §CISC架構的特色 (....) 以 RISC 精簡指令集原理做的微處理機, 它的解碼使用 Microprograming 的解碼方 式, 也就是說它在解碼過程中增加了一道位址的解碼手續, 如此可減少解碼所用的電 晶體數目, 也就減少了同一條電路的負荷, 防止超載, 擺脫負擔以增加速度。 ┌──────────────────────────────────┐ │劉注: 文字的藝術及其巧妙者, 由此可窺見一二。此段文句各句正確性 │ │ 本有 80%; 然省略太多, 且因文句間巧妙的連結, 使其有誤導之 │ │ 嫌。 │ └──────────────────────────────────┘ P.1-14,15 §RISC 架構的特色 (...) 前後指令緊緊相連, 且同時平行處理, 減少了兩個指令解碼過程時間的浪費... (...) 微處理機和程式編譯為一體。 (...) ┌──────────────────────────┐ │ 註:喔... 那麼說來 RISC 大概不需要 Compiler 囉...:) │ └──────────────────────────┘ <Page 1-14,15> 的疑問 微處理機和程式編譯為一體,並不是 RISC 不需要 Compiler,而是程式編譯不需要為 特定的 RISC 微處理機而發展。您未免說笑話,誤導讀者了吧! PC Hardware Book Hans-Peter Messmen,Addison-Wesley 發行,Page 262 起 { 說笑話? 沒錯! 我是在說笑話, 我的文章從頭到尾都是笑話, 洪先生, 難道你看不出 來? 至於「誤導讀者」這四字考語, 筆者我受之有愧, 原句奉還! 請洪先生您再看一 次自己那本書, 在「微處理機和程式編譯為一體」這句話底下可有任何解釋或說明? 再說您後來的解釋也是不倫不類,什麼叫做「程式編譯不需要為特定的 RISC 發展」? 需不需要我告訴你什麼叫「系統程式」? 編譯器本來就都是與 CPU 直接相關,新的 RISC 更是需要專用的 Compiler 以達到編譯最佳化, 誰說編譯不需要為特定的 RISC 發展? 還有一件事, 不知道你是忘了還是故意不提, 關於前面那段 RISC 用微程式解 碼以增加速度的妙文, 到現在都還沒有任何解釋, 你以為你不提, 我就會忘掉嗎? 上 面那段加框的評語是一位臺大電機研究所的朋友評的, 我是覺得太含蓄了點, 您覺得? } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= P.1-15 §阿爾發(Alpha)晶片 (....)特色如下: (...) 資料線 128 位元, 外部位址線為 34 條, 內部位址線為 64 條 ┌────────────────────────┐ │ 註:翻遍了書,我實在不知道位址線還有內外之分... │ └────────────────────────┘ <Page 1-15> 的疑問 微處理機內部的所有位址訊號線並不完全引出微處理機外。這也就是 80386SX 與 80386DX 不同之處,如果更確切的引述,您在家可能有 3 個字的名字(小名、乳名、 別名;內部使用),對外可能只用一個。Alles ueber 386er、486er、Pentium 書,德 國 Mark &Technik 發行 PC Hardware Book Hans-Peter Messmen,Addison-Wesley 發行,Page 133 起 { 我主要批評的重點在於「內部位址線」, CPU 內部如何計算位址有很多方法, 但是對 外記憶體存取的唯一條件只有硬體的位址線, 以您提的 80386SX, 和 68000 來說, 位 址計算是 32-bit(其實不完全對), 但是高於 16Mb 以上的通通不能用! 而 Alpha 的 「虛擬記憶體定址」才是 64-bit, 如果照你的定義, 386/486 的「內部位址線」不是 變成 46-bit? 怎麼你在書中就不提呢? (Alpha 的資料來自 Advanced Computer Architecture, 黃鎧 著, McGraw Hill, 1993), 同樣的, 在 P. 1-23, Motorolla 68000 一節中, 你也沒有說明它的「內部位址線」是 32 條, 就算是寫給初學者的書, 也應該力求用詞嚴謹正確, 敢問閣下, 您做到了嗎? 還有一點, 386SX 與 DX 還有一 個主要差別是外部資料線為 16-bit, 你也忘了提(其實你忘了提的東西太多了, 而且 都比書上所說的重要...) } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= P. 1-23 to 1-34 §Intel 80386 (這裡不是書中內容) •32 位元, CISC 結構。 │ •最高工作頻率為 40Mhz │ •32 位元暫存器 │ •有電源管理器 │ <= 某些版本才有 •可接 80387 算術運算補助器 │ •有 3V 版本 │ •6 個 16 位元 Segment(節段)暫存器 │ •132 I/O 接腳 │ <= 386DX 才是, SX 只有 100 隻腳 •32 位元資料線 │ <= 386DX 才是, SX 是 16 bit 資料線 •24 位元位址線 │ <= 386SX 才是, DX 是 32 bit 位址線 ┌───────────────────────────────┐ │我有 10 GB 硬碟, 64Mb RAM, 3Mb Cache, 2400Bps Modem, 單色卡, │ │17 吋彩色螢幕... 但是不是同一部電腦...:) │ └───────────────────────────────┘ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= (續) P.1-27 §Mips R4400 (...) 16 個 64 位元暫存器 ┌───────────────────────────────┐ │註:R4000/4400 有 32 個 64bit 暫存器, 作者打了對折, 可能是因為 │ │ Mips 公司做過什麼對不起他的事...:) │ └───────────────────────────────┘ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= P.2-9 2-2-1 80386DX <80386 解決了 80286 的難題> (...)它(386)可以像 80286 一樣由實際模式轉到保護模式, 也可以從保護模式回到實 際模式。解決了 80286 的難題,這是因為 80386 有一個記憶體管理單元(Memory Management Unit)簡稱 MMU, MMU 負責這種作業。 §80386 的三種不同工作模式 (...) 保護模式:此時 80386 就如同模擬 80286 一樣, 可以使用 24 條位址線. 它提供了可 以同時處理不同性質的工作, 如在寫一封信的同時也可以列印另一封信, 但是不能同 時寫兩封信, 或是同時印兩封信。 <Page 2-9> 的疑問 Alles ueber 386er、486er、Pentium 書,德國 Mark & Technik 發行。PC Hardware Book Hans-Peter Messmen,Addison-Wesley 發行,Page 133 起 { 引德文書給我? 要不要我用巴利文回給你? Intel CPU 的問題 ,當然是以 Intel 本身 出版的文件最為正確, 不引用正確的例證, 卻拿些不知道對不對的德文書來搪塞, 欺 負我們不懂德文? 還是想把自己的無知推到德國人身上頂罪? 從保護模式轉換到真實模式, 是 CPU 整體結構上的運作, 絕對不是單一記憶體管理單 元的工作, 而且 80286 並非真的不能回到真實模式, 用 Triple Fault 這個技巧一樣 可以讓它不用 Reset 就回到真實模式, 難不成你也要說, Triple Fault 以後 286 就 會生出一個 MMU 嗎? 當然了, 286 本來就有 MMU, 你所寫的在邏輯上還是有錯。 至於保護模式的工作模式描述, 我個人建議您: 不用再去看什麼德文的詭異書籍了, 去找一本初級的作業系統教科書, 包你收穫會多得多, 也不會再寫出什麼「寫兩封信, 印一封信」這種讓人啼笑皆非的解釋。 } =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= P.2-16 §80487是一顆算術運算補助器嗎? 80487 是一顆算術運算補助器嗎? 不是的, 事實上, 80486 線路中仍有算術運算補助 器的線路, 只是 80486 將此部份的線路截掉, 利用 80487 將此被截掉的線路補回, 以達到算術運算補助器重新啟動的效果。 { 洪先生, 您知道嗎? 有人做過實驗, 將 487SX 單獨插在 Overdrive 的腳座上, 居然 可以像 486DX 一樣執行耶? 請問你 487SX 補回了什麼線路? }
上一層目錄