色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何配置一個頁面的cacheable屬性

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2022-04-10 15:20 ? 次閱讀

作者簡介

baron (網名:代碼改變世界ctw),九年手機安全/SOC底層安全開發經驗。擅長trustzone/tee安全產品的設計和開發

1.序言

帶著問題去學習,關于cache的一些思考:1、L1/L2/L3 cache到底在哪里?L1/L2/L3 cache分別都是多大?2、L1/L2/L3 cache的組織形式都是怎樣的?n路組相連?3、你見過VIVT的cache嗎?你為什么要學習VIVT的cache?非常干擾你對cache的理解,還不如不學呢.4、那么cache是VIPT還是PIPT?還是在一個core中既有VIPT,也有PIPT?5、你要學習MESI的原理嗎?你能記得住嗎?你是不懂MESI,還是不懂cache架構?6、MOESI又是啥玩意?現在主流的core是MESI,還是MOESI?7、MESI僅僅是一個協議,總得有硬件來執行這個協議,硬件是誰?8、MESI這個協議有4個狀態,這4個狀態記錄在哪里?9、L1/L2/L3 cache中,或者說core cache/cluster cache中,哪些cache的維護遵守了MESI協議,哪些沒有遵守?為什么這樣設計?10、cache line中的data是多少個字節?在分析問題時,你為什么總是按照條件分析,16bytes的cache line是怎樣的,64bytes的cacheline是怎樣的?難道你不知道,現在主流的arm core的cache line全部都是64bytes?11、cache的TAG是什么玩意,里面都有什么?別說cache TAG是物理地址?12、cache line中又都有什么? 為什么沒有index?13、L2 cache到底是在core中,還是在cluster中?14、假設一塊內存配置成了non-cacheable,為什么就不緩存到cache了?15、頁表entry的屬性中定義了cache的緩存策略,那如果disable mmu后,那么cpu讀寫內存時候的緩存策略是什么?16、做為一名軟件工程師,對于L1/L2/L3 cache的緩存策略,哪些可以修改?哪些是硬件定死的不可以修改?而這些的替換策略又都是怎樣的?17、什么是inclusive cache?什么是exclusive cache?Strictly和Weakly呢?18、一些概念的理解,如CCI、SCU、DSU、ACE、CHI ?19、如何配置一個頁面的cacheable屬性?如何配置頁表的cacheable屬性?

2.前言

做為一名底層安全工程師、一名一線支持客戶的FAE,工作的內容涉及到TF-A、TEE、TA、Linux Kernel、Linux native程序等眾多模塊,也會涉及到一些硬件模塊driver。在這些不同的硬件或系統軟件之中,有著不同的memory屬性的配置,不同的緩存策略,那么我們在這多硬件多軟件通過share memory通信時,就會遇到各種各樣的問題,其實很多時候,也都是客戶的靈魂一問,為了給客戶一個專業的感覺,身為FAE也不得不去弄懂底層深層次的原理....

本人不是什么專家,更不是什么的大佬,也就是看了一些arm文檔,加上自己的理解,然后總結出如下文章,當然我在總結的時候,一切都以官方資料為準,盡量不瞎說不亂說,有些查不到的資料我求證了一些ASIC專家。其實cache同其它模塊(如MMU、異常、gic...)相比,cache應該算上最難的,不過好在它的大多數行為都是硬件幫我們做好了,所以我們軟件就簡單了,但是越是硬件自動的行為,對于我們軟件工程師理解起來就會吃力,因為看不到資料看不到設計,很多都得靠猜。

最后,希望這系列文章,能夠對大家有所幫助。好好學習、天天向上,卷起來同志們。

說明:

本系列所講述的,都是以armv8/armv9架構位基準,如有涉及執行狀態,則是aarch64. 如有涉及具體core,則是A710和A53

大多數內容來自arm官方文檔、少部分咨詢了ASIC同事,再加上部分自己的理解...

3.為什么要用cache?

ARM 架構剛開始開發時,處理器時鐘速度和內存的訪問速度大致相似。今天的處理器內核要復雜得多,并且時鐘頻率可以快幾個數量級。然而,外部總線和存儲設備的頻率并沒有達到同樣的程度??梢詫崿F可以與內核以相同速度運行的小片上 SRAM塊,但與標準 DRAM 塊相比,這種 RAM 非常昂貴,標準 DRAM 塊的容量可能高出數千倍。在許多基于 ARM 處理器的系統中,訪問外部存儲器需要數十甚至數百個內核周期。

高速緩存是位于核心和主內存之間的小而快速的內存塊。它在主內存中保存項目的副本。對高速緩沖存儲器的訪問比對主存儲器的訪問快得多。每當內核讀取或寫入特定地址時,它首先會在緩存中查找。如果它在高速緩存中找到地址,它就使用高速緩存中的數據,而不是執行對主存儲器的訪問。通過減少緩慢的外部存儲器訪問時間的影響,這顯著提高了系統的潛在性能。通過避免驅動外部信號的需要,它還降低了系統的功耗38df6f9c-b7a9-11ec-aa7f-dac502259ad0.png

4.為什么要學習cache呢?

cache和我們軟件工程師有啥關系?其實在很多時候,硬件都會自動去維護cache和內存直接的一致性,這和我們軟件工程師都沒有太大的關系,所以很多時候我們也無需去理解cache的原理。但是實就是事實,不管你有沒有理解,你都是一直在使用的。做為一名底層的軟件開發者,有些時候,你也不得不去主動刷新cache,即軟件中維護內存一致性 。那么一般什么時候需要主動刷cache呢(軟件中維護內存一致性) ? 以下便舉了幾個最常見的示例。

4.1 不同的Master硬件共享數據時

例如一個core和一個crypto engine硬件,在共享數據的時候。需要軟件主動去invalid或flush cache的操作。

4.1.1 軟件中維護內存一致性 – flush cache

38f3a1d8-b7a9-11ec-aa7f-dac502259ad0.png

4.1.2 軟件中維護內存一致性 – invalid cache

3905914a-b7a9-11ec-aa7f-dac502259ad0.png

4.2 不同的緩存策略的系統共享數據時

例如在一個TEE + linux的系統中,且兩個系統有著不同的緩存策略。如linux kernel中是outer cacheable,TEE中是non-cacheable

4.2.1 軟件中維護內存一致性 – flush cache

391b13f8-b7a9-11ec-aa7f-dac502259ad0.png

4.2.2 軟件中維護內存一致性 – invalid cache

392ef95e-b7a9-11ec-aa7f-dac502259ad0.png

5.怎么去刷cache呢?(軟件維護cache的一致性)

ARM提供了操作cache的指令, 軟件維護操作cache的指令有三類:

Invalidation:其實就是修改valid bit,讓cache無效。

Cleaning:清除cache中的data和TAG,這其實就是我們所說的flush cache,這里會將cache數據回寫到內存,并清除dirty標志

Zero:將cache中的數據清0.

那么一般什么時候需要軟件維護cache一致性呢?:(1)、當有其它的Master改變的external memory,如DMA操作(2)、MMU的enable或disable的整個區間的內存訪問,(3)、當不同緩存策略的系統使用同一塊內存通信時,如REE enable了mmu,TEE disable了mmu.

針對第(2)點,cache怎么和mmu扯上關系了呢?那是因為: mmu的開啟和關閉,影響了內存的permissions, cache policies

5.1 cache一致性指令介紹

查閱armv8/armv9的aarch64體系中,定義了如下的緩存一致性操作指令3949bd2a-b7a9-11ec-aa7f-dac502259ad0.png指令太多,不太好記,然后我們總結如下:3963e0c4-b7a9-11ec-aa7f-dac502259ad0.png按照指令,分為:

IC : 操作instruction cache

DC : 操作data cache

按照操作,分為以下三類:

Invalidation:其實就是修改valid bit,讓cache無效。

Cleaning:清除cache中的data和TAG,這其實就是我們所說的flush cache,這里會將cache數據回寫到內存,并清除dirty標志

