• ベストアンサー

メモリアドレスのバイトオフセット

キャッシュについて勉強しています。メモリアドレスの最後の部分にバイトオフセットというものがあるのですがこれはいったい何のために存在しているのでしょうか?どなたかお答えしていただけたら幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • 10451198
  • ベストアンサー率61% (77/126)
回答No.1

ちょっと用語違うかも知れません。 物理アドレスを3つにわけて、上位から タグアドレス、ラインアドレス、バイトオフセット、 とされているのでしょうか? であれば、回答は以下のとおりです。 キャッシュのデータはライン単位で管理します。一般にラインの大きさは16-64バイトぐらいです。仮にラインサイズを4バイトとすると、物理アドレス最下位2ビットはライン単位の管理には不要です。(ラインの存在とか、MESIのステートとか) 一方、CPUが1バイトのデータを書込むばあい、ラインの中の、どこに書くかを示す必要があるので、バイトオフセットを使います。 ちょっと乱暴な言い方をすれば、バイトオフセットはタグRAMには格納されないアドレスである、というくくり方も正しいかと。

関連するQ&A

  • メモリアドレスの素朴な疑問

    メモリアドレスについて メモリに関する素朴な疑問があります。 当然この程度の事はネットや書籍で調べられると思い 探したのですが、見つける事ができませんでした(汗)。 勘違いをしている部分もあると思いますか゛、どうかお助け下さい。 メモリには1バイトごとにアドレスが割り振られている事は理解できます。 ところでアドレスはいつの時点でどこに割り振られるのでしょうか? (1)メモリの製造時にバイト単位にROM化されて割り振られる。 (2)パソコン起動時にバイト単位にハードディスクから読み込まれて割り振られる。 (3)それ以外。 またバイトの先頭、後尾いずれに置かれるのでしょうか? 当方、独学、経験無しの55歳、基本情報処理試験午前試験クリアレベルですので、よろしくお願いいたします。

  • フラグメントオフセット

    学校での課題で意味不明な点があってので質問させてください。 以下の条件におけるIPヘッダを16進数で示せ. ヘッダチェックサムは#0000でよい. IPv4, IPヘッダ長:20バイト, サービスタイプ:指定なし(0). IPデータグラム長:40バイト, フラグメント識別子:16, フラグメント:後続フラグメントあり, フラグメントオフセット:32, TTL:64, プロトコル:TCP, 始点IPアドレス:100.101.102.103, 終点IPアドレス:200.201.202.203 という課題で, 答えが 4(版)   5(ヘッダ長)   00(サービスタイプ)   0028(データグラム長)       0010(フラグメント識別子)       2020(フラグメントオフセット) 40(TTL)       06(プロトコル)         0000(ヘッダチェックサム) 64656667(始点IPアドレス) C8C9CACB(終点IPアドレス) となっていてフラグメントオフセットが2020な理由がわかりません。。。確かに32だと0x20ですけど・・・・2020っていったいなんなんでしょうか?

  • 仮想メモリアドレスについて

    OSが管理している仮想メモリアドレスについて質問させて下さい。 物理メモリのアドレスといわれるものと、 仮想メモリのアドレスといわれるものは、 いずれもハードディスク上に存在し、ハードディスク上で OSによって管理されている情報(アドレス)ということになりますか?

  • フラグメントオフセットについて

    フラグメントオフセットについて 識別番号とフラグメントオフセットでパケットの再組み立てをしてると思うのですが 識別番号は、同じデータには同じ値で、まずそのデータが同じデータかどうか判断する。 そしてフラグメントオフセットは、パケットがそのデータの何バイト目かを値で、13bit x 8分の値(フラグメントオフセットの1ビットが8ビット分表すため)を表現できると勉強しました。 しかし、13bit X 8 以上のデータなら、そのあとどのような処理があるのでしょうか? 回答お願いします。

  • 8086のメモリ管理について。

    8086のメモリ管理について。 いつもお世話になっております。 小生、現在ポケコンZ-1GRでx86アセンブリを勉強中のアセンブリ初心者です。 今回質問させて頂きたいのは8086のメモリ管理についてです。 8086はメモリ管理にセグメントとオフセットという方法を使い、全部で2MBのメモリが使用できるのは、理解できました。 理解できないのは、物理メモリへの変換の際、(セグメントアドレス X 10H) + オフセットで物理メモリにアクセスできるという箇所です。 セグメントアドレス X 10Hで20bitのアドレス空間を操作できるのは分かるのですが、 問題はセグメントアドレス X 10Hがどこの箇所(例えばCPUの中)で行われているのでしょうか? MMUはもちろんないはずだと思います。 お忙しい中、大変申し訳ございませんが、先輩方ご教示宜しくお願い致します。

  • 正しいプログラムメモリアドレスが・・・

    コンピュータ関係は、素人でわかりませんので、お教え下さい 下記の文章は、専門家の方が読んで、意味が通ずるでしょうか。 ロボット関係の記述です。意味が通じないならば、どういった表現になるでしょうか。 恥を忍んで、宜しく、お願いします。 「正しいプログラムメモリアドレスが、デジタル入力部と接続していることを確認します」 「運転モードを自動モードに切り替えようとしたとき、現在のプログラムメモリセッティングを支援するプログラムが存在しないことが、チェックフェーズの段階で検出された」 「プログラムメモリのアドレスが、システムパラメータで指定された領域に存在しない」

  • 複数バイト命令実行のタイミング

    1バイト単位でメモリの各アドレスにデータが保存されているコンピューターにおいて、複数のバイトで表される命令がどのように実行されるのか教えて下さい。 メモリには一つのアドレスごとに8ビット(1バイト)のデータが入っており、CPUはプログラムカウンタで示されたメモリ上のアドレスにあるデータや命令を一つずつ順番に読み込んで、それをデコーダーが解釈し各回路への指令に変換することでプログラムを実行していくということは理解しています。 しかし現在の32ビットコンピューターなどにおいてアセンブリの命令、例えば「MOV A,B」(Bレジスタの内容をAレジスタにコピーする)といった命令は、「B90001」などの3バイトのマシン語で表されるとすると、メモリ上では アドレス  内容 0000  0xB9 0001  0x00 0002  0x01 のように3つの連続するアドレスにまたがってデータが存在し、CPUが「MOV A,B」を読み込み、それを順次デコーダーに送るまでには「MOV」、「A」、「B」の3クロックを要すると思います。 その際、デコーダーが命令を解釈し各回路に指令の信号を送るタイミングというのは、最後の「B」のデータを読み込んだ時点になるのでしょうか?もしそうならば、3クロック目に最後の「B」のデータがデコーダーに到着するまでの間、「MOV」と「A」のデータというのはCPUにメモリから読み込まれた後はどのように扱われるのでしょうか? 少し質問が分かりにくく恐縮ですが、情報工学を独学で勉強しており、プログラムが実際の回路でどのように実行されるのか理解したいと思っています。 どうぞご回答よろしくお願い致します。

  • OSはどのようにして、CPUにメモリ上の物理アドレスを伝えるのか?

    一般的なシステムにおいて、プログラムを実行するには、コンパイラが再配置可能なオブジェクトファイルにして、そのオブジェクトファイルをローダがメモリ上にローディングして、CPUによって実行が行われると認識しています。 では、実際にCPUにより実行される時に、どのようにしてCPUは、ローディングされている物理アドレスを知ることが出来るのですか?一番初めにOSがどのようにCPUに先頭番地を伝えているのかが見当がつきません。例えば、486では、セグメントレジスタの値とオフセットアドレスを加算したアドレスを基にメモリとやり取りしていますが、OSがこのセグメントレジスタに先頭アドレスをどのように格納しているのかを教えてください。お願いします。

  • メモリについて

    1、一時的な保存場所として、CPUは1次キャッシュ2次キャッシュ→メモリ→HDDの順に利用すると理解しているのですが、そんなものでしょうか? 2、また、現在勉強中でよく分かっていないので文がおかしいかもしれませんが、昔は、CPUのFSBが100のとき、メモリのFSBが133と超えていたら、無意味だったみたいですけど、今は、別々に考えられているみたいですね。そこで、CPU側のFSBが800とした場合、メモリのFSBがこのくらいがいいというバランスとかはあるのですか? バランスとかは考えないで、ようは何がしたいかでメモリの容量やFSBを考えたらいいですか? 3、同じ512Mで、256Mを2つ使うよりも、256Mのディアルチャネル対応のほうがいいみたいですが、たとえば、2G使うとした場合でも、1Gのディアルチャネルがいいのか、1Gを2つ使ったほうがいいのかどちらでしょう?容量が多い場合、壊れたときのことも考えて、512Mのディアルチャネルを2つ使ったほうがいいとかありますか? 4、さいごですが、メーカーによって値段が大きく違います。 無名とかバルクは怖いですが、本に載っているようだったら、メモリはそんなにこだわらなくてもいいでしょうか?

  • キャッシュ済みとメモリ・・・

    スリープから復帰してしばらくするとかなり重くなってしまいます。 タスクマネージャーを見てみるとメモリの使用量は500MB(1GB搭載)ぐらいになっています。にもかかわらず空きメモリは0 キャッシュ済みの部分を見てみるとこっちも500MBぐらいとっています。これはキャッシュがメモリを圧迫しているということですか? スーパーフェッチが関係しているのでしょうか? もしそうならキャッシュをある程度削除したいのですがどうすればよいのでしょうか?