題:
為什麼更多的晶體管=更多的處理能力?
Oli
2010-10-25 15:04:20 UTC
view on stackexchange narkive permalink

根據Wikipedia,處理能力與摩爾定律密切相關:

http://en.wikipedia.org/wiki/摩爾定律

可以便宜地放置在集成電路上的晶體管數量大約每兩年增加一倍。這一趨勢持續了半個多世紀,預計直到2015年或更晚才停止。許多數字電子設備的功能與摩爾定律緊密相關:處理速度,存儲容量,傳感器,甚至是數碼相機中像素的數量和大小。所有這些也在以(大約)指數的速度提高。

作為具有計算機體系結構背景的人,我不明白為什麼在CPU中增加更多的晶體管會提高性能。這是它的強大功能,因為最終,可以大致順序地讀取/執行指令。誰能解釋我缺少哪一部分?

更多晶體管=更多並行性
不管處理器有多少個內核,這都是事實。
是。更多的晶體管意味著您可以放置​​更多的並行執行單元。更大的緩存。更深層次的管道。
緩存是最大的緩存。我認為專用於緩存的矽房地產比例一直在增加。現代處理器的大多數性能都歸因於緩存,並且緩存僅在存在局部性時才起作用,但是高速緩存越大,對局部性的要求就越寬鬆(仍會加快具有更古怪的內存訪問模式的更大應用程序的使用)。
考慮一個乘數。有了足夠的晶體管,您可以使用完整的查找表,並一步完成整個乘法運算。使用更少的晶體管,您必須執行重複添加等操作。
五 答案:
JustJeff
2010-10-25 16:29:00 UTC
view on stackexchange narkive permalink

許多為您提供更多功率的產品僅需要更多的晶體管來構建它們。較寬的總線可擴展幾乎所有處理器組件中的晶體管數量。高速緩存根據緩存大小添加晶體管。如果延長管道,則需要添加階段和更複雜的控制單元。如果添加執行單元以幫助緩解流水線中的瓶頸,則每個執行單元都需要更多的晶體管,然後用於保持執行單元分配的控件會增加更多的晶體管。

電路,一切並行發生。在軟件世界中,默認設置是按順序進行的,並且軟件設計人員會竭盡全力將並行性內置到軟件中,以便可以利用硬件的並行性。並行僅意味著同時發生更多事情,因此大致相當於速度。並行完成的工作越多,完成工作的速度就越快。唯一的 real 並行性是工作中擁有更多晶體管時得到的。

Paul A. Clayton
2012-10-20 11:54:52 UTC
view on stackexchange narkive permalink

即使在非VLIW ISA上,第一條指令也不一定要“順序執行”,執行只需要順序出現即可。有序超標量實現可以與另一個指令並行執行多個指令。為了有效地做到這一點,必須增加(加寬)用於解碼指令的硬件,必須增加硬件以確保要並行執行的指令的數據獨立性,必須增加執行資源,並且通常會增加寄存器文件端口的數量。所有這些添加晶體管。

無序實現允許在沒有數據依賴性的情況下在較早的指令之前執行較新的指令,它使用附加的硬件來盡快處理指令調度當數據可用時,添加重命名寄存器和硬件以進行映射,分配和釋放(更多晶體管),以避免讀後寫和寫後寫的危害。亂序執行使處理器可以避免停頓。

亂序處理器中的加載和存儲的重新排序要求確保程序順序中的較早存儲將結果轉發給後續的加載。相同的地址。這意味著地址比較邏輯以及存儲的地址(和大小)的存儲(以及數據的存儲),直到存儲已提交到內存(高速緩存)為止。 (對於具有較弱的內存一致性模型的ISA,還需要檢查負載是否相對於其他處理器(更多的晶體管)的存儲進行了正確排序。)

流水線添加了一些其他控制和緩衝開銷,並防止在指令處理的不同部分重複使用邏輯,但允許指令的不同部分在時間上對於不同的指令重疊。

流水線和超標量執行會增加控制危害的影響(即條件分支和跳躍)。流水線化(以及無序執行)甚至可能延遲無條件跳轉的目標可用性,因此添加硬件以預測目標(以及條件分支的方向)允許繼續獲取指令,而無需等待指令執行部分的執行。處理器以提供必要的數據。更精確的預測變量往往需要更多的晶體管。

