
No.5ベストアンサー
- 回答日時:
>回答ありがとうございます。
質問を少し変えますが、命令レジスターは何バイトまで持つことが出きるのでしょうか?それこそ設計次第です。少なくても最大命令長は必要でしょう。
最近のプロセッサは命令レジスタを多段化した命令パイプラインで命令自体も加工して処理するのが当たり前ですのでバイト数で語ること事態無意味です。
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5 …
上記サイトにも書いてありますがPentium 4とか31段もあります。
「コンピュータアーキテクチャの話」から興味ある話題を拾い読みしてください。
http://journal.mycom.co.jp/column/architecture/i …
No.7
- 回答日時:
>すみません。
最後に1つ質問いいでしょうか?失礼な質問なのデスが、zwiさんはいろいろなCPUの動作にについてわかってらっしゃるのでしょうか?ざっとは理解しているつもりですが、ちゃんと分かっているのはZ80ぐらい古いCPUでしょうね。あの時代のCPUなら自分でデジタル回路を設計してFPGAで再現できる自信はあります。
どのぐらい意識してプログラムしているかと言うとコンピュータアーキテクチャは複雑なので、特に普段は意識しません。得にx86系はCPU毎にパイプラインアーキテクチャや命令実行アーキテクチャが違うので深く意識してもしょうがないです。
機械語命令が2バイトなのか5バイトなのかと言った問題も、パイプラインやらキャッシュやらの働きで隠蔽されてしまうので意識しなくても速度は出てくれます。
それよりは、アルゴリズムを工夫して速度を出す方法を考えるほうが建設的です。
まぁ、データのバウンダリの問題やfloatやdouble、intのデータ型の違いで起こるデータ型変換のロスや文字列比較コードの遅さってのはCPUの特性を理解していないと意識できない問題でしょうね。あとは仮想記憶を駆使する場合やらマルチCPUでマルチスレッドする場合にはハードやOSの知識があったほう効率的なコードを組める事は間違いないでしょう。
ただ、初心者ならそんな事を今から考えるより、速度で困ったときに勉強しても遅く無いと思うんですけどね。
それと、どのCPUでも意識しなくて良いかと言うとPS3のCELLの様にCPUのアーキテクチャをちゃんと理解してやらないと性能を発揮できない場合は意識してやる必要がありますよ。
No.6
- 回答日時:
ついでに言っておくと、アセンブラ初心者がやるべき事はちゃんとアセンブラ命令の働きを覚えてプログラムを組む事です。
興味本位に命令部のビット数とか命令レジスタとか細かい事を調べてもデジタル回路設計の知識も無いのに理解できるとは思えません。もしそれを理解したとしても、プログラミングの技術力向上にさほど影響を与えるとは思えません。
※ 例えば、命令パイプラインの深さとかCPU毎に違うので、どれかのパイプラインに合わせてプログラムを作られても、そのCPUでしか最高のパフォーマンスを発揮しなくなってしまいます。
そこまで深く調べて意味のある人は、自分でデジタル回路設計が出来てオリジナルCPUを設計したい人とか、OSやドライバレベルのソフトウェア開発を行う人、組み込み業界の人でハード設計と密接なソフトを開発している人ぐらいだと思います。それでも命令レジスタのバイト数は意味無いと思いますけどね。
もし、本当にコンピュータアーキテクチャに興味があり理解がしたいなら、デジタル回路の知識から身につけるべきだと思います。ただ、CPUの動きが良く分からないから更に細かく調べれば理解できると思っているのなら際限が無いのでほどほどにしておくべきです。
この回答への補足
すみません。最後に1つ質問いいでしょうか?失礼な質問なのデスが、zwiさんはいろいろなCPUの動作にについてわかってらっしゃるのでしょうか?
補足日時:2009/12/07 16:32回答ありがとうございます。忠告ありがとうございます。そうなんですか、そんな複雑ならあまり考えずアセンブラの命令の働きを覚えたいと思います。本当にありがとうございました。
No.4
- 回答日時:
>3バイトを越えるものがあるということでしょうか?
訂正で命令部が3バイトのものもある様です。
pentiumを含めたIA-32アーキテクチャの日本語資料です。
http://download.intel.com/jp/developer/jpdoc/IA3 …
http://download.intel.com/jp/developer/jpdoc/IA3 …
IA-32は命令の変化が激しいので命令長がちゃんと把握しきれてません。命令長は命令部を含めて最短1バイトから、たしか最大15?バイトまで変化するはずです。
上記資料を隅から隅まで読めば分かるとは思いますけどね。
No.3
- 回答日時:
>あともう一つ質問なのですが、CPUによって違いがあるみたいですが普通は何ビットなのでしょうか?
普通って考え方が間違い。
CPUごとに設計が違うので、命令部が何ビットかは設計次第。
ちなみにPEN4なら命令部は1か2バイト。オペランド部は、それはもう千差万別。
>間違えました。COMETの場合どうなるのでしょうか?
COMETIIの仕様なら下記PDFの11ページを見てもらうとして、
http://www.jitec.ipa.go.jp/1_00topic/topic_20081 …
命令部が8ビット、レジスタ2つで8ビット、アドレスで16ビットで合計32ビットです。
ちなみにPS1とPS2に採用されたマイクロプロセッサMIPSだと
http://www.ps.d.dendai.ac.jp/lecture/comp_arch/2 …
前にも書いた通り命令部が6ビット。オペランドの形式は2種類(命令部でどちらの形式か決まる)。
No.2
- 回答日時:
アドレス方式ってオペランド数の事かな?
>命令部とアドレス部はどうなるんでしょうか?
CPUの設計によるのでは?
MIPSとか命令部が6bitしかない物もあります。
RISCとして設計されているものの方が命令部はコンパクトでしょうね。
どのCPUの話を書いているか分からないので答えようが無いです。
No.1
- 回答日時:
えぇと, そもそも「32ビットCPUでADD ansの1アドレスでやる場合、命令部16ビットと番地アドレス部16ビットとされると思
いますが」からして間違い... というか, 1アドレス命令な 32ビット CPU って何があったっけ? IA-32 とか Z380, Z80000 とかくらい?お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(インターネット接続・インフラ) ホームページのログイン認証の際、PCから相手方サーバーに対し送信されるMACアドレスについて 1 2022/10/17 14:14
- Yahoo!メール Yahooメールで困っています 現在使用しているアドレスが2個有りますが、1個が表示されなくて、困っ 3 2023/03/29 11:11
- その他(悩み相談・人生相談) 片思いの男性のメアドが、ニフティのアドレスです。 私の携帯のアドレスから、メールを送信していますが、 3 2023/08/12 15:30
- IT・エンジニアリング アドレス空間(メモリマップ)について教えてください。 マイコンには必ずメモリマップが記載されています 3 2022/06/17 09:42
- Wi-Fi・無線LAN 無線ルーターのIPアドレスは、iPhoneのように簡単に変更できる??? 2 2022/04/02 19:00
- ネットワーク IPアドレスの範囲ってどうやって求めるんですか? 2 2023/01/05 01:37
- X(旧Twitter) Twitterのロック解除はアドレスや電話番号が分からない場合は申し立てで解除できますか? アドレス 3 2022/09/06 11:24
- FTTH・光回線 グローバルIPアドレスの変更について 1 2022/04/23 05:32
- Windows 10 確認した「IPv4アドレス」 1 2022/10/26 20:45
- 固定IP スマホやPCのIPアドレスについて教えてください。 5 2023/07/07 19:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビットデータの取得方法について
-
2アドレス方式について
-
DoJaで多倍長演算する方法
-
PS3に搭載されている"Cell"は、...
-
fortranで**の意味は?
-
数値計算における誤差について
-
上位ビットと下位ビットの入れかえ
-
プログラム
-
0xffffとは?
-
一定のバイト列から指定サイズ...
-
Python: 数値を反転させたい
-
C言語のビット演算子に関して
-
C言語で128bitの2進数のビット...
-
アルゴリズムの計算量とオーダ
-
fortran
-
浮動小数点演算と固定小数点演...
-
ビットシフトってどんな時使うの?
-
インラインアセンブラの関数に...
-
PowerPC用逆アセンブラを知りま...
-
実行ファイルからソースはみれる?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
ビットシフトってどんな時使うの?
-
文字参照は10進数と16進数では...
-
エクセルVBAのIf,Then 構...
-
03分22秒36のような時間の単位...
-
一般のソフトで画像を扱う場合...
-
C言語やC++言語でビット毎に値...
-
シーケンス制御についての質問...
-
PS3に搭載されている"Cell"は、...
-
ビット演算子
-
Endianについて パート2
-
verilog 符号付加減算(最上位...
-
ビットの取り出し方法
-
PLC 命令について
-
命令について
-
符号無し整数xを右にnビット回転
-
16ビットCPUで32ビットの計算方法
-
浮動小数点数の内部表現につい...
おすすめ情報