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

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

完善資料讓更多小伙伴認識你,還能領取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

    文章

    19400

    瀏覽量

    230742
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10901

    瀏覽量

    212640
  • 操作系統
    +關注

    關注

    37

    文章

    6882

    瀏覽量

    123582
  • 虛擬存儲器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8794
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49231
收藏 人收藏

    評論

    相關推薦

    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 ?2535次閱讀
    用戶態得到<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.4w次閱讀
    <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 ?5010次閱讀

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

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

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

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

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

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

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

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

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

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

    MMU虛擬地址空間布局

    當然虛擬地址空間劃分不只是如此。因為目前應用程序沒有那么大的內存需求,所以ARM64處理器不支持完全的64位虛擬地址,實際支持情況如下。 (1)-
    的頭像 發表于 11-26 16:35 ?913次閱讀
    主站蜘蛛池模板: 国产色情短视频在线网站| 花蝴蝶在线观看免费中文版高清| 青青草国拍2018| 最新色导航| 国产精品无码AV天天爽人妻蜜桃| 欧美性猛交xxxxxxxx软件| 99久久精品国产国产毛片| 男女XX00上下抽搐动态图| 亚洲精品在线网址| 国际老妇高清在线观看| 亚洲国产欧美日本大妈| 国精产品一区一区三区有| 亚洲精品有码在线观看| 久久久久久久尹人综合网亚洲| 中文无码乱人伦中文视频播放| 免费国产成人高清在线看软件| jizz黑丝| 噜噜噜狠狠夜夜躁| 亚洲 欧美 制服 校园 动漫| 爱爱好爽好大好紧视频| 日韩久久影院| 国产免费毛片在线观看| 英国video性精品高清最新| 国产在线综合色视频| 亚洲日韩有码无线免费| 久久偷拍vs国产在线播放| 亚洲国产中文字幕新在线| 好妞操| 无套内射无矿码免费看黄| 抽插妇女疯狂视频| 欧美成人无码A区在线观看免费| 亚洲日韩天堂在线中文字幕| 久久精品一区| 阿力gv资源| 亚洲精品久久久无码AV片软件| 久久婷五月综合色啪首页| 纯肉合集(高H)| 一抽一出BGM免费3分钟| 精品人妻一区二区三区视频53| 亚洲精品成人在线| 蜜臀AV熟女人妻中文字幕|