質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

409閲覧

最近はPCIeが使われているのにバスはPCIバス?

toshiyan

総合スコア74

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/08/18 15:11

題名のとおりなのですが、PCIeが普及しているのに、バスは相変わらず「PCIバス」と呼ばれているという認識であっているでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikadzuchi

2018/08/18 16:18

他の質問からの続きと見受けられます。単体で見て意味がわからないので新しい質問を立てず古いものに追記した方がよいでしょう。
toshiyan

2018/08/18 16:21

追記すると返信される可能性は下がるかなと思いまして…皆さんやはりベストアンサーを欲していると思いますし…。分けたらその分だけベストアンサーの可能性は上がりますし…。
pepperleaf

2018/08/19 07:22

類似問題で連投されても、どれに回答すべきか、混乱するし、ハードウェアがらみは、回答できる人が少ないから、さらに回答付きにくいと思います。
guest

回答3

0

ベストアンサー

いいえ、物理的には「PCI Express バス」または「PCIeバス」(以下、PCI ExpressはPCIeと略した表現を用いますが、正式な名称は常にPCI Expressです)と言うべきです。ただ、古い文献は「PCIバス」のままですし、PCIeはPCIの後継であるため、そのまま置き換えて読み取れる場合もあります。そのため、「PCIバス」と「PCIeバス」の両方を指して「PCIバス」と書いている文献も見られます。しかし、現在のパソコンにおいて「PCIバス」と言うのは正確とは言えません。

これまでの質問から見ると、PCIスロットが存在しないパソコンではlspciをみたら、PCIeスロットに接続しているデバイス以外にも各コントローラーまで現れたので、混乱したことが始まりだと思います。一つ一つ説明します。

「バス」とは?

本来、「バス」というのはCPU、メモリ、各コントローラー、各デバイスを繋ぐ「経路」の事です。「バス型トポロジー」という構成を取るため、単に「バス」と言われてきました。「PCIバス」や「PCIeバス」もこの経路の事を指します。あのボードを突き刺す部分は何かというと「スロット」です。「バス」に拡張機器を繋げるためのもので、正確には「PCIバススロット」や「PCIeバススロット」となります。しかし、パソコンを組み立てる場合、マザーボードに組み込まれた経路よりも、スロットがどの規格のものかの方が関心があります。ですので、「このスロットはPCIバスだ」というようにスロット部分が抜け落ちた表現でも通じる場合が多く、単純に「PCIバス」と言ったときは「PCIバススロット」のことを指すことがよくあったと言うことになります。スロットには他に、ISAバス、Cバス、AGPと異なる規格があったため、それと区別できれば良いという程度だったこともあります。

「PCIeバス」の下には何があるのか?

PCIeを採用したマザーボードでは、root complexで各デバイスを繋ぐという方式をとっています(リンク先の絵がわかりやすいでしょう)。Windowsのデバイスマネージャーを見てみるともっとイメージがつかみやすいです。デバイスマネージャーを立ち上げ、「表示」を「デバイス(接続別)」にしてみてください。PCによって細部は異なりますが、「ACPI x64 ベース PC」の下の「Microsoft ACPI-Compliant System」の下に「PCI Express ルート コンプレックス」があります。このルートコンプレックスからほとんど全ての機器が接続されていることがわかると思います。

どのデバイスがどのように繋がって見えているのかはLinuxであっても同じです。つまり、マウスもキーボードもHDDもグラボもNICもすべてPCIeバスで繋がっていると言うことです。

lspciは何を表示するのか?

では、lspciは何を表示しているのでしょうか?lspciのmanを読んでも「PCIバス」のデバイスを表示としかありません。しかし、実際見えるのは「PCIeバス」のデバイスです。

Linuxでは、新しい規格が現れた場合、既存の規格と互換性があれば、既存の規格のものとしてデバイスを認識するようにする場合があります。例えば、SATA接続のHDDは"/dev/sda"等と認識しますが、これは本来SCSI接続のHDDに割り当てられるデバイス名です。SATAとSCSIはその接続方式に互換性は全くなく、後継というわけでもありません。しかし、SATAデバイスもSCSIデバイスと同じように扱った方が、接続方式の違いに対応したドライバー部分の置き換えだけで対応が出来、素早く安定したサポートができるとなり、SCSIデバイスのように扱うようにしました。

PCIeバスも同様です。PCIとPCIeは全く異なる通信方式ですが、PCIeはPCIの後継であり、それが提供する物も同じでした。ですので、PCIeもPCIであるかのように認識するようにし、lspciでも表示できるようにしたのです。あとはおわかりですね。「PCIeバス」の下には各コントローラもあるのでした。だから、それらのコントローラーもlspciで表示されることになります。

