Chiphell - 分享与交流用户体验

 找回密码
 加入我们
搜索
      
查看: 22211|回复: 134

[CPU] CPU核心架構之模型分析

  [复制链接]
发表于 2009-9-16 09:12 | 显示全部楼层 |阅读模式
本帖最后由 empressgirlCHH 于 2009-9-17 04:29 编辑

A.JPG
第壹是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(指令控制器)。
b.JPG
第貳是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(輸入預定站)。
c.jpg
第叁是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個,也就是傳統的每路一個變成了每路兩個。我簡要的說明這個每路兩個的必要,具體的請大家參見:“http://we.pcinlife.com/thread-1243663-1-1.html”。由於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(旁路转换缓冲或页表缓冲) 的加寬以外,就是還有先進的解碼機制及其為了主要解碼的有效性和效率的提升而設計的各自附屬加速單元和直接的跨單元設計等等!
发表于 2009-9-16 09:15 | 显示全部楼层
LZ原创还是转载的?
 楼主| 发表于 2009-9-16 09:18 | 显示全部楼层
本帖最后由 empressgirlCHH 于 2009-9-16 09:22 编辑

2# nApoleon

大大的原創,毫無轉載成份,是技術乾,不是技術湯!
乾:代表毫的是毫無轉載的水份!
而且圖也是我自己使用Windows XP自帶的畫圖程序參考官方資料繪製的!
发表于 2009-9-16 09:45 | 显示全部楼层
好长*/-27先坐个地板再看
发表于 2009-9-16 09:49 | 显示全部楼层
*/-51学习了
发表于 2009-9-16 09:53 | 显示全部楼层
架构帝!
话说CHH应该增加简繁体转换的功能了
发表于 2009-9-16 10:02 | 显示全部楼层
*/-51看了也做不出来
发表于 2009-9-16 21:21 | 显示全部楼层
支持原创,先顶慢慢看~
发表于 2009-9-17 12:03 | 显示全部楼层
LZ来预测下推土机的构架吧

AMD貌似最近申请了不少专利,应该有的看

PS:貌似还号称是什么128bit的......
发表于 2009-9-17 17:24 | 显示全部楼层


有人在anandtech贴了这么一个东西,各路大仙们来分析一下吧。
发表于 2009-9-17 18:53 | 显示全部楼层
http://farm3.static.flickr.com/2426/3880571934_3c430e8bf3_b.jpg

有人在anandtech贴了这么一个东西,各路大仙们来分析一下吧。
lixianglover 发表于 2009-9-17 17:24

这个是core2的吧
发表于 2009-9-17 20:26 | 显示全部楼层
这个帖子要顶啊
好贴!
发表于 2009-9-17 20:47 | 显示全部楼层
本帖最后由 lixianglover 于 2009-9-17 20:49 编辑
这个是core2的吧
ayanamei 发表于 2009-9-17 18:53

不是。

这个架构处理器核心内部簇化了。
发表于 2009-9-18 15:24 | 显示全部楼层
这个技术贴太强大,曲高和寡啊
发表于 2009-9-18 21:20 | 显示全部楼层
本帖最后由 hammerking 于 2009-9-18 21:23 编辑
不是。

这个架构处理器核心内部簇化了。
lixianglover 发表于 2009-9-17 20:47


发这个图的人说是自己原创的,但是恰好跟一个bulldozer爱好者根据amd专利推测的簇型微架构很像。amdzone上一个据说是amd某部门经理的人说看了这图,跟amd工程师联系确认此图不是出自amd,但是对这个bulldozer可能的架构预测图做了评价“有些是正确的,有些则完全错误”。。。
发表于 2009-9-18 21:48 | 显示全部楼层
我的天,好复杂的图图·
发表于 2009-9-18 21:53 | 显示全部楼层
争取一年内看懂这贴。
发表于 2009-9-20 01:30 | 显示全部楼层
所谓的“完全错误”会是哪些呢?
发表于 2009-9-22 18:07 | 显示全部楼层
太深奥了,学习
发表于 2009-9-22 23:56 | 显示全部楼层
先顶下再慢慢看,学习了*/-34
发表于 2009-9-26 03:22 | 显示全部楼层
学习了*/-93
发表于 2009-9-26 14:26 | 显示全部楼层
这个,楼主是否可以考虑去AMD上班?
发表于 2009-9-30 17:17 | 显示全部楼层
转换……图不补了

第一是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(指令控制器)。
  下载 (90.22 KB)

2009-9-17 04:29
第二是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(输入预定站)。
  下载 (107.13 KB)

2009-9-17 04:29
第三是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个,也就是传统的每路一个变成了每路两个。我简要的说明这个每路两个的必要,具体的请大家参见:“http://we.pcinlife.com/thread-1243663-1-1.html”。由于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(旁路转换缓冲或页表缓冲) 的加宽以外,就是还有先进的解码机制及其为了主要解码的有效性和效率的提升而设计的各自附属加速单元和直接的跨单元设计等等!
发表于 2009-10-6 12:37 | 显示全部楼层
感谢ls的翻译

话说lz怎么看待如何解决l1延迟的问题?据说nehalem也有这个毛病。
发表于 2009-10-6 18:08 | 显示全部楼层
先顶  后学习~~~~~~
发表于 2009-10-6 20:20 | 显示全部楼层
比较期待AMD下一代 推土机 的新构架
发表于 2009-10-6 23:44 | 显示全部楼层
推土机一出来 可能就引起CPU 市场的震荡~
发表于 2009-10-7 14:56 | 显示全部楼层
看了这个本来换x58的愿望没了*/-70  还是等推土机架构吧
发表于 2009-10-7 15:11 | 显示全部楼层
这个是core2的吧
ayanamei 发表于 2009-9-17 18:53

看ALU的结构就知道不是。

http://farm3.static.flickr.com/2426/3880571934_3c430e8bf3_b.jpg

有人在anandtech贴了这么一个东西,各路大仙们来分析一下吧。
lixianglover 发表于 2009-9-17 17:24


15L正解。
发表于 2009-10-7 21:27 | 显示全部楼层
看了一下推土机的假想图, 应该是一个具有4-issue的结构

两个对称的整数单元?整数执行能力应该远高于k10,不过这也一直是AMD的短板了

执行单元多于目前任何一款x86?...
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2020-12-2 14:10 , Processed in 0.018176 second(s), 21 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2007-2020 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表