題名のとおりなのですが、PCIeが普及しているのに、バスは相変わらず「PCIバス」と呼ばれているという認識であっているでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 16:21
2018/08/19 07:22
回答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
総合スコア21735
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/19 05:44
2018/08/19 05:45
2018/08/19 07:37
2018/08/19 10:21
0
過去からのハードウエア資産を活用する時に、最低点はPCIでそれ以上のパフォーマンスを期待するにはPCIeを使用すると考えては?基本的にそれらはCPUに接続されたブリッジとドライバーにより各OSは使用可能(特別なソフトを除いて。特別とは’専用の制御法を使ったソフトで移植性とか汎用性は二の次の専用ソフトと仮定して’。
過去のソフト資産の書き換えを考え、また’枯れている(ソフトのバグが)’を使用する場合の時間的なロスを最小にと考えると未だPCIを使用は普通では?
投稿2018/08/18 15:46
総合スコア3747
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 15:49
2018/08/18 15:57
2018/08/18 16:07
2018/08/19 07:47
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。