U盤與GBA遊戲卡的記憶原理有何區別?

記得以前玩GBA時

卡帶使用時間長了

內置的紐扣電池沒電了記錄就丟了

但即使換電池

記錄也會因換電池丟失

唯一的不是辦法的辦法

就是一直把卡插在GBA上

為什麼卡帶上的遊戲記錄會因為沒電丟失

而U盤上的數據不會?

卡帶上為何不採取U盤的儲存技術?

聲稱是IC晶元記憶的卡帶能否不丟失記錄呢?


我靠本專業知識,趕在知乎硅工團到達現場之前答一個。

這個問題本質上是問易失性存儲器(Volatile Memory)和非易失性存儲器(Non-Volatile Memory,NVM)之間原理上的區別。一般的說易失性存儲器的原理比較簡單,非易失性的原理則多種多樣。還好題主只問了Flash,我偷懶只答個Flash好了。

易失性存儲器目前應用最廣的兩種是靜態(Static)和動態(Dynamic)隨機訪問存儲器(Random Access Memory),常用縮寫分別為SRAM和DRAM。

DRAM的原理都是用三極體做開關,用電容做存儲介質。他的結構如下圖。

(圖片來自What is RAM made of and how does it work?,如拒絕轉載請聯繫我)

圖中紅線是DRAM單元選擇,藍線既做讀取線也做寫入線。寫入時藍線外接高/低電平,電容就充/放電了;讀取的時候藍線外接輸入,電容裡面存的高低電平就輸出了。

容易看出DRAM的原理是所謂有損讀取:讀取的時候如果電容裡面有電,是要消耗電容裡面的電量的;如果電容里沒電,輸入端的殘餘電荷也會注入電容。所以DRAM多讀幾次,裡面存的電量會趨於中間值,信息就不明確了。這時候就需要控制電路給電容定期刷新,把他拉回相應的高低電平上去。DRAM所謂「動態」,指的就是這個刷新的需要。

下面說說SRAM。

(圖片來自What is RAM made of and how does it work?,如拒絕轉載請聯繫我)

SRAM與DRAM不同的是他不使用顯式的電容,而是用兩個首尾相連成環形的反門。容易理解每個SRAM單元可以有兩種穩定狀態,左高右低和左低右高。兩種狀態都是直接由反門供電維持的,讀取也不會流失,所以不需要刷新,這就是為什麼SRAM叫做靜態內存。

SRAM比DRAM性能要高一點,但是面積也大。DRAM只需要一個三極體,SRAM要八個。所以SRAM要比DRAM貴得多。他們倆的共性是信息用電存儲。DRAM使用電容,SRAM的信息實際上是直接接到供電網路或地線的。如果晶元掉電,SRAM和DRAM存儲信息的電全要流走,信息就沒了。這就是為啥他們叫做易失性存儲器。

Flash的原理跟SRAM和DRAM都不一樣。他的基本單元結構是這樣的:

(圖片來自Flash Memory,如拒絕轉載請聯繫我)

跟一般的MOSFET三極體相比,Flash是所謂雙門極結構:如圖中哈密瓜色的是所謂控制門極,橘子色的叫做浮動門極,棒子麵色的是底下的硅基板,青綠色的窄條是絕緣體。一般的MOSFET三極體沒有那個浮動門極,只有控制門極,是用控制門極的電壓高低控制底下硅基板中的載流子從而形成導電溝道來實現電路的開閉。

在Flash的門裡這個浮動門極任何時候都是和電路徹底絕緣的,所以他裡面存儲的電量不會因為掉電流失。那麼浮動門極裡面的電量是哪裡來的呢?這需要用到一點量子力學的基礎知識。

我們知道根據量子力學,微觀粒子的能量是不確定的,它們隨時可以從虛空中以一定概率「借」到能量,然後再還回去。需要「借」的能量越大,概率越低。這使得微觀粒子表現出一種叫做隧穿效應的能力,可以越過一定的能量勢壘。用比喻說明,就是放在杯子里的球跳過杯壁跑到杯子外面來了。

