ページ 11

CPUの構造

Posted: 2010年10月16日(土) 22:17
by dic
無事シューティングゲームも完成としたところで
いろいろプログラムの設計で悩みました

そこで、もっとハードウェアの内部構造を知り、これを元にプログラムを組んだら
汎用性が高く、プログラムの構造にも悩まないのではないかと考えました

なので、CPUの内部構造、仕組みなどを公開されているサイトをご存知でしたら
教えていただけると幸いです

おそらくCPUの種類も指定しないといけないと思うのですが、まったくその知識はなく
どのCPUの構造かを指定できないです

感覚としては、今あるCPUの内部構造をマネして、それを次の作品に使いたいと思っています
雑誌 Interface では時々図解であるのですが、いかんせん値段がそうとう高いもので
1ページにそれだけのお金をかける余裕がないです

基本情報処理でアセンブラの汎用レジスタ、プログラムカウンタ、などちょっとだけ知識はあります
が、それらがどのようにからんで動いているのかまでは分かってない状態です
(上位資格ソフトウェア開発者ではあるのかな?)

エミュレータのような基本システムが同じものを作るということでしょうか
もっともC/C++の高級言語で実装すればいい と返されてしまうかもしれませんが
私には複雑なので単純な構造を理解してから、次なるステップへと進みたいと考えています

画像はCPU i386の構造ですが、英語なので日本語の資料が欲しいところです

Re:CPUの構造

Posted: 2010年10月16日(土) 22:23
by たかぎ
とりあえず、うちのサイトの↓でも読んでください。
http://www.kijineko.co.jp/node/649

その上で、より高度なことを学べばよいかと思います。

Re:CPUの構造

Posted: 2010年10月17日(日) 01:30
by softya
>そこで、もっとハードウェアの内部構造を知り、これを元にプログラムを組んだら
>汎用性が高く、プログラムの構造にも悩まないのではないかと考えました

ハードを抽象化するための高級言語ですので、狙われていることは逆行かも知れません。
ただ、ハードを知ることは悪いことでは無いと思いますので勉強については応援します。

どうしましょうか?
現代x86系のディープなCPUアーキテクチャの話でしょうか?
※ 実はx86系はCPUのアーキテクチャでみると全く別の機構で動いているものが混在しているので、あまり特定のCPUの機構に偏ると別のCPUでは性能が悪くなる可能性がありえます。

すごく細かいコンピュータ・アーキテクチャの話。
http://journal.mycom.co.jp/column/archi ... index.html
更に細かいのは、こちらにあります。
http://www.intel.co.jp/jp/download/index.htm
IA-32 インテル® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、上巻: 基本アーキテクチャー [日本語: PDF 形式 5,056 KB]がそれです。

あるいは、こんなシンプルなのからどうですか?
http://www.isit.or.jp/~kimuro/rcupj/kue_index.html
シミュレータ自体はこちら。
「模型計算機シミュレータ (財)九州システム情報技術研究所」
http://www.isit.or.jp/~kimuro/rcupj/kue/KueMain.htm

Re:CPUの構造

Posted: 2010年10月17日(日) 11:39
by Dixq (管理人)
こういうことはwebサイトで勉強するより書籍で勉強する方が良いと思います。
専門的な事はwebサイトでは信憑性に欠ける事もありますしね。
お金を出したくないということであれば
「CPUは何をしているのか」って本わりと読みやすかったですけどamazonで古本100円で売っているのでよければどうでしょう。

ただ、softyaさんも仰るように目指すところは逆だと思います。
そういう低い階層の仕組みに依存することなく作れるようにすることを目標にしたいのではないのでしょうか。
組み込みであれば特定の環境に依存するコードを使ってより効率的にしていく必要があると思いますが、汎用的とは逆だと思います。
CPUの命令を理解したところでクラス構造が変わるとは思えませんし・・。

でも学ぶことは良い事だと思います。

Re:CPUの構造

Posted: 2010年10月18日(月) 14:52
by dic
>>たかぎさん softyaさん Dixqさん

たしかにアセンブラからC言語 C言語からC++ C++からC#と
より抽象的な流れになっていってますので、私の目指す方向は逆かもしれません
しかし、これらのすべてはCPUの基盤がしっかり作られていることにより可能なことであるので
どのような基盤を作れば、今後とも通用する構造が作れるのかという観点から学びたいと思ってます

私自身は思うのですが、いままで会ってきた方ですごくプログラムがうまい方で共通するのが
このような細かいきちんとした計算ができる方が多いように思いました
逆に、プロジェクト自体が破綻してしまう場合は、抽象的な話ばかりで実際の具体的な話ができない場合が
多かった経験があります

今の回答者の方にも このようなC言語をつきつめて理解されてる方がいらっしゃって
勉強ができる方も、きちんと抽象的でなく、地に足のついた話ができる方が多かったです
それらを踏まえたうえで、よりハードウェアよりの勉強をしたいと思った次第です

回答ありがとうございました
リンク先もたいへん参考になります