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

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

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

內(nèi)存尋址的具體設(shè)計

FPGA研究院 ? 來源: FPGA開發(fā)之路 ? 2023-12-16 09:25 ? 次閱讀

本文的目的不是介紹內(nèi)存尋址的具體設(shè)計,其實很多細節(jié)我也不了解,而是想通過內(nèi)存尋址的設(shè)計思想看看對 FPGA 的設(shè)計有什么幫助和借鑒。

內(nèi)存尋址有兩個的重要的設(shè)計:

內(nèi)存分頁

頁表分級

關(guān)于內(nèi)存分頁 - 規(guī)整即簡單

內(nèi)存分頁即將內(nèi)存分割為以頁(一般是4KB)為單元的塊,然后內(nèi)存的分配和使用都是以頁為最小單元。假如一個進程只需要 2KB 的內(nèi)存,仍然給其分配 4KB(一頁)的空間。

關(guān)于內(nèi)存分頁的好處,我覺得知乎上一位知友的描述非常生動和形象。他將內(nèi)存分頁比喻為停車場劃分停車位。停車位的劃分使得停車人尋找停車位時變得簡單,停車人不再需要自己判斷位置空間是否夠大能停下車,只需要看有沒有空位即可。同時也使停車位的使用管理變得高效,停車場管理人員可以很容易判斷并發(fā)布停車位的空位信息。當然,這可能只是內(nèi)存分頁的好處中的其中一個。

我們可以總結(jié)一下內(nèi)存分頁的使用場景:

有一塊大的 memory 空間

有很多 Users 要使用 memory

Users 使用 memory 的時間和空間大小不確定

那么當我們在 FPGA 設(shè)計中遇到這樣類似的場景時,便可以借鑒內(nèi)存分頁的思想,將 memory 劃分為不同的塊,來提高 memory 的使用和管理效率。當然,對于 memory 塊的劃分可能導(dǎo)致 memory 的浪費,像前面舉的例子,只需要 2KB 的內(nèi)存,卻分配了 4KB 的空間。如何正確的取舍,去做 tradeoff,這也是設(shè)計者需要考慮的。

再往本質(zhì)里看,這其實是硬件設(shè)計上的一個“規(guī)整”問題。就像CPU指令集的設(shè)計,因為不同指令對 bit 利用的規(guī)整,簡化了CPU的設(shè)計。規(guī)整即簡單。

關(guān)于頁表分級 - 時間換空間

頁表是用來將虛擬地址映射為物理地址的數(shù)據(jù)結(jié)構(gòu)。對于 4KB 的頁單元,需要 12-bit 來尋址。如果地址線的總位寬是 32-bit,那么我們需要 2^20 (32-12=20) 個頁表,假如每個表項用 4 byte,那么頁表總共要用到 4MB 的內(nèi)存。這還只是一個進程用到的空間。

頁表分級減少了頁表對內(nèi)存的使用量。用過兩級分頁(第一級頁目錄+第二級頁表),即先通過第一級頁目錄查找到頁表,再通過第二級頁表去查找頁,只有當?shù)谝患壍捻撃夸涰椨玫綍r才去分配第二級的頁表。舉個例子,假如頁目錄和頁表分別占用10-bit。頁目錄有2^10個項 (一共占用 4KB 內(nèi)存),假如頁目錄只有第一項被用到,那么我們只需要分配其對應(yīng)的頁表,這個頁表也是有2^10個項 (一共占用 4KB 內(nèi)存),那么此時只用到了 4KB+4KB = 8KB 內(nèi)存,相比于 4MB 節(jié)省了很大部分。

我們總結(jié)一下頁表分級的場景:

多個 Users 共用一份地址線訪問 memory

每個 Users 都需要自己的 memory 空間

實際有效的 Users 的數(shù)目是動態(tài)變化的

Users 對 memory 空間的使用也是動態(tài)變化的

遇到類似的場景我們便可以考慮將地址分級,對 Users 動態(tài)分配 memory 空間,幾個 Users 甚至可以復(fù)用一份 memory,達到節(jié)省 memory 使用的目的。這樣做當然增加了 memory 控制和管理的復(fù)雜度,也是設(shè)計上的 tradeoff。

再往本質(zhì)里看,這個場景其實利用了事件發(fā)生的時間上的差異。是時間“換”空間的概念,地址分級只是實現(xiàn)這個概念的一個手段。

總結(jié)

本文思考了內(nèi)存尋址的兩個設(shè)計點對 FPGA 設(shè)計的借鑒意義。很多時候,設(shè)計的思想是相通的,尤其是像 CPU 或者 Linux內(nèi)核 這樣的經(jīng)典的,經(jīng)久不衰的設(shè)計。

來源: 本文轉(zhuǎn)載自FPGA開發(fā)之路 公眾號

審核編輯:湯梓紅

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598886
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

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

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209338
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207896
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2902

    瀏覽量

    73535

原文標題:從內(nèi)存尋址看 FPGA 設(shè)計

