Linux で PCIe のバージョンと速度を確認する方法

Linux で PCIe のバージョンと速度を確認する方法

PCIE には 4 つの異なる仕様があります。下の図でそのうちの 2 つを見てみましょう。

マザーボードのPCIスロットを確認する

# dmidecode | grep --color "PCI"

さまざまな PCIe バージョンに対応する伝送速度は次のとおりです。

転送速度には追加のスループットを提供しないオーバーヘッド ビットが含まれるため、転送速度は Gbps ではなく GT/s で表されます。
たとえば、PCIe 1.x および PCIe 2.x は 8b/10b エンコーディング スキームを使用するため、元のチャネル帯域幅の 20% (= 2/10) が占有されます。

GT/s —— ギガ転送/秒、つまり 1 秒あたりの送信回数。重点は、リンク幅などとは関連付けられていない可能性のある物理層通信プロトコルのレート属性を記述することにあります。

Gbps —— ギガビット/秒。 GT/s と Gbps の間には比例変換関係はありません。

PCIeスループット(利用可能な帯域幅)の計算方法:

スループット = 伝送速度 * コーディング方式

たとえば、PCI-e2.0 プロトコルは 5.0 GT/s をサポートしており、これは各レーンが 5G ビット/秒の伝送をサポートすることを意味します。ただし、これは PCIe 2.0 プロトコルの各レーンが 5Gbps の速度をサポートすることを意味するものではありません。

なぜそう言うのでしょうか? PCIe 2.0 物理層プロトコルは 8b/10b エンコーディング方式を使用するためです。 つまり、送信される 8 ビットごとに 10 ビットを送信する必要があり、余分な 2 ビットは上位層にとって意味のある情報ではありません。

そして、PCIe 2.0 プロトコルの各レーンでは、5 * 8 / 10 = 4 Gbps = 500 MB/s の速度がサポートされます。

PCIe 2.0 x8 チャネルを例にとると、x8 の使用可能な帯域幅は 4 * 8 = 32 Gbps = 4 GB/s になります。

PCI-e3.0 プロトコルは 8.0 GT/s をサポートしており、これは各レーンが 1 秒あたり 8G ビットの転送をサポートすることを意味します。

PCIe 3.0 物理層プロトコルは、128b/130b エンコーディング スキームを使用します。 つまり、送信される 128 ビットごとに 130 ビットを送信する必要があります。

そして、PCIe 3.0 プロトコルの各レーンでは、8 * 128 / 130 = 7.877 Gbps = 984.6 MB/s の速度がサポートされます。

PCIe 3.0 x16 チャネルの場合、x16 の使用可能な帯域幅は 7.877 * 16 = 126.031 Gbps = 15.754 GB/s です。

Linux で PCI-E バスが Gen(世代) 1、Gen2、または新しい Gen3 を使用しているかどうかを確認するにはどうすればよいですか?
#lspci は現在のシステム内のすべてのデバイスを表示できます。ただし、どの世代の PCI-E バスが使用されているかは確認できないようです。

