专利名称:用于改进的dmac翻译机制的系统和方法
技术领域:
本发明涉及用于改进的DMA控制器翻译机制的系统和方法。更 具体地,本发明涉及用于将实际页号存储在DMA命令字段中,以便 在DMA命令调出期间使用实际页号的系统和方法。
背景技术:
计算机系统应用一般指定一个有效地址或间接地址来存储和取回 数据。为了完成数据存储或取出请求,计算机系统将有效地址翻译成 与存储器中的物理位置相对应的实际地址或物理地址。计算机系统一般包括用于提供有效地址到实际地址翻译的存储器 管理单元(MMU)。在一种配置中,由于所有的加载和存储指令需要 地址翻译,所以DMA队列一直在访问MMU,这增加了延时并消耗 了更多的功率。另一种配置使用有效地址到实际地址翻译器(ERAT)加上第二 级MMU。 ERAT包括用于存储以前的地址翻译的查找表。当DMA 队列向ERAT发送DMA请求(包括有效地址)时,ERAT查看自己 的查找表以寻找有效地址匹配。如果存在匹配,则ERAT提供相应的 实际地址,而避免了 MMU访问。然而,如果ERAT没有找到与DMA 请求的有效地址相对应的条目,则ERAT向MMU发送"未命中", MMU接着执行在前面第一种配置中讨论的相同步骤。当MMU识别出对应的实际页号时,MMU将该实际页号发送到 ERAT,由ERAT将其加栽到自己的表中。使用这种配置,由于在ERAT 发现与有效地址之间的匹配时不需要访问MMU,所以ERAT提供了 电路性能改进。然而,面临的挑战是为了使ERAT获得良好的"命 中率",ERAT的查找表必须包括大量条目,这可能消耗大量的功率和物理面积。此外,面临的另一项杏k战是ERAT仍然为每一个DMA 请求执行查找,这也增加了延时。因此,需要一种用于改进的有效地址到实际地址翻译机制的系统 和方法。发明内容已经发现,使用用于将实际页号存储在DMA命令字段中,以便 在DMA命令调出期间使用这些实际页号的系统和方法,就能解决上 述挑战。DMA队列从存储器管理单元接收实际页号并将这些实际页号 存储在相应的DMA命令字段中用于后续的DMA请求。这样,DMA 队列就不那么频繁地访问MMU以进行地址翻译,而这通过更低的延 时和功耗又提高了系统性能。DMA队列包括具有相应的DMA命令字段的DMA命令,所述 DMA命令字段包括1)队列条目有效位,2)有效地址字段,3)实 际地址有效位,4)实际页号字段,5)传输类型字段,和6)传输大小 字段。队列条目有效位标识相应的DMA命令是否有效。有效地址字 段包含相应的DMA命令的有效地址。实际地址有效位标识在实际页 号字段中的实际页号是否有效。传输类型字段标识DMA命令的类型, 例如加载或存储。另外,传输大小字段包括剩余还未传输的数据量。DMA队列识别准备好发出的DMA命令(例如,无依赖性)。在 命令从DMA队列分派出去后,下游逻辑检查DMA命令的相应的实 际地址有效位,以《更确定是否访问MMU以进行地址翻译。如果DMA 命令的实际地址有效位被置位,则包括在实际页号字段中的实际页号 通过复用器被发送到总线接口单元,所述复用器被配置为从DMA队 列接收实际页号。此外,DMA队列将DMA请求(包括有效地址)和 命令参数(包括传输大小)发送到调出逻辑。调出逻辑使传输大小递 减,确定DMA队列是否可以使用现有的实际页号用于后面的调出 DMA请求,并向DMA队列发送"写回信息"。接着,DMA队列将该 写回信息存储到DMA命令的命令字段中。这样,当DMA队列"调出"相同的DMA命令并执行另一个DMA请求时,下游逻辑检查实际地 址有效位,如果它被置位,则从DMA命令的实际页号输出中提取实 际页号,并将它发送到总线接口单元。结果,MMU不被频繁地访问, 这改进了总体系统性能。在一种实施方式中,无论实际地址有效位的值是什么,由于硬件 约束,DMA请求都被自动发送到MMU。在该实施方式中,DMA逻 辑使用实际地址有效位加上其它参数来确定是否需要翻译请求。翻译 请求或者有效地址有效请求是从DMA逻辑发送到MMU的。如果该 请求被断言(assert),那么MMU寻找相应的实际页号并通过复用器 将新的实际页号发送到总线接口单元,所述复用器选择该新的实际页 号输出。此外,MMU将该新的实际页号发送到DMA队列,在DMA 队列中,该新的实际页号被写回到相应的实际页号字段中,用于后面 的DMA请求。当MMU执行地址翻译时,调出逻辑还接收DMA请求以及命令 参数。接着,调出逻辑使传输大小递减,确定MMU是否完成了成功 的地址翻译,并发送写回信息到DMA队列,由DMA队列将其存储 在DMA命令的相应的命令字段中,用于后面的DMA请求。以上就是对发明内容的概述,因而在必要的情况下包含了细节的 简化、概括和省略;因此,本领域的技术人员将会理解该
发明内容
部分只是示意性的,而绝非限制性的。在以下阐述的非限制性的详细 描述中将会清楚仅由权利要求限定的本发明的其它方面、创新特征和 优点。
参照附图,可以更好地理解本发明,使本领域的技术人员清楚它 的多个目的,特征和优点。图1是示出将有效地址翻译成实际页号的存储器管理单元 (MMU)的图;图2是示出正在执行地址翻译的有效地址到实际地址翻译器(ERAT)和存储器管理单元(MMU)的图;图3是示出从MMU接收实际页号并将该实际页号存储在相应的 DMA命令字段中以在后面的DMA请求中使用的DMA队列的图;图4是示出多个DMA请求以及如何基于三种不同的配置进行地 址翻译的表;图5是示出具有DMA命令以及相应的命令字段的DMA队列的图;图6是示出在发送出去或发出DMA命令时采用的步骤的高级流程图;图7是示出在调出处理,例如使DMA命令传输大小递减以及提 供写回信息到DMA队列时采用的步骤的流程图;图8是示出在存储器管理单元接收翻译请求以及向总线接口单元 和DMA队列提供实际页号时釆用的步骤的流程图;以及图9图示了一个信息处理系统,它是能够执行这里描述的运算操 作的计算机系统的一个简化例子。
具体实施方式
下面想要给出对本发明的一个例子的详细描迷,但不应被拿来限 制发明本身。相反,任意数量的变型可以落入本发明的范围内,这在 说明书所附的权利要求书中限定。图1是示出将有效地址翻译成实际页号的存储器管理单元 (MMU)的图。图1显示现有技术中用来处理DMA命令(例如,存 储器加载和存储操作)的地址翻译配置。根据DMA命令的传输大小 以及计算机系统一次传输的数据量,DMA命令被"解开"。例如,如果 计算机系统以128字节的增量传输数据,而DMA命令是512字节, 那么DMA命令被解开到4个DMA请求中(128x4=512)。图1包括DMA队列100、 MMU 120和总线接口单元140。 DMA 队列IOO识别准备好发出(例如,无依赖性)的DMA命令,并发送 DMA请求110到MMU 120,该请求包括对应于DMA命令的有效地址。MMU 120接收DMA请求110并且访问包括有效地址和对应的实 际页号的查找表。如果包括在DMA请求110中的有效地址与在查找 表中存储的有效地址匹配,则MMU 120将相应的实际页号130发送 到总线接口单元140。另一方面,如果MMU 120没有找到与DMA请求110相对应的 匹配的有效地址,那么MMU 120通知DMA队列100发生了"未命中"。 MMU 120还向存储器请求翻译信息并将来自存储器的翻译信息加栽 到查找表中。在加载完成后,MMU 120告知DMA队列100重新发送 先前未命中的相同的DMA请求。这样,图1中所示的配置对于每个DMA请求执行查找或存储器 访问,即使该DMA请求是对于同一 DMA命令的多个DMA请求的一 部分,这样效率不高并且降低了处理器性能。图2是示出正在进行地址翻译的有效地址到实际地址翻译器 (ERAT )和存储器管理单元(MMU )的图。图2示出了 一种替代的 地址翻译配置。ERAT 200跟踪以前的地址翻译结果,因此不是对于 每个DMA请求都访问MMU 120。然而,正如下面所讨论的,ERAT 200仍然对于每个DMA请求都执4亍查找,这在功率和面积方面仍然效 率不高,但是与图1中的配置相比改进了延时。DMA队列100向ERAT 200发送与准备好发出的DMA命令相对 应的DMA请求IIO,该DMA请求包括对应于DMA命令的有效地址。 接着,ERAT 200访问包含有效地址和相应的实际页号的查找表。 ERAT 200进行检查以发现查找表是否包括与包括在DMA请求110 中的有效地址相关的条目。如果包括在DMA请求110中的有效地址 与查找表中的存储的有效地址匹配,则ERAT 200将实际页号130发 送到总线接口单元140。 DMA队列100、 DMA请求110、实际页号 130和总线接口单元140与图1中所示的相同。另一方面,如果ERAT 200没有发现与DMA请求110的有效地 址相对应的匹配,则ERAT 200将未命中220发送到MMU120。MMU 120然后对包括在DMA请求110中的有效地址进行地址翻译。接着,MMU 120访问它的包括有效地址和相应的实际页号的查找 表,以发现对于DMA请求110的有效地址是否存在匹配(例如在图1 中讨论的步骤)。如果查找表包含有效地址,则MMU 120识别其对 应的实际页号并将MMU RPN 230发送到ERAT 200。 ERAT 200将有 效地址和MMURPN 230包括在其查找表中,以供后面引用。此外, DMA请求必须被重新发送。当请求被再次重发时,ERAT 200对有效 地址进行匹配,并将RPN输送到总线接口单元。MMU120与图1中 所示的相同。如果MMU 120在其查找表中没有找到与DMA请求110的有效 地址相对应的条目,那么MMU 120访问存储器,以便获得正确的地 址翻译(例如,在图1中讨论的步骤)。 一旦MMU 120识别出与DMA 请求110的有效地址相对应的实际页号,那么MMU 120发送MMU RPN 230到ERAT 200,由ERAT 200将其存储在自己的查找表中。 DMA请求必须纟皮再次重发,此时ERAT 200对有效地址进行匹配并将 RPN 130输送到BIU 140。可以看出,DMA队列100访问ERAT 200 以对每个DMA请求进行地址翻译,即使该DMA请求是对于同一 DMA命令的多个DMA请求的一部分。图3是示出从MMU接收实际页号并将该实际页号存储在相应的 DMA命令字段中以用于后面的DMA请求的DMA队列的图。因此, 图3所示的配置比图l和2所示的配置效率更高。DMA队列300包括具有相应的DMA命令字段的DMA命令,所 述DMA命令字段包括1)队列条目有效位,2)有效地址字段,3)实 际地址有效位,4)实际页号字段,5)传输类型,和6)传输大小字段。 队列条目有效位标识相应的DMA命令是否有效。有效地址字段包含 相应的DMA命令的有效地址。实际地址有效位标识包括在实际页号 字段中的实际页号是否有效。传输类型标识DMA命令的类型,例如 加载或存储。另外,传输大小字段包括剩余还未传输的数据量(参考 附图5和相应的文字描述以了解有关DMA命令字段的更多细节)。DMA队列300识别准备好发出的DMA命令(例如,无依赖性),并且检查DMA命令的相应的实际地址有效位,以便确定是否访问 MMU 320进行地址翻译。如果DMA命令的实际地址位被置位,那么 DMA队列300从实际页号字段提取实际页号并且通过复用器370将实 际页号360发送到总线接口单元380 ,复用器370被配置为从DMA队 列300接收实际页号。此外,DMA队列300将DMA请求308和命令 参数325发送到调出逻辑330,所述命令参数325包括DMA命令的传 输大小。调出逻辑330使传输大小递减,确定DMA队列300是否可 以使用现有的实际页号用于后面的调出DMA请求,并发送写回信息 340到DMA队列300(参考图7和相应的文字描述以了解有关调出处 理的更多细节)。接着,DMA队列300将写回信息340加栽到DMA 命令的命令字段中。因此,当DMA队列300"调出,,相同的DMA命令 来执行另一个DMA请求时,DMA队列300检查实际地址有效位,如 果它被置位,则从DMA命令的实际页号字段提取实际页号,并将实 际页号360发送到总线接口单元380。结果,MMU320不被那么频繁 地访问,这改进了整体系统性能。
逻辑310控制被发送到MMU 320的有效地址(EA俯求有效315, 该有效地址请求有效315是基于几种因素而定的。首先,在实模式中, MMU320不执行任何翻译,因此,EA请求有效315被反断言。其次, 诸如"sync,,和"eido,,等命令类型不需要翻译,因而EA请求有效315 保持反断言。第三,在缺少最初两个条件的情况下,逻辑310使用RA 有效305来确定EA请求有效315是否应被断言。
当逻辑310识别出DMA命令的实际地址有效位没有被置位(上 面第三个前述条件),因此需要地址翻译时,逻辑310激活EA请求 有效315。同时,DMA队列300从DMA队列300向MMU 320发送 DMA请求308。接着,MMU 320寻找相应的实际页号并通过复用器 370将新的实际页号350发送到总线接口单元380,所述复用器370选 择新的实际页号350作为输入。此外,MMU320将新的实际页号350 发送到DMA队列300,由DMA队列300将其加载到相应的实际页号 字段中用于后面的DMA请求。如果MMU 320在自己的查找表中没有找到与DMA请求308的 有效地址相对应的条目,则MMU 320访问存储器以便获得正确的地 址翻译。对于DMA命令设置MMU发出依赖性,使得该命令不被重 发,直到MMU已从存储器加载了翻译。 一旦MMU发出依赖性清零, 则DMA命令重新发出,并且它的有效地址产生"命中,,。参考图7和8, 了解有关更多细节的相应文字描述。
当逻辑310在缺少用于确定EA请求有效315的最初两个因素(上 面已讨论)的情况下识别出RA有效305被断言时,不需要任何翻译, 因此逻辑310不断言EA请求有效315。在这种情况下,DMA 300经 由复用器370将实际页号360输送到BIU 380。
调出逻辑330接收DMA请求308和命令参数325。接着,调出逻 辑330使传输大小递减,确定MMU 320是否执行了成功的地址翻译, 并且发送写回信息340到DMA队列300,由DMA队列300将该信息 存储到DMA命令的相应的命令字段中(参考图7和相应的文字描述 以了解有关调出处理的更多细节)。
图4是示出基于三种不同配置的多个DMA请求以及它们的地址 翻译位置的表。表400包括列420到440,它们分别对应于在表1-3 中示出的配置。歹。420到440包括用于在DMA命令被调出时提供地 址翻译的DMA请求活动。在图4中示出的例子对应于请求传输4KB 数据的DMA命令,计算机系统以128字节增量来传输数据。因此, 为了执行DMA命令,需要三十二次请求(由列410指示) (128Bx32-4KB )。
列420显示对于图1所示的实施方式,DMA队列对于三十二次请 求中的每次请求都访问存储器管理单元。列430显示对于图2所示的 实施方式,DMA队列对于第一次请求访问ERAT,接下来ERAT访 问MMU。对于第2次到第32次请求,DMA队列访问ERAT,由ERAT 从ERAT的查找表提供实际页号,从而不必访问MMU。
列440显示对于这里描述的发明(图3) , DMA队列对于第一次 请求访问MMU,之后对于第2次到第32次请求,因为DMA队列在第 一次DMA请求后将实际页号存储在DMA命令的相应的DMA命令 字段中,所以由DMA队列自己将实际页号提供给总线接口单元。
图5是示出具有DMA命令以及相应的命令字段的DMA队列的 图。DMA队列300与图3中所示的相同,它包括与具体的DMA命令 相对应的DMA命令字段(列510到560 )。
列510包括队列条目有效位,它标明相应的DMA命令是否有效。 在相应的数据被完整地传输之前,DMA命令一直保持有效。例如,对 于以128字节增量传输数据的系统以及请求传输128字节以下的数据 的DMA命令,队列条目有效位对于一次传输保持有效,然后被重置。 在另一个例子中,对于以128字节增量传输数据的系统以及请求传输 512字节数据的DMA命令,队列条目有效位保持有效,直到四次传输 被成功地送到总线接口单元(128x4),然后队列条目有效位被重置。
列520包括DMA命令有效地址,它们被翻译成实际页号并被存 储在列540中。列530包括实际地址有效位,它标明包括在列540中 的实际页号是否有效。使用上面有关请求传输512字节数据的DMA 命令的例子,在第一次传输时,DMA命令的实际页号字段没有有效的 实际页号,因而实际地址有效位未被置位。DMA队列300在第一次传 输时从MMU接收实际页号,还从包括被置位的实际地址有效位的调 出逻辑接收写回信息。因此,在第二次到第四次传输时,DMA队列 300将存在于列540中的实际页号发送到总线接口单元,并且对于第 二次到第四次传输不访问MMU。
列550包括DMA命令的相应的传输类型,例如它是加载还是存 储操作。不需要由MMU进行翻译的其他命令,例如"sync"和"eieio" 也可以从DMA队列发出。列560是传输大小字段,它包括DMA命 令传输大小值。传输大小值对应于在相应的DMA命令下剩余还未传 输的数据量。使用以上请求传输512字节数据的DMA命令的例子, 在第一次传输前,传输大小值是512字节。在第二次传输前,传输大 小值是384字节(512B-128B),这是从调出逻辑接收的递减后的传 输大小(参考图7和相应的文字描述以了解有关递减的传输大小的更多细节)。在第三次传输前,传输大小值是256字节(384B-128B)。 而在第四次传输前,传输大小值是128字节。
DMA队列300包括对应于DMA命令的行570到595。行570和 595显示相应的DMA命令是有效的(列510 )并且在列540中包括有 效的实际地址(列530 )。行580显示相应的DMA命令是有效的(列 510)但在列540中不包括有效的实际地址(列530)。行590显示相 应的DMA命令不是有效的(列510)并且在列540中不包括有效的实 际地址(列530 )。
图6是示出在DMA队列调出DMA命令时采用的步骤的高级流 程图。DMA队列使用包括在DMA命令字段中的信息来确定是自身向 总线接口单元发送实际页号还是请求存储器管理单元(MMU )执行地
址翻译(参考图5和相应的文字描述以了解有关DMA命令参数的更 多细节)。
处理开始于600,此后在步骤605, DMA队列识别准备好发出的 DMA命令(例如,无依赖性)。确定DMA命令的相应的实际地址有 效位是否被置位,这表明DMA命令的相应的实际页号是否有效(判 决610)。
假设系统不在实模式下运行并且命令类型是需要地址翻译的类 型,如果DMA命令的相应的实际地址有效位被置位,则判决610前 往"是,,分支612,之后处理在步骤650发送命令参数到调出处理。命 令参数包括实际地址有效位值和传输大小,其中传输大小对应于DMA 命令希望加载或存储的数据量,例如4KB的数据。调出处理接收命令 参数并且相应地修改命令参数,例如使传输大小递减传输大小允许量 (参考图7和相应的文字描述以了解有关调出处理步骤的更多细节)。
在步骤660, DMA队列从DMA命令字段之一提取DMA命令的 实际页号并且将该实际页号发送到总线接口单元380。总线接口单元 380与图3所示的相同,实际页号在到达总线接口单元380之前可以 通过复用器,例如图3所示的复用器370。
在步骤670, DMA队列从调出处理接收写回信息。写回信息包括如上所述的实际地址有效位和递减的传输大小。在步骤680, DMA队 列将写回信息加载到DMA命令的相应的DMA命令字段用于后面的 DMA请求。另一方面,如果DMA队列识别出DMA命令的实际地址有效位 没有被置位,那么判决610前往"否"分支618,之后DMA队列在步骤 620将命令参数发送到调出处理。在步骤625, DMA队列向执行地址 翻译的存储器管理单元(MMU)发送翻译请求。MMU,例如图3中 所示的MMU 320,执行地址翻译并将实际页号发送到总线接口单元 380。 MMU还将实际页号提供给DMA队列,DMA队列处理在步骤 630接收该实际页号。在一种实施方式中,如果MMU在它的表中没有找到对应于有效 地址的表条目,那么MMU发送"未命中,,到调出处理,并且从存储器 取得翻译。在加载了翻译后,MMU处理发送"清除依赖性"到DMA 队列,以通知DMA队列重发相应的命令(参考图8和相应的文字描 述以了解有关MMU处理的更多细节)。在步骤640, DMA队列从调出处理接收写回信息,并且在步骤 645, DMA队列将写回信息和实际页号加载到DMA命令字段中。判断DMA命令是否完成(判决690 )。如果DMA命令需要进一 步的调出(例如,队列条目有效位^l置位),则判决690前往"是,,分 支692,它循环回去继续处理DMA命令。该循环一直继续,直到DMA 命令被调出,此时判决690前往"否,,分支698,之后DMA命令处理在 699结束。图7是示出在调出处理,例如使DMA命令传输大小递减以及提 供写回信息到DMA队列时采用的步骤的流程图。调出处理开始于 700,之后调出处理在步骤705从DMA队列处理接收命令参数(参考 图6和相应的文字描述以了解有关DMA队列处理的更多细节)。命 令参数包括实际地址有效位和传输大小。号到总线接口单元。当实际页号没有被置位时,DMA队列请求存储器 管理单元(MMU )执行地址翻译并且提供实际页号到总线接口单元和 DMA队列。如果实际页号有效,则判决710前往"是"分支718,之后处理绕 开存储器管理单元请求步骤。另一方面,如果实际页号不是有效的, 则判决710前往"否,,分支712,之后处理在步骤715从MMU接收命 中或未命中信号,表明MMU是否找到了与DMA请求的有效地址相 对应的实际页号(参考图8和相应的文字描述以了解有关MMU处理 的更多细节)。判断MMU是否执行了地址翻译(判决720)。如果MMU未曾 执行地址翻译,则判决720前往"否"分支722,之后处理对MMU发 出依赖性位进行置位,该位信息告知DMA队列特定的指令依赖于 MMU执行地址翻译(步骤725 )。在稍后MMU已从存储器收到翻译 时,MMU发送信号到DMA逻辑以清除MMU发出依赖性。直到从 MMU接收到MMU未命中清零信号,DMA命令才被重发(参考图8 和相应的文字描述以了解更多的细节)。另一方面,如果MMU执行了地址翻译,则判决720前往"是"分 支728,之后处理在步骤730对实际地址有效位进行置位,该实际地 址有效位被包括在调出处理发送到DMA队列处理的写回信息中(参 考下文)。在步骤735,处理通过从它在命令参数中接收到的传输大小减去 允许的最大传输大小而使DMA命令的传输大小递减(参考上面的 705)。例如,如果接收到的传输大小是384字节,允许的最大传输大 小是128字节,则递减后的传输大小是256字节。通过分析递减后的 传输大小判断是否还需要其它DMA请求(判决740)。即,如果递减 后的传输大小是零,则不再需要其它DMA请求。然而,如果传输大 小不是零,则还需要其它DMA请求以便完成DMA命令。如果不需要其它DMA请求,则判决740前往"否"分支742,之后 处理复位队列有效位,它表明相应的DMA命令已被完成,因此不再有效(步骤745)。另一方面,如果还需要其它DMA请求,则判决740 前往"是,,分支748,之后处理在步骤750使有效地址递增到下一地址。判断DMA命令是否到达了页的末端(判决760)。例如,存储器 配置可以具有4KB增量的页。如果处理已到达页的末端,则判决760 前往"是,,分支768,之后处理在步骤770复位实际地址有效位,该位 信息通知DMA队列请求MMU对于DMA命令的下一个翻译执行地 址翻译。另一方面,如果处理还没有到达页的末端,则判决760前往 "否,,分支762,绕过实际地址有效位复位步骤。在步骤780,调出处理发送写回信息到DMA队列处理。写回信息 包括最近的变化,例如队列有效位、实际地址有效位和递减的传输大 小。通过检查队列条目有效位来判断DMA命令是否需要进一步的 DMA请求(判决790)。如果队列条目有效位被置位,则判决7卯前 往"是"分支792,之后处理循环回去,处理对于DMA命令的更多的 DMA请求。该循环一直继续,直到DMA命令完成,此时判决790前 往"否,,分支798,之后调出处理在799结束。图8是示出在存储器管理单元接收翻译请求以及向总线接口单元 和DMA队列提供实际页号时采用的步骤的流程图。使用这里描述的 实施方式,当DMA命令在它的DMA命令字段之一中不包括有效实 际页号,传输类型是需要翻译的类型,并且系统正运行在虚模式下(即, 实^=莫式不活动)时,DMA队列访问存储器管理单元(MMU)。MMU处理开始于800,之后MMU在步骤810从DMA队列接收 DMA请求。在步骤820,处理从DMA请求提取有效地址。MMU在 步骤830访问MMU表840,以找到与该有效地址相对应的实际页号。 MMU表840包括一个有效地址和相应的实际页号的列表。判断MMU表840是否包括与有效地址相对应的表条目(判决 850)。如果MMU找到了表条目,则判决850前往"是,,分支852,之 后处理在步骤855发送命中信号到调出处理(参考图7和相应的文字 描述以了解有关调出处理的更多细节)。在步骤860, MMU发送找到 的实际页号到总线接口单元380和DMA队列处理,并且MMU处理在890结束。DMA队列处理将实际页号与DMA命令存储在一起,以 便将实际页号用于后面的DMA请求。总线接口单元380与图3所示 的相同。另一方面,如果MMU在MMU表840中没有找到与有效地址相 对应的表条目,则判决850前往"否"分支858,之后处理发送"未命中,, 到调出处理(步骤870)并从存储库875取得翻译,该翻译被加载到 MMU表840中。在加载了翻译后,MMU处理在步骤885发送"清除 依赖性"到DMA队列,MMU处理在890结束。存储库875可以被存 储在非易失存储区上,例如计算机硬盘。图9图示了一个信息处理系统,它是能够执行这里描述的运算操 作的计算机系统的一个简化例子。宽带处理器体系结构(BPA) 900 包括在单个芯片上的多个异构处理器(片上系统)、公共存储器和公共 总线。异构处理器是具有不同指令集的处理器,它们共享公共存储器 和公共总线。例如,异构处理器之一可以是使用RISC指令集的Power PC,另一个异构处理器可以是使用向量指令集的协同处理单元,二个 处理器共享同一存储空间。BPA卯O包括协同处理单元(SPC) 910、 930和950。每个SPC 包括被耦合到DMA控制器(DMAC )的处理器核,而DMAC被耦合 到总线接口单元(BIU)。 SPC 910包括处理器核915、 DMAC 920和 BIU 925。 SPC 930包括处理器核935、 DMAC 940和BIU 945。而SPC 950包括处理器核955、 DMAC 960和BIU 965。BPA900还包括处理单元975,处理单元975运行操作系统(OS ) 978。例如,处理单元975可以是被嵌入在BPA卯O中的Power PC核, OS 978可以是Linux操作系统。处理单元975管理用于BPA 900的公 共存储器映射表。该存储器映射表对应于包括在BPA 900中的存储器 位置,例如L2存储器980以及包括在SPC910、 930和950中的非私 有存储器。每个SPC被用于处理数据信息,并且每个SPC可以具有不同的 指令集。例如,BPA900可以用于无线通信系统中,每个SPC可以负责单独的处理任务,例如调制、芯片速率处理、编码和网络接口。在另一个例子中,每个SPC可以具有相同的指令集并且可以被并行地用 于执行受益于并行处理的操作。每个SPC都包括协同处理单元(SPU )。 SPU优选地是单指令、多数据(SIMD)处理器,例如数字信号处理 器、微控制器或者这些核的组合。在一个优选实施方式中,每个SPU 包括局部存储器、寄存器、四个浮点单元和四个整数单元。然而,根 据所需的处理能力,可以釆用更多或更少的浮点单元和整数单元。SPC 910、 930和950被连接到处理器元件总线970 ,该总线在SPC 、 处理单元975、 L2存储器980、存储器控制器985和I/O控制器990 之间传递信息。存储器控制器985与用于存取数据的存储器件988通 信,而1/0控制器9卯与属于外围设备的1/0设备995通信。虽然图9中所示的计算机系统能够执行这里描述的处理,但是该 计算机系统只是计算机系统的 一个例子。本领域的技术人员将认识到, 很多其它计算机系统设计也能够执行这里描述的处理。本发明的优选实施方案之一是客户应用,即在例如可以驻留在计 算机的随机访问存储器中的代码模块中的一组指令(程序代码)。在被 计算机需求前,该组指令可以被存储在另一个计算机存储器中,例如 存储在硬盘驱动器中,或者存储在可移动存储器例如光盘(最终用于 CD ROM中)或软盘(最终用于软盘驱动器中)中,或者可以通过因 特网或其它计算机网络下载。因此,本发明可以被实施为用于计算机 中的计算机程序产品。此外,虽然所描述的多种方法被方便地实施在 通过软件选择性地激活或重新配置的通用计算机中,但是本领域的技 术人员也会认识到这样的方法可以用硬件、固件或者被构建来执行所 需的方法步骤的更专用的装置来实现。虽然已经显示和描述了本发明的具体实施方式
,但本领域的技术 人员很清楚,根据这里的教导可以做出多种改变和变形,而不会偏离 本发明及其更宽广的方面。因此,所附权利要求在它们的范围内包括 落入本发明的真实精神和范围内的所有这样的改变和变形。此外,可 以理解本发明仅由所附的权利要求来限定。本领域的技术人员将会明白,如果想要保护特定数量的引入的权利要求特征,这样的意图将被 直接记载在该权利要求中,在缺少这样的记载的情况下,则不存在这 样的限制。举一个非限制性的例子,为帮助理解,所附权利要求中包 含介绍性的短语"至少一个,,和"一个或多个"的使用,以引入权利要求 的技术特征。然而,这样的短语的使用不应被理解为意味着前面加上求限制为仅包含一个这样的技术特征的发明,即使当同一权利要求包括介绍性的短语"一个或多个"或"至少一个"和不定冠词时;对于使用 定冠词的权利要求同样如此。
权利要求
1. 一种计算机实施的方法,包括在DMA队列处选择DMA命令,该DMA命令包括多个DMA命令字段;确定包括在所述DMA命令字段之一中的实际页号是否有效;以及响应于确定所述实际页号有效,从所述DMA队列提供所述实际页号以处理所述DMA命令。
2. 根据权利要求1所述的方法,还包括检查包括在所述多个DMA命令字段之一中的实际地址有效位,该 实际地址有效位表明所述实际页号是否有效;响应于确定所述实际页号不是有效的,向存储器管理单元发送翻译 请求;以及从所述存储器管理单元提供新的实际页号以处理所述DMA命令。
3. 根据权利要求2所述的方法,还包括配置复用器在所述实际页号有效的情况下选择所述实际页号,在所 述实际页号不是有效的情况下选择所述新的实际页号。
4. 根据权利要求2所述的方法,还包括确定所述存储器管理单元是否找到了与所述翻译请求相对应的新 的实际页号;响应于确定所述存储器管理单元找到了该新的实际页号,将该新的 实际页号存储在所述多个DMA命令字段之一中;以及响应于确定所述存储器管理单元找到了该新的实际页号,置位所述 实际地址有效位。
5. 根据权利要求1所述的方法,还包括接收写回信息,该写回信息包括递减后的传输大小和实际页号;以及将该写回信息存储在所述多个DMA命令字段中。
6. 根据权利要求5所述的方法,还包括识别被包括在所述多个DMA命令字段之一中的传输大小; 检测与对于相应的DMA命令要传输的数据量相对应的最大传输大 小允许值;以及从所述传输大小减去所述最大传输大小允许值,该减法操作产生递 减后的传输大小。
7. 根据权利要求6所述的方法,还包括基于所述递减后的传输大小,识别不需要其它对应于所述DMA命 令的DMA请求;以及响应于识别出不需要其它对应于所述DMA命令的DMA请求,复 位包括在所述多个DMA命令字段之一中的队列条目有效位。
8. 根据权利要求6所述的方法,还包括在所述减法操作后,使对应于所述DMA命令的有效地址递增; 基于递增后的有效地址确定是否到达了页的末端;以及 响应于确定到达了页的末端,复位包括在所述多个DMA命令字段 之一 中的实际地址有效位。
9. 根据权利要求1所述的方法,其中,所述多个DMA命令字段 中的至少一个是从队列条目有效位字段、实际地址有效位字段和实际 页号字段中选出的。
10. 根据权利要求1所述的方法,还包括其中,使用宽带处理器体系结构来执行该方法,该宽带处理器体系 结构包括多个异构处理器、公共存储器和公共总线;以及其中,所述多个异构处理器使用不同的指令集并且共享所述公共存 储器和所述公共总线。
11. 根据权利要求10所述的方法,其中,所述宽带处理器体系结 构是片上系统。
12. —种信息处理系统,包括 一个或多个处理器; 可由所述处理器访问的存储器;可由所述处理器访问的一个或多个非易失存储装置;和用于处理DMA命令的DMA命令工具,该DMA命令工具用于 在包括在所述存储器中的DMA队列处选择DMA命令,该DMA命令包括多个DMA命令字段;确定包括在所述DMA命令字段之一中的实际页号是否有效;以及响应于确定所述实际页号有效,从所述DMA队列提供所述实 际页号以处理所述DMA命令。
13. 根据权利要求12所述的信息处理系统,其中,所述DMA命 令工具还用于检查包括在所述存储器中的实际地址有效位,该实际地址有效位表 明所述实际页号是否有效;响应于确定所述实际页号不是有效的,向存储器管理单元发送翻译 请求;从所述存储器管理单元提供新的实际页号以处理所述DMA命令; 以及配置复用器在所述实际页号有效的情况下选择所述实际页号,在所 述实际页号不是有效的情况下选择所述新的实际页号。
14. 根据权利要求13所述的信息处理系统,其中,所述DMA命 令工具还用于确定所述存储器管理单元是否找到了与所述翻译请求相对应的新 的实际页号;响应于确定所述存储器管理单元找到了该新的实际页号,将该新的 实际页号存储在包括在所述存储器中的多个DMA命令字段之一中; 以及响应于确定所述存储器管理单元找到了该新的实际页号,置位包括 在所述多个DMA命令字段之一中的实际地址有效位。
15. 根据权利要求12所述的信息处理系统,其中,所述DMA命 令工具还用于接收写回信息,该写回信息包括递减后的传输大小和实际页号;以及将该写回信息存储在包括在所述存储器中的所述多个DMA命令字 段中。
16. 根据权利要求15所迷的信息处理系统,其中,所述DMA命 令工具还用于识别被包括在所述多个DMA命令字段之一中的传输大小; 检测与对于相应的DMA命令要传输的数据量相对应的最大传输大 小允许值;从所述传输大小减去所述最大传输大小允许值,该減法操作产生递 减后的传输大小;基于所述递减后的传输大小,识别不需要其它对应于所述DMA命 令的DMA请求;以及响应于识别出不需要其它对应于所述DMA命令的DMA请求,复 位包括在所述多个DMA命令字段之一中的队列条目有效位。
17. 根据权利要求12所述的信息处理系统,其中,该信息处理系 统是宽带处理器体系结构,该宽带处理器体系结构包括多个异构处理 器、公共存储器和公共总线;并且其中,所述多个异构处理器使用不 同的指令集并且共享所述公共存储器和所述公共总线。
18. 根据权利要求12所述的信息处理系统,其中,该信息处理系 统是片上系统。
19. 根据权利要求12所述的信息处理系统,其中,该信息处理系 统被包括在从游戏机、笔记本计算机、个人计算机和手持设备中选出 的系统中。
20. —种计算机程序产品,包括具有计算机可读代码的计算机可操作介质,该计算机可读代码用于在DMA队列处选择DMA命令,该DMA命令包括多个DMA 命令字段;确定包括在所述DMA命令字段之一中的实际页号是否有效;以及响应于确定所述实际页号有效,从所述DMA队列提供所述实 际页号以处理所述DMA命令。
21. 根据权利要求20所述的计算机程序产品,其中所述计算机可 读代码还用于检查实际地址有效位,该实际地址有效位表明所述实际页号是否有效;响应于确定所述实际页号不是有效的,向存储器管理单元发送翻译 请求;从所述存储器管理单元提供新的实际页号以处理所述DMA命令;以及配置复用器在所述实际页号有效的情况下选择所述实际页号,在所 述实际页号不是有效的情况下选择所述新的实际页号。
22. 根据权利要求21所述的计算机程序产品,其中所述计算机可 读代码还用于确定所述存储器管理单元是否找到了与所述翻译请求相对应的新 的实际页号;响应于确定所述存储器管理单元找到了该新的实际页号,将该新的 实际页号存储在所述多个DMA命令字段之一中;以及响应于确定所述存储器管理单元找到了该新的实际页号,置位包含 在所述多个DMA命令字段之一中的实际地址有效位。
23. 根据权利要求20所述的计算机程序产品,其中所述计算机可 读代码还用于接收写回信息,该写回信息包括递减后的传输大小和实际页号;以及将该写回信息存储在所迷多个DMA命令字段中。
全文摘要
提供了一种用于改进的DMAC翻译机制的系统和方法。DMA命令基于该DMA命令的传输大小和计算机系统一次传输的数据量而被“调出”。对于第一个DMA请求,DMA队列请求存储器管理单元执行地址翻译。DMA队列从MMU接收实际页号,在后面的调出请求时,DMA队列将实际页号提供给总线接口单元而不访问MMU,直到传输跨入下一页。调出逻辑在每个DMA请求后使DMA命令的传输大小递减,确定是否已到达了新的页,确定是否已完成DMA命令,并且发送写回信息到DMA队列用于后面的DMA请求。
文档编号G06F12/10GK101278269SQ200680036685
公开日2008年10月1日 申请日期2006年9月27日 优先权日2005年10月7日
发明者D·穆伊, M·E·金, 培军·P·刘, 齐洁明 申请人:国际商业机器公司