インターネットでは、「なぜUSBフラッシュドライブを充電するのか」という暴動がありました。一見面白いですが、もう一度考えて理解することを提案します。この記事を読んだ後、フラッシュドライブの充電も開始します。
個人的には、無線電子業界のある企業のチーフデザイナーが、「隣に行きたいですか?」という文言で記事へのリンクを破棄しました。
関連するリンクのカップル:
- www.youtube.com/watch?v=EuCSS9VtxCA
- zen.yandex.ru/media/id/5cebc7044d24ad00b31ddccc/zachem-liudi-zariajaiut-fleshnakopiteli-5d113734e1551900b0ad97a9
もちろん、私は笑いましたが、あなたの考えを超えていませんでした。 USBスティックを含むNANDフラッシュメモリをベースにしたソリッドステートドライブの開発に参加する必要がありました。一見、技術に詳しい人にとっては、ドライブを充電器に接続しても意味がないことは明らかです。電源を供給する以外にドライブで他のアクションが実行されないため、熱放散以外の何も得られません。インターネット上には、フラッシュドライブを充電する価値があるかどうかを尋ねる貧しい人道主義者に対する多くの異なる「啓示」、笑い声、さらにはあからさまな冗談があります。笑うかもしれませんが、フラッシュドライブの開発者がしばらくの間充電器に取り付けて製品を「充電」する方法を自分の目で見ました。
USBフラッシュドライブはブロックストレージデバイスです。アドレス空間全体が512バイトのセクターに分割されています。オペレーティングシステムは、特定のセクター(LBA)のアドレスにアクセスし、それを読み取ったり上書きしたりできます。すべてが簡単です。
それでは、フラッシュドライブの内部を見てみましょう...
フラッシュドライブにはマイクロ回路が含まれています。
- コントローラ;
- NANDフラッシュメモリ。
メモリマイクロ回路は、データのアドレス指定、書き込み、および保存に関してかなり特殊な方法で配置されます。これは、そのアーキテクチャによって決定されます(そして、そのまま愛する必要があります)。NANDフラッシュには次のルールが定義されています。
- メモリはメガバイトのオーダーのブロックに分割されます。
- メモリブロックに書き込む前に、それを消去する必要があります。消去されると、ブロック内のすべてのデータバイトが0xFFに設定されます。
- ブロックは、サイズが数十キロバイトのページで構成されています。
- , ;
- ;
- .
ここで、この一連のルールは、(ユーザーの観点から)このような単純なアクションをUSBフラッシュドライブに1つのセクターを書き込む方法を、この同じフラッシュドライブのコントローラーの開発者にとって実際のパズルに変えます。
この問題をどのように解決するか想像してみてください。そうすれば、ハノイのおもちゃの塔との類似点がわかります。
ドライブのユーザーフレンドリーなブロックアドレス指定とNANDフラッシュメモリのサディストフレンドリーなアドレス指定を「友達にする」ために、アドレス変換アルゴリズム、別名FTL(Flash Translation Layer)を実装するプロセッサがフラッシュドライブコントローラ内で回転しています。FTLアルゴリズムのタスクは次のとおりです。
- ページマッピングテーブルの作成と維持。
- ガベージコレクション;
- NANDフラッシュメモリブロックの摩耗レベリング。
知識のある人は、NANDフラッシュメモリの不良ブロックの追跡(不良ブロック管理)などの他のタスクがあると言うでしょうが、これは現在のケースには当てはまらないので、今は話したくありません...
示された点に関する小さな教育プログラム:
ページマッピング
さて、ここでは、おそらくすべてが明確です...ドライブ(LBA)の論理アドレス空間は、巨大な配列を介してNANDフラッシュメモリのブロックとページのアドレス(物理アドレス)に変換されます。そのインデックスはLBAを表し、要素の値は物理アドレスです。1ページを書き換える必要がある場合は、このページのデータを順番に空きブロックに書き込んだ後、配列内で新しく書き込んだページ番号に置き換えます。学生が32GBのフラッシュドライブを購入し、それが29 GBしかないことに気付いたとき、学生は、工場で不足しているスペースを盗んだのは中国人ではなく、FTLアルゴリズムの開発者であることをまだ知りません。ドライブにデータを書き込めるようにするため。
ガベージコレクション
そして、その関連性を失ったページはどうなりますか?そこに書き込まれたデータは不要になりましたが、消去はブロックでのみ許可されており、同じブロックに実際のページが残っている可能性があるため、消去することはできません。遅かれ早かれ、ページを書き込むことができる空きブロックがなくなる状況が発生します。しかし、残りのブロックでは、あちこちに無関係なページがあります。これを防ぐために、ドライブは「ガベージコレクター」の機能を実行します。これは、関連するページの数が最も少ない「リーク」ブロックの検索に関与し、実際のページを新しいブロックに転送します。したがって、「リーク」ブロックは実際のページから完全に解放され、消去できます...そして、新しいブロックでは、すべてのページが関連性を保ちます。断片化を彷彿とさせる。
レベリングを着用
月の下で永遠に続くものはありません。特にNANDフラッシュはそうです。 NANDフラッシュメモリのリソースが限られているのは偶然でした。これは、限られた数のブロック消去サイクル(ブロックエージング)で表されます。何度も消去されたブロック(古いブロック)は、使い古されていないブロック(若いブロック)よりも失敗する可能性が高くなります。
フラッシュドライブのアドレススペースの穴を拭かないように、ドライブのゼロアドレスから別の場所にFATテーブルを移動することを考えたことはありますか?これはありそうもないので、考えるべきではありません。ブロック摩耗レベリングメカニズムがフラッシュドライブで機能するためです。その本質は、若いブロックが古いブロックと場所を入れ替えることを余儀なくされるため、ドライブの操作中にすべてのブロックの摩耗が均一になることです。そのため、ドライブは、すべてのブロックが1日で死ぬまで、その後も幸せに暮らせるチャンスがあります。
そして今、主なことについて-なぜフラッシュドライブを「充電」するのですか?
1)毎日靴下を洗うという状況がありましたが、毎晩そうではないことがわかりましたか?そして、明日のためにきれいな靴下が単に残っていないような瞬間が来ます!そして、あなたはあなたの靴下を洗うために睡眠を犠牲にしなければなりません。ヘアドライヤーを手に持って仕事に遅れなければならない場合はさらに悪いです。
FTLのガベージコレクションアルゴリズムでも同じことが起こります。ユーザーは、USBフラッシュドライブを使用して、あるコンピューターから別のコンピューターにデータを転送することがよくあります。この場合のアクションのシナリオは次のとおりです。USBフラッシュドライブをコンピューターに接続します-ファイルをすばやく書き込みます-USBフラッシュドライブを引き出します-別のコンピューターに実行します-USBフラッシュドライブを接続します-ファイルを読み取ります。しばらくすると、ユーザーは自分のドライブが遅いことに気付き始めます。通常、そのような場合の罪は、「まあ、それはただの安価で古いフラッシュドライブです。ここで、新しいものを買います、飛ぶでしょう!」そして、それは本当になります!しかし、彼女はおそらく、しばらくすると同じ運命をたどるでしょう。事実、このような「ショートフィルム」のシナリオでは、ガベージコレクションアルゴリズムが書き込み用のブロックを解放することができず、遅かれ早かれ、空きブロックがなくなるという事実につながります。そして、コントローラーは最初にブロックの解放を処理し、次にファイルをそれらに書き込むだけであるため、速度が低下します。フルスピードでデータを受信する準備をするには、ドライブを事前に「ソックスを洗う」ために休憩する必要があります。ご想像のとおり、フラッシュドライブを「充電」するとこの問題が解消され、データの順序を復元するのに十分な時間がコントローラーに与えられます。
2)コントローラーの「個人的な時間」の不足の問題は、摩耗レベリングアルゴリズムにも関連しています。摩耗レベリングアルゴリズムは、ドライブがアイドル状態のときにコントローラーによって実行されますが、ユーザーデータの書き込みまたは読み取りのタスクはありません。ドライブが「ショートフィルム」モードで動作する場合、ブロックの摩耗を平準化する時間はありません。ブロックの不均一な摩耗は、古いブロックが故障するという事実につながります。同時に、書き込みに使用できるブロックの数は、NANDフラッシュメモリ全体がまだ使い果たされておらず、長期間使用できる場合でも、書き込みに使用できる空きブロックがなくなる重要な瞬間が来るまで減少します。
3)進化は、私たちにとって大切な貴重品を通路から遠く離れた場所に埋めることを教えてくれました。これは、宝物や無人の島に適しています。しかし、デジタルデータとNANDの場合は逆になります。確かに、友人の結婚式の写真をフラッシュドライブに投げ、フラッシュドライブを1年間引き出しに置いた後(安全で健全なように見えた)、一部の写真は半分しか読まれなかった場合があります。事実、NANDフラッシュメモリに記録された情報は、時間の経過とともに「腐敗」する可能性があります。メモリメーカーは100%のデータ保持を保証するのではなく、ビットエラーの可能性を発表するだけです。
もちろん、ドライブコントローラは、データに冗長コードを追加することでビットエラーを排除する問題を解決しますが、このコードがいくら大きくても、時間の経過とともにNANDメモリセルの電荷が解消され、ビットエラーの数が修正能力を超える可能性があります。 NANDフラッシュメモリに長期間データを残すことはできません。注意する必要があります。つまり、定期的に上書きします。正しいコントローラーは定期的にデータを再読み取りし、ビットエラーの数をチェックし、必要に応じてデータを書き換えます(ビットエラーの数が許容値を超えるまで)。もちろん、コントローラーにもこのための「空き時間」が必要です。
上記のすべてから、要約します。フラッシュドライブを「充電」することを躊躇しないでください。これは、パフォーマンスと信頼性に有益な効果をもたらします。また、技術者があなたを襲った場合は、この記事へのリンクを提供してください。