返回列表 发帖

CPU之Intel與AMD的詳細區別,转帖

CPU之Intel與AMD的詳細區別。

CPU之Intel與AMD的詳細區別其一:核心架構模型分析。
第壹是AMD K8系(包括K8、K10、K10+):

該模型的L2設定的是1M每Core版本(K10、K10+為原本512K),也就是128K每路(K10、K10+為64K每路),該模型有2路(K10、K10+為8路)。裏面每個小黑方塊代表1K體積指令(K10、K10+為512B體積指令),由於篇幅請大家在大腦裏模擬四個(K10、K10+為兩個)這樣的小黑方塊方陣。L1-I(指令)裏的每個小黑方塊也代表1K體積指令,因為目前AMD的L1無論是D(數據)還是I(指令)都是2路設計。
接下來開始分析:
第一步:沒有L3的X2、X3、X4的K8系就是AMD的內存控制器讀取物理內存裏的數據和指令在L2內,由L2-LTB把物理內存的數據映射到虛擬內存,這樣L2-TLB就在二級緩存裏建立了虛擬內存的頁表。L2-TLB開始向ITLB發送虛擬內存頁表,L1-I讀取由L2-TLB對內存控制器向虛擬內存讀取並暫存於L2的指令;有L3的X2、X3、X4的K8系就是AMD的內存控制器讀取物理內存裏的數據在L3內,由L2-LTB把L3的數據和指令映射到虛擬內存並暫存與L3,L2再去讀取這個指令和數據,而L1-I-TLB就讀取L2-LTB的指令,並把這些指令送入L1-I。
第二步:由於AMD的L2是128K每路共計8路的設計,在一週期內,這1024KB的裏面的指令部分假設為256KB(就是如圖的128K×2),那麼L1-I每路讀取32K體積指令,2路共計64K。
分析:每路的32K,那麼這32K的指令停留在L1-I的時間(延遲)就會加長,但是AMD的L1-I每路32K的設計,能最大化的保證以數量來提升命中率,由於是每路32K的設計也會造成L1-I的指令的更新速度(延遲)也會減低,畢竟L1無論是D(數據)還是I(指令)的屬性就是高速的緩衝(高速緩衝屬性:高速的堆棧新指令和新數據和高速的清空舊數據和舊指令)。總結:AMD如此設計造成了L1-I和L1-D的延遲厲害,也造成了對L2的依賴度的減輕。
第三步:L1-I的指令群到達了L1-I出口,在通過出口的時候被Branch Targets(分支目標)、History Counter(檔案計數器)、RAS(Row Address Strobe)target Address(行地址选通脉冲目標地址)進行了分支、定量、定位。接下來Fetch Transit(過境讀取單元) 讀取了這些被分支、定量、定位的指令群,由Pick(选择)進行了指令類型的選擇,最後把這些選擇好的指令送入了三組對等解碼單元。指令開始進入了Decode 1(一級解碼)和Decode 2(二級解碼),初解碼後的指令由Pack(打包)進行打包,之後再送入Decode(末端解碼)進行解碼,這樣每組就就能最多解碼三條微指令,這些解碼後的指令最後送入Instruction Control Unit(指令控制器)。

第貳是Intel Core 2系(包括Conroe和Penryn)

