【IT168 技术】在之前的三篇文章中,我们介绍了磁盘、读写磁头以及滑块的工作原理及技术,在本文中,我们将重点介绍数据编码方面的知识。
数据编码方案
磁存储本质是是一个模拟介质。存储在计算机上的数据是数字信息,也就是1和0组成的信息。当驱动器向磁记录磁头发送数字信息时,磁头在存储介质创建了磁畴,具有与驱动器向磁头提供的正负电压相对应的特定极性,通量逆转形成了正负极(驱动器控制器用来编码数字数据到模拟介质)区域之间的界限。在读取操作期间,驱动器检测到的每个通量逆转形成一个正极或负极脉冲,设备用来重建原始二进制数据。
为了优化磁存储期间的通量转换装置,驱动器将原始数字输入数据通过被称为编码器/解码器(endec)的设备来传递,编码器/解码器将原始二进制信息转换成波形,以将通量转换(脉冲)放在介质上的非常好的位置。在读取操作阶段,endec逆转了这个过程,并将脉冲序列解码回原始二进制数据。多年来,开发出了多种解码数据的方案,下文中我们将讨论到。
其他关于数据编码过程的描述可能更加简单,但是它们忽略了这样的事实:与硬盘可靠性相关的一些问题变得非常关键,例如,计时机制。工程师和设计师都在努力将越来越多的信息放入有限数量的磁通逆转。他们得出的设计结论是信息解码不仅取决于从存在或不存在的通量逆转,而且取决于它们之间的计时。逆转时间越精确,就可以从计时信息编码出越多的信息。
对于任何形式的二进制信号,使用计时机制作用都非常显著。当读取或写入波形被解译时,每个电压转换的时间都是至关重要的。计时机制能够定义特定区位或者转换单位,也就是说,驱动器写入或读取转换的时间窗口。如果计时机制关闭了,特定电压转换会在错误的时间被识别在不同的单元,这会让转换或编码关闭,导致区位丢失、增加或错误解译。为了确保计时的精确性,转换和接收设备必须完全同步。
现在想象一下,在读取数据的时候,编码器的时钟比写入数据的时候稍微偏离了一些。如果时间更快的话,编码器可能会认为,在没有转换的10个单元,只有9个单元已经过去了。而如果时间更慢的话,它可能会认为已经过去了11个单元。在这两种情况下,这都会导致读取错误。意味着原先写入的数据不能读取出相同的数据。为了避免驱动器编码/解码的计时错误,必须确保读取和写入过程之间的完美的同步。这种同步通常是通过在两个设备之间的传输增加单独的计时信号来完成的,被称为时钟信号。时钟和数据信号也可以结合作为单一信号。大多数磁性数据编码方案都是用这种时钟和数据信号结合的类型。
向数据增加一个时钟信号能够确保通信设备可以准确地解译单个区位单元。每个区位单元由另外两个包含时钟转换的单元分隔。由于时钟信息与数据一起发送,时钟保持同步,即使介质包含长串相同的0区位。不过,仅用于计时的转换单元占用了本来可以用于数据的介质空间。
由于驱动器在特定介质的给定空间所能记录的通量转换数量是受介质和磁头技术的物理性质或者密度限制的,驱动器工程师开发了不同的编码数据的方式,信号编码使该系统能够最大限度利用特定驱动器硬件技术。
虽然曾经出现过各种各样的编码方案,但是只有少数几种方案现在仍然流行。
经过时间的洗礼,下面这三种基本类型的编码方案已经成为最流行的方案:
- • 频率调制
- • 改进频率调制
- • 游程长度限制
下面章节对这三种编码方案进行了详细探讨,它们是如何运作的,用在什么地方以及各自的优缺点。
频率调制编码
为磁存储编码数据的最早技术之一被称为频率调制编码,这种编码方法主要用于安装在计算机系统的最早的软盘驱动器,有时被称为单密度编码。例如,最早的奥斯本便携式计算机就使用这些单密度软盘驱动器,在单个磁盘存储约80KB数据。虽然这种方法曾经红极一时,不过现在已经不再使用。
改进调频编码
改进频率调制编码减少了原来调频编码方法使用的通量逆转数量,从而可以将更多数据放入磁盘。改进频率调制编码最大限度地减少了时钟转换的使用,为数据留下更多空间。只有当存储的0区位被另一个0区位超越时,才会记录时钟转换,在所有其他情况下,都不要求时钟转换。由于改进调频编制最小化减少了时钟转换的使用,能够存储比调频编码高一倍的时钟频率,在相同通量转换数量可以存储两倍多的数据区位。
由于与使用相同数量的通量逆转的调频编码相比,改进调频编码能够写入两倍数据区位,数据的时钟速度也翻倍了,且驱动器实际认为其与调频相同的通量逆转数据。这意味着驱动器使用改进调频编码读取和写入数据的速度调频编码的两倍,而同时驱动器认为通量逆转与调频编码具有相同的频率,
由于改进调频编码比调频编码效率高两倍,改进调频编码也被称为双密度记录。改进调频编码几乎应用于现在所有计算机软盘驱动器,并且在所有计算机硬盘驱动器应用了多年。现在,几乎所有硬盘驱动都使用RLL编码,这比改进调频编码提供更高的效率。
下图展示了改进调频编码中数据区位到通量逆转转换的情况。
▲
游程长度受限编码
游程长度受限(RLL encoding)是当今最流行的硬盘编程方法,存储信息量是改进调频编码的两倍,调频编码的三倍。在游程长度编码中,驱动器将区位群组成一个单位来生成特定模式的通量逆转。因为时钟和数据信号被组合到这些模式中,因此时钟速率可进一步增加,同时保持存储介质通量转换之间的相同的距离。
IBM发明了游程长度受限编码,并将其运用在很多大型磁盘驱动器中。在20世纪80年代末,计算机硬盘行业开始使用游程长度编码来增加计算机硬盘的存储能力。现在,市面上几乎所有驱动器都在使用某种形式的游程长度受限编码。
游程长度受限编码并不是编码单个区位,而通常是一次性编码一组数据区位。游程长度受限这个说法来自两个主要规格,即两个实际通量转换间允许的转换单位的最小数字(游程长度)和最大数字(游程限制)。主要有两个已经开始真正普及应用:RLL 2,7和RLL1,7.
你甚至可以说调频编码和改进调频编码也是一种游程长度受限编码,调频编码可以被称为RLL1,0,因为很少0和很多1转换单元分隔了两个通量转换。改进调频编码可以被称为RLL1,3,因为很少1和很多3转换单元分隔了两个通量转换。虽然这些编码形式都可以说是游程长度受限编码,但是很少有人这样表示。
RLL 2,7曾经是最流行的RLL形式,因为它提供了高密度比率,以及转换检测窗口(与改进调频编码中的大小相当)。这种方法提供了高存储密度和相对良好的可靠性。然而,在高容量驱动器中,RLL 2,7并不是很可靠。现在大多数最高容量的驱动器使用的是RLL 1,7编码,它能够提供改进调频编码的1.27倍的密度比,和更大的转换检测窗口。因为有更大的计时窗口或者单元尺寸可以检测转换,RLL 1,7是一种更可行更可靠的编码,当介质和磁头技术被推向极限时,这一点尤为重要。
另一个很少使用的游程长度受限被称为RLL 3,9,有时也被称为高级RLL(ARLL),它能够提供比RLL 2,7更高的密度比。不幸的是,可靠性并不是很好,只有少数已经过时的控制器在使用这种方法。
如果没有例子的话,很难理解游程长度受限编码的工作原理。对于特定的RLL编码(例如RLL 2,7或者1,7),你可以构建很多通量转换编码表来演示特定区位组是如何被编码到通量转换的。
在下面的转换表中,特定数据组(2,、3、4区位长)被转换成通量转换字符串4、6和8转换单位长度。为特定区位序列选定转换的目的是确保通量转换不会过于靠近或者过于分开。
▲
限制两个通量转换之间的距离是很有必要的,因为磁头和存储介质的固定分辨能力。限制两个通量转换可相距多远可以确保设备的时钟保持同步。
对于上图的表格,你可能会认为编码一个字节值(例如00000001b)可能是不可能的,因为没有数据位组组合符合这种字节。不过,编码这种类型的字节并不是问题,因为控制器不会传输单个字节,而是发送整个数据组,只要增加一些字节就可以编码这样的一个字节。在这种情况下,控制器中的endec会向最后一个字节的末端增加多余的字节,这些多余字节会在任何读取操作中被截断,这样控制器总是能够正确解码最后一个字节。
编码方法对比
下图显示的是使用这三种编码方法在硬盘驱动器存储ASC II字符X的波形:
▲
对于这些编码方法,顶行显示的是单个数据区位(例如01011000b)在其区位单元,由时间信号按时间分隔,如(.)所示。下面是实际写入波形,显示了正负极压力以及磁头压力转换(记录通量转换的结果)。最下面显示的是转换单元,T表示包含通量转换的转换单位,N代表为空的转换单位。
上图显示的调频编码很容易解释。每个区位单元都有两个转换单元:一个用于时钟信息,另一个是数据。所有时钟转换单元都包含通量转换,而数据转换单元包含只有当数据是1bit的通量转换。当数据是0 bit时,没有转换。从左边开始,第一个数据位是0,解码为TN通量转换模式。下一个数据位是1,解码为TT。接着又是0,解码为TN,以此类推。
改进调频编码方法对每个记录的数据位也有时钟和数据转换单元。正如你所看到的,只有当0位存储在另一个0位后面时,时钟转换单元才会携带一个通量转换。从左边开始,第一个是0,前面是未知(假设是0),所以通量转换就是TN。下一个是1,通常解码为NT。下一个是1,由于前面是1,所以是NN。通过使用之前的表格,你可以轻松地跟踪改进调频编码模式到字节的末端。你可以看到任何两个通量转换之间的最小和最大转换单元是1和3,这也就解释了为什么改进调频编码也可以被称为RLL 1,3。
RLL 2,7模式很难看到,因为它解码的是区位组而不是单个区位。从左边开始,符合上表所列的组群的第一组是前三位,010。这些区位被转换成TNNTNN,接下来两位是11,转换为TNNN,最后一组是000,转换为NNNTNN。正如你所看到的,完成最后一组不需要额外的区位。
请注意,在这个例子中,任何两个通量转换之间的空转换单元的最小数字和最大数字是2和6,可能其他例子中会出现7个空转换单元。由于比改进调频编码记录的转换更少,时钟速率可以达到调频编码的3倍,和改进调频编码的1.5倍,也能够存储更多数据。但是请注意,产生的写入波形本身与典型的FM或者MFM波形非常相似,对于磁盘给定物理部分,通量转换的数量和分隔情况相同。换句话说,在这三种编码例子中,任何两个通量转换之间的最小和最大物理距离都是相同的。
局部响应最大似然解码器
现代硬盘驱动最常使用的另一个功能涉及磁盘读取电路。读取通道电路使用局部响应最大似然(PRML)技术,使磁盘驱动器制造商能够增加40%的数据存储量。PRML用数字信号处理代替了传统模拟峰值检测、读取/写入通道 “一次检测一次峰值”的方法。
随着硬盘数据密度的增加,驱动器必须记录介质上紧密靠近的通量逆转,这使读取磁盘数据更加困难,因为相邻磁峰值将开始互相干扰。PRML改变了驱动器从磁盘读取数据的方式。控制器通过使用数字信号采样、处理和检测算法(这使局部响应单元)来对其从磁头接收的模拟数据流进行分析,并预测最有可能代表(最大似然单元)数据流的位序列。PRML技术可以利用模拟波形(这可能会充满噪音和杂散信号),并产生一个准确的读取。
这听起来似乎并不是非常精确读取数据的方法,不过数字信号处理能够有效过滤噪音,使驱动器能够更加紧密地放置通量变化脉冲,从而实现更大的密度。大多数具有2GB或以上的容量的驱动器会在其endec电路中使用PRML技术。