ただいまCPUの動作について勉強しています。
が、混乱してきましたので、どなたか教えて下さい。
※間違っていたらご指摘下さい。補足も大歓迎です。
32bit_CPUについて
・命令セットの幅が32bitである。
・データバス幅が32bitあるので一回の処理で32bit処理ができる。
・バイトアドレッシングの場合
1つのアドレスに8bitのデータが入っている。
その為、32bit命令をフェッチする為には4サイクルかかる?
・ワードアドレッシングの場合
1つのアドレスに32bitのデータが入っている。
その為、32bit命令をフェッチする為には1サイクルでよい?
この辺が非常に混乱しているところです。
どなたか教えて下さい!
No.2ベストアンサー
- 回答日時:
前の部分は「そもそも CPU ってどこ」って話がなかったですね. すみません.
機能だけをみるなら, コアだけを CPU として, キャッシュは「CPU の外」と考えた方がつじつまが合うことも多いです. パッケージとしては CPU の中に組み込まれてますけど. 今どきの Intel のプロセッサだとレジスタから ALU は 32ビットか 64ビット,(1次) キャッシュとコアの間は 16バイトか 32バイトか, そんなもんだと思います. パッケージとメモリとの間は Core2 までは 64ビットだけど Core i7 では 3×64 = 192ビット.
で後ろですが, 今どきの CPU で「本当にバイト単位でアクセスする」ものは組み込み系くらいしかないと思います. 簡単のために Core2 を例にとるとデータバスが 64ビットであり, 8バイト単位でアクセスします (参考に挙げたデータシートの 46ページを見てもらうと分かりますが, アドレスバスの下位 3ビット分は信号線として存在しません). 例えばアドレス 0x56473992 からデータを読み込むときには, 実際には 0x56473990~0x56473997 にアクセスし, そこにあるデータは一度に取り込むことができます. だから, 「4バイト命令」であってもこの 8バイト境界をまたがない限り 1回のアクセスで命令の全ビットを読み込むことができます. もちろん, 今どきではメモリから直接読み込まないでキャッシュから読み込むことも多く, この場合には既に書いたように「1回のアクセスで読み書きできるバイト数」はさらに大きくなります.
余談: Z80 は「8ビット CPU」というけど実は内部バスは 4ビットらしい.
参考URL:http://download.intel.com/design/processor/datas …
この回答への補足
ご回答ありがとうございます。非常に難しいですね‥
自分なりに解釈してみたのですが、
・32bit命令(4Byte)は4つの番地に一辺にアクセス可能
・1クロックで32bit命令のフェッチ可能
ということで良いでしょうか?
また例えば「パッケージとメモリの間が64bit」というのは、パッケージとメモリの間にアドレス線が64本ある、と考えてよいでしょうか?
>今どきの CPU で「本当にバイト単位でアクセスする」ものは組み込み系くらいしかないと思います.
ということは、実際に32bit命令を1Byteアクセスで8bitずつフェッチするプロセッサもある、ということでしょうか?
(ARMとかSuperHとか32bitマイコンがこれに当たるのでしょうか?)
何度もすみませんが、どうぞ宜しくお願い致します。
No.4
- 回答日時:
え~と, 人のことは言えないけどもうちょっと日本語を丁寧に扱ってほしい.
「32bit命令(4Byte)は4つの番地に一辺にアクセス可能」って意味がわからん.
「1クロックで32bit命令のフェッチ可能」かどうかは, 「1度に読み込むことのできる範囲に全部収まっているかどうか」で決まります. だからフェッチできることもあるしできないこともある. SPARC とか MIPS とかはもとから 1命令が 32ビットに限定されてるから, 必ず 1回で 1命令 (以上) フェッチできる.
あと, アドレスバスとデータバスも区別してほしい. Core2 でもアドレスバスは 36ビットか 40ビットか, そんなもん (ただし下位 3ビットは線として存在しない) のはず. データバスは 64本あるし, それはデータシートを読めばわかる.
SuperH は設定によっては「8ビット単位で読む」こともできるんじゃないかな.
この辺はいろんな資料を読むのが早いかなぁって気もする.
No.3
- 回答日時:
OSなどソフトウェアから見た「論理仕様」と、
中身の回路がどう設計されているかという「実装」とは違います。
一つの仕様に対する実装は数多くある、ということを
理解してください。
32bit/64bit CPUは、ある点がこうなっているから、というもので、
32bit-CPUなら隅々までこの通り、というものでも無いです。
Intel x86 CPUでしたらIntel社のWebサイトに論理仕様書が
公開されていますので、参考にどうぞ。
(PDFで3分冊、全1000ページ超える英文です)
No.1
- 回答日時:
まずは「CPU の中」と「CPU の外」を区別する必要があります. で上から行くと
・命令セットの幅: よく考えると日本語として変だけど, CPU に依存します. 同じ「32ビット CPU」といっても Intel の 86系なら 1バイト (8ビット) 単位ですし, Motorola 68020 は 2バイト単位. いわゆる RISC プロセッサだと 4バイト (32ビット) ですが, NEC V80 では 4バイト命令と 8バイト命令があったような気がする.
・データバス幅: 内部的にはたぶん 32ビットかな. CPU の外に出ると 80386SX みたいに「外部データバスは 16ビット」とかいうやつもいます.
あとの 2つですが, 「アドレッシング単位」と「外部データバス幅」とは直接関係しません. 例えば上に書いたように 80386SX の外部データバスは 16ビットですが 80386DX では 32ビット, Pentium 以降は 64ビットになっています.さらに, 実際にアクセスする単位はハードウェアにも依存していて, 組み込み系の CPU だと 8ビットと 16ビットの選択ができるものもあります. ただ, さすがにワードアドレッシングの CPU でアクセス単位が 1ワード以下のものはないはず.
この回答への補足
ご回答ありがとうございます。
CPUの命令セットの幅はハードによって異なるんですね。(CISC、RISCの違いはさておき)
CPUの中、外というのは
CPUの中:レジスタ⇔キャッシュ
CPUの外:キャッシュ⇔メインメモリ
ということですよね。
>あとの 2つですが, 「アドレッシング単位」と「外部データバス幅」とは直接関係しません
すみません、勉強不足でここがよく分かりません。
32bit命令というのは、32bitの長さの命令ですよね?
CPUからメモリフェッチする場合、バイトアドレッシング単位では、アドレスは32bit幅、でそれぞれの番地に8bitのデータが入っているので、プログラムカウンタはアドレスを4回指定する必要があり、4サイクル掛かる、のように感じるのですが、この認識はあっていますでしょうか?
どうぞ宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Excel(エクセル) Excel 2019 32-bit版を64-bit版にするには? 8 2023/07/28 14:20
- その他(プログラミング・Web制作) Visual Studio Code 関数の使い方について 3 2023/05/31 13:15
- TOEFL・TOEIC・英語検定 bitとlittleは両方ともに同じ 1 2022/08/10 13:03
- 英語 英文和訳についての質問です。 2 2023/06/23 06:38
- その他(AV機器・カメラ) オーディオインターフェイスの24bitなど量子化bit数はどこで設定できるのでしょうか? 1 2022/06/26 07:58
- 英語 わからない英文があります。 4 2022/11/16 07:25
- オンラインゲーム Valorantの最低・推奨スペックについて質問させてください。 2 2022/09/07 17:48
- Excel(エクセル) [並べ替えの前に]、[選択範囲を拡張する]のが煩わしいッ! 1 2023/02/28 22:40
- ルーター・ネットワーク機器 適切なLANケーブルは? 8 2022/08/12 10:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELでの16進数取り出し、上...
-
1Mバイトって何バイト?
-
文字化けはなぜ日本語が入って...
-
文字の容量(サイズ)についての...
-
KBのMB違いって
-
GB と Gbの違いの意味
-
実行計画の「COST」と「BYTE」...
-
1KBは、2の8乗X1000ではない...
-
16進数どうしの乗算
-
マトリックスサイズが512×512で...
-
Mbyteは何KB?
-
テーブルのバイト数計算
-
ビットもバイトもkは×1024?
-
(*^_^*) キロバイトと字数の...
-
1000メガピクセルの情報量
-
パソコン使用の基本知識
-
oracle11gで、PL/SQLにてAとい...
-
1MBは?
-
KBとMB
-
携帯メールのバイト数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
携帯電話の略語であるMBって英...
-
文字の容量(サイズ)についての...
-
EXCELでの16進数取り出し、上...
-
KBのMB違いって
-
KBとMB
-
1Mバイトって何バイト?
-
実行計画の「COST」と「BYTE」...
-
K KB MB について詳し...
-
文字数(バイト数)の数え方が...
-
CSV データのバイト数を調べる...
-
Oracle AL32UTF8でのバイトサイ...
-
32bit = 4GB(バイト)?
-
文字化けはなぜ日本語が入って...
-
カナカナの(半)濁点がついた文...
-
GB と Gbの違いの意味
-
DVD-R 4.7GBって、何byte でし...
-
2バイト文字を一括削除するマクロ
-
文字列をバイト数分表示するには?
-
マトリックスサイズが512×512で...
-
アルファベット30文字は何バイ...
おすすめ情報