ルート@XXX# lspci 
00:00.0 ホスト ブリッジ: Intel Corporation Haswell DRAM コントローラー (rev 06)
00:01.0 PCI ブリッジ: Intel Corporation Haswell PCI Express x16 コントローラー (rev 06)
00:01.1 PCI ブリッジ: Intel Corporation Haswell PCI Express x8 コントローラー (rev 06)
00:02.0 VGA 互換コントローラ: Intel Corporation Haswell 統合グラフィックス コントローラ (rev 06)
00:03.0 オーディオデバイス: Intel Corporation Haswell HD オーディオ コントローラー (rev 06)
00:14.0 USB コントローラ: Intel Corporation Lynx Point USB xHCI ホスト コントローラ (rev 05)
00:16.0 通信コントローラ: Intel Corporation Lynx Point MEI コントローラ #1 (rev 04)
00:1a.0 USB コントローラ: Intel Corporation Lynx Point USB 拡張ホスト コントローラ #2 (rev 05)
00:1c.0 PCI ブリッジ: Intel Corporation Lynx Point PCI Express ルート ポート #1 (rev d5)
00:1c.4 PCI ブリッジ: Intel Corporation Lynx Point PCI Express ルート ポート #5 (rev d5)
00:1c.5 PCI ブリッジ: Intel Corporation Lynx Point PCI Express ルート ポート #6 (rev d5)
00:1d.0 USB コントローラ: Intel Corporation Lynx Point USB 拡張ホスト コントローラ #1 (rev 05)
00:1f.0 ISA ブリッジ: Intel Corporation Lynx Point LPC コントローラ (rev 05)
00:1f.2 IDE インターフェース: Intel Corporation Lynx Point 4 ポート SATA コントローラー 1 [IDE モード] (rev 05)
00:1f.3 SMBus: Intel Corporation Lynx Point SMBus コントローラ (rev 05)
00:1f.6 信号処理コントローラ: Intel Corporation Lynx Point Thermal Management Controller (rev 05)
01:00.0 PCI ブリッジ: PLX Technology, Inc. 不明なデバイス 8724 (rev ca)
02:01.0 PCI ブリッジ: PLX Technology, Inc. 不明なデバイス 8724 (rev ca)
02:02.0 PCI ブリッジ: PLX Technology, Inc. 不明なデバイス 8724 (rev ca)
02:08.0 PCI ブリッジ: PLX Technology, Inc. 不明なデバイス 8724 (rev ca)
02:09.0 PCI ブリッジ: PLX Technology, Inc. 不明なデバイス 8724 (rev ca)
03:00.0 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
03:00.1 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
03:00.2 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
03:00.3 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
04:00.0 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
04:00.1 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
04:00.2 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
04:00.3 イーサネット コントローラ: Intel Corporation I350 ギガビット ネットワーク接続 (rev 01)
06:00.0 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
06:00.1 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
07:00.0 PCI ブリッジ: PLX Technology, Inc. PEX 8732 32 レーン、8 ポート PCI Express Gen 3 (8.0 GT/s) スイッチ (rev ca)
08:01.0 PCI ブリッジ: PLX Technology, Inc. PEX 8732 32 レーン、8 ポート PCI Express Gen 3 (8.0 GT/s) スイッチ (rev ca)
08:08.0 PCI ブリッジ: PLX Technology, Inc. PEX 8732 32 レーン、8 ポート PCI Express Gen 3 (8.0 GT/s) スイッチ (rev ca)
08:09.0 PCI ブリッジ: PLX Technology, Inc. PEX 8732 32 レーン、8 ポート PCI Express Gen 3 (8.0 GT/s) スイッチ (rev ca)
08:0a.0 PCI ブリッジ: PLX Technology, Inc. PEX 8732 32 レーン、8 ポート PCI Express Gen 3 (8.0 GT/s) スイッチ (rev ca)
09:00.0 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
09:00.1 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
0e:00.0 イーサネット コントローラ: Intel Corporation I210 ギガビット ネットワーク接続 (rev 03)
0f:00.0 イーサネット コントローラ: Intel Corporation I210 ギガビット ネットワーク接続 (rev 03)
ルート@XXX#
ルート@XXX# lspci -tv
-[0000:00]-+-00.0 Intel Corporation Haswell DRAM コントローラ
   +-01.0-[0000:01-06]----00.0-[0000:02-06]--+-01.0-[0000:03]--+-00.0 Intel Corporation I350 ギガビット ネットワーク接続
   | | +-00.1 Intel Corporation I350 ギガビット ネットワーク接続
   | | +-00.2 Intel Corporation I350 ギガビット ネットワーク接続
   | | \-00.3 Intel Corporation I350 ギガビット ネットワーク接続
   | +-02.0-[0000:04]--+-00.0 Intel Corporation I350 ギガビット ネットワーク接続
   | | +-00.1 Intel Corporation I350 ギガビット ネットワーク接続
   | | +-00.2 Intel Corporation I350 ギガビット ネットワーク接続
   | | \-00.3 Intel Corporation I350 ギガビット ネットワーク接続
   | +-08.0-[0000:05]--
   | \-09.0-[0000:06]--+-00.0 Intel Corporation 82599EB 10ギガビットSFI/SFP+ネットワーク接続
   | \-00.1 Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続
   +-01.1-[0000:07-0c]----00.0-[0000:08-0c]--+-01.0-[0000:09]--+-00.0 Intel Corporation 82599EB 10ギガビットSFI/SFP+ネットワーク接続
   | | \-00.1 Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続
   | +-08.0-[0000:0a]--
   | +-09.0-[0000:0b]--
   | \-0a.0-[0000:0c]--
   +-02.0 Intel Corporation Haswell 統合グラフィックス コントローラ
   +-03.0 Intel Corporation Haswell HD オーディオ コントローラー
   +-14.0 Intel Corporation Lynx Point USB xHCI ホスト コントローラー
   +-16.0 Intel Corporation Lynx Point MEI コントローラー #1
   +-1a.0 Intel Corporation Lynx Point USB 拡張ホスト コントローラ #2
   +-1c.0-[0000:0d]--
   +-1c.4-[0000:0e]----00.0 Intel Corporation I210 ギガビット ネットワーク接続
   +-1c.5-[0000:0f]----00.0 Intel Corporation I210 ギガビット ネットワーク接続
   +-1d.0 Intel Corporation Lynx Point USB 拡張ホスト コントローラ #1
   +-1f.0 Intel Corporation Lynx Point LPC コントローラー
   +-1f.2 Intel Corporation Lynx Point 4ポートSATAコントローラ1 [IDEモード]
   +-1f.3 Intel Corporation Lynx Point SMBus コントローラ
   \-1f.6 Intel Corporation Lynx Point 熱管理コントローラ
ルート@XXX#

不明なデバイスがある場合は、/usr/local/share/pci.ids.gz を更新する必要があります。更新方法については、http://benjr.tw/node/88 を参照してください。

まず、Inetl 82599EB ネットワーク カードの識別番号を照会します (バス:デバイス.機能)

