如何将硬盘从PIO模式改成DMA模式?

05-05

1. 右键“我的电脑”选择“属性”,再选择“硬件”选项卡下的“设备管理器”:

2. 展开“IDE ATA/ATAPI 控制器”节点;

3. 双击您的“主要IDE控制器”;

4. 点击“高级设置”,改为DMA即可

下面为大家详细解析下硬盘的DMA模式和PIO模式。

DMA的英文拼写是“Direct Memory Access”(存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。

(Ultra-DMA/33),1996年由Intdl和Quantum制定的一种数据传输方式,该方式I/O系统的突发数据传输速度可达33MB/s,还可以降低I/O系统对CPU资源的占用率。现在又出现了UDMA/66,速度多出两倍。

PIO的英文拼写是“Programming Input/Output Model”,PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其它的操作。PIO数据传输模式又分为PIO mode 0、PIO mode 1、PIO mode 2、PIO mode 3、PIO mode 4几种模式,数据传输速率从3.3MB/s到16.6MB/s不等。受限于传输速率低下和极高的CPU占有率,这种数据传输模式很快就被淘汰。

如何使用磁盘的DMA模式呢?使用hdparm工具可以查看:

比如我们查看磁盘缓存时,会出现如下错误:

[cnangel@cadev03 ~]$sudo hdparm -i /dev/sda

/dev/sda:

HDIO_GET_IDENTITY failed: Invalid argument

禁止使用DMA模式:

[cnangel@cadev03 ~]$sudo hdparm -d0 /dev/sda

/dev/sda:

setting using_dma to 0 (off)

HDIO_SET_DMA failed: Invalid argument

因为系统安装完毕后,硬盘的 DMA 模式默认是没有打开的,一般方法是在 /etc/rc.d/rc.local 最后面加上一行:

/sbin/hdparm -d1 -c3 -m16 /dev/sda

这样每次开机后,硬盘的 DMA 就会开启,不必每次手动设定。