李逸軒搖頭否定道:“存儲(chǔ)器芯片美日雙方現(xiàn)在正打的厲害,我沒(méi)興趣摻和進(jìn)去,我生產(chǎn)的芯片是給硬盤(pán)上用的管理控制芯片,屬工控芯片的一個(gè)小分支。”
“哦,工控芯片,能具體說(shuō)說(shuō)嗎?”作為工業(yè)司司長(zhǎng),郭英年當(dāng)然知道工控芯片,沒(méi)想到李逸軒居然要生產(chǎn)這個(gè),不過(guò)他始終不信對(duì)方要生產(chǎn)工控芯片,認(rèn)為李逸軒是在忽悠他。
李逸軒當(dāng)然是在忽悠他,桌面CPU他肯定會(huì)搞,而且是必須搞,可他敢這么說(shuō)嗎,一旦這么說(shuō)了,改為工業(yè)用途的土地還指不指望對(duì)方批了,先唬住對(duì)方在說(shuō)。
引導(dǎo)對(duì)方來(lái)到一處硬盤(pán)組裝區(qū)前,從流水線(xiàn)上拿起一看電路板,“郭司長(zhǎng)請(qǐng)看,這塊電路板上的芯片用的就是工控芯片,這是美國(guó)西部數(shù)據(jù)公司發(fā)布的65C02處理器,我要生產(chǎn)的就是能替代它的CPU?!?br/>
“65C02,這跟華科生產(chǎn)的6502CPU有什么關(guān)系?”郭英年敏銳的感覺(jué)到這兩者之間應(yīng)該有莫大的關(guān)系。
“1974年,楚克·佩德?tīng)枏哪ν辛_拉公司帶出來(lái)的六位工程師,一起創(chuàng)辦了MOS Technology公司,六位工程師中有一位名叫bill mensch(比爾·門(mén)斯)的家伙,他野心很大,在MOS Technology科技完成了6502處理器的開(kāi)發(fā)之后,迅速看準(zhǔn)時(shí)機(jī),從mos科技抽身而出,創(chuàng)立western design center,即西部設(shè)計(jì)中心。
終于也在1978年,比爾順利開(kāi)發(fā)出基于cmos工藝的65c02處理器,成功實(shí)現(xiàn)對(duì)6502處理器的跨代升級(jí)。雖然65C02比6502更加得優(yōu)秀,但在商業(yè)上卻是個(gè)失敗的作品,6502只需25美元,而每顆65C02卻需要128美元,這么高的價(jià)格,性能完全比不上英特爾公司的8086和8087處理器。
因此,比爾·門(mén)斯不得不重新修改了設(shè)計(jì),成本雖然降下來(lái)了,但性能也大打折扣,更重要的是在低端處理器市場(chǎng),西部設(shè)計(jì)中心已經(jīng)失去了先機(jī),他已被MOS牢牢占據(jù)。
不得已之下,西部設(shè)計(jì)中心只能往嵌入式處理器發(fā)展,為IBM 的硬盤(pán)和8英寸軟驅(qū)提供工控解決方案。因禍得福,WDC在該領(lǐng)域市場(chǎng)大獲成功。這也是我的硬盤(pán)會(huì)用65C02做控制芯片的原因?!?br/>
郭英年并不知道兩家公司還這么一層關(guān)系,問(wèn)道:“那你為什么不繼續(xù)使用65C02?”
“因?yàn)?5C02有很大的缺點(diǎn),它的控制邏輯核心是依靠接口控制卡上所帶的ROM芯片,對(duì)DMA通道的占用很大,這使得硬盤(pán)電路控制板的設(shè)計(jì)變得復(fù)雜,而且電路板的面積也顯得很大。郭司長(zhǎng)你看,眼前的這款電路板幾乎沾滿(mǎn)了整塊硬盤(pán)的一面,再想把硬盤(pán)做小一點(diǎn)根本就不行了。
另外,他還影響了硬盤(pán)容量的升級(jí),10MB容量以下還好,容量上了20MB,65C02的性能就無(wú)法支撐了。更關(guān)鍵的是,由于65C02自有的控制邏輯,使得硬盤(pán)在使用過(guò)程中用戶(hù)必須忍受一大堆跳線(xiàn)和撥動(dòng)開(kāi)關(guān)的困擾(在早期的電腦上,每件設(shè)備所占用的系統(tǒng)資源都是由用戶(hù)手動(dòng)更改跳線(xiàn)或撥動(dòng)開(kāi)關(guān)來(lái)進(jìn)行分配的)這為硬盤(pán)的易用性帶來(lái)了困難。
所以我打算改變它,重新設(shè)計(jì)一種新型的控制芯片,讓硬盤(pán)變得方便易用?!?br/>
郭英年被李逸軒口里蹦出來(lái)的各種專(zhuān)業(yè)術(shù)語(yǔ)給繞暈了,但他還是明銳的抓住對(duì)方的一個(gè)關(guān)鍵詞,“你會(huì)設(shè)計(jì)芯片?”
“YES?!崩钜蒈庢?zhèn)定的回答道。
這下郭英年不淡定了,要知道芯片設(shè)計(jì)可是一項(xiàng)高技術(shù)活,香港目前沒(méi)有一家公司懂得怎么設(shè)計(jì)芯片,就連華科電子工業(yè)公司也不行,它的6502芯片都是從MOS引進(jìn)的呢,對(duì)方怎么設(shè)計(jì)的,自己就怎么生產(chǎn),即便是小小的修改一下都做不到,而眼前的這個(gè)年輕人居然說(shuō)自己能設(shè)計(jì)芯片,讓他實(shí)在是無(wú)法相信。
李逸軒知道光憑嘴巴說(shuō),對(duì)方是不能相信的,于是把自己設(shè)計(jì)的芯片草圖拿了出來(lái),他不怕被泄露,因?yàn)檫@種構(gòu)架設(shè)計(jì)他早就申請(qǐng)好了專(zhuān)利,而且一個(gè)總體的設(shè)計(jì)草圖也說(shuō)明不了什么。
把圖紙攤開(kāi),一副CPU初步設(shè)計(jì)草圖呈現(xiàn)在郭英年眼前。
李逸軒設(shè)計(jì)的芯片采用的后世常見(jiàn)的ARM處理器結(jié)構(gòu),ARM采用的哈佛流水線(xiàn)結(jié)構(gòu),這是絕大多數(shù)RISC精簡(jiǎn)指令集處理器常用的一種結(jié)構(gòu)。
當(dāng)然了,由于設(shè)計(jì)重心的不同,哈佛流水線(xiàn)結(jié)構(gòu)演化成很多不同的構(gòu)架。而ARM的核心設(shè)計(jì)理念是低功耗和低成本,兼具穩(wěn)定可靠。日后成為了移動(dòng)電子設(shè)備的首選CPU,后來(lái)硬盤(pán)控制CPU,無(wú)論是傳統(tǒng)的機(jī)械硬盤(pán)還是固態(tài)硬盤(pán),或者是便攜式移動(dòng)硬盤(pán),上面的控制芯片都是用的ARM處理器的變種。
ARM是英國(guó)Acorn電腦公司(ARM公司的前身)于1983年開(kāi)始研發(fā)的,主旨是開(kāi)發(fā)一種全新的構(gòu)架,低功耗和低能耗,還能完全兼容市場(chǎng)上的6502處理器。
MOS Technology公司在1975年發(fā)布了6502處理器,Acorn公司基于該處理器研制一款A(yù)corn教育計(jì)算機(jī),該計(jì)算機(jī)后來(lái)被英國(guó)政府的教育機(jī)構(gòu)指定為專(zhuān)門(mén)計(jì)算機(jī),這使得Acorn公司在英國(guó)的七十年代中后期紅極一時(shí)。
可隨著時(shí)間的推移,當(dāng)時(shí)代表高性能低價(jià)格的6502CPU,已經(jīng)漸漸落后于時(shí)代,Acorn公司需要推出一款全新的電腦,也就是16位計(jì)算機(jī)。
可是,Acorn公司悲哀的發(fā)現(xiàn),MOS Technology并沒(méi)有推出新一代16位處理器的想法,他們只是在原有的8位處理器6502的基礎(chǔ)上改來(lái)改去,從6502到6504,到6507,再到6600,依然只是6502的改進(jìn)版,這根本就不是Acorn公司想要的處理器。
1980年兩家公司經(jīng)過(guò)交涉,MOS Technology同意為Acorn開(kāi)發(fā)一款16位處理器7520,這也是MOS Technology公司研發(fā)的最后一款處理器。
讓Acorn感到悲劇的是,7520根本無(wú)法兼容6502,這使得Acorn圍繞6502開(kāi)發(fā)各種應(yīng)用無(wú)法在新電腦上繼續(xù)使用,而英國(guó)教育機(jī)構(gòu)更不愿意以前的應(yīng)用就這么作廢了,這讓學(xué)生怎么辦?幾年含辛茹苦的學(xué)習(xí),最后卻告訴這些學(xué)生,你們這些年辛苦學(xué)的東西全都是沒(méi)有用的東西。
這不是誤人子弟嘛,英國(guó)教育機(jī)構(gòu)豈能答應(yīng)。
最后沒(méi)有辦法,Acorn只能花取300萬(wàn)美金從MOS Technology公司買(mǎi)來(lái)全套的6502技術(shù)授權(quán),自己來(lái)設(shè)計(jì)能夠完全兼容6502處理器的全新16位處理器。
而這個(gè)時(shí)候,全世界首款真正意義上的RISC處理器MIPS誕生,MIPS誕生震撼了整個(gè)半導(dǎo)體業(yè)界,很多業(yè)界專(zhuān)家認(rèn)為RISC將會(huì)是下一代的處理器,會(huì)最終取代CISC復(fù)雜指令集處理器。其實(shí)我們都知道CISC沒(méi)有被RISC取代,而且還活得很滋潤(rùn)。
于是,Acorn公司開(kāi)始轉(zhuǎn)變?cè)O(shè)計(jì)思路,設(shè)計(jì)一款能夠完全兼容6502的精簡(jiǎn)指令集CPU,即Acorn RISC Machine處理器,這是ARM處理器的前身。
其實(shí)從這里就能看得出ARM跟MIPS有很大的不同,它不是一款純粹的RISC,它帶有很多CISC才有的功能拓展性特質(zhì),而且功能拓展能力還很強(qiáng),這也是為什么后來(lái)的ARM公司能夠基于A(yíng)RM構(gòu)架設(shè)計(jì)這么多種不同使用功能的ARM系列處理器,更不要說(shuō)各種變種版的ARM處理器更是多的數(shù)不清。
這些處理器發(fā)展史上的秘聞李逸軒是不會(huì)對(duì)郭英年說(shuō)的,而且現(xiàn)在都還沒(méi)有發(fā)生呢,有了李逸軒這個(gè)闖入者,這件事還會(huì)不會(huì)發(fā)生他都無(wú)法確定,現(xiàn)在他只要把郭英年說(shuō)服就行了。
ARM處理器起步是32位,我們最熟知的是64位結(jié)構(gòu)的ARM,現(xiàn)在才79年,是不能直接照抄的。
李逸軒對(duì)它進(jìn)行了改變,16位ARM處理器,由指令寄存器模塊、算術(shù)運(yùn)算單元、微處理器的控制器模塊、程序計(jì)數(shù)器、子程序計(jì)數(shù)器模塊、數(shù)據(jù)存儲(chǔ)器模塊、數(shù)據(jù)總線(xiàn)處理器模塊組成該處理器的核心。
在圖紙的右下角還對(duì)這些器件分別做了說(shuō)明。
1:指令寄存器模塊主要完成從只讀存儲(chǔ)器(ROM)中接受指令字,同時(shí)將指令字分送到控制部件和內(nèi)部數(shù)據(jù)總線(xiàn)或者地址總線(xiàn)上。由于目前設(shè)計(jì)的是16位處理器,所以他接收16位的指令字后,通過(guò)微處理器控制器發(fā)出的控制信號(hào)把高8位操作碼送給控制模塊用于指令的譯碼,而低8位的數(shù)據(jù)和地址送到地址總線(xiàn)或數(shù)據(jù)總線(xiàn)。
2:程序計(jì)數(shù)器模塊設(shè)計(jì)一位16位的程序計(jì)數(shù)器同時(shí)還必須能直接接受跳轉(zhuǎn)地址。
3:子程序計(jì)數(shù)器模塊本身也相當(dāng)于一個(gè)程序計(jì)數(shù)器,它是通過(guò)處理器里的控制器產(chǎn)生的控制信號(hào)來(lái)置數(shù),一經(jīng)置數(shù),即是子程序的開(kāi)始地址。另外子程序計(jì)數(shù)器還是可屏蔽中斷和不可屏蔽中斷程序執(zhí)行過(guò)程的程序計(jì)數(shù)器,減少程序計(jì)數(shù)器設(shè)計(jì)的復(fù)雜。
4:算術(shù)邏輯單元模塊是處理器運(yùn)行算術(shù)和邏輯運(yùn)算的不見(jiàn),同時(shí)還有與這個(gè)模塊相關(guān)聯(lián)的寄存器模塊,寄存器的大量使用是RISC架構(gòu)的一大鮮明特點(diǎn),他主要是用來(lái)存放算術(shù)邏輯運(yùn)算的兩個(gè)操作數(shù)的模塊,也是算術(shù)邏輯單元運(yùn)算結(jié)果的存儲(chǔ)部件。
5:數(shù)據(jù)存儲(chǔ)器模塊是為了能從數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù)和寫(xiě)入數(shù)據(jù),就要有存儲(chǔ)地址寄存器和存儲(chǔ)數(shù)據(jù)寄存器對(duì)于要存儲(chǔ)的地址和數(shù)據(jù)進(jìn)行暫存。
6:微處理器控制模塊通過(guò)對(duì)指令的譯碼給出不同工作狀態(tài)各個(gè)模塊的操作脈沖信號(hào),是整個(gè)微處理器的大腦,由譯碼器、環(huán)形計(jì)數(shù)器和控制矩陣組成。其中環(huán)形計(jì)數(shù)器產(chǎn)生控制矩陣所需要的控制狀態(tài),指令譯碼和控制矩陣由控制模塊來(lái)實(shí)現(xiàn)。
7:數(shù)據(jù)總線(xiàn)處理器模塊主要解決內(nèi)部數(shù)據(jù)總線(xiàn)沖突問(wèn)題,對(duì)不同的模塊的總線(xiàn)請(qǐng)求給予回應(yīng)。
這就基本完成了處理器的大致框架的構(gòu)造和各功能模塊功用的定義。李逸軒不需要過(guò)高的技術(shù)領(lǐng)先,所以決定不采用多址指令格式,對(duì)于用在硬盤(pán)上的總控制芯片,多址指令完全沒(méi)用,還會(huì)增加指令的尋址時(shí)間。
李逸軒為芯片設(shè)計(jì)一個(gè)二級(jí)緩存系統(tǒng),一級(jí)4K,二級(jí)8K,這能大大增加硬盤(pán)的讀寫(xiě)速度。
緩存的設(shè)計(jì)不能過(guò)大,也不能過(guò)低,必須根據(jù)芯片的實(shí)際用途合適才行。大了,沒(méi)用不說(shuō)還浪費(fèi)成本,小了又不夠用,總之這款控制芯片只要硬盤(pán)容量不超過(guò)2GB,就不會(huì)被淘汰。
這款控制CPU李逸軒還采用了流水線(xiàn)設(shè)計(jì),分為用戶(hù)模式和專(zhuān)用模式2種工作模式,而寄存器也分為2種,通用寄存器和特殊寄存器,為此而專(zhuān)門(mén)設(shè)計(jì)了16個(gè)寄存器,在用戶(hù)模式下,指令只能訪(fǎng)問(wèn)12個(gè)通用寄存器,而專(zhuān)用模式可以多全部的16個(gè)寄存器自愿進(jìn)行訪(fǎng)問(wèn),從用戶(hù)模式近入專(zhuān)用模式的鑰匙就是中斷和例外。
中斷對(duì)于流水線(xiàn)的數(shù)據(jù)通道而言,只有兩種情況,一類(lèi)是執(zhí)行的指令代碼不合法,需要轉(zhuǎn)入中斷服務(wù)程序,另外一類(lèi)是例外或者中斷指令,例如系統(tǒng)啟動(dòng)、硬件中斷和中斷返回等。
在李逸軒的設(shè)計(jì)中,指令的執(zhí)行過(guò)程被劃分為3個(gè)步驟:取指令、譯碼和執(zhí)行,為什么這樣設(shè)計(jì)?
首先,讓大家看下比如有3條指令輸入計(jì)算機(jī)是123,123,123,那么采用了流水線(xiàn)后,執(zhí)行的情況首先取值1然后譯碼到2的位置,這個(gè)時(shí)候第二條指令正好進(jìn)入取值環(huán)節(jié),當(dāng)指令1進(jìn)入到執(zhí)行階段的時(shí)候,那么第二條指令正好是譯碼階段,而第三條指令處于取值階段,這樣處理器內(nèi)部將全速運(yùn)行,這個(gè)時(shí)候處理器的執(zhí)行效率最高,這也是在不增加計(jì)算機(jī)頻率上就可以增加計(jì)算機(jī)性能的一項(xiàng)技術(shù)。
李逸軒采用的是3級(jí)流水線(xiàn)設(shè)計(jì),完全能滿(mǎn)足現(xiàn)狀和未來(lái)10年的硬盤(pán)容量增長(zhǎng)需求了,對(duì)于一款面向硬盤(pán)總控制的CPU,完全沒(méi)有必要設(shè)計(jì)什么4級(jí)5級(jí)甚至8級(jí)9級(jí)流水線(xiàn),君不見(jiàn)未來(lái)的4TB容量硬盤(pán),其總控制芯片的流水總線(xiàn)也不過(guò)才10級(jí)。
相反在總線(xiàn)設(shè)計(jì)上,李逸軒才是費(fèi)了不少的腦細(xì)胞,不但要滿(mǎn)足現(xiàn)在的需求,還要滿(mǎn)足未來(lái)的需求。
總線(xiàn)是處理器的內(nèi)部的數(shù)據(jù)、地址以及控制信號(hào)的傳輸通道,同時(shí)也是外部交流的接口,因此,處理器總線(xiàn)的設(shè)計(jì)對(duì)處理器的性能有著非常重要的影響。
這就好比如果一個(gè)城市沒(méi)有寬敞暢通且快速的大馬路,和有寬闊大馬路甚至高速比較,如果你想從城東到城西辦事,你覺(jué)的那個(gè)更快捷。
李逸軒把片外的總線(xiàn)分為3部分?jǐn)?shù)據(jù)總線(xiàn)、地址總線(xiàn)和控制總線(xiàn),采用3總線(xiàn)并行結(jié)構(gòu)。
數(shù)據(jù)總線(xiàn)為16位的雙向總線(xiàn),用于外部程序存儲(chǔ)器或者數(shù)據(jù)存儲(chǔ)器讀取指令或者數(shù)據(jù)和對(duì)外數(shù)據(jù)存儲(chǔ)器進(jìn)行寫(xiě)操作的通道,對(duì)只讀存儲(chǔ)器和對(duì)隨機(jī)存儲(chǔ)器的讀和寫(xiě)是分時(shí)復(fù)用。地址總線(xiàn)也是16位,可以尋址的空間為64K,程序計(jì)數(shù)器是個(gè)16位的地址寄存器,用來(lái)存放要訪(fǎng)問(wèn)的程序存儲(chǔ)器的地址,子程序計(jì)數(shù)器也是一個(gè)16位的地址寄存器,在子程序調(diào)用或者執(zhí)行中斷程序的時(shí)候來(lái)代替程序寄存器的功能。
外部的控制總線(xiàn)將由訪(fǎng)問(wèn)存儲(chǔ)器的讀、寫(xiě)和準(zhǔn)備等信號(hào)組成,主要讀寫(xiě)外部存儲(chǔ)器和I/O設(shè)備。
這是外部總線(xiàn),接著是內(nèi)部總線(xiàn)結(jié)構(gòu)。內(nèi)部總線(xiàn)有兩種設(shè)計(jì)結(jié)構(gòu),該選哪一種李逸軒當(dāng)初也是思考了很久。
那兩種總線(xiàn)結(jié)構(gòu)?
馮諾依曼體系和哈佛體系,自然哈佛體系對(duì)計(jì)算機(jī)的性能的提升有很大幫助但是也將會(huì)造成工藝的復(fù)雜對(duì)成本控制不利,哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。
中央處理器首先到程序指令存儲(chǔ)器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)。
程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi),可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度。
而馮·諾伊曼結(jié)構(gòu)也稱(chēng)普林斯頓結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,而英特爾的8086就是這種結(jié)構(gòu)。
李逸軒后來(lái)仔細(xì)的想了想,哈佛體系結(jié)構(gòu)的存儲(chǔ)器的最大優(yōu)點(diǎn)是,方便芯片后續(xù)設(shè)計(jì)的連續(xù)性,缺點(diǎn)是工藝生產(chǎn)上的復(fù)雜,不利于成本控制。
雖然ARM處理器內(nèi)部總線(xiàn)結(jié)構(gòu)采用的是哈佛體系,但眼前這款CPU是作為硬盤(pán)總控制芯片用的。對(duì)于硬盤(pán)來(lái)說(shuō),是不需要太過(guò)于考慮未來(lái)內(nèi)部總線(xiàn)設(shè)計(jì)的連續(xù)性,只要能達(dá)到原始設(shè)計(jì)要求就行了,最終他還是選用了馮·諾伊曼結(jié)構(gòu)。
即便李逸軒講的深入簡(jiǎn)出,盡可能的讓普通人能聽(tīng)懂,可遺憾的是郭英年還是沒(méi)有聽(tīng)明白。
沒(méi)辦法,CPU的專(zhuān)業(yè)性實(shí)在太強(qiáng)了。他只是一名官僚,并非該領(lǐng)域的專(zhuān)家,不過(guò)這些對(duì)他來(lái)說(shuō)并不重要,重要的是他現(xiàn)在已經(jīng)知道眼前這么年輕人是真的會(huì)設(shè)計(jì)芯片。
郭英年心中的天平開(kāi)始傾斜了,不過(guò)他還有一個(gè)疑問(wèn),“我現(xiàn)在相信你會(huì)設(shè)計(jì)芯片了,不過(guò)生產(chǎn)線(xiàn)你從哪里弄?”