日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于Cache的其它內容

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:甄建勇 ? 2021-11-21 11:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關于Cache的其它內容

上面我們所描述情況,在訪問cache前,已經將虛擬地址轉換成了物理地址,其實,不一定,也可是是虛擬地址直接訪問cache,倒底是使用物理地址還是虛擬地址,這就是翻譯方式的選擇。

(1)虛緩存

一個簡單的方案就是緩存的標簽索引均使用虛擬地址。這種緩存稱為虛緩存(virtualcache)。這種緩存的優(yōu)點是僅在緩存失效時才需要進行頁面翻譯。由于緩存命中率很高,需要翻譯的次數也相對較少。

但是這種技術也存在嚴重的問題。

第一,引入虛擬地址的一個重要原因是在軟件(操作系統(tǒng))級進行頁面保護,以防止進程間相互侵犯地址空間。由于這種保護是通過頁表和翻譯旁視緩沖器(TLB)中的保護位(protectionbit)實現的,直接使用虛擬地址來訪問數據等于繞過了頁面保護。一個解決辦法是在緩存失效時查看TLB對應表項的保護位以確定是否可以加載缺失的數據。

第二,由于不同進程使用相同的虛擬地址空間,在切換進程后會出現整個緩存都不再對應新進程的有效數據。如果前后兩個進程使用了相同的地址區(qū)間,就可能會造成緩存命中,確訪問了錯誤的地址,導致程序錯誤。有兩個解決辦法:其一,進程切換后清空緩存。代價過高。其二,使用進程標識符(PID)作為緩存標簽的一部分,以區(qū)分不同進程的地址空間。

第三,別名問題(Alias)。由于操作系統(tǒng)可能允許頁面別名,即多個虛擬頁面映射至同一物理頁面,使用虛擬地址做標簽將可能導致一份數據在緩存中出現多份拷貝的情形。這種情況下如果對其中一份拷貝作出修改,而其他拷貝沒有同步更新,則數據喪失整合性,導致程序錯誤。有兩個解決辦法:其一,硬件級反別名。當緩存載入目標數據時,確認緩存內沒有緩存塊的標簽是此地址的別名。如果有則不載入,而直接返回別名緩存塊內的數據。其二,頁面著色(PageColoring)。這種技術是由操作系統(tǒng)對頁面別名作出限制,使指向同一頁面的別名頁面具有相同的低端地址。這樣,只要緩存的索引范圍足夠小,就能保證在緩存中決不會出現來自不同別名頁面的數據。

第四,輸入輸出問題。由于輸入輸出系統(tǒng)通常只使用物理地址,虛緩存必須引入一種逆映射技術來實現虛擬地址到物理地址的轉換。

(2)實緩存

實緩存(physicalcache)完全使用物理地址做緩存塊的標簽和索引,故地址翻譯必須在訪問緩存之前進行。這種傳統(tǒng)方法所以可行的一個重要原因是TLB的訪問周期非常短(因為本質上TLB也是一個緩存),因而可以被納入流水線。

但是,由于地址翻譯發(fā)生在緩存訪問之前,會比虛緩存更加頻繁地造成TLB。(相比之下,虛緩存僅在本身失效的前提下才會訪問TLB,進而有可能引發(fā)TLB失效)實緩存在運行中存在這樣一種可能:首先觸發(fā)了一個TLB失效,然后從頁表中更換TLB表項(假定頁表中能找到)。然后再重新訪問TLB,翻譯地址,最后發(fā)現數據不在緩存中。

(3)虛索引、實標簽緩存

一個折中方案是同時使用虛索引和實標簽(virtuallyindexed, physically tagged)。這種緩存利用了頁面技術的一個特征,即虛擬地址和物理地址享有相同的頁內偏移值(pageoffset)。這樣,可以使用頁內偏移作為緩存索引,同時使用物理頁面號作為標簽。這種混合方式的好處在于,其既能有效消除諸如別名引用等純虛緩存的固有問題,又可以通過對TLB和緩存的并行訪問來縮短流水線延遲。

這種技術的一個缺點是,在使用直接匹配緩存的前提下,緩存大小不能超過頁面大小,否則頁面偏移范圍就不足以覆蓋緩存索引范圍。這個弊端可以通過提高組相聯(lián)路數來改善。

(4)多級cache

介于處理器和內存二者之間的緩存有兩個天然沖突的性能指標:速度和容量。如果只向處理器看齊而追求速度,則必然要靠減少容量來換取訪問時間;如果只向內存看齊而追求容量,則必然以增加處理器的訪問時間為犧牲。這種矛盾促使人們考慮使用多級緩存。

在一個兩級緩存體系中,一級緩存靠近處理器一側,二級緩存靠近內存一側。當一級緩存發(fā)生失效時,它向二級緩存發(fā)出請求。如果請求在二級緩存上命中,則數據交還給一級緩存;如失效,二級緩存進一步向內存發(fā)出請求。對于三級緩存可依此類推。

通常,更接近內存的緩存有著更大容量,但是速度也更慢。

值得注意的是,無論如何,低級緩存的局部命中率總是低于高級緩存。這是因為數據的時空局部性在一級緩存上基本上已經利用殆盡。

對于各級cache,雖然功能類似,但不同級別的緩存在設計和實現上也有不同之處。

一般而言,在存儲體系結構中低級存儲總是包含高級存儲的全部數據,但對于多級緩存則未必。相反地,存在一種多級排他性(Multilevelexclusion)的設計。此種設計意指高級緩存中的內容和低級緩存的內容完全不相交。這樣,如果一個高級緩存請求失效,并在次級緩存中命中的話,次級緩存會將命中數據和高級緩存中的一項進行交換,以保證排他性。

多級排他性的好處是在存儲預算有限的前提下可以讓低級緩存更多地存儲數據。否則低級緩存的大量空間將不得不用于覆蓋高級緩存中的數據,這無益于提高低級緩存的命中率。

當然,也可以如內存對緩存般,使用多級包容性(Multilevelinclusion)設計。這種設計的優(yōu)點是比較容易方便查看緩存和內存間的數據一致性,因為僅檢查最低一級緩存即可。對于多級排他性緩存這種檢查必須在各級上分別進行。這種設計的一個主要缺點是,一旦低級緩存由于失效而被更新,就必須相應更新在高級緩存上所有對應的數據。因此,通常令各級緩存的緩存塊大小一致,從而減少低級對高級的不必要更新。

此外,各級緩存的寫策略也不相同。對于一個兩級緩存系統(tǒng),一級緩存可能會使用寫通來簡化實現,而二級緩存使用寫回確保數據一致性。orpsoc正是這樣設計的。

(5)關于cache的優(yōu)化

優(yōu)化緩存可從三個方面入手:減少命中時間,降低失效率,減輕失效代價。此外,增加緩存訪問帶寬也能有效較低AMAT(平均內存訪問時間,AverageMemory Access Time)。

理論上,完全使用虛擬地址可以獲得更快的緩存訪問速度,因為這樣僅在緩存失效時才會進行地址翻譯。但是,如前所述,這種純虛地址緩存由于繞開了操作系統(tǒng)對進程訪問地址的軟件控制,會存在不少問題。

為了能接近虛緩存的訪問速度,又能避開虛緩存帶來的種種問題,引入了所謂虛索引、實標簽緩存(virtuallyindexed, physically tagged)。這種結構的緩存可以令地址翻譯和緩存查詢并發(fā)進行,大大加快了緩存的訪問速度。

由于電路延遲很大程度上取決于存儲芯片的大小,所以可考慮使用較小容量的緩存以保證最短的訪問周期。這么做的另一個好處是,由于一級緩存足夠小,可以把二級緩存的全部或部分也集成到CPU芯片上,從而減少了二級緩存的命中時間。

AMD從K6到Opteron連續(xù)三代CPU的一級緩存容量都沒有任何增長(均為64KB)正是基于這個原因。

另一方面,考慮使用簡單的緩存,如直接匹配緩存,也可較組相聯(lián)緩存減少命中時間。

路預測:

所謂路預測(Wayprediction),是指在組相聯(lián)緩存中,跟蹤同一組內不同緩存塊的使用情況,然后在訪問到來時,不經比較直接返回預測的緩存塊。當然,標簽比較仍然會進行,并且如果發(fā)現比較結果不同于預測結果,就會重新送出正確的緩存塊。也就是說,錯誤預測會造成一個緩存塊長度的延遲。

模擬表明路預測的準確率超過85%[6]。這種技術非常適合于投機執(zhí)行(SpeculativeExecution)處理器,因為這種處理器有完善的機制來保證在投機失敗之后取消已經派發(fā)的指令。

追蹤緩存:

與一般的指令緩存存儲靜態(tài)連續(xù)地址不同,追蹤緩存(TraceCache)存儲的是基于執(zhí)行歷史的動態(tài)地址序列。這實際上是把分支預測的結果用在了緩存上。由于只存儲沿某一特定分支路徑才會遇到的指令,這種緩存可比傳統(tǒng)緩存更節(jié)省空間。

追蹤緩存的缺點是實現復雜,因為必須設法連續(xù)存儲的數據并不會按照2的冪次字長對齊。此外,對于不同執(zhí)行路徑要分開存儲。如果這些執(zhí)行路徑中存在相同地址的指令,這些指令就只好被分別存到兩個地方。這反而造成了低效的空間利用。

Intel的Pentium4處理器使用了這一復雜技術。值得一提的是,Pentium4追蹤緩存存儲的不是從內存抓取的原始指令,而是已經過解碼的微操作,從而進一步節(jié)省掉了指令解碼上要花的時間。

增加訪問帶寬。

緩存流水線化:

將一級緩存并入流水線是一般做法。這種做法可行性在于一級緩存的訪問時間通常都極短,可能只有一到數個CPU周期。此外,由于TLB也是一種高速緩存硬件,所以也可以納入流水線。

非阻塞緩存:

一般而言,當緩存發(fā)生失效時,處理器必須停滯(stall),等待緩存將數據從次級存儲中讀取出來。

對于跨序執(zhí)行(Out-of-orderExecution)處理器,由于多條指令在不同處理單元中并發(fā)執(zhí)行,某一條指令引發(fā)的緩存失效應該只造成其所在處理單元的停滯,而不影響其他處理單元和指令派發(fā)單元繼續(xù)流水。因此,有必要設計這樣一種緩存,使之能夠在處理緩存失效的同時,繼續(xù)接受來自處理器的訪問請求。這稱為非阻塞緩存(Non-blockingcache)。

降低失效率。

使用更大的數據塊:

使用大數據塊有助于利用空間局部性降低失效率,但其代價是更高的失效代價。這是因為,一旦失效,就必須把整個數據塊都重新填滿。

使用更大的緩存:

單純增大緩存的容量也是降低失效率的一個辦法。不過顯然這也增大了命中時間。

高組相聯(lián)緩存:

使用多路組相聯(lián)可以減少沖突失效。但其后果是緩存電路邏輯復雜化,故增大了命中時間。

編譯器優(yōu)化:

存在多種編譯器優(yōu)化技術來間接影響緩存的使用模式。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 容量
    +關注

    關注

    0

    文章

    119

    瀏覽量

    21843
  • 軟件
    +關注

    關注

    69

    文章

    5364

    瀏覽量

    91944
  • Cache
    +關注

    關注

    0

    文章

    130

    瀏覽量

    29798

