磁盘控制器和数据访问

磁盘控制器

简介

硬盘的接口包括物理接口,也就是硬盘接入到磁盘控制器上需要用的接口,具体的针数、某个针的作用等。除了物理接口规范之外,还定义了一套指令系统,叫做逻辑接口。磁盘通过物理线缆和接口连接到磁盘控制器之后,若想在磁盘上存放一个字母应该怎么操作?这是需要业界定义的很重要的东西。指令集定义了“怎样向磁盘发送数据和从磁盘读取数据以及怎样控制其他行为”,比如 SCSI和 ATA 指令。其中,逻辑接口,也就是 SCSI或者 ATA 指令集部分,指令实体内容是需要由运行于操作系统内核的驱动程序来生成的,而物理接口的连接,就是磁盘控制器芯片需要负责的,比如 ATA 控制器或 SCSI控制器。磁盘控制器的作用是参与底层的总线初始化仲裁等过程以及指令传输过程、指令传输状态机、重传、ACK确认等,将这些太过底层的机制过滤掉,从而向驱动程序提供一种简洁的接口。 驱动程序只要将要读写的设备号、起始地址等信息,也就是指令描述块(Command Description Block,CDB) 传递给控制器即可,控制器接受指令并做相应动作,将执行后的结果信号返回给驱动程序。

总结

硬盘通过物理接口连接到磁盘控制器,实现数据的读写操作。逻辑接口定义了指令系统,包括如何向磁盘发送数据、读取数据以及控制其他行为。驱动程序生成指令描述块传递给磁盘控制器控制器接受指令并执行相应操作,将结果返回给驱动程序硬盘控制器负责底层的初始化、指令传输状态机等,为驱动程序提供简洁的接口。

驱动器控制电路

简介

应该将磁盘控制器和磁盘驱动器的控制电路区别开来,二者是作用于不同物理位置的。磁盘驱动器控制电路位于磁盘驱动器上,它专门负责直接驱动磁头臂做运动来读写数据;而主板上的磁盘控制器专门用来向磁盘驱动器的控制电路发送指令,从而控制磁盘驱动器读写数据。由磁盘控制器对磁盘驱动器发出指令,进而操作磁盘,CPU 做的仅仅是操作控制器就可以了。来梳理一下这个结构,CPU通过主板上的导线发送SCSI或者ATA指令(CDB)给同样处于主板上的磁盘控制器,磁盘控制器继而通过线缆将指令发送给磁盘驱动器并维护底层指令交互状态机,由
磁盘驱动器解析收到的指令从而根据指令的要求来控制磁头臂。SCSI或者 ATA指令 CDB是由OS内核的磁盘控制器驱动程序生成并发送的。CPU 通过执行磁盘控制器驱动程序,生成指令发送给磁盘控制器,控制器收到这些CDB后,会做一定程度的翻译映射工作,生成最底层的磁盘可接受的纯 SCSI指令,然后通过底层的物理操作,比如总线仲裁,然后编码,再在线缆上将指令发送给对应的磁盘。

总结

磁盘控制器位于主板上,负责向磁盘驱动器发送指令,控制数据读写操作。CPU通过主板上的导线发送SCSI或ATA指令给磁盘控制器控制器将指令发送给磁盘驱动器并维护指令交互状态。磁盘驱动器控制电路位于磁盘驱动器上,负责驱动磁头臂运动以读写数据。操作系统内核的磁盘控制器驱动程序生成指令并发送给磁盘控制器控制器翻译指令并发送给磁盘驱动器,完成数据操作。

磁盘控制器驱动程序

简介

那么机器刚通电,操作系统还没有启动起来并加载磁盘控制器驱动的时候,此时是怎么访问磁盘的呢?CPU 必须执行磁盘通道控制器驱动程序才能与控制器交互,才能读写数据。所以,系统 BIOS中存放了初始化系统所必需的基本代码。系统 BIOS 初始化过程中有这么一步,就是去发现并执行磁盘控制器的 ptona ROM(该 ROM 被保存在磁盘通道控制器中或者单独的Flash 芯片内),该 ROM 内包含了该控制器的最原始的、可在主 BIOS 下执行的驱动程序,主BIOS 载入并执行该 ROM,从而就加载了其驱动程序,也就可以与控制器进行交互了。最后主BIOS 通过执行驱动程序而使得 CPU 可以发送对应的读指令,提取磁盘的0磁道的第一个扇区中的代码载入内存执行,从而加载 OS。
系统 BIOS(主 BIOS)中是包含常用的磁盘控制器驱动程序的,但是对于一些不太常用的较高端的板载控制器或者 PCIE 卡形式的控制卡,主 BIOS 一般不包含其驱动,所以必须主动加载其Optona ROM 才能在主 BIOS 下驱动。如果根本不需要在主 BIOS 下使用该控制器,那么就不必加载 Opúona ROM。在 OS 内核启动过程中,会用高性能的驱动程序来接管 BIOS 中驻留的驱动程序。当然,BIOS中也要包含键盘驱动,如果支持USB 移动设备启动,还要有USB驱动。

总结

在系统启动时,操作系统尚未加载磁盘控制器驱动程序。此时,系统BIOS负责初始化硬件,并执行磁盘控制器原始驱动程序,该程序存储在磁盘控制器的ROM中。通过执行这个ROM,系统BIOS加载并执行磁盘控制器驱动程序,使CPU能够与控制器交互。系统BIOS还可能包含常用的磁盘控制器驱动程序,但对于较高端或不常用的控制器,需要手动加载其ROM才能在系统BIOS下运行。一旦操作系统内核启动,就会使用高性能的驱动程序接管BIOS中的驱动程序,加载操作系统并正常运行。

图示

下图显示了磁盘控制器驱动程序、磁盘控制器和磁盘驱动器控制电路三者之间的关系。控制器驱动程序负责将上层下发的 SCSI/ATA 指令传递给控制器硬件。
20240423161405

posted @ 2024-04-23 16:30  岸南  阅读(237)  评论(0)    收藏  举报