Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
The CAN/CSA ISO/IEC 14776-362-07 standard is the Canadian adoption of the international ISO/IEC 14776-362:2006, commonly known as SCSI Primary Commands – 3 (SPC-3). This standard defines the fundamental command set, device model, and protocol interactions for SCSI logical units, forming the foundation upon which all SCSI device-type-specific command sets (e.g., SBC for block devices, SSC for stream devices) are built. Engineers designing, implementing, or testing SCSI storage subsystems must thoroughly understand this document to ensure interoperability and compliance across serial and parallel SCSI transport layers.
SPC-3 specifies the primary command architecture for all SCSI devices, independent of the transport protocol. The standard covers:
The standard is transport agnostic and applies to SAS, Fibre Channel, iSCSI, and legacy Parallel SCSI implementations. Its requirements are mandatory for any device claiming SCSI compliance.
Every command begins with a CDB of 6, 10, 12, 16, or 32 bytes, depending on the operation. The first byte is the operation code, which identifies the command. SPC-3 defines the following categories of primary commands:
| Operation Code | Command Name | Description | SCSI Feature |
|---|---|---|---|
| 00h | TEST UNIT READY | Polls the logical unit readiness | Mandatory |
| 03h | REQUEST SENSE | Retrieves auto‑sense data | Mandatory |
| 12h | INQUIRY | Returns device identification and capabilities | Mandatory |
| 1Ah | MODE SENSE (6) | Reads mode parameters (6‑byte CDB) | Mandatory |
| 15h | MODE SELECT (6) | Sets mode parameters (6‑byte CDB) | Mandatory |
| A0h | REPORT LUNS | Lists all logical units accessible via the target | Mandatory for multi‑LU targets |
| 4Dh | LOG SENSE | Returns log page data (e.g., error counters) | Conditional |
After executing a command, the device server returns a status byte in the FCP_RSP or equivalent. SPC-3 defines eight status codes, the most common being 00h (GOOD) and 02h (CHECK CONDITION). When a CHECK CONDITION is returned, the initiator must issue REQUEST SENSE to retrieve the sense data, which includes a sense key, additional sense code (ASC), and additional sense code qualifier (ASCQ). SPC-3 specifies the format and content of sense data, including fixed and descriptor formats.
SPC-3 introduces a modern device server model with support for tagged command queuing (up to 256 tasks). The standard defines task attributes (SIMPLE, ORDERED, HEAD OF QUEUE, ACA) that govern command execution order and queuing behavior. Hardware and firmware developers must implement the task management model correctly to avoid data integrity issues, especially in multi‑initiator environments.
The model also includes:
SPC-3 is part of a larger SCSI standards suite. Compliance with earlier versions (SPC‑1 and SPC‑2) is maintained through evolutionary design. A device claiming SPC-3 compliance must support all mandatory primary commands and meet the conformance requirements in Annex B of the standard. Vendors often characterize their implementations as “SPC‑3 compliant” after passing the following test categories:
While no single global certification body exists for SCSI, the INCITS T10 Technical Committee maintains the standard and publishes technical corrections. Many storage vendors use industry‑standard test suites (e.g., the SCSI Test Suite developed by the Storage Networking Industry Association – SNIA) to validate SPC-3 compliance.
When designing a product to be marketed as “SPC‑3 compliant,” developers should:
This article is current as of 2026. Although the SCSI standards continue to evolve (e.g., SPC‑5, SPC‑6), the core architecture established in SPC‑3 remains the baseline for modern SCSI implementations. Engineers working on storage controllers, HBAs, or solid‑state drives will find that SPC‑3 knowledge is indispensable for troubleshooting and ensuring backward compatibility.