[发明专利]用于执行DMA块移动的方法及DMA设备无效
申请号: | 200810001637.7 | 申请日: | 2008-01-07 |
公开(公告)号: | CN101221544A | 公开(公告)日: | 2008-07-16 |
发明(设计)人: | R·尼古拉斯;B·C·德雷鲁普;J·古普塔;G·比朗;L·E·德拉托尔 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F13/30 | 分类号: | G06F13/30 |
代理公司: | 北京市中咨律师事务所 | 代理人: | 于静;李峥 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 执行 dma 移动 方法 设备 | ||
技术领域
本申请通常涉及改进的数据处理系统和方法。更具体地说,本申请涉及具有用于高等待时间和乱序直接存储器访问设备的屏障和中断机制的直接存储器访问控制器。
背景技术
许多片上系统(SOC)设计都包含一种称为直接存储器访问(DMA)控制器的设备。DMA的用途是高效地将数据块从存储器中的一个位置移动到另一个位置。DMA控制器通常用于在系统存储器与输入/输出(I/O)设备之间移动数据,但是也用于在系统存储器中的一个区域与另一个区域之间移动数据。DMA控制器被称为“直接”是因为移动数据时不涉及处理器。
在没有DMA控制器的情况下,可以通过在软件控制下,使处理器逐步地将数据从一个存储器空间复制到另一个存储器空间来移动数据块。这对于较大数据块而言通常并不可取。当处理器逐步地复制较大数据块时,速度比较缓慢,因为处理器没有较大的存储器缓冲区并且必须以较小的大小低效率地移动数据,例如每次32位。此外,当处理器进行复制时,它没有时间执行其他工作。因此,处理器一直处于使用状态直至移动完成。使DMA控制器承担这些数据块移动可以更高效,DMA控制器可以更快地并且与其他工作并行地执行这些移动。
DMA控制器通常具有多个“通道”。如在此使用的,“通道”指要通过DMA控制器移动的独立数据流。因此,可以将DMA控制器编程为在不同的通道上同时执行数个块移动,从而允许DMA设备同时向/从数个I/O设备传输数据。
DMA控制器的另一个典型特性是分散/收集操作。分散/收集操作是指其中处理器不需要为要从某一源移动到某一目的地的每个数据块对DMA控制器进行编程的操作。相反,处理器在系统存储器中建立描述符表或描述符链接列表。描述符表或链接列表是一组描述符。每个描述符都描述了数据块移动,包括源地址、目的地地址以及要传输的字节数。将非分散/收集块移动(直接通过DMA寄存器进行编程)称为“单个编程”DMA块移动。
DMA控制器的链接列表体系结构比表体系结构更具灵活性和动态性。在链接列表体系结构中,处理器使DMA通道之一引用链中的第一个描述符,并且链接列表中的每个描述符都包含指向存储器中下一个描述符的指针。描述符可以位于系统存储器中的任何位置,并且处理器可以在发生传输时动态在列表中进行添加。DMA控制器自动遍历表或列表并执行每个描述符所描述的数据块移动,直至到达表或列表的结尾。
现代的DMA设备可以连接到允许读取数据乱序返回的总线。也就是说,DMA控制器可以向总线发出数个全部为相同或不同数据块移动的一部分的读取事务,并且目标设备可以按照与发出读取顺序不同的顺序返回数据。通常,发起者为每个读取事务分配一个“标记”号,以便当读取数据从总线返回时,发起者将根据标记知道数据所属的事务。
排队的事务可以以任何顺序完成。这允许DMA设备通过同时将多个事务排队到总线(包括将不同事务排队到不同设备)来实现最佳性能。读取事务可以以任何顺序完成,并且当读取数据到达时立即启动其关联的写入。允许按照任何顺序完成读取及其关联写入将在给定总线上实现可能的最佳性能,但是可能会导致某些问题。
当系统软件建立要在I/O设备与存储器之间移动或从存储器中的一个区域移动到另一个区域的大型存储器块时,软件将需要知道何时完成移动数据块以便它可以对数据采取操作。由于处理器或某些其他设备可能会在传输完成时对数据采取操作,所以必须直至所有与移动关联的数据都已传输时才能生成中断;否则,处理器可能会尝试对尚未传输的数据采取操作,并且因此将读取错误的数据。在乱序执行时,DMA设备不能简单地在块中的最后一个事务完成时生成中断。
某些系统通过当一系列数据移动完成时使“完成代码”移动到“邮箱”来工作。邮箱是用作消息的先进先出(FIFO)的消息传送设备。当DMA控制器通过写入邮箱地址来将消息传送到邮箱时,DMA控制器可以按顺序将消息传送到处理器。消息通常很小,在八字节或十六字节的量级。当软件在分散/收集列表中建立一系列块移动时,软件可以在描述符链接列表中输入完成消息,以便DMA设备可以通过同一分散/收集描述符列表来移动数据块和完成代码消息两者。
但是,为了使软件正确工作,当DMA控制器将完成消息写入邮箱时,正在写入邮箱的描述符之前的所有描述符都必须已完成,因为邮箱像中断一样,将通知处理器已移动一定量的数据。由于所有事务都可以为了性能而乱序完成,所以DMA设备可以在来自先前描述符的某些其他事务完成之前将完成消息写入邮箱,除非存在一种机制来防止这种情况。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810001637.7/2.html,转载请声明来源钻瓜专利网。