通常よく遭遇しているCPU基板のアーキテクチャーとして
物理アドレシングの最小単位はそのCPUの基本データ幅であると考えて宜しいでしょうか。
例えば、32bitのCPUの物理アドレシングの最小単位は32bitのデータです。
8bitや16bitのデータにアドレスを振りわけない。
データ読む時に一回で少なくとも32bit分のデータを読み込んで、
若しプログラム上8bit (= 1byte)のデータがほしいなら、8bit幅のレジスターで32bitから抽出します。
同様に、2byteのデータがほしいなら、16bit幅のレジスターで32bitから抽出します。
正しくないでしょうか。
CPUアドレシングの物理的な動きについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: CPUアドレシングの物理的な動きについて
CPUの設計思想や、会社としての思惑、時代的に許容されるかでアドレスバスの仕様は良く変わります。
64bitだからと言って64bitのアドレス・バスがハードウェア的に存在するとは限りません。
【補足】 現実問題として64bit=16EBもの記憶装置がないので仮想記憶でさえOSでサポートしていないはずです。
あとCPUキャッシュやマルチコア化やコントローラ・チップセットの存在など世の中は複雑怪奇になってきています。
と言うことで、現状色々なのが交じり合っています。
32bitバス幅の64bitCPUも過去に沢山存在したので、「物理アドレシングの最小単位はそのCPUの基本データ幅であると考えて宜しいでしょうか。」は最初に書いた通りの事情で変わります。答えとしては、「そうしたいけど出来ないことも有るよね」でしょうか。
最後に例えば16bit幅のデータの場合、32bitのCPUの場合としてデータが32bit境界をまたがっていた場合、最大64bitのデータを取り出す可能性があります。データキャッシュが絡むと更に取得は増えるでしょう。
【追記】
内容的に、こちらの質問の詩織さんと同じ方でしょうか?
「short と int の計算速度 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=14756
同じ方なら名前の統一をお願いしておりますので、どちらへの統一をお願いします。
64bitだからと言って64bitのアドレス・バスがハードウェア的に存在するとは限りません。
【補足】 現実問題として64bit=16EBもの記憶装置がないので仮想記憶でさえOSでサポートしていないはずです。
あとCPUキャッシュやマルチコア化やコントローラ・チップセットの存在など世の中は複雑怪奇になってきています。
と言うことで、現状色々なのが交じり合っています。
32bitバス幅の64bitCPUも過去に沢山存在したので、「物理アドレシングの最小単位はそのCPUの基本データ幅であると考えて宜しいでしょうか。」は最初に書いた通りの事情で変わります。答えとしては、「そうしたいけど出来ないことも有るよね」でしょうか。
最後に例えば16bit幅のデータの場合、32bitのCPUの場合としてデータが32bit境界をまたがっていた場合、最大64bitのデータを取り出す可能性があります。データキャッシュが絡むと更に取得は増えるでしょう。
【追記】
内容的に、こちらの質問の詩織さんと同じ方でしょうか?
「short と int の計算速度 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=14756
同じ方なら名前の統一をお願いしておりますので、どちらへの統一をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
鈴木詩織
Re: CPUアドレシングの物理的な動きについて
softya(ソフト屋) さん
いつもお世話になっております。
よくわかりました。
御礼遅く申し訳ございません。
これからも、鈴木詩織というユーザー名を使わせていただきます。
いつもお世話になっております。
よくわかりました。
御礼遅く申し訳ございません。
これからも、鈴木詩織というユーザー名を使わせていただきます。