ハーバード・アーキテクチャのCPUは構成上、その上でOSを実装しにくいと思うのですが、そうしたOSはありますか?

回答の条件
  • 1人2回まで
  • 登録:2008/01/10 23:51:33
  • 終了:2008/01/16 01:02:33

回答(3件)

id:hsada No.1

hsada回答回数48ベストアンサー獲得回数12008/01/11 08:29:42

ポイント27pt

Pentiumがハーバード・アーキテクチャを採用しているので、WindowsなりLinuxなりIntelPC上で動くOSは全てですね。

http://ja.wikipedia.org/wiki/Pentium


なぜ、OSを実装しにくいと思われました?

id:witt

Pentiumは、チップとキャッシュ間ではハーバード・アーキテクチャ(HAと略す)ですが、CPUと主記憶間ではフォンノイマン・アーキテクチャ(FAと略す)ですよね。

用語の定義を正しく理解せずに、質問してしまったようです。正しくは次のような意味でした。混乱させてしまい、すいません。

「CPUと主記憶間でのHAは、OSを実装しにくいと思います。

# だから、μITRONでそのようなCPUは対応してなかったような。。。

それでも、あえてそのような実装をしたOSはありますか?」

そもそも、基本的に、HAはFAより高速です。ならば、チップとキャッシュ間だけでなく、チップとキャッシュと主記憶間をすべてHAに一本化した方が、両方を取り入れたアーキテクチャよりシンプルで高速なのではないかと思ったわけです。

しかし、Pentiumなどよく知られているCPUはそうではない。ならば、FAにはHAにはないメリットがあるのではないかと思ったわけです。それを考えたとき、FAは命令とデータを区別しないため、プロセス管理が容易なるのではないかと思いました。HAでプロセス管理をする場合、命令とデータを個別に管理する手間がかかって面倒だと思ったわけです。# たいした手間じゃないと言われればそれまでですが。。。

私には、HAの欠点がこれぐらいしか思いつかないのですが、これが欠点ではないとした場合、FAがこれだけ普及している理由が見つかりません。この点もあわせて、ご教授いただければ幸いです。

2008/01/11 11:24:15
id:Kumappus No.2

くまっぷす回答回数3784ベストアンサー獲得回数1852008/01/11 08:41:31

ポイント27pt

http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%BC%E3%83%90%E3%83%B...

別に命令用と記憶用のメモリが別バスにあるだけなんで、プログラミングモデルとしては普通のCPUとそれほど変わらないはずですが>ハーバード・アーキテクチャ。

(自己改変コードは書けない、かもしれないが)

(さらにCPU内部のキャッシュメモリのことを考えると、データキャッシュとコマンドキャッシュが分かれているものが大半なので

http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B...

すでにほとんどのCPUはハーバード・アーキテクチャだともいえます。)

実際DSPであるBlackfinにはいろいろOSがありますし、

http://www.unicoi.com/fusion_rtos/fusion_rtos_blackfin.htm

http://www.analog.com/Japanese/processors/epPressRelease/0,2458,...

http://www.analog.com/jp/press/0,2890,3%255F%255F127836,00.html

PICで動くOSを開発してるひともいますね。

http://www.picfun.com/picrosframe.html

wittさんがなぜハーバード・アーキテクチャだとOSが作りにくいと思われたか教えていただけるとうれしいです。ひょっとして仮想記憶サポートとかマルチユーザとかそういう観点?(OSといってもいろいろありますから)

id:witt

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

返信させてもらいたい内容は、hsadaさんへの返信と同じですので、そちらをご覧いただきたいと思います。

2008/01/11 11:27:08
id:kuakua No.3

kuakua回答回数135ベストアンサー獲得回数112008/01/12 00:40:16

ポイント26pt

ハーバードアーキテクチャの欠点は、実行コードの自己書換えがしにくい事くらいだと思いますが、

最近のCPUのアーキテクチャでは実行コードを書き換えないと行けないことは殆どないです。

またCのようなコンパイルすることが前提の高級言語では自己書換えをするコードは殆ど書きませんから現在のOSの殆どではハーバードアーキテクチャのCPUでOSを実装しにくいということは無いと考えます。

  

ハーバードアーキテクチャといってもCPUに入るまでは、RAMのアドレス空間を保護レイアで便宜的に分けているだけでハードウェア的にはフォンノイマンアーキテクチャですので、メモリモデル的に両者に違いはなくOSは同じコードで扱えます。

例外はPICやAVRなどに代表されるコード領域をフラッシュメモリで持つマイクロコントローラです。

こういうCPUではコード領域の書換えはRAMと違う特別な命令で行うようになっています。

  

また最近のCPUではキャッシュや多段パイプライン実行更にはμ命令の実装やマルチコア化が進んでいますので、最早フォンノイマンアーキテクチャを具現化するようなコードの書換えなどは大きな実行ペナルティとして足を引っ張るだけになってしまいますので、フォンノイマンアーキテクチャに特化したOSというのも書かれないと思います。

id:witt

おっしゃるとおり、ハーバードアーキテクチャの欠点はほとんどないのですね。

PICを知って初めてハーバードアーキテクチャを知り、フォンノイマンアーキテクチャでないことから、避けてたのですが、そう毛嫌いすることもないとわかりました。

ありがとうございます。

2008/01/13 00:07:57
  • id:cymneve
    ハーバードアーキテクチャとノイマン型コンピュータとが同格の言葉ではありません。
    DSP等で大量のデータをできるだけ早く処理する為に考えらたのがハーバードアーキテクチャであり
    基本的にはノイマン型のコンピュータに属します。
    データと命令の格納空間を分ける事で、プログラムの改変を防ぐとかのご利益はPICマイコンで宣伝されました。
    PICマイコンにOSを乗せるようなアプローチは安全かみそりで大根を刻もうとするのに等しい行為です。
  • id:witt
    ハーバードアーキテクチャ=自己書き換えできない、高速化されたフォンノイマンアーキテクチャ

    という感じですかね。

    PICにOSはオーバースペックで想定外であると。なるほど、そのとおりだと思います。
  • id:hsada
    RISCの場合全命令を1ワードで実行して高速処理するわけですが、PICの場合はさらに1ワードを命令数を格納するのに必要な最小ビット数(12Bit,16Bit等)にすることでH/Wを単純化したりメモリ効率を上げています。
    しかしデータ処理は12Bitなどは扱いにくいため8bitの倍数で処理します(内部レジスタ等)。


    そのため必然的にデータと命令が分離したハーバードアーキテクチャーが最適になります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません