衡阳派盒市场营销有限公司

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

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

3天內不再提示

Linux中sv39 mmu介紹

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 11:07 ? 次閱讀

RISC-V Linux支持sv32、sv39、sv48等虛擬地址格式,分別代表32為虛擬地址、38位虛擬地址和48位虛擬地址。RISC-VLinux默認也是使用sv39格式,sv39的虛擬地址、物理地址、PTE格式如下:

虛擬地址格式:

圖片

物理地址格式:

圖片

PTE格式:

圖片

虛擬地址使用39位表示,其中低12位代表pageoffset,高位劃分為了三部分:VPN[0]、VPN[1]和VPN[2],分別代表虛擬地址VA在PTE、PMD和PGD中的索引

物理地址使用56位表示,低12位代表page offset,高位是物理頁PPN[0]、PPN[1]和PPN[2]

PTE保存了物理頁PPN[0]、PPN[1]和PPN[2],和物理地址中的PPN相對應;PTE的低10位代表物理地址的訪問權限,當RWX全為0時,則代表該PTE存儲的地址是下一級頁表的物理地址,否則代表當前頁表是最后一級頁表。

再看看sv39 的頁表格式,sv39使用的是三級頁表,PGD、PMD和PTE,每一個級頁表使用9bit表示,即每一級頁表都有512個頁表項。

在代碼中,創建一個有512個元素的數組即代表一個頁表。一個PTE有512個頁表項,每一個頁表項占用8字節,5128=4096字節,所以一個PTE代表4K。一個PMD也是512個頁表項,每一項可代表一個PTE,5124 K=2M,所以一個PMD就代表2M。以此類推,一個PGD代表512 * 2M=1G。

重要結論:PGD代表1G、PMD代表2M、PTE代表4K。sv39默認的頁大小是4K。

三級頁表虛擬地址轉為物理地址過程示意圖:圖片

sv39三級頁表虛擬地址轉為物理地址過程:

MMU通過satp寄存器得到PGD的物理地址,結合PGD index(即VPN[2])找到PMD;找到PMD后,再結合PMDindex(即VPN[1])找到PTE,然后結合PTE index(即VPN[0])得到VA在PTE索引中的值,從而得到物理地址。

最后在PTE中取出PPN[2]、PPN[1]和PPN[0],再和虛擬地址的低12位offset相加,得到最終的物理地址。

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

    關注

    87

    文章

    11345

    瀏覽量

    210400
  • RISC
    +關注

    關注

    6

    文章

    465

    瀏覽量

    83873
  • 地址表
    +關注

    關注

    0

    文章

    4

    瀏覽量

    834