Zero:將cache中的數據清0.

Points的定義:其描述的是操作cache的范圍

Point of Coherency (PoC) :instruction、data、TLB訪問一致性的點

Point of Unification (PoU) :agents訪問內存一致性的點

Point of Persistence (PoP) :和FEATDPB、FEATDPB2 feature相關

Point of Deep Persistence (PoDP) :訪問memory一致性的點39741610-b7a9-11ec-aa7f-dac502259ad0.png

5.2 cache一致性指令的使用示例

3986292c-b7a9-11ec-aa7f-dac502259ad0.png

5.3 操作系統中軟件維護cache一致性的API

在操作系統中,我們只需要調用相關的API即可,也無需牢記以上的維護cache一致性的命令。

比如在Linux Kernel 操作Cache的API如下所示:


linux/arch/arm64/mm/cache.S

linux/arch/arm64/include/asm/cacheflush.h

void __flush_icache_range(unsignedlong start, unsignedlong end);

int invalidate_icache_range(unsignedlong start, unsignedlong end);

void __flush_dcache_area(void*addr, size_t len);

void __inval_dcache_area(void*addr, size_t len);

void __clean_dcache_area_poc(void*addr, size_t len);

void __clean_dcache_area_pop(void*addr, size_t len);

void __clean_dcache_area_pou(void*addr, size_t len);

long __flush_cache_user_range(unsignedlong start, unsignedlong end);

void sync_icache_aliases(void*kaddr, unsignedlong len);

void flush_icache_range(unsignedlong start, unsignedlong end)

void __flush_icache_all(void)

原文標題:深入學習Cache系列 1: 帶著幾個疑問,從Cache的應用場景學起

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

審核編輯:彭菁

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

    關注

    69

    文章

    4969

    瀏覽量

    87702
  • 開發
    +關注

    關注

    0

    文章

    370

    瀏覽量

    40872
  • 高速緩沖存儲器

    關注

    0

    文章

    12

    瀏覽量

    7532

原文標題:深入學習Cache系列 1: 帶著幾個疑問,從Cache的應用場景學起

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

