1. <blockquote id="lwgwu"></blockquote>
    2. <kbd id="lwgwu"><samp id="lwgwu"></samp></kbd>
    3. <abbr id="lwgwu"><tt id="lwgwu"></tt></abbr>
      免费专区丝袜调教视频,亚洲午夜无码极品久久,亚洲乳大丰满中文字幕,乱乱网,两个人看的www视频中文字幕,中文字幕日韩精品无码内射,欧美成aⅴ人高清免费,女人被爽到高潮视频免费国产
      泡泡網CPU頻道 PCPOP首頁      /      CPU     /      評測    /    正文

      Conroe強在哪兒?Core vs K8架構解析

      自從采用 P6 微架構的 Pentium Pro 處理器之后,X86 處理器開始擁有亂序發射和執行指令的能力。不過,亂序緩沖區內平均大約三分之一的指令很難重排序——就是那些 load 操作。把 load 操作提前執行可以極大的提高性能。與需要數據的時候才進行 load 操作相比,盡可能早的開始 load 操作十分有用,因為這可以更有效的把一級緩存及二級緩存的延遲隱藏掉。

        這很容易理解。假設現在有一個 ALU 操作需要某數據,可是該數據不在一級緩存中。如果 load 該數據的操作在該 ALU 操作之前就已經執行完畢,那么訪問二級緩存的延遲就不會對性能產生影響。不過,需要注意的是,如果 load 操作針對的數據在程序中還有 store 操作要對其進行寫入,那么就不能把 load 操作提前到該 store 操作之前執行。因為這樣的情況下,如果提前執行 load 操作的話,意味著你得到的會是錯誤的數據,而不是最新的。

      {imageTitle}

       Intel 內存相關性預測技術

        上圖中的 Load 2 操作不能提前執行,因為它操作的數據與 Store 1 操作的數據相同,需要等待 Store 1 操作先完成。只有 Store 1 執行完畢,數據Y才擁有正確的值。不過 Load 4 操作沒有理由不能提前進行,它不需要等待 Store 1 或者 Store 3 操作完成。這樣,通過把 Load 4 操作提前,load 單元有更多的時間去獲得正確的操作數。

        不過,之前的處理器在這種情況下——有 store 操作存在——都不會把 load 操作提前。因為處理器不知道 store 操作針對的數據單元與 load 操作是否相同。如果想要搞清楚是否相同的話,需要計算存儲器地址。這十分困難,因為在指令亂序和調度的時候,存儲器地址還是未知的。

        這時需要注意一個事實:load 操作讀取到一個錯誤數據的概率相當小,只有1%到2%。所以,Intel 的 Core 微架構設計師 Jack Doweck 決定,允許所有的 load 操作提前執行,假設所有的 load 操作讀取到的數據都是正確的。而為了應對錯誤的發生,Intel 加入了一個預測器。

        根據 Jack Doweck 的描述,以及我們對以前的 P6 微架構和 Pentium M 處理器的了解,我們制作了下面的圖表。注意這并非 Intel 官方的圖表。

      {imageTitle}

       Core 微架構亂序執行引擎

        預測器做出預測,并指示亂序緩沖區是否可以把某 load 操作提前執行。在 load 操作提前執行之后,沖突監測單元會掃描MOB(Memory Reorder Buffer),查看是否有 store 操作與 load 操作沖突。如果有沖突發生的話,load 操作必須重新執行,這時大約會損失20個時鐘周期。不過與之前的處理方式相比,Core 微架構采用的這種處理方式總體上肯定可以提高處理器的效率。

        檢測某 load 操作和某 store 操作是否是針對同一內存地址的行為稱作內存相關性預測(memory disambiguation)。Core 微架構允許 load 操作提前到 store 操作之前執行的處理方式可以帶來性能上的巨大提升。在某些測試代碼中,這個提升甚至達到了40%。雖然我們在實際的應用程序中不會看到如此大的提升,但是無疑這項技術會帶來令人印象深刻的提升——我們可以期待10%到20%的性能提升。

        不要忘記,load 操作可能是所有操作中最重要的操作。不僅僅因為 load 指令占了X86處理器內所有微指令的三分之一強,還因為當 load 操作發生時可能導致的巨大延遲會引起處理器的等待。那么,這項極其靈活的 load 操作亂序執行技術與其它架構的處理器相比是什么情況呢?

      {imageTitle}

       Load 操作處理方式比較

        舊的 P6 微架構和 Penium M 處理器也已經可以較好的處理 load 操作,可以把某 load 操作提前到另外的 load 操作之前進行,也可以提前到已知不會發生沖突的 store 操作之前進行。P6 微架構的內存亂序緩沖區(Memory Reorder Buffer,簡稱MOB)采用如下的規則:如果在亂序執行窗口中存在與某load操作內存地址相同的store操作,則該load操作不能提前執行;如果在亂序執行窗口中存在內存地址未知的store操作,則任何load操作不能提前執行;某store操作不能提前到另外一個store操作之前執行。

        相比之下,K8 處理器要遜色的多,它只能把 load 操作移動到不相關的 ALU 操作之前進行,而不能移動到其它 load 操作之前,當一個 load 操作等待某 store 操作執行的時候,處理器會浪費大量的時鐘周期。這意味著 K8 處理器在指令亂序這方面受到極大的限制。

        這也許是 K8 處理器在游戲和整數計算等方面輸給 Core 微架構的最重要的原因之一,盡管它擁有延遲更低的內存子系統和更多的整數執行資源。整數運算進行的存儲器操作經常有許多未知的地址需要計算,而浮點運算則不是這樣,它對存儲器的訪問是更加規范的。這也是 K8 處理器在浮點運算方面不輸給 Dothan 處理器的原因之一。

        當 load 操作和 store 操作都已經進入 Load/Store 單元的隊列中的時候,K8 處理器允許 load 操作在不沖突的 store 操作之前執行。不幸的是,這時把 load 操作提前執行已經不能隱藏緩存缺失所帶來的延遲。你可以認為這是 K8 處理器擁有的 Load/Store 亂序機制,但是它在流水線中的位置太靠后,比起 P6 微架構、Pentium M 處理器和 Core 微架構所采用的技術相差甚遠。

      0人已贊

      關注我們

      泡泡網

      手機掃碼關注
      主站蜘蛛池模板: 中日韩三级片| 国产精品日韩av在线播放| 久久精品这里只有精99品| 亚洲αv久久久噜噜噜噜噜| 99久久亚洲综合网精品| 国产ChineseHD精品| 成人h动漫精品一区二区| 天堂AV中字| 福利社91| 久久久久国内精品影院| 7777精品久久久大香线蕉 | 国产一级小视频| 国产成人亚综合91精品首页| 成人精品视频一区二区| 自治县| 国产一级精品毛片基地| 清纯唯美人妻少妇第一页| 丰满熟女乱婬A片六区| 亚洲va在线va天堂xx xx| 日本五区在线不卡精品| 久久久一本波多野结衣| 国产一区二区在线影院| 99re这里只有国产中文精品国产精品| 国产av无码专区亚洲awww| 男人天堂亚洲| 亚洲成av人在线观看网站| 中文字幕久久久久久精| 国产精品美女久久久久浪潮AVⅤ| 欧美综合自拍亚洲综合图| 国产视频最新| 日韩毛片免费无码无毒视频观看| 欧美老熟妇精品| 日本高清视频wwww色| 少妇大胆瓣开下部自慰| 免费看又黄又爽又猛的网站| 肉大捧一进一出免费视频| 67194在线午夜亚洲| 国内偷自第一区二区三区| 精品a片| 国产成人高清精品免费软件| 成人区人妻精品一熟女|