詳細(xì)闡述:一個(gè)技術(shù)員眼里的芯片設(shè)計(jì)
IP核分軟核和硬核,現(xiàn)在貌似也有軟硬結(jié)合的核…它是什么東西呢?比如ARM指令授權(quán),它就是軟核,它只規(guī)定了CPU的指令集,好比建橋,它只告訴你橋應(yīng)該建多長(zhǎng)、多寬、大概長(zhǎng)什么樣,但是具體細(xì)節(jié)沒有,不告訴你電路在芯片上怎么擺放,怎么連線。軟核的好處是給了很大的發(fā)揮空間,模仿、抄襲也簡(jiǎn)單,以后做類似東西可以參考。硬核就是它只告訴你電路在芯片上具體長(zhǎng)什么樣子,把它擺上去用就行了。硬核的好處是它一般都是經(jīng)過其它芯片驗(yàn)證的,很容易了解它的具體性能。但你幾乎不可能修改它,也很難了解它的實(shí)現(xiàn)細(xì)節(jié),畢竟有幾千萬個(gè)mos管,人怎么分析。
本文引用地址:http://butianyuan.cn/article/201610/311472.htm中國的IC設(shè)計(jì)公司,自主IP核不多,因此很多都是從類似ARM和Ceva這類公司購買,但客觀地說,現(xiàn)在芯片設(shè)計(jì)分工越來越細(xì),每個(gè)公司只是完成其中一小部分,就算是高通,也用了很多其他公司的IP核。
一個(gè)公司想把所有活都干了,那絕對(duì)是不可能的,就算做到了,它的芯片也不會(huì)有競(jìng)爭(zhēng)力。其實(shí)玩搭積木也是很有技術(shù)含量的,海思肯定是國內(nèi)玩得最好的公司。目前公司的一個(gè)目標(biāo)也是把越來越多的模塊自主化,但是需要時(shí)間。
先從最底層芯片說起,開頭說了mos管,現(xiàn)在說說與非門。上面說了mos管是芯片的最小單位,但這是對(duì)于芯片制造廠而言的。芯片設(shè)計(jì)時(shí)不會(huì)直接畫mos管,在數(shù)字電路中,使用的最小單位是門電路,與非門就是用得最廣泛的一種。一個(gè)與非門大概要4個(gè)mos管組成,與非門大家應(yīng)該都非常熟悉。如下圖:
大家都知道,家里的開關(guān)有兩種狀態(tài)嘛,打開和關(guān)閉。當(dāng)上圖中的開關(guān)1和開關(guān)2兩個(gè)開關(guān)中只有1個(gè)開關(guān)打開時(shí),經(jīng)過與非門處理,開關(guān)3就打開了。如果開關(guān)1和開關(guān)2兩個(gè)開關(guān)都關(guān)閉或者兩個(gè)開關(guān)都打開,經(jīng)過與非門處理,開關(guān)3就關(guān)閉了。其實(shí)和與非門類似的東西生活中隨處可見。比如說有的人家里有一個(gè)燈,這個(gè)燈在家門口設(shè)了一個(gè)開關(guān),方便進(jìn)出家門時(shí)開關(guān)燈。在床邊也設(shè)了個(gè)開關(guān),方便晚上睡覺時(shí)關(guān)燈。這個(gè)其實(shí)就是一個(gè)與非門,兩個(gè)開關(guān)控制同一個(gè)燈。一個(gè)開關(guān)打開,燈就亮了,兩個(gè)開關(guān)同時(shí)打開或者關(guān)閉,燈就滅了。
這樣的話,用一個(gè)與非門和一個(gè)與門就模擬了最簡(jiǎn)單的一個(gè)加法器,最大只能計(jì)算1+1。計(jì)算機(jī)中有幾億個(gè)這樣的門電路,它們組合起來就能做非常復(fù)雜的運(yùn)算?,F(xiàn)在的大部分CPU都是64位的,這種CPU肯定會(huì)有64位加法器甚至128位加法器。拿64位加法器來說,它最大可以計(jì)算出18446744073709551616 + 18446744073709551616。
說到這里,不得不說說芯片頻率。
先說說1G頻率是什么概念,讓大家有個(gè)至關(guān)的認(rèn)識(shí),這個(gè)數(shù)字就是說每秒鐘10億(1,000,000,000)次。為什么會(huì)有這個(gè)東西呢?剛才我說了與非門,開關(guān)3是隨著開關(guān)1和開關(guān)2的變化而變化的,對(duì)人類來說,開關(guān)3的變化速度很快,是瞬間的,但這個(gè)變化總是需要一點(diǎn)時(shí)間的。開關(guān)3可能是另外一個(gè)門電路的輸入開關(guān),如果變化到一半,它的下一個(gè)門電路就接受開關(guān)3的輸入,可能會(huì)產(chǎn)生很嚴(yán)重的問題。
一般來說,一層門電路需要等它的上一層門電路完全變化完畢,輸出穩(wěn)定之后,它才接收上一層的輸入,開始變化。這個(gè)時(shí)候就需要有一個(gè)指揮家來指揮這些門電路什么時(shí)候開始變化,這個(gè)指揮家就是芯片頻率,指揮家會(huì)定時(shí)發(fā)出脈沖,1G就是每秒1一次脈沖。門電路等脈沖到來的時(shí)候就開始做這個(gè)變化。
從上面可以看出,指揮家指揮得越快,芯片運(yùn)算速度越快。但要說明一點(diǎn),兩倍的頻率并不代表兩倍的性能。因?yàn)镃PU和內(nèi)存、外設(shè)頻率不同步,它們之間的頻率相差越多,CPU空轉(zhuǎn)的次數(shù)越多。另外再說一點(diǎn),門電路變化的過程其實(shí)就是mos充電放電的過程,mos管充電放電越快,芯片的頻率可以做到越高,而二級(jí)效應(yīng)會(huì)減慢mos充電放電的速度。如果mos管想要充電放電快一點(diǎn),要提高mos管電壓,這樣就提高了芯片的功耗。
而關(guān)于芯片設(shè)計(jì)過程,大家對(duì)IP核、指令集和架構(gòu)這些東西都比較感興趣。
先說說ARM的IP核吧,ARM授權(quán)包括指令集和CPU核心架構(gòu)。據(jù)我了解,除了高通外,其它芯片廠商都使用了ARM的CPU核心架構(gòu),也就是經(jīng)??梢月牭降腁9 A15。高通比較高端,CPU核心架構(gòu)自己搞,如果搞得比A9 A15好的話確實(shí)可以提高CPU性能,但由于ARM收取高昂的核心架構(gòu)修改費(fèi)用,所以要付更多的錢給ARM。指令集是CPU與上層的編譯器、操作系統(tǒng)和應(yīng)用程序的接口,使用ARM指令集意味著你做的CPU可以兼容安卓系統(tǒng)、安裝應(yīng)用、C編譯器。
如果哪個(gè)公司自己整一套全新的指令集,那它做出來的CPU一點(diǎn)用處沒有,既沒有操作系統(tǒng)也沒用應(yīng)用。此前聯(lián)想出了個(gè)K800,用的是英特爾Atom CPU,這款CPU非常特別,使用X86指令集,結(jié)果是一出悲劇,很多游戲兼容不了。不過英特爾還得感謝谷歌,否則這個(gè)CPU連安卓都兼容不了。目前來看,CPU不用ARM指令集很難玩轉(zhuǎn),而且隨著越來越多應(yīng)用只支持ARM,ARM的地位會(huì)越來越鞏固,就像電腦CPU,如果不用X86指令集,連Windows都很難安裝,這是一個(gè)壟斷的帝國。
下面說說CPU核心架構(gòu),說之前不得不先談?wù)凱DK。PDK是ProcessDesign Kit 工藝設(shè)計(jì)包,它和晶圓廠的制作工藝緊密相關(guān)。PDK是什么呢,它描述了一個(gè)具體工藝基本元器件的電器特性。比如臺(tái)積電28nm工藝和40nm工藝做出來的mos管電器特性肯定不一樣。28nm工藝和40nm工藝做出來的mos管額定電流范圍、電壓范圍肯定不同,在相同外界輸入下,輸出曲線也肯定不一樣。芯片公司如果沒有PDK,根本不知道設(shè)計(jì)出來的電路性能如何,也沒辦法跑仿真。簡(jiǎn)單一點(diǎn)說,你拿40nm PDK設(shè)計(jì)電路,用28nm工藝生產(chǎn),生產(chǎn)出來的芯片絕對(duì)一點(diǎn)用處沒有。所以說芯片設(shè)計(jì)非常苦逼,搞編程的,代碼可以重用,搞芯片設(shè)計(jì)的,如果換了生產(chǎn)工藝,很多東西得要從頭再來。
ARM給IC設(shè)計(jì)廠商的CPU核心架構(gòu)只是FPGA代碼,它不是工藝相關(guān)的,數(shù)字前端設(shè)計(jì)的工作會(huì)少不少,但后端設(shè)計(jì)有大量的工作要做。但ARM提供的僅僅是一個(gè)計(jì)算核心,外圍一個(gè)都沒有。外圍包括一些什么呢?比如USB IP核,沒有這個(gè),手機(jī)就沒有USB功能;比如GPU,這個(gè)不用我多說吧;比如音頻IP核,杜比音效就是這么來的;比如視頻解碼IP核,沒有這個(gè),看視頻只能軟解;還有CPU功耗控制IP核等等。
對(duì)于很多IC設(shè)計(jì)公司來說,這些外圍的IP核很多都是外購的。因此看CPU真心不能只看頻率,外圍IP有好有壞,有些比較高端的IP核授權(quán)費(fèi)用非常高。即使買了很多IP核,但芯片也絕不是閉著眼睛就能整出來的。
順便說一下,高通芯片外圍的IP核很多也是外購的。
所以說芯片設(shè)計(jì)并不是簡(jiǎn)單的事情,很多人認(rèn)為國內(nèi)的IC設(shè)計(jì)公司毫無技術(shù)含量這種說法是無稽之談。
評(píng)論