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 判定条件の使用法の説明

推薦する

mysql zipファイルのインストールチュートリアル

この記事では、参考までにMySQL zipファイルをインストールする具体的な方法を紹介します。具体的...

CentOS7 システムでスワップを増やす方法の例

序文スワップは、ディスク上にある「仮想メモリ」の一部である特殊なファイル (またはパーティション) ...

MySQL 5.7.18 Green Edition のダウンロードとインストールのチュートリアル

この記事では、MySQL 5.7.18のグリーンバージョンをダウンロードしてインストールする詳細な手...

MySQL フルテキスト検索の中国語ソリューションとサンプルコード

MySQL 全文検索中国語ソリューション最近、会社のプロジェクトで、データベースで中国語を検索する機...

MySQLデータベースバックアップのさまざまな実装方法の概要

この記事では、MySQL データベースのバックアップを実装するさまざまな方法について説明します。ご参...

CSS フォントの新しい使い方: カラーフォントの実装

デザイナーが特別なイベントのタイトルフォントとして以下のフォントを使用したい場合はどうすればよいでし...

タブバーのいくつかの実装方法(推奨)

タブ: カテゴリ + 説明タグバー: カテゴリ => ユーザーに現在地と目的地を知らせる1. ...

Linux の MariaDB データベースについて

目次Linux の MariaDB データベースについて1. データベースとは何ですか? 2. デー...

Reactにおけるコンポーネント通信の詳細な説明

目次親コンポーネントは子コンポーネントと通信します子コンポーネントは親コンポーネントと通信しますコン...

Tomcatサーバーのセキュリティ設定方法

Tomcat は、Java Community Process を通じて Sun が開発した、広く使...

Alpine Dockerイメージフォント問題解決操作

1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。 2....

MySQLデータの同時更新を処理する方法

UPDATE はロックしますか?以下のような場合、SQL文はロックされますか? テーブル1を更新しま...

Linux の daily_routine サンプルコードの詳細な説明

まずサンプルコードを見てみましょう: #/bin/bash cal 日付 -u echo "...

MySQL 8.0.12 のインストールと環境変数の設定チュートリアル (Win10 の場合)

Windows 10 プラットフォームでの MySQL のインストール、構成、起動、ログイン、環境...

Vueでパスワードの表示と非表示機能を実装するアイデアを詳しく解説

効果: アイデア:入力タイプ属性を使用して、タイプ値がテキストの場合はパスワードを表示し、タイプ値が...