基于SATA控制器的DMA地址对预读取方法技术

技术编号:8347888 阅读:253 留言:0更新日期:2013-02-21 01:17
本发明专利技术公开了一种基于SATA控制器的DMA地址对预取的方法,通过硬件逻辑调用一个预取缓存FIFO模块,缓存FIFO模块对DMA预操作的地址和长度(地址对)进行缓存。DMA做数据传输时,CPU处理DMA的中断请求,判断传输层数据交互的信息,并从数据包中解析出DMA操作的地址对信息,通过DCR总线将数据的地址对信息下发到硬件缓存FIFO模块。只要硬件缓存FIFO模块为空,CPU就会将地址对信息下发到硬件缓存FIFO中。DMA做数据传输时,直接从硬件缓存FIFO中去取地址对信息,省去了DMA去内存取地址对信息来做数据传输的时间,无需等待CPU操作DMA请求的时间,提高了DMA数据传输效率的性能同时提高了CPU操作IO的效率。

【技术实现步骤摘要】

本专利技术涉及于计算机系统的存储
,具体地,涉及一种基于SATA控制器的DMA地址对预取方法。
技术介绍
SATA (Serial Advanced Technology Attachment)是串行高级技术附件,一种基于行业标准的串行硬件驱动器接口,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。SATA可以让用户拥有高效能的硬盘,却不需要牺牲资料的完整性。SATA最大的优势是传输速率高。SATA的工作原理采用连续串行的方式来实现数据传输从而获得较高传输速率。2003年发布SATA1. O规格提供的传输率就已经达到了 150MB/s,不但已经高出普通IDE硬盘所提供的100MB /s (ATA100)甚至超过了 133MB/s (ATA133)的最高传输速率。SATA在数据可靠性方面也有了大幅度提高。SATA可同时对指令及数据封包进行循环冗余校验(CRC),不仅可检测出所有单字节和双字节的错误,而且根据统计学的原理,这样还能够检测出99. 998%可能出现的错误。相比之下,PATA只能对来回传输的数据进行校验,而无法对指令进行校验,加之高频率下干扰甚大,因此数据传输稳定性很差。除了传输速度、传输数据更可靠外,节省空间是SATA最具特色之处,更有利于机箱内部的散热,线缆间的串扰也得到了有效控制。SATA控制器定义了高速接口的物理层phy、数据链路层I ink、传输层transport和应用层application四层协议。现有的SATA控制器物理层,数据链路层和传输层的协议实现,完全是由硬件逻辑来实现,这样硬件结构复杂,导致了实现的过程复杂而且硬件逻辑资源消耗很大。现有的SATA控制器物理层,数据链路层和传输层的协议实现,完全是由硬件逻辑来实现,这样的硬件结构复杂,导致了实现的过程复杂,而且硬件逻辑资源消耗很大。DMA操作数据传输过程需要通过CPU的IO来处理DMA操作的请求,同时CPU分配内存地址和长度来提供DMA操作数据在内存的读和写操作。在这个过程中,DMA操作内存数据的读写是先由DMA发起操作,然后CPU处理DMA的请求,再分配请求的读写内存地址,最后DMA开始做数据的搬移,数据搬移完成后之后告诉CPU此次DMA请求操作完成信息。其中DMA的请求是通过CPU的IO总线来到达CPU的。SATA控制器的传输性能主要取决于DMA工作的效率和CPU处理DMA中断的能力。DMA的工作效率取决于DMA去内存取数据地址和数据长度的时间以及取数据地址和数据长度的次数。传统的DMA基本每次做DMA传输数据都要到内存去取数据地址和数据长度,操作完成再给CPU发中断请求,CPU处理DMA中断请求分配内存地址和长度,DMA每次操作都去内存取地址和长度来传输数据,这样增加了重复去取内存地址和长度的次数,就增加了 DMA传输数据的时间,限制了 DMA数据传输的效率。
技术实现思路
本专利技术的目的在于,针对上述问题,提出一种基于SATA控制器的DMA地址对预取方法,以实现提高DMA数据传输的效率的优点。为实现上述目的,本专利技术采用的技术方案是一种基于SATA控制器的DMA地址对预取方法,包括LIS总线接口模块,DMA状态机,接收数据缓存,发送数据缓存,信息控制模块和预取缓存FIFO模块;所述LIS总线接口模块为连接DMA状态机和内存的LIS总线提供接口,所述LIS总线为在DMA和内存间进行数据传输的数据总线;所述接收数据缓存缓存DMA写入内存的数据;所述发送数据缓存缓存DMA读出内存中的数据;所述信息控制模块对Local link总线接口信号的跨时钟域进行处理和对DMA通过Local link总线接收和发送数据进行控制;所述预取缓存FIFO模块缓存DMA预取数据的地址对;所述DMA状态机执行DMA请求,处理DCR总线寄存器的状态信息和处理DCR总线寄存器地址对信息并对地址对进行预取,实现对地址对对应在内存中的预取数据进行数据搬移,同时控制DMA状态机各个状态的跳变和各个状态的逻辑输出。一种基于SATA控制器的DMA地址对预取方法实现包括上述模块的硬件逻辑,接口实现以及CPU协处理器处理FIS包过程和DMA状态机对传输数据的地址对的预取过程和预取时间以及位置,上述模块的主要硬件逻辑和接口实现包括DMA状态机逻辑和DCR总线接口逻辑。DMA状态机主要是实现SATA控制器到内存的数据搬移和对数据地址对的预取控制,保证传输数据的性能。通过硬件逻辑实现DMA状态机的状态跳转和地址对的预取功能以及DCR总线接口寄存器的控制信息位的判断和控制DMA读写;实现DMA的LIS接口对内存数据的搬移,保证读写数据通路的传输性能。DMA状态机状态跳转将在以下实例说明。DCR总线接口寄存器值通过DCR总线接口的CPU协处理器端实现对SATA控制器传输层FIS包的解析,获取DMA地址对预取的地址和长度并将地址对信息通过DCR总线下发到DMA状态机的地址对寄存器。CPU协处理器的处理FIS包过程和DMA状态机对传输数据的地址对的预取过程和预取时间以及位置,包括以下步骤发送H2D命令寄存器FIS包主机端发送H2D命令寄存器FIS包到设备端,该H2D命令寄存器FIS包内容包含有主机端要求的读、写和包的类型命令字信息;D2H命令寄存器包检测主机端发送完H2D命令寄存器FIS包后等待设备端的响应,若设备端接收到主机的H2D命令寄存器FIS包,设备端则发送D2H命令寄存器包给主机端;DMA设置FIS包检测设备端发送DMA设置FIS包给主机端,主机端CPU接收DMA设置FIS包并从其中解析出DMA数据传输的地址和长度,每个DMA数据传输的地址和长度对应在内存中的一个块区域,每一个块区域在应用层驱动中对应一个slot命令,所述slot是内存中一个块区域在应用层中驱动命令对应的标记符号,CPU取DMA设置FIS包中的数据的地址和长度通过DCR总线接口写到DMA硬件寄存器,所述数据的地址和长度为数据地址对;DMA激活FIS包检测若设备端检测到主机端要求写数据时,在设备端发送DMA设置FIS包后会给主机端发送DMA激活FIS包,然后CPU进入到写数据地址对预取状态;数据地址对预取CPU将上述数据地址通过DCR总线接口写到DMA预取缓存FIFO模块;设置设备位FIS包检测数据传输完成后主机端会收到设备端的SDB FIS包,结束一次·数据传输操作。根据本专利技术的优选实施例,所述数据地址对预取包括写数据地址对预取=CPU将写数据地址对通过DCR总线接口写到DMA预取缓存FIFO模块;以及读数据地址对预取=CPU将读数据地址对通过DCR总线接口写到DMA预取缓存FIFO模块。本专利技术的技术方案,通过硬件逻辑调用一个预取缓存FIFO模块,缓存FIFO模块对DMA预操作的地址和长度(地址对)进行缓存。DMA做数据传输时,CPU处理DMA的中断请求,判断传输层数据交互的信息,并从数据包中解析出DMA操作的地址对信息,通过DCR总线将数据的地址对信息下发到硬件缓存FIFO模块。只要硬件缓存FIFO模块为空,CPU就会将地址对信息下发到硬件缓存FIFO中。DMA做数据传输时,直接从硬件缓存FIFO中去取地址对信息,省去了 DMA去内存本文档来自技高网
...

【技术保护点】
一种基于SATA控制器的DMA地址对预取方法,其特征在于,包括LIS总线接口模块,DMA状态机,接收数据缓存,发送数据缓存,信息控制模块和预取缓存FIFO模块;所述LIS总线接口模块:为连接DMA状态机和内存的LIS总线提供接口,所述LIS总线为在DMA和内存间进行数据传输的数据总线;所述接收数据缓存:缓存DMA写入内存的数据;所述发送数据缓存:缓存DMA读出内存中的数据;所述信息控制模块:对Local?link总线接口信号的跨时钟域进行处理和对DMA通过Local?link总线接收和发送数据进行控制;所述预取缓存FIFO模块:?缓存DMA预取数据的地址对;所述DMA状态机:执行DMA请求,处理DCR总线寄存器的状态信息和处理DCR总线寄存器地址对信息并对地址对进行预取,实现对地址对对应在内存中的预取数据进行数据搬移,同时控制DMA状态机各个状态的跳变和各个状态的逻辑输出。

【技术特征摘要】

【专利技术属性】
技术研发人员:张庆敏张衡胡刚
申请(专利权)人:无锡众志和达存储技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1