用于执行直接存储器存取的方法和系统技术方案

技术编号:2832400 阅读:192 留言:0更新日期:2012-04-11 18:40
提供一种构造为松散地耦合的直接存储器存取引擎(DE)和总线引擎(BE)的直接存储器存取(DMA)设备。DE将编程的数据块分拆成单独的事务,解释分散/聚集(scatter/gather)描述符,以及在通道间判优。DE和BE使用能够在该DE和BE之间排队的组合的读写(RW)命令。总线引擎(BE)具有两个读队列和一个写队列。第一读队列用于“新的读”以及第二读队列用于“旧的读”,旧的读是已经在总线上重试过至少一次的读。BE将绝对优先级给新的读,并且仍避免死锁状况。

【技术实现步骤摘要】
用于执行直接存储器存取的方法和系统
本申请一般涉及改进的数据处理系统和方法。更具体地,本申请针对一 种支持高等待时间设备的直接存储器存取控制器。
技术介绍
许多在片系统(system-on-a-chip, SOC )设计包含叫做直接存储器存取 (DMA )控制器的设备。DMA的目的是有效地将数据块从存储器中的一个位置移动到另 一个位置。DMA控制器通常用来在系统存储器和输入/输出 (I/O)设备之间移动数据,但是也用来在系统存储器中一个区域和另一个区域之间移动数据。因为在移动数据时不涉及处理器,所以DMA控制器被叫做直接。没有DMA控制器,可以通过使处理器在软件控制下将数据逐片地从一 个存储器空间复制到另 一个存储器空间来移动数据块。这对大块数据通常不 可取。使处理器逐片地复制大块数据块是緩慢的,因为处理器不具有大存储 緩冲器以及必须以小的、低效率的大小(诸如每次32位)移动数据。同样, 当该处理器进行复制时,其没空进行其他工作。因此,占用该处理器直到移 动完成。卸载这些数据块移动到DMA控制器则好很多,DMA控制器能够更 快地完成它们以及并行地完成其他工作。DMA控制器通常具有多个通道(channel)。因此,可以编程该DMA控 制器来在不同的通道上同时地执行几个块移动,允许该DMA设备同时向或 从几个I/O设备传送数据。DMA控制器典型的另 一个特征是分散/聚集特征。当执行分拟聚集操 作时,无须对于每个块由处理器对DMA控制器编程。相反地,处理器依靠 该分散/聚集结构在存储器中设置描述符表,,或描述符链接列表。每个描述 符描述数据块移动,包括源地址、目的地址和要传送的字节数目。经由该DMA 寄存器直接地编程的非分散/聚集块移动被称为单独编程的DMA块移动。与表结构相比,链接列表结构是灵活和动态的。在链接列表结构中,处理器指示DMA通道中的一个给链中的第一描述符,并且在链接列表中的每个描述符包含到存储器中下一个描述符的指针。描述符可以在存储器的任何地方,以及当传送发生时处理器可以动态地将其加入列表。DMA控制器自动 地遍历所述表或列表并且执行由每个描述符描述的数据块移动直到达到该表 或列表的结尾。如果期望高的总线利用则高等待时间设备呈现独特挑战。如果总线在大 部分时间传输数据而没有间隙或停止,则每个总线具有能够实现的最大维持 带宽。当与高等待时间设备对话时,必须存在足够的未完成的同时事务,从 而从高等待时间设备接收数据花费的时间小于或等于从所有其他的排在它前 面的未完成的事务传送数据花费的时间量。如果满足该准则,则在总线上将 很少有间隙或停止,其中DMA在总线上等待数据并且不具有任何其他可以 传输的数据。许多总线和互连不能在每个主机(master)中处理16或更多未完成的读 事务,但是大部分总线确实具有简单重试机制。重试是由目标给出的响应, 其告诉主机在稍后时间重复相同事务,因为目标在那时无法完成该事务。延迟读取是高等待时间目标用于通过当高等待时间目标获取高等待时 间数据时不停止总线来提高总线利用的方法。目标典型地具有下述选项将 等待状态插入事务中以延迟该事务的完成直到其能够返回数据。等待状态对 高等待时间目标非常低效,因为这种目标必须每个事务插入许多等待状态, 并且当总线在等待状态时,不能运行其他从任何主机到任何目标的事务。总 线被停止。延迟读取避免了由于高等待时间读取而停止总线。延迟读取工作如下。当高等待时间目标接收新的读取请求时,其将重试 该请求并且同时排队事务以及开始处理它。重试马上释放总线并且允许总线 判优器来允许运行来自相同或不同的主机的下一事务。当目标已经排队读取 .时,该读取变为挂起。如果主机在目标有可以返回的数据前回到重复的事务, 则目标再次重试该事务并且读取依然挂起。当主机回到重复的事务并且目标确实具有排队并准备返回的所请求的数 据时,目标接受事务并且马上返回该数据。延迟的读取允许目标对与其设计 用于同时处理的事务一样多的事务进行排队,而不管总线支持多少未完成的 事务。总线不具有在目标内有多少事务被排队的任何知识。因此,延迟的读 取是在任何给定的总线上排队众多同时事务的好方法
技术实现思路
说明性实施例认识到现有技术的缺点,并且提供一种构造为松散地耦合 的直接存储器存取引擎和总线引擎的直接存储器存取设备。该直接存储器存 取引擎将编程的数据块移动分拆成单独的事务,解释分散/聚集描述符,以及 在通道间判优。总线引擎理解直接存储器存取设备所附属的总线的总线协议, 并且运行由直接存储器存取引擎送出的所有事务。直接存储器存取引擎和总 线引擎通过使用能够在直接存储器存取引擎和总线引擎之间排队的已组合的 读写(RW)命令使得处理更有效。总线引擎具有两个读队列和一个写队列。 第一读队列用于新的读取,,以及第二读队列用于旧的读取,旧的读取是已 经在总线上重试过至少一次的读取。总线引擎将最高优先级给新的读取,因 为它们是高等待时间。这种机制提供来给予新的读取绝对优先级,并且仍避 免死锁状况的方法。在一个说明性实施例中,提供一种用于在直接存储器存取设备中执行直接存储器存取块移动的方法。该方法包括在直接存储器存取设备中的直接 存储器存取引擎处接收直接存储器存取块移动请求,其中该直接存储器存取 块移动请求指示源和目标。该方法进一步包括在直接存储器存取设备中从 直接存储器存取引擎向总线引擎发出关于直接存储器存取块移动请求的一个 或多个读写命令。该方法进一步包括由总线引擎对于一个或多个读写命令的每个执行从源读取数据的读取操作和将数据写入目标的写操作,以满足直 接存储器存取块移动请求。在一个示范性实施例中,在一个或多个读写命令中的每个读写命令包括 源地址、目的地址和字节计数。在另一个示范性实施例中,该字节计数对应 于总线引擎的緩沖器大小。在另一个示范性实施例中,该方法包括响应于在总线引擎处接收给定 的读写命令,如果在该总线引擎中的緩冲器空间没有满,则向直接存储器存 取引擎返回确认应答。在再一个示范性实施例中,该方法进一步包括响应 于在总线引擎处接收给定的读写命令,如果在该总线引擎中的緩冲器空间已 满,则保留对该直接存储器存取引擎的确认应答,以及响应于在总线引擎中 緩冲器空间变为可用,返回确认应答到直接存储器存取引擎。直接存储器存 取引擎不发出后续的读写命令,直到在直接存储器存取引擎处接收确认应答。 在再一个示范性实施例中,执行读操作和写操作包括将与给定读写命令 相关联的读事务置于该总线引擎中的新的读队列中。在再一个示范性实施例中,执行读操作和写操作进一步包括从新的读队列运行读事务,确定该读 事务是否是重试,以及如果该读事务不是重试,则将与该读写命令相关联的 写事务置于总线引擎中的写队列中。在再一个示范性实施例中,执行读操作 和写操作进一步包括如果该读事务是被重试,则将该读事务置于旧的读队 列中。在再一个说明性实施例中,数据处理系统包括总线、多个耦合到总线 的总线单元设备、耦合到总线的直接存储器存取设备、和处理单元。所述直 接存储器存取设备包括直接存储器存取引擎和总线引擎。所述处理单元有接 入到总线的通路。直接存储器存取引擎从处理单元中接收直接存储器存取块 移动请求。直接存储器存取块移动请求指示在多个总本文档来自技高网
...