Flash的浮動門極裡面的電量就是這樣來的。在需要寫入的時候,給底下的硅基板通大電流。這使得硅基板中的載流子得到很高的能量,工程上叫做把載流子變「熱」了。這些熱載流子要越過絕緣層進入浮動門極需要借的能量就很低,工程上把這個方法叫做熱載流子注入。如果需要寫入高,那就給控制門極通低電平來吸引空穴;如果需要寫入低,那就給控制門極通高電平來吸引電子。

浮動門極裡面的電量既然與外界絕緣,那是如何讀取的呢?這是利用浮動門極中電量形成的電場。控制門極控制硅基板中的導電溝道開閉是要超過一定電壓的,這個電壓叫做閾值電壓。由於浮動門極中存在電量,它會影響控制門極給硅基板施加的電壓,從而在效果上改變閾值電壓。我們只要給控制門極通一個較低的電壓,觀察導電溝道是否打開,就能觀察到浮動門極中是否存有電荷。

至於Flash的NAND和NOR型,取決於上面描述的Flash存儲單元的接法,NOR型是並聯接法,NAND型是串聯接法,不是真的說接出一個與非門、或非門來。這兩種接法及Flash控制晶元的原理與非易失性關係不大,在此就不展開了。


GBA 卡帶是直接映射到 CPU 地址線上的 ROM,遊戲機啟動加電後直接跳轉過去 ROM地址開頭去執行裡面的指令,資源就是靜態內存地址,通常幾乎沒有 loading 過程。

3DS/PSV/光碟 這些介質都是需要額外調用 I/O 功能讀入的。所以有 loading 過程,而且很討厭,比如 PS 上 KOF97每局開頭 loading 半天,我這不就想快點開始玩么。

簡而言之:

傳統卡帶:ROM,直接內存地址訪問,速度快成本高,大小有限

現代卡帶:需要 i/O 載入到內存才能訪問,你可以理解成磁碟,速度慢成本低,大小無限。


看了一下,原來沒有搞嵌入式的。

U盤是NAND FLASH。

卡帶是SRAM配合電源管理晶元,電池的存儲和電源管理電路。

——————

因為拆過早期的日本設備,這是一個經典的電路設計。

數據保存在SRAM中,增加一個類似MAX791的電源管理晶元做為電源管理。

有外部供電(卡在GBA上)時,

電源管理晶元用外部電源給卡帶供電。

沒有外部電源時,電源管理晶元用電池給卡帶的SRAM供電,保存數據。

——————

為什麼用SRAM保存數據呢?

因為SRAM可以快速的存儲當前數據,而且頻繁寫NOR FLASH的話,會影響FLASH壽命。

而且,早期cpu匯流排頻率太低,存儲FLASH也慢,影響操作感。

——————

因為卡帶售價很低,所以MAX791價格太高,可能會採用更便宜的電源管理晶元。

如果不考慮成本,會採用可充電的鎳氫電池,這樣卡帶插在GBA上時,電源管理晶元就能給電池充電。

卡帶常用的話,電池不損壞的前提下,電池會一直有電。不過我找到的質量最好的德國充電電池也只能標稱使用壽命三年。

不用謝我,我叫雷鋒。

如果你們給我幾張卡,我可以做個詳細拆解。

——————

U盤么! so easy!

一個NAND FLASH而已。

價格極低的存儲介質。

不過GBA時代,NAND FLASH還沒有普及,而且價格不菲。


GBA上用到的晶元都是內存,無論可寫不可寫。

遊戲內容斷電不會丟是因為這部分內存是ROM,然而ROM的內容CPU只能讀不可寫。

存檔用的記憶晶元是RAM,CPU可度寫,需要供電,所以要電池。

遊戲卡真正能做到斷電保存信息的晶元,據我所知只有鐵氧體內存(ferrite-core memory),價格高得難以置信。

U盤是快閃記憶體,快閃記憶體其實是EEPROM(電可擦寫內存)的後代,但只有NOR快閃記憶體可以作為內存隨機讀取,現在最常見的NAND快閃記憶體則不行,需要專門的控制晶元來讀寫,這樣就屬於外存了。

