CN112052199A - 电路和方法 - Google Patents
电路和方法 Download PDFInfo
- Publication number
- CN112052199A CN112052199A CN202010232195.8A CN202010232195A CN112052199A CN 112052199 A CN112052199 A CN 112052199A CN 202010232195 A CN202010232195 A CN 202010232195A CN 112052199 A CN112052199 A CN 112052199A
- Authority
- CN
- China
- Prior art keywords
- transaction
- address
- memory address
- response
- virtual memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 93
- 230000004044 response Effects 0.000 claims abstract description 86
- 238000013519 translation Methods 0.000 claims abstract description 81
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 47
- 238000013507 mapping Methods 0.000 claims abstract description 39
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 3
- 230000007704 transition Effects 0.000 claims description 3
- 230000014616 translation Effects 0.000 description 67
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及电路和方法。电路包括:事务接口,所述事务接口用于接收来自上游设备的数据处理事务;转换电路,所述转换电路用于访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;以及控制电路,所述控制电路用于从所述上游设备接收请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对所述内存区域请求的处理,并且根据所述内存区域请求的处理向所述上游设备提供响应。
Description
技术领域
本公开涉及一种电路和方法。
背景技术
在一些使用内存地址转换的电路实施例中,可以配置设备的转换,使得在发生转换故障时,故障事务将暂停,以便软件(诸如操作系统)可以决定如何处理它。该解析过程可以由内存管理单元自动启动,并且对于暂停的设备不可见。然后,可以等待内存管理单元,直到重试或终止该事务。
然而,暂停故障在某些情况下会导致死锁。结果,通用操作系统(诸如Linux)通常无法在任何设备中启用暂停故障(如果造成死锁)。
处理这些问题的另一个系统是使用PCIe(高速外围组件互连)协议的ATS(地址转换服务)和PRI(页面请求接口)功能。在ATS下,内存地址转换是在事务发布之前获得的,并且被缓存在事务发起设备或端点。如果响应于ATS请求而发生转换故障,则期望(但不是需要)端点发布PRI请求。当内存管理单元收到PRI请求时,它通知软件,诸如操作系统。例如,如果先前已换出的内存页面引起故障,则操作系统可以再次将其换入以便事务可以继续进行。内存管理单元在它收到软件的响应时通知端点,并且如果PRI请求成功,则期望(但不是需要)端点重试ATS请求。
暂停和ATS是分别启用的功能,并且不能同时启用。
发明内容
在一个示例的布置中,提供了一种电路,所述电路包括:
事务接口,所述事务接口用于接收来自上游设备的数据处理事务,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
转换电路,所述转换电路用于访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;
所述转换电路被配置为当所述一组地址映射包括用于所述目标虚拟内存地址的地址映射时根据从所述目标虚拟内存地址映射的目标物理内存地址启动由下游设备对所述数据处理事务的处理,并且当所述一组地址映射未能提供用于所述目标虚拟内存地址的地址映射时向所述事务接口提供指示故障条件的事务响应;以及
控制电路,所述控制电路从所述上游设备接收请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对所述内存区域请求的处理,并且根据所述内存区域请求的处理向所述上游设备提供响应。
在另一个示例的布置中,提供了一种电路,所述电路包括:
事务接口,所述事务接口用于将数据处理事务传送到下游设备,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址,并且当所述目标虚拟内存地址到目标物理内存地址的转换失败时,接收指示所述数据处理事务完成或故障条件的事务响应;
控制电路,所述控制电路用于向所述下游设备发布请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,并且从所述下游设备接收内存区域请求响应;
所述控制电路被配置为根据从所述下游设备接收的内存区域请求响应来选择性地重新发布所述数据处理事务。
在另一个示例的布置中,提供了一种方法,所述方法包括:
接收来自上游设备的数据处理事务,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;
当所述访问步骤访问的所述一组地址映射包括用于所述目标虚拟内存地址的地址映射时,根据从所述目标虚拟内存地址映射的目标物理内存地址,启动由下游设备对所述数据处理事务的处理;
当所述访问步骤访问的所述一组地址映射无法提供用于所述目标虚拟内存地址的地址映射时,提供指示故障条件的事务响应;并且
响应于从所述上游设备接收到请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对所述内存区域请求的处理并且根据所述内存区域请求的处理提供响应。
在另一个示例的布置中,提供了一种方法,所述方法包括:
将数据处理事务传送到下游设备,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
当所述目标虚拟内存地址到目标物理内存地址的转换失败时,接收指示所述数据处理事务完成或故障条件的事务响应;
向所述下游设备发布请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求;
从所述下游设备接收内存区域请求响应;并且
根据从所述下游设备接收的内存区域请求响应来选择性地重新发布所述数据处理事务。
本公开的其他各个方面和特征由所附权利要求书限定。
附图说明
将仅通过示例的方式,参考如附图所示的本发明的实施方式来进一步描述本技术,其中:
图1示意性地示出了根据所谓的高速外围组件互连(PCIe)布置操作的电路;
图2是示出方法的示意性流程图;
图3和图4是示意性时序图;
图5示意性地示出了示例的电路;
图6是示出地址转换方法的示意性流程图;
图7和图8是示意性时序图;并且
图9和图10是示出各个方法的示意性流程图。
具体实施方式
现在参考附图,图1示意性地示出了根据所谓的高速外围组件互连(PCIe)布置操作的电路。在绘制的PCIe的实施例中,所谓的端点100与外围设备(诸如内存110)进行交互,例如从内存110读取数据或向内存写入数据。端点根据虚拟地址(VA)进行操作,而最终与内存110的交互根据物理地址(PA)进行。因此,为了执行由端点100发起的数据处理事务,必须将VA转换成PA。
这里讨论的PCIe功能(与先前提出的图1的PCIe电路或使用一些PCIe功能的图5的示例的实施方式有关)涉及从4.0代起(也就是说更高)的PCIe标准,如https://pcisig.com/specifications上发布的标准所定义,其内容通过引用并入本文中。
在图1先前提出的布置中,此转换是在端点100本身进行的,因为在端点100发布依赖于VA的数据处理事务之前,端点100例如从内存管理单元或系统内存管理单元(SMMU)120获得所需的地址转换,并将该地址转换存储在地址转换缓存(ATC)130中。因此,要注意,在图1的实施例中,假定启用了ATS,启用了PRI(如稍后结合图4所述),并且因此不启用暂停。
在发布数据处理事务之前,执行该操作以用所需的转换预填充ATC 130(作为所谓的“地址转换服务”(ATS)操作)。这意味着端点100发布的数据处理事务已使用存储在ATC130中的信息将其地址转换为所需的PA。
如图1所示,端点100通过所谓的根端口140与SMMU 120进行通信,该根端口具有与SMMU进行数据处理事务本身的第一接口142以及用于执行ATS请求和页面请求的第二接口144(将在下面进行讨论)。SMMU 120例如经由互连150与内存110通信,其他设备(诸如处理元件或CPU 160)可以连接至该互连。
图2示意性地示出了图1的电路的操作方面,其中在VA 200中需要转换并且在使用那个VA发布事务之前,首先将VA 200作为ATS请求从端点100提供给SMMU 120。如果在步骤210,所需的地址转换可用,则将其返回到端点100并存储在ATC 130中。
然而,可能是所需转换不可用的情况。例如,如果存在转换故障,则在步骤230,端点100使用接口144(在此上下文中可以称为页面请求接口或PRI)做出所谓的页面请求。页面请求是对软件的请求,以使包含所需VA的内存页面或区域可用。该软件可以是例如在CPU160上运行并向存储系统提供配置的操作系统(OS),配置包括转换表和SMMU 120的支持信息。该“使...可用”的过程可以包括例如在SMMU 120填充转换信息和/或提供许可数据以使得能够访问所需页面。
如果在步骤240使所需页面可用,则可以重试端点100的转换请求,以使控制转回到步骤210。如果不是,则该过程在故障条件下终止。
图3是示出上述操作的示意性时序图,其中,在步骤阶段300,端点100向SMMU 120发布ATS转换请求。假设无论是通过在转换后备缓存器(TLB)中查找还是在内存中执行操作(诸如页面表遍历(PTW)),都可以立即为请求提供服务,SMMU 120在阶段310回复包含端点100存储在ATC 130中的所需转换的响应。
端点100然后可以在步骤320处发布具有已经转换成PA的VA的相关数据处理转换。
在图4中,在阶段400再次发布转换请求,但是在这种情况下,SMMU 120不能为转换请求提供服务,并且提供否定响应410。该否定响应提示端点100向SMMU发布页面请求420。SMMU通过向软件440(诸如在CPU 160上运行的操作系统)发布PRI“事件”430而作出反应。为了提示软件440处理PRI事件,SMMU还可以向CPU 160发布与PRI事件430相关联的中断请求。
软件440处理PRI事件,并向SMMU 120提供PRI应答命令450,该命令指示SMMU 120向端点100发布PRI响应460。如果该PRI响应460是肯定的,指示对页面的请求现在已经可用(图2中步骤240的“是”结果),则端点100可以在阶段470重新发布ATS转换请求。如果否定响应被提供作为PRI响应460(步骤240的“否”结果),则端点100可以采取未在图4中示出的其他故障处理动作。
图5是示出根据本公开的实施方式的电路的实施例的示意图。与图1相同,提供了(在该示例中)与存储器510和CPU 520连接的互连500。同样,SMMU 530连接到互连500。CPU520可以运行对SMMU 520进行监督控制的操作系统,并且在系统中进行地址转换。图5的电路可以被实施为集成电路或芯片。
端点540可以是例如所谓的“根联合体集成端点”(RCiEP)(例如可以是片上设备),该根联合体集成端点本身并不实施PCIe协议,但可以出于编程目的而作为PCIe根联合体出现,例如通过通告(通知其他设备)它支持PRI和/或ATS。
然而,与诸如图1所示的PCIe端点相反,端点540不(或不需要)包含用于地址转换的缓存(对应于图1的先前提出的布置中的ATC130)。为了避免每当先前使用的转换被无效时就需要向端点540提供缓存无效,在示例的布置中,端点540的控制电路544可以被配置为向下游设备发布该电路不包括转换缓存存储器的通知。
SMMU 530包括:事务接口532,用于从上游设备(诸如端点540)接收数据处理事务,数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址(VA);以及转换电路534,用于访问物理内存地址空间中VA和PA之间的一组地址映射。例如,转换电路534可以包括转换的本地缓存(诸如所谓的转换后备缓存器(TLB)),和/或可以通过所谓的页面表遍历(PTW)过程来访问例如内存510中的转换表。
转换电路534被配置为:当这组地址映射(转换电路534可以访问)包括用于目标VA的地址映射时根据来自目标VA映射的目标PA启动由下游设备(诸如内存510)处理数据处理事务;并且当所述这组地址映射未能提供用于所述目标VA的地址映射时向所述事务接口提供指示故障条件的事务响应。
端点540还包括事务接口542以将数据处理事务传送到下游设备(诸如SMMU 530)。如上所述,数据处理事务定义目标VA。端点540还通过接口542接收事务响应,该事务响应指示数据处理事务的完成或当目标VA的转换失败时的故障条件。
在图5所示的电路的上下文中,术语“上游”和“下游”是指关于数据处理事务问题的设备的逻辑连接。因此,在从上游朝着下游的方向上发布数据处理事务,并且向上游的方向返回事务响应。
与图1的布置相反,端点540向SMMU 530提供未转换的事务。正是SMMU 520执行转换并将事务经由接口536转发到互连500以(例如由存储器510)进行处理。同样与图1的PCIe布置相反,事务响应也提供给端点540。(在PCIe系统中,不需要总是提供事务响应,例如在ATC 130已经转换地址的数据写入事务中的情况下)。
因此图5的电路进行操作,使得当转换电路已经启动由下游设备处理数据处理事务时接收来自下游设备的事务响应,并且经由事务接口向上游设备提供事务响应。换句话说,下游设备被配置为根据接口协议与上游设备进行通信,在接口协议中,响应于从上游设备接收到的每次通信而提供响应消息。这种接口协议的一个实施例是高级可扩展接口(AXI)协议。
参照图7,在其中SMMU 530可以无故障地为VA到PA的转换提供服务的情况下,在阶段700,端点540将未转换的事务传输到SMMU 530(经由接口542到接口532)。SMMU 530使用转换电路534将事务转换为具有适合于访问存储器510的PA的事务。SMMU 530在阶段710经由输出536将转换的事务提供给互连500,并从该互连提供给内存510以进行处理。内存510在阶段720提供响应。例如,在数据读取操作的情况下,响应可能是数据本身,可能伴随着完成确认。在数据写入操作的情况下,响应可以是完成确认。最终,在图7中,在阶段730,SMMU530经由接口532、542将响应提供回到端点。
现在将考虑以下情形:SMMU 530不能为实现从上游设备接收的未转换数据处理事务所需的从VA到PA的转换提供服务的情况。然而,首先,将参考图6讨论不同类型的转换故障的性质。
图6是示出VA转换成PA的一些阶段的局部示意图。用于转换的输入VA(诸如VA600)伴随有定义该VA的上下文的所谓上下文信息610。该上下文可以包括:与VA相关的地址空间的定义、与VA相关的进程或线程的定义、在内存中可以找到转换信息(诸如页面表)的位置的定义等。
转换过程的初始阶段是上下文确定(在图6中示意性地显示为步骤620),其中处理或解析上下文以确定用于转换过程的参数(图6中的步骤630)。例如,上下文确定620可以包括确定指向在转换步骤630中使用的适当的一组页面表的指针。
如果上下文确定步骤620例如由于SMMU 530的不正确或错误配置而失败,则通常认为这是致命的转换错误,通过对软件(诸如操作系统)的页面请求或类似引用不能处理这种错误。
然而,如果转换步骤630尽管使用有效确定的上下文也仍然失败,则通常认为这是转换故障,通过对操作系统的页面请求或类似请求可以处理这种错误。例如,即使设备在AXI协议下运行,这种请求也可以是在高速外围组件互连(PCIe)标准下的页面请求。
要注意,在步骤620或步骤630是否发生故障的问题不一定是故障是否被认为致命的确定性指示。例如,在步骤630中发生的故障(当尝试读取页面表条目时,存储系统给出错误)通常被认为是致命的。SMMU和/或OS可以应用一组标准,诸如关于哪种类型的故障构成致命错误的预定标准。
(最后,如图6所示,如果两个步骤均正常工作,则会输出PA 640。这对应于图7中所示的成功转换。)
现在将讨论以下情形:SMMU 530不能提供从上游设备接收到的未转换的数据处理事务的VA形成部分的转换。如上所述,这可能是由于转换故障(操作系统响应页面请求可能纠正此错误)或致命错误(诸如上下文确定错误)引起的。
如上所述,SMMU 530被配置为发布,并且端点540被配置为接收,当目标虚拟内存地址到目标物理内存地址的转换失败时指示数据处理事务完成或故障条件的事务响应。
响应于这种故障通知,端点540的控制电路544被配置为向下游设备(例如,SMMU530)发布请求使包括目标VA的虚拟内存地址空间中的内存区域可用的内存区域请求(诸如页面请求)。
在一些实施例中,事务接口542被配置为从SMMU 530接收指示故障条件的以下各项作为事务响应:
指示上游设备可以尝试内存区域请求的转换故障指示;或
指示上游设备不应当尝试内存区域请求的致命错误指示。
根据转换失败的性质,端点的控制电路544可以选择是否发布内存区域请求。具体地,控制电路544可以被配置为响应于事务接口接收到转换故障指示而向下游设备发布内存区域请求。为了实现这一点,当这组地址映射未能提供用于目标VA的地址映射时,转换电路534被配置为提供转换故障指示或致命错误指示作为事务响应,转换故障指示指示上游设备可以尝试内存区域请求,并且致命错误指示指示上游设备不应当尝试内存区域请求。端点540的控制电路544可以根据该指示来发布或不发布区域请求。因此,例如,如果故障是致命故障,诸如无法确定上下文(如上所述,参见图6),使得没有意义或没有太大意义发布区域或页面请求,端点540的控制电路544可以选择不发布这样的请求,而是将这种情况作为故障条件来处理。然而,如果故障是至少可以通过区域或页面请求解决的故障,则端点540可以选择发布这样的请求。
然而,要注意,致命故障和转换故障之间的区别不仅仅是最优化之一,因为当故障致命时不必要发布页面请求。区别比它更重要。本上下文中的转换故障是指由于软件已知和/或软件可解决的原因而导致故障并且预计一旦解决任何故障就会(或至少可以有用地)重试事务的故障。相反,预计致命故障不会导致事务重试如果要使用转换故障代替致命故障,则将重复重试事务,因为软件将始终对页面请求给出成功响应。
因此该布置表示以下情形的实施例:当这组地址映射未能提供用于目标虚拟内存地址的地址映射时,转换电路被配置为提供转换故障指示或致命错误指示作为事务响应,转换故障指示指示上游设备可以尝试内存区域请求,并且致命错误指示指示上游设备不应当尝试内存区域请求。
经由端点540处的内存区域或页面请求接口546和SMMU处的内存区域或页面请求接口538,将内存区域或页面请求从端点540传送到SMMU 530(以及在相反方向上的内存区域请求响应)。在所示的示例的实施方式中,这些接口与事务接口532、542是分开的,但是要注意,它们在其他实施例中实际上可以是相同的接口。
在SMMU 530,控制电路539被配置为从上游设备(诸如端点540)接收请求使包括所述目标VA的虚拟内存地址空间中的内存区域可用的内存区域请求;启动由OS处理内存区域请求(例如,通过向CPU 520发布处理器中断并且向CPU 520正在执行的OS提供页面或区域请求事件);并且根据由OS处理内存区域请求向上游设备提供响应。
由操作系统提供的内存区域或页面请求的分辨率或结果可能使得请求区域或页面现在可用(步骤240的“是”结果),并且可以重新发布数据处理事务,或者不应当重新发布数据处理事务(例如,它仍然不可用(步骤240的“否”结果))。在端点540,控制电路544被配置为根据从下游设备接收的内存区域请求响应来选择性地重新发布数据处理事务。
与该过程有关的时序图如图8示意性地示出。该过程在阶段800从端点540开始发布定义目标VA(与读取、写入、无效或其他操作的地址有关)的未转换数据处理事务。在阶段810,事务被路由到SMMU 530,该SMMU尝试将目标VA转换为目标PA,但是在图8的情况下,转换失败,并且由SMMU 530将故障响应返回到端点540。
作为响应,在由星号820表示的阶段,端点540的控制电路544选择是否发布页面(区域)请求以请求软件(诸如OS)以使所需的内存区域或页面可用。该选择是对在阶段810所提供的故障响应的性质的响应,该错误响应可以是转换故障指示或致命错误指示,转换故障指示指示上游设备可以尝试内存区域请求,并且致命错误指示指示上游设备不应当尝试内存区域请求。在致命错误指示的情况下,控制电路544不发布内存区域(页面)请求,而是进入故障条件。然而,在转换故障指示的情况下,控制电路544在阶段830经由接口546、538发布页面请求。页面请求由SMMU 530接收,并且在阶段840使SMMU 530向软件(诸如OS)发布PRI事件。操作系统最终在阶段850回复PRI响应,该响应在阶段860触发或指示SMMU530向端点540提供PRI响应。
因此,在阶段840、850,控制电路539被配置为将内存区域请求转发到控制转换电路的配置的操作系统,并且将从操作系统接收到的响应转发到上游设备。在阶段840,控制电路可以被配置为发布处理器中断,以启动所述操作系统处理所述内存区域请求。
PRI响应可以是肯定的(是的,页面现在可用)或否定的。在否定响应的情况下,如在阶段870由星号指示所检测到的,端点540进入故障条件。在肯定响应的情况下,端点540在阶段880重试未转换的数据处理事务,然后导致对应于图7中的阶段700以后的处理。
总之,图9是示出方法的示意性流程图,该方法包括;
(在步骤900)从上游设备接收数据处理事务,数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
(在步骤910)访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;
(在步骤920)当访问步骤访问的这组地址映射包括用于目标虚拟内存地址的地址映射时,根据从目标虚拟内存地址映射的目标物理内存地址,启动由下游设备对数据处理事务的处理;
(在步骤930)当访问步骤访问的这组地址映射无法提供用于目标虚拟内存地址的地址映射时,提供指示故障条件的事务响应;并且
(在步骤940)响应于从上游设备接收到请求使包括目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对内存区域请求的处理并且根据内存区域请求的处理提供响应。
图10是示出方法的另一示意性概要流程图,该方法包括:
(在步骤1000)将数据处理事务传送到下游设备,数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
(在步骤1010)当目标虚拟内存地址到目标物理内存地址的转换失败时,接收指示数据处理事务完成或故障条件的事务响应;
(在步骤1020)向下游设备发布请求使包括目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求;
(在步骤1030)从下游设备接收内存区域请求响应;并且
(在步骤1040)根据从下游设备接收的内存区域请求响应来选择性地重新发布所述数据处理事务。
在本申请中,词语“被配置为......”用于意指设备的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该设备可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程以执行该功能。“被配置为”并不意指需要以任何方式改变设备元件以便提供所定义的操作。
尽管本文中已经参考附图详细描述了本技术的说明性实施方式,但是应当理解,本技术不限于那些精确的实施例,并且本领域技术人员可以在不脱离由所附权利要求限定的本技术的范围和精神的情况下在其中实现各种改变、增设和修改。例如,在不脱离本技术范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。
Claims (20)
1.一种电路,所述电路包括:
事务接口,所述事务接口用于接收来自上游设备的数据处理事务,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
转换电路,所述转换电路用于访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;所述转换电路被配置为:当所述一组地址映射包括用于所述目标虚拟内存地址的地址映射时根据从所述目标虚拟内存地址映射的目标物理内存地址启动由下游设备对所述数据处理事务的处理,并且当所述一组地址映射未能提供用于所述目标虚拟内存地址的地址映射时向所述事务接口提供指示故障条件的事务响应;以及
控制电路,所述控制电路用于:从所述上游设备接收请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对所述内存区域请求的处理,并且根据所述内存区域请求的处理向所述上游设备提供响应。
2.根据权利要求1所述的电路,其中,当所述一组地址映射未能提供用于所述目标虚拟内存地址的地址映射时,所述转换电路被配置为提供转换故障指示或致命错误指示作为所述事务响应,所述转换故障指示指示所述上游设备会尝试内存区域请求,并且所述致命错误指示指示所述上游设备不应当尝试内存区域请求。
3.根据权利要求1所述的电路,其中,所述控制电路被配置为:将所述内存区域请求转发到控制所述转换电路的配置的操作系统,并且将从所述操作系统接收到的响应转发到所述上游设备。
4.根据权利要求3所述的电路,其中,来自所述操作系统的所述响应指示:所述内存区域可用并且所述数据处理事务会被重新发布,或者所述数据处理事务不应当被重新发布。
5.根据权利要求3所述的电路,其中,所述控制电路被配置为发布处理器中断,以启动由所述操作系统处理所述内存区域请求。
6.根据权利要求1所述的电路,包括与所述事务接口分离的内存区域请求接口,以从所述上游设备接收内存区域请求,并且将所述内存区域请求响应传送到所述上游设备。
7.根据权利要求1所述的电路,所述电路被配置为:当所述转换电路已经启动由所述下游设备处理所述数据处理事务时接收来自所述下游设备的事务响应,并且经由所述事务接口向所述上游设备提供事务响应。
8.根据权利要求1所述的电路,其中,所述内存区域请求是根据高速外围组件互连(PCIe)标准的页面请求。
9.根据权利要求1所述的电路,其中,所述电路被配置为根据接口协议与所述上游设备进行通信,在所述接口协议中,响应于从所述上游设备接收到的每次通信而提供响应消息。
10.根据权利要求9所述的电路,其中,所述接口协议是高级可扩展接口(AXI)协议。
11.一种电路,所述电路包括:
事务接口,所述事务接口用于:将数据处理事务传送到下游设备,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;并且当所述目标虚拟内存地址到目标物理内存地址的转换失败时,接收指示所述数据处理事务完成或故障条件的事务响应;
控制电路,所述控制电路用于:向所述下游设备发布请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,并且从所述下游设备接收内存区域请求响应;
所述控制电路被配置为根据从所述下游设备接收的内存区域请求响应来选择性地重新发布所述数据处理事务。
12.根据权利要求11所述的电路,其中:
所述事务接口被配置为接收转换故障指示或致命错误指示作为指示故障条件的事务响应,所述转换故障指示指示所述上游设备会尝试内存区域请求,并且所述致命错误指示指示所述上游设备不应当尝试内存区域请求;并且
所述控制电路被配置为响应于所述事务接口接收到转换故障指示而向所述下游设备发布所述内存区域请求。
13.根据权利要求11所述的电路,其中,来自所述下游设备的所述内存区域响应包括:所述内存区域可用并且所述数据处理事务会被重新发布的指示,或者所述数据处理事务不应当被重新发布的指示。
14.根据权利要求11所述的电路,其中,所述控制电路被配置为向所述下游设备发布所述电路不包括转换缓存存储器的通知。
15.根据权利要求11所述的电路,其中,所述电路被配置为根据接口协议与所述下游设备通信,在所述接口协议中,响应于所述电路向所述下游设备发布的每一次通信,所述下游设备提供响应消息。
16.根据权利要求11所述的电路,其中,所述下游设备是地址转换设备,所述地址转换设备被配置为:将所述目标虚拟内存地址转换为物理内存地址空间中的目标物理内存地址,并且根据所述目标物理内存地址启动对所述数据处理事务的处理。
17.根据权利要求16所述的电路,其中,所述下游设备包括:
转换电路,所述转换电路用于访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;
所述转换电路被配置为:当所述一组地址映射包括用于所述目标虚拟内存地址的地址映射时根据映射到所述目标虚拟内存地址的所述目标物理内存地址启动对所述数据处理事务的处理,并且当所述一组地址映射未能提供用于所述目标虚拟内存地址的地址映射时向所述事务接口提供指示转换错误的事务响应。
18.根据权利要求17所述的电路,其中,所述下游设备包括:
控制电路,所述控制电路用于:从所述上游设备接收请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对所述内存区域请求的处理,并且根据对所述内存区域请求的处理向所述上游设备提供所述内存区域请求响应。
19.一种方法,所述方法包括:
接收来自上游设备的数据处理事务,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
访问虚拟内存地址和物理内存地址空间中的物理内存地址之间的一组地址映射;
当由所述访问步骤访问的所述一组地址映射包括用于所述目标虚拟内存地址的地址映射时,根据从所述目标虚拟内存地址映射的目标物理内存地址,启动由下游设备对所述数据处理事务的处理;
当由所述访问步骤访问的所述一组地址映射无法提供用于所述目标虚拟内存地址的地址映射时,提供指示故障条件的事务响应;并且
响应于从所述上游设备接收到请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求,启动对所述内存区域请求的处理并且根据对所述内存区域请求的处理提供响应。
20.一种方法,所述方法包括:
将数据处理事务传送到下游设备,所述数据处理事务定义虚拟内存地址空间中的目标虚拟内存地址;
当所述目标虚拟内存地址到目标物理内存地址的转换失败时,接收指示所述数据处理事务完成或故障条件的事务响应;
向所述下游设备发布请求使包括所述目标虚拟内存地址的虚拟内存地址空间中的内存区域可用的内存区域请求;
从所述下游设备接收内存区域请求响应;并且
根据从所述下游设备接收的内存区域请求响应来选择性地重新发布所述数据处理事务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/433,311 US11204879B2 (en) | 2019-06-06 | 2019-06-06 | Memory management circuitry managing data transactions and address translations between an upstream device and a downstream device |
US16/433,311 | 2019-06-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112052199A true CN112052199A (zh) | 2020-12-08 |
Family
ID=73609387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232195.8A Pending CN112052199A (zh) | 2019-06-06 | 2020-03-27 | 电路和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11204879B2 (zh) |
CN (1) | CN112052199A (zh) |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752417B2 (en) * | 2006-06-05 | 2010-07-06 | Oracle America, Inc. | Dynamic selection of memory virtualization techniques |
US7917710B2 (en) * | 2006-06-05 | 2011-03-29 | Oracle America, Inc. | Memory protection in a computer system employing memory virtualization |
US8195917B2 (en) * | 2009-07-01 | 2012-06-05 | Advanced Micro Devices, Inc. | Extended page size using aggregated small pages |
US8762609B1 (en) * | 2010-11-03 | 2014-06-24 | Pmc-Sierra Us, Inc. | System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator |
US8732496B2 (en) * | 2011-03-24 | 2014-05-20 | Nvidia Corporation | Method and apparatus to support a self-refreshing display device coupled to a graphics controller |
US8943296B2 (en) * | 2011-04-28 | 2015-01-27 | Vmware, Inc. | Virtual address mapping using rule based aliasing to achieve fine grained page translation |
US8656121B2 (en) * | 2011-05-17 | 2014-02-18 | International Business Machines Corporation | Facilitating data coherency using in-memory tag bits and tag test instructions |
US9152570B2 (en) * | 2012-02-27 | 2015-10-06 | Vmware, Inc. | System and method for supporting finer-grained copy-on-write page sizes |
US9715389B2 (en) * | 2013-06-25 | 2017-07-25 | Advanced Micro Devices, Inc. | Dependent instruction suppression |
US9483273B2 (en) * | 2013-07-16 | 2016-11-01 | Advanced Micro Devices, Inc. | Dependent instruction suppression in a load-operation instruction |
US11281618B2 (en) * | 2014-10-31 | 2022-03-22 | Xlnx, Inc. | Methods and circuits for deadlock avoidance |
US9946561B2 (en) * | 2014-11-18 | 2018-04-17 | Wind River Systems, Inc. | Least privileged operating system |
US20160149765A1 (en) * | 2014-11-24 | 2016-05-26 | Arrow Devices Private Limited | System and method for extracting protocol information from a simulation environment to analyze system behavior |
US10013360B2 (en) * | 2015-03-04 | 2018-07-03 | Cavium, Inc. | Managing reuse information with multiple translation stages |
US20160259732A1 (en) * | 2015-03-04 | 2016-09-08 | Cavium, Inc. | Managing reuse information for memory pages |
US9965417B1 (en) * | 2016-01-13 | 2018-05-08 | Xilinx, Inc. | Use of interrupt memory for communication via PCIe communication fabric |
US10445250B2 (en) * | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US11281595B2 (en) * | 2018-05-28 | 2022-03-22 | Intel Corporation | Integration of disparate system architectures using configurable isolated memory regions and trust domain conversion bridge |
-
2019
- 2019-06-06 US US16/433,311 patent/US11204879B2/en active Active
-
2020
- 2020-03-27 CN CN202010232195.8A patent/CN112052199A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200387457A1 (en) | 2020-12-10 |
US11204879B2 (en) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1586040B1 (en) | Microprocessor systems | |
US6665759B2 (en) | Method and apparatus to implement logical partitioning of PCI I/O slots | |
US8171230B2 (en) | PCI express address translation services invalidation synchronization with TCE invalidation | |
US6654818B1 (en) | DMA access authorization for 64-bit I/O adapters on PCI bus | |
US5499346A (en) | Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus | |
US8866831B2 (en) | Shared virtual memory between a host and discrete graphics device in a computing system | |
US6886171B2 (en) | Caching for I/O virtual address translation and validation using device drivers | |
US7398427B2 (en) | Isolation of input/output adapter error domains | |
US20020016862A1 (en) | Method for configuring peer-to-peer bus bridges in a computer system using shadow configuration registers | |
US6529989B1 (en) | Intelligent expansion ROM sharing bus subsystem | |
US20120110562A1 (en) | Synchronized firmware update | |
US20140250276A1 (en) | Selection of post-request action based on combined response and input from the request source | |
GB2565188B (en) | Validating physical addresses by comparing with previous translations | |
US20040139267A1 (en) | Accessing a primary bus messaging unit from a secondary bus through a pci bridge | |
JP2023537109A (ja) | データ処理システム間のメモリ共有をサポートする多機能通信インターフェイス | |
US7941568B2 (en) | Mapping a virtual address to PCI bus address | |
US6189117B1 (en) | Error handling between a processor and a system managed by the processor | |
CN112052199A (zh) | 电路和方法 | |
US11494211B2 (en) | Domain identifier and device identifier translation by an input-output memory management unit | |
US8131933B2 (en) | Methods and systems for communication between storage controllers | |
CN112559434A (zh) | 一种多核处理器及核间数据转发方法 | |
US7350109B2 (en) | System and method for testing a memory using DMA | |
JPH1091521A (ja) | 二重ディレクトリー仮想キャッシュ及びその制御方法 | |
JP3251903B2 (ja) | プロセッサ・データをバースト転送する方法及びコンピュータ・システム | |
CN114490449A (zh) | 一种内存访问方法、装置及处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |