アラインメント要件のハードウェア重要性とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > アラインメント要件のハードウェア重要性の意味・解説 

アラインメント要件のハードウェア重要性

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/19 14:58 UTC 版)

データ構造アライメント」の記事における「アラインメント要件のハードウェア重要性」の解説

アライメント問題は、ハードウェアアドレス変換メカニズムPCIリマッピング、MMU実施)によるその領域効率的なマッピング目的である場合、C構造体よりもはるかに大きな領域影響与え可能性がある。 例えば、32ビットオペレーティングシステムでは、4 KBページは、任意の4 KBのデータチャンクだけではない。通常は、4 KB境界アラインされたメモリ領域である。これは、ページをページサイズの境界アラインすると、複雑な算術演算ではなくアドレスの上ビット置換することで、ハードウェア物理アドレス仮想アドレスマップできるためである。 例: 物理アドレス0x12345000に仮想アドレス0x2cfc7000のTLBマッピングがあるとする(これらのアドレス両方とも4 KB境界アラインされている)。仮想アドレスva = 0x2cfc7abcにあるデータアクセスすると、0x2cfc7〜0x12345のTLB分解能で、pa = 0x12345abcへの物理アクセスが行われる。ここで、20/12ビット分割幸いなことに、5/316進表現分割一致するハードウェアは、物理アドレス(0x12345)の最初20ビット仮想アドレス(0xabc)の最後12ビット単純に組み合わせることによって、この変換実装できる。これは、仮想インデックス(abc)物理的タグ付け12345)とも呼ばれるサイズ 2^(n+1)-1 のデータブロックは、常に 2^n バイトアラインされたサイズ 2^n の1つのサブブロックを有する。 以下は、アライメント知識のない動的アロケータを使用して、スペースロスの2倍を犠牲にして、アラインしたバッファ提供する方法である。 Example: get a 12-bit aligned 4 KBytes buffer with malloc()// unaligned pointer to large areavoid *up=malloc((1<<13)-1);// well-aligned pointer to 4 KBytesvoid *ap=aligntonext(up,12);where aligntonext() is meant as:move p to the right until next well-aligned address ifnot correct already. A possible implementation is// PSEUDOCODE assumes uint32_t p,bits; for readability// --- not typesafe, not side-effect safe#define alignto(p,bits) (p>>bits<<bits)#define aligntonext(p,bits) alignto((p+(1<<bits)-1),bits)

※この「アラインメント要件のハードウェア重要性」の解説は、「データ構造アライメント」の解説の一部です。
「アラインメント要件のハードウェア重要性」を含む「データ構造アライメント」の記事については、「データ構造アライメント」の概要を参照ください。

ウィキペディア小見出し辞書の「アラインメント要件のハードウェア重要性」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「アラインメント要件のハードウェア重要性」の関連用語

アラインメント要件のハードウェア重要性のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



アラインメント要件のハードウェア重要性のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのデータ構造アライメント (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS