{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-13",
  "slug": "fis-based-switching",
  "term": "FIS-based switching (SATA)",
  "aliases": [
    "SATA FBS"
  ],
  "definition": "FIS-based switching allows a SATA host to keep commands outstanding to multiple devices behind a port multiplier.",
  "note": "The controller preserves each target's context while interleaving FIS traffic. Concurrent device activity still shares one upstream link. [sata-switching] [switching-context]\n\nIn AHCI, CAP.FBSS and PxCMD.FBSCP report global and per-port capability; PxFBS.EN enables operation. CAP.SPM alone is insufficient. The host port's CAP.NCS + 1 slots remain a shared budget, not a fresh queue per downstream disk. [ahci-switching]\n\nError recovery can pause other targets. When PxFBS.SDE is set, PxFBS.DWE identifies the affected target; other commands pause until software acknowledges and clears the condition through PxFBS.DEC. Other devices resume after hardware clears PxFBS.DEC; the affected device may still need a software reset. A DEC timeout or additional timeouts call for broader recovery. This differs from non-device-specific recovery, which flushes all commands on the port. [ahci-recovery]\n\nWith several targets active, PxTFD may reflect different devices and is unsafe for command-completion decisions. AHCI directs software to PxCI and PxSACT instead; its exception is commands outstanding to only one device. [ahci-taskfile]",
  "related": [
    "sata-port-multiplier",
    "sata-fis",
    "command-based-switching",
    "ahci",
    "native-command-queuing"
  ],
  "citations": [
    {
      "id": "sata-switching",
      "title": "SATA-IO Serial ATA Revision 2.6, section 16.7, page 545: command-based and FIS-based switching",
      "url": "https://sata-io.org/system/files/specifications/SerialATA_Revision_2_6_Gold.pdf",
      "accessed": "2026-10-19"
    },
    {
      "id": "switching-context",
      "title": "Scott Knowlton, Synopsys: Understanding SATA FIS-Based Switching (2013), connectivity and shared bandwidth",
      "url": "https://www.chipestimate.com/Understanding-SATA-FIS-Based-Switching/Synopsys/Technical-Article/2013/01/22",
      "accessed": "2026-10-19"
    },
    {
      "id": "ahci-switching",
      "title": "Intel AHCI 1.3.1, sections 3.1.1, 3.3.7, 3.3.16 and 9: capabilities and port-multiplier operation",
      "url": "https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/serial-ata-ahci-spec-rev1-3-1.pdf",
      "accessed": "2026-10-19"
    },
    {
      "id": "ahci-recovery",
      "title": "Intel AHCI 1.3.1, sections 9.3.6.1-9.3.6.2 and 9.3.8: device-specific recovery and host-port reset",
      "url": "https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/serial-ata-ahci-spec-rev1-3-1.pdf",
      "accessed": "2026-10-19"
    },
    {
      "id": "ahci-taskfile",
      "title": "Intel AHCI 1.3.1, section 9.3.7: PxTFD register information",
      "url": "https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/serial-ata-ahci-spec-rev1-3-1.pdf",
      "accessed": "2026-11-13"
    }
  ],
  "provenance": [
    "SATA-IO sections were checked through indexed primary-specification text; direct PDF retrieval was unavailable. [sata-switching]"
  ]
}