收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發案例:【UIAbility內和UIAbility間頁面的跳轉】

    基于Stage模型下的UIAbility開發,實現UIAbility內和UIAbility間頁面的跳轉。
    的頭像 發表于 05-09 15:06 ?1612次閱讀
    HarmonyOS開發案例:【UIAbility內和UIAbility間<b class='flag-5'>頁面的</b>跳轉】

    STM32CubeMX 6.5.0時鐘配置頁面的ADC時鐘源無法配置怎么解決?

    最新版STM32CubeMX 6.5.0,啟動ADC功能后,時鐘配置頁面的ADC時鐘源仍無法配置。STM32CubeMX 6.4.0使用正常。是不是新版的BUG?需要改進。
    發表于 03-25 07:04

    關于頁面的問題

    ,簽到也是這種情況,用另外手機也是這種情況,以前都是在頁面的中間的,不知道是不是網頁改了還是瀏覽器問題。
    發表于 06-15 23:39

    nginx錯誤頁面配置

    16、nginx 錯誤頁面配置nginx錯誤頁面包括404 403 500 502 503 504等頁面,只需要在server中增加以下配置
    發表于 07-26 06:54

    entry模塊里面的index.ets如何跳轉到另外xxx.ets頁面

      ArkUI框架,如何跳轉到HarmonyOS Library里面的page呢?  entry模塊里面的index.ets,如何跳轉到另外Module(library)里面實現的
    發表于 03-14 17:06

    小白福利!教你用低代碼實現簡單的頁面跳轉功能

    簡單的頁面跳轉功能,讓你看就會,做就對! 二、效果預覽 首先我們先看下效果圖。如圖1所示,效果圖主要由兩
    發表于 05-16 17:22

    如何配置MMU page table walk的訪問屬性

    的訪問屬性和load/store訪問頁表本身的訪問屬性是分別設置的,不匹配的設置可能會導致致性問題。例如,如果MMU page table walk的訪問屬性設置為 Normal
    發表于 10-24 15:45

    小白指南:手把手教你用低代碼開發應用頁面

    ,結合媒體查詢(MediaQuery)可以將組件針對不同設備不同橫豎屏設置不用的值, 開發設備的頁面,使用該功能進行簡單的配置后,實現不同設備的
    發表于 02-17 10:07

    Delphi教程之DBGrid中的記錄到Html頁面的轉換

    Delphi教程之DBGrid中的記錄到Html頁面的轉換,學習Delphi編程的資料。
    發表于 03-31 11:29 ?4次下載

    PHP如何打開頁面執行另一個頁面的代碼

    般php程序必須是在瀏覽器打開頁面的時候觸發執行的,用下面的方法,可以在A頁面啟動B頁面的php程序執行。而且,A
    發表于 03-14 17:17 ?8次下載
    PHP如何打開<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>頁面</b>執行另<b class='flag-5'>一個</b><b class='flag-5'>頁面的</b>代碼

    如何在ASP.NET前臺頁面補充屬性

    本文檔的主要內容詳細介紹的是如何在ASP.NET前臺頁面補充屬性
    發表于 09-27 17:26 ?2次下載
    如何在ASP.NET前臺<b class='flag-5'>頁面</b>補充<b class='flag-5'>屬性</b>

    微信小程序的APP頁面配置學習說明

    主要學習app頁面配置、窗口配置、tabBar配置,網絡超時配置debug配置
    的頭像 發表于 02-18 12:30 ?2763次閱讀

    如何處理orcad不同一頁面的連接關系

    orcad的不同頁面的連接關系應該怎么處理呢? 答:對于不同頁面的連接關系,我們就需要使用添加分頁連接符的方式來進行連接。分頁連接符分為兩種,種是off-page Connector,
    的頭像 發表于 08-24 14:33 ?8862次閱讀
    如何處理orcad不同<b class='flag-5'>一頁面的</b>連接關系

    如何用低代碼實現簡單的頁面跳轉功能

    我們先開發第一個頁面,如圖4所示,第一個頁面是在容器中展示“低代碼入門”文本和“鍵入門”按鈕,它們分別可以通過Div、Text、和Butt
    的頭像 發表于 05-16 09:45 ?1577次閱讀

    小白指南:手把手教你用低代碼開發應用頁面

    什么是低代碼開發 在了解低代碼開發之前,我們先看看使用低代碼開發的效果。 低代碼開發效果示例 低代碼開發是DevEco Studio為HarmonyOS開發者提供的可視化頁面的開發方式,具備豐富
    的頭像 發表于 02-17 09:10 ?1201次閱讀
    主站蜘蛛池模板: 色呦呦人人视频| 把她带到密室调教性奴| 久久精品AV无码亚洲色欲| ava云直播| 亚洲精品永久免费| 日本强好片久久久久久AAA| 禁室培欲在线视频免费观看| youjizz怎么看| 姉调无修版ova国语版| 学生妹被爆插到高潮无遮挡| 欧美一区二区三区久久综| 久久精品国产午夜伦班片| 国产精品第九页| yellow片在线观看免费观看动漫| 一本道综合久久免费| 香蕉精品国产高清自在自线| 青草久久影院| 久久香蕉国产线看观看| 内射爽无广熟女亚洲| 日本湿姝在线观看| 亚在线观看免费视频入口| 一色屋精品亚洲香蕉网站| 国产成人免费a在线视频app| 嗨嗨快播电影| 日韩中文欧美在线视频| wwwwxxxxx中国| 青青草国产自偷拍| 久久橹| 国产午夜精品一区二区三区 | 日韩亚洲欧美中文在线| 男污女XO猛烈的动态图| 酒色.com| 久久精品国产亚洲AV麻豆欧美玲 | 吉吉av电影| 中文字幕在线视频在线看| 精品国产高清自在线看| 哇嘎在线精品视频在线观看| 全球真实小U女视频合集| 久久精品观看影院2828| 交换邻居波多野结衣中文字幕| 国产午夜亚洲精品一区|