<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>BIOS on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/bios/</link>
        <description>Recent content in BIOS on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 02 May 2026 08:29:32 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/bios/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>详解 PCIe 通道拆分 bifurcation 的各种方式</title>
        <link>https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/</link>
        <pubDate>Sat, 02 May 2026 08:29:32 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/</guid>
        <description>&lt;p&gt;PCIe bifurcation 通常被翻译为 PCIe 通道拆分或分叉。它解决的问题很直接：一组来自 CPU 或芯片组的 PCIe Lane，到底应该作为一个宽链路使用，还是拆成多个窄链路分给不同设备。&lt;/p&gt;
&lt;p&gt;例如，一组 16 条 PCIe Lane 可以配置成 &lt;code&gt;x16&lt;/code&gt;，也可以拆成 &lt;code&gt;x8+x8&lt;/code&gt;，或者拆成 &lt;code&gt;x8+x4+x4&lt;/code&gt;。这就是主板上“一个显卡插槽跑满 x16”“两个显卡插槽各跑 x8”“一条显卡加两个 CPU 直连 M.2”的底层基础。&lt;/p&gt;
&lt;h2 id=&#34;pcie-lane-是什么&#34;&gt;PCIe Lane 是什么
&lt;/h2&gt;&lt;p&gt;PCIe 是串行总线。每个 Lane 由一组差分信号组成，可以理解为一条独立的高速数据通道。多个 Lane 绑定在一起后，就形成了更宽的链路：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/pcie-lane-link.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PCIe Lane 与链路宽度示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;链路宽度&lt;/th&gt;
          &lt;th&gt;常见用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;网卡、声卡、采集卡、USB 扩展卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;NVMe SSD、部分高速扩展卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;第二条显卡插槽、RAID 卡、网卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;主显卡插槽&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;PCIe 链路宽度通常按 2 的幂增长，所以常见的是 &lt;code&gt;x1&lt;/code&gt;、&lt;code&gt;x2&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;、&lt;code&gt;x8&lt;/code&gt;、&lt;code&gt;x16&lt;/code&gt;。消费级主板上最常见的是 &lt;code&gt;x1&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;、&lt;code&gt;x8&lt;/code&gt; 和 &lt;code&gt;x16&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;需要注意的是，物理插槽长度不等于实际链路宽度。一个看起来是 &lt;code&gt;x16&lt;/code&gt; 的长插槽，实际可能只接了 &lt;code&gt;x4&lt;/code&gt; 或 &lt;code&gt;x8&lt;/code&gt;；一个 M.2 插槽通常是 &lt;code&gt;x4&lt;/code&gt;，但它也要看是接 CPU 还是接芯片组。&lt;/p&gt;
&lt;h2 id=&#34;bifurcation-在什么时候发生&#34;&gt;bifurcation 在什么时候发生
&lt;/h2&gt;&lt;p&gt;PCIe 设备初始化大致可以分成几个阶段：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确定 PCIe bifurcation，也就是决定通道如何拆分。&lt;/li&gt;
&lt;li&gt;Root Port Training，训练链路速度和宽度。&lt;/li&gt;
&lt;li&gt;PCI 枚举，让系统发现各个设备。&lt;/li&gt;
&lt;li&gt;设置 PCIe 相关特性，例如电源管理、错误报告和超时控制。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;bifurcation 发生得很早。因为系统必须先知道一组 Lane 是一个 &lt;code&gt;x16&lt;/code&gt;，还是两个 &lt;code&gt;x8&lt;/code&gt;，或者几个 &lt;code&gt;x4&lt;/code&gt;，后续 Training 和设备枚举才知道该按几个 Root Port 去处理。&lt;/p&gt;
&lt;p&gt;如果 bifurcation 设置不对，常见现象包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;扩展卡只识别一块 SSD。&lt;/li&gt;
&lt;li&gt;插了转接卡后设备完全不出现。&lt;/li&gt;
&lt;li&gt;显卡链路宽度从 &lt;code&gt;x16&lt;/code&gt; 变成 &lt;code&gt;x8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;BIOS 里看不到想要的拆分选项。&lt;/li&gt;
&lt;li&gt;主板说明书写着支持某种拆分，但只在特定插槽或特定 CPU 下生效。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;方式一hard-strap&#34;&gt;方式一：Hard Strap
&lt;/h2&gt;&lt;p&gt;Hard Strap 是硬件方式。主板通过固定引脚、电阻上下拉或线路连接，把 PCIe 拆分方式在硬件层面确定下来。&lt;/p&gt;
&lt;p&gt;这种方式常见于消费级桌面平台的 CPU 直连 PCIe 通道。例如 CPU 提供一组 &lt;code&gt;x16&lt;/code&gt; Lane，主板厂商可以按产品定位设计成：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;配置&lt;/th&gt;
          &lt;th&gt;典型用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;一条主显卡插槽&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8+x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;两条显卡插槽&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8+x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;一条显卡插槽加两个 CPU 直连 M.2&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Hard Strap 的特点是稳定、简单、成本低。主板厂商在设计 PCB 时就确定了通道走向，用户后期通常不能在 BIOS 里自由改。&lt;/p&gt;
