CPUアドレシングの物理的な動きについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
鈴木詩織

CPUアドレシングの物理的な動きについて

#1

投稿記事 by 鈴木詩織 » 12年前

通常よく遭遇しているCPU基板のアーキテクチャーとして
物理アドレシングの最小単位はそのCPUの基本データ幅であると考えて宜しいでしょうか。
例えば、32bitのCPUの物理アドレシングの最小単位は32bitのデータです。
8bitや16bitのデータにアドレスを振りわけない。
データ読む時に一回で少なくとも32bit分のデータを読み込んで、
若しプログラム上8bit (= 1byte)のデータがほしいなら、8bit幅のレジスターで32bitから抽出します。
同様に、2byteのデータがほしいなら、16bit幅のレジスターで32bitから抽出します。

正しくないでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: CPUアドレシングの物理的な動きについて

#2

投稿記事 by softya(ソフト屋) » 12年前

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
同じ方なら名前の統一をお願いしておりますので、どちらへの統一をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

鈴木詩織

Re: CPUアドレシングの物理的な動きについて

#3

投稿記事 by 鈴木詩織 » 12年前

softya(ソフト屋) さん
いつもお世話になっております。
よくわかりました。
御礼遅く申し訳ございません。

これからも、鈴木詩織というユーザー名を使わせていただきます。

閉鎖

“C言語何でも質問掲示板” へ戻る