人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: witt
●カテゴリ:コンピュータ
✍キーワード:CPU OS ハーバード・アーキテクチャ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hsada
●27ポイント

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

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


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

◎質問者からの返答

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

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

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

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

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

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

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

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


2 ● くまっぷす
●27ポイント

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といってもいろいろありますから)

◎質問者からの返答

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

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


3 ● kuakua
●26ポイント

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

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

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

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

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

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

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

◎質問者からの返答

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

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

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