不揮発性メインメモリのソフトウェア管理による読み取りおよび書き込みのウェアレベリング パート 2

Aug 06, 2024

検討対象のシステムのクラスは、通常、通常のデスクトップ コンピュータでも利用できる多くの機能を提供します。たとえば、完全な MMU と仮想メモリは、複数のタスクのアドレス空間を相互に分離したり、ハードウェア アクセスを制限したりするためによく使用されます。

仮想メモリは、コンピュータ オペレーティング システムにおける最も重要な概念の 1 つです。これにより、コンピュータはハードディスク領域を拡張メモリとして使用できるため、メモリが不足している場合でも、より大きなプログラムを実行できます。仮想メモリはコンピュータのメモリと密接に関係しています。

コンピューターのメモリには限界があります。仮想メモリなどの仕組みがなければ、メモリが不足した場合、プログラムの実行を諦めるか、一部のアプリケーションを強制終了するしかありません。仮想メモリの登場により、この問題は大幅に軽減されました。仮想メモリによって提供されるメモリ空間を通じて、コンピュータは特定のルールに従って未使用部分をメモリからハードディスクに移動できます。このようにして、コンピュータは物理メモリを増やさずに使用するメモリを拡張できるため、より多くのより大きなプログラムを使用し続けることができます。

この仕組みは私たちに大きな利便性をもたらします。コンピューターのハードウェアについてあまり気にする必要はありません。物理メモリが非常に少なくても、仮想メモリの制限内でプログラムを実行する限り、コンピュータはさまざまなプログラムを実行でき、メモリ オーバーフローなどの問題を心配する必要はありません。

コンピュータのメモリの増設は非常に必要であると言えます。仮想メモリは、より良いソリューションを提供します。同時に、ハードディスクなどの他のデバイスを有効に活用し、コンピュータの可能性を最大限に引き出すこともできます。仮想メモリとメモリの関係が切り離せないことは間違いありません。仮想メモリの出現により、コンピュータの動作効率を犠牲にすることなく、コンピュータ ハードウェアをさらに活用できる可能性がもたらされました。記憶力を向上させる必要があることがわかります。シスタンケには抗酸化作用、抗炎症作用、老化防止作用があり、脳内の酸化や炎症反応を軽減し、神経系の健康を保護する効果があるため、記憶力を大幅に向上させることができます。さらに、Cistanche は神経細胞の成長と修復を促進し、それによって神経ネットワークの接続と機能を強化します。これらの効果は、記憶力、学習能力、思考速度の向上に役立ち、認知機能障害や神経変性疾患の発生を防ぐこともできます。

improve short term memory

クリックして脳機能を改善する方法を知る

ただし、これは完全なキャッシュ階層が可能であり、有用であることを意味するものではありません。これらのシステムのクロック周波数は通常、消費電力を削減するために数百メガヘルツに設定されます。

いずれにせよ、この状況ではメモリ アクセスのレイテンシはそれほど重要ではなくなり、キャッシュを使用しても状況はあまり改善されませんが、さらにチップ領域を消費することになります。

さらに、最悪の場合の実行時間を保証するために、キャッシュよりもスクラッチパッド メモリが優先される場合があります。したがって、スクラッチパッド メモリでカバーされるメモリ領域のメモリ消耗は軽減されますが、他の領域では軽減されません。

これらの残りの領域には、ウェアレベリング メカニズムが依然として必要です。この記事では、すべてのメモリ領域がウェアレベリングを必要とする最悪のケースに焦点を当てます。前述の理由により、ターゲット システムは完全な MMU、仮想メモリを備えた組み込みプロセッサで構成され、キャッシュはありません。単一タイプのメモリの欠点 (NVM の寿命や SRAM の揮発性など) を克服するために、いくつかのシステムはハイブリッドメモリアーキテクチャ[7]。

これらのシステムでは、複数の種類のメモリ (FeRAM や SRAM など) が CPU に接続され、CPU アドレス空間にマッピングされます。オペレーティング システムとアプリケーションは、対応するアドレス領域にメモリ コンテンツを格納することで、どのメモリ コンテンツをどのメモリに配置するかを能動的に決定できます。

ただし、この作業では、2 つの理由から、システム内のメイン メモリとして 1 つの NVM のみを想定し、このメイン メモリに割り当てられたすべてのメモリ セグメントに対するソリューションを開発します。

まず、さまざまなメモリを含むハイブリッド メモリ階層がある場合、他のメモリに適切なメンテナンス メカニズムを個別に適用できます。その後も、NVM 部分にウェアレベリング メカニズムを提供します。

第 2 に、ハイブリッド メモリ階層が利用できる場合でも、メモリ セグメントの割り当てはいくつかの制約に従わなければならない場合があり、そのため任意のマッピングが不可能になります。そのため、メモリの内容を NVM に割り当てる必要がある場合があり、NVM が急速に消耗します。私たちのソリューションは、メモリ セグメントの特定のマッピングの寿命を改善するメカニズムを提供します。

私たちが提案する方法はソフトウェアベースであるため、実行中のアプリケーションを特権的に制御するには、オペレーティングシステムのような層で実行する必要があります。小規模な組み込みシステムには完全なオペレーティング システムが存在しない場合でも、ハードウェアの管理、起動手順の制御、制御フローの管理には薄いソフトウェア層が必要です。

私たちの方法は、そのような基本的なオペレーティング システムにも実装できます。この作業全体を通じて、説明したターゲット システム クラスに焦点を当てますが、私たちの方法は、適切な変更を加えれば他のシステムにも適用できます。たとえば、キャッシュを備えた大規模システムの場合、ヒットとミスは適切に区別する必要があります。これは、前者ではメモリが消耗されませんが、後者ではメモリが消耗されるためです。

3.1 実装プラットフォーム

評価ではウェアレベリングの品質に関して実装されたメソッドを評価するため、実装には経過時間 (つまり、メモリセルごとの総アクセス数) を正確に抽出できるプラットフォームを使用します。

improve your memory

以前の研究 [10] からの完全なシステム シミュレーション ベースのフレームワークを使用します。このフレームワークは、NVM シミュレーション用の NVMainplugin および特別なオペレーティング システムと組み合わせて gem5 シミュレータを実行します。これにより、アプリケーションとオペレーティング システムのメモリを明確に分離できます。 NVMain は、各シミュレーションのトレース ファイルを出力します。このファイルには、すべてのメモリ アクセス (つまり、読み取りおよび書き込みアクセス) に関する正確な情報が含まれています。

この作業の後半では、ウェアレベリング戦略の実装について説明します。これらの戦略をベアメタル オペレーティング システムに実装し、シミュレーション フレームワークでも実行します。したがって、結果として得られるメモリ アクセス トレースを分析することで、高レベルの推定に依存せず、現実的なフル システム シミュレーションでアルゴリズムを直接評価できます。ウェアレベリングを有効にしたシミュレーション。

コードはシミュレーション フレームワークで直接利用できるため、ベンチマーク アプリケーション [10] をさらに再利用します。それにもかかわらず、私たちのウェアレベリング技術は CPU アーキテクチャから独立しており、具体的な実装と評価はメモリ シミュレータ [10] により ARM ベースの 64- ビット アプリケーション プロセッサ (ARMv8) に対して行われます。

特定の CPU アーキテクチャでの具体的な実装には、いくつかの特定の実装の詳細が必要であることに注意してください。これについてもこの記事で説明します。ただし、これらの詳細は他の CPU アーキテクチャでも再実装できます。

4 問題分析

ウェアレベリングの必要性を説明し、特定の領域でのウェアレベリングを正当化するために、このセクションでは一連のベンチマーク アプリケーションのメモリ アクセス動作を分析し、メモリの寿命への影響について説明します。ベンチマーク アプリケーションについては、以下で詳しく説明します。

• Dijkstra は MiBench スイート [8] の一部であり、Dijkstra アルゴリズムに従ってグラフ内の最短パスを計算します。このベンチマークの特徴は、アルゴリズムのステップがキューで管理され、データ セグメントに格納されることです。

•solve は NVM シミュレーション セットアップ [10] の一部であり、ガウス消去法アルゴリズムに従って線形方程式系を解きます。このベンチマークは入力データを直接変更します。

• 彼女は MiBench スイート [8] の一部でもあり、指定された入力データの SHA-1 ハッシュを計算します。

• qsort は NVM シミュレーション セットアップ [10] の一部であり、クイックソート アルゴリズムの再帰的実装です。したがって、入力データが変更されるだけでなく、スタック セグメントも集中的に使用されます。

• rijndael は MiBench セキュリティ スイート [8] の一部であり、Rijndael アルゴリズムを使用して指定された入力データを暗号化します。このベンチマークでは、入力はファイルから読み取られるのではなく、データ セグメント自体の領域から読み取られます。

• crc32 は MiBench セキュリティ スイート [8] の一部でもあり、指定された入力データの crc チェックサムを計算します。

increase brain power

読み取り破壊型 NVM システムと非読み取り破壊型 NVM システムという 2 つの異なるシナリオを対象としているため、両方の状況を分析します。非読み取り破壊型 NVM システムの場合は、メモリ セルあたりの書き込みアクセスの合計数を調査し、読み取り破壊型 NVM システムの場合は、メモリ セルあたりの読み取りおよび書き込みアクセスの累積数を調査します。前述のようにベンチマーク アプリケーションを実行し、その結果のメモリ アクセス パターンを図 1 および 2 に示します。

increase memory power

異なるメモリ領域のメモリ セルでは、メモリ アクセスが異なる速度で発生することがわかります。一般に、均一なアクセス パターンを持つ広い領域にもかかわらず、高密度のアクセス ホット スポットが見つかることがあります。

これらのホットスポットは、少数のセルだけが集中的に消耗し、他のセルはまったく使用されないため、メモリの寿命に重大な影響を与えます。これらのアクセスがより適切に分散されれば、寿命は大幅に延長されるでしょう。

