Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 14776-331-04 (2018) 是 ISO/IEC 14776-331:2018 (SCSI Primary Commands – 3, 简称 SPC-3) 的正式标准编号。该标准由国际电工委员会 (IEC) 与国际标准化组织 (ISO) 联合发布,归属于 SCSI 系列标准体系,是统辖所有 SCSI 设备基本命令行为的基础规范。
SPC-3 标准定义了一套通用的主命令集,适用于所有遵循 SCSI 架构模型的逻辑单元(Logical Unit)。无论底层传输协议是并行 SCSI、串行连接 SCSI (SAS)、光纤通道 (FC)、iSCSI 还是其他派生物,只要实现 SCSI 协议栈,其逻辑单元都必须遵循 SPC-3 中规定的命令格式、状态报告方式及任务管理机制。该标准的核心价值在于为多元化的存储设备(硬盘、固态盘、磁带机、光盘机等)提供了一个统一的命令交互层,从而确保跨厂商设备的互操作性。
在适用范围上,IEC 14776-331-04 不仅覆盖传统块存储设备,还涵盖流设备、多媒体设备、桥接设备乃至虚拟化控制器。所有声称符合 SCSI 标准的设备,其命令执行和错误处理都必须以此为基准。
INQUIRY、REPORT LUNS、TEST UNIT READY 和 REQUEST SENSE,这是 SPC-3 最基础的一致性门槛。SPC-3 定义了多种长度的命令描述块 (Command Descriptor Block, CDB),包括 6 字节、10 字节、12 字节、16 字节及可变长度 CDB。每个 CDB 的首字节为操作码(Operation Code),用于标识具体命令;其余字节包含命令参数(如逻辑块地址、传输长度、服务动作等)。操作码的高 6 位或高 5 位决定命令类别,低 2/3 位提供额外属性。标准严格规定了各组 CDB 的格式模板,确保发起端(Initiator)和目标端(Target)能一致地解析命令。
设备执行命令后返回的状态码包括 GOOD (00h)、CHECK CONDITION (02h)、CONDITION MET (04h)、BUSY (08h)、INTERMEDIATE (10h)、RESERVATION CONFLICT (18h) 等。当出现错误或异常时,CHECK CONDITION 状态伴随附带的 Sense 数据返回。SPC-3 同时支持固定格式(Fixed Format)和描述符格式(Descriptor Format)的 Sense 数据,并定义了若干新增的描述符类型(如实际完成计数描述符、错误计数描述符等),用于提供更丰富的错误诊断信息。
SPC-3 定义了若干任务管理功能,允许发起端对队列中的命令进行精确控制。关键任务管理请求包括:
这些功能的正确实现对于多发起端并发访问和故障恢复至关重要。
SPC-3 将命令分为强制性(Mandatory)、有条件(Conditional)和可选(Optional)三类。所有逻辑单元必须无条件支持强制性命令。下面列出各逻辑单元必须实现的强制命令:
| 命令名称 | 操作码 (OpCode) | 简要说明 |
|---|---|---|
| INQUIRY | 12h | 返回设备基本信息,如厂商、产品标识、版本描述符等 |
| REPORT LUNS | A0h | 报告目标设备可访问的逻辑单元列表 |
| TEST UNIT READY | 00h | 检查逻辑单元是否就绪 |
| REQUEST SENSE | 03h | 获取上一个命令执行后的 Sense 数据 |
READ CAPACITY 也是必选命令,但该命令属于 SBC (SCSI Block Commands) 范畴,仅为块设备所必需。SPC-3 本身并不强制实现 READ CAPACITY,这一点在兼容性测试时需特别注意。设备研发时应以 SPC-3 标准中定义的“一致性声明”章节为检查清单。厂商在 INQUIRY 数据的 Version Descriptors 字段中列出支持的 IEC 14776-331-04 版本号码(例如 0960h 表示 SPC-3 支持)。正确填写这些描述符是协议分析的直接依据,也是认证测试的重要步骤。
SPC-3 推荐使用 REPORT SUPPORTED OPERATION CODES 命令(如果实现)来动态查询设备对具体命令是否支持。该命令能大大提高自动发现和配置的效率。若未实现该命令,则只能通过 INQUIRY 数据中的版本描述符间接判断。
从老版本(如 SPC-2)升级到 SPC-3 时,主要差异包括:
REPORT LUNS 从可选升级为强制命令。开发者应在固件设计时预留版本适配逻辑,确保与各种发起端的兼容。
最有效的验证方式是通过 SCSI 测试平台发送覆盖全命令集的请求,并逐一检查状态码、Sense 数据及数据块是否符合标准。建议参照 SCSI Architecture Model (SAM-5) 中定义的命令状态机进行自动化测试。
FORMAT UNIT、WRITE BUFFER 等命令时必须遵循标准的权限验证和保护机制,否则可能导致数据不可逆损坏。系统集成商应确保对 RAC (Redundancy and Availability Control) 功能的正确实现,防止因命令冲突造成数据服务中断。IEC 14776-331-04 是 SCSI 标准化体系中的核心文档,与其他标准存在清晰的层次依赖:
READ/WRITE、SPACE、PLAY AUDIO 等)。因此,任何 SCSI 设备类标准都无法脱离 SPC-3 单独实现,SPC-3 是整个 SCSI 生态的基础底座。
本文基于 IEC 14776-331-04 (2018) 编写,版权所有 © 2026 年。文中内容仅供技术参考,标准实施请以正式标准文件为准。