硬盘基础知识
1 主要芯片
硬盘的背面有一块PCB控制电路板,上面有很多芯片以及元件,其中比较重要的三个芯片是:
A 硬盘的主控芯片,它是电路板中最大的一块芯片,负责硬盘的工作、接口传输和电源供应
B 缓存芯片,它位于主控芯片上方,实际上是一个内存颗粒,提供读写硬盘时候的性能
C 驱动芯片,驱动主轴马达
2 接口
硬盘与主板的连接部分就是硬盘的接口,常见的有ATA、SATA和SCSI标准接口。ATA、SATA接口主要用于个人电脑,SCSI接口则较多的应用在服务器上,接口的主要性能只表示传输率。
ATA接口传输率分为100MB/s和133MB/s,目前常见的ATA接口硬盘的外部传输速率模式有UltraATA/100、UltraDMA/133两种,大多数的硬盘的都支持UltraDMA/100/133的传输速率模式。
SATA硬盘的出现,缓解了磁盘系统的瓶颈问题。首先SATA是以串行的方式传送数据,这可使连接电缆数目变少,效率提高。其次,SATA有更高的起点、可发展的潜力大,Serial ATA 1.0定义的数据传输率可达150MB/s,这比ATA 133所能达到的133MB/s的最高数据传输率还高,而Serial ATA 2.0/3.0的数据传输率将达到300MB/s 和600MB/s。最后,Serial ATA具有更强的系统拓展性,由Serial ATA 采用点对点的传输协议,这样可以使每个驱动器独享带宽,而且在拓展Serial ATA面会更有优势。
3 内部结构
拆开硬盘后,可以看到硬盘的内部结构,它主要是由磁盘盘片、磁头组件及磁头传动结构组成。
硬盘工作时,它的核心是盘片,由主轴驱动旋转,然后由磁头定位,在高速旋转的盘片上定位数据来获取数据,磁头获取的数据,首先被送入缓存,然后通过数据线传送给系统。这就是硬盘的基本运作模式。
磁头组件很复杂、精密,主要用来读取和写入数据,在它工作时,离磁盘盘片的距离相当近,而且不能接触盘片,所以平时当硬盘在运行时,我们一定要让硬盘保持平稳的状态,不能晃动它,否则硬盘就很容易损坏。硬盘的磁头是用线圈缠绕在磁芯上制成的 现在大都使用的是GMR(巨磁阻)磁头。
磁盘盘片是由硬质合金组成的,是在盘片上涂上一层磁性物质,现在还出现了玻璃盘片。它的主要作用就是储存数据和资料。主轴结构也就是使磁盘盘片运动起来的部分,它决定了硬盘的转速。其中的马达转速越高,硬盘读取数据的速度也越快,相应地,也产生了噪音。所以很多硬盘使用了液态轴承,让硬盘的发热量和噪音都减小。
目前的硬盘的盘片及磁头均密封在金属盒中,构成一体,不可拆卸,金属盒内是高纯度气体,不是真空,因为在硬盘工作期间,磁头是悬浮在盘片上面,这个悬浮是靠一个飞机头来保持平衡。飞机头与盘片保持一个适当的角度,高速旋转的时候,用气体的托力,就象飞机飞行在大气中一样,而磁头(GMR磁头)与盘片的距离一般在0.15μm左右,对气体中的悬浮颗粒要求直径不超过0.08μm,否则对磁头的读写及其运动、寿命都会造成很大的影响;结束工作时,硬盘的磁头会通过专门的机构让它停落在它的着陆区(没有数据存储的区域)。
4 CHS寻址方式
到目前为止, 人们常说的硬盘寻址还是古老的CHS(Cylinder/Head/Sector)方式. 那么为什么要使用CHS这些参数,它们的意义是什么?它们的取值范围是什么?早期硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数.由此产生了所谓的3D参数 (Disk Geometry),既磁头数(Heads), 柱面数(Cylinders),扇区数(Sectors),以及相应的CHS寻址方式.
磁头数(Heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储);
柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023(用 10 个二进制位存储);
扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63(用 6个二进制位存储).每个扇区一般是 512个字节, 理论上讲这不是必须的,但好象没有取别的值的.所以磁盘最大容量为:
255 * 1023 * 63 * 512 / 1048576 = 8024 MB ( 1M =1048576 Bytes )或硬盘厂商常用的单位:
255 * 1023 * 63 * 512 / 1000000 = 8414 MB ( 1M =1000000 Bytes )
在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0到 Heads - 1,0 到 Cylinders - 1, 1 到 Sectors (注意是从 1 开始)
5 基本 Int 13H 调用简介
BIOS Int 13H 调用是 BIOS提供的磁盘基本输入输出中断调用, 它可以完成磁盘(包括硬盘和软盘)的复位, 读写, 校验, 定位, 诊断,格式化等功能.它使用的就是 CHS 寻址方式, 因此最大识能访问 8 GB 左右的硬盘。
6 现代硬盘寻址方式
在老式硬盘中, 由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道, 因此会浪费很多磁盘空间 (与软盘一样). 为了解决这一问题,进一步提高硬盘容量, 人们改用等密度结构生产硬盘. 也就是说,外圈磁道的扇区比内圈磁道多. 采用这种结构后, 硬盘不再具有实际的3D参数,寻址方式也改为线性寻址, 即以扇区为单位进行寻址.为了与使用3D寻址的老软件兼容 (如使用BIOSInt13H接口的软件), 在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数. 这也是为什么现在硬盘可以有多种寻址方式(不同的工作模式, 对应不同的3D参数, 如 LBA, LARGE, NORMAL)的原因。
7 扩展 Int 13H 简介
虽然现代硬盘都已经采用了线性寻址, 但是由于基本 Int13H 的制约, 使用 BIOS Int 13H 接口的程序, 如 DOS 等还只能访问 8 G以内的硬盘空间.为了打破这一限制, Microsoft 等几家公司制定了扩展 Int 13H 标准(Extended Int13H), 采用线性寻址方式存取硬盘, 所以突破了 8 G的限制,而且还加入了对可拆卸介质 (如活动硬盘) 的支持.
8 硬盘工作模式“NORMAL”“LBA”“LARGE”的含义
NORMAL:普通模式是最早的 IDE 方式,在硬盘访问时,BIOS 和 IDE 控制器对参数不做任何转换。该模式支持的最大柱面数为 1024,最大磁头数为 16,最大扇区数为 63,每扇区字节数为 512,因此支持最大硬盘的容量为:512x63x16x1024=528MB。在此模式下,硬盘的实际物理容量再大,也只能用到其中的 528M。
LBA(Logical Block Addressing):逻辑块寻址模式。管理的硬盘空间可达 8.4GB。在 LBA 模式下,设置的柱面、磁头、扇区等参数并不是实际硬盘的物理参数。在访问硬盘时,由 IDE 控制器把由柱面、磁头、扇区等参数确定的逻辑地址转换为实际硬盘的物理地址。在 LBA 模式下,可设置的最大磁头数为 255,其余参数与普通模式相同,由此可以计算出可访问的硬盘容量为:512x63x255x1025=8.4GB。不过现在新主板的BIOS对 INT13 进行了扩展,使得 LBA 能支持 100GB 以上的硬盘。
LARGE:大硬盘模式,在硬盘的柱面超过 1024 而又不为 LBA 支持时采用。LARGE 模式采用的方法是把柱面数除以 2,把磁头数乘以 2,其结果总容量不变。
在这三种硬盘模式中,现在 LBA 模式使用最多。
备注:
1 本来是没有整理这篇文章的,只是在看GRUB相关东西时候,最后发现对硬盘的了解太少,所以整理了上面的文章。
2 还需要补充内容如下:硬盘LBA寻址是怎么定位一个扇区的?开机时候BIOS怎么检测硬盘的容量的?硬盘自己的BIOS是实现什么功能的?如果硬盘工作在LBA模式,常见操作系统的硬盘驱动访问硬盘某个扇区时候,给出的地址是CHS方式还是扇区的逻辑/物理地址?