介紹一些基本知識:(我怎麼記得這些理工類大學都應該講過……)

CPU能夠直接讀取的信息必然來自內存(按位隨機讀取),內存包括ROM和RAM,前者斷電信息還在,後者斷電信息消失。

外存(比如硬碟光碟機U盤)的信息必須先通過專門的介面讀取到內存中,然後才能為CPU使用。

原則上,遊戲卡都是內存。

ROM是只讀型的內存,內容在生產線上就固化在裡面了。

EPROM需要紫外線擦除原有內容再寫入。

EEPROM可以通過普通電路擦除再寫入,但成本極高。

FLASH是一種特殊的EEPROM,和標準EEPROM的區別在於,EEPROM的擦除/寫入和讀取都是按位進行的,FLASH則是按頁擦除寫入。

FLASH分兩種,NOR型和NAND型,NOR型可以按位讀取,因此在讀取的時候,對於CPU來說他就是內存,寫入則需要通過專用晶元。NAND型只能按頁讀取,因此它只能當作硬碟用。

GBA卡帶後期也大量使用NOR快閃記憶體,所以部分GBA盜版卡其實和U盤一樣是可擦寫的,但是需要專門的寫卡器。這部分快閃記憶體並不能用來記憶遊戲進度,仍然需要RAM記憶晶元。

GB(GBC)卡帶:ROM

GBA卡帶:ROM NOR FLASH

NDS卡帶:NOR FLASH


一般遊戲卡帶有一個保存記憶的是SRAM(靜態存儲器)晶元。SRAM需要持續供電,一旦掉電,內容就消失了。

GBA卡帶的SRAM容量一般是256kb。


看起來大家都回帖不看帖的樣子,題主問的是GBA遊戲記錄是怎麼保存的,不是GBA遊戲是怎麼保存的……

卡帶保存遊戲記錄,早就不僅僅是斷電易失的SRAM一種方式了。大家都知道PS和PS2的記憶卡不需要電池也可以保存記錄,那是因為採用了EEPROM、FLASH這種電擦寫斷電不易失的存儲器,而就算是卡帶,NDS全部遊戲也都存儲在卡帶內部的FLASH上了。FLASH存儲卡帶遊戲記錄這樣的技術不是NDS專有的,而也有用在GBA卡帶上。

任天堂ゲーム機セーブデータバックアップ用メモリー表

SRAM(CR1616是電池型號)、EEPROM、FLASH和FeRAM在GBA卡帶里都有使用,除了SRAM以外都是斷電不易失的存儲方案。其實只要玩過GBA燒錄卡或GBA模擬器就知道,模擬器和燒錄卡需要對不同的記憶方式提出不同的模擬方案。燒錄卡基本上都是SRAM存儲的,那麼就牽涉到如何讓FLASH和EEPROM的遊戲存儲到SRAM規格的記憶空間里去,早期燒錄卡是利用燒錄軟體給ROM打補丁,後期大多進化成單片機硬體模擬,舉個例子:

從第二代開始,EZ-Flash增加了以下功能:

採用了硬體支持存檔方式,不管哪一款以FLASH ROM存檔的遊戲,其存檔的動作會自動被硬體轉換為適宜於SRAM,從而直接寫入燒錄卡的SRAM。這樣不論有什麼樣以FLASH ROM存檔的遊戲,燒錄卡的軟體都不用因此而進行升級了

順便說下,盜版卡大多會把遊戲打補丁成SRAM記憶再燒錄,所以很多遊戲正版拆開沒電池,但是盜版有。

GBA模擬器則直接可選記憶方式,強制把一個FLASH記錄的遊戲改成SRAM可以幫助你在上述的打補丁方式燒錄卡和模擬器之間來回導記錄。

書記你又不知道從哪裡搬運來古舊的二手科普內容,錯得離譜


推薦閱讀:

高端鍵鼠對一個玩家在遊戲中的表現有多大影響?
紅米手機的價格為什麼這麼低?
手機能直接usb插電源供電,完全不用電池么?
羅技 G500 搭配什麼滑鼠墊合適?

TAG:硬體 | U盤 | GameBoyAdvanceGBA |