0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

内存寻址的具体设计

FPGA研究院 来源: FPGA开发之路 2023-12-16 09:25 次阅读

本文的目的不是介绍内存寻址的具体设计,其实很多细节我也不了解,而是想通过内存寻址的设计思想看看对 FPGA 的设计有什么帮助和借鉴。

内存寻址有两个的重要的设计:

内存分页

页表分级

关于内存分页 - 规整即简单

内存分页即将内存分割为以页(一般是4KB)为单元的块,然后内存的分配和使用都是以页为最小单元。假如一个进程只需要 2KB 的内存,仍然给其分配 4KB(一页)的空间。

关于内存分页的好处,我觉得知乎上一位知友的描述非常生动和形象。他将内存分页比喻为停车场划分停车位。停车位的划分使得停车人寻找停车位时变得简单,停车人不再需要自己判断位置空间是否够大能停下车,只需要看有没有空位即可。同时也使停车位的使用管理变得高效,停车场管理人员可以很容易判断并发布停车位的空位信息。当然,这可能只是内存分页的好处中的其中一个。

我们可以总结一下内存分页的使用场景:

有一块大的 memory 空间

有很多 Users 要使用 memory

Users 使用 memory 的时间和空间大小不确定

那么当我们在 FPGA 设计中遇到这样类似的场景时,便可以借鉴内存分页的思想,将 memory 划分为不同的块,来提高 memory 的使用和管理效率。当然,对于 memory 块的划分可能导致 memory 的浪费,像前面举的例子,只需要 2KB 的内存,却分配了 4KB 的空间。如何正确的取舍,去做 tradeoff,这也是设计者需要考虑的。

再往本质里看,这其实是硬件设计上的一个“规整”问题。就像CPU指令集的设计,因为不同指令对 bit 利用的规整,简化了CPU的设计。规整即简单。

关于页表分级 - 时间换空间

页表是用来将虚拟地址映射为物理地址的数据结构。对于 4KB 的页单元,需要 12-bit 来寻址。如果地址线的总位宽是 32-bit,那么我们需要 2^20 (32-12=20) 个页表,假如每个表项用 4 byte,那么页表总共要用到 4MB 的内存。这还只是一个进程用到的空间。

页表分级减少了页表对内存的使用量。用过两级分页(第一级页目录+第二级页表),即先通过第一级页目录查找到页表,再通过第二级页表去查找页,只有当第一级的页目录项用到时才去分配第二级的页表。举个例子,假如页目录和页表分别占用10-bit。页目录有2^10个项 (一共占用 4KB 内存),假如页目录只有第一项被用到,那么我们只需要分配其对应的页表,这个页表也是有2^10个项 (一共占用 4KB 内存),那么此时只用到了 4KB+4KB = 8KB 内存,相比于 4MB 节省了很大部分。

我们总结一下页表分级的场景:

多个 Users 共用一份地址线访问 memory

每个 Users 都需要自己的 memory 空间

实际有效的 Users 的数目是动态变化的

Users 对 memory 空间的使用也是动态变化的

遇到类似的场景我们便可以考虑将地址分级,对 Users 动态分配 memory 空间,几个 Users 甚至可以复用一份 memory,达到节省 memory 使用的目的。这样做当然增加了 memory 控制和管理的复杂度,也是设计上的 tradeoff。

再往本质里看,这个场景其实利用了事件发生的时间上的差异。是时间“换”空间的概念,地址分级只是实现这个概念的一个手段。

总结

本文思考了内存寻址的两个设计点对 FPGA 设计的借鉴意义。很多时候,设计的思想是相通的,尤其是像 CPU 或者 Linux内核 这样的经典的,经久不衰的设计。

来源: 本文转载自FPGA开发之路 公众号

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593194
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39846
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206557
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206734
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72764

