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

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

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

C語言指針存在SRAM里面嗎

云深之無跡 ? 來源:云深之無跡 ? 2024-06-04 10:28 ? 次閱讀

應(yīng)該有可以回答的上來的,但是大部分應(yīng)該是回答不上來。標(biāo)題的回答也不對。

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

計(jì)算機(jī)內(nèi)存里面分這么幾種數(shù)據(jù)

存在SRAM里面,嗯?內(nèi)存?對也不對,大家覺得內(nèi)存條應(yīng)該很快了吧?不,不快。

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

我的電腦里面有三種cache,可以看到L1最小,L3最快

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

大小

量相差很大

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

這是我自己電腦的實(shí)測,最慢的反而是內(nèi)存,算完是58.49G/s,L1居然到了2K G這個(gè)速度,L3是內(nèi)存的大概3倍多??磿r(shí)間L1和內(nèi)存的時(shí)間是100倍。

就先記?。篎LASH用來存儲程序的,SRAM是用來存儲運(yùn)行程序中的中間變量。

然后SRAM有個(gè)別的名字叫緩存,這聽懂了吧?

SRAM是靜態(tài)隨機(jī)存取存儲器。它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù)。

RAM掉電數(shù)據(jù)會丟失,RW-data是非0初始化的數(shù)據(jù),已初始化的數(shù)據(jù)需要被存儲在掉電不會丟失的FLASH中,上電后會從FLASH搬移到RAM中。

SRAM是訪問時(shí)間短的片上存儲器,DRAM是訪問時(shí)間長的片外存儲器。因此SRAM 比DRAM 快。

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

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

DRAM簡單,電容充電就是有1了

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

讀取的時(shí)候還得一個(gè)放大器讀?。?/p>

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

電容這玩意兒漏電啊,要不停的刷新,不然一會兒就沒電荷了

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

SRAM,是兩個(gè)與門一個(gè)RS觸發(fā)器,1bit的儲存確實(shí)很復(fù)雜

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

要保證上下輸入不一致,還得加一個(gè)二極管取反,這東西就是鎖存器了

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

可以看到應(yīng)該是有兩塊SDRAM

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

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

大概是這樣的

LPDDR4是新一代面向移動設(shè)備的低功耗內(nèi)存,它屬于SDRAM家族的存儲器產(chǎn)品。

SDRAM是同步動態(tài)隨機(jī)存取存儲器的縮寫,而SRAM是同步隨機(jī)存取存儲器的縮寫。它們的最大區(qū)別在于,SDRAM必須被外部時(shí)鐘同步刷新,而SRAM則不需要刷新。 雖然SRAM速度更快,讀寫時(shí)間也更短,但SRAM的成本較高,所以在存儲器容量較小的情況下,通常使用SRAM,而對于大容量存儲器,則使用SDRAM。 同步(Synchronous )是指內(nèi)存工作需要同步時(shí)鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn) 動態(tài)(Dynamic )是指存儲陣列 需要不斷的刷新來保證數(shù)據(jù)不丟失 隨機(jī)(Random )是指數(shù)據(jù)不是線性依次存儲,而是自由指定地址進(jìn)行 數(shù)據(jù)讀寫SDRAM具有空間存儲量大、讀寫速度快、價(jià)格相對便宜等優(yōu)點(diǎn)。 然而由于SDRAM內(nèi)部利用電容來存儲數(shù)據(jù),為保證數(shù)據(jù)不丟失,需要持續(xù)對各存儲電容進(jìn)行刷新操作;同時(shí)在讀寫過程中 需要考慮行列管理、各種操作延時(shí)等,由此導(dǎo)致了其控制邏輯復(fù)雜的特點(diǎn)。 SDRAM 內(nèi)部可以理解為一個(gè)存儲陣列,表格中的每一個(gè)單元格可以類比為存儲陣列的單個(gè)存儲單元。若想要實(shí)現(xiàn)存儲陣列中的某一存儲單元的數(shù)據(jù)讀寫操作,我們要通過行地址(Row Address)和列地址 (Column Address)(先行后列)精確定位到這一存儲單元,進(jìn)而進(jìn)行數(shù)據(jù)的讀寫操作,這就是所謂的隨機(jī)地址存取.

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

就是這樣

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

我找了一個(gè)FSMS接口的圖看看

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

這里翻出ESP32的手冊看看