【技术保护点】
一种用于在直接存储器存取设备中执行直接存储器存取块移动的方法,该方法包括:    在直接存储器存取设备内的直接存储器存取引擎处接收直接存储器存取块移动请求,其中该直接存储器存取块移动请求指示源和目标;    在直接存储器存取设备内从直接存储器存取引擎向总线引擎发出关于直接存储器存取块移动请求的一个或多个读写命令;以及    由总线引擎对于一个或多个读写命令中的每一个执行从源读取数据的读操作和将数据写入目标的写操作,以满足直接存储器存取块移动请求。

【技术特征摘要】
US 2006-9-18 11/532,5621.一种用于在直接存储器存取设备中执行直接存储器存取块移动的方法,该方法包括在直接存储器存取设备内的直接存储器存取引擎处接收直接存储器存取块移动请求,其中该直接存储器存取块移动请求指示源和目标;在直接存储器存取设备内从直接存储器存取引擎向总线引擎发出关于直接存储器存取块移动请求的一个或多个读写命令;以及由总线引擎对于一个或多个读写命令中的每一个执行从源读取数据的读操作和将数据写入目标的写操作,以满足直接存储器存取块移动请求。2. 如权利要求l所述的方法,其中在一个或多个读写命令内的每一个读 写命令包括源地址、目的地址和字节计数。3. 如权利要求2所述的方法,其中对于给定的读写命令,所述字节计数对应于总线引擎的緩冲器大小。4. 如权利要求l所述的方法,进一步包括响应于在总线引擎处接收给定的读写命令,如果在该总线引擎内的緩冲 器空间没有满,则向该直接存储器存取引擎返回确认应答。5. 如权利要求4所述的方法,进一步包括响应于在总线引擎处接收给定的读写命令,如果在该总线引擎内的緩冲 器空间已满,则保留对该直接存储器存取引擎的确认应答;以及响应于在总线引擎中緩冲器空间变为可用,返回确认应答到直接存储器 存取引擎,其中直接存储器存取引擎不发出后续的读写命令,直到在该直接 存储器存取引擎处接收所述确认应答。6. 如权利要求l所述的方法,其中执行所述读操作和写操作包括 将与给定读写命令相关联的读事务置于在总线引擎内的新的读队列中。7. 如权利要求6所述的方法,其中执行所述读操作和写操作进一步包括 从新的读队列中运行读事务;确定该读事务是否是被重试;以及如果该读事务不是被重试,则将与读写命令相关联的写事务置于在总线 引擎内的写队列中。8. 如权利要求7所述的方法,其中执行所述读操作和写操作进一步包括如果该读事务是被重试,则将该读事务置于旧的读队列中。9. 一种数据处理系统,包括 总线;多个耦合到总线的总线单元设备;耦合到总线的直接存储器存取设备,其中该直接存储器存取设备包括直 接存储器存取引擎和总线引擎;和处理单元,其中该处理单元有到总线的通路,其中直接存储器存取引擎从处理单元中接收直接存储器存取块移动请 求,其中直接存储器存取块移动请求指示在多个总线单元设备内的源设备和 目标设备;其中直接存储器存取引擎向该总线引擎发出 一个或多个关于直接存储器 ...

【专利技术属性】
技术研发人员:乔拉拜兰卢斯E德拉托尔伯纳德C德雷鲁普约蒂古普塔理查德尼古拉斯
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1