原文标题:从内存寻址看 FPGA 设计

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是单片机寻址方式?寻址方式有哪些?

    的内容为20H,则执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H。2. 直接寻址直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址
    发表于 01-13 14:54

    Hexagon DSP的十二种寻址模式

    Hexagon DSP的十二种寻址模式 绝对寻址 绝对寻址模式将32位的值作为有效内存地址。例如:R2 = memw(##100000) // load R2 with word fr
    发表于 09-20 10:19

    共享内存知识记录

    每一个程序都有自己独立的寻址空间,这个寻址空间可能是4G大小,(当然一般程序肯定不会用这么大的空间的) 通过PCB(Processing Control Block)可以决定将进程内的虚拟地址映射到真实的硬件上的什么位置。(这个过程应该是有MMU(
    发表于 12-15 06:37

    单片机的可寻址内存是何意思

    说到单片机,我的第一反应是这个:(是不是感觉很厉害/手动滑稽)然而,拿到手却发现是这样的:(以为自己拿到了一条蜈蚣/手动滑稽)但是,咱们的这个仅有八个脚,可寻址内存只有64K的单片机(可寻址
    发表于 02-16 06:42

    间接寻址的应用

    介绍:本文介绍如何进行间接寻址,并举例说明如何利用间接寻址来清内存
    发表于 07-01 11:56 14次下载

    单片机寻址能力的解读

    单片机寻址能力的解读:CPU位宽与内存寻址能力没有关系
    发表于 12-27 15:30 1次下载

    ARM指令寻址方式之内存访问指令寻址

    4.2 内存访问指令寻址 根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种。 ① 字及无符号字节的Load/Store指令的
    发表于 10-18 16:32 1次下载
    ARM指令<b class='flag-5'>寻址</b>方式之<b class='flag-5'>内存</b>访问指令<b class='flag-5'>寻址</b>

    处理器系列之寻址空间详解

    一、什么叫寻址空间? 寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是
    发表于 01-26 01:20 4069次阅读

    plc的寻址方式:立即寻址、直接寻址、间接寻址

    我们都知道西门子200plc有三种寻址方式:立即寻址、直接寻址、间接寻址;这里主要给大家区分下直接和间接寻址 1、直接
    的头像 发表于 09-25 11:50 2.1w次阅读
    plc的<b class='flag-5'>寻址</b>方式:立即<b class='flag-5'>寻址</b>、直接<b class='flag-5'>寻址</b>、间接<b class='flag-5'>寻址</b>

    西门子PLC如何寻址具体方法是怎样的

    西门子S7-200编程语言的基本单位是语句,语句由指令组成。每条指令有两部分:一部分是操作码,另一部分是操作数。操作码指示该指令的功能是什么,操作数指示操作码所需的数据在哪里。寻址是寻找操作数的过程
    发表于 12-20 09:34 6241次阅读

    寻址方式与内存计算的详细说明

    指令转移示意图如下: 地址指针的字长是二进制的16位,说明可以表达的地址个数为2^16个。 2^16=(2^6)*(2^10)=64*1024=64KB,也就是它的可寻址范围是64KB,相应的地址
    的头像 发表于 06-18 20:34 5691次阅读
    <b class='flag-5'>寻址</b>方式与<b class='flag-5'>内存</b>计算的详细说明

    plc间接寻址有什么用?

    介绍如何在PLC程序中实现间接寻址。 一、PLC间接寻址的定义和原理 PLC间接寻址的概念很简单:它是一种通过一个地址来访问或操作其他内存单元或寄存器的技术。也就是说,它允许程序使用一
    的头像 发表于 09-15 14:59 1030次阅读

    PLC中为什么要间接寻址?直接寻址不行吗?

    PLC中为什么要间接寻址?直接寻址不行吗? PLC,也称程序可编程控制器,是一种专门用于自动化控制的电子设备,广泛应用于各种工业领域中。在PLC编程中,常常用到寻址的概念,以便读取或控制具体
    的头像 发表于 09-15 14:59 1158次阅读

    什么是PLC直接寻址和间接寻址

    什么是PLC直接寻址和间接寻址?  PLC直接寻址和间接寻址是在程序设计中经常使用的两种方法。直接寻址指的是根据地址直接访问特定的
    的头像 发表于 09-15 14:59 1659次阅读

    浅谈PLC编程的字节寻址和字寻址

    在PLC编程时,字节或多字节的变量一般支持绝对地址寻址(比如,IW0、MD4等)。要想正确寻址,则必须要搞清楚寻址的规则。目前常见的规则有两种:字节寻址和字
    发表于 01-24 10:51 199次阅读
    浅谈PLC编程的字节<b class='flag-5'>寻址</b>和字<b class='flag-5'>寻址</b>