先大概解釋一下,隨身碟的寫入速度存在一個波浪式的變化,是由於隨身碟的固態儲存管理演算法設計的資料搬移流程導致的。這個在固態儲存領域當中是常見現象,隨身碟最為明顯(主要是因為隨身碟對這一點要求低),eMMC,SSD等產品在這一方面會格外注重去專門處理,所以現象不明顯。
在解釋為什麼會出現大波浪之前,先介紹一點相關概念。一個隨身碟是由一個控制晶片和若干個NAND Flash儲存顆粒組成的,Nand Flash的資料管理方式是由Page和Block的模型組成,有以下這麼幾個特點:
1、一個Block由許多Page組成。
2、寫入和讀取以Page為單位進行操作,一個Page目前一般來講大小為32個扇區。
3、寫入時Page不能夠逆序,只能順序操作。
4、若想要清除資料,需要以Block為單位進行操作。
上面說的這幾個是基本特點,雖然對於這個問題沒有直接解釋,但是我想嘗試表達的一個觀點就是..NAND Flash管理演算法實在是太xx複雜了[捂臉]...電腦下發資料是以扇區為基本單位的,他想往哪個扇區寫就往哪個扇區寫,所以這就導致了與NAND Flash儲存結構與磁碟的儲存結構相互衝突的問題,解決這個衝突是控制晶片主要做的事情之一。
下面再開始說為什麼會出現大波浪。目前市面上主流的NAND Flash都是TLC,而TLC相對於上面說的幾個特點,還有一個更加讓人頭疼的特點,就是他在寫入資料的時候,除了一定要順序操作之外,還需要按照一定的規則重複的、迭代式的操作,才能夠把整個Block的資料完全寫入。是的,如果想要簡化管理演算法的流程,TLC寫入資料也需要以Block為單位。所以現在大部分隨身碟,都是採用這樣的一種管理方式。
當收到從電腦傳下來的資料之後,先一股腦都把資料以SLC的模式存放起來,這種模式下沒有太多限制,所以可以很靈活的應對電腦的各種奇怪操作。當儲存的資料達到一定量之後,找到3個SLC Block,再一次性的使用CopyBack的操作方法,將3個SLC Block的資料以TLC寫入規則搬進TLC Block,而這一次性的CopyBack操作,會消耗大量時間,所以這期間會導致速度急劇降低。看一個圖來感受一下速度的差距。
所以題主出現的大波浪,跟資料沒啥關係,只要存到一定資料量,觸發CopyBack,速度就斷崖式下跌,當然如果是小資料的話速度也會變慢,這就是另外的問題了。隨著時代的發展,現在對隨身碟速度平滑度的關注也在提高,而且某些牛逼廠家的隨身碟速度也是很平滑的(一直都很慢沒有波動)。
另外再說一點的就是,隨身碟由於沒有刪除命令,所以當一個隨身碟使用久了之後,速度會不可避免的降低。可能大家覺得我把檔案刪除了,我格式化了,就是刪除命令。其實不是,隨身碟所使用的SCSI協議,沒有刪除命令,刪除檔案只是電腦用全0的資料把檔案覆蓋了,或者在檔案頭置了一個已經被刪除的狀態。格式化只是把檔案系統重新寫了一遍,所有檔案都找不到了,而在隨身碟看來,這!些!都!是!數!據!唯一恢復Clear狀態的方法就是重新量產(這不是bug,是feature[嚴肅臉])。
先大概解釋一下,隨身碟的寫入速度存在一個波浪式的變化,是由於隨身碟的固態儲存管理演算法設計的資料搬移流程導致的。這個在固態儲存領域當中是常見現象,隨身碟最為明顯(主要是因為隨身碟對這一點要求低),eMMC,SSD等產品在這一方面會格外注重去專門處理,所以現象不明顯。
在解釋為什麼會出現大波浪之前,先介紹一點相關概念。一個隨身碟是由一個控制晶片和若干個NAND Flash儲存顆粒組成的,Nand Flash的資料管理方式是由Page和Block的模型組成,有以下這麼幾個特點:
1、一個Block由許多Page組成。
2、寫入和讀取以Page為單位進行操作,一個Page目前一般來講大小為32個扇區。
3、寫入時Page不能夠逆序,只能順序操作。
4、若想要清除資料,需要以Block為單位進行操作。
上面說的這幾個是基本特點,雖然對於這個問題沒有直接解釋,但是我想嘗試表達的一個觀點就是..NAND Flash管理演算法實在是太xx複雜了[捂臉]...電腦下發資料是以扇區為基本單位的,他想往哪個扇區寫就往哪個扇區寫,所以這就導致了與NAND Flash儲存結構與磁碟的儲存結構相互衝突的問題,解決這個衝突是控制晶片主要做的事情之一。
下面再開始說為什麼會出現大波浪。目前市面上主流的NAND Flash都是TLC,而TLC相對於上面說的幾個特點,還有一個更加讓人頭疼的特點,就是他在寫入資料的時候,除了一定要順序操作之外,還需要按照一定的規則重複的、迭代式的操作,才能夠把整個Block的資料完全寫入。是的,如果想要簡化管理演算法的流程,TLC寫入資料也需要以Block為單位。所以現在大部分隨身碟,都是採用這樣的一種管理方式。
當收到從電腦傳下來的資料之後,先一股腦都把資料以SLC的模式存放起來,這種模式下沒有太多限制,所以可以很靈活的應對電腦的各種奇怪操作。當儲存的資料達到一定量之後,找到3個SLC Block,再一次性的使用CopyBack的操作方法,將3個SLC Block的資料以TLC寫入規則搬進TLC Block,而這一次性的CopyBack操作,會消耗大量時間,所以這期間會導致速度急劇降低。看一個圖來感受一下速度的差距。
所以題主出現的大波浪,跟資料沒啥關係,只要存到一定資料量,觸發CopyBack,速度就斷崖式下跌,當然如果是小資料的話速度也會變慢,這就是另外的問題了。隨著時代的發展,現在對隨身碟速度平滑度的關注也在提高,而且某些牛逼廠家的隨身碟速度也是很平滑的(一直都很慢沒有波動)。
另外再說一點的就是,隨身碟由於沒有刪除命令,所以當一個隨身碟使用久了之後,速度會不可避免的降低。可能大家覺得我把檔案刪除了,我格式化了,就是刪除命令。其實不是,隨身碟所使用的SCSI協議,沒有刪除命令,刪除檔案只是電腦用全0的資料把檔案覆蓋了,或者在檔案頭置了一個已經被刪除的狀態。格式化只是把檔案系統重新寫了一遍,所有檔案都找不到了,而在隨身碟看來,這!些!都!是!數!據!唯一恢復Clear狀態的方法就是重新量產(這不是bug,是feature[嚴肅臉])。