電子書籍の厳選無料作品が豊富!

CPUの構造を理解する意味は?

よくプログラムの勉強をするときにCPUの内部構造である制御装置、演算装置、レジスタなどの解説があって、さらにそれらがどういう繋がりがあって、どうお互いを利用しているか、ということを説明する本に出会います。
しかし実際アセンブリ言語で開発しようという人間以外に、誰がこの知識を必要とするのか全くわかりません。
C言語以上の高級言語を使用するのであればこれらの知識は不要ですよね??

※C言語の勉強でメモリーの構造を理解する必要があるのはわかります。

A 回答 (5件)

>しかし実際アセンブリ言語で開発しようという人間以外に、誰がこの知識を必要とするのか全くわかりません。



OSを設計、移植する場合には、CPUの詳細な内部構造が必要です。
OSというと、なんかすごいプログラムのように思ってしまうかもしれませんが、実際にはMCUを使用する場合にメモリの制約が厳しいので、その時々に必要な機能のOSをコーディングしています。サイズは数百byte~数Kbyte。初期のUNIXとかカーネルが4Kbyteぐらいしかなかったのですよ。

それは別の話として、高速なソフトウェアを書くためにはCPUの詳細な情報がかかせません。
現在、モバイル器機を中心に消費電力を下げる競争が盛んになっています。結局消費電力を小さくするためには、ソフトウェアの実行速度を上げてクロック周波数を下げるか、休止させてる時間を多くするしかないのです。したがって今後は遅いプログラムしか書けないエンジニアはモバイルを中心に追放されそうな感じです。

マイコンのCPUのクロックが数MHzの30年前は、どうやって高速でメモリの少ないプログラムが書けるかというのが課題で、そのテクニックを競っていました。その結果プログラミングした本人でも後からみるとどうやって動作しているのか判らないような「なぞなぞソフト」が大量に作りだされたのです。
「なぞなぞソフト」が大量に増えた結果、ソフトウェアのメンテナンスに支障が生じたために、今度はオブジェクト指向などのメンテナンス性が高いソフトウェアが主流となりました。時は巡って、省エネ問題からまた高速性が追求されることに・・・
世の中って面白いですね(^ ^)ノ
    • good
    • 0
この回答へのお礼

なるほど、携帯のOSとか常に使うプログラムだと、少しでも消費電力の少ない、無駄のないプログラムのほうが一回の充電での使用可能時間が延びますよね。と言ってもどれくらい違いがでるのかわかりませんけど。一時間以上の差が出るんですかね??

詳しくありがとうございました。

お礼日時:2010/10/15 20:48

正しくは、Windows では必要がなくなった


が正しい表現な気がします。

DOSの時代には、処理速度を早める方法として
C言語なら、インラインアセンブラや、直接ポインタを
システムやグラフィック領域に割り当てるとか、
BASIC言語でも、 PEEK命令、POOK命令で、グラフィック
領域等を操作したりという事が出来ました。

Windowsではそれらを禁止している為、あまり意味が無い
のは確かですね
    • good
    • 0
この回答へのお礼

そんな背景があったんですね。

回答ありがとうございました。

お礼日時:2010/10/15 20:37

組み込み用途なら「知ってて当然」といわれるような気がする.


その一方で, 「C言語の勉強でメモリーの構造を理解する必要がある」のはなぜかと聞かれると, おそらく意外と難しい.
    • good
    • 0
この回答へのお礼

組み込みですか。未知の領域です

回答ありがとうございました。

お礼日時:2010/10/15 20:33

実は、プログラムをしていて、「理不尽だ」とか、「なんでこんなめんどうな」という部分の少なくない部分がCPUの構造を反映しているわけです。


ですから、プログラミングのルールや制約を、何も考えずに「そういうもの」として過ごすのであれば、CPUの構造は不要な知識です。
    • good
    • 0
この回答へのお礼

勉強するといろいろと見えてくるものがあるということですね。

回答ありがとうございました。

お礼日時:2010/10/15 20:31

ま、確かに高級言語しか使わない人には全く不要ですね。


しかし、知識としてのCPUの構造を知っておくことはいいんじゃないですかね。

情報処理技術者試験ではこのような役に立たない知識ばかりが問題に出ますから。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2010/10/15 10:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!