これらはユーザーから見えた部分だけであることに注意してください。カーネルのドライバーは全く別の物でありますし、カーネル自体もPCIとPCIeは別の物として認識しています(dmesgで何として認識したかは確認できます)。しかし、OS上のソフトウェアからはこれらを区別する必要はありません。ソフトウェアにとっての関心はそのデバイスが存在するのか、どうやったらそのデバイスにアクセス可能かだけです。ですので、ユーザーから見えるインターフェースとしては区別を設けず、いずれであってもlspciで確認できるようにしたと言うことです。もし、別々の物として用意されていたら、新たにlspcieのようなコマンドが必要になったことでしょう。それはユーザーに混乱を生じさせるばかりか、開発側も二つの物を保守するという面倒を強いらてしまいます。

投稿2018/08/19 02:30

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/08/19 05:44

なるほど。今時の機器はほぼPCIeバス上でデータのやり取りをしているけれど、古い文献や互換性のためにPCIバスと表現することがあるのですね。それが私の混乱の要因のうちの一つだったんですね。色々察して頂いてありがとうございます! ソフトウェアから見た場合、PCIもPCIeもそれほど違わないのですね。lspciというのはソフトウェア寄りの情報を表示するものなので、PCIとPCIeの違いが明確には表れないのですね。色々と教えて頂いて感謝です。 一つ疑問があるのですが、ACPIというのは電源の規格だそうですが、ACPIの下にPCI Express ルートコンプレックスが存在する理由は、ただ単にPCI Express ルートコンプレックスに電源が供給されている、程度の認識でよろしいのでしょうか?僕のイメージでは、てっぺんにCPUがあり、その下にPCI Express ルートコンプレックスがあるような感じなのですが…。
toshiyan

2018/08/19 05:45

てっぺんにあるのがCPUではなくMicrosoft ACPI-Compliant Systemなのが気に入りません…。
raccy

2018/08/19 07:37

デバイスマネージャーはOSがどのようにデバイスを認識しているかです。OSから見ればCPUは演算ユニットの一つであって、コンピューターの中枢という訳ではありません。細かいところはOSによって違いがありますので、一概には言えません。 「Microsoft ACPI-Compliant System」はACPI準拠のなんらかのデバイスであり、Microsoft製品が使われているわけではありません。実際はマザーボード上のACPI司るチップです。準拠している物であれば互換性があるため、個別にドライバーを用意せずに、汎用ドライバーで管理しています。汎用ドライバーを作っているのはMicrosoftなので「Microsoft ACPI-Compliant System」と出ると言うだけです。
toshiyan

2018/08/19 10:21

なるほど。ACPIを扱うための汎用デバイスドライバが「Microsoft ACPI-Compliant System」なのですね。ハードウェア構成的にはマザーボードがてっぺんにあるのは自然か…。 質問に答えてくださってありがとうございます!
guest

0

過去からのハードウエア資産を活用する時に、最低点はPCIでそれ以上のパフォーマンスを期待するにはPCIeを使用すると考えては?基本的にそれらはCPUに接続されたブリッジとドライバーにより各OSは使用可能(特別なソフトを除いて。特別とは’専用の制御法を使ったソフトで移植性とか汎用性は二の次の専用ソフトと仮定して’。
過去のソフト資産の書き換えを考え、また’枯れている(ソフトのバグが)’を使用する場合の時間的なロスを最小にと考えると未だPCIを使用は普通では?

投稿2018/08/18 15:46

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/08/18 15:49

複雑な日本語ですね><
MasahikoHirata

2018/08/18 15:57

実例として私が使用しているDELL SC420サーバーでPCIeの画面ボードがPCIex1のもので、入手時、PCIeX1の画面アクセラレーターが存在しなかったので、PCIeX1になるようにのこぎりでPCIeのX1に挿入できるように加工して現在まで使用しています。X1~X16などはハードのブリッジとOS(BIOS)の認識を確認しながら設定しました。よってPCIeは存在しています(小保方さんの記者会見みたい)
guest

0

呼称の話?PCIeはマザーとカード間の転送仕様をシリアル化しただけのバスだったと思います。
差し込むカード側はそれまでのPCIと殆ど同じで、コネクタ部分がPCIのパラレルかPCIeのシリアルかという違いだけだったと思います。

投稿2018/08/19 02:36

efcode

総合スコア422

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/08/19 05:49

思うという言葉を使い過ぎでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問