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

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

3天内不再提示

C语言指针存在SRAM里面吗

云深之无迹 来源:云深之无迹 2024-06-04 10:28 次阅读

应该有可以回答的上来的,但是大部分应该是回答不上来。标题的回答也不对。

0e653602-219c-11ef-91d2-92fbcf53809c.png

计算机内存里面分这么几种数据

存在SRAM里面,嗯?内存?对也不对,大家觉得内存条应该很快了吧?不,不快。

0e854be0-219c-11ef-91d2-92fbcf53809c.png

我的电脑里面有三种cache,可以看到L1最小,L3最快

0eab88fa-219c-11ef-91d2-92fbcf53809c.png

大小

量相差很大

0ef7ba86-219c-11ef-91d2-92fbcf53809c.png

这是我自己电脑的实测,最慢的反而是内存,算完是58.49G/s,L1居然到了2K G这个速度,L3是内存的大概3倍多。看时间L1和内存的时间是100倍。

就先记住:FLASH用来存储程序的,SRAM是用来存储运行程序中的中间变量。

然后SRAM有个别的名字叫缓存,这听懂了吧?

SRAM是静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。

RAM掉电数据会丢失,RW-data是非0初始化的数据,已初始化的数据需要被存储在掉电不会丢失的FLASH中,上电后会从FLASH搬移到RAM中。

SRAM是访问时间短的片上存储器,DRAM是访问时间长的片外存储器。因此SRAM 比DRAM 快。

DRAM 的存储容量更大,而SRAM 的尺寸更小。SRAM很贵,而DRAM 很便宜。

0f2bd884-219c-11ef-91d2-92fbcf53809c.png

DRAM简单,电容充电就是有1了

0f4d2b1a-219c-11ef-91d2-92fbcf53809c.png

读取的时候还得一个放大器读取?

0f6dade0-219c-11ef-91d2-92fbcf53809c.png

电容这玩意儿漏电啊,要不停的刷新,不然一会儿就没电荷了

0f982098-219c-11ef-91d2-92fbcf53809c.png

SRAM,是两个与门一个RS触发器,1bit的储存确实很复杂

10029b4e-219c-11ef-91d2-92fbcf53809c.png

要保证上下输入不一致,还得加一个二极管取反,这东西就是锁存器了

10212172-219c-11ef-91d2-92fbcf53809c.png

可以看到应该是有两块SDRAM

103cf96a-219c-11ef-91d2-92fbcf53809c.png

105595e2-219c-11ef-91d2-92fbcf53809c.png

大概是这样的

LPDDR4是新一代面向移动设备的低功耗内存,它属于SDRAM家族的存储器产品

SDRAM是同步动态随机存取存储器的缩写,而SRAM是同步随机存取存储器的缩写。它们的最大区别在于,SDRAM必须被外部时钟同步刷新,而SRAM则不需要刷新。 虽然SRAM速度更快,读写时间也更短,但SRAM的成本较高,所以在存储器容量较小的情况下,通常使用SRAM,而对于大容量存储器,则使用SDRAM。 同步(Synchronous )是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准 动态(Dynamic )是指存储阵列 需要不断的刷新来保证数据不丢失 随机(Random )是指数据不是线性依次存储,而是自由指定地址进行 数据读写SDRAM具有空间存储量大、读写速度快、价格相对便宜等优点。 然而由于SDRAM内部利用电容来存储数据,为保证数据不丢失,需要持续对各存储电容进行刷新操作;同时在读写过程中 需要考虑行列管理、各种操作延时等,由此导致了其控制逻辑复杂的特点。 SDRAM 内部可以理解为一个存储阵列,表格中的每一个单元格可以类比为存储阵列的单个存储单元。若想要实现存储阵列中的某一存储单元的数据读写操作,我们要通过行地址(Row Address)和列地址 (Column Address)(先行后列)精确定位到这一存储单元,进而进行数据的读写操作,这就是所谓的随机地址存取.

1086a178-219c-11ef-91d2-92fbcf53809c.png

就是这样

10a91d0c-219c-11ef-91d2-92fbcf53809c.png

我找了一个FSMS接口的图看看

10cdedbc-219c-11ef-91d2-92fbcf53809c.png

这里翻出ESP32的手册看看

