轉简體   復原    
2071 留言者:朱氏 [2002-08-14]
主題:Linux倉五
  今天將倉五碼表轉成tab檔
  
  為方便他人使用,已上傳至下列網址
  http://home.pchome.com.tw
/good/a227377665/cjbig5.zip
  
  先解壓縮
  使用xcin,覆蓋/usr/X11R6/lib
/X11/xcin/tab/big5/cj.tab
  使用Chinput,覆蓋/usr/lib
/Chinput/im/big5/cj.tab
  
  發這篇時才發現沒有標點符號,最慢明天會再更新一次
回應﹕
  待您更新後,我們將下載放至本站之<倉頡輸入法專區﹥,並感謝您的協助。
2073 留言者:朱氏 [2002-08-14]
主題:Linux倉五
  更新完畢
  因有些功能(如zz鍵)不能在xcin上實現,只能刪掉。另加入櫻花(鍵入時前面加z)
  壓縮檔附有完整源碼表,方便個人增修,詳細輸入碼可見 cj.cin 源碼表
回應﹕
  多謝。
2077 留言者:朱氏 [2002-08-15]
主題:更新
  今天加入了中文命令列程式jmcce的倉五輸入法
  將cangjie.tui覆蓋/usr/share/jmcce/inputref/cangjie.tui即可
  
  順便修正xcin的jj輸出碼的錯誤,一樣附有可以直接轉檔的源碼表
  
  同樣的下載點,兩個輸入法和源碼表已包在一起
回應﹕
  穆。
2114 留言者:朱氏 [2002-08-26]
主題:
  「生命電腦」是為了什麼出現﹖
回應﹕
  自然。
2140 留言者:朱氏 [2002-09-05]
主題:Mozilla 登入論壇問題
  無法登入,我想餅乾的處理有問題
回應﹕
  (沈答)六、七日因漢文化聯盟資料庫研討會在澳門舉行,全體員工需到會場幫忙,無時間修改,請稍候兩日,不便之處,敬請原諒!
(網管補答)已使用Mozilla測試過,登錄後,論壇雖不能正常顯示在線情況.但會彈出已登錄消息.并不會影響發貼,回貼.
2415 留言者:朱氏 [2002-11-18]
主題:倉頡之友–台灣
  晚輩有意擔下倉頡之友–台灣網站,請問首月及往後每月有多少經費支持
  晚輩並非為了錢,只要不至影響生活即可,若朱先生有此意願
回應﹕
  謝謝。
  目前無再設立倉頡之友的計劃。
2970 留言者:朱氏 [2003-04-27]
主題:結識先生網站一年矣
  關於「一種訊號輸入方法與感測裝置」
(不知為何,專利書上的說明甚難懂,看的有些莫明)
那隻手(圖六)分別標上12331作為鍵碼
由0到9分別定義十組由五碼排列的手鍵
輸入時將手左搖右點,搖晃五下就輸入了一個組
但不解的是僅十組,共三個變化級數,那用三指不就夠表達十組了?
將無名、小指收起,姆、食、中指挺直時,表預備輸入
而同時用五指時,並不好隨意屈伸,三指反而快速易屈
不知晚輩有沒有理解錯誤?
這個輸入方法想必是為應用於手機輸入法而設
也表明了手機輸入法僅能使用至多十鍵了,這點應該沒錯了吧?

又關於「一種語音辨識方法及系統」
這就明瞭多了,自己看了看,一時手養也玩起波形遊戲
自己錄起音來並且觀察波形,大致與該說明相同
只是有個問題想請教先生,發「??」音時
波形會往下沉(–dB),但不會往上飄(+dB)
試問,下沉(–dB)與上飄(+dB)差別在那?