片內(nèi)SRAM:大小:512 KB 關(guān)系:片內(nèi)SRAM = IRAM (192KB ) + DRAM( 328KB )IRAM :作用:存儲關(guān)鍵代碼。 1.中斷處理程序。注冊中斷處理程序時(shí)使用了 ESP_INTR_FLAG_IRAM,則中斷處理程序必須要放入 IRAM。 2.可將一些時(shí)序關(guān)鍵代碼放入 IRAM,以減少從 flash 中加載代碼造成的相關(guān)損失。 3.以上兩點(diǎn)為鏈接器自主操作,官方也提供接口,可以通過程序來聲明函數(shù),可以將 IRAM_ATTR 宏用作屬性,直接將程序存儲在這部分空間。 函數(shù)中的字符串或常量可能沒有自動放入 RAM 中,這時(shí)可以使用 DRAM_ATTR 屬性進(jìn)行標(biāo)記,或者也可以使用鏈接器腳本方法將它們自動放入 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:作用兩個(gè): 非常量靜態(tài)數(shù)據(jù)(.data 段)和零初始化數(shù)據(jù)(.bss 段)由鏈接器放入內(nèi)部 SRAM 作為數(shù)據(jù)存儲。 這部分空間的使用是由鏈接器在對項(xiàng)目代碼編譯鏈接時(shí),根據(jù)程序內(nèi)容自動使用??臻g大小隨程序內(nèi)部使用情況擴(kuò)張。 官方也提供接口,可以通過程序聲明變量,直接使用這部分空間??梢詫?__NOINIT_ATTR 宏用作屬性,從而將數(shù)據(jù)放入 .noinit 部分。放入該部分的值在啟動時(shí)不會被初始化,在軟件重啟后也會保持值不變。

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

最后我還測試了一下這個(gè)GPU

審核編輯:彭菁

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

    關(guān)注

    6

    文章

    757

    瀏覽量

    114450
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7168

    瀏覽量

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

    關(guān)注

    8

    文章

    2902

    瀏覽量

    73534
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134003

原文標(biāo)題:C語言指針的值在哪里?在SRAM

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言入門教程-指針

    指針C語言中,指針被廣泛使用。所以要想完整地掌握C語言,您需要對
    發(fā)表于 07-29 11:30 ?634次閱讀

    C語言指針電子教程

    本資料是一份不錯(cuò)的關(guān)于C語言指針的電子教程,希望對大家有所幫助... 指針簡介 指針C
    發(fā)表于 07-30 16:00 ?77次下載

    C語言中指針的介紹非常詳細(xì)

    C語言中指針的介紹非常詳細(xì) C語言中指針的介紹非常詳細(xì)
    發(fā)表于 12-25 10:39 ?57次下載

    C語言_指針總結(jié)_經(jīng)典講解

    C語言_指針總結(jié)_經(jīng)典講解。
    發(fā)表于 01-06 13:47 ?10次下載

    C語言指針函數(shù)和函數(shù)指針詳細(xì)介紹

    C語言指針函數(shù)和函數(shù)指針詳細(xì)介紹。。。。。。。
    發(fā)表于 03-04 15:27 ?5次下載

    C語言指針跨函數(shù)訪問

    C語言指針跨函數(shù)訪問
    發(fā)表于 12-16 17:23 ?1次下載

    c語言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別

     往往,我們一提到指針函數(shù)和函數(shù)指針的時(shí)候,就有很多人弄不懂。下面就由小編詳細(xì)為大家介紹C語言中函數(shù)指針
    發(fā)表于 11-16 15:18 ?3551次閱讀

    C語言的精髓——指針詳解

    C語言的精髓——指針詳解
    發(fā)表于 11-30 14:43 ?17次下載

    為什么C語言要引入指針_引入指針的好處是什么

    讓你知道什么是 C語言 指針,為什么用指針,從此不在害怕指針。
    的頭像 發(fā)表于 07-28 10:12 ?2.2w次閱讀

    C語言中的指針(重點(diǎn))超詳細(xì)

    C語言中的指針1、指針是什么2、指針指針類型2.1、指針
    發(fā)表于 01-13 14:10 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中的<b class='flag-5'>指針</b>(重點(diǎn))超詳細(xì)

    C語言進(jìn)階】C語言指針的高階用法

    C語言進(jìn)階】C語言指針的高階用法
    的頭像 發(fā)表于 08-31 13:24 ?2147次閱讀

    C語言中的懸空指針和野指針是什么意思?

    提起C語言大部分開發(fā)者很自然就會想到指針二字,沒錯(cuò),作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個(gè)特有名詞
    的頭像 發(fā)表于 02-09 17:20 ?958次閱讀

    詳解C語言指針底層基本原理

    說到指針,估計(jì)還是有很多小伙伴都還是云里霧里的,有點(diǎn)“知其然,而不知其所以然”。但是,不得不說,學(xué)了指針C語言才能算是入門了。指針
    的頭像 發(fā)表于 04-06 10:43 ?1120次閱讀

    為什么說指針C語言的靈魂呢?

    指針C語言的靈魂,這句話并不夸張。
    發(fā)表于 09-05 17:03 ?589次閱讀
    為什么說<b class='flag-5'>指針</b>是<b class='flag-5'>C</b><b class='flag-5'>語言</b>的靈魂呢?

    C語言指針用法

    C語言編程中善用指針可以簡化一些任務(wù)的處理,而對于一些任務(wù)(比如動態(tài)內(nèi)存分配),必須要有指針才行的。也就是說精通C
    發(fā)表于 03-05 14:22 ?255次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>指針</b>用法