片内SRAM:大小:512 KB 关系:片内SRAM = IRAM (192KB ) + DRAM( 328KB )IRAM :作用:存储关键代码。 1.中断处理程序。注册中断处理程序时使用了 ESP_INTR_FLAG_IRAM,则中断处理程序必须要放入 IRAM。 2.可将一些时序关键代码放入 IRAM,以减少从 flash 中加载代码造成的相关损失。 3.以上两点为链接器自主操作,官方也提供接口,可以通过程序来声明函数,可以将 IRAM_ATTR 宏用作属性,直接将程序存储在这部分空间。 函数中的字符串或常量可能没有自动放入 RAM 中,这时可以使用 DRAM_ATTR 属性进行标记,或者也可以使用链接器脚本方法将它们自动放入 RAM 中。

void IRAM_ATTR gpio_isr_handler(void* arg) { const static DRAM_ATTR uint8_t INDEX_DATA[] = { 45, 33, 12, 0 }; const static char *MSG = DRAM_STR("I am a string stored in RAM"); }DRAM:作用两个: 非常量静态数据(.data 段)和零初始化数据(.bss 段)由链接器放入内部 SRAM 作为数据存储。 这部分空间的使用是由链接器在对项目代码编译链接时,根据程序内容自动使用。空间大小随程序内部使用情况扩张。 官方也提供接口,可以通过程序声明变量,直接使用这部分空间。可以将 __NOINIT_ATTR 宏用作属性,从而将数据放入 .noinit 部分。放入该部分的值在启动时不会被初始化,在软件重启后也会保持值不变。

1129a1c0-219c-11ef-91d2-92fbcf53809c.png

最后我还测试了一下这个GPU

审核编辑:彭菁

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

    关注

    6

    文章

    767

    浏览量

    114674
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87847
  • 内存
    +关注

    关注

    8

    文章

    3019

    浏览量

    74001
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136680

原文标题:C语言指针的值在哪里?在SRAM

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言入门教程-指针

    指针C语言中,指针被广泛使用。所以要想完整地掌握C语言,您需要对
    发表于 07-29 11:30 664次阅读

    C语言指针电子教程

    本资料是一份不错的关于C语言指针的电子教程,希望对大家有所帮助... 指针简介 指针C
    发表于 07-30 16:00 77次下载

    C语言中指针的介绍非常详细

    C语言中指针的介绍非常详细 C语言中指针的介绍非常详细
    发表于 12-25 10:39 57次下载

    C语言_指针总结_经典讲解

    C语言_指针总结_经典讲解。
    发表于 01-06 13:47 10次下载

    C语言指针函数和函数指针详细介绍

    C语言指针函数和函数指针详细介绍。。。。。。。
    发表于 03-04 15:27 5次下载

    C语言指针跨函数访问

    C语言指针跨函数访问
    发表于 12-16 17:23 1次下载

    c语言函数指针定义,指针函数和函数指针的区别

     往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言中函数指针
    发表于 11-16 15:18 3624次阅读

    C语言的精髓——指针详解

    C语言的精髓——指针详解
    发表于 11-30 14:43 17次下载

    为什么C语言要引入指针_引入指针的好处是什么

    让你知道什么是 C语言 指针,为什么用指针,从此不在害怕指针
    的头像 发表于 07-28 10:12 2.2w次阅读

    C语言中的指针(重点)超详细

    C语言中的指针1、指针是什么2、指针指针类型2.1、指针
    发表于 01-13 14:10 11次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>中的<b class='flag-5'>指针</b>(重点)超详细

    C语言进阶】C语言指针的高阶用法

    C语言进阶】C语言指针的高阶用法
    的头像 发表于 08-31 13:24 2317次阅读

    C语言中的悬空指针和野指针是什么意思?

    提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词
    的头像 发表于 02-09 17:20 1093次阅读

    详解C语言指针底层基本原理

    说到指针,估计还是有很多小伙伴都还是云里雾里的,有点“知其然,而不知其所以然”。但是,不得不说,学了指针C语言才能算是入门了。指针
    的头像 发表于 04-06 10:43 1248次阅读

    C语言指针用法

    C语言编程中善用指针可以简化一些任务的处理,而对于一些任务(比如动态内存分配),必须要有指针才行的。也就是说精通C
    发表于 03-05 14:22 346次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>的<b class='flag-5'>指针</b>用法

    C语言指针学习笔记

    本文从底层内存分析,彻底让读者明白C语言指针的本质。
    的头像 发表于 11-05 17:40 227次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>指针</b>学习笔记