在8位微處理器中,其數據總線由8條數據線組成。在16位微處理器中,其數據總線由16條數據線組成,依此類推。
為什麼既沒有256位微處理器又沒有512位微處理器?他們為什麼不簡單地增加數據線的數量並創建256位微處理器或512位微處理器?
阻礙創建256位微處理器或512-bit的障礙是什麼?位微處理器?
在8位微處理器中,其數據總線由8條數據線組成。在16位微處理器中,其數據總線由16條數據線組成,依此類推。
為什麼既沒有256位微處理器又沒有512位微處理器?他們為什麼不簡單地增加數據線的數量並創建256位微處理器或512位微處理器?
阻礙創建256位微處理器或512-bit的障礙是什麼?位微處理器?
考慮一下。您究竟預想“ 256位”處理器是什麼?是什麼使處理器的位元首位?
我認為,如果沒有進一步的限定條件,處理器的位元就是它的ALU寬度。這是它可以在單個操作中本地處理的二進制數的寬度。因此,“ 32位”處理器可以在單個指令中直接對最大32位寬的值進行操作。因此,您的256位處理器將包含一個非常大的ALU,能夠在單個操作中進行256位數字的加,減,“或”,“與”等操作。你為什麼要那個?哪怕是處理器只計算一個循環的100次迭代之類的情況,大型且昂貴的ALU值得擁有並付錢嗎?
關鍵是,您必須為此付出代價。廣泛的ALU,無論您是大量使用還是僅使用其功能的一小部分。為了證明256位ALU的合理性,您必須找到一個足夠重要的問題,而這實際上可以從在單個指令中處理256位字而真正受益。儘管您可能會想到一些示例,但這些問題不足以使製造商感到他們將永遠無法獲得生產這種芯片所需的大量投資的回報。如果存在真正可以從廣泛的ALU中受益的利基但重要(資金充足)的問題,那麼我們將看到針對該應用的非常昂貴且高度針對性的處理器。但是,它們的價格會阻止在其設計的狹窄應用程序之外的廣泛使用。例如,如果256位使某些加密應用在軍事上成為可能,那麼可能會出現每個花費100至1000美元的專用256位處理器。但是,您不會將其中之一放入烤麵包機,電源甚至是汽車中。
我還應該清楚,寬泛的ALU不僅會使ALU變得更昂貴,而且還會使芯片的其他部分也變得昂貴。 256位寬的ALU也意味著必須有256位寬的數據路徑。僅此一項就需要大量的矽面積。數據必須從某個地方到另一個地方,因此必須有寄存器,緩存,其他內存等才能有效使用寬範圍的ALU。
另一點是,您可以執行任何操作任何寬度處理器上的寬度算術。您可以在8條指令中將32位存儲器字添加到PIC 18上的另一個32位存儲器字中,而您可以在只用2條指令擴展到32位的相同架構上進行操作。關鍵是,狹窄的ALU不會使您無法執行廣泛的計算,只是會使廣泛的計算花費更長的時間。因此,這是速度而不是能力的問題。如果查看需要使用特定寬度數字的應用程序範圍,您將看到很少需要256位字。用硬件加速僅對少數幾個應用程序提供幫助而無法幫助其他應用程序的開銷,這是不值得的,並且不能為產品開發做出良好的投資。
好吧,我不知道256位或512位,但是我聽說過1024位處理器(我現在找不到)。這個詞是 VLIW ,代表非常長的指令詞。這就是指令總線,而不是數據總線寬度。優點是您可以大規模實現指令級並行(ILP)。
我與ILP的第一次接觸一定是20年前使用摩托羅拉DSP的情況,用於在將數據移入和移出內存時執行MAC(乘法和累加),以便您可以在下一條指令上執行新的MAC,而不會浪費兩個MAC之間的時間來移動數據。
今天,通用提供此選項的控制器。 VLIW在更大範圍內應用了此方法。
由於您的數據總線寬度不會那麼寬,因此您可以在一條指令中添加多個指令以及常量。數據總線不遵循趨勢的原因是,它非常無用。 64位數據寄存器可以代表20個十進制數字。您上次需要20位數的精度是什麼時候?對於大多數應用程序10 \ $ ^ {20} \ $ = \ $ \ infty \ $。
進一步閱讀
VLIW體系結構 >
微處理器的“位”通常根據通用寄存器的大小來定義。大小確定處理器可以本地處理多少個數字以及可以訪問多少內存。 64位數字幾乎可以滿足所有算法的需要,可尋址內存(1600萬兆字節)的容量在相當長的一段時間內就足夠了。增加通用寄存器的大小根本沒有任何優勢。在另一方面,用於在寄存器上執行操作的算術邏輯單元(ALU)的面積與位數的平方成比例。 256位的ALU會大16倍,並且速度會慢得多。實際上,英特爾的Sandy Bridge和Ivy Bridge處理器就是這樣做的,它們具有256位SIMD寄存器,並且每個週期可以對它們執行兩次算術運算和一個存儲器運算。因此,如果一個偷偷摸摸的營銷商想要改變常規使用的條款,那麼可以稱它們為256位甚至768位處理器。
首先,處理器的位大小通常由機器語言程序員可見的抽象體系結構決定,而不是由數據總線大小之類的實現細節決定。
例如,摩托羅拉68000是32位處理器。它具有32位數據寄存器和32位地址寄存器。現在,該體系結構家族的第一個版本僅公開24位地址線。此外,存在僅具有8位數據總線的變體(因此,處理器需要多個訪問周期來執行32位存儲器操作)。 “本機”操作幾種數據類型,因此分別查看256位或512位對於這些數據類型中的每一個意味著什麼是有幫助的。我們有整數,指針和浮點類型。
整數:程序從32位和64位整數中獲得了很多收益。如果限制為64位,則解決方法是使用軟件實現的bignum整數。高級語言可以實現整數類型,以便操作可以在“ fixnums”和“ bignums”之間平滑切換。當然,使用bignum會對性能造成負面影響,但是您必須從整體上考慮:程序中有多少個操作是bignum操作。 256或512位數字並不能消除對bignum的需求,它們只會增加淨空,而我們必須切換到bignum。如果要操作2048位公共密鑰,則將無法使用512位整數(但是具有512位數字的bignum可能會很快)。
指針:較寬的指針允許兩件事:較寬的地址空間以及存儲在指針中的其他元數據。這些天地址空間是虛擬的,因此即使內存不增加,地址空間也可以增加。有人建議,如果您有128位指針,則地址空間是如此之大,以至於您可以將操作系統和內核的所有用戶空間進程放在一個不受保護的空間中的任意位置,這不太可能碰撞。不僅可以簡單地創建更大的地址空間,還可以使用胖指針來承載不是地址位的位,例如有關引用對象的信息(類型,大小和其他信息)或與安全性有關的信息。這種事情可能會有一些“最佳肥胖”,而且如果我猜到了,我仍將其限制在128位。轉到256位指針似乎沒道理,更不用說512。Fatter指針有一個缺點:它們會膨脹所有包含指針的數據結構。而且,通常,您希望指針的大小相同,否則,在指令集體系結構(如內存段)中需要復雜化,因此您將擁有完整的指針(段描述符和偏移量)或僅局部指針(在某些可理解段內的偏移量)
浮點類型:浮點數中的更多位意味著更高的精度。我要說的是,浮點類型從更廣泛的表示中受益最大。 256或512位浮點類型將提高數字代碼的穩定性以及需要多次迭代的科學計算的質量,並在此過程中累積錯誤。浮點數的精度與整數精度不同:我們無法將浮點數類型分為fixnums與bignums之類的範圍。浮點數的更高精度會影響所有不精確數字的質量,無論它們接近於零還是具有較大的數量級。浮點指數中更多的位也可以極大地擴展浮點數的範圍,並且比將位添加到大整數中要快得多。
由於這些原因,我懷疑未來的主要趨勢將是硬件浮點數的寬度增加,而不一定是指針和整數的寬度增加。
請記住,浮點數已經領先於其他浮點數過去的類型。例如,有一段時間我們主要使用32位處理器支持64位IEEE雙浮點數。這是因為儘管您可以使用32位指針和整數完成很多工作,但是對於任何嚴肅的數字工作,32位浮點數非常有限。
一個非常非常有用的功能,很高興看到浮點表示形式的出現,它是類型標記的一些備用位。用動態的高級語言(對象具有類型,但是存儲位置保留任何類型的值)來實現浮點類型是一項艱苦的工作,因為可以在指針和類似整數的對像中找到備用位來放置識別類型標記,這很難處理浮點數。因此,最終經常發生的是浮點數被堆分配。有些方案會從尾數中竊取位,因此與同一台機器上其他語言的浮點數相比,該語言的浮點數類型會失去精度。
它實際上並沒有幫助您做任何有用的事情。 64位數字可以為幾乎所有目的提供足夠的精度(儘管Intel系統具有80位浮點數),但是多餘的行會增加成本和功耗,同時對時鐘速度產生較小的負面影響。
從歷史上看,CPU使用的最小位數對他們的預期目的具有實際意義。隨著技術的進步,更廣泛的總線和ALU成為可能,因此總線尺寸的增加可滿足更廣泛的適用性:
實際上,取決於您定義位的方式,此類處理器存在並且很常見。您幾乎可以肯定現在正在使用它。正如Olin所解釋的,256位數字沒有太多用途,但是4 x 32位數字呢?如果ALU可以同時添加4對32位數字,該怎麼辦。這種ALU(我知道)最早是在1970年代在矢量超級計算機中實現的。我第一次擁有這樣的計算機是當我擁有一個帶有MMX的英特爾奔騰處理器時。
還記得那些傢伙嗎?
MMX芯片具有單指令-多數據指令集( SIMD),可讓您添加1×64位對,2×32位對,4×16位對或8×8位對。
但這沒什麼。現代的圖形卡具有 GPU(以前代表圖形處理單元,但現在代表通用處理單元)。這些通常是廣泛的SIMD實現,能夠一次分支,加載和存儲128或256位。英特爾的Larrabee原型微體系結構在每個內核上都包含兩個以上的512位SIMD寄存器。
請注意,請勿將SIMD與多核相混淆。一個CPU的每個內核都有自己的寬域ALU,能夠將一組整數相加。
因為我們還不需要它。
通常,位數(我將其定義為寄存器中的位數)或多或少直接轉換為可尋址內存的數量。這當然得到了簡化,因為取決於處理器,寄存器可能是位長度的2倍,或者存在規避那些內存限制的技術(那裡有人記得在16位窗口上進行編程嗎?)。 / p>
“為什麼不簡單地增加數據線的數量並創建256位呢?”
所有適合LGA-2011插槽的英特爾處理器實際上都具有256個數據引腳連接到主板上通往DRAM的256條數據線。如果您最近使用的筆記本電腦或台式機沒有至少有256條數據線,我會感到有些驚訝。我問您從哪裡得到這樣一個錯誤的想法,那就是它們“不……只是增加數據線的數量”?
LGA-211套接字數據表(是: LGA-2011套接字數據表),第6.1節指出,這些CPU具有256個數據引腳和76個地址引腳(組地址+內存地址)。
因為沒有應用程序需要或有可能一次使用128位以上的數據表示數據。
您知道,多媒體處理器和圖形卡將在主板CPU之前出現,對於照片/視頻,使用這麼大的數據長度立即進行處理是很有意義的。
計算機系統的含義是一台計算機,它需要一些輸入並提供一些輸出。我們必須滿足這些方面的計算機要求,因此開發人員通過擁有3條總線(即地址總線,數據總線和控制總線)來建立基準。 1)地址總線獲取/選擇存儲器中的特定地址以進行讀/寫操作; 2)數據總線然後獲取數據,以處理/存儲為目的將該數據提供給處理器和內存/從處理器和內存中獲取; 3)控制總線創建一個接口控制協議,並要求系統予以遵守。
這些是對用戶/服務器/客戶端進行一些有用的計算所必需的。通常,性能(任務完成速度,毛刺減少等)取決於清除系統中的瓶頸。即,如果CPU能夠以比硬盤驅動器的傳輸速度高得多的速率進行處理,則瓶頸將出現在HDD上。同樣,我們需要針對特定的數據速度和代碼寬度具有正確的處理速度。
從一開始,由於各種原因,例如硬件複雜性,成本,需求,有效算法以及市場的主要原因範圍是問題主機提到的產生高數據總線寬度的主要障礙,例如256位或512位。這些都是可能的!但是需求還不存在,市場的需求還不可見,並且缺少對軟件的支持。
256位處理器表示數據總線的寬度,特定處理器可以處理,或者ALU可以在單個執行中處理。我們從4位開始,然後是8,16,32,現在是64位,甚至是128位,這是目前的市場範圍產品。
因此,在提出這些問題之前,您必須始終了解市場需求及其範圍。在歷史上,這是理解生活方式的唯一直接方法。如果買不起,怎麼買?如果您不能購買,生產者將如何生產?如果他不能生產,那該產品就不存在了!