原文標題:甄建勇:五分鐘搞定Cache(下)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    智能體內容

    、損害國家公職人員形象。 7、智能體不得含有或傳播邪教和封建迷信的內容,也不得含有關于宗教、種族、性取向、性別或其他目標群體的誹謗或惡意內容。 8、智能體不得含有或傳播非法使用毒品及管制藥品、過量攝入酒精
    發(fā)表于 04-29 10:14

    關于PN7642初始校準的疑問求解

    我有一個帶有 PN7642 的定制 PCB。 數據表說,在打開射頻部件之前,需要進行初步校準。 除了以下內容之外,還有關于此的進一步文檔嗎? 1. 編寫 EEPROM 配置NOV_CFG_CAL
    發(fā)表于 04-24 06:01

    憶聯(lián)自研芯片以壓縮技術重塑KV Cache存儲效率

    2026年3月,谷歌研究院發(fā)布TurboQuant壓縮算法技術,迅速在存儲與AI基礎設施領域引發(fā)熱議。該算法能夠壓縮KV緩存,實現內存占用降低6倍、推理速度提升8倍的潛力。這一技術突破的背后,折射出大模型推理時代最核心的硬件瓶頸:KV Cache正成為制約AI部署規(guī)模的“內存吞金獸”。
    的頭像 發(fā)表于 04-10 14:10 ?434次閱讀

    減少變頻器諧波對其它設備影響的方法

    變頻器作為現代工業(yè)中廣泛應用的電力電子設備,其產生的諧波問題已成為影響電能質量和設備安全運行的重要挑戰(zhàn)。諧波會導致電網電壓畸變、設備過熱、繼電保護誤動作等一系列問題,如何有效抑制變頻器諧波對其它設備的影響,是工業(yè)領域亟待解決的技術難題。以下將闡述減少變頻器諧波干擾的實用方法。
    的頭像 發(fā)表于 03-12 16:56 ?368次閱讀

    開發(fā)智能體配置-內容合規(guī)

    智能體上架前,需完成“人工智能生成合成內容標識”和“大模型備案信息”填寫 ,以供平臺審核;可在智能體【配置】-【內容合規(guī)】中填寫。 人工智能生成合成內容標識 “人工智能生成合成內容
    發(fā)表于 02-07 11:44

    關于MT6901的直線DEMO介紹

    關于MT6901的直線DEMO介紹
    的頭像 發(fā)表于 01-30 10:54 ?812次閱讀
    <b class='flag-5'>關于</b>MT6901的直線DEMO介紹

    請問030系列集成的PreFetch 和 Cache怎么用呀?

    各位大佬,030系列集成的PreFetch 和 Cache怎么用呀?有這方面的demo或者pdf操作流程么?
    發(fā)表于 01-19 07:07

    采用Prefetch+Cache架構有什么優(yōu)勢?

    我看官方說,采用Prefetch+Cache架構同頻CoreMark 計算力/功耗比超越同類產品,這優(yōu)勢就是低功耗么?要是具體芯片比較的話,應該怎么比?
    發(fā)表于 12-11 07:35

    關于NFC鎳鋅鐵氧體片的介紹

    關于NFC鎳鋅鐵氧體片的介紹
    的頭像 發(fā)表于 12-04 10:52 ?583次閱讀
    <b class='flag-5'>關于</b>NFC鎳鋅鐵氧體片的介紹

    發(fā)布元服務配置內容分級

    年齡分級作為元服務的重要屬性,在華為應用市場的應用詳情頁展示給用戶,幫助用戶找到適合其年齡段的元服務,從而為未成年人用戶打造純凈的使用環(huán)境。 1.AGC提供了調查問卷,根據您回答的內容,自動生成
    發(fā)表于 11-21 11:29

    關于系統(tǒng)鏈接腳本的介紹

    一、隊伍介紹 本篇為蜂鳥E203系列分享第四篇,本篇介紹的內容是系統(tǒng)鏈接腳本。 二、如何實現不同的下載模式? 實現三種不同的程序運行方式,可通過makefile的命令行指定不同的鏈接腳本,從而實現
    發(fā)表于 10-30 08:26

    gd32h737 開啟cache程序跑飛是哪里的問題?

    gd32h737 在rtthread 4.1.1版本上運行,開啟cache功能,程序跑飛,JLink連接失敗的。錯誤信息沒有。配置方式的說明嗎? /*! briefenable the CPU
    發(fā)表于 09-11 08:28

    evn首次編譯rtthread bsp內容報錯怎么解決?

    buildkernellibcpuarmcortex-m7cpuport.o CC buildkernellibcpuarmcortex-m7cpu_cache.o CC buildkernelsrcclock.o CC
    發(fā)表于 09-11 08:06

    光伏電站智慧綜合管理系統(tǒng)都包含哪些應用內容?

    確保電站安全、高效、經濟地運行,是光伏電站管理工作的主要內容也是最終目標。這項工作是一個系統(tǒng)性的工作,涵蓋多個關鍵領域,采用科學、智能的技術手段,從不同方面開展相關工作內容,確保電站全生命周期的穩(wěn)定
    的頭像 發(fā)表于 06-24 13:50 ?688次閱讀
    光伏電站智慧綜合管理系統(tǒng)都包含哪些應用<b class='flag-5'>內容</b>?

    STM32H7的MPU配置與D-Cache沖突如何解決???

    現象??: STM32H743 MPU 與 D-Cache 沖突問題詳細描述** 硬件環(huán)境 MCU 型號 :STM32H743VIT6 開發(fā)板 :自定義板(或 STM32H743I-EVAL 等
    發(fā)表于 06-23 17:32
    平顶山市| 阿拉善左旗| 北海市| 莱芜市| 富源县| 泽库县| 木里| 花莲市| 寿光市| 宁南县| 舒兰市| 高要市| 郴州市| 凤翔县| 顺昌县| 榆社县| 汕头市| 秭归县| 登封市| 桃源县| 北海市| 恭城| 宣武区| 银川市| 阿合奇县| 二连浩特市| 横山县| 康马县| 威宁| 吉木乃县| 时尚| 旌德县| 京山县| 沈阳市| 汝南县| 开远市| 惠州市| 中江县| 清镇市| 朔州市| 台北县|