又關於Linux系統,雖然朱先生不再為PC設計產品,但還是提一下所見
晚輩認為在PC平台上設計一個系統,一時間,是不可能為絕大多數人所接受
但將之設計在光碟上,使用PC的光碟開機功能,完備光碟系統上的應用程式
使用時僅需將光碟放進光碟機並開機,著重於實用而強勁的功能,這樣速度就不是問題了
如此,不但具有機動性,對於普遍人而言也更易於廣為接受與學習
系統設計上是開機時自動搜尋與設定硬體,為充分應用空間,還可以將系統作壓縮
國外就有KNOPPIX這個先例,國內CLE團隊將其做中文化,以下網址提拱先生參考
(ftp://cle.linux.org.tw/pub2/KNOPPIX)

最後晚輩以前雖曾在先生網上自信說「誓不成家」此類的話
但近來事實,顯然並非如晚輩所言,雖有部份長輩支持,對方也甚有好感
但其有違普遍社會風氣,只是晚輩尚自信知道自己在做什麼,也自信自己並非膚淺看人
不知朱先生以為如何?
回應﹕
  專利資料是供專家看的,專家看問題講究專,有其專用術語。凡人一切要凡,凡是便是一切,結果一個問題有無限答案,扯不完也。
  專利長城是一道「防線」,依山傍谷而建,其中有虛有實,有關有隘。有重兵雲集堅拒之要點,也有誘敵深入之陷阱,是進可攻退可守也!既屬「專利」,已非「知識」,請勿多問,否則把自己立場公開了,豈不準備挨打?
  系統規範自有妙策,請不必擔心。老朽與CLE團隊素有默契,時機成熟,自當借重。
  成家與否,乃各人「私事」也,本網無意置喙。
3441 留言者:朱氏 [2003-10-21]
主題:你好!敝人推薦以 ogg 替代 mp3 格式。
  敝人已測試過,mp3 格式若要有好的音質,至少需 64 kbps 44 kHz,再低效果就不行了。ogg 48 kbps 44kHz 即可比美 mp3 128 kbps 44 kHz。爭取空間則可犧牲取樣率為 32 kHz,即可用 ogg 40 kbps 編碼;最低是取 22 kHz 32 kbps,音質皆在接受度之內。講課內容以末者為佳,ogg 編碼時會自動降低空白(或微聲)內容之位元流。如此可省下即大空間,又不失音質。

  編碼可用 CDex 1.51 (http://cdexos.sourceforge.net)
  解碼可用 Winamp 2.95 (http://www.winamp.com) 。皆為免費輕巧程式。

  另希望能將過去錄音轉為 ogg (mp3 檔案太大了,很多都還沒下載)。

ogg 100 kb 測試:

  以 80 kbps 以上編碼,近乎於 mp3,不實用。

  以 64 kbps 編碼(平均 63 kbps),44 kHz,13秒(相當於 mp3 128 kbps 44kHz,優勢較小)
   重點聲音絲毫不差,mp3 80 kbps 以下難以和 ogg 相提並論。
  以 48 kbps 編碼(平均 42 kbps),44 kHz,19秒
   佳,在聽覺上,不易與原音分出差別。
  以 48 kbps 編碼(平均 36 kbps),44 kHz,22秒
   較低音和較高音表現較弱。
  以 40 kbps 編碼(平均 33 kbps),32 kHz,24秒
   稍降低取樣率,音質輕微受損。但表現仍不錯。
  以 32 kbps 編碼(平均 32 kbps),22 kHz,25秒
   取樣率過低,音質上較劣。但空間大幅爭取,且聽覺仍可接受。
  以 32 kbps 編碼(平均 29 kbps),22 kHz,28秒
   有四秒空白,此處自動降低位元流,壓縮比大增。

以上提供參考。
回應﹕
  (網管代答)
  謝謝閣下的用心,當初選擇MP3作為錄音格式,主要的原因是該格式相當普及,隨身聽也可直接播放,而OGG格式目前僅能以電腦播放,考慮讓網友們下載錄音後即可收聽,而不必花費時間在格式的轉換上而言,MP3仍為目前的解決方案,若造成網友的困擾,在此先行致歉。
3461 留言者:朱氏 [2003-10-28]
主題:正義
  查「邏輯」一詞,解釋為:

   1. 邏輯;邏輯學
   2. 推理(法)
   3. 道理;理由
   4. 必然的聯繫(或結果)
   5.已學術化

  簡言之即是「需有前提,結論始成」。亦即不可跳脫,否則沒有邏輯。利用環環相扣的方式,進行推衍,有一貫而行之勢。中文直接取音為「邏輯」;漢字則當譯為「條理」。

  漢字基因字典之解:

【理】字首〔玉〕:美石。字身〔里〕:長度。
   玉脈密實,有紋路規律,以之衡量事物,供認知。

【條】字首〔木〕:樹木。字身〔攸〕:順行而深。
   自樹木長出之枝,長也;脈理也;可羅列者。
      條理:脈理。
需有根幹,方有枝梢。通。

【脈】字首〔肉〕:肉體。字身〔派〕:水的支流。
   身體內的支流,血液流通的結構。
      脈理:血流的道理。
需有主動脈及新血源,方有微血管及舊血源。含分支、循環之義。通。

  林諾斯先生所寫之林諾斯核心,大量使用 go to 語法。此語法遭眾人一致炮轟為應當從 C  標準中除去。理由是「因為它沒有邏輯」。林諾斯先生之林諾斯核心之所以勝餘子,究其因竟是「沒有邏輯」!

  新詞可先網羅俗成之義,將其轉為漢字基因,重組為漢字。舊詞若有需要則需正義。
  因目前中文已步入日文後塵,為組合概念與清單條詞的混合體。若依此法則今之「中文」將面臨大改革。

   美語之Culture,中文譯為「文化」,漢字當譯為「風俗習慣」。
   中文之「舞蹈文化」,漢字當譯為「舞蹈風俗」。
   漢字之「舞蹈文化」,相當於中文之「展姿韻律與文字化育」。

  另外,一直以來台灣當地新聞時有報導關於「體磁吸功」之事。初聞此類新聞約小學初年級。當時認為是「身體有靜電」;學者奕認為「身體有靜電」。
  多年後,又見此類新聞,且一發不可收拾。此時晚輩已否定「身體有靜電」之說,轉而解釋為「身體斜面和摩擦力」。不料此次學者謬論百出,竟有自稱某科大教師,連「氣功生磁場」都提出來了!
  到也無意言此類學者之智,僅晚輩幼時之慧。好在最後有某校教師提出為「大氣壓力之故」,教授學生善用「摩擦力」以表演神功。面子總算扳回一成,笑話總算告一段落。
  不過再想想,「問題」可能並未解決。假如到路上隨手拉人一問,答:「大氣壓力之故。」,……。
  老祖先果真妙,「告一段落」,原來還隱含著「另起新章」。
回應﹕
  值此西化餘世,夕陽無限好,祇是近黃昏矣。中華大興,時在十年後。有謂:春耕夏織冬收秋藏。目前識者當多努力,至時經綸滿腹,正宜將漢精髓,發揚光大也!
  閑話箋箋,未若大德潛潛;百載雪恥,當看來日,願與眾網友共勉。
3530 留言者:朱氏 [2003-11-21]
主題:發表式發問
  看到「前篇–設想五」,就可以直接跳到「後篇–第二部分」,中間太雜,方向也有問題。
此文主要是用於了解MISC。

此文略解

一、序言:
常人以為奈米電腦可以原地增強PC性能,其實龐大的尋址,反而會成為另一個難題。
應當從根本問題下手解決,X86勢將淘汰,換上新體系。

二、前篇–設想一~設想五:
MISC概觀。

三、設想六、七:
有點問題,目前的高階程式語言皆有先天缺失。
跟本之道是系統基底設計採用組合語言,平常可用自然語言。

四、設想八:
RAM–CPU不就是模擬器?沒效率。

四.五、設想九:
見一。

五、後篇–第一部分:
現況。

六、第二部分:
馮諾曼一觀。JAVA思想。

=======================================
廣東 梁智榮

近來,越來越多的媒體上都可以見到有關半導體CPU的集成度及其運行速度達到制造極限的報導。乍看之下,似乎半導體CPU大限已到。各位預言家紛紛作出諸如光導體、生物、量子等許多未來幾十年後的先進技術。但又有誰曾經想過在這些未來技術來到我們身邊之前,我們又使用什麼樣的CPU呢?本文所作的設想是現今技術完全有可能做到的,而且這些設想可有效地提高CPU的效率及能力,大大地延長半導體CPU的生存時間。另一方面我也斗膽指出現今系統結構上的一些隱憂,並提出一些設想去解決以上的問題。雖然這些設想有太多的缺陷,不符合現實應用要求,而提出這樣的設想,並不是要預言計算機技術將來的發展方向,而只是希望能給大家一個啟發,為大家提供一個新思路。我將本文分為前篇和後篇,前篇主要講述有關CPU的一些技術,而後篇則把思路擴展到整個系統。下面,就讓我帶大家一起到未來去看看。

前篇

設想一:改變指令集結構和MISC指令集結構
現行CPU的指令集結構基本上有兩種:一、RISC精簡指令集結構,二、CISC繁復指令集結構。眾所周知,RISC比CISC高效,一般來說,前者比後者的效率高三至四倍。這一切都是基於兩種指令集結構的本質特點而決定的。實際上一個200 MHz的RISC CPU的能力可與一個600 MHz的CISC CPU相比。按這個約算,一個1000 MHz的RISC CPU相當於一個3000 MHz的CISC CPU。而如果有比RISC更高效的指令集結構的話,將會令CPU更強,而要設計一個新的指令集涉及面廣、異常復雜,而且設計耗時甚巨,不但會令CPU指令體系完全變化,甚至會令以往的軟件完全不能兼容,但一個新的指令集結構將會無可避免地來到大家面前。未來的指令集結構是怎樣的大概現在還沒幾個人知道,我也只是嘗試設想一種以RISC和CISC為基礎並兼容二者,以二者的優點為特點的新結構,可以說它是所有改進CPU工作能力的方法中最根本,最難處理的一種。我設想出這樣一種指令集結構,它兼有RISC及CISC體系的一部分優點,並能讓由RISC及CISC指令編譯的軟件不做或少做修改即可直接運行,而它的效率理論上應是RISC的n倍。n的定義下面會有詳細說明,我把這種設想中的指令集結構叫做MISC即可能的指令集結構。
這裡我只指出MISC的結構特點,由於它與RISC及CISC兼容,所以它是指令RISC及CISC的合集。現在設RISC的指令長度是8位(因為RISC指令是定長的),則MISC的指令長度為8n位,n為自然數,n的大小視 CPU的並行程度而定(並行問題參考第二個設想)若設CPU的並行程度限制n的上限為4,則MISC 指令集在這個CPU最長的指令長度為8×4=32位,並有四個指令長度:8×4=32、8×3=24、8×2=16 和8×1=8位。現在來看一看MISC運行RISC指令的情況:每個RISC指令長8位,當CPU 處於空閒狀態時,可同時接收並運行4條RISC指令。這樣,在理論上該CPU有同頻RISC CPU的四倍工作能力。而如果該CPU有更強的並行能力的話,它運行RISC指令時將會更強。 然而當CPU某部分忙而令CPU效能下降時,CPU可按情況同時接收三條、兩條甚至一條RISC指令,實現自動調節。可見當一個基於MISC指令集的CPU運行RISC指令編寫成的軟件時,最差的情況也是和同頻RISC CPU相同,而好的時候可能n倍於RISC CPU。而且,用MISC CPU 運行RISC指令時,可根據系統的狀況動態地調節CPU及系統的負荷,可令系統的全部資大限 度的加以使用,並且不易令系統崩潰。而且這個CPU還可以運行用CISC指令編寫成的軟件。 如果你一直喜歡Mac OS和Mac機上的軟件和游戲而又放不開PC體系的話,MISC指令集結構可是一個好的選擇。
好了,現在讓我們一起來看一下MISC CPU運行CISC 指令時的情況。由於CISC指令集的指令不是定長的,所以基於MISC指令集的CPU對於運行CISC指令而言很難確定CPU的並行程度,即很難確定n值的大小。但容易推出這樣一個結論:對於最大指令長度固定的情況下,在某一時刻,短的指令比長的指令具有更大的並行性。若設一MISC CPU 的最大指令長度為64位,進入CPU的最近4個指令都在16位以下,則CPU理論上可同時執行全部4個指令,而若進入CPU的最近3個指令中,第一個長10位,第二個長32位,第三長24位,則CPU只能先執行第一個及第二個指令,而第三個指令只能等前兩個中的一個退出CPU後才能執行。這是因為10 32 24>64的緣故。可見MISC CPU運行CISC指令時,理論上的運行能力並不是普通CISC CPU的整數倍,而是視MISC CPU的最大指令長度及當時所運行的軟件兩方面而定的,而即使是在最壞的情況下,MISC CPU的運行能力相當於同頻CISC CPU。但在一般情況下MISC CPU還是比CISC CPU高效很多,而且由於與運行RISC指令時的相同原因,MISC CPU同樣可有效利用系統資源防止系統崩潰。MISC CPU有可能同時運行用RISC指令和CISC指令來編寫的軟件,也就是你可以在Mac OS上運行Quake Ⅲ或在Windows中運行Mac OS 8.5的運行軟件。(當然還須軟件配合,但這已不是本文的討論范圍)甚至將來可能會有混合使用RISC及CISC指令的軟件來提高軟件效率了。從本質上來說,MISC CPU其實是並行的RISC、CISC結構,當中涉及到並行的問題,參考後面對於並行問題的闡述,會令你對MISC結構有更深刻的了解。

設想二:提高並行程度與虛通道技術
在這個設想中我要達到的目標是用一個CPU核心達到甚至超過兩個CPU並行工作時的效能。現在PC機上的單個CPU組成的系統並不具有真正的並行能力。雖然現在的CPU能在同一段時間內處理一個以上的進程,但必須注意的是,CPU是在同一段時間內而不是在同一點時間內處理多進程的。實質上CPU是以時分技術間隔或輪流地執行多個進程的某一部分而已。而真正的並行CPU在任一點時間內,均可執行任一個以上的進程。這樣,同樣的工作,當然是真正具有並行處理能力的CPU干得更好。因為真正具有並行處理能力的並行計算機太昂貴了,甚至於昂貴過工作站,所以真正的並行技術還是離我們太遠了。我設想出一個只需小幅增加CPU的復雜程度,即可達到並行效果的方法,那就是虛通道技術。實現方法是:在CPU前加設一個編譯器。由編譯器分析進入CPU的兩個進程的指令,看它們需要哪些硬件去執行,然後通知CPU,把包含這兩個進程各自所需的硬件電路連接成兩條虛通道,然後讓兩個進程在各自的通道內執行,當指令執行完後就拆掉虛通道。這樣,在同一個CPU內就可以真正實現並行工作了。如果編譯器對時間和進程控制得好,CPU配合得當,則CPU完全有可能在同一點時間內運行超過兩個指令。
其實這個設想是借鑒DDN數字專網的點到點協議而構想出來。它可以實現並行處理,但這樣的技術也有一些缺點:1.太依賴編譯器,因而對編譯器要求很高。2.一些常用硬件如乘法器等將成為瓶頸。3.通道的建立、維持和拆除要消耗一部分CPU資源。但從理論上講,應用虛通道技術實現並行處理是利大於弊的。

設想三:精簡通道與直通通道
首先讓我們來看一個簡單的例子:吃一個蘋果,是大口大口地把它吃掉痛快呢?還是一個人負責削皮,一個人負責切塊,一個人負責擺花式,另一個人負責吃的快呢?答案當然是前者。
而我們回頭看一下有關CPU的問題,其實現今的CPU在處理一個進程或處理一個指令時,由於種種原因,常常會作出一些無謂或不那麼必要的動作來。這種情況對於學過數字電路以及匯編的朋友都知道。顯然,減少了這些無謂或非必要的操作會讓CPU效率提高很多。而剛才在並行中提到的虛通道技術其實就是一種精簡通道技術的延伸:它在實現並行的同時,以理論上最少的操作去完成一個進程的任務,可保證它執行進程的時間是接近理論上的最短時間。以此想法加以延伸,就是我所設想的直通通道技術。直通通道技術是針對一些最常用的算法和指令、操作,在CPU中加入其對應的硬件電路。在執行該算法或操作時,直接送入對應的硬件電路去執行。
乍聽之下,直通通道技術好像與MMX、3D NOW!等技術很相似,其實它們之間還是有區別:MMX、3D NOW!等技術還需要指令去控制,需要CPU去干預;而直通通道技術只需知道要輸入的數據和要處理該數據的通道即可,它不需要指令告訴CPU怎麼去做,也不需要CPU對每個中間數據進行處理,它可以像黑盒子一樣,CPU在輸入端輸入數據,然後在輸出端等待結果輸出即可。這樣做的好處是:一、減少CPU工作量,提高 CPU效能;二、提高並行程度:顯而易見,當CPU把一整個含有多個指令的算法送入某個直通通道後,馬上可以處理別的工作,那不是可以在同一時間內做更多的事情了嗎?如果將來軟件專門針對直通通道技術進行優化,那將會使系統效率有質的提升。三、帶來模塊化的優勢。我們將在第五個設想中看一下模塊化的詳細內容。

設想四:分布嵌入式高速緩存,四兩撥千斤之道
第三個設想的直通通道技術直接提高了一部分最常用的算法和指令的效率,而在第四個設想中我們要解決的是另外那一部分工作時需要CPU去干預而不能應用直通通道技術的指令。(為了方便闡述,我暫且把這部分指令稱為多步指令。)
其實細心的朋友應該會看得出:能應用直通通道技術得算法和指令只占全部算法和指令的一小部分而已,更多的指令都是在操作執行過程中需要CPU的控制器去干預的指令。這些指令的共同特點是:一、整個操作由開始到完成需要兩步或兩步以上的工作才能完成,因此需要CPU的控制器進行控制。二、工作過程中用到兩個或兩個以上的數據,甚至可能產生一個或一個以上的中間結果,所以需要用Cache或寄存器去保存中間結果。因此我們可以通過改善Cache的性能來提高多步指令的執行效率。其實大家都知道高速緩存的作用,大家都會認為Cache的容量越大、速度越高、與CPU的通路越短越直接就越好。做在CPU內的Cache與CPU的通路最近,運行速度最快,所以它在系統中所發揮的作用是最大的。不過不可否認的是Cache是CPU的瓶頸之一,限制其性能的因素有四:一、數據命中率,這是影響Cache性能的重要因素,它與數據的有效率和Cache的容量有關。不過無論應用現行的技術,Cache的命中率都不可能恆為100%。二、尋址速度,顯然這與Cache的大小有關,可以證明無論用什麼機制管理Cache尋址都好,越小的地址數目,尋址速度越高。以線形尋址為例:1024個地址至少需要10位二進制數去標記,而4個地址一般只需要2位二進制數去標記,所以只有4個地址的Cache的尋址速度將會是有1024個地址的Cache的五倍。三、容錯機制,它包括廢數據處理、命中錯誤處理和競爭冒險處理等,一旦要執行容錯處理,Cache的性能會急劇下降。四、數據吞吐能力,Cache的數據吞吐能力已經很強,不過還是可以提高的,最後會講到這一方面的問題。
由上面的分析可以發現:如果能解決以上四個問題將可以令Cache的性能大為提高。根據以上的分析,我設想出了分布嵌入式高速緩存技術,它不但可以徹底解決以上四個問題,而且還帶來了許多意想不到的好處。首先,我先解釋一下兩種Cache的非正式定義:嵌入式高速緩存就是我們常說的做在CPU內的Cache。分布嵌入式高速緩存也是做在CPU內,不過它不像嵌入式高速緩存那樣集中做在一起,而是分開做在所有在執行操作過程中有可能產生中間結果的指令的硬件電路旁,並直接與該指令的硬件電路相連。也就是說兩種高速緩存的區別在於前者集中在一起,而後者則分散分布在各指令中,成為各指令專用的高速緩存。
我們已經知道了分布嵌入式高速緩存的定義,那麼我們一起對比一下兩種高速緩存的工作方式,從中就可以使我們了解分布嵌入式高速緩存的優點。以整數乘法為例,在現行計算機系統中通常是用累加來實現整數乘法的,因此操作過程中必然會產生中間結果,並需要頻繁存取Cache(如果不用寄存器的話)。如果使用嵌入式高速緩存,則由CPU的控制端把兩個初始數據送入加法器內進行運算,產生第一個中間結果。產生第一個中間結果後,CPU的控制端分析Cache是否有足夠的連續空間去存放該數據。如果有足夠連續空間的話,CPU的控制端把該數據送入Cache內,如果沒有足夠連續空間的話,就需要由CPU的控制端查找Cache中的數據,如果有廢數據的話,就把廢數據清除,然後判斷清除廢數據後的連續空間是否足夠大,如果夠大的話就把該數據送入Cache內,如果把所有廢數據清除後仍沒有足夠的連續空間的話,只好由CPU的控制端按競爭冒險法則連續選擇、拋棄有用數據直到連續空間足夠大,才把該數據放入Cache內。然後再由CPU的控制端取第二個數據,跟著再由CPU的控制端在Cahce內尋址,提取第一個中間結果送入加法器內,與第二個送來的數據一起進行運算並產生第二個中間結果,接著進行把中間結果送入Cache的處理。如此循環直至整個過程完成。可見即使保證Cache足夠大,大到足以令CPU的控制端不用去清理廢數據也好,整個過程仍需要CPU不停尋址,不停地在指令硬件電路與Cache間交換數據。而加法器的等待時間超過總時間的二分之一,不過這只是工作在最好的情況下的數據而已。現在大家可以從這個例子中看到嵌入式高速緩存對多步指令的影響是多麼大了吧?而且例子中還沒提到數據命中率的問題呢!其實通常執行這類指令時也有可能視軟件的要求用寄存器而不用高速緩存,不過寄存器也會有類似的問題,而且寄存器數量有限,大量使用寄存器會令寄存器成為瓶頸,所以大多數編程軟件都不支持使用大量寄存器。
同樣的工作,同樣用累加實現整數乘法,如果應用分布嵌入式高速緩存技術,工作步驟是:由CPU的控制端把兩個初始數據送入加法器,運算產生的第一個中間結果直接送入該指令硬件自帶的分布嵌入式高速緩存中,因為不用到嵌入式高速緩存中尋找空位,從而避免了許多復雜操作。然後再由CPU控制端取新數據與該分布嵌入式高速緩存內的中間結果直接運算,運算後的第二個中間結果直接覆蓋已經沒有用的第一個中間結果,如果前一個中間結果還有用的話也可以不覆蓋它而放入第二個地址中。如此循環,直至執行完整個操作。可見,越復雜的操作或操作中產生、運用中間結果越多的工作,應用分布嵌入式高速緩存技術所產生的效果越明顯。由於這個高速緩存做在本地指令硬件電路裡,所以其數據傳送通道遠遠比傳統的嵌入式高速緩存與指令硬件電路之間的數據傳送通道短和直接,其傳輸速度當然比嵌入式高速緩存快很多。而且這個高速緩存只為對應指令所用,所以大小可以做得很小,它的最大容量是該指令可能產生的所有中間結果的最大長度的總和。一般只在1至8個字節左右,地址個數在1至4個間,所以CPU的尋址速度很快,如果該指令僅包含一個地址空間的話,那麼完全可以不尋址。由於分布嵌入式高速緩存內的數據是指令在執行過程中產生的中間結果,因此只要指令還要用前面運算產生的中間結果的話,那麼分布嵌入式高速緩存中的數據一定是有效的數據,即分布嵌入式高速緩存的數據命中率恆為100%,也就是說分布嵌入式高速緩存徹底擺脫了命中率的制約,而且也因為分布嵌入式高速緩存的數據命中率恆為100%,所以也完全不用進行容錯處理了。而一旦當前指令執行完畢,就可以把高速緩存中的數據清除。也許會有朋友擔心分布嵌入式高速緩存太小了,不過不用擔心,因為分布嵌入式高速緩存只為對應的指令服務,只用來存放中間結果,而任何指令的中間結果都絕對不大,所以分布嵌入式高速緩存的大小完全足夠。由此可見分布嵌入式高速緩存的優勢:
一、恆定100%的數據命中率。
二、十數倍於nK大小的嵌入式高速緩存的尋址速度(n僅大於1即成立)。
三、遠遠高於嵌入式高速緩存的傳輸速度。
四、徹底避免數據容錯機制,包括廢數據處理、數據命中錯誤重讀和競爭冒險處理等。
五、大大提高了CPU的並行能力及數據吞吐能力:無論嵌入式高速緩存有多快,它在任一時刻只能讀寫一個數據,如果同時有多個指令要從高速緩存讀寫數據,則只能依次順序執行讀寫工作。而分布嵌入式高速緩存是只為對應指令服務,所以無論同一時間有多少個指令要求數據讀寫也好,它們中的那些要求讀寫中間結果的指令都不需等待,因此可以使CPU的並行能力及數據吞吐能力大為提高。
六、制造成本低:由於分布嵌入式高速緩存的大小很小,即使把所有分布嵌入式高速緩存加在一起,估計也只有0.5K至2K左右。(不過需要解釋的是其實乘法不一定要用連加來實現,而且加法運算電路也有自己的本地寄存器。我之所以要舉這麼一個歪曲了的例子是因為這個例子比較容易讓大家明白分布嵌入式高速緩存的優勢所在,起碼比以一個不知名的指令為例子來得容易和明顯。)
值得一提的是:嵌入式高速緩存和分布嵌入式高速緩存技術可以應用到顯示芯片上,不知道大家知不知道兩塊由BitBoys設計的顯示芯片Glaze 3D 1200和Glaze 3D 2400呢?光是 Glaze 3D 1200有1G/s的像素填充率和20M/s的三角形生成數,Glaze 2400有2.1G/s的像素填充率和超過45M/s的三角形生成數,而GeForce 256的像素填充率為480M/s和15M/s的三角形生成數,由此足見Blade 3D 1200的驚人力量。Blade 3D的第一個殺手鑭就是9MB的嵌入式顯存,其他的顯卡的顯存都是在芯片外的。如果進一步應用分布嵌入式高速緩存的話,對於像2D、3D處理的那種具有海量中間數據操作的工作是有幾何級數般的性能提升的。按可預見的方式計算,如果應用分布嵌入式高速緩存即使是Blade 3D 1200的像素填充率可以達2G/s和超過30M/s的三角形生成數。

設想五:模塊化與可選部件
其實學過高級語言編程的朋友,都知道模塊化的好處--把實現一個或多個功能的語句構造成一個模塊。以後自己或別人需要實現某一功能時,只需調用該模塊即可。即不用了解該模塊的結構及內容,又不必重寫模塊內的語句,又方便又強大,而在第五個設想中不單要借用編程語言模塊化的易用的特點,還要借用編程語言模塊化的另一個特點:獨立性。
讓我們擴展一下第三個設想中提到的直通通道技術的應用層面,我們不單可以把一些常用算法及操作制成硬件電路,甚至可以把這些硬件電路移到CPU外,以至於在極端的情況下,我們可以把CPU內絕大部分的組合邏輯單元和一部分時序邏輯單元移到CPU外。這就出現了一個情況:我們已經把CPU的控制與處理兩大主要功能分離開了!這就是模塊化的基礎了。由模塊化的基礎我們可以看出,既然運算單元可以獨立成模塊,那麼FPU、編譯器等不是也可以獨立成模塊嗎?這樣,模塊化技術設想便出現了:只要把實現一定功能或某一類操作的電路構造成一個模塊再集成在芯片中,在使用時把各模塊芯片拼集起來便可得到一個功能完備的CPU,甚至可能出現功能超完備的CPU。似乎應用模塊化技術反而為用戶在購買及使用時造成麻煩,然而當你知道模塊化技術的好處時,我相信你是一定不會怕麻煩的。好吧,現在我們一起來看一下它的好處。
模塊化技術不僅僅是把CPU拆成兩半而已,而且也帶來了許多好處:第一、它間接推動技術的發展:眾所周知,一個好的CPU對於絕大多數的芯片設計公司來說是可望不可及的東西。因為一個好的CPU在許多方面的要求都很高,要求芯片設計公司對技術樣樣精通,而事實上絕大多數芯片設計公司並非樣樣精通,而只是精通一兩項技術而已。這樣便在無形中造成了許多優秀技術的浪費。比如說A公司和B公司非常擅長設計FPU部分,但他們對CPU其他部分的設計卻一竅不通;而C公司和D公司雖然擅長設計CPU的各部分,但他們的FPU單元卻非常糟糕,那麼這四家公司出品的CPU將永遠不會在主流市場上流行。如果要讓他們的優秀技術發揮出來,在以前只有等待這四家公司之間進行互補合作了。不過在現實的商業世界中,這樣的合作不是一開始就談不攏就是在合作途中夭折,在歷史上真正的成功合作並不多見。如果應用模塊化技術,則四家公司只需按一定的標准協議出產各自的產品,再由用戶自己按需搭配。這樣的情況下,一方面市場競爭將更加激烈,將會有更多公司參與競爭,令用戶有更多的選擇空間;另一方面大量優秀技術可以得以應用,以技術本身去推動技術的發展,正是最好的方法。第二、系統的個性化及自由度大大提高:顧名思義,PC是個人的計算機,當然是有自我個性的計算機才是PC。現在你可以真正的根據你自己的需要去"組裝"屬於自己的CPU了。如果你經常玩3D游戲或經常作圖的話,可以多買一兩個FPU和Cache,而少買一些別的什麼東西了。顯而易見,這樣的情況下不但可以令系統的自由度大大提高,還可以保證用戶的投資在最需要的地方,而一些你不需要的東西則可以不買,從而可以實現個性化及提高系統自由度,並保護了用戶投資。當你需要升級CPU時,你不一定要把整個CPU換掉,只需要部分升級CPU就可以了。這顯然是對用戶利益的二次保護。
模塊化技術的缺點是由它的本質確定的:一、速度:這是它的致命傷,分開的部件需要用接口與主體連接,這樣會對速度產生限制。不過相信隨著接口技術的提高,速度將不再是它的致命傷。二、兼容性:由多個廠家提供的產品肯定會有兼容性問題,不過這方面的問題只有標准化進程才能解決。

設想六:優化編譯通道與分解編譯器
前面有關並行的問題已經提到過編譯器的作用了。其實早在Intel宣布IA-64時,編譯器已經被引入系統內並強調了好久。但作為一個CPU的前端,可能不會有太多人會留意它。其實編譯器除了要負責優化算法去提高CPU的效率外,如果是應用剛才所提到的虛通道技術的話,編譯器還要負責執行控制及分配進程的工作。所以,編譯器除了要足夠快以外還要足夠優化才行。理論上來說,只有對所有現在以及將來的軟件都能實現最優化和對現在及將來的所有CPU實現最優化,該編譯器才算是"夠優化"。可是無論如何,它也不可能對全部現行的軟硬件進行優化,而且隨著軟硬件技術的提高,它也無可避免地會出現滯後於軟件及CPU發展的情況。所以它的升級換代將會很快,這也會給用戶帶來巨大麻煩。
如果我們要一勞永逸地解決這個問題,需要把編譯器分開成兩部分來進行分析。即把一個編譯器分成前端和後端兩部分。由前端負責與軟件聯系,解決軟件帶給編譯器的麻煩,而後端則負責與CPU聯系,解決由CPU帶給編譯器的困擾。這樣做的好處是把軟硬件分開應付,一方面便於實現模塊化,另一方面又避免了牽一髮動全身。在這個設想中主要解決後端的問題,而其中有兩個主要問題需要解決:一、解決不同類型、不同牌子的CPU與編譯器的配合問題;二、解決編譯器的升級問題。其實有一個很簡單的方法可以一舉兩得,即由CPU生產廠商負責開發編譯器後端並整合入CPU中。這樣的好處很明顯,每個廠商都對自己設計的CPU有最深刻的了解,可以開發出對自己的CPU最優化的編譯器後端。但壞處是不利於編譯器的升級,從理論上說來技術是只有更好沒有最好,只要廠商願意,隨著技術的發展,廠商總可以開發出比原先更好的編譯器程序。而如果編譯器已經被整合在CPU中了的話就無法硬件升級了。而另一方面,當你升級CPU時,也無可避免地要把編譯器一起換掉,這樣可是不利於保護用戶的投資的做法。因此我認為應該取一個折中的方法:編譯程序由CPU廠商提供並不斷升級,在CPU外加設一個高速RAM晶片去存放編譯程序。這樣就可以像升級BIOS那樣升級編譯器的後端了,這不是一舉兩得嗎?由於它的缺點與編譯器前端一樣,所以我在緊接下來的第七個設想中說明。

設想七:可擴展性和RAM
利用模塊化實現CPU的可擴展,優點前面已經講過。在這個設想中要解決的是編譯器通道前端出現的問題。以以前的技術,要求編譯器前端對所有軟件實現最優化是不可能的,而要自己的編譯器永遠趕得上軟件的發展,只有像第六個設想那樣利用RAM晶片才行:每個軟件商針對自己的每個產品編寫出最優化的編譯程序,每當軟件運行時就把編譯程序寫入RAM 內。這個RAM便成為對這個軟件最優化的編譯器了。籍此令CPU最優化地為這個軟件工作。一旦運行第二個軟件時,只要把該軟件對應地編譯程序寫入RAM內即可。這時,你的CPU就是同時針對這兩個軟件進行優化的了。只要你的RAM足夠大,可以同時對多個軟件進行優化。而且當一個軟件退出運行而另一個軟件加載時,它們對應的編譯程序也可作出相應調動。所以只要你在同一時間不運行太多軟件,它的作用絕對是很明顯的。它的另一個好處是除了軟件商外,任何個人或組織也可以編寫編譯程序。試想如果哪一天你在網上看到一個聲稱可以把FireWorks的運行效率提高四倍的編譯程序時,你會不會把它當下來呢?
其實把編譯器分成前端和後端只是為了分析方便而已,在實際的應用中完全可以把它們當作一個完整的編譯器來處理而不需分開成前端和後端。
好了,RAM的好處你已經很清楚了,現在我們一起來分析一下它的弱點:一、速度:外置模塊速度當然會慢些,可是不外置的話,升級CPU的時候就會不可避免地要把它換掉了。二、兼容性:理由與第五個設想中的一樣。三、安全性:有可寫的部分就會有可能有病毒。不過這魚與熊掌如何取捨就在乎你的判斷了。

設想八:RAM與虛電路可變模塊
把RAM的應用場合由編譯器擴展至一個很極端的范圍:即RAM不但可作編譯器使用,更可作其他硬件使用。在講我的可變模塊的設想之前,先給大家講一點基礎的東西:每一個學過數字電路的朋友應該記得,無論多麼復雜的數字電路,其實都是由一些基本的門電路組合而成的。從理論上說,用基本的門電路可以實現任何數字電路。這就是可變模塊的基礎了。應用這個基礎,我設想出了可變模塊:我們設計一個RAM晶片,裡面用大量的基本門電路加以精心連接,再加上一個控制電路組成。這樣,這個RAM晶片不但可以用來存放數據,也可以用來模擬其他硬件的結構,使這個RAM晶片變成對應的硬件。這就是可變模塊技術了。我把這個RAM晶片直接稱作可變模塊。
這個可變模塊的工作原理是:當系統需要一個編譯器以補足原本的那個編譯器的不足時,(可以是容量上的不足,也可以是功能上的不足。)由軟件驅動可變模塊的控制電路,就像建立虛通道一樣,由控制電路建立門電路間的連接,從而令該晶片變成一個編譯器。而當系統的浮點能力不足時,也可由軟件驅動控制電路把整個或部分晶片變成FPU。依據同樣的原理,可變模塊也可以變成Cache或別的什麼硬件。
可變模塊最大的好處是為系統提供了真正的伸縮能力。舉個例子如果你即想玩3D游戲,又想玩平面的即時戰略時,你不必同時買一個FPU(以模塊化為前提)和一個整數運算器,只要一個可變模塊。當你玩3D游戲時,它可以變成一個FPU,當你玩即時戰略游戲時,它可以是一個整數運算器,甚至是一個Cache。而且這種伸縮能力是動態實現的,而不是像一些計算機廣告所說的那種需要不斷更換硬件才能達到的所謂的伸縮性。
既然可變模塊是模塊化技術的一個極端擴展,那麼它的缺點也是模塊化技術的典型:一、速度;二、兼容性;三、安全性。(By the way.其實讓整個CPU寫入RAM內,就可以做成將RAM - CPU。它可以實現許多玩家的夙願:只要RAM晶片容量足夠就永遠不需換CPU,而只要軟件升級CPU內容即可。不知道Intel或AMD會不會出品這樣的RAM-CPU呢?不過在靠不斷升級硬件來提升性能的PC體系下這大概是癡人說夢話吧。可是如果有其它公司贊助的話,利用像互聯網上那種看廣告換免費服務的交易方式,或許Intel真的會賣廉價而強大的CPU給我們呢!不過在很長時間內不升級硬件的家庭游戲機中,RAM-CPU可能會很快的實現呢!)

設想九:消除瓶頸,努力平衡系統要求
瓶頸的危害想必人人都知道,不過要真正消除一個系統的瓶頸,以現今的技術而言是不可能的,其實只要能盡量減輕瓶頸帶來的制約已經很不錯了。或許很多朋友認為減少瓶頸的唯一有效方法就是盡一切能力加強瓶頸部分的工作能力。其實這是一個根本性的錯誤,因為這樣做往往會在解決一個瓶頸的同時導致另一個瓶頸的產生。而且相對於不同的軟件對系統的要求也會不同,導致同一個系統在運行不同軟件時瓶頸的部位也不同。所以用前面的方法我們是無法有效的解決問題的。總體來說,減少瓶頸不但要綜觀全局,還要兼顧細節,從原則說來,系統的伸縮性越強越有利於減少緩和瓶頸的制約。利用第八個設想所提及的虛電路可變模塊技術理論上可以有效減少CPU部分的瓶頸制約,而整個系統的優化將在後篇中討論。

後 篇

第一部分:優化!優化!再優化!!向主板開刀!!
你有玩過家用游戲機吧?相信大家曾經對PS的機能非常驚訝吧?我本人是十分欽佩PS的機能的,論硬件的配置,它並不比最低檔的586 PC強多少,但它的機能比采用現在十分當紅的GeForce 256、Savage 2000之類芯片的顯卡構築的系統並不遜色多少。PS的機能比PC的機能好已經是無可置疑的,但是身為一個鐵桿PC人,我並不相信也不願意看到PC的機能永遠弱於家用游戲機。大家可以看看,傳言中某公司與PS 2唱對台戲的X - BOX用的就是nVIDIA的GeForce 256。可見PC的硬件也很強大,但為什麼PC的機能比PS弱呢?一句話說來,瓶頸累事。
具體一點,導致PC的總體機能弱於PS的原因從單純的技術上來說是PC的面向多種應用領域與PS的面向單一應用領域的區別和PC的開放系統平台與PS的封閉系統平台的區別共同作用而造成的。(有許多非技術的原因導致PC的弱勢,這是任何技術都無法改變的,我們也只好用時間去等待情況的變化了。)這兩種差別造成的表現可以分為硬件和軟件兩方面來闡述。
硬件方面:從本質結構方面上來說,由於PC體系是一個面向多種應用領域的開放系統平台,它沒有一個真正確切的標准,沒有一個確定的硬件規格;任何人、任何廠商幾乎可以按自己的願意隨意地加上各種配件、外設,甚至可以為PC體系制訂新的不同於別人的標准和協議,而且工作於PC體系下的協議也在一刻不停地更新、更新、再更新,甚至快得讓人感到無所適從;而PS則是一個面向單一應用領域的封閉系統平台的典型代表,它由出生的那一刻起就有一個確定並且基本不變的執行標准,有確定的硬件結構。從硬件設計方面來說,面向單一應用領域的系統平台,從系統設計的第一刻開始就集中全力對其應用領域的工作進行設計上的優化,拋棄該應用領域不需要的東西,極盡一切能力減輕可能會對執行該應用領域內的工作產生制約的影響,強化一切有助於提高執行該應用領域的工作的部件,最後才做平衡性能與成本的工作。所以它可以用合理的成本和適當的硬件配置獲得在執行對應應用領域內的工作時的令人滿意的表現。但是開放系統平台則不同,由於它需要面向太多的應用領域,兼容太多的軟硬件協議,以致要以性能為代價去獲得兼容。而在具體處理任一具體應用時,又會遇上一些不必要的瓶頸,而這些不必要的瓶頸往往是系統為了兼容其他的應用領域而附加上去的。結果因為PC想要做到面面俱圓,卻變成處處碰壁,吃力不討好。
軟件方面:由於PS這樣的封閉系統平台有不變的硬件結構,所以PS的軟件開發廠商不但有充分時間去研究掌握硬件結構,還有充分時間去優化軟件,讓足夠優化的軟件可以用盡硬件機能,把PS的性能發揮到極致。相反,為PC體系制作軟件的軟件商不但要考慮軟件對硬件的兼容,還要保證軟件推出時跟得上當時的硬件技術,也就是說軟件商編寫軟件時不但要有足夠的超前性,還要軟件商對將來的技術有足夠准確的預測,一旦預測錯誤,還要中途修改。天啊!光是這些就夠軟件商受的了,還提什麼吃透硬件機能、全面優化呢?
好了,既然知道原因,就可以對症下藥解決問題了。我們的偉大目標是:一、我們希望PC作為一個面向多種應用領域的系統可以像面向單一應用領域的系統那樣為對應的應用領域進行優化,而且是面向每一個應用領域進行優化;二、我們希望PC上的軟件可以像封閉平台上一樣不受硬件兼容性的限制和不必跟隨硬件的升級而不斷修改。只有達到以上要求,PC才可以超越PS 2甚至超過其他系統成為王者中的王者。
我們在第一部分的主要工作是想辦法實現第一個偉大目標。可是要令系統同時具有面向多種應用領域系統平台和面向單一應用領域系統平台的特點,看來只有讓系統學會"變身"才行了。不錯,重點就在這一個"變"字上。大家應該還沒忘記前篇中提到的可變模塊技術吧?在計算機系統中加一個可變模塊,可以令系統擁有動態的擴展能力。而如果我們用一個很大的可變模塊芯片去取代主板,就可以實現第一個偉大目標了。
我們現在一起來分析一下為什麼這個看似瘋狂的設想可以讓我們達成目標呢?這是因為這個方法可以解決主板速度及面向應用優化的兩個問題。主板是負責I/O操作,協調各硬件的運作以及各硬件間的數據傳輸工作。因此主板是眾多硬件中要求帶寬最高,數據吞吐能力最強的硬件,而且也是瓶頸"聚居"的地方。可是現今主板的工作頻率並不高,外頻大概在133MHz左右,導致主板帶寬低,吞吐能力弱,形成主板的速度瓶頸。如果主板改換成可變模塊芯片的話,不單可以大幅度提高集成度,減小系統體積,還可以大幅度提高外頻,即使不提高現行的芯片制造工藝,也可以讓主板的外頻輕易達到200MHz甚至更高。設主板外頻為200MHz的話,AGP 4X的運行速率就是1067MHZ,現行100MHZ外頻狀態下AGP 4X的運行速率是533MHz。可見應用可變模塊技術可以從很大程度上解決主板的速度問題,我們的第一個偉大目標也實現了一半。進而,我們只要解決了主板面向各個應用領域優化的問題,我們的第一個偉大目標就可以完全實現了。
我們只稍加分析既可發現,大部分硬件是為自己對應的應用領域進行優化的,例如顯卡只為顯示系統進行優化,而內存則是為提高數據吞吐速度和容量而加以優化;但是主板則需要對每一種應用領域進行優化。如果應用可變模塊技術的話,則主板可以動態地為各應用領域進行優化,可以在具體執行面向某一應用領域的工作時,把主板的結構變成對該應用領域最優化的結構,令系統可與發揮最大性能。如果運行中的程序需要涉及一個以上的應用領域的話,則只需由軟件生產商在軟件制作時,加入主板驅動信息,告訴主板芯片以什麼結構為基礎,那些部分是什麼式樣的,那些部分怎樣構造然後在軟件運行時先通知主板芯片進行結構構造既可。又如果在你在同一時間運行一個以上的應用程序,而且這些應用程序所要求的主板結構又是截然不同的話,我們可以把芯片分開成幾個部分,每個部分對應一個或多個同類型程序進行結構構造,把該部分構造成對該類應用程序最優化的結構。這就相當於在同一個系統中有多塊主板在同時運作一樣。怎麼樣?夠爽吧!其實只要主板芯片足夠大,系統的並行能力會幾倍幾倍的增加,而且還不會因為同時運行多個程序而導致主板產生速度或結構上的瓶頸。而對應不同應用領域的結構可以由專長於各自領域的軟硬件生產廠商協同制訂,也可以由可變模塊芯片的生產廠商提供開發工具,由軟件開發商根據開發工具自行開發。從而加大了開發廠商們的自由度。而且我們也可以PC的結構對所有應用領域最優化,從而使我們的第一個目標得以完全實現。
解決了PC的面向多種應用領域和面向單一應用領域之間的矛盾問題,我們馬上就來解決PC的封閉系統平台和開放系統平台之間的矛盾。

第二部分:向馮.諾依曼挑戰!邁向新紀元!!
在第一部分,我們提到要軟件一勞永逸地解決硬件帶來的兼容性及變換所帶來的問題。首先,我們來看一下產生這個問題的根源:現行所有計算機體系包括封閉系統平台及開放系統平台都是使用馮.諾依曼體系結構的。(以下簡稱諾依曼體系結構)而諾依曼體系結構的原理是先確定要解決的問題,再確定算法,最後以軟件指令清楚地告訴硬件每一步要怎麼做。顯然,不同的硬件對同一個工作可能會有不同的處理方法,因而軟件需要考慮每一個硬件的不同情況而作出與之一一對應的處理。這樣便產生了硬件對軟件兼容性方面的限制。要徹底解決這一問題就只能跳離諾依曼體系結構,而這將是自從計算機誕生以來對系統進行的最深刻最徹底的變革,它對計算機系統所產生的影響甚至比徹底改變CPU的指令體系還要深遠。它將會對軟硬件的結構和軟件的編程方式和編程思想產生深刻變革,以往對計算機系統的一切認識都將徹底改變,迎接我們的將是計算機發展史的新紀元。
我設想了一種新的計算機體系結構--智能體系結構。智能體系結構的原理是:在軟件方面,軟件不需要像在諾依曼體系結構下那樣一步步地告訴硬件怎麼做,而只需說明要硬件做什麼;在硬件方面,由CPU負責協調各硬件,由主板負責聯結各硬件,各硬件內都裝有一個編譯解釋器及一個指令系統,其中指令系統用來控制硬件內部的運作及把編譯解釋器送來的指令加以執行,而編譯解釋器用來負責接收由CPU轉送過來的軟件指令並加以編譯解釋,把軟件說明性指令換成硬件能理解的硬件指令,再送到指令系統去。實際的實現方法是:針對要解決的問題,由軟件告訴硬件要做什麼,軟件指令經由CPU發送到對應硬件的編譯解釋器,而編譯解釋器則在接收到軟件指令後加以分析並按要求生成硬件內部能理解的指令,再交由硬件執行。這種情況就好像是每個硬件內都裝上一個CPU一樣,我們不需要去管理硬件。可以看出,在智能體系結構下的軟件並不需要像諾依曼體系結構下的軟件那樣需要負責指揮硬件運作,而只是列出了軟件想要達到的目的,由硬件去主動執行。這樣在智能體系結構下的軟件運行的整體效率完全取決於硬件性能而沒有軟件算法差異的制約,即可以從根本上發揮硬件最高的性能,而且不會出現軟件效率制約硬件性能的問題。而硬件內部運行的指令是由編譯解釋器生成的,而編譯解釋器是由硬件廠商自己生產的,理論上生產廠商對自己的產品了解得最清楚,那麼我們可以認為生產廠商的編譯解釋器是最接近理論上的最優化的。智能體系結構以主動的工作方式得到了軟硬件的解放和充分發揮硬件性能的巨大好處;同時它利用主動的工作方式解放了軟件的許多限制並且徹底改變了軟件的編程方法和編程觀念。
我們舉個例子來看一下智能體系結構對軟件的影響:我們需要畫一個圓形並填上顏色並讓這個圓形按螺旋線運動。在諾依曼體系結構下我們需要在軟件中給出圓的公式、坐標計算公式、半徑和顏色代號,還要初始化系統、載入庫文件、設定顯卡及屏幕參數以及列出這個圓形每一幀的移動坐標或圓心坐標公式去確定圓形的運行軌道,然後把指令送入CPU,由CPU處理後送入顯卡,由顯卡指令畫圓填色,並按由CPU連續送來的坐標連續畫圓,模仿出這個圓形的螺旋線方式移動。庫函數還在我們不知道的情況下檢測顯卡,而且庫函數內包含了數萬行代碼但是可能其中只有幾百分之一的代碼適合你的顯卡甚至可能在數萬行代碼中還不包含適合你的顯卡的代碼令你的顯卡不能運行該應用程序,相應地程序的大小隨兼容性地提高而增大。但運行效率不但沒增加,甚至可能會因為程序體積的增大而下降。而在智能體系結構下,我們需要在指令中說明我們要畫圓,給出圓心、半徑,並說明圓以螺旋線運動,指令送入CPU後,由CPU發給顯卡,顯卡用自帶的指令系統控制顯卡畫圓填色,按已給出的軌跡自己計算圓形運動中的每一幀的坐標,從第一次收到指令後便不需與CPU再進行聯系而自行工作。智能體系結構下的軟件不需載入庫函數,不需設定顯卡,不需初始化系統,所以不但初始速度塊而且程序的體積小,由於軟件的運行效率與軟件的算法無關,所以即使在同一性能的硬件下仍是智能體系結構的軟件的運行效率高,而且智能體系結構的軟件對同一操作一次送入硬件執行,而諾依曼體系結構下的軟件則是軟硬件交替執行所以效率會較低。
可以看出,智能體系結構從執行操作的方式到軟件的運行效率都比諾依曼體系結構優勝,而且越復雜的操作智能體系結構的運行效率越高。這就是智能體系結構的第一個優點:高效率。
智能體系結構的其它優點是:
二、徹底解決硬件兼容性問題:由於軟件不需要控制硬件的運作,所以軟硬件間不會有任何兼容性問題,而硬件與硬件間只要用適當的接口連接並能正確地傳送數據即可,而硬件內部的結構是怎樣的、它遵從什麼協議都不必理會。所以只需一點點的協議即可達到硬件與硬件間的兼容性。
三、徹底的解放程序員的工作,現在人們不需學習艱難復雜的軟硬件知識去學習編程,而且也不需要硬件的兼容性限制,人們所需要做的只是把指令送入硬件,而不需理會硬件怎樣執行。程序員們再也不必考慮怎樣去實現目的,而只需考慮需要實現什麼目的即可。程序將不再負責一步步告訴計算機怎麼做,而是告訴計算機要做什麼了。可見智能體系結構不但可以實現硬件兼容性還可以改變人們編程的習慣及思維,程序員不必再把心思放在怎樣優化算法、兼容硬件,而是可以把心思更多地放在理解問題、描述問題上。
四、硬件升級不但不會影響軟件的兼容性,而且還會提高軟件的運行效率。
五、便於升級,在智能體系結構下,我們可以徹底拋開硬件驅動程序。而且如果各硬件的指令系統和編譯解釋器是用可改寫的ROM記錄的,那麼我們可以像升級BIOS那樣升級指令系統和編譯解釋器。
六、對硬件發展產生深遠影響。在諾依曼體系結構裡,每一個硬件必須遵從許多協議,而這些協議不但在不斷變化而且也不斷有新協議誕生,即使是同一領域也有多個協議同時存在,令各廠商自己也無所適從,從而大大限制了硬件的自由發展;在智能體系結構中,只要硬件能遵從適當的接口協議,編譯解釋器能正確解釋指令即可,對硬件其它方面不作任何要求,相對地令硬件的發展更加自由。
其實,大家從對比當中可以看到智能體系結構很強調硬件的主動性,硬件自主地完成任務。以此帶來許多好處。它不但屏蔽了開放平台和封閉平台的差異,令軟件不用理會硬件的兼容性及優化的影響甚至可以完全置硬件於不顧。而且還從硬件上徹底解決"軟件危機"的所有問題。對今後軟硬件的發展從根本上產生深遠影響("軟件危機"是……我想精通編程的你一定知道吧?)而智能體系結構要求系統的變革僅僅在極小部分的硬件上:雖然它要求系統的每一個硬件都帶有指令系統和編譯解釋器,但像硬盤和內存這類存儲器顯然不必帶有這些東西,各類外設中也各自帶有類似的系統,主板與CPU的控制功能絕對夠用,剩下的只有顯卡和聲卡而已。現在已經有帶GPU的顯卡了,相信GPU已經是未來顯卡的必然裝配,那聲卡要加上一個SPU(Sound PU)應該不困難吧?所以智能體系結構的實現對現行硬件結構的改變不會很大。各硬件廠商在設計硬件時擴充一下硬件內部功能即可,只不過軟件廠商們在設計軟件時需要多一點改變而已。
應用智能體系結構,硬件廠商不必再擔心他們的獨家先進技術因為沒有軟件的廣泛支持而被淘汰,更不用擔心面對碰到有好的技術沒有好的市場的困局,更不必擔心因為需要獲得軟件的支持而被迫公開專利技術。而且很明顯地,智能體系結構是基於馮.諾依曼體系結構而產生的,所以兩種體系結構包括兩種體系結構下的軟硬件必然能長時間共存,因此可以實現技術的平滑過渡,避免了因為要轉移體系結構而導致以外技術及人才的浪費,不但保護了諾依曼體系結構的寶貴知識,而且也可以讓智能體系結構在諾依曼體系結構的保護下蓬勃發展,還不會形成兩個體系結構的對立,形成一個無論對用戶和廠商都是雙贏的格局。
衷心感謝各位的支持看完這一篇不太現實的文章,若它能帶給大家一點小小的啟發,小弟心已足矣。
=======================================
MISC算盤理論概觀:

算盤上一下四共五珠,上下各一個空格。
??


??





??
具有複進制結構,上排一珠為二進制,下排為四進制;
上一下三為八進制,八進制餘下一珠可作為宏指令連接閘或判斷用。

倉頡二十六進制則可以雙柱合併達成:
21
????
●●9–18
││
????
││
●●1┐
●●1│8
●●1│
●●1┘
????

程式設計中以位元移動最有效率(印象中),相當於算盤之撥打動作。
且一次僅需移一位元(只有一個空格)。

文中之「分布快取」相當於算柱本身,可用作資料記憶或程式化之變化。
不使用集中或大快取,否則會有命中率以及尋址惡夢問題,省下不必要之浪費。

有本「算法統宗」一書對算數及算盤有不少妙口訣。
可惜網路上找不到,書本也很難找。

另外關於文中提到影音,晚輩認為應該使用類比式效率最高。
想像使用杏娃手機,撥打指定曲目,由伺服端將數位音樂轉換成類比電波傳送給使用者。
比起從手機內置音效晶片解碼,由內部產生振盪頻率。若由外部接收電磁波將更有效率。
若有人想聽相同曲目,僅需將接收頻率轉為共振值即可。
也可避免重複耗用資源在人人所聽之相同曲目。更能省下儲存空間,使手機輕便小巧。
而音響耳機之材料尚有可議之空間。

影像方面,應淘汰解析式顯像方法。
因為要有好的顯像,解析度就要高,解析度一高,便需耗用極大資源。
應將顯像類比化,製造上亦需廉價,材質輕薄,顯像清析。

如此亦可解決倉頡組字法,造成之鋸齒過多之缺點(組合既定類比數據)。
回應﹕
  此篇「大塊文章」,老朽看來頭痛,只能「略讀」了事。
  能有有心人士若此,中國遲早必興也。不過理想與現實關山亙隔,錯非有人孜孜不倦,排除萬難,否則「山仍是山,水還是水」!
  關於此事,因涉及公司業務,老朽僅能在「個人立場」,略道一、二。

  一、今日之CPU,佔地為王之現實也,其缺點甚多。但領主諸侯利之所在,專家
    (專利之家)雲集,城高壘深,劃地自畛,以防他人入侵,如此而已。
  二、老朽無意涉足人間名利,僅希為無能無力之貧苦大眾略盡一己之力。準此,絕
    不做PC奴才,特另起爐灶,以最廉宜之手段,達到最簡單之目的。
  三、前文所述,不過「專家之明見」,從「城外」觀之,問題不在此處。從社會資
    源來看,即令推翻溤氏定律,也不宜來個「文化大革命」,四大全空也。
  四、老朽時日不多,能在有生之年,協助舉世弱勢族群,令得跨入文化資訊殿堂,
    增進智慧,勿令能者逞能、勿為愚者所愚,於願已足。
  五、老朽之「易芯」,乃非同步、變長匯流排、無固定時頻、法自然流程之結構。
    其中僅「邏輯模組」沿西方定義(指令或能兼容),餘以漢字基因處理即可。
  六、明年將利用Transmita 之技術,先將本室模擬程式嵌入,以製作一顆「多媒體
    中樞」,能供廉價電書、網絡電腦使用已足。
  七、2007年,行有餘力,則開始設計「小杏子」。此乃一封閉系統,僅提供一
    語文介面,以與外界溝通。至於PC,天下能人甚多,非老朽之責也。

本站之資料、著作歡迎網友註明出處後轉載,
但嚴禁以商業行為牟利。
朱邦復工作室