該模型的L2設定的是2M每Core版本,也就是256K每路,該模型有1路。裏面每個小黑方塊代表1K體積指令,由於篇幅請大家在大腦裏模擬八個這樣的小黑方塊方陣。L1-I(指令)裏的每個小黑方塊也代表1K體積指令,因為Core 2的L1無論是D(數據)還是I(指令)都是8路設計。
第一步:Intel的內存控制器讀取物理內存裏的數據和指令在L2內,L1-I-TLB讀取L2裏的指令,並暫存於L1-I。
第二步:由於Intel的L2是256K每路共計8路的設計,在一週期內,這2048KB的裏面指令部分假設為512KB(就是如圖的512K的一半256K),那麼L1-I每路讀取4K體積指令,8路共計32K。
分析:每路的4K,那麼這4K的指令停留在L1-I的時間(延遲)就會很低,就是Intel的L1-I每路4K的設計,能夠最大化的以細度提升命中率的精度,由於是每路4K的設計也讓L1-I的指令更新速度(延遲)會大幅銳減,由於L1的屬性本質問題遂總結:Intel的如此設計讓L1-I和L1-D的延遲十分之低,但是也造成了對L2的依賴度的增加。
第三步:在指令群還在L1-I的時候,Instruction Fetch(指令提取)就把指令群給讀取到了Branch Prediction&Instruction Fetch Decode Buffer(分支預測及指令提取解碼緩衝器)裏。指令群被預測分支進行分派並且臨時存儲在指令提取解碼緩衝器,然後送入Instruction Queue (指令排列)進行排隊。由於有了Branch Prediction(分支預測)的先期幫助,就能讓Instruction Queue (指令排列)把Complex Instruction(複雜指令)和Simple Instruction(精簡指令)精確的分類排序,就有了壹個Complex Decoder(複雜解碼器)和叁個Simple Cecoder(精簡解碼器)的設計。指令群開始進入了解碼器部分,這些分支後又分類排序的指令群就各就各位的進入了相應的解碼器裏,Complex Decoder(複雜解碼器)一次把複雜指令解碼為四條微操作,而Simple Cecoder(精簡解碼器)就能一次把精簡指令解碼為一條微操作。在Complex Decoder(複雜解碼器)旁邊還有Micro-operation-Code Sequencer(微操作代碼排序器)來對複雜解碼器解碼的四條微操作進行專職的排序。{但是根據Intel的提示,Instruction Fetch(指令提取)有和間隔了兩個功能單元的Instruction Queue(指令排列)與解碼器之間又有聯繫,於是乎,是否是Intel的一種取巧行為呢?因為Intel的L1-I的高精度的設計,會不會可以把在L1-I內的某些複雜指令[莫非Instruction Fetch(指令提取)有單純指令類型的識別功能?]直接提取到Complex Decoder(複雜解碼器),來加快其效率?還是其他什麼的未知作用?}微操作群就進入了Micro-operation Fusion(微操作融合)進行特定的至少兩條微操作進行融合為一條微操作,這樣就提升了解碼效率。把融合後的和未融合的稱為雜合微操作,這些雜合微操作就進入了Entry Micro-operation Buffer(輸入微操作緩衝器)在進入Register Alias Table Allocator(註冊更名表分配器)進行更名分配,然後進入Entry Reorder Buffer(輸入重排序緩衝器)進行了最後一次的排序,最終進入Entry Reservation Station(輸入預定站)。

第叁是Intel Nehalem系(包括Gulftown、Bloomfield、Lynnfield、Clarkdale)