&lt;p&gt;它的缺点也很明显：灵活性差。一旦主板布线定下来，除非重新设计 PCB，否则不能把一个只做 &lt;code&gt;x16&lt;/code&gt; 的插槽变成 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;。所以很多消费级主板即使 CPU 理论上支持拆分，BIOS 里也未必给出相关选项。&lt;/p&gt;
&lt;p&gt;对普通用户来说，Hard Strap 最直观的影响是：主板能不能支持 PCIe 拆分，首先看主板设计，不是只看 CPU 参数。
&lt;img src=&#34;https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/image.png&#34;
	width=&#34;1008&#34;
	height=&#34;506&#34;
	srcset=&#34;https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/image_hu_9da109a68bf2083b.png 480w, https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/image_hu_ca9e4232e5981219.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;12代CPU的bifurcation&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;199&#34;
		data-flex-basis=&#34;478px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;方式二soft-strap&#34;&gt;方式二：Soft Strap
&lt;/h2&gt;&lt;p&gt;Soft Strap 是软件配置方式，但它并不一定等于 BIOS 菜单里的用户选项。很多时候，这类配置写在 BIOS 镜像或平台描述区域中，由主板厂商在出厂前设置好。&lt;/p&gt;
&lt;p&gt;芯片组下面的 PCIe Root Port 经常采用类似方式。主板厂商根据实际布线，把某些 Root Port 配成独立 &lt;code&gt;x1&lt;/code&gt;，或者组合成 &lt;code&gt;x2&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;。这些设置通常在 BIOS 镜像中固定，刷入后随平台初始化生效。&lt;/p&gt;
&lt;p&gt;Soft Strap 的特点是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不需要改 PCB 就能调整部分配置。&lt;/li&gt;
&lt;li&gt;配置通常在早期初始化阶段生效。&lt;/li&gt;
&lt;li&gt;修改后一般需要重新刷写 BIOS 或至少重启。&lt;/li&gt;
&lt;li&gt;用户界面里不一定暴露相关选项。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这也是为什么有些主板的硬件看起来接线类似，但不同 BIOS 版本或不同厂商设置下，PCIe 插槽、M.2 插槽和板载设备的分配方式会有差异。&lt;/p&gt;
&lt;p&gt;不过，Soft Strap 仍然不是万能的。它只能在硬件布线允许的范围内调整，不能凭空把没有连接到某个插槽的 Lane 分给它。&lt;/p&gt;
&lt;h2 id=&#34;方式三wait-for-bios&#34;&gt;方式三：Wait For BIOS
&lt;/h2&gt;&lt;p&gt;Wait For BIOS 是更灵活的方式。平台在 PCIe Training 之前等待 BIOS 写入相关寄存器，由 BIOS 决定某组 Lane 最终拆成什么宽度。&lt;/p&gt;
&lt;p&gt;这种方式常见于可扩展性更强的平台，例如工作站、服务器或部分 Xeon 平台。因为这些平台提供的 Lane 数量更多，插槽组合也更复杂，如果全部靠硬件固定，会大幅降低主板适配能力。&lt;/p&gt;
&lt;p&gt;Wait For BIOS 的优势是灵活：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;BIOS 可以提供 &lt;code&gt;x16&lt;/code&gt;、&lt;code&gt;x8+x8&lt;/code&gt;、&lt;code&gt;x8+x4+x4&lt;/code&gt;、&lt;code&gt;x4+x4+x4+x4&lt;/code&gt; 等选项。&lt;/li&gt;
&lt;li&gt;同一张主板可以适配不同扩展卡。&lt;/li&gt;
&lt;li&gt;更适合多 NVMe 转接卡、PCIe 背板、服务器 Riser 卡等场景。&lt;/li&gt;
&lt;li&gt;用户可以根据设备数量和带宽需求调整。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它的代价是平台和 BIOS 必须配合。CPU 或芯片组要支持对应拆分，主板布线要符合拆分方式，BIOS 也要把选项做出来。缺少其中任何一环，用户都可能看不到可用的 bifurcation 设置。&lt;/p&gt;
&lt;h2 id=&#34;常见拆分组合&#34;&gt;常见拆分组合
&lt;/h2&gt;&lt;p&gt;不同平台支持的组合不一样，但常见拆分方式大致如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/pcie-bifurcation-modes.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PCIe bifurcation 常见拆分方式&#34;
	
	
&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;原始链路&lt;/th&gt;
          &lt;th&gt;常见拆分&lt;/th&gt;
          &lt;th&gt;典型用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;单显卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x8+x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;双显卡、显卡加高速扩展卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x8+x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;显卡加两块 NVMe SSD&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x16&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x4+x4+x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;四盘 NVMe 转接卡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x8&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x4+x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;双盘 NVMe、双口高速扩展&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;x4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;x2+x2&lt;/code&gt; 或多个 &lt;code&gt;x1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;较少见，取决于平台支持&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 DIY 场景里，最常见的需求是把一个 &lt;code&gt;x16&lt;/code&gt; 插槽拆成 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;，配合四盘 M.2 转接卡使用。这里要特别注意：便宜的无芯片转接卡只是把插槽物理转接成多个 M.2，它本身不会负责拆分 PCIe 通道。&lt;/p&gt;
