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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

沒有虛擬地址的處理器是怎么工作的?

星星科技指導員 ? 來源:eetop ? 作者:eetop ? 2023-12-07 10:29 ? 次閱讀

這個概念在大概14年前第一次接觸,當時本科的專業并不是計算機,記得當時坐在圖書館里抱著一本書硬啃,一直想把這個概念弄清楚。

費盡力氣卻仍然似是而非,似懂非懂,因此挫敗感很大;后來讀研后,方向一直不在這里,也沒有再去看,但是當時抱著一本書“深入理解計算機系統”看了好多年,斷斷續續,仍然覺得沒有真正理解。

后來工作后,一頭扎在了各種小型芯片的設計中,各種ip的設計,各種SoC層面的調度調式,CPU性能加速優化,和模擬的各種掰扯,和軟件一起定位各種奇怪的問題,因為數字系統比較小,距離“虛擬存儲器”更加遙遠了;后來又做了一個中型的系統,說是中型,也就是大幾百萬門的系統,但是在和軟件的各種扯皮中,確實看到了復雜系統軟件健壯性的嚴峻挑戰,定位問題的困難程度,可是仍然沒有接觸“虛擬存儲器”;再后來,終于看到了真正的大系統,正經的正在做的芯片中使用了“虛擬存儲器”的概念。

終于,14年后,可以來談這個問題了。

看看沒有虛擬地址的處理器是怎么工作的,編譯環境除了將高級語言轉換成機器碼外,linker把眾多分散開發文件串起來,使得增量編譯

成為可能;同時loader就要考慮把多個獨立程序安排地址空間,例如操作系統,視頻驅動,display驅動,IO驅動,wifi驅動等。

他們存儲在nor-flash or nand flash等NVM中。注意這些程序大部分會使用相對的地址尋址(或長或短,提高存儲密度必然要求),也有少量絕對跳轉地址,

這些絕對跳轉必須由loader(在這個語境下還是指 IDM PC環境)了解整個地址劃分,最后根據情況修改這些絕對跳轉地址;

然后程序開始執行時,操作系統先初始化,然后加載各個進程;

1. 指令

只是cache,不區分是誰的操作系統指令 or 進程指令;

但如果要卸載某個程序,或者update,只能重新編譯,linker and loader;但這對于大型系統來說是不可接接受的;

因為假使某個程序卸載后,update后的程序比原來大,原來連續的地址空間不夠用了,只能看看哪里還有空缺

- 用不連續的兩塊nor flash區域拼接;

但是complier會很痛苦,因為實際可能遠遠不止2塊不連續,要處理address remap問題,即使是相對分支跳轉指令;

- 或者干脆找一塊足夠大的區域,導致內存碎片,利用率不高;

note:當然處理器不會關心這些復雜的事情,它只傻傻的執行每一條指令規定的行為。

如果系統沒有cache,這些指令直接就流進處理器;

如果系統有cache,它也傻傻的根據這些物理地址,一定的算法,例如LRU來管理高速緩存,因此對cache沒什么影響;

ps:注意支持虛擬存儲器與否,對cache沒什么影響;

2. 數據

這里的數據專指程序執行過程產生的臨時數據,存儲在片上sram,or DDR中,而不是只一開始就存儲在nor flash中的literal data

-------------------------------------------------------

系統如果沒有d-cache(只有片上sram),且沒有操作系統:所有全局變量,靜態變量,全部由編譯器分配好,稱之為heap,然后分配一塊向下生長的空間作為stack,編譯器會根據某種算法估計要給stack開辟多少空間,例如這個程序就是一個大的while(1) {}, 在結尾處wfi進入休眠,由中斷驅動,

編譯器會計算最深的函數調用(stack向下生長最長) + 在這種情況下發生中斷保存現場stack需要;

但如果有“遞歸調用”則是另外一回事,編譯器可能并不知道實際工作情況,自然無法準確預估stack需要;

--------------------------------------------------------

系統如果沒有d-cache(只有片上sram),有操作系統:因為操作系統有內存管理功能,一般programmer編程不當(內存要及時free),會造成內存泄露,這個和無操作系統場景不同;當然也可能純粹應用需要的太多,系統能力有限支持不了;

--------------------------------------------------------