收藏 人收藏

    評論

    相關推薦

    為什么沒有MMU就無法運行Linux系統呢?

    MMU(Memory Management Unit,內存管理單元)是一種硬件模塊,用于在CPU和內存之間實現虛擬內存管理。
    發表于 08-03 10:05 ?1003次閱讀
    為什么沒有<b class='flag-5'>MMU</b>就無法運行<b class='flag-5'>Linux</b>系統呢?

    【RVBoards-哪吒】T-Head C906的規格書

    in-order pipeline. The C906 supports the Sv39 virtual address system with custom page attribute
    發表于 05-20 14:52

    無第三方庫不到5000行C語言 risc-v虛擬機juicevm

    /run-mbedtls.md) **編寫**。- [運行SV39 MMU測試](./doc/run-mmu_sv39.md) **編寫
    發表于 06-01 15:22

    juicevm-無第三方庫不到5000行C語言 risc-v虛擬機

    world 編寫。運行Free rtos 編寫。運行mbedtls 編寫。運行SV39 MMU測試 編寫
    發表于 06-01 16:15

    DY-SV5W模塊介紹

    以下為DY-SV5W介紹摘抄模塊應用手冊1.產品概述DY-SV5W是本司自主研發的一款智能語音模塊,集成IO分段觸發,UART串口控制,ONE_line單總線串口控制,標準MP3等7種工作模式,簡單
    發表于 02-10 06:25

    無第三方庫不到5000行C語言 risc-v虛擬機JuiceVm

    mbedtls編寫 。運行SV39 MMU測試 編寫 。運行mtime測試編寫 。運行mtime測試 編寫
    發表于 08-22 16:36

    有RISC-V跑uCLinux或者NO MMULinux的項目嗎?

    有RISC-V跑uCLinux或者NO MMULinux的項目嗎?
    發表于 04-03 17:54

    【昉·星光 2 高性能RISC-V單板計算機體驗】與星光 2的第一次邂逅

    processor : 0 hart: 1 isa : rv64imafdc mmu : sv39 uarch: sifive,u74-mc mvendorid : 0x489 marchid
    發表于 08-03 23:12

    uClinux和Linux的具體異同

    uCLinux是針對控制領域的嵌入式linux操作系統,它從Linux 2.0/2.4內核派生而來,沿襲了主流Linux的絕大部分特性。適合不具備內存管理單元(MMU)的微處理器/微控
    發表于 11-04 10:42 ?2次下載

    ARM920T的MMU與Cache介紹

    CPU通過地址來訪問內存的單元,地址有虛擬地址和物理地址之分,如果CPU沒有MMU(Memory Management Unit,內存管理單元),或者有MMU但沒有啟用,CPU核在取指令或訪問內存
    發表于 03-28 11:05 ?14次下載
    ARM920T的<b class='flag-5'>MMU</b>與Cache<b class='flag-5'>介紹</b>

    Linux內核虛擬內存管理mmu_gather操作

    本文講解Linux內核虛擬內存管理mmu_gather操作,看看它是如何保證刷tlb和釋放物理頁的順序的,又是如何將更多的頁面聚集起來統一釋放的。
    的頭像 發表于 05-20 14:37 ?2044次閱讀

    為什么沒有MMU就無法運行Linux系統

    MMU(Memory Management Unit,內存管理單元)是一種硬件模塊,用于在CPU和內存之間實現虛擬內存管理。
    的頭像 發表于 04-23 10:48 ?958次閱讀
    為什么沒有<b class='flag-5'>MMU</b>就無法運行<b class='flag-5'>Linux</b>系統

    什么是MMUlinux為什么需要MMU

    在內存管理方面,MMU可以通過頁面表(Page Table)實現虛擬內存管理。頁面表是一種數據結構,記錄了每個虛擬頁面和其對應的物理頁面之間的映射關系。
    發表于 10-09 11:27 ?1516次閱讀
    什么是<b class='flag-5'>MMU</b>?<b class='flag-5'>linux</b>為什么需要<b class='flag-5'>MMU</b>?

    嵌入式Linux運行一定需要MMU嗎?為什么需要MMU

    嵌入式Linux運行一定需要MMU嗎?為什么需要MMU?? 嵌入式Linux運行需要MMU,這是因為MM
    的頭像 發表于 10-29 16:28 ?897次閱讀

    MMU的頁命中、缺頁介紹

    頁命中、缺頁 (1)頁命中 ? a) 處理器要對虛擬地址VA進行訪問。 ? b) MMU的TLB沒有命中,通過TWU遍歷主存頁表的PTEA(PTE地址)。 ? c) 主存向MMU返回PTE
    的頭像 發表于 11-26 16:19 ?1209次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>中</b>的頁命中、缺頁<b class='flag-5'>介紹</b>
    水果机技巧规律| 百家乐官网登封代理| 大发888假冒网站| 澳门百家乐765118118| 百家乐轮盘一体机厂家| 全讯网开奖现场| 大发888赢钱技巧| 线上娱乐场| 金龙国际娱乐城| 太阳城百家乐怎么出千| 菲律宾百家乐的说法| 电玩城百家乐技巧| 网络百家乐娱乐| 百家乐最大的赌局| 百家乐筹码片| 362娱乐城开户| 百家乐官网最低下注| 百家乐官网单机版游戏下载| 百家乐官网赌博游戏平台| 金满堂百家乐官网的玩法技巧和规则 | 金海岸百家乐官网的玩法技巧和规则 | 平凉市| 网络百家乐官网棋牌| 有钱人百家乐官网的玩法技巧和规则| 百家乐好多假网站| 跨国际百家乐的玩法技巧和规则| 大发888明星婚讯| 彭泽县| 运城百家乐官网蓝盾| 优博百家乐yobo88| 威尼斯人娱乐城代理开户| 利高| 百家乐官网百胜注码法| 百家乐怎么才赢| 威尼斯人娱乐城送宝马| 临洮县| 玩百家乐官网如何硬| 百家乐娱乐城有几家| 大发888娱乐城优惠码| 单张百家乐官网论坛| 百家乐官网统计软件|