本文來自IT之家
  目前世界上有兩種文明,一種是人類社會組成的的碳基文明,一種是各種芯片組成的硅基文明——因為幾乎所有的芯片都是以單晶硅為原料制作的,芯片系統的總數比人類的數量還多出數十上百倍。芯片大家族里面也分各種不同類型的芯片,從古老的用電子管堆出來的成噸的邏輯門到現在的超級數據中心,電子技術的發展走過了一代又一代,到了今天,各種芯片更是百花齊放,芯片廠商百家爭鳴。
  可是,這么多芯片,按照功能分類,有專門用于計算的、有專門用于控制的、有專門用于存儲的……按照集成電路規模分,有超大規模,大規模,和古老的中規模、小規模。而具體到了類型,又有CPU,SoC,DSP……有這么多的芯片,真的區分清除也是要花上一番功夫的,這篇文章就可以帶領大家了解一些基礎的、用來處理數據的集成電路芯片。
  在這些專門用于處理數據的芯片中,最常用的就是由微處理器構成的微處理器系統,小到一塊單片機,大到數據中心的幾十路幾十核地表最強處理器,都是由簡單的微處理器系統發展而來,微處理器是應用最廣泛的芯片。首先了解微處理器及微處理器系統,對接下來了解各種芯片及控制系統的很有幫助。
  微處理器系統
  微處理器系統,囊括了各種類型的計算機,微控制器/單片機。世界上的微處理器系統的總數比人類總數還多得多。它的基本工作原理是用程序控制系統的行為。
  微處理器系統的基本操作過程是中央處理器(Central Processing Unit, CPU)不斷地從存儲器取指并執行,實現對系統的全面管理。
  一、CPU結構和功能CPU的結構:
  1) 控制器:完成指令的讀入、寄存、譯碼和執行。
  2) 寄存器:暫存用于尋址和計算過程的產生的地址和數據。
  3) I/O控制邏輯:負責CPU中與輸入/輸出操作有關的邏輯。
  4) 算數邏輯運算單元(Arithmetic & Logic Unit, ALU):運算器核心,負責進行算術運算、邏輯運算和移位操作,用來進行數值計算和產生存儲器訪問地址。
  CPU的功能:
  1) 與存儲器之間交換信息。
  2) 和I/O設備之間交換信息。
  3) 為了使系統正常工作而接收和輸出必要的信號,如復位信號、電源、輸入時鐘脈沖等。
  二、微處理器系統的結構
  1) CPU的外部特征就是數量有限的輸入輸出引腳。
  2) 數據總線:用于CPU和存儲器或I/O接口之間傳送數據,雙向通信;數據總線的條數決定了CPU和存儲器或I/O設備一次最多能交換數據的位數,是微處理器的位數的判據,例如:Intel 386DX、ARM Cortex-M3是32位微處理器;Intel采用了IA-64架構的處理器、PowerPC 970是64位處理器;類似地,還有更加古老的8位、16位處理器等。
  3) 地址總線:CPU通過地址總線輸出地址碼用以選擇某一存儲單元或某一成為I/O端口的寄存器,單向通信;地址總線的條數決定了地址碼的位數,進而決定了存儲空間的大小,例如:地址總線寬度(條數)為8,則可以標記2^8 = 256個存儲單元,若每個存儲單元的字長為8 bit,則最大可以接入系統的存儲空間為256kB。
  4) 控制總線:用來傳送自CPU發出的控制信息或外設送到CPU的狀態信息,雙向通信;
  微處理器系統的程序設計語言:程序設計語言(Programming Language),又稱為編程語言,是用來定義計算機程序的,通過代碼向處理機發出指令。編程語言讓開發者能夠準確地提供計算機所使用的數據,并精確地控制在不同情況下所應當采取的行動。最早的編程語言是在計算機發明之后產生的,當時是用來控制提花織布機及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的編程語言,而且每年仍有新的編程語言誕生。很多編程語言需要用指令方式說明計算的程序,而有些編程語言則屬于聲明式編程,說明需要的結果,而不說明如何計算。
  機器語言:機器語言的每條語句即是處理器可以直接執行的一條指令,這些指令是以二進制0、1序列的形式表示,對應數字集成電路的高低電平。不同的處理器指令的機器代碼各不相同,完成的具體功能也將不相同,按著一種計算機的機器指令編寫的程序,不能在另一種計算機上執行。
  示例:(僅作為示例,不代表真實硬件的機器代碼)
  指令的機器代碼:
0000’0000 STORE
0000’0001 LOAD
  地址的機器代碼:
0000’0000  寄存器R0
0000’0001  寄存器R1
  優點:功能和代碼一一對應,CPU可以直接執行,效率最高。
  缺點:只有二進制0、1序列,枯燥,難以辨識。
  匯編語言:用簡潔的英文字母、符號串來替代一個特定的機器語言指令——二進制0、1序列:用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。匯編語言與機器語言一一對應,所以和機器語言一樣對計算機硬件的依賴性很大。
  示例:加法運算(分號表示接注釋)