該模型的L2設定的是原本容量256K,該模型有8路。裏面每個小黑方塊代表1K體積指令。這樣的小黑方塊方陣。L1-I(指令)裏的每個小黑方塊也代表1K體積指令,因為目前Nehalem的L1-I(指令)為4路設計。
第一步:Intel的內存控制器讀取物理內存裏的數據在L3內,由L2-LTB把L3的數據和指令映射到虛擬內存並暫存與L3,L2再去讀取這個指令和數據,而L1-I-TLB就讀取L2-LTB的指令,並把這些指令送入L1-I。
第二步:由於這次Intel在L2的變化頗大,設計成為了8路總共256K的L2,也就是每路為32K,是Core 2系的八分之一。由於SMT(Simultaneous Multi-hreading:同步多綫程)(還有本人的想法:X86 Instruction Alignment Macro-Op Fusion:X86指令對齊宏操作融合也可能有關系#1)的加入對L1-I的設計產生了一個很有趣的改變:由Core 2的4K每路的8路共計32K修改為了Nehalem的8K每路的4路共計32K(但是延遲還是3週期,Nehalem的L1-D延遲是4週期,L1-I和L1-D的不對等延遲首次出現),但是根據我查看的某些資料上的敘述,指令的出入口仍然是8個,也就是傳統的每路一個變成了每路兩個。我簡要的說明這個每路兩個的必要”。由於SMT就會造成L1-I在SMT狀態下的容量對半平分,這樣就無法輸送更多的指令,所以每路兩個入口的設計就有效的避免了由於SMT造成的擁堵所產生的瓶頸。因為在SMT狀態下,第一組指令行和第二組指令行同時往之一和之二入口進入4K體積指令,這樣的設計和機制就造就了L1-I的奇特設計。
第三步:由Prefetch Buffer(預取緩衝器)和Branch Prediction(分支預測)共同把來自L1-I的指令群讀取到Predtiction Decode&Instruction Length Decoder(預解碼及指令長度解碼器)內進行預解碼和對長度進行解碼(這樣可以加強SMT的功能和加強解碼效率)讓指令群內的指令最大限度的等長。這些優化解碼後的指令群進入了Instruction Queue&X86 Instruction Alignment Macro-Op Fusion( 指令排列及X86指令對齊宏操作融合),這個功能單元的作用就是把指令進行分類排列(和Core 2類似,衹是機制加強)及對等長(就是指令主幹相同,具體參考_宏融合:http://zh.wikipedia.org/zh-cn/%E5%AE%8F%E8%9E%8D%E5%90%88)的指令進行融合(每次最多可以融合四條),這樣就又加強了SMT的功能和加強了解碼效率。{在ILTB和排序及宏融合之間又和Core 2一樣,加入了Branch Prediction(分支預測)和L1 Cache-Ins Tracing(壹級指令數據追蹤),Intel的核心架構在解碼部實在是太取巧了,這樣的橫亙設計既造成了Core 2的效果又讓Nehalem的指令命中率較Core 2提升斐然,[L1 Cache-Ins Tracing(壹級指令數據追蹤)在Netburst架構時代,是L1-I向外部L2的追蹤,而在Nehalem及其以後架構時代,就反向而行——向內部的解碼部進行追蹤,這樣的設計就能最大化的保障了Nehalem的指令命中率的精度,把毫無精度的抹除而通知Prefetch Buffer(預取緩衝器)和Branch Prediction(分支預測)重新進行指令群的讀取和導向]}指令群進入和Core 2一模一樣的解碼單元:由於有了Branch Prediction(分支預測)的先期幫助,就能讓Instruction Queue (指令排列)把Complex Instruction(複雜指令)和Simple Instruction(精簡指令)精確的分類排序,就有了壹個Complex Decoder(複雜解碼器)和叁個Simple Cecoder(精簡解碼器)的設計。指令群開始進入了解碼器部分,這些分支後又分類排序的指令群就各就各位的進入了相應的解碼器裏,Complex Decoder(複雜解碼器)一次把複雜指令解碼為四條微操作,而Simple Cecoder(精簡解碼器)就能一次把精簡指令解碼為一條微操作。在Complex Decoder(複雜解碼器)旁邊還有Micro-operation-Code Sequencer(微操作代碼排序器)來對複雜解碼器解碼的四條微操作進行專職的排序。然後微操作群就進入了Decoded Instruction Queue(Micro-Operation entries)[解碼後指令排列(微操作輸入)],這個單元的作用和Core 2的一樣就是微操作的排序和暫存。{又出現了類Core 2的跨單元設計,在相隔了解碼器部的該單元和Instruction Queue&X86 Instruction Alignment Macro-Op Fusion( 指令排列及X86指令對齊宏操作融合)之間又加入了Micro Instruction Sequencer(微指令排序器),那麼這樣,Intel的Predtiction Decode(預解碼)的設置就發揮了作用,讓Intel的解碼效率和SMT功能更加的強化,因為預解碼後的微指令就可以繞過解碼器部,直接達到了微操作排序和暫存單元。}在該單元的旁邊又出現了專職的Loop Stream Decoder(循環流解碼器),該專職的功能單元用途是專職的對軟件綫程循環操作進行解碼,既加強效率又節省電力。微操作群進入了和Core 2一樣的Micro-operation Fusion(微操作融合)作用仍然是進行特定的至少兩條微操作進行融合為一條微操作,這樣就提升了解碼效率。微操作群進入最後第三個單元2X Retirement Allocation Table(二倍文隱退文件配置表),當處理器執行過一條指令後,自動把它從調度進程中去掉,而且是兩倍於CPU的核心頻率,這樣就讓微操作群的有效率大幅提升,也同時增加了有效微操作的吞吐量。微操作群進入了倒數第二的Reorder Buffer Fused(重排序緩衝器融合器)進行最後的排序並進行最後的融合。在此功能單元又有最後一個附屬的功能單元2X Retirement Register File(二倍隱退註冊文件),這個功能單元和2X Retirement Allocation Table(二倍文隱退文件配置表)具有異曲同工之妙,後者是文件配置表的二倍核心頻率的隱退,而前者就更換為了註冊文件,讓微操作群的有效率和有效微操作的吞吐量再次作出總結式的提升和增加,最後就是和Core 2一樣的解碼部的最後一個單元Entry Reservation Station(輸入預定站)了!
簡短總綱總結,為何Intel的性能是越來越高,除了大家都知道的Integrated memory controller(集成內存控制器)的加入和Intel的QuickPath Interconnect(快速通道互聯)的建立和Translation Lookaside Buffer(旁路转换缓冲或页表缓冲) 的加寬以外,就是還有先進的解碼機制及其為了主要解碼的有效性和效率的提升而設計的各自附屬加速單元和直接的跨單元設計等等!

太高深了,看不懂。

TOP

太高深了,看不懂,学 习 学 习

TOP

太深奥了  晕

TOP

基本上就是看不懂, 这个是非常高的技术学问吧。 要是能吧这个都搞懂了,中国也能出高性能的处理器了。

TOP

尽是繁体字,看着很吃力

TOP

返回列表