對於亂序處理器,可能希望在計算所有先前存儲的地址之前允許存儲器執行加載,因此一些

緩存可以減少等待時間並增加內存訪問的帶寬,但是可以增加晶體管來存儲數據和存儲標籤(並將標籤與標籤進行比較)。要求的地址)。還需要其他硬件來實施替換策略。硬件預取將添加更多的晶體管。

在硬件中而非軟件中實現功能可以提高性能(同時需要更多的晶體管)。例如,TL​​B管理,複雜的運算(例如乘法或浮點運算),特殊的運算(例如計數前導零)。 (添加指令還增加了指令解碼的複雜度,通常也增加了執行的複雜度,例如,控制將使用執行硬件的哪些部分。)

SIMD /矢量操作會增加指令的數量。每條指令執行的工作,但需要更多的數據存儲(更大的寄存器),並且通常使用更多的執行資源。

(推測性多線程還可以使多個處理器更快地執行單個線程程序。顯然,將處理器添加到芯片上可以增加晶體管數。)

擁有更多可用的晶體管還可以使計算機架構師為ISA提供更多對軟件可見的寄存器,從而有可能減少內存訪問的頻率,這種訪問往往比寄存器訪問慢,並且涉及某種程度的間接訪問(例如,增加偏移量)。

集成-增加了芯片上而不是系統中晶體管的數量-減少了通信延遲並增加了帶寬,顯然可以提高性能。 (功耗的降低也可以轉化為更高的性能。)

即使在指令執行級別,添加晶體管也可以提高性能。例如,進位選擇加法器與低位進位的不同假設並行兩次將高位相加,在從低位進位可用時選擇正確的高位和,顯然比簡單的方法需要更多的晶體管紋波進位加法器,但減少了產生總和的延遲。類似地,具有單行進位保存加法器的乘法器使用的晶體管(但速度較慢)比Dadda(或Wallace)樹乘法器少,並且無法進行流水線處理(因此必須複製以允許另一個乘法在更早的時候開始執行)

上面的內容可能很詳盡,但並不詳盡!

新來的人很好的答案!
Thomas O
2010-10-25 15:31:29 UTC
view on stackexchange narkive permalink

晶體管的數量不一定與更大的處理能力相關,但是,有了更多的晶體管,處理器可以執行比以前更複雜的指令。例如,具有SSE的處理器將使用其他晶體管來實現這些複雜的指令(例如,在一個週期內添加許多數字。)

艾倫·凱(Alan Kay)計算得出,自從他在施樂PARC的Smalltalk中工作以來,由於錯誤的架構和軟件效率低下,我們已經失去了18年的晶體管倍增能力,因為計算機的速度肯定不如晶體管倍增所表明的那樣快。
Leon Heller
2010-10-25 16:18:36 UTC
view on stackexchange narkive permalink

另一個因素:當您將更多晶體管塞入給定區域時,它們會變小,從而使其變得更快。

隨著晶體管之間的距離越來越近,您會得到其他不良影響,例如增加的漏電流,因此這是在性能和​​低功耗之間進行權衡的問題-大多數製造商似乎都在追求性能。
smashtastic
2010-10-25 17:55:21 UTC
view on stackexchange narkive permalink

近年來,微處理器取得了長足的進步,更長的流水線,謂詞分支和片上緩存等都增加了與處理器相關的複雜性。

確定CPU處理,獲取,解碼的基礎知識,ALU,寫入仍然相同,但是為了加快處理速度,使用了更長的管道。較長的pipennes會提高連續代碼執行的性能,但是當代碼分支破壞性能時,也會導致更長的命中時間。補救措施,預測性分支。預測分支是一個商業秘密,intel通常不會公開其全部工作原理,只是使用它來保持其CPU盡可能高的性能。

緩存內存比RAM快得多,但是從RAM移到緩存以及從緩存移回到RAM的內容是什麼???再次,這是專有的東西,但是又需要晶體管來實現。

因此,多餘的晶體管會進入更長的流水線,預測分支算法,高速緩存和內存算法之類的東西。

這裡沒有提到多核處理器和共享內存/資源訪問控制器。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...