應(yīng)該有可以回答的上來的,但是大部分應(yīng)該是回答不上來。標(biāo)題的回答也不對。
計(jì)算機(jī)內(nèi)存里面分這么幾種數(shù)據(jù)
存在SRAM里面,嗯?內(nèi)存?對也不對,大家覺得內(nèi)存條應(yīng)該很快了吧?不,不快。
我的電腦里面有三種cache,可以看到L1最小,L3最快
大小
量相差很大
這是我自己電腦的實(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 很便宜。
DRAM簡單,電容充電就是有1了
讀取的時(shí)候還得一個(gè)放大器讀?。?/p>
電容這玩意兒漏電啊,要不停的刷新,不然一會兒就沒電荷了
SRAM,是兩個(gè)與門一個(gè)RS觸發(fā)器,1bit的儲存確實(shí)很復(fù)雜
要保證上下輸入不一致,還得加一個(gè)二極管取反,這東西就是鎖存器了
可以看到應(yīng)該是有兩塊SDRAM
大概是這樣的
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ī)地址存取.
就是這樣
我找了一個(gè)FSMS接口的圖看看
這里翻出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í)不會被初始化,在軟件重啟后也會保持值不變。
最后我還測試了一下這個(gè)GPU
審核編輯:彭菁
-
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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論