文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    PLC里面的立即尋址、直接尋址、間接尋址你都搞懂了嗎?

    我們都知道西門子200plc有三種尋址方式:立即尋址、直接尋址、間接尋址;這里主要給大家區(qū)分下直接和間接尋址
    的頭像 發(fā)表于 01-04 15:20 ?1507次閱讀
    PLC里面的立即<b class='flag-5'>尋址</b>、直接<b class='flag-5'>尋址</b>、間接<b class='flag-5'>尋址</b>你都搞懂了嗎?

    什么是單片機尋址方式?尋址方式有哪些?

    的內(nèi)容為20H,則執(zhí)行MOV R1,A指令后,內(nèi)部RAM 09H單元的值就變?yōu)?0H。2. 直接尋址直接尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在MCS-51單片機中,可以直接尋址
    發(fā)表于 01-13 14:54

    Hexagon DSP的十二種尋址模式

    Hexagon DSP的十二種尋址模式 絕對尋址 絕對尋址模式將32位的值作為有效內(nèi)存地址。例如:R2 = memw(##100000) // load R2 with word fr
    發(fā)表于 09-20 10:19

    單片機的可尋址內(nèi)存是何意思

    說到單片機,我的第一反應(yīng)是這個:(是不是感覺很厲害/手動滑稽)然而,拿到手卻發(fā)現(xiàn)是這樣的:(以為自己拿到了一條蜈蚣/手動滑稽)但是,咱們的這個僅有八個腳,可尋址內(nèi)存只有64K的單片機(可尋址內(nèi)
    發(fā)表于 02-16 06:42

    間接尋址的應(yīng)用

    介紹:本文介紹如何進行間接尋址,并舉例說明如何利用間接尋址來清內(nèi)存。
    發(fā)表于 07-01 11:56 ?14次下載

    單片機尋址能力的解讀

    單片機尋址能力的解讀:CPU位寬與內(nèi)存尋址能力沒有關(guān)系
    發(fā)表于 12-27 15:30 ?1次下載

    ARM指令尋址方式之內(nèi)存訪問指令尋址

    4.2 內(nèi)存訪問指令尋址 根據(jù)內(nèi)存訪問指令的分類,內(nèi)存訪問指令的尋址方式可以分為以下幾種。 ① 字及無符號字節(jié)的Load/Store指令的
    發(fā)表于 10-18 16:32 ?1次下載
    ARM指令<b class='flag-5'>尋址</b>方式之<b class='flag-5'>內(nèi)存</b>訪問指令<b class='flag-5'>尋址</b>

    plc的尋址方式:立即尋址、直接尋址、間接尋址

    我們都知道西門子200plc有三種尋址方式:立即尋址、直接尋址、間接尋址;這里主要給大家區(qū)分下直接和間接尋址 1、直接
    的頭像 發(fā)表于 09-25 11:50 ?2.2w次閱讀
    plc的<b class='flag-5'>尋址</b>方式:立即<b class='flag-5'>尋址</b>、直接<b class='flag-5'>尋址</b>、間接<b class='flag-5'>尋址</b>

    西門子PLC如何尋址,具體方法是怎樣的

    西門子S7-200編程語言的基本單位是語句,語句由指令組成。每條指令有兩部分:一部分是操作碼,另一部分是操作數(shù)。操作碼指示該指令的功能是什么,操作數(shù)指示操作碼所需的數(shù)據(jù)在哪里。尋址是尋找操作數(shù)的過程
    發(fā)表于 12-20 09:34 ?6882次閱讀

    尋址方式與內(nèi)存計算的詳細說明

    指令轉(zhuǎn)移示意圖如下: 地址指針的字長是二進制的16位,說明可以表達的地址個數(shù)為2^16個。 2^16=(2^6)*(2^10)=64*1024=64KB,也就是它的可尋址范圍是64KB,相應(yīng)的地址號
    的頭像 發(fā)表于 06-18 20:34 ?6371次閱讀
    <b class='flag-5'>尋址</b>方式與<b class='flag-5'>內(nèi)存</b>計算的詳細說明

    PLC中為什么要間接尋址?直接尋址不行嗎?

    PLC中為什么要間接尋址?直接尋址不行嗎? PLC,也稱程序可編程控制器,是一種專門用于自動化控制的電子設(shè)備,廣泛應(yīng)用于各種工業(yè)領(lǐng)域中。在PLC編程中,常常用到尋址的概念,以便讀取或控制具體
    的頭像 發(fā)表于 09-15 14:59 ?1478次閱讀

    什么是PLC直接尋址和間接尋址?

    什么是PLC直接尋址和間接尋址?? PLC直接尋址和間接尋址是在程序設(shè)計中經(jīng)常使用的兩種方法。直接尋址指的是根據(jù)地址直接訪問特定的
    的頭像 發(fā)表于 09-15 14:59 ?2171次閱讀

    寄存器尋址的實現(xiàn)方式

    在計算機體系結(jié)構(gòu)中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器。寄存器尋址可以提高程序的執(zhí)行效率,因為它避免了對內(nèi)存的訪問。 寄存器
    的頭像 發(fā)表于 07-12 10:36 ?359次閱讀

    寄存器尋址和直接尋址的區(qū)別

    寄存器尋址和直接尋址是計算機指令系統(tǒng)中的兩種基本尋址方式。它們在指令的執(zhí)行過程中起著至關(guān)重要的作用,決定了指令操作數(shù)的來源和目標。下面我們將介紹這兩種尋址方式的特點、區(qū)別以及在實際應(yīng)用
    的頭像 發(fā)表于 07-12 10:42 ?452次閱讀

    DDR4尋址原理詳解

    )的尋址原理是計算機內(nèi)存系統(tǒng)中至關(guān)重要的一個環(huán)節(jié),它決定了數(shù)據(jù)如何在內(nèi)存中被有效地存儲和訪問。DDR4的尋址原理復(fù)雜而高效,以下將詳細闡述其關(guān)鍵要素和工作流程。
    的頭像 發(fā)表于 09-04 12:38 ?177次閱讀