root@XXX# lspci | grep --color 82599 
06:00.0 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
06:00.1 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
09:00.0 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
09:00.1 イーサネット コントローラ: Intel Corporation 82599EB 10 ギガビット SFI/SFP+ ネットワーク接続 (rev 01)
ルート@XXX#

PCI では、デバイスは識別値として 1.「バス番号」、2.「デバイス番号」、3.「機能番号」の 3 つの番号を使用します。

したがって、現在の時刻 06:00.0 は、バス番号 = 06、デバイス番号 = 00、機能 = 0 を意味します。

これら 3 つの数字が結合されて 16 ビットの識別コードになります。

バス番号 8ビット 2^8 最大256個のバスを接続可能(0~ff)

デバイス番号5ビット2^5 最大32個のデバイス(0~1f)を接続でき、

機能(機能番号) 3ビット 2^3 各デバイスは最大8つの機能(0〜7)を持つことができます。

#lspci の詳細については、http://benjr.tw/node/543 をご覧ください。

次にベンダーIDとデバイスIDを確認します

root@XXX# lspci -n | grep -i 06:00.0
06:00.0 0200: 8086:10fb (リビジョン01)
ルート@XXX#

Linux では、デバイスを表すためにクラス ID + ベンダー ID + デバイス ID を使用します。たとえば、0200: 8086:10fb で表されるデバイス名は (クラス ID = 0200、ベンダー ID = 8086、デバイス ID = 10fb) です。

最後に、指定されたPCIデバイスの帯域幅を確認します。

root@XXX# lspci -n -d 8086:10fb -vvv | grep --color 幅
  LnkCap: ポート #9、速度 5GT/s、幅 x8、ASPM L0s、レイテンシ L0 <1us、L1 <8us
  LnkSta: 速度 5GT/s、幅 x8、TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
  LnkCap: ポート #9、速度 5GT/s、幅 x8、ASPM L0s、レイテンシ L0 <1us、L1 <8us
  LnkSta: 速度 5GT/s、幅 x8、TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
  LnkCap: ポート #1、速度 5GT/s、幅 x8、ASPM L0s、レイテンシ L0 <1us、L1 <8us
  LnkSta: 速度 5GT/s、幅 x8、TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
  LnkCap: ポート #1、速度 5GT/s、幅 x8、ASPM L0s、レイテンシ L0 <1us、L1 <8us
  LnkSta: 速度 5GT/s、幅 x8、TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
ルート@XXX# 

LnkSta: システムが提供する現在の速度は PCI-Express 2.0 (5GT/s) です

LnkCap: デバイスが現在使用している速度。

LnkSta と LnkCap の速度は異なる場合があります。通常、システムは PCI Express 3.0 を提供しますが、デバイスは 2.0 を使用します。

以上が今回ご紹介した関連知識ポイントとなります。123WORDPRESS.COMをご活用いただき、誠にありがとうございます。

<<:  77.9K の GitHub リポジトリを持つ Axios プロジェクト: 学ぶ価値のあることは何でしょうか?

>>:  SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

推薦する

記事では、js を使用して弾幕効果を実現する方法を説明します

目次新しい HTML ファイルを作成します。初期テンプレートを作成するHTML の追加CSS パディ...

Ubuntu 18.04 は pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib をインストールします

1. 現在、Pythonのバージョン管理ツールは数多く存在します。その中でも比較的使いやすいのがPy...

CSSカスケーディングメカニズムについての簡単な説明

CSS にカスケード メカニズムがあるのはなぜですか? CSS では、同じ要素の特定のプロパティに同...

TypeScriptのインデックスシグネチャの理解に関する簡単な説明

目次1. インデックス署名とは何ですか? 2. インデックス署名構文3. インデックス署名に関する注...

MySql COALESCE 関数の使用コード例

COALESCE は、各パラメータ式 (expression_1、expression_2、...、...

dockerにros2をインストールするための詳細な手順

目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...

実務経験7年のフロントエンドスーパーバイザーによる経験共有

今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...

Vue3 シングルファイルコンポーネントのスタイル機能の詳細な説明

目次スタイルスコープスタイルモジュール状態駆動型動的CSS要約するスタイルスコープ注意事項:スタイル...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

実用的な MySQL + PostgreSQL バッチ挿入更新 insertOrUpdate

目次1. 百度百科事典1. MySQL 2. PostgreSQL 3. MySQL に対する Po...

MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法を参考ま...

Linuxの読み取りコマンドの使用

1. コマンドの紹介read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプショ...

JS で CSS 変数を使用する方法

JS で CSS 変数を使用する方法:export キーワードを使用して、js オブジェクトを le...

Centos7 に DAMO データベースをインストールするチュートリアル

1. 準備Linux オペレーティング システムをインストールした後、ここで Linux 7 を選択...

MySql 8.0 と対応するドライバー パッケージの一致に関する注意事項

MySql 8.0 対応ドライバパッケージのマッチングMySql データベースをバージョン 8.0 ...