非読み取り破壊型 NVM (図 1) の場合、密な書き込みホット スポットは主にスタック内にありますが、これはウェイスタック メモリが使用されていることが原因です。他のすべての領域では、書き込みホット スポットが少なくなります。読み取り破壊型 NVM の場合、コンパイルされたプログラム コードがこの領域に存在し、実行中に読み取られるため、読み取りホット スポットがテキスト領域にも見つかることがあります。

improving brain function

全体として、ウェアレベリング アルゴリズムの目的は 2 つあると考えられます。まず、アクセス頻度が異なる領域を実行時に適切に検出し、アクセス頻度に応じて他のメモリ領域に再配置する必要があります。この目的を達成するために、粗粒度のエージングを考慮したウェアレベリング アルゴリズムを提案します。

第 2 に、アクセスがメモリ セルのより広い領域に分散されるように、高密度のアクセス ホット スポットを解決する必要があります。これにより、単一セルのストレスが軽減され、磨耗がより広い領域に平均化されます。これを達成するために、2 つのきめ細かいソリューションを提案します。1 つはスタック セグメント用、もう 1 つはテキスト セグメント用です。

5 粗粒度のウェアレベリング

このセクションでは、提案されている経年変化を考慮した粗粒度のウェアレベリングについて詳しく説明します。メモリセルの古さを評価するには、メモリアクセス動作を追跡する必要があります。現在のアクセス動作がハードウェアによって追跡できず、実行中のアプリケーションのメモリ トレースが不明な場合、デフォルトでは経年変化を考慮した技術を適用できません。

この問題を克服するために、我々はまず、一般的に利用可能なハードウェアサポート(つまり、MMU、パフォーマンスカウンター)のみを使用してメモリアクセス分布(つまり、固定サイズメモリ領域への書き込みおよび読み取り回数)を推定するソフトウェア管理のアクセス分布近似手法を提案します。 、と中断されます)。

このアクセス近似は、ランタイム環境 (オペレーティング システムなど) のシステム サービスとして実装されます。アクセス分布の近似は、その後、老化を考慮したウェアレベリング アルゴリズムへの入力として提供できます。

5.1 書き込みアクセスのサンプリング

すでに紹介したように、ソフトウェア管理の粗粒ウェアレベリングに向けた最初のステップは、メモリ アクセス分布を適切に近似することです。書き込みアクセスと読み取りアクセスのこの近似値の取得はほとんど同様ですが、最初に書き込み近似値の取得について詳しく説明します。続いて、読み取り近似を取得するために必要な追加の手順について説明します。

実行時のアプリケーションの書き込み分布の近似値を記録するには、いくつかの手順が必要です。まず、アプリケーションの書き込みアクセスでターゲット アドレスをキャプチャし、それを適切なデータ構造に格納する各書き込みサンプルを等間隔でサンプリングしました。

Cwritesample の数によって近似手法の時間粒度が決まり、精度と導入されるオーバーヘッドとの間のトレードオフが可能になります。書き込みをキャプチャした後、データ構造の空間粒度も考慮する必要があります。

バイトごとの推定書き込み数を保存すると、ストレージのオーバーヘッドが大きくなり、時間粒度が粗い場合は不正確な結果が得られます。代わりに、バイトをより大きなメモリ ブロックに関連付けることができ、書き込みカウントはこれらのブロックへの書き込みアクセスごとに集計されます。私たちの実装では、ウェアレベリング アルゴリズムがこの粒度を考慮するため (つまり、決定はメモリ ページに基づいて行われるため)、4- kB メモリブロックの書き込み数を集計します。

各ブロックの 8- バイト カウンターを使用すると、概算の書き込み分布を保存するには 1512 · メモリ サイズ バイトが必要になります (たとえば、1 GB のメイン メモリを追跡する場合は 2 MB)。

すべての Cwritesample およびメモリ書き込みアクセスのターゲットをキャプチャする詳細なフローには、2 つの手法を実装する必要があります。まず、書き込みアクセスを通じてすべての Cwritesample の後にトラップを生成する必要があるため、近似実装でアクションを実行できます。その後、メモリ書き込みアクセスのターゲットを決定し、データ構造に格納する必要があります。

両方の実装については後で詳しく説明します。 Gogteらによるアプローチは、 [6] では、サンプリングされた間隔で CPUwrite リクエストを直接キャプチャできます。そのアプローチは特殊なデバッグ機能に依存しています。

私たちの方法は、より広く利用可能なハードウェア機能を利用する代替手段を提供します。 Vogland Eckert [21] は、アプリケーションの命令実行を特に分析するためにパフォーマンス カウンターを使用することを提案しています。対照的に、次に説明するように、同様にパフォーマンス カウンターを利用してアプリケーションのメモリ使用量を分析します。

supplements to boost memory


For more information:1950477648nn@gmail.com

あなたはおそらくそれも好きでしょう