&lt;p&gt;如果主板不支持 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;，这种转接卡通常只能识别第一块 SSD。想在不支持 bifurcation 的主板上使用多盘卡，需要带 PCIe Switch 芯片的扩展卡，但这类卡成本高得多。&lt;/p&gt;
&lt;h2 id=&#34;bifurcation-和-pcie-switch-的区别&#34;&gt;bifurcation 和 PCIe Switch 的区别
&lt;/h2&gt;&lt;p&gt;bifurcation 是把上游已有的 Lane 拆给多个下游端口。它不增加 Lane 数，只改变分配方式。&lt;/p&gt;
&lt;p&gt;PCIe Switch 则像一个 PCIe 交换芯片。它可以把一个上游链路连接到多个下游设备，让系统看到更多设备。它也不凭空增加上游带宽，但可以解决“主板不支持通道拆分仍要接多设备”的问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.knightli.com/2026/05/02/pcie-bifurcation-modes/pcie-switch-vs-bifurcation.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PCIe bifurcation 与 PCIe Switch 对比&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;两者差异可以这样理解：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;是否需要主板支持 bifurcation&lt;/th&gt;
          &lt;th&gt;成本&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;无芯片 M.2 转接卡&lt;/td&gt;
          &lt;td&gt;需要&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;主板支持 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;带 PCIe Switch 的扩展卡&lt;/td&gt;
          &lt;td&gt;不一定需要&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;主板不支持拆分但需要多设备&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以买多 M.2 扩展卡前，要先看主板 BIOS 是否支持对应拆分。如果只写“支持 PCIe x16 插槽”，并不代表它支持四盘同时识别。&lt;/p&gt;
&lt;h2 id=&#34;选购和排查建议&#34;&gt;选购和排查建议
&lt;/h2&gt;&lt;p&gt;如果你想使用 PCIe bifurcation，可以按这个顺序确认：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查 CPU 或平台是否支持目标拆分方式。&lt;/li&gt;
&lt;li&gt;查主板说明书，看目标插槽是否支持 &lt;code&gt;x8+x8&lt;/code&gt;、&lt;code&gt;x8+x4+x4&lt;/code&gt; 或 &lt;code&gt;x4+x4+x4+x4&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;进入 BIOS，确认是否有 PCIe bifurcation、PCIe lane configuration、slot configuration 之类选项。&lt;/li&gt;
&lt;li&gt;确认扩展卡是无芯片转接卡，还是带 PCIe Switch 的卡。&lt;/li&gt;
&lt;li&gt;确认设备插满后是否会和 M.2、SATA、板载网卡等共享通道。&lt;/li&gt;
&lt;li&gt;进系统后用工具查看实际链路宽度和设备枚举情况。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果扩展卡只能识别一块盘，优先检查 BIOS 拆分选项。如果 BIOS 没有相关设置，大概率不是驱动问题，而是主板没有把这组 Lane 拆给多个设备。&lt;/p&gt;
&lt;p&gt;如果设备都能识别，但速度不对，再检查链路 Training。线材、转接卡质量、插槽走线、PCIe 版本和设备兼容性，都可能导致链路从 Gen4 降到 Gen3，甚至降到更低。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;PCIe bifurcation 的本质，是在 PCIe 初始化早期决定 Lane 的组织方式。Hard Strap 靠硬件固定，Soft Strap 靠平台配置，Wait For BIOS 则由 BIOS 在训练链路前动态设置。&lt;/p&gt;
&lt;p&gt;对普通装机用户来说，最重要的结论有三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;x16&lt;/code&gt; 物理插槽不等于一定能拆成多个 &lt;code&gt;x4&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;无芯片多 M.2 转接卡必须依赖主板 bifurcation。&lt;/li&gt;
&lt;li&gt;是否支持拆分，要同时看 CPU、主板布线和 BIOS 选项。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;理解这些之后，再看主板规格表里的 &lt;code&gt;x16&lt;/code&gt;、&lt;code&gt;x8+x8&lt;/code&gt;、&lt;code&gt;x4+x4+x4+x4&lt;/code&gt;，就不会只停留在插槽长度上，而能判断它到底能不能满足实际扩展需求。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
