但是對遊戲和工控比較熟悉的消費者,肯定還記得8位機,16位機。這些低位數的處理器曾經在遊戲機上應用很廣泛,現如今在工控領域也還有大量應用場景。
科技一直在進步,cpu處理位的能力多年來一直在提高。現在電腦中最流行的64位cpu於20世紀90年代首次推出,現已成為主流。但是很多人都會有這種疑惑,為什麼現在還沒有128位cpu
什麼是位
首先複習一下什麼是位。它是計算中的信息單位,表示「0」或「1」,是數字系統中最小的單位,也是所有編程的基礎。位只能為1或0(因此是二進制),這些數字可以解釋為真或假、開或關,也可以為正或負。
在討論cpu架構時,位寬通常指cpu可以訪問的內存地址空間的大小。如,64位cpu 可以尋址16 eb的內存空間,遠遠超出了當今最大的超級計算機的需求。也有地方認為位寬指的是單詞運算的整數寬度,如32位處理器在計算兩個64位整數的運算時就需要多次運算。
單個位本身並不是很有用,組合多個位才可以表示更複雜的數據,如數字、字母或其他字符。如,在4位計算中,可以表示的最大整數是15(從0到15),由公式2x - 1計算得出,其中x 示有多少位。在4位計算中,可以計算的最大整數是 15,比16小1,因為計算機內部從0開始計數,而非1。
如果4位能存儲16個不同的整數,那麼轉換為8位、32位甚至128位依此類推即可。但這裡處理的是指數計算,數量一開始變化很慢,但隨後激增。這裡有一個表格,顯示了可以用二進制從1位到128位計算的最大整數。
位數 | 可表達最大整數 |
1-bit | 1 |
2-bit | 3 |
4-bit | 15 |
8-bit | 255 |
16-bit | 65,535 |
32-bit | 4,294,967,295。 |
64-bit | 18,446,744,073,709,551,615。 |
128-bit | 340,282,366,920,938,463,463,374,607,431,768,211,455。 |
重要的不是整數長度本身,而是可尋址空間。這就是為什麼32位機器只能尋址大約 4gb的內存,而64位機器可尋址16 eb(16777216 tb)。
為什麼現在主要用64位cpu
我們希望計算機能夠執行更複雜的任務。1位、2位或4位無法完成太多任務,intel 4004是第一個可以稱作處理器的晶片,是一個4位機,主要用途就是製作桌面計算器。
到了8位機時代,街機、遊戲機和家用計算機這些產品開始變得可行。隨著時間的推移,處理器的生產成本越來越低,體積越來越小,cpu位數也隨之增長。
當將snes和sega genesis等16位遊戲機與8位機前輩(如atari,nes紅白機)進行比較時,位數增長的優勢很快就會顯現出來。超級馬里奧兄弟3是nes紅白機上遊戲邏輯和圖形最複雜的遊戲之一,與兩年後在16位機上發布的超級馬里奧世界相比,就相形見絀了,當然這期間gpu改進對遊戲效果提升也有很大貢獻。
除了遊戲,隨著位數的增加,計算機在其他領域的應用都得到了改進。從8位的256個可能值變為16位的65,536個可能值意味著可以更精確地跟蹤時間、顯示更多顏色以及處理更大的文件。搭載英特爾8位8088 cpu的ibm pc,和搭載8位6502的蘋果ii,開啟了個人計算機普及的時代。
接著業界很快發展到16位和32位,最後是64位,64位計算在20世紀90年代末到21世紀初成為主流。最重要的早期64位cpu有nintendo 64的處理器,amd athlon 64和 opteron。在軟體方面,64位在21世紀初開始獲得linux和windows主流作業系統支持。發展64位計算的歷史也充滿坎坷,英特爾安騰(itanium)伺服器cpu是最著名的失敗案例,也是該公司有史以來最差的處理器之一。
如今,64位cpu無處不在,從智慧型手機到pc再到伺服器。位數較少的晶片仍在生產,但只應用在小眾領域。然而,自第一款64位cpu上市以來已經過去了近三十年了,為什麼還沒有128位cpu呢?
對於現在,128位計算技術是「拿著錘子找釘子」,過於前瞻
是不是128位技術上不可行,實現和製造很困難?事實並非如此。現代處理器中的許多組件(如內存總線和simd單元)已經使用128位或更大的位寬來執行特定任務。如,avx-512指令集允許處理512位寬的數據。這些simd指令已從32位發展到64位、128位、256位,一直到512位,所以高於64位寬的技術上完全可行。
64位cpu可以處理超過18千萬億個唯一數字,從0到18,446,744,073,709,551,615。而128位cpu能處理超過340,282,366,920,938,463,463,374,607,431,768,211,456個數字,這已經超過天文級別。即使其中一個位要用作正負符號,其表示範圍從負170,141,183,460,469,231,731,687,303,715,884,105,728到正170,141,183,460,469,231,731,687,303,715,884,105,727,找到計算包含如此多零的數字的用途也相當困難。
128位整數重要的用途包括ipv6地址、通用唯一標識符(uuid)(我的世界中有用到)和 zfs等文件系統。但128位cpu不是處理這些任務的必要條件,已有的64位硬體完全滿足需求。歸根結底,沒有128位cpu的主要原因是沒有對128位硬體-軟體生態系統的需求。128位計算技術就像是一個超級先進的錘子,使用最nb的材料,最nb的鑄造技術,超豪華的真皮把手設計,但是我們現在不需要這麼一個錘子來打釘子。
128位的先行探索已經開始
雖然128位cpu目前還不流行,沒有公司會在近期發布相關產品,但128位cpu也不會永遠不會出現。risc-v的規範為未來128位架構的可能性留有餘地,但並未詳細說明其技術細節,因為目前確實沒有迫切需要設計它。
128位可以表達的最大數字是340,282,366,920,938,463,463,374,607,431,768,211,455,這個數字雖然大,但遠不及宇宙中的原子數量,後者被認為是具有現實意義的最大數字。如果想模擬原子級別的大空間,那麼128位cpu還真的能派上用場。現在也許看起來128位cpu用途不明顯,正如許多年前我們想不到1gib的內存能幹什麼。