快閃記憶體 目前主機板上的BIOS大多使用Flash Memory製造,翻譯成中文就是"閃動的儲存器",通常把它稱作"快快閃記憶體儲器",簡稱"快閃記憶體"。快閃記憶體盤是一種移動儲存產品,可用於儲存任何格式資料檔案便於隨身攜帶,是個人的“資料移動中心”。快閃記憶體盤採用快閃記憶體儲存介質(Flash Memory)和通用序列匯流排(USB)介面,具有輕巧精緻、使用方便、便於攜帶、容量較大、安全可靠、時尚潮流等特徵,是大家理想的便攜儲存工具. 我們常說的快閃記憶體其實只是一個籠統的稱呼,準確地說它是非易失隨機訪問儲存器(NVRAM)的俗稱,特點是斷電後資料不消失,因此可以作為外部儲存器使用。而所謂的記憶體是揮發性儲存器,分為DRAM和SRAM兩大類,其中常說的記憶體主要指DRAM,也就是我們熟悉的DDR、DDR2、SDR、EDO等等。快閃記憶體也有不同型別,其中主要分為NOR型和NAND型兩大類。 快閃記憶體的分類 NOR型與NAND型快閃記憶體的區別很大,打個比方說,NOR型快閃記憶體更像記憶體,有獨立的地址線和資料線,但價格比較貴,容量比較小;而NAND型更像硬碟,地址線和資料線是共用的I/O線,類似硬碟的所有資訊都透過一條硬碟線傳送一般,而且NAND型與NOR型快閃記憶體相比,成本要低一些,而容量大得多。因此,NOR型快閃記憶體比較適合頻繁隨機讀寫的場合,通常用於儲存程式程式碼並直接在快閃記憶體內執行,手機就是使用NOR型快閃記憶體的大戶,所以手機的“記憶體”容量通常不大;NAND型快閃記憶體主要用來儲存資料,我們常用的快閃記憶體產品,如快閃記憶體盤、數碼儲存卡都是用NAND型快閃記憶體。 這裡我們還需要端正一個概念,那就是快閃記憶體的速度其實很有限,它本身操作速度、頻率就比記憶體低得多,而且NAND型快閃記憶體類似硬碟的操作方式效率也比記憶體的直接訪問方式慢得多。因此,不要以為快閃記憶體盤的效能瓶頸是在介面,甚至想當然地認為快閃記憶體盤採用USB2.0介面之後會獲得巨大的效能提升。 前面提到NAND型快閃記憶體的操作方式效率低,這和它的架構設計和介面設計有關,它操作起來確實挺像硬碟(其實NAND型快閃記憶體在設計之初確實考慮了與硬碟的相容性),它的效能特點也很像硬碟:小資料塊操作速度很慢,而大資料塊速度就很快,這種差異遠比其他儲存介質大的多。這種效能特點非常值得我們留意。 NAND型快閃記憶體的技術特點 記憶體和NOR型快閃記憶體的基本儲存單元是bit,使用者可以隨機訪問任何一個bit的資訊。而NAND型快閃記憶體的基本儲存單元是頁(Page)(可以看到,NAND型快閃記憶體的頁就類似硬碟的扇區,硬碟的一個扇區也為512位元組)。每一頁的有效容量是512位元組的倍數。所謂的有效容量是指用於資料儲存的部分,實際上還要加上16位元組的校驗資訊,因此我們可以在快閃記憶體廠商的技術資料當中看到“(512+16)Byte”的表示方式。目前2Gb以下容量的NAND型快閃記憶體絕大多數是(512+16)位元組的頁面容量,2Gb以上容量的NAND型快閃記憶體則將頁容量擴大到(2048+64)位元組。 NAND型快閃記憶體以塊為單位進行擦除操作。快閃記憶體的寫入操作必須在空白區域進行,如果目標區域已經有資料,必須先擦除後寫入,因此擦除操作是快閃記憶體的基本操作。一般每個塊包含32個512位元組的頁,容量16KB;而大容量快閃記憶體採用2KB頁時,則每個塊包含64個頁,容量128KB。 每顆NAND型快閃記憶體的I/O介面一般是8條,每條資料線每次傳輸(512+16)bit資訊,8條就是(512+16)×8bit,也就是前面說的512位元組。但較大容量的NAND型快閃記憶體也越來越多地採用16條I/O線的設計,如三星編號K9K1G16U0A的晶片就是64M×16bit的NAND型快閃記憶體,容量1Gb,基本資料單位是(256+8)×16bit,還是512位元組。 定址時,NAND型快閃記憶體透過8條I/O介面資料線傳輸地址資訊包,每包傳送8位地址資訊。由於快閃記憶體晶片容量比較大,一組8位地址只夠定址256個頁,顯然是不夠的,因此通常一次地址傳送需要分若干組,佔用若干個時鐘週期。NAND的地址資訊包括列地址(頁面中的起始操作地址)、塊地址和相應的頁面地址,傳送時分別分組,至少需要三次,佔用三個週期。隨著容量的增大,地址資訊會更多,需要佔用更多的時鐘週期傳輸,因此NAND型快閃記憶體的一個重要特點就是容量越大,定址時間越長。而且,由於傳送地址週期比其他儲存介質長,因此NAND型快閃記憶體比其他儲存介質更不適合大量的小容量讀寫請求。 決定NAND型快閃記憶體的因素有哪些? 1.頁數量 前面已經提到,越大容量快閃記憶體的頁越多、頁越大,定址時間越長。但這個時間的延長不是線性關係,而是一個一個的臺階變化的。譬如128、256Mb的晶片需要3個週期傳送地址訊號,512Mb、1Gb的需要4個週期,而2、4Gb的需要5個週期。 2.頁容量 每一頁的容量決定了一次可以傳輸的資料量,因此大容量的頁有更好的效能。前面提到大容量快閃記憶體(4Gb)提高了頁的容量,從512位元組提高到2KB。頁容量的提高不但易於提高容量,更可以提高傳輸效能。我們可以舉例子說明。以三星K9K1G08U0M和K9K4G08U0M為例,前者為1Gb,512位元組頁容量,隨機讀(穩定)時間12μs,寫時間為200μs;後者為4Gb,2KB頁容量,隨機讀(穩定)時間25μs,寫時間為300μs。假設它們工作在20MHz。 讀取效能:NAND型快閃記憶體的讀取步驟分為:傳送命令和定址資訊→將資料傳向頁面暫存器(隨機讀穩定時間)→資料傳出(每週期8bit,需要傳送512+16或2K+64次)。 K9K1G08U0M讀一個頁需要:5個命令、定址週期×50ns+12μs+(512+16)×50ns=38.7μs;K9K1G08U0M實際讀傳輸率:512位元組÷38.7μs=13.2MB/s;K9K4G08U0M讀一個頁需要:6個命令、定址週期×50ns+25μs+(2K+64)×50ns=131.1μs;K9K4G08U0M實際讀傳輸率:2KB位元組÷131.1μs=15.6MB/s。因此,採用2KB頁容量比512位元組也容量約提高讀效能20%。 寫入效能:NAND型快閃記憶體的寫步驟分為:傳送定址資訊→將資料傳向頁面暫存器→傳送命令資訊→資料從暫存器寫入頁面。其中命令週期也是一個,我們下面將其和定址週期合併,但這兩個部分並非連續的。 K9K1G08U0M寫一個頁需要:5個命令、定址週期×50ns+(512+16)×50ns+200μs=226.7μs。K9K1G08U0M實際寫傳輸率:512位元組÷226.7μs=2.2MB/s。K9K4G08U0M寫一個頁需要:6個命令、定址週期×50ns+(2K+64)×50ns+300μs=405.9μs。K9K4G08U0M實際寫傳輸率:2112位元組/405.9μs=5MB/s。因此,採用2KB頁容量比512位元組頁容量提高寫效能兩倍以上。 3.塊容量 塊是擦除操作的基本單位,由於每個塊的擦除時間幾乎相同(擦除操作一般需要2ms,而之前若干週期的命令和地址資訊佔用的時間可以忽略不計),塊的容量將直接決定擦除效能。大容量NAND型快閃記憶體的頁容量提高,而每個塊的頁數量也有所提高,一般4Gb晶片的塊容量為2KB×64個頁=128KB,1Gb晶片的為512位元組×32個頁=16KB。可以看出,在相同時間之內,前者的擦速度為後者8倍! 4.I/O位寬 以往NAND型快閃記憶體的資料線一般為8條,不過從256Mb產品開始,就有16條資料線的產品出現了。但由於控制器等方面的原因,x16晶片實際應用的相對比較少,但將來數量上還是會呈上升趨勢的。雖然x16的晶片在傳送資料和地址資訊時仍採用8位一組,佔用的週期也不變,但傳送資料時就以16位為一組,頻寬增加一倍。K9K4G16U0M就是典型的64M×16晶片,它每頁仍為2KB,但結構為(1K+32)×16bit。 模仿上面的計算,我們得到如下。K9K4G16U0M讀一個頁需要:6個命令、定址週期×50ns+25μs+(1K+32)×50ns=78.1μs。K9K4G16U0M實際讀傳輸率:2KB位元組÷78.1μs=26.2MB/s。K9K4G16U0M寫一個頁需要:6個命令、定址週期×50ns+(1K+32)×50ns+300μs=353.1μs。K9K4G16U0M實際寫傳輸率:2KB位元組÷353.1μs=5.8MB/s 可以看到,相同容量的晶片,將資料線增加到16條後,讀效能提高近70%,寫效能也提高16%。 5.頻率 工作頻率的影響很容易理解。NAND型快閃記憶體的工作頻率在20~33MHz,頻率越高效能越好。前面以K9K4G08U0M為例時,我們假設頻率為20MHz,如果我們將頻率提高一倍,達到40MHz,則 K9K4G08U0M讀一個頁需要:6個命令、定址週期×25ns+25μs+(2K+64)×25ns=78μs。K9K4G08U0M實際讀傳輸率:2KB位元組÷78μs=26.3MB/s。可以看到,如果K9K4G08U0M的工作頻率從20MHz提高到40MHz,讀效能可以提高近70%!當然,上面的例子只是為了方便計算而已。在三星實際的產品線中,可工作在較高頻率下的應是K9XXG08UXM,而不是K9XXG08U0M,前者的頻率目前可達33MHz。 6.製造工藝 製造工藝可以影響電晶體的密度,也對一些操作的時間有影響。譬如前面提到的寫穩定和讀穩定時間,它們在我們的計算當中佔去了時間的重要部分,尤其是寫入時。如果能夠降低這些時間,就可以進一步提高效能。90nm的製造工藝能夠改進效能嗎?答案恐怕是否!目前的實際情況是,隨著儲存密度的提高,需要的讀、寫穩定時間是呈現上升趨勢的。前面的計算所舉的例子中就體現了這種趨勢,否則4Gb晶片的效能提升更加明顯。 綜合來看,大容量的NAND型快閃記憶體晶片雖然定址、操作時間會略長,但隨著頁容量的提高,有效傳輸率還是會大一些,大容量的晶片符合市場對容量、成本和效能的需求趨勢。而增加資料線和提高頻率,則是提高效能的最有效途徑,但由於命令、地址資訊佔用操作週期,以及一些固定操作時間(如訊號穩定時間等)等工藝、物理因素的影響,它們不會帶來同比的效能提升。 1Page=(2K+64)Bytes;1Block=(2K+64)B×64Pages=(128K+4K)Bytes;1Device=(2K+64)B×64Pages×4096Blocks=4224Mbits 其中:A0~11對頁內進行定址,可以被理解為“列地址”。 A12~29對頁進行定址,可以被理解為“行地址”。為了方便,“列地址”和“行地址”分為兩組傳輸,而不是將它們直接組合起來一個大組。因此每組在最後一個週期會有若干資料線無資訊傳輸。沒有利用的資料線保持低電平。NAND型快閃記憶體所謂的“行地址”和“列地址”不是我們在DRAM、SRAM中所熟悉的定義,只是一種相對方便的表達方式而已。為了便於理解,我們可以將上面三維的NAND型快閃記憶體晶片架構圖在垂直方向做一個剖面,在這個剖面中套用二維的“行”、“列”概念就比較直觀了。
快閃記憶體 目前主機板上的BIOS大多使用Flash Memory製造,翻譯成中文就是"閃動的儲存器",通常把它稱作"快快閃記憶體儲器",簡稱"快閃記憶體"。快閃記憶體盤是一種移動儲存產品,可用於儲存任何格式資料檔案便於隨身攜帶,是個人的“資料移動中心”。快閃記憶體盤採用快閃記憶體儲存介質(Flash Memory)和通用序列匯流排(USB)介面,具有輕巧精緻、使用方便、便於攜帶、容量較大、安全可靠、時尚潮流等特徵,是大家理想的便攜儲存工具. 我們常說的快閃記憶體其實只是一個籠統的稱呼,準確地說它是非易失隨機訪問儲存器(NVRAM)的俗稱,特點是斷電後資料不消失,因此可以作為外部儲存器使用。而所謂的記憶體是揮發性儲存器,分為DRAM和SRAM兩大類,其中常說的記憶體主要指DRAM,也就是我們熟悉的DDR、DDR2、SDR、EDO等等。快閃記憶體也有不同型別,其中主要分為NOR型和NAND型兩大類。 快閃記憶體的分類 NOR型與NAND型快閃記憶體的區別很大,打個比方說,NOR型快閃記憶體更像記憶體,有獨立的地址線和資料線,但價格比較貴,容量比較小;而NAND型更像硬碟,地址線和資料線是共用的I/O線,類似硬碟的所有資訊都透過一條硬碟線傳送一般,而且NAND型與NOR型快閃記憶體相比,成本要低一些,而容量大得多。因此,NOR型快閃記憶體比較適合頻繁隨機讀寫的場合,通常用於儲存程式程式碼並直接在快閃記憶體內執行,手機就是使用NOR型快閃記憶體的大戶,所以手機的“記憶體”容量通常不大;NAND型快閃記憶體主要用來儲存資料,我們常用的快閃記憶體產品,如快閃記憶體盤、數碼儲存卡都是用NAND型快閃記憶體。 這裡我們還需要端正一個概念,那就是快閃記憶體的速度其實很有限,它本身操作速度、頻率就比記憶體低得多,而且NAND型快閃記憶體類似硬碟的操作方式效率也比記憶體的直接訪問方式慢得多。因此,不要以為快閃記憶體盤的效能瓶頸是在介面,甚至想當然地認為快閃記憶體盤採用USB2.0介面之後會獲得巨大的效能提升。 前面提到NAND型快閃記憶體的操作方式效率低,這和它的架構設計和介面設計有關,它操作起來確實挺像硬碟(其實NAND型快閃記憶體在設計之初確實考慮了與硬碟的相容性),它的效能特點也很像硬碟:小資料塊操作速度很慢,而大資料塊速度就很快,這種差異遠比其他儲存介質大的多。這種效能特點非常值得我們留意。 NAND型快閃記憶體的技術特點 記憶體和NOR型快閃記憶體的基本儲存單元是bit,使用者可以隨機訪問任何一個bit的資訊。而NAND型快閃記憶體的基本儲存單元是頁(Page)(可以看到,NAND型快閃記憶體的頁就類似硬碟的扇區,硬碟的一個扇區也為512位元組)。每一頁的有效容量是512位元組的倍數。所謂的有效容量是指用於資料儲存的部分,實際上還要加上16位元組的校驗資訊,因此我們可以在快閃記憶體廠商的技術資料當中看到“(512+16)Byte”的表示方式。目前2Gb以下容量的NAND型快閃記憶體絕大多數是(512+16)位元組的頁面容量,2Gb以上容量的NAND型快閃記憶體則將頁容量擴大到(2048+64)位元組。 NAND型快閃記憶體以塊為單位進行擦除操作。快閃記憶體的寫入操作必須在空白區域進行,如果目標區域已經有資料,必須先擦除後寫入,因此擦除操作是快閃記憶體的基本操作。一般每個塊包含32個512位元組的頁,容量16KB;而大容量快閃記憶體採用2KB頁時,則每個塊包含64個頁,容量128KB。 每顆NAND型快閃記憶體的I/O介面一般是8條,每條資料線每次傳輸(512+16)bit資訊,8條就是(512+16)×8bit,也就是前面說的512位元組。但較大容量的NAND型快閃記憶體也越來越多地採用16條I/O線的設計,如三星編號K9K1G16U0A的晶片就是64M×16bit的NAND型快閃記憶體,容量1Gb,基本資料單位是(256+8)×16bit,還是512位元組。 定址時,NAND型快閃記憶體透過8條I/O介面資料線傳輸地址資訊包,每包傳送8位地址資訊。由於快閃記憶體晶片容量比較大,一組8位地址只夠定址256個頁,顯然是不夠的,因此通常一次地址傳送需要分若干組,佔用若干個時鐘週期。NAND的地址資訊包括列地址(頁面中的起始操作地址)、塊地址和相應的頁面地址,傳送時分別分組,至少需要三次,佔用三個週期。隨著容量的增大,地址資訊會更多,需要佔用更多的時鐘週期傳輸,因此NAND型快閃記憶體的一個重要特點就是容量越大,定址時間越長。而且,由於傳送地址週期比其他儲存介質長,因此NAND型快閃記憶體比其他儲存介質更不適合大量的小容量讀寫請求。 決定NAND型快閃記憶體的因素有哪些? 1.頁數量 前面已經提到,越大容量快閃記憶體的頁越多、頁越大,定址時間越長。但這個時間的延長不是線性關係,而是一個一個的臺階變化的。譬如128、256Mb的晶片需要3個週期傳送地址訊號,512Mb、1Gb的需要4個週期,而2、4Gb的需要5個週期。 2.頁容量 每一頁的容量決定了一次可以傳輸的資料量,因此大容量的頁有更好的效能。前面提到大容量快閃記憶體(4Gb)提高了頁的容量,從512位元組提高到2KB。頁容量的提高不但易於提高容量,更可以提高傳輸效能。我們可以舉例子說明。以三星K9K1G08U0M和K9K4G08U0M為例,前者為1Gb,512位元組頁容量,隨機讀(穩定)時間12μs,寫時間為200μs;後者為4Gb,2KB頁容量,隨機讀(穩定)時間25μs,寫時間為300μs。假設它們工作在20MHz。 讀取效能:NAND型快閃記憶體的讀取步驟分為:傳送命令和定址資訊→將資料傳向頁面暫存器(隨機讀穩定時間)→資料傳出(每週期8bit,需要傳送512+16或2K+64次)。 K9K1G08U0M讀一個頁需要:5個命令、定址週期×50ns+12μs+(512+16)×50ns=38.7μs;K9K1G08U0M實際讀傳輸率:512位元組÷38.7μs=13.2MB/s;K9K4G08U0M讀一個頁需要:6個命令、定址週期×50ns+25μs+(2K+64)×50ns=131.1μs;K9K4G08U0M實際讀傳輸率:2KB位元組÷131.1μs=15.6MB/s。因此,採用2KB頁容量比512位元組也容量約提高讀效能20%。 寫入效能:NAND型快閃記憶體的寫步驟分為:傳送定址資訊→將資料傳向頁面暫存器→傳送命令資訊→資料從暫存器寫入頁面。其中命令週期也是一個,我們下面將其和定址週期合併,但這兩個部分並非連續的。 K9K1G08U0M寫一個頁需要:5個命令、定址週期×50ns+(512+16)×50ns+200μs=226.7μs。K9K1G08U0M實際寫傳輸率:512位元組÷226.7μs=2.2MB/s。K9K4G08U0M寫一個頁需要:6個命令、定址週期×50ns+(2K+64)×50ns+300μs=405.9μs。K9K4G08U0M實際寫傳輸率:2112位元組/405.9μs=5MB/s。因此,採用2KB頁容量比512位元組頁容量提高寫效能兩倍以上。 3.塊容量 塊是擦除操作的基本單位,由於每個塊的擦除時間幾乎相同(擦除操作一般需要2ms,而之前若干週期的命令和地址資訊佔用的時間可以忽略不計),塊的容量將直接決定擦除效能。大容量NAND型快閃記憶體的頁容量提高,而每個塊的頁數量也有所提高,一般4Gb晶片的塊容量為2KB×64個頁=128KB,1Gb晶片的為512位元組×32個頁=16KB。可以看出,在相同時間之內,前者的擦速度為後者8倍! 4.I/O位寬 以往NAND型快閃記憶體的資料線一般為8條,不過從256Mb產品開始,就有16條資料線的產品出現了。但由於控制器等方面的原因,x16晶片實際應用的相對比較少,但將來數量上還是會呈上升趨勢的。雖然x16的晶片在傳送資料和地址資訊時仍採用8位一組,佔用的週期也不變,但傳送資料時就以16位為一組,頻寬增加一倍。K9K4G16U0M就是典型的64M×16晶片,它每頁仍為2KB,但結構為(1K+32)×16bit。 模仿上面的計算,我們得到如下。K9K4G16U0M讀一個頁需要:6個命令、定址週期×50ns+25μs+(1K+32)×50ns=78.1μs。K9K4G16U0M實際讀傳輸率:2KB位元組÷78.1μs=26.2MB/s。K9K4G16U0M寫一個頁需要:6個命令、定址週期×50ns+(1K+32)×50ns+300μs=353.1μs。K9K4G16U0M實際寫傳輸率:2KB位元組÷353.1μs=5.8MB/s 可以看到,相同容量的晶片,將資料線增加到16條後,讀效能提高近70%,寫效能也提高16%。 5.頻率 工作頻率的影響很容易理解。NAND型快閃記憶體的工作頻率在20~33MHz,頻率越高效能越好。前面以K9K4G08U0M為例時,我們假設頻率為20MHz,如果我們將頻率提高一倍,達到40MHz,則 K9K4G08U0M讀一個頁需要:6個命令、定址週期×25ns+25μs+(2K+64)×25ns=78μs。K9K4G08U0M實際讀傳輸率:2KB位元組÷78μs=26.3MB/s。可以看到,如果K9K4G08U0M的工作頻率從20MHz提高到40MHz,讀效能可以提高近70%!當然,上面的例子只是為了方便計算而已。在三星實際的產品線中,可工作在較高頻率下的應是K9XXG08UXM,而不是K9XXG08U0M,前者的頻率目前可達33MHz。 6.製造工藝 製造工藝可以影響電晶體的密度,也對一些操作的時間有影響。譬如前面提到的寫穩定和讀穩定時間,它們在我們的計算當中佔去了時間的重要部分,尤其是寫入時。如果能夠降低這些時間,就可以進一步提高效能。90nm的製造工藝能夠改進效能嗎?答案恐怕是否!目前的實際情況是,隨著儲存密度的提高,需要的讀、寫穩定時間是呈現上升趨勢的。前面的計算所舉的例子中就體現了這種趨勢,否則4Gb晶片的效能提升更加明顯。 綜合來看,大容量的NAND型快閃記憶體晶片雖然定址、操作時間會略長,但隨著頁容量的提高,有效傳輸率還是會大一些,大容量的晶片符合市場對容量、成本和效能的需求趨勢。而增加資料線和提高頻率,則是提高效能的最有效途徑,但由於命令、地址資訊佔用操作週期,以及一些固定操作時間(如訊號穩定時間等)等工藝、物理因素的影響,它們不會帶來同比的效能提升。 1Page=(2K+64)Bytes;1Block=(2K+64)B×64Pages=(128K+4K)Bytes;1Device=(2K+64)B×64Pages×4096Blocks=4224Mbits 其中:A0~11對頁內進行定址,可以被理解為“列地址”。 A12~29對頁進行定址,可以被理解為“行地址”。為了方便,“列地址”和“行地址”分為兩組傳輸,而不是將它們直接組合起來一個大組。因此每組在最後一個週期會有若干資料線無資訊傳輸。沒有利用的資料線保持低電平。NAND型快閃記憶體所謂的“行地址”和“列地址”不是我們在DRAM、SRAM中所熟悉的定義,只是一種相對方便的表達方式而已。為了便於理解,我們可以將上面三維的NAND型快閃記憶體晶片架構圖在垂直方向做一個剖面,在這個剖面中套用二維的“行”、“列”概念就比較直觀了。