Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 14776-381:2002 是 SCSI (Small Computer System Interface) 协议体系中处于核心地位的规范,通常被称为 SPC-2 (SCSI Primary Commands – 2)。该标准由 ISO 和 IEC 联合发布,加拿大标准协会 (CSA) 将其采纳为 CAN/CSA ISO/IEC 14776-381-02。它详细定义了所有 SCSI 设备必须实现的基础命令集、命令格式、设备类型识别、状态报告以及错误处理机制,是构建任何 SCSI 目标设备 (如磁盘、磁带、光驱) 和发起端 (主机适配器) 之间互操作性的基石。直到 2026 年,该标准仍作为 SCSI 协议兼容性测试的核心引用文档,广泛应用于企业存储、数据中心及工业控制领域。
本标准属于 SCSI-3 协议家族的“主要命令”部分,上接 SCSI 体系结构模型 (SAM-2),下启各类设备专用命令 (如 SBC-2 块命令、SSC-2 流命令)。它抽象了与具体传输介质无关的命令层,使得同一套高级命令可在并行 SCSI (SPI)、光纤通道 (FCP) 或串行连接 SCSI (SAS) 上运行。
| 层次 | 标准编号 | 说明 |
|---|---|---|
| 体系结构 | ISO/IEC 14776-411 (SAM-2) | 定义 SCSI 交互模型、任务管理 |
| 主要命令 | ISO/IEC 14776-381 (SPC-2) | 通用命令集 (INQUIRY, READ, WRITE 等) |
| 块命令 | ISO/IEC 14776-321 (SBC-2) | 直接访问设备的命令 (READ, WRITE) |
| 流命令 | ISO/IEC 14776-331 (SSC-2) | 磁带等顺序访问设备的命令 |
所有 SCSI 命令均通过 CDB 传输。SPC-2 定义了 6 字节、10 字节、16 字节及可变长度 CDB 格式。每个 CDB 至少包含操作码 (Operation Code)、逻辑单元号 (LUN) 和传输长度字段。例如,10 字节 CDB 的通用格式如下:
SPC-2 约定义了 60 余条命令,其中约 20 条为强制实现。以下为最常见命令的汇总:
| 命令名称 | 操作码(Hex) | 功能描述 | 必需 |
|---|---|---|---|
| INQUIRY | 0x12 | 获取设备标识、VPD 参数等 | 是 |
| TEST UNIT READY | 0x00 | 检查 LUN 是否就绪 | 是 |
| REQUEST SENSE | 0x03 | 返回上次错误的 sense data | 是 |
| READ (10) | 0x28 | 读取数据块 | 因设备而异 |
| WRITE (10) | 0x2A | 写入数据块 | 因设备而异 |
| MODE SENSE (6) | 0x1A | 返回设备模式参数 | 是 |
| MODE SELECT (6) | 0x15 | 设置设备模式参数 | 是 |
INQUIRY 命令返回的 Peripheral Device Type (PDT) 字段用 5 bits 标识设备类别。SPC-2 定义了 1Fh 以内的所有类型:
| PDT 代码 (Hex) | 设备类型 | 典型命令集 |
|---|---|---|
| 00h | 直接访问块设备 (如磁盘) | SBC-2 |
| 01h | 顺序访问设备 (如磁带) | SSC-2 |
| 05h | CD/DVD 设备 | MMC-4 |
| 07h | 光盘存储器 | MMC / SBC |
| 0Fh | 主机管理设备 | 本规范 + SMP |
每条命令以状态字节结束。SPC-2 定义了 5 种主要状态:Good (00h), Check Condition (02h), Busy (08h), Reservation Conflict (18h), 以及 Task Aborted (40h)。当状态为 Check Condition 时,发起者必须发送 REQUEST SENSE 获取包含 Sense Key、Additional Sense Code (ASC) 及 Qualified (ASCQ) 的详细错误描述。
SPC-2 相对 SPC-1 增加了 READ (16)/WRITE (16)、COMPARE AND WRITE 等命令,同时规范了 VPD 页面的版本标识。实现时建议:
SPC-2 不依赖特定的传输协议。实施时需注意不同物理层对命令超时、最大 CDB 长度及自动连续状态处理 (ACA) 的支持差异。例如,并行 SCSI 通常要求更短的 ACA 超时而 SAS 允许更长的命令排队。
SCSI 贸易协会 (STA) 提供了针对 SPC-2 的官方测试工具。关键测试用例包括:INQUIRY 数据校验、状态码序列、任务管理功能 (ABORT TASK, TARGET RESET) 以及错误恢复流程。建议开发团队在实现初期即进行自动化回归测试。
SPC-2 的交互模型和任务管理遵循 SAM-2。例如,任务排队、自动连续支持 (ACA) 均在 SAM-2 中定义,SPC-2 仅扩展了具体命令行为。
© 2026 年, 本文基于 ISO/IEC 14776-381:2002 及 CAN/CSA ISO/IEC 14776-381-02 编写,仅供技术参考。所有标准版本以官方发布为准。