MOV  R1,? R3;
將寄存器R3的值賦予R1
LDR  R2, [R4]
;將寄存器R4的值代表的地址對應的存儲空間的值賦予R2
ADCS R0,  R1, R2
;將寄存器R1、R2與之前的進位值相加且進位,存儲到寄存器R0
  優點:匯編語句和機器語言一一對應,助記符與標號往往與實際意義相關,相比于機器語言,更加直觀,容易理解,執行效率上類似。
  缺點:不同的處理器指令集不同,移植性不好;即使完成簡單的數據處理(如累加,簡單排序等)所需的代碼體積很大,處理實際問題所需的工作量夸張,成本高。
  高級語言:使用接近于數學語言或人類語言的表達描述程序。
  特點:相比于面向機器開發的機器語言和匯編語言,高級語言擁有較高的可讀性,并且代碼量大大減少;高級語言通常遠離對硬件的直接操作,安全性較高,也有部分高級語言可以使用調用匯編語言的接口操控硬件;高級語言有很多成熟、易于使用、可移植的數據結構與算法,使開發流程大大簡化,節省開發成本,易于維護;發展迅速,社區完備,可以很方便地求助,解決遇到的各種問題;已經有很多各具特色、用以解決不同領域問題且發展相當完備的高級語言供開發者選用,如:適合初學者了解編程思想的Basic;效率頗高,接近于硬件操控,適合系統、硬件驅動編程與嵌入式開發的C/C++;跨平臺、可移植特性優良的Java;搭配Visual Studio可以快速開發項目的C#。NET;適合于數據分析、人工智能,越來越被青睞的Python;Microsoft公司為未來的量子計算而開發的Q#,等等。諸如MATLAB、HTML、JavaScript這樣的用以在不同領域大顯身手的語言亦可以稱之為高級語言。
  示例:加法運算
int a = 1, b = 2, c;
c = a + b;
  優點:不依賴于硬件,移植性好;不用場合選用適合的語言,開發效率高。
  缺點:不直接使用硬件,需要編譯-鏈接執行或解釋執行,沒有利用到具體硬件的特點,效率相比于機器語言和匯編語言不高;先天的特點決定了高級語言在底層的設計中無法完全取代機器語言和匯編語言。
  可以看出,微處理器系統的核心部件是CPU,使用微處理器系統控制外部的設備工作的實質就是使用編寫軟件程序的手段來控制外部設備。由于CPU已經是一個完整的、封裝好的部件,系統的設計人員只能通過編寫軟件,再經由編譯器或解釋器翻譯為機器能夠理解的代碼來執行,CPU并沒有專門的硬件電路來實現完全地控制外部設備的運行,這種實現方式是軟件實現,是一種通用的實現,控制信號從軟件到硬件要經過若干次轉化,但有的時候,工程和設計領域往往需要高速高性能的芯片來實現控制與計算,這時候就需要更加強大的CPU或將幾個CPU用一些技術并行起來協同工作,成本就會增加。這時候,可以不妨試試設計專門的硬件來滿足工作的需求。
  三、專用集成電路
  專用的集成電路(Application Specific Integrated Circuit, ASIC)是一種為專門目的而設計的集成電路。是指應特定用戶要求和特定電子系統的需要而設計、制造的集成電路。ASIC的特點是面向特定用戶的需求,ASIC在批量生產時與通用集成電路相比具有體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低等優點。
  ASIC分為全定制和半定制。全定制設計需要設計者完成所有電路的設計,包括芯片設計的所有流程,因此需要大量人力物力,靈活性好但開發效率低下。如果設計較為理想,全定制能夠比半定制的ASIC芯片運行速度更快。半定制ASIC使用準邏輯單元(Standard Cell),設計時可以從標準邏輯單元庫中選擇SSI(小規模集成電路,如門電路)、MSI(中規模集成電路,如加法器、比較器等)、數據通路(如ALU、存儲器、總線等)、存儲器甚至系統級模塊(如乘法器、微控制器等)和IP核,這些邏輯單元已經布局完畢,而且設計得較為可靠,設計者可以較方便地完成系統設計。
  當今ASIC的設計方向已經越來越多地使用可編程邏輯器件來構造,開發門檻和難度不斷降低,流程不斷簡化,成本不斷下降,業務也開始變得豐富且多元化。目前ASIC已經走向了深度學習、人工智能、第五代移動通信技術(5G)等高新技術領域,在可編程邏輯器件兩大巨頭Xilinx和Altera的推動下,可以預見未來的ASIC設計將是可編程邏輯器件(尤其是現場可編程門陣列,FPGA)的天下。
  四、可編程邏輯器件
  可編程邏輯器件(Programmable Logic Device, PLD)是一種通用集成電路,它是ASIC的一個子集,邏輯功能可以按照用戶對器件編程來確定。一般的PLD的集成度很高,足以滿足設計一般的數字系統的需要。這樣就可以由設計人員自行編程而把一個數字系統“集成”在一片PLD上,而不必去請芯片制造廠商設計和制作ASIC芯片了,因為如果芯片需求量不大,設計制造ASIC的單片成本是很高的。
  PLD與一般數字芯片不同的是:PLD內部的數字電路可以在出廠后才規劃決定,甚至可以無限制改變,而一般數字芯片在出廠前就已經決定其內部電路,無法在出廠后再次改變,事實上一般的模擬芯片、通信芯片、微控制器也都一樣,出廠后就無法再對其內部電路進行更改。最近鬧得沸沸揚揚的Intel公司的芯片漏洞事件,就是因為CPU的內部電路已經無法更改,所以只能設計新的CPU芯片來解決,或是損失一些性能用軟件修補的方法來彌補。
  五、可編程邏輯器件的發展歷程


  據外媒Sammobile消息,一款名為SM-A750FN的三星設備最近獲得了FCC的認證。最近,該機又通過了藍牙認證,預示著發布之日已經即將到來。