系統有d-cache(只有片上sram),有操作系統:和上一種區別不大,d-cache也是無腦工作,并不需要知道加載的到底是heap or stack,或者什么變量;

--------------------------------------------------------

問題:那么加入虛擬存儲器會 make a difference ?對編譯器沒什么影響,但是對系統卻有很大的影響。

分析:對于小型系統來說,各個程序系統開發者可以把關,并進行測試保證系統穩定性;

但對于大型系統來說,程序及其龐雜,開發者眾多,開發者水平不一;有第三方開發的軟件需要安裝,甚至有些有些惡意軟件要攻擊別的軟件;即某個程序可能異??赡軙斐上到y崩潰,或信息泄露,不管有意還是無意,最終導致這個后果。

審核編輯:黃飛

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

    關注

    68

    文章

    19825

    瀏覽量

    233757
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11049

    瀏覽量

    216151
  • 操作系統
    +關注

    關注

    37

    文章

    7103

    瀏覽量

    125053
  • 虛擬存儲器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8862
  • 編譯器
    +關注

    關注

    1

    文章

    1657

    瀏覽量

    49929
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    linux虛擬地址如何轉物理地址

    linux虛擬地址轉物理地址
    發表于 05-13 09:31

    探討一下ARM中的MMU虛擬地址

    的緩存效率較低。緩存效率較低,因為小內存塊需要多次讀取級別才能轉換。處理器在開始表查找時不知道轉換的大小。處理器通過執行表遍歷計算出正在轉換的塊的大小。在ARMv8-A中有三個獨立的虛擬地址空間,分別
    發表于 04-08 17:17

    ARM處理器使用虛擬地址來提供cache index和cache tag

    早期的ARM處理器使用虛擬地址(virtual addresses)來提供cache index和cache tag。VIVT優點這樣做的好處是處理器內核可以使用虛擬地址進行cache
    發表于 06-20 15:22

    用戶態得到虛擬地址對應的物理地址

    一般我們不需要從用戶態得到進程虛擬地址對應的物理地址,因為一般來說用戶進程是完全不關心物理地址的。
    的頭像 發表于 10-10 14:10 ?2718次閱讀
    用戶態得到<b class='flag-5'>虛擬地址</b>對應的物理<b class='flag-5'>地址</b>

    鴻蒙內核中虛擬地址與物理地址之間是如何映射的

    虛擬地址(VA):?就是線性地址?鴻蒙內存部分全是VA的身影?是由編譯和鏈接在定位程序時分配的,每個應用程序都使用相同的虛擬內存地址空間
    發表于 11-19 14:45 ?9次下載
    鴻蒙內核中<b class='flag-5'>虛擬地址</b>與物理<b class='flag-5'>地址</b>之間是如何映射的

    內核邏輯地址和內核虛擬地址到底有什么區別

      1) 凡是通過MMU頁表訪問的地址都叫虛擬地址,而一旦啟用了MMU,那CPU發出的所有地址都是虛擬地址內核用到的地址范圍是3G-4G(不
    發表于 03-11 10:10 ?6次下載

    虛擬地址和邏輯地址的區別是什么?

    先解釋下一個困擾了我很久的問題:虛擬地址(vitural address)和邏輯地址(logical address)的區別。 大部分操作系統的書籍要么寫的是虛擬地址,要么寫的是邏輯地址
    的頭像 發表于 06-17 14:08 ?2.5w次閱讀
    <b class='flag-5'>虛擬地址</b>和邏輯<b class='flag-5'>地址</b>的區別是什么?

    虛擬地址物理地址等眾多地址及MMU相關知識

    虛擬地址物理地址等眾多地址及MMU相關知識先聊聊存儲STM32單片機存儲關于編譯生成的文件
    發表于 12-08 12:36 ?12次下載
    <b class='flag-5'>虛擬地址</b>物理<b class='flag-5'>地址</b>等眾多<b class='flag-5'>地址</b>及MMU相關知識

    為什么要用MMU?為什么要用虛擬地址

    既然MMU開啟后,硬件會自動的將虛擬地址轉換成物理地址,那么還需要我們軟件做什么事情呢?即創建一個頁表翻譯都需要做哪些事情呢?或者說啟用一個MMU需要軟件做什么事情呢?
    的頭像 發表于 04-26 14:37 ?5375次閱讀

    虛擬地址翻譯物理地址的流程有哪些呢?

    現代的操作系統將可執行文件加載后,創建了進程,進程中每一條指令和數據都被分配了一個虛擬地址,CPU獲取到這個虛擬地址后,需要翻譯成內存的物理地址后,才能訪問指令和數據
    的頭像 發表于 08-14 10:30 ?1619次閱讀
    <b class='flag-5'>虛擬地址</b>翻譯物理<b class='flag-5'>地址</b>的流程有哪些呢?

    Linux系統為什么需要引入虛擬地址

    ,這 4GB 的內存空間按照 3:1 的比例進行分配,其中用戶進程享有 3G 的空間,而內核獨自享有剩下的1G 空間,如下所示: 虛擬地址會通過硬件MMU(內存管理單元)映射到實際的物理地址空間中,建立虛擬地址到物理
    的頭像 發表于 10-07 17:28 ?1231次閱讀
    Linux系統為什么需要引入<b class='flag-5'>虛擬地址</b>

    Linux虛擬地址空間和物理地址空間的關系

    過程,這其實也是MMU的工作原理。 我們知道,在Linux中,每個進程都有自己獨立的地址空間,且互不干擾。每個進程的地址空間又分為用戶空間和內核空間,但這些地址空間使用的都是
    的頭像 發表于 10-08 11:40 ?1612次閱讀
    Linux<b class='flag-5'>虛擬地址</b>空間和物理<b class='flag-5'>地址</b>空間的關系

    Linux虛擬地址到物理地址轉換過程

    虛擬地址到物理地址轉換過程 虛擬地址和物理地址都被劃分了兩部分: 虛擬地址虛擬頁面號VPN和
    的頭像 發表于 10-08 11:45 ?2443次閱讀
    Linux<b class='flag-5'>虛擬地址</b>到物理<b class='flag-5'>地址</b>轉換過程

    虛擬內存到物理地址的轉換

    處理器根據頁表基地址控制寄存TTBCR和虛擬地址來判斷使用哪個頁表基地址寄存,是TTBR0還
    的頭像 發表于 10-30 17:34 ?1003次閱讀
    <b class='flag-5'>虛擬</b>內存到物理<b class='flag-5'>地址</b>的轉換

    MMU虛擬地址空間布局

    當然虛擬地址空間劃分不只是如此。因為目前應用程序沒有那么大的內存需求,所以ARM64處理器不支持完全的64位虛擬地址,實際支持情況如下。 (1)-
    的頭像 發表于 11-26 16:35 ?1119次閱讀
    主站蜘蛛池模板: 超碰97人人做人人爱亚洲尤物 | 免费观看国产视频 | 曰本少妇高潮久久久久久 | 亚洲AV无码乱码国产精品品麻豆 | 亚洲高清无在码在线无弹窗 | 国产乱辈通伦影片在线播放亚洲 | 国产午夜电影在线观看不卡 | 动漫美女搞鸡 | 无码不卡中文字幕在线观看 | 最近中文字幕在线看免费完整版 | 亚州中文字幕 | 开心色99xxxx开心色 | 少妇被躁爽到高潮无码久久 | 国产精品久久久久久久久久久 | 麻豆免费版 | 夜色女人香 | 动漫美女禁区 | 男女又黄又刺激B片免费网站 | 午夜黄视频| 一道精品视频一区二区 | 国产精品永久在线 | 精品国产90后在线观看 | 一抽一出BGM免费50分动漫 | 国产午夜福利伦理300 | 亚洲欧美国产旡码专区 | 国产亚洲精品福利视频 | 久久免费看少妇高潮A片特爽 | 国产AV国产精品国产三级在线L | 欧美香蕉大胸在线视频观看 | 久99视频精品免费观看福利 | 亚洲国产综合另类视频 | qvod欧美电影| 乡土女性网动态图解 | 中文字幕本庄优花喂奶 | 亚洲成 人a影院青久在线观看 | 亚洲乱妇88网 | 丰满的美女射精动态图 | 成人高清护士在线播放 | 嫩B人妻精品一区二区三区 内射一区二区精品视频在线观看 | 特黄AAAAAAA片免费视频 | 成人无码国产AV免费看 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品