小飞猪0907-li 2024-03-04 14:52 采纳率: 33.3%
浏览 6
已结题

BIOS 识别盘片信息的原理是什么?

BIOS 识别盘片信息的原理是什么? 例如:bios读到sata的信息包括SN,model等信息,是通过向盘片下发identity命令吗?
读取nvme盘的信息,是如何读取的,下发的什么命令?
BIOS是如何判断盘片是sata还是nvme?

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-04 14:54
    关注

    引自免费微信小程序:皆我百晓生

    在计算机系统启动的过程中,BIOS(基本输入输出系统)负责初始化硬件并识别和配置存储设备。对于SATA硬盘和NVMe固态硬盘的识别与信息读取,其原理略有不同。

    1. BIOS识别SATA硬盘

      • 当系统加电自检(POST, Power-On Self Test)时,BIOS会通过AHCI(高级主机控制器接口)或IDE模式对SATA端口进行扫描。
      • BIOS向SATA硬盘控制器发送IDENTIFY DEVICE命令,这是一个ATA/ATAPI标准定义的命令,用于获取硬盘的基本信息,如制造商ID、型号、序列号、容量等。
      • 硬盘收到此命令后,会在数据FIS(帧信息结构)中返回相关信息,BIOS根据这些信息来判断硬盘的存在以及其特性。
    2. BIOS识别NVMe SSD

      • NVMe SSD使用PCIe总线进行连接,并遵循NVMe规范。BIOS在POST阶段会对PCIe总线上的设备进行枚举(Enumeration)。
      • BIOS通过查询PCI配置空间来找到NVMe控制器,并执行PCI功能发现过程以确定它是NVMe设备。
      • 发送NVMe标准定义的命令(例如Identify ControllerIdentify Namespace),从NVMe控制器获取SSD的相关信息,包括制造商、模型、序列号、容量等。
    3. 判断硬盘类型

      • BIOS是通过检测不同的总线接口(SATA控制器或PCIe控制器)以及识别响应的设备类型来区分SATA硬盘和NVMe SSD的。
      • 如果在SATA总线上找到了响应的硬盘,则可判断为SATA硬盘;如果在PCIe总线上发现了符合NVMe规范的控制器,则判断为NVMe SSD。

    由于BIOS代码及交互过程相当底层且复杂,实际的实现通常涉及到硬件操作和协议解析,无法直接提供代码示例。但上述原理描述了BIOS如何识别和获取这两种类型硬盘的信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 3月4日