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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

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

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

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

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

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

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

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

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

然后程序開始執(zhí)行時,操作系統(tǒng)先初始化,然后加載各個進(jìn)程;

1. 指令

只是cache,不區(qū)分是誰的操作系統(tǒng)指令 or 進(jìn)程指令;

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

因?yàn)榧偈鼓硞€程序卸載后,update后的程序比原來大,原來連續(xù)的地址空間不夠用了,只能看看哪里還有空缺

- 用不連續(xù)的兩塊nor flash區(qū)域拼接;

但是complier會很痛苦,因?yàn)閷?shí)際可能遠(yuǎn)遠(yuǎn)不止2塊不連續(xù),要處理address remap問題,即使是相對分支跳轉(zhuǎn)指令;

- 或者干脆找一塊足夠大的區(qū)域,導(dǎo)致內(nèi)存碎片,利用率不高;

note:當(dāng)然處理器不會關(guān)心這些復(fù)雜的事情,它只傻傻的執(zhí)行每一條指令規(guī)定的行為。

如果系統(tǒng)沒有cache,這些指令直接就流進(jìn)處理器;

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

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

2. 數(shù)據(jù)

這里的數(shù)據(jù)專指程序執(zhí)行過程產(chǎn)生的臨時數(shù)據(jù),存儲在片上sram,or DDR中,而不是只一開始就存儲在nor flash中的literal data

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

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

編譯器會計(jì)算最深的函數(shù)調(diào)用(stack向下生長最長) + 在這種情況下發(fā)生中斷保存現(xiàn)場stack需要;

但如果有“遞歸調(diào)用”則是另外一回事,編譯器可能并不知道實(shí)際工作情況,自然無法準(zhǔn)確預(yù)估stack需要;

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

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

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

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

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

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

分析:對于小型系統(tǒng)來說,各個程序系統(tǒng)開發(fā)者可以把關(guān),并進(jìn)行測試保證系統(tǒng)穩(wěn)定性;

但對于大型系統(tǒng)來說,程序及其龐雜,開發(fā)者眾多,開發(fā)者水平不一;有第三方開發(fā)的軟件需要安裝,甚至有些有些惡意軟件要攻擊別的軟件;即某個程序可能異常可能會造成系統(tǒng)崩潰,或信息泄露,不管有意還是無意,最終導(dǎo)致這個后果。

審核編輯:黃飛

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

    關(guān)注

    68

    文章

    19265

    瀏覽量

    229686
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10855

    瀏覽量

    211615
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6808

    瀏覽量

    123292
  • 虛擬存儲器
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    8782
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1624

    瀏覽量

    49113
收藏 人收藏

    評論

    相關(guān)推薦

    linux虛擬地址如何轉(zhuǎn)物理地址

    linux虛擬地址轉(zhuǎn)物理地址
    發(fā)表于 05-13 09:31

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

    的緩存效率較低。緩存效率較低,因?yàn)樾?nèi)存塊需要多次讀取級別才能轉(zhuǎn)換。處理器在開始表查找時不知道轉(zhuǎn)換的大小。處理器通過執(zhí)行表遍歷計(jì)算出正在轉(zhuǎn)換的塊的大小。在ARMv8-A中有三個獨(dú)立的虛擬地址空間,分別
    發(fā)表于 04-08 17:17

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

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

    用戶態(tài)得到虛擬地址對應(yīng)的物理地址

    一般我們不需要從用戶態(tài)得到進(jìn)程虛擬地址對應(yīng)的物理地址,因?yàn)橐话銇碚f用戶進(jìn)程是完全不關(guān)心物理地址的。
    的頭像 發(fā)表于 10-10 14:10 ?2506次閱讀
    用戶態(tài)得到<b class='flag-5'>虛擬地址</b>對應(yīng)的物理<b class='flag-5'>地址</b>

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

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

    內(nèi)核邏輯地址和內(nèi)核虛擬地址到底有什么區(qū)別

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

    虛擬地址和邏輯地址的區(qū)別是什么?

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

    虛擬地址物理地址等眾多地址及MMU相關(guān)知識

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

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

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

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

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

    Linux系統(tǒng)為什么需要引入虛擬地址

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

    Linux虛擬地址空間和物理地址空間的關(guān)系

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

    Linux虛擬地址到物理地址轉(zhuǎn)換過程

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

    虛擬內(nèi)存到物理地址的轉(zhuǎn)換

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

    MMU虛擬地址空間布局

    當(dāng)然虛擬地址空間劃分不只是如此。因?yàn)槟壳皯?yīng)用程序沒有那么大的內(nèi)存需求,所以ARM64處理器不支持完全的64位虛擬地址,實(shí)際支持情況如下。 (1)-
    的頭像 發(fā)表于 11-26 16:35 ?881次閱讀
    主站蜘蛛池模板: 国内精品日本久久久久影院| 九色PORNY真实丨国产免费| 娇妻被朋友玩得呻吟在线电影| 久久中文字幕综合不卡一二区| 青青草在线视频| 精品精品国产自在现拍| 国产九色在线| 老牛天天晚上夜噜噜噜| 麻豆COMCN| 女人高潮了拔出来了她什么感觉| 熟女少妇内射日韩亚洲| 在线精品视频免费观看| 中文字幕伊人香蕉在线| 国产成A人片在线观看| 久久青青无码AV亚洲黑人| 色欲国产麻豆精品AV免费| 我的家庭女教师| 3DNagoonimation动漫| 国产精品伊人| 欧美精品成人久久网站| 亚洲免费视频在线观看| 稚嫩挤奶h调教h| 97无码欧美熟妇人妻蜜| 国产一区内射最近更新| 欧洲日韩av无线在码| 一道本在线伊人蕉无码| 国产 高清 无码 在线播放| 美女露出逼| 亚洲人成电影网站色2017| 电影内射视频免费观看| 男生扒开美女尿口戳戳 | 欧美另类z0z000高清| 亚洲视频在线免费| 国产成人精品永久免费视频| 嗯啊好爽视频| 影音先锋av色咪影院| 国产亚洲精品久久久久久入口 | 国产无遮挡又黄又爽在线视频 | 国产精品久久久久久久AV下载| 男人插曲女人的叫声| 亚洲中文 字幕 国产 综合|