CN118159951A - 一种处理请求的方法、装置及系统 - Google Patents

一种处理请求的方法、装置及系统 Download PDF

Info

Publication number
CN118159951A
CN118159951A CN202280071075.1A CN202280071075A CN118159951A CN 118159951 A CN118159951 A CN 118159951A CN 202280071075 A CN202280071075 A CN 202280071075A CN 118159951 A CN118159951 A CN 118159951A
Authority
CN
China
Prior art keywords
address
request
bus
instance
node
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
Application number
CN202280071075.1A
Other languages
English (en)
Inventor
谭焜
曹水
欧阳长春
赵宇粟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN118159951A publication Critical patent/CN118159951A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation

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)
  • Bus Control (AREA)

Abstract

本申请提供一种处理请求的方法、装置及系统,可使第一节点读第二节点的数据,或者向第二节点写数据。第一节点基于第一请求中的第一虚拟地址得到对应的物理地址,第一请求可以是第一节点中的应用发出的,用于请求读第二节点的数据,或者请求将数据写入第二节点。接着,第一节点基于第一映射关系向第二节点发送与第一请求对应的第二请求,其中,第二请求中包括了总线地址,第一映射关系为前述的物理地址与总线地址之间的映射关系,由于总线地址指示所述第二节点中的实例对应的虚拟地址,就可以被第一节点通过第一请求访问时,同样也可以由第二节点访问,或者被其他节点通过请求访问,可以在数据访问中实现地址的共享,另一方面,使用总线地址,而无需使用网络访问的语义,相比于现有的网络通信技术,可以降低访问远端设备的数据的时延,提升访问速率。

Description

一种处理请求的方法、装置及系统
本申请要求于2021年10月21日提交中国专利局、申请号为202111229546.0、申请名称为“一种处理请求的方法、装置及系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,尤其涉及访问远端设备的内存的方法、装置及系统。
背景技术
随着技术的发展,分布式应用的使用越来越普遍。分布式应用是指一个应用程序分布在不同的物理节点上,物理节点通常是计算机。也就是说,在分布式应用执行一个任务或者业务时,需要在多个物理节点之间交互数据。在此过程中,数据通常存储于物理节点的存储器中,在需要被使用时,则被该物理节点的处理器加载到内存中。这样,远端内存访问,也就是某台计算机(本端设备)访问其他计算机(远端设备)的内存以操作其中的数据,就是十分基础的功能。其中,访问数据,从技术实质上就是访问与该数据相关的存储介质,至少包括读取数据和将数据写入这两个场景。
通常,本端设备的内存通过总线访问,而远端设备的内存则通过网络访问,二者的语义规则不同。具体来说,一个设备访问其他设备的内存需要使用网络通信技术,例如传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)或者远程直接内存访问(Remote Direct Memory Access,RDMA)。这样访问远端设备的内存的时延较长。
为了降低由网络通信技术产生的时延,可以在访问远端设备的内存中也使用访问本端设备的内存所使用的语义,这需要借助片上总线(On-Chip Interconnect,OCI)技术。这类技术的实质,是实现将远端设备的一段内存作为本端设备的内存管理和使用。因此,一个设备的一段内存一旦分配给某个设备,除了这个设备之外的其他设备就无法访问这段内存,即无法实现远端设备的内存的“共享”。这种方式的应用场景受到极大限制,无法满足复杂的访问内存的需求。
综上,现有的访问远端设备的内存的方法,数据传输无法兼顾多种性能(如时延和访问权限共享),因此传输性能较差。
发明内容
本申请实施例提供访问远端设备的内存的方法、装置及系统,能够兼顾数据传输的多种性能,如时延和访问权限共享,提升数据传输的效率。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种处理请求的方法,该方法由下文描述的第一节点执行,第一节点是发送请求的设备或发该设备中的组件(比如芯片),或者其他支持发送请求这个功能的组件。其中,第一节点基于第一虚拟地址得到对应的物理地址,该第一虚拟地址是第一请求中的虚拟地址,该第一请求用于请求读第二节点的数据,或者请求将数据写入该第二节点;该第一节点基于第一映射关系向该第二节点发送第二请求,该 第一映射关系为该物理地址与总线地址之间的映射关系,该第二请求与该第一请求对应,该第二请求包括该总线地址,该总线地址指示该第二节点中的实例对应的虚拟地址。
在本申请中,总线这个词不仅用于同一设备或者同一节点内信号和数据的传输路径或数据链路,也能指示不同节点之间的信号和数据的传输路径或数据链路。可以认为,本申请中的总线可以覆盖现有技术中的总线和网络这两个词的功能,也就是本申请扩展了总线这个词的使用场景。这是为了能够将访问本端设备的数据所使用的指令(如读指令和写指令)扩展使用到访问远端设备的数据的场景,从而无需在请求格式和处理流程上区分本端设备和远端设备的数据访问,也就无需在访问远端设备时,通过远程的网络通信协议来封装请求和数据。为了与传统的总线区分,本申请中用于不同节点间通信的总线也称为高性能互联总线(High Performance Interconnect Bus,HPIB)。
因此,总线地址也是本申请提出的一个新概念,总线地址可以指示另一个节点(即远端设备,如第二节点)中的实例对应的虚拟地址,并携带在发送给其他节点的数据访问请求(如第二节点)中。一些场景下,每个总线地址都是全局唯一的,而全局可能是指整个网络,也可能是网络中划定的一个范围,例如网络中的一个域,或者一栋楼,一个工业园,一个城市等等。设定全局唯一的总线地址,可以在该“全局”内,无疑义地指示一个实例的虚拟地址,从而简化地址的转换和寻址,提高数据访问的效率。
应理解,上述过程可以访问第二节点的存储介质以读数据或者写数据,该存储介质是第二节点的实例可以使用的介质,例如内存、缓存以及其他的一些存储器件。
应理解,实例对应的虚拟地址,也简称实例的虚拟地址,就是该实例所在的操作系统给实例分配的虚拟地址空间中的虚拟地址。虚拟地址空间是一段虚拟地址,或者几段虚拟地址。通过这个虚拟地址,实例可以使用与该虚拟地址对应的物理地址,也简称实例的物理地址,也就是使用真实的硬件资源。上述方法中基于第一虚拟地址得到对应的物理地址的过程,就是第一节点中的一个实例做地址翻译的过程。
应理解,访问第二节点中的存储介质,就是读第二节点中的数据,或者将数据写入第二节点中。当然,也可能既读又写,即既请求读第二节点中的某个位置的数据,又请求写第二节点中的另一个位置的数据。具体实现可以是一条第二请求中既包括读指令又包括写指令。第二节点中的存储介质,例如可以是第二节点中的内存,或者第二节点中具有存储数据功能的其他设备。
应理解,在第一请求用于将数据写入第二节点的情况下,至少向第二节点发送的第二请求中应携带要被写入的数据,这个数据可以是第一节点的应用下发的,也可能是第一节点的操作系统从第一节点的存储介质中获取的。第二请求中的数据可以是来自第一请求,也可以是基于第一请求得到第二请求的过程中添加的。
综上,第一请求可以是由第一节点上运行的业务、应用或者使用第一节点的用户的操作触发的,其中携带有第一虚拟地址。第一节点基于第一虚拟地址对应的物理地址,以及第一映射关系,得到与第一请求对应的第二请求,由于总线地址对应第二节点中的实例,所以第一节点可以向第二节点发送该第二请求。也就是说,第二请求至少是将第一请求中的物理地址变更为对应的总线地址。总线地址指示的是第二节点中的实例对应的虚拟地址,而不是实例的物理地址。
应理解,一个节点的物理地址只能被一个节点管理或者访问。由于总线地址是 虚拟地址,就可以被第一节点通过第一请求访问时,同样也可以由第二节点访问,或者被其他节点通过请求访问,也就是可以在数据访问中实现地址的共享,另一方面,使用总线地址,而无需使用网络访问的语义,相比于现有的网络通信技术,可以降低访问远端设备的数据的时延,提升访问速率,也就是说,兼顾了数据传输中时延和访问权限共享这两方面的性能。
一种实现方式下,该第一节点包括总线端设备,该第一节点中的总线端设备用于使用该第一映射关系与该第二节点通信。
通过总线端设备,第一节点可以接入在节点之间通信的总线访问其他节点的数据,这种总线本申请也称之为“高性能总线”,可以理解为节点之间通信所使用的物理线路。总线端设备用于使用该第一映射关系以及第一映射关系所在的第一映射表,但不编辑或者管理第一映射关系(表),也就是在使用过程中不改变第一映射关系(表)记载的信息。而总线端设备的驱动则管理第一映射关系表,具体可以是管理第一映射关系表中的表项,如初始化、赋值、修改、更新等。应理解,总线端设备的驱动是软件模块,安装在第一节点的操作系统中运行,以便第一节点的操作系统使用总线端设备。
相应的,该物理地址是该第一节点的总线端设备对应的物理地址空间中的地址。这意味着上述的物理地址所在的物理地址空间(物理地址空间就是一段物理地址)归属于第一节点的总线端设备,也就是被第一节点的总线端设备管理的,或者说,是第一节点的总线端设备有权使用的。现有技术中,实例的物理地址一般是节点中动态随机存储器(Dynamic Random Access Memory,DRAM)对应的物理地址空间,或者输入/输出(I/O)设备物理地址空间,由操作系统管理,这是因为实例由操作系统拉起,自然也是被分配操作系统可管理的物理地址。而本方法中则不同,实例的物理地址归属于总线端设备对应的物理地址空间。也就是说,第一请求中携带的虚拟地址要可以映射到总线端设备对应的物理地址空间,才能使用总线端设备处理和向其他节点发送。具体的,上述这些物理地址空间都可以是在操作系统安装前,由基本输入输出系统(BOIS)与上述这些设备协商,确定这些设备对应的物理地址空间,待操作系统运行后,由BOIS上报操作系统。
一种实现方式下,该总线地址包括该第二节点中的总线端设备的标识以及第二虚拟地址,该第二节点中的总线端设备用于该第二节点与该第一节点通信,该第二虚拟地址与该实例有关。第二虚拟地址与该实例的物理地址空间中的物理地址有映射关系,且一个总线地址应当能够唯一地映射到某个或某段物理地址,从而实现本申请描述的地址映射。本申请不限制第二虚拟地址的实现方式。一种实现方式下,第二虚拟地址就是这个实例的虚拟地址空间中的地址(这种方式下通常总线地址中还包括该实例的标识);另一种实现方式下,第二虚拟地址的赋值是自定义的,例如,每个第二虚拟地址都各不相同,且对应不同的物理地址。另外,第二虚拟地址是与该实例有关的,但需要总线地址的其他信息,例如该第二节点中的总线端设备的标识,与第二虚拟地址一起,才能指示第二节点中的实例对应的虚拟地址。
为便于管理,总线端设备的标识和自定义的多个第二虚拟地址均在某个域(全域或者一个或者多个局域组成的域)中唯一。例如,一栋大楼,一个小区,一个数据中心,或者一个城市都可以是一个域。
也就是说,要完成上述方法,第二节点也要包括总线端设备,上述处理数据的方法是通过节点中的总线端设备完成的。这样,就可以通过该总线地址,将请求发送 给第二节点,而第二节点也可以基于总线地址执行该请求。另外,第一节点和第二节点中都可以包括多个总线端设备。
另一种实现方式下,该总线地址还包括该实例的标识。可见,可以通过一个虚拟地址直接指示一个实例的虚拟地址。例如,这个虚拟地址是第二节点中全局唯一的虚拟地址。也可以通过实例标识加虚拟地址的形式指示一个实例的虚拟地址,那么在第二节点中,不同的实例对应的虚拟地址的值可能相同。
一些实现方式下,该实例的标识还指示该实例对应的虚拟地址空间。也就是说,本申请不限制实例的标识的实现方式,只要能区分一个节点中的不同的实例就可以。由于节点中,通常不同实例对应的虚拟地址空间不同,因此也可以直接用实例对应的虚拟地址空间的名称或者值作为实例的标识。
一种实现方式中,该第一节点存储有第一映射表,该第一映射表用于指示包括该第一映射关系在内的多个映射关系,其中,该多个映射关系中的每个映射关系为物理地址与一个总线地址之间的映射。
本申请不限定第一映射表的实现形式,以及包括第一映射关系在内的多个映射关系在第一映射表中的承载方式。映射表可以是单表,或者多级表,例如多级链表。这样第一映射关系可以记载在单表中的一行或一列,也可以记载在多级链表的一个表项,这一个表项可以是跨级的,物理地址和相应的总线地址可能在不同级。也就是说,同样不限定第一映射表中的一个表项的实现方式,一个表项用于表示物理地址和总线地址之间的一条映射关系。
第一映射表还可以是页表,由于页表是按照物理地址分段分层的,页表的内容记载对应的总线地址即可。这样,便于管理和使用。第一映射关系表可存储在第一节点的内存中,再将其中的一部分缓存在总线端设备中,类似于内存管理单元(Memory management unit,MMU)中的转译后备缓冲器(Translation Lookaside Buffer,TLB),这样就可以减少总线端设备对内存的访问。
一种实现方式下,上述方法还包括:获取该第二节点中的地址空间,该地址空间指示至少一个总线地址;基于获取到的该第二节点中的地址空间,更新该第一映射表,以使得更新后的该第一映射表中,包括该地址空间指示的该至少一个总线地址对应的至少一个表项。可见,获取第二节点中的被分享的地址空间(分享是指供除第二节点之外的节点访问),并将被分享的地址空间维护在第一映射表中,可以保障第一节点能够通过第一映射表和总线地址访问第一节点的存储空间,且第一映射表的更新可以使第一节点同步第二节点提供的信息。
这里描述了更新第一映射表的方法,第一映射表是由该总线端设备的驱动更新的。应理解,只要第一映射表中的内容发生了增加和替换,都可以称为更新,例如在空的第一映射表中填入表项的内容,或者在现有的第一映射表(例如已包括若干个有内容的表项)中添加一个或多个新的表项,再或者,替换第一映射表中原本保存的一个或多个表项中的内容。
其中,被获取的第二节点中的地址空间就是第二节点中,其他节点可以访问的地址空间,可以是第二节点通知第一节点的,也可以是第一节点主动向第二节点或者向包括第一节点和第二节点的通信系统中的管理节点查询的。而获取的地址空间的表示形式,本申请不做限制。例如可以以两个地址(即起始地址和终止地址)表示,也可以以一个地址和一个地址偏移量表示。
相应的,第二方面,本申请实施例提供一种处理请求的方法,该方法由第二节点执行,第二节点是处理请求的设备,或该设备中的组件(比如芯片),或者其他能够完成处理该请求以访问相应的存储介质的功能的组件。其中,该方法包括:接收来自第一节点的请求,该请求用于读取该第二节点中的数据,或者用于将数据写入该第二节点,该请求包括总线地址,该总线地址指示该第二节点中的实例对应的虚拟地址;基于该总线地址以及第二映射关系,得到该第二节点的存储介质中,与该请求对应的物理地址,以执行该请求指示的操作,该第二映射关系为该总线地址与该请求对应的物理地址之间的映射关系。
可见,第二方面是与第一方面对应的,是在第二节点的视角补充描述第一方面的方法,第二方面中的许多名词与第一方面中的名词是对应的,例如,来自第一节点的请求,对应第一方面中,第一节点发送的第二请求。因此,第一方面中对各种词语或者句子的说明(例如第一方面中的第二请求,就是第二方面中来自第一节点的请求),以及对技术效果的描述,如果第二方面有涉及到,那么在第二方面中同样适用,不再赘述。
请求对应的物理地址,就是该请求所指示的要读或者写的数据所在的物理地址,该请求对应的物理地址属于该第二节点中的实例的物理地址空间内,这才能通过该实例的虚拟地址确定。
从第二方面描述的方法流程可知,虽然请求中的总线地址指示第二节点中的实例对应的虚拟地址,但这个第二节点中的实例可以不感知处理请求的过程。这样,这个实例的主要用途是将该实例对应的地址空间(物理地址空间和对应的虚拟地址空间)分享出来,使得第一节点可以发送请求,在该实例对应的地址空间中读数据或者写数据。
一种实现方式中,该第二节点包括总线端设备,该总线端设备用于基于该第二映射关系处理来自该第一节点的请求。可见,接收请求的第二节点也需要包括总线端设备,这样才能接入总线,接收到来自第一节点的请求,并做处理。
一种实现方式中,该总线地址包括该总线端设备的标识和第二虚拟地址,该第二虚拟地址与该实例有关。
为便于管理,总线端设备的标识可以在某个域(全域或者局域)中唯一。
这种情况下,该第二映射关系为该第二虚拟地址与该请求对应的物理地址之间的映射关系。其中,该请求对应的物理地址就是该请求要读或者写数据所要访问的物理地址。例如,该物理地址和第二虚拟地址对应同一实例,第二虚拟地址可以就是该实例的对应的虚拟地址,而该物理地址则属于该实例对应的物理地址空间。
一种实现方式中,该第二节点存储有第二映射表,该第二映射表用于指示包括该第二映射关系在内的多个映射关系,其中,该多个映射关系中的每个映射关系为该第二节点中的虚拟地址,以及与该第二节点中的虚拟地址对应的物理地址之间的映射。
可见,为完成第一节点和第二节点的通信,第二节点中存储的第二映射关系中应与来自第一节点的请求中的总线地址匹配,这样才可以得到需要被访问的物理地址。而第二节点中,第二映射关系所在的第二映射表也维护有多个指示该第二节点中的虚拟地址,与该第二节点中的物理地址之间的映射的表项。
一种实现方式中,该第二映射表由该总线端设备的驱动更新。
一种实现方式中,上述方法还包括:获取该实例的地址分配请求,该地址分配 请求表示该实例提供该实例对应的物理地址空间;基于该地址分配请求,更新该第二映射表,以使得更新后的该第二映射表中,包括与该实例对应的物理地址空间对应的至少一个表项。
其中,该实例可以提供该实例对应的全部或者部分物理地址空间。也就是说,基于该地址分配请求更新该第二映射表,旨在说明该实例可以通过这种方式分享该实例对应的物理地址空间中的地址段。具体分享哪一段或者哪几段,一个地址段有多长,本申请都不做限制。
可见,第二设备获取第二设备中实例的地址分配请求,该地址分配请求可以是实例主动发送的,例如发给总线端设备的驱动,也可以是第二设备主动获取的。可见,第二节点可以通过第二节点上运行的实例或者第二节点上运行的实例可以访问的设备,将第二设备中的地址段共享出来,以第二映射表的形式,供其他节点访问这个地址段中的某个或某段地址。其中,该地址段是实例对应的物理地址空间,通常在第二节点的内存中,当然,也可以在第二节点的其他存储设备中。
第二映射表的实现方式与第一映射表类似,具体的说明请参考第一方面中有关第一映射表的说明。因此,更新后的该第二映射表中,包括与该实例对应的物理地址空间对应的至少一个表项,可以是第二映射表中的一部分表项记载的虚拟地址,是该实例对应的虚拟地址,也就是说,第二映射表的表项中可能不记载该实例对应的物理地址空间中的一个或一段地址,但是记载有与该物理地址空间中的物理地址对应的虚拟地址。
第二方面还描述了另一种总线地址的实现方式,相应的,第二节点使用和管理该总线地址的方式也与上述的实现有所不同。
具体的,总线地址还包括该实例的标识。通常,实例的标识是实例的名称或者编号,但是,也可以用其他的量作为实例的标识,只要能区分不同的实例即可。一种实现方式下,该实例的标识也指示该实例对应的虚拟地址空间,该请求对应的物理地址属于该实例对应的物理地址空间。
一种实现方式下,该第二映射关系包括该实例的标识与该实例的页表基址之间的映射,和该第二虚拟地址与该请求对应的物理地址之间的映射,该第二虚拟地址与该请求对应的物理地址之间的映射记载在该实例的页表中。页表基址,就是页表的基址,也就是一个页表的被存储的起始位置,通过基址加偏移量,就可以指示一个地址段,页表可以存储在这个地址段指示的存储空间内。当该实例为进程时,实例的页表基址就是该进程的页表在内存中的起始存储位置,可用于指代该进程的页表的物理地址。
可见,在总线地址包括实例的标识的情况下,第二映射关系包括两部分。这样就可以通过实例的标识查询到实例的页表基址,也就是能定位到实例的页表。并在实例的页表内,基于第二虚拟地址,查询到为响应来自第一节点的请求所需操作的物理地址,也就是来自第一节点的请求对应的物理地址。当实例是进程时,可以复用现有的进程页表维护虚拟地址和物理地址之间的映射,更加方便。进程页表通常由输入输出内存管理单元,以及内存管理单元使用。当然,在某些实现中,也可以由总线端设备使用。
一种实现方式下,该第二节点存储有第三映射表,该第三映射表包括多个表项,该实例的标识与该实例的页表基址之间的映射记载在该多个表项中的一个,该多个表 项的每个表项用于记录该第二节点中的实例的信息,该信息包括实例的标识和实例的页表基址。
可见,在总线地址中包括实例的标识的情况下,一些实现方式中,第二节点中维护的两个表,也就是第三映射表和实例的页表,都会参与上述方法。本申请不限制第三映射表的实现方式,例如第三映射表可以是第二节点中用于记录和管理第二节点中的实例的映射表。本申请也不限制第三映射表中表项的格式,例如,表项中还可以包括除了实例的标识和实例的页表基址外的其他信息。
与第二映射表类似,该第三映射表由该总线端设备的驱动更新。
一种实现方式下,第二方面的方法还包括:基于该第二节点中实例的信息,更新该第三映射表,以使得更新后的该第三映射表中,包括与该信息对应的表项,该信息包括实例的标识和实例的页表基址。
第三映射表与第二映射表的更新方式类似,此处不做赘述。第二节点中实例的信息通常由第二节点的操作系统中的模块收集,总线端设备的驱动也运行在操作系统中。第二节点中实例的信息也可以在实例被创建或者投入使用时,实例主动向总线端设备的驱动报告。
第二方面中描述的地址转换过程,在总线地址不包括实例的标识时,可以完全由总线端设备执行,也可以完全由输入输出内存管理单元执行;在总线地址不包括实例的标识时,也可以完全由总线端设备执行,或者完全由输入输出内存管理单元执行,或者如前文所述,总线端设备查询第三映射表和输入输出内存管理单元查询实例的页表,配合执行。本申请对地址转换过程中涉及到的器件和具体处理过程不做限制。
第三方面,本申请实施例提供一种处理请求的系统,其特征在于,该系统包括第一处理器,内存管理单元MMU,第一总线端设备,第二处理器,存储介质和第二总线端设备,该第二处理器运行有实例,该实例的物理地址空间指向该存储介质;该内存管理单元用于基于来自该第一处理器的第一请求,得到与第一虚拟地址对应的物理地址,该第一请求用于请求读数据,或者请求写数据,该第一请求中包括该第一虚拟地址;该第一总线端设备用于基于第一映射关系向该第二总线端设备发送第二请求,该第一映射关系为该物理地址与总线地址之间的映射关系,该第二请求与该第一请求对应,该第二请求包括该总线地址,该总线地址指示与该实例对应的虚拟地址;该第二总线端设备用于接收该第二请求;该第二总线端设备还用于基于该总线地址以及第二映射关系,处理该第二请求,以得到该请求对应的结果,该第二映射关系为该总线地址与该第二请求对应的物理地址之间的映射关系,该第二请求的对应物理地址属于该实例的物理地址空间。
可见,第三方面是与第一方面、第二方面对应的,是在系统的角度描述方案。一种实现方式下,第三方面的系统可以认为包括两个节点,其中一个包括第一处理器,内存管理单元MMU,第一总线端设备,对应前文的第一节点。另一个包括第二处理器,存储介质和第二总线端设备,对应前文的第二节点。第一处理器和第二处理器分别运行不同的操作系统。第三方面中的许多名词与第一方面、第二方面中的名词是对应的。因此,第一方面和第二方面中对各种词语或者句子的说明,各种实现方式的描述以及对技术效果的描述,如果第三方面有涉及到,那么在第三方面中同样适用,不再赘述。
需说明,实例的物理地址空间指向该存储介质,是指该实例可以使用的这段物理 地址,是属于该存储介质的,或者说,该实例能使用的物理存储资源,是该存储介质中的一部分。
上述系统中,在总线地址不包括实例的标识的情况下,第二总线端设备具体用于通过总线地址中的第二虚拟地址以及该第二映射关系,访问该存储介质中,与该请求对应的物理地址,以执行该请求指示的操作,比如读取该物理地址中存储的数据,或者将第二请求中的数据写入该物理地址中。
而在总线地址不包括实例的标识的情况下,该系统还包括输入输出内存管理单元IOMMU,该IOMMU用于通过该实例的页表,查找到与该请求对应的物理地址,以执行与该第二请求相应的操作,并将该操作的结果返回给该第二总线端设备,相应的,该第二总线端设备用于基于该总线地址,以及该实例的标识与该实例的页表基址之间的映射,查找到该实例的页表基址并将该实例的页表基址传递给该输入输出内存管理单元IOMMU。
当然,系统中可以始终包括IOMMU,而同时兼容上述两种实现。
第四方面,本申请实施例提供一种处理请求的装置,该装置位于第一节点,其特征在于,该装置包括:处理模块,该处理模块用于向地址翻译模块发送第一请求,该第一请求用于请求读第二节点的数据,或者请求将数据写入该第二节点;该地址翻译模块,用于基于第一虚拟地址得到对应的物理地址,该第一虚拟地址是该第一请求中的虚拟地址;总线通信模块,用于基于第一映射关系向该第二节点发送第二请求,该第一映射关系为该物理地址与总线地址之间的映射关系,该第二请求与该第一请求对应,该第二请求包括该总线地址,该总线地址指示该第二节点中的实例对应的虚拟地址。
第四方面中的地址翻译模块,相当于前文描述的总线端设备。
第四方面是与第一方面的方法对应的装置,该装置具有实现第一方面中任一种实现方式中处理请求的方法的功能。该功能可以通过硬件实现,也可以通过软件和硬件配合实现。该硬件或软件包括一个或多个与上述功能相对应的模块。第四方面中的许多名词与第一方面中的名词是对应的,与第二方面的方法和第三方面的系统也有关联。因此,第一方面、第二方面和第三方面中对各种词语或者句子的说明,各种实现方式的描述以及对技术效果的描述,如果第四方面有涉及,那么在第四方面中同样适用,不再赘述。
第五方面,本申请实施例提供一种处理请求的装置,该装置位于第二节点,其特征在于,该装置包括:处理模块和存储介质,该处理模块用于运行实例,该实例的物理地址空间指向该存储介质;总线通信模块,用于接收来自第一节点的请求,该请求用于读取数据,或者用于将数据写入,该请求包括总线地址,该总线地址指示该实例对应的虚拟地址,还用于基于该总线地址以及第二映射关系,处理该第二请求,以得到该请求对应的结果,该第二映射关系为该总线地址与该请求对应的物理地址之间的映射关系,该请求对应的物理地址属于该实例的物理地址空间。
第五方面中的地址翻译模块,相当于前文描述的总线端设备。
第五方面是与第二方面的方法对应的装置,该装置具有实现第二方面中任一种实现方式中处理请求的方法的功能。该功能可以通过硬件实现,也可以也可以通过软件和 硬件配合实现。该硬件或软件包括一个或多个与上述功能相对应的模块。第五方面中的许多名词与第二方面中的名词是对应的,与第一方面的方法和第三方面的系统也有关联。因此,第一方面、第二方面和第三方面中对各种词语或者句子的说明,各种实现方式的描述以及对技术效果的描述,如果第五方面有涉及,那么在第五方面中同样适用,不再赘述。
第六方面,本申请实施例提供了一种芯片,该芯片包括处理电路、存储介质,该存储介质中存储有指令;该指令被该处理电路执行时,该芯片执行如上述任一方面中任一项该的处理请求的方法。
第七方面,本申请实施例提供了一种用于处理请求的设备,该设备包括:存储介质、处理电路、内存管理单元MMU和总线端设备,该存储介质与该处理电路耦合,该存储介质用于存储计算机程序代码,该计算机程序代码包括计算机指令,当该计算机指令被该处理电路执行时,执行以下方法:该内存管理单元MMU基于第一虚拟地址得到对应的物理地址,该第一虚拟地址是第一请求中的虚拟地址,该第一请求用于请求读取另一设备的数据,或者请求将数据写入该另一设备;该总线端设备基于第一映射关系向该另一设备发送第二请求,该第一映射关系为该物理地址与总线地址之间的映射关系,该第二请求与该第一请求对应,该第二请求包括该总线地址,该总线地址指示该另一设备中的实例对应的虚拟地址。
第七方面是与第一方面的方法对应的装置,该装置具有实现第一方面中任一种实现方式中处理请求的方法的功能。第七方面中的许多名词与第一方面中的名词是对应的,与第二方面的方法和第三方面的系统也有关联。因此,第一方面、第二方面和第三方面中对各种词语或者句子的说明,各种实现方式的描述以及对技术效果的描述,如果第七方面有涉及,那么在第七方面中同样适用,不再赘述。
第八方面,本申请实施例提供了一种用于处理请求的设备,该设备包括:存储介质、处理电路和总线端设备,该存储介质与该处理电路耦合,该存储介质用于存储计算机程序代码,该计算机程序代码包括计算机指令,当该计算机指令被该处理电路执行时,指示该总线端设备执行以下方法:接收来自另一设备的请求,该请求用于读取该设备的数据,或者用于将数据写入该设备,该请求包括总线地址,该总线地址指示该设备中的实例对应的虚拟地址;基于该总线地址以及第二映射关系,得到该设备的存储介质中,与该请求对应的物理地址,以执行该请求指示的操作,该第二映射关系为该总线地址与该请求对应的物理地址之间的映射关系。
第八方面是与第二方面的方法对应的装置,该装置具有实现第二方面中任一种实现方式中处理请求的方法的功能。第七方面中的许多名词与第二方面中的名词是对应的,与第一方面的方法和第三方面的系统也有关联。因此,第一方面、第二方面和第三方面中对各种词语或者句子的说明,各种实现方式的描述以及对技术效果的描述,如果第八方面有涉及,那么在第八方面中同样适用,不再赘述。
下述的第九方面到第十四方面与第一方面、第二方面或第三方面对应,第一方面、第二方面和第三方面中对各种词语或者句子的说明,各种实现方式的描述以及对技术效果的描述,如果下述方面有涉及,那么在下述方面中同样适用,不再赘述。
第九方面,提供一种通信装置,包括:处理器;处理器用于与存储器耦合,并读取存储器中的指令之后,根据指令执行如上述任一方面中任一项的处理请求的方法。
第十方面,本申请实施例提供了一种通信装置,该装置可以为芯片系统,该芯片系 统包括处理器,还可以包括存储器,用于实现上述任一方面所描述方法的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第十一方面,提供一种通信装置,该装置可以为电路系统,电路系统包括处理电路,处理电路被配置为执行如上述任一方面中任一项的方法。
第十二方面,本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述任一方面的方法。
第十三方面,本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行上述任一方面的方法。
第十四方面,本申请实施例提供了一种系统,系统包括第四方面任一项的处理请求的装置和第五方面任一项的处理请求的装置。
附图说明
图1为本申请实施例提供的一种处理请求的架构的示意图;
图2为本申请实施例提供的一种源端通过总线地址访问目的端的内存的流程的示意图;
图3为本申请实施例提供的被共享内存的管理架构的示意图;
图4为本申请实施例提供的设备的结构示意图;
图5a为本申请实施例提供的一种处理请求的系统的架构示意图;
图5b为本申请实施例提供的又一种处理请求的系统的架构示意图;
图6为本申请实施例提供的一种用于处理请求的装置(对应第一节点)的示意图;
图7为本申请实施例提供的又一种用于处理请求的装置(对应第二节点)的示意图;
图8为本申请实施例提供的一种用于处理请求的设备(对应第一节点)的示意图;
图9为本申请实施例提供的又一种用于处理请求的设备(对应第二节点)的示意图。
具体实施方式
首先,对本申请中可能出现的一些表达方式作说明。
“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
“至少一个”是指一个或者多个,而“多个”是指两个或两个以上。
“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。
字符“/”一般表示前后关联对象是一种“或”的关系,例如,A/B可以表示A或B。
此外,本申请的描述中所提到的术语“包括”、“包含”和“具有”,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子或说明。“示例性的”或者“例如”的任何实现方式(如本申请中的实施例)或设计方案不应被解释为比其它实现方式或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请的说明书以及附图中“的(英文:of)”,“相应的(英文:relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时, 其所要表达的含义是一致的。
下面,简单描述一下本申请出现的部分术语。
实例:实例是可以运行应用程序或者系统程序的软件模块,且,该软件模块在被操作系统运行时才能称为实例,否则,只是一段代码。实例有多种表现形式,例如进程和线程都可以理解为实例的一种。实例运行于节点。
节点:节点是具有处理数据和存储数据这两种功能中至少一种功能的设备。节点上运行有操作系统,节点可以操作系统区分,也就是说,不同的节点运行的操作系统不同。或者说,一个操作系统的运行所使用到的硬件和软件可视归属同一个节点。本申请中,节点可以是完整的物理机。例如一个终端,或者一个网络设备,如服务器,服务器代理等。节点也可以是物理机中的器件。例如处理器、内存和存储器等。当一个物理机中包括两个节点时,这两个节点运行有不同是操作系统,例如,物理机中包括运行有操作系统1的中央处理器(Central Processing Uint,CPU)和运行有操作系统2的图形处理器(Graphics Processing Unit),则该中央处理器和该图形处理器可以认为归属于不同的节点。节点是器件时,在硬件上是较为独立的个体。“独立的个体”可以理解为,具有专门功能的电路或模组,且该器件被封装或组装在物理机上。本申请中的数据访问,可以理解为一个节点通过实例访问另一个节点维护的数据。节点中的设备是指节点中的部件或者组件,例如节点是物理机时,CPU和内存都是该节点中的设备。物理机是指封装成一个产品的计算机,例如服务器,台式电脑,一体机(All-In-One PC,AIO)、笔记本电脑或者智能手机等。
终端:可以包括桌面型、膝上型、手持型、车载型用户终端(User Equipment,UE)设备等,例如智能手机、蜂窝电话、台式电脑、平板电脑、智能电视、智能电视盒子,超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、笔记本电脑、个人数字助理(Personal Digital Assistant,PDA)、便携式多媒体播放器(Portable Multimedia Player,PMP)、专用媒体播放器、消费类通信设备、可穿戴设备(例如智能手表)、AR(增强现实)/VR(虚拟现实)设备等其他类型的通信设备。
本地:对一个实例来说,运行该实例的节点,就是本地。如本地内存,全称应该是“一个实例的本地内存”,也就是指运行该实例的节点的内存。运行实例的节点可以从不同的粒度来描述。例如可以只是处理器,如中央处理器(Central Processing Unit,CPU),或者图处理器(Graphics Processing Unit,GPU),也可以是完整的物理机,即包括处理电路和存储介质。具体采用哪种描述,要看涉及的数据访问过程是否跨物理机。
远端:远端是与“本地”相对的概念。也就是说,对一个实例来说,除了运行该实例的节点,其他的节点就是远端。远端可以是具有计算能力的设备,也可以是用于存储数据的设备。
全局:全局所指的范围是,部署有本申请描述的总线端设备,且可以使用本申请描述的方法相互读写数据的一组节点。本申请不限定这一组节点在实际空间中的位置和范围,例如这一组节点可以在一个数据中心内,也可以跨数据中心,可以在一个企业园区内,也可以跨城市或者国家。
标识:用于将一种或者一个事物与其他同类或不同类的事物做区分。比如,节点的标识,网络的标识,网卡的标识。标识可以是名称,编号,也可以是以某个有区分性的特征作为标识,例如用种类标识。本申请对各种标识的实现不做限制,只要可以做出区分即可。例如,在本申请的一些实现方式下,以实例的虚拟地址空间的标识, 作为实例的标识,而非采用常见的,以实例的名称或者编号作为实例的标识。
地址空间:也可以叫存储空间,指能被某个设备或者实例使用的一段或者多段地址。例如,某个设备或者实例的虚拟地址空间,就是能被该设备或者实例使用的,也就是属于该设备或者实例的一段或者多段虚拟地址。某个设备或者实例的虚拟地址空间是由该设备或者实例所在的操作系统分配的。又例如,某个设备或者实例的物理地址空间,就是分配给该设备或者实例使用的一段或者多段物理地址,在该设备或者实例这个物理地址空间时,其他设备或者实例无法使用这个物理地址空间中地址。实例的物理地址空间是运行该实例的操作系统分配的。这个分配可能是动态的,例如随着实例的运行,占用的物理地址空间越来越大,但是会有一个上限。设备的物理地址空间的大小和范围通常是固定的。
页表:一种数据结构,可以用于记载两种数据之间的映射关系。通常用于将虚拟地址转换为物理地址。分级页表也是页表的一种。页表被存储在存储介质中,页表的基址,也简称页表基址,是指存储该页表的物理地址的起始地址。页表的大小决定这个页表对应的虚拟地址的取值范围。页表中的虚拟地址是使用该页表的实例或者设备的虚拟地址,用于指示该页表中某个位置(或者说某个表项)的物理地址相对于页表基址的偏移量。而页表中某个位置存储的数据,就是使用这个页表的实例或者设备的物理地址空间中的物理地址。一个页表中包括多个表项,每个表项都可以指示一个虚拟地址与使用该页表的实例或者设备的一个物理地址的映射关系,应理解的是,这里所说的表项是个功能性的描述,表项的具体实现方式本申请不做限定,例如一个虚拟地址与一个物理地址的映射关系可能是跨级的,一个虚拟地址与一个物理地址的映射关系也可能是间接的。本申请对页表的具体实现方式不做限定,例如,可以是多级页表,也可以是哈希表等等。
进程的页表:也简称为进程页表,记载有一个进程的虚拟地址空间中的虚拟地址和这个进程的物理地址空间中的物理地址之间的映射关系。
总线(bus):现有技术中的总线是计算机的内部结构,是计算机中各种功能部件之间传送信息的公共通信干线。计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据的地址以及控制信号。本申请中,总线是高性能互联总线(High Performance Interconnect Bus,HPIB)的简称,不仅可以连接一个计算机内部的各种部件,也可以代替网络,在不同的计算机之间铺设,从而连接不同的计算机,每个计算机通过总线端设备接入高性能互联总线,总线端设备相当于网络技术中的网卡或基带天线等通信模块。本申请描述的是硬件铺设好之后,如何使用总线本身的功能完成处理用于读数据或者写数据的请求,即访问远端的存储介质的方法。本申请对HPIB和总线端设备的具体结构不做详细描述。
内存语义:内存语义是指一个物理机中,通过总线连接的各个器件之间通信时,所使用的通信指令。这种通信也称为总线通信,是同属于一个操作系统中的不同实例或者设备之间的通信,因此不需要使用网络通信技术。装载/存储(load/store)指令就是典型的内存语义。
现有的通信技术,可以分为网络通信和总线通信,通信涉及的信息交互,可以是传输数据,也可以是传输指令。网络通信用于本端设备与远端设备之间的通信,传输的报文通常经过操作系统中协议栈的封装,使用网络通信协议。网络通信中通常使用网络通信技术中的发送/接收(send/receive)指令,或者远程直接内存访问(Remote Direct Memory Access,RDMA)的读/写(read/write)指令来传输信息。这些语义使用之前需要先建立连接,简称建链,当集群规模不断增大时,建链的开销会非常大。并且,RDMA提供的网络语义绕过了位于操作系统的内核中的协议栈,能够有效降低端到端的网络时延,但它的异步通知机制以及网卡冗长的发送流程,依然制约了时延的进一步降低。
总线通信用于一个设备中,通过总线连接的各个器件之间的通信。总线通信使用内存语义(例如load/store指令)来传输信息。这种内存语义没有上述的限制,总线通信的通信速度比网络通信更快。而现有的使用内存语义的技术方案,可以使本端设备将远端设备中的内存接管过来,也就是将远端设备中的内存作为本端设备的内存的扩展,相当于本端设备上的一个外接存储模块,而远端设备则无权再使用和管理这个内存,也无法被其他的设备使用。因为现有的方案,远端设备是通过被分享设备中,内存的物理地址来读写数据的。这样,相当于该物理地址指示的内存被分配给了远端设备使用,而被分享设备则无权再管理这段内存。
本申请提出了基于虚拟地址寻址的处理请求的方法,实现了内存语义的远程化,也就是在远程从而在解决传统网络语义存在的建链开销和时延高的问题的同时,提供存储介质(例如内存)共享的能力基础。本申请的技术方案也支持远端的存储介质的共享。例如,通过配置,多个节点的进程都可以将同一块远端内存映射到自己本地的地址空间,从而既实现了远端内存的共享,又统一了本地和远端访存行为。也就是说,使用本申请描述的技术方案,可以如同访问本地数据一样访问远端数据。而本申请记载的新的通信技术,可以将用在本地(即一个设备中)器件之间通信的总线技术,和本地与远端通信所使的用网络技术进行统一,也就是说,不再区分这两种通信场景,而是在这两种通信场景中使用同一种通信方法。
下面基于图1,描述本申请适用的一种架构图。其中,图中的控制器(controller)1001可以与其它组件在同一个节点上,也可以在不同的节点,其余部分则可理解为属于一个节点。应理解,图1描述的架构包括节点100和控制器1001,控制器1001被示意为不包括在节点100中。应理解,图1描述的架构只是为了便于理解的一种示意,并不是对本申请提及的节点可使用的架构的限制,该节点100中的其他软件部分,例如操作系统和其他硬件部分,如显示器等,并未显示。
该架构包括硬件和软件两部分。具体的,硬件包括:
中央处理器(central processing unit,CPU)1004和内存管理单元(Memory Management Unit,MMU)1005:两者一般是封装成一个芯片的。CPU运行应用,发起用于读数据或者写数据的请求,下文也简称为访存请求,即访问存储介质的请求,因为读数据或者写数据都要找到存储介质(例如内存)中的地址。MMU负责由CPU发起的访问内存的请求的地址翻译,也就是将访存请求中的虚拟地址转换成物理地址。
内存(Memory)1006:图1中以内存为例示意该节点上的存储介质,该内存的物理形态可以是内存条。在本申请的方法中,内存除了提供给本地的实例(例如进程)使用,还可以被其他节点的实例使用,其他节点的实例使用的方式是通过请求和本申请描述的方法,向这个内存写数据,或者请求读取该内存中的数据。
输入输出内存管理单元(Input/Output Memory Management Unit,IOMMU)1007:和MMU1005的功能类似,但IOMMU负责的是除了CPU之外的硬件的访存请求的 地址翻译。例如,该硬件为内存,则访存请求就是用于请求向内存写数据,或者请求读取内存中的数据。除了CPU之外的硬件还可以是其他具有直接存储器访问(Direct Memory Access,DMA)的器件。
总线端设备1008:也简称端设备(End Point,EP),用于该节点接入高性能互联总线,作用相当于网卡。总线端设备通常是一个具有地址转换功能的硬件模块,类似网络,总线端设备也需要一个驱动安装在节点的操作系统中,才能使节点的操作系统使用它。一个节点中可以包括多个总线端设备,正如一个节点中可以安装多张网卡。一个节点中可以即包括总线端设备,又包括网卡。图1中没有画出网卡,只示意性地指示了总线端设备。如果该节点的远程通信全部通过高性能互联总线,也就是都使用内存语义去交互信息,那么这个节点也可以只包括总线端设备。实际布线时,总线端设备可以一端与CPU、内存或者MMU连接,另一端与高性能总线或者高性能总线的交换机连接。
一种实现方式下,节点中的其他涉及到数据读写的设备(如CPU和内存)上也可以集成有总线端设备,作为接口或者通信模块与这些设备封装在一起。
一种实现方式下,IOMMU1007和总线端设备1008的功能可以集成在一个芯片上实现,也就是被合成为一个硬件的器件部署。这时,也可以认为是总线端设备兼具了IOMMU的功能。
应理解,本申请中的目的端或者说第二节点中的地址翻译过程,可以完全由总线端设备执行,也可以完全由输入输出内存管理单元执行,还可以由总线端设备和输入输出内存管理单元配合执行,本申请只说明(具体可以参考下文中,从系统角度的举例),但对具体实现不做限制。
该架构中的软件模块中,控制器(controller)1001,用于维护全局中,被各个节点中的实例共享出来的地址空间,共享是指不仅运行该实例的节点可以访问,其他节点也可以访问该地址空间。具体的,控制器可以保存有全局中被共享出来的地址空间的信息,并且对这些信息有管理权限。从逻辑上,可以认为全局中的这些地址空间可以集中由一个控制器管理,而实际部署中,这个逻辑上集中式的控制器,既可以是一个专用的服务器或者服务器集群,也可以直接部署在一个或多个节点上。一个包括多个节点的通信系统可以包括一个或多个控制器,这取决于该通信系统的规模。如果包括多个控制器,该多个控制器之间可以使用本申请描述的技术方案通信,也可以使用现有的网络通信的技术进行通信,如传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)。因此,图中的控制器1001可以不属于图中其他部件所在的节点。
而与前述硬件部署在同一节点上的软件模块包括:
总线端设备的驱动(EP driver)1002:是该节点上运行的操作系统(Operation System,OS)的内核中,用于驱动总线端设备这个硬件模块的软件模块。该驱动具有与其他的硬件的驱动相同的,使操作系统能够感应和使用相应的硬件的这个能力。另一个方面,该驱动还用于配置,或者说叫更新该总线端设备使用的,用于对总线地址进行转换的表,例如前文提到的第一映射表和第二映射表。
代理(Agent)1003:用于管理本地节点中被共享的内存,以及和controller 1001通信。Agent1003和controller1001之间的通信可以使用本申请描述的高性能互联总线,也可以通过以太网。一种实现方式下,总线端设备的驱动可以兼具代理中,管理 本地节点中被共享的内存的功能,也就是说,上述两个模块只是一种从功能角度的示意性划分。
前文所说的第一虚拟地址可以是源端(即前文描述的第一节点)中的一个实例的虚拟地址空间指示的地址范围中的地址。这个实例就是执行该第一请求操作的实例。从源端的实例的角度,整个方法实现的就是:该实例运行该第一请求,并得到运行该第一请求后的结果。例如第一请求是请求读第二节点的存储介质,也就是读取数据,那么结果就是从存储介质中得到了请求的数据;再例如第一请求是请求写第二节点的存储介质,也就是写数据,那么结果就是成功将数据写入第二节点的存储介质(例如内存)。第一实例能感知到的这个过程与读/写本地的存储介质是一样的。因此,站在源端的软件角度,即对源端的运行该实例的处理器而言,读取本地内存数据的过程和读取远端内存的数据的过程被统一了。而如果进一步探究为了得到与该第一请求对应的结果究竟经历了怎样的处理过程,就是本申请描述的方法流程了。即本申请描述的是上述代码实现的具体过程,其中会涉及到第一节点和第二节点的硬件,但是,从软件代码角度,可以认为该实例就是这个第一请求的执行者,也可以说,该实例是这个第一请求的发起者。
因此,本申请着重描述了第一节点向第二节点发送请求,并且第二节点执行与该请求对应的操作这个过程,即处理请求的过程,而对第二节点完成读数据或者写数据后,如何知会第二节点则没有详细描述。这是因为后续的部分的实现可以参考对处理请求的过程的描述,例如,后续的部分是将反馈信息从第二节点发送回第一节点中,其中涉及的地址翻译相当于下文描述的地址翻译的逆过程。为了节省篇幅,本申请不做展开。应理解,在上述场景中,第一节点为源节点(也称源端),第二节点为目的节点(也称目的端),而在其他场景中,第一节点可以是目的节点。并且,由于一个节点可以同时与多个节点,或者一个节点中的多个设备通信,所以一个节点可以同时为源节点和目的节点。
下面描述本申请的处理请求的方法。这段描述以一个节点中的进程访问另一个节点的内存为例进行说明,该方法也可以称为:基于虚拟地址寻址的多阶段地址翻译机制。这个机制可以用在云中的节点交互的场景下,终端之间交互的场景下以及终端和云的设备交互的场景下。也就是说,这两个节点中的任一个都可以是终端或者网络中的可以发起访存请求或者可以分享出存储资源的设备,例如服务器。
对于一个节点内,进程访问本地的存储介质的场景来说,地址翻译就是将进程使用的虚拟地址(Virtual Address,VA)翻译成进程使用的物理地址(Physical Address,PA),该物理地址是进程的物理地址空间中的地址。进程使用的虚拟地址和物理地址,都是节点的操作系统分配给进程的。该地址翻译过程由硬件MMU完成,非虚拟化场景下,进程使用的虚拟地址和进程使用的物理地址之间是直接转换。而在虚拟化场景下,则需要两次转换,即从进程的虚拟地址,翻译为虚拟机的物理地址(Guest Physical Address,GPA),再将GPA翻译成主机的物理地址(Host Physical Address,HPA)。本申请描述的方法暂不涉及虚拟化场景。
类似的,一个节点(可称源端)的进程要读或者写另一个节点(可称目的端)的内存,就需将源端的进程使用的虚拟地址,简称源虚拟地址(Source Virtual Address,SVA)翻译成目的端的物理地址,简称目的物理地址(Destination Physical Address,DPA)。在本申请中,源端通过高性能互联总线(High Performance Interconnect Bus, HPIB)与目的端通信,由于跨节点,地址翻译需要经过多个阶段,即:源虚拟地址SVA->源端中,标记的物理地址(Tagged Physical Address,TPA)->可寻址的虚拟地址(Addressable Virtual Address,AVA)->目的物理地址DPA。下面展开描述各个过程:
SVA->TPA:SVA相当于前文的第一请求中的第一虚拟地址。这里,第一请求是源端的CPU中运行的进程发起的,TPA相当于前文的第一虚拟地址对应的物理地址。这一部分的地址翻译可以由MMU执行,例如,可以复用现有的MMU和进程页表,即将进程的虚拟地址翻译为进程的物理地址。这样,源端的CPU,或者说该进程不会感知到将要访问远端(即目的端)的内存,因为这个过程与访问本地的内存的地址翻译在源端的CPU和该进程看来是一样的,例如,SVA存储在CPU的寄存器中,MMU以此为这次地址翻译的输入,记载在进程页表中的物理地址也存储于寄存器中,进程页表可以是多级的。因此,当复用进程页表来实现SVA到TPA的地址转换时,SVA的值是相对于该进程页表的基址的偏移量。
而实际上,SVA->TPA这个过程与现有技术是有差别的,差别在于TPA。TPA归属于总线端设备的物理地址空间,而现有的本地地址翻译过程,翻译成的物理地址则属于动态随机存取存储器(Dynamic Random Access Memory,DRAM)的物理地址空间,或者输入/输出(Input/Output,I/O)的物理地址空间。具体的,TPA所归属的总线端设备的物理地址空间,该地址空间与前述的DRAM物理地址空间和I/O物理地址空间不重合,因为一个物理地址空间只能指定给一个硬件模块使用。通常,可以在节点的基本输入输出系统(Basic Input Output System,BIOS)的启动阶段,由设备与BIOS系统协商确定,待节点的操作系统启动后,BIOS通知操作系统,这样OS就不会接管这段分配给总线端设备的地址空间。该过程中使用的进程页表的页表项由总线端设备的驱动(EP driver)配置,页表项中包括了前述的归属于总线端设备的物理地址空间的物理地址,即TPA,而进程页表的其他内容,则可参考现有技术中对进程页表的描述。
TPA->AVA:这个地址翻译由源端的硬件,也就是源端的总线端设备负责。其中,AVA相当于前述的总线地址,而翻译中使用的映射关系相当于前述的第一映射关系,该第一映射关系可以承载于前述的第一映射表中。经过这次地址翻译,可以得到能够发送给目的端的请求,例如前述权利要求中的第二请求。第一映射表可以是页表,因为实质上这个地址翻译是将物理地址翻译成了虚拟地址,与页表常见的功能类似。该第一映射表由总线端设备的驱动配置,专供总线端设备使用,与SVA->TPA中使用的进程页表是两个不同的表。第一映射表是页表时,可以理解为是总线端设备的页表,因为当总线端设备接收到来自其他节点的包括总线地址的请求或者指令时,也需要使用第一映射表查找到对应的物理地址。
AVA被称为可寻址的虚拟地址。因为,AVA指示的是虚拟地址。从功能上,AVA可以通过接下来的操作或者说第二节点中存储的映射关系,找到其对应的物理地址。AVA所包含的信息应使其具有寻址的功能,即能够通过高性能互联总线,将第二请求发送到目的端。换句话说,AVA就相当于网络通信中的目的地址。网络通信中的目的地址使得报文能够通过网络被传输到正确的目的端。
一种实现方式下,AVA由总线端设备标识(End Point Identifier,EP ID)和目的 端虚拟地址(Destination Virtual Address,DVA)组成。
总线端设备标识指示一个总线端设备,在某个域里是唯一的。因此,某个域中的总线端设备标识也可以称为这个域中的全局标识(Global Identifier,GID)。在某些实现方式中,可以将总线端设备标识配置为全局唯一。这样,相当于指明了第二请求应被哪个总线端设备接收,由于一个节点中可以包括多个总线端设备,所以并没有使用节点标识。EP ID可以由控制器(例如controller 1001)在一个域内统一分配。
DVA,用于指示与目的端运行的进程(也就是共享出与DVA对应的物理地址的进程)有关的虚拟地址。这样,其他节点就可以作为源端访问与该DVA对应的,目的端中的物理内存。DVA可以由目的端的进程通过目的端的agent注册,以便目的端agent通过comtroller,将这段DVA同步给其他节点。这个过程也被称为目的端的进程共享出了这段DVA。这样,其他节点就可以作为源端使用这个DVA。
DVA应当在目的端的操作系统中唯一,也就是一个操作系统中,每个虚拟地址的值应该不同。
一种实现方式下,可以自定义第二节点中DVA,那么DVA所在的虚拟地址空间也可以认为是自定义的。这种实现下,DVA相当于前文提到的总线地址中的第二虚拟地址。只要保障自定义的每个DVA的值都不同,并且在第二节点中保存自定义的多个DVA与多个可读和/或可写的物理地址之间的映射关系,本申请的方法就可以执行。该多个物理地址可以属于目的端的内存,也可以属于目的端的其他存储介质。
另一种实现方式下,DVA由实例的标识,以及虚拟地址(Virtual Address,VA)组成。这种实现下,前文提到的总线地址中的第二虚拟地址是DVA中的虚拟地址VA。实例的标识用于区分一个节点中不同的实例。一个DVA中包括的实例的标识也指示了DVA中的虚拟地址VA归属于哪个实例。那么,在一个节点中,不同的DVA中携带的VA的值就可以相同,而这些值相同的VA应属于不同的实例。这样,即使DVA中携带的VA无法做到在一个节点内全局唯一,也不会引起混淆,不同的DVA仍然可以在第二节点中对应不同的虚拟地址。
实例的标识的实现方式不做限定,可以是实例本身的标识,也可是实例的地址空间的标识(Adress Space Identifier,ASID),这里实例的地址空间是指实例的虚拟地址空间。对一个实例的DVA,如果实例是进程,且实例的标识使用ASID,那么该DVA中的VA就可以使用该进程的进程页表中的虚拟地址指示。这样,VA的记录可以复用进程页表,这样基于进程页表的页表基址和一个DVA中的VA,就可以得到该DVA对应的物理地址,而该进程页表的页表基址可通过该DVA中的ASID得到。
一些实现方式中,第二请求中除了AVA对应的字段外的其他部分还可以包括以下字段:
读/写权限(Read/write)字段,用于标识源端的进程对目的端内存是否有读和/或写的权限。
缓存能力(Cacheable)字段,用于标识源端的CPU,是否可以缓存目的端的数据。
可选的,还可以选择包含以下一些字段:
特权识别(Privilege)字段,用于标识访问目的端的内存所需的权限级别,比如,是否可以访问用户态的内存或者是否可以访问内核态的内存。
身份识别字段,被目的端用来做安全检查。
上述过程发生在源端。第二消息由目的端的总线端设备接收后,同样要地址翻译。
AVA->DPA:AVA中的DVA有不同的实现方式,其对应的这个地址翻译过程也有所不同。
当DVA不包括实例的标识的情况下,这阶段的地址翻译由第二节点的EP负责。当然,也可能由第二节点的IOMMU负责,这时,第二节点的EP负责从请求中读出DVA。第二节点中保存有DVA和DPA的映射关系,具体可以承载在一个映射表中,例如前文描述的第二映射表。由于这也是虚拟地址到物理地址的翻译,该第二映射表也可以是个页表,可以认为是第二节点的EP的页表。第二映射表需要该EP的驱动提前配置。
当DVA由实例的标识和虚拟地址组成时,这个阶段的地址翻译就包括两个子过程。首先,要基于实例的标识,找到这个虚拟地址所在的表,也就是该实例使用的映射表。第二节点中存储有实例的标识和实例的地址映射表之间的映射关系。接着,基于这个实例的地址映射表,例如前文描述的第三映射表,就可以查到这个虚拟地址对应的物理地址DPA,完成这个阶段的地址翻译。第三映射表用于存储多个虚拟地址与多个物理地址之间的映射关系。该多个虚拟地址都是可以被携带在AVA中的虚拟地址。在实例是进程的情况下,可以使用进程页表。那么,实例的标识可以是进程的地址空间的标识,虚拟地址是进程的虚拟地址空间中的地址,也是进程的页表基址的偏移量。这时,就需要两个映射关系,才能由AVA翻译成DPA。
上述过程可以是需要先由目的端中的EP基于进程的地址空间的标识,得到该进程的进程页表的基址,再由目的端的IOMMU基于DVA中的VA查找相应的进程页表,得到AVA对应的DPA。也可以是目的端中的EP负责从请求中解析出DVA,而从DVA得到对应的DPA的过程则由目的端的IOMMU执行。还可以目的端中的EP负责从请求中解析出DVA,以及从DVA得到对应的DPA的过程,而无需目的端的IOMMU。本申请对目的端具体如何分配这个过程不做限制。
综上,源端访问目的端内存一共需要经历至少3次地址翻译。而本申请的方法所说的基于虚拟地址寻址,体现在AVA中,携带的是目的虚拟地址DVA,而不是目的物理地址DPA。另外,本申请不限制第一映射表,第二映射表和第三映射表的具体实现方式,只要能实现它们对应的功能即可。本申请中的举例只是为了便于理解,并不造成限制。
一种实现方式下,源端通过总线地址访问目的端的内存的流程如图2所示。简单来说,就是源端CPU发起访存请求,访存请求携带SVA。源端MMU基于SVA做地址翻译,查询该SVA对应的物理地址是否是TPA,也就是是否属于源端的总线端设备的物理地址空间。若不是TPA,则将该请求发送给本地的内存控制器,这样就可以访问本地内存;若是TPA,则将该请求发送给源端的总线端设备处理。源端的总线端设备将地址翻译后的访存请求(携带AVA)发送给高性能互联总线,高性能互联总线基于收到的访存请求中携带的总线端设备标识,传输给目的端的总线端设备。目的端的总线端设备解析收到的访存请求,基于AVA的DVA中的实例的标识,查找到对应的页表基址,并将该页表基址发给目的端中的IOMMU。IOMMU基于页表基址和访存请求中的VA,查找到相应的DPA,则目的端的本地内存控制器就可以基于该DPA访问目的端的内存,读取数据,或者将访存请求中携带的数据写入DPA指示的地址。应理解,图中“是”和“否”的分支最终都指向本地的内存控制器,但“是”的分支 中,本地指目的端,“否”的分支中,本地指源端。
上述的地址转换过程,可以完成跨节点的内存访问。目的端的内存可以通过高性能互联总线被源端访问,这样,在跨节点场景下也可以使用单节点内访问内存的指令,统一了跨节点访问和单节点访问的场景,提升了跨节点场景下内存访问的速度,读写数据的时延更低。另一方面,也由于请求中携带的是虚拟地址而非物理地址,目的端的内存不仅可以通过地址转换,让源端下发的请求在经过一系列处理后能够访问到实际需要读或者写的物理地址,目的端的操作系统也没有丧失对这段内存的管理权。另外,除了源端和目的端之外的节点,也可以读和写这段内存,实现了真正的内存共享,即一段内存,可以被多个节点访问。
下面结合图3,以访问内存为例,简单描述一下本申请中,一个域内被共享的内存如何通过controller和agent进行管理。图3中的物理内存3011是目的端的内存,而虚拟内存3005则只是一个示意。一个域是一组可以互相通过本申请描述的方案互相访问内存的节点。具体的,可以使用两个逻辑上的概念来描述这个管理过程,即内存区域(memory region,MR)和内存段(memory内存段,MS)。这两个概念是逻辑的,意思是这两个量是为便于文字描述和代码描述创造的概念,但它们对应的真实的事物的存在形式则未必如下文描述。
MR 3104:是逻辑上或者说代码层面的概念,表示一段连续的虚拟地址,由多个MS(例如图中的3101~3103)组成。MR的创建可以由一个域内的节点上的任意进程发起,也就是源端和目的端上的进程都可以发起。MR可以是发起创建MR的进程的虚拟地址空间中的一段(包括多个虚拟地址),也可以是操作系统中其他的地址空间。控制器(Controller)用于维护MR的目录,例如包括多个MR的起始地址和长度(length)。MR的目录用于记录该控制器所在域内的多个MR,这样控制器可以统一管理这个域内的MR。
MS(例如图中的3101~3103):归属于某个MR,在一个MR的地址空间中,MS以偏移量(offset)和长度(length)这一组量作为标识。其中,offset是指相对于MR的起始地址的偏移,length是指MS的长度,也就是一个内存片段的大小。每个MS是由某个进程创建的,对应一段长度等于该MS的长度的物理内存。前文描述的DVA或者DVA中的VA与MS的偏移量有关。
基于上述的内存模型,目的端的一个进程(如图中的3008)可以将自身的物理内存(如图中的3011)共享出来,以使得源端的一个进程(如图中的3002)可以对其读写,也就是实现前文描述的多段地址翻译流程。目的端的进程共享出来的零散的虚拟地址,即MS,就可以以连续的地址,即MR的形式进行管理,可以更加使管理和使用方便简洁。下面描述的三个语义,可以实现MR的创建,MS的创建,以及MS的映射,包含三个独立的语义,这些都可以理解为实现前文描述的多段地址翻译流程所需准备的一种实现。
语义一:创建MR(源端或者目的端都可以使用,用于创建一个MR)
语义一的实现包括以下步骤:
a)进程(如图中的3002)向本地的agent(如图中的3003)发起创建MR(如图中的3104)的请求。
b)agent(如图中的3003)将该请求传递给controller(如图中的3001)。
c)controller(如图中的3001)批准或者拒绝该请求,并将结果返回给agent (如图中的3003)。
d)agent(如图中的3003)将结果返回给进程(如图中的3002),如果controller批准该请求,则创建MR成功。
语义二:创建MS(目的端用于创建一个MS,该MS归属于之前创建的MR,以AVA中包括进程的标识,也就是ASID为例)
语义二的实现包括以下步骤:
a)目的端的进程(如图中的3008)取一段虚拟地址,这段地址以DVA和长度(length)指示,并在目的端的内存中,申请一段与该段虚拟地址对应的物理地址(如图中的3011)。
b)目的端的进程(如图中的3008)向目的端agent(如图中的3007)发起创建内存段m(如图中的3102)的请求,并将MR(如图中的3104)的标识和上述虚拟地址段的信息,即DVA和length,附在该请求中。
c)目的端的agent(如图中的3007)将该请求传递给controller(如图中的3001)。
d)controller(如图中的3001)批准或者拒绝该请求,并将结果返回给目的端的agent(如图中的3007)。
e)若controller批准,目的端的agent(如图中的3007)通知目的端的EP driver(如图中的3009)在ASID与页表基址之间的映射表,例如前文的第三映射表中,添加对应的表项;若上报的DVA不是进程(如图中的3008)的虚拟地址,而是自定义的虚拟地址,则agent(如图中的3007)通知EP driver(如图中的3009)在目的端的EP(如图中的3010)的页表中,也就是前文的第二映射表中,添加对应表项,该表项指示DVA与DPA的映射关系。
f)目的端的agent(如图中的3007)将完成添加的结果返回给发起请求的目的端进程(如图中的3008)。
语义三:映射MS
其中,映射MS是指将目的端进程注册的MS的信息通知给源端的进程,使源端的进程将这些信息与该进程的物理地址空间中的一段物理地址做映射,这样,源端的进程就可以访问MS对应的目的端进程的物理地址段。该进程的物理地址空间是归属于总线端设备的,而不是属于内存的。因此,图3中源端的进程(如图中的3002)映射到硬件部分的虚拟内存3005(以虚线表示),只是为了在绘图上与目的端对称。另一方面也是为了示意,源端的进程3002对应的物理地址空间并不在源端的物理内存中。
语义三的实现包括以下步骤:
a)源端的进程(如图中的3002)在自身的虚拟地址空间中分配一段虚拟地址,以SVA和长度(length)标识。这段虚拟地址也对应着目的端的物理内存(如图中的3011)中的一段物理地址。二者之间的对应关系的表示方式可以参考前文描述的SVA->DPA的地址翻译过程。
b)源端的进程(如图中的3002)向源端的代理(如图中的3003)发起映射MS中的内存段m(如图中的3102)的请求,这里就是请求将步骤a)中分配的虚拟地址段映射到内存段m(即图中的3102)。
c)源端的agent(如图中的3003)将该请求传递给controller(如图中的3001)。
d)controller(如图中的3001)批准或者拒绝该请求,并将结果返回给源端的agent(如图中的3003)。
e)若批准,源端的agent(如图中的3003)通知源端的EP driver(如图中的3004)配置源端的映射表(即SVA->TPA和TPA->AVA两个地址转换所需使用的表),同时将配置的结果发送给步骤b)中,源端发起映射MS中内存段m请求的进程(如图中的3002)。
具体的,配置源端的表的流程是:
1.源端的EP driver(如图中的3004)将总线端设备的物理地址空间中一段长度为length的地址段对应的物理地址(即TPA)填入相应的源端的进程(如图中的3002)页表的页表项中。
2.源端的EP driver(如图中的3004)更新TPA->AVA的表(也就是前文的第一映射表),将相应的表项填写进这个表中。
这样,目的端进程(如图中的3008)通过创建MS(如图中的3102),将内存(如图中的3011)共享了出去;源端的进程(如图中的3002)通过映射MS(如图中的3102),使能了访问远端内存(如图中的3011)。MS(如图中的3102)可以同时被多个节点的进程映射,从而使物理内存(如图中的3011)可以同时被多个节点访问,达到了真正的内存共享。
下面结合图4,描述本申请处理请求的方法的一个实施例。该实施例包括了通过高性能互联总线4105,第一节点中的进程A 4002以内存语义访问第二节点中的进程B 4007提供的物理内存4108。在这个访问过程中,第一节点可称源端,第二节点可称目的端。本实施例也是以第一节点和第二节点之间的通信举例,可能还有其他节点也可以通过类似于下述的过程与第一节点或第二节点通信。第一节点和第二节点属于同一个域,这个域中还可以包括若干其他的节点。在这个域中,每个总线端设备的标识EPID都各不相同。为了简洁,本实施例对方法的整体执行过程做简要描述,其中涉及的名词和子过程的具体说明,可以参考前文相应的内容。
在进程A 4002发送读请求或者写请求之前,需要通过软件将被共享的内存注册好,也就是要配置好相关的映射表。本实施例以进程A 4002和进程B 4007的配置举例说明一种配置相关映射表的过程(对应DVA包括ASID和VA),该过程对其他涉及该过程的实例同样适用。应理解,在实施跨节点的访问内存之前的配置过程中,这两个进程以及他们所在的节点并不存在源端或者目的端的身份。该初始化过程可以包括:
1.初始化进程B 4007。
a)代理B 4005为进程B 4007分配第二节点内唯一的标识,即进程B的ASID。
b)代理B 4005通知总线端设备的驱动B 4006,在ASID与页表基址的对应表(例如前文的第三映射表)中,添加对应的表项。本实施例中,ASID对应的页表基址就是进程B 4007的进程页表基址。
2.使用语义一,进程B 4007完成创建内存区域4205。
3.进程B 4007基于内存区域4205,使用语义二创建内存段,具体是内存段3 4203。
4使用语义三,完成进程A 4002映射内存段3 4203的过程。该过程涉及图中的虚拟内存4102(以虚线框表示)。
上述过程需要使用控制器4001、代理A 4003和代理B 4005,具体可以参考前文对三个语义的描述对照图3和图4进行理解,这里不再展开。并且,通过语义二,这个集群中的其他节点的进程或者第二节点中的其他进程也可以创建归属于内存区域4205的其他内存段,比如内存段1 4201或内存段n 4204。
经过上述配置后,第一节点的CPU4101中运行的进程就可以使用上述配置好的表项去访问第二节点的物理内存4108中的地址段了。下面以总线地址AVA由总线端设备标识EPID、进程的地址空间的标识ASID以及进程的虚拟空间内的虚拟地址VA组成,且请求用于读数据为例进行说明。在图4中,硬件部分以连接线的箭头指示了请求的处理过程,请求由中央处理器4101发出,直到请求对应的读指令到达物理内存4108,并读取到对应的数据。该访问流程包括:
1.第一节点的中央处理器A4101中运行进程A 4002产生一个读请求(例如前文的第一请求)并发送给内存管理单元4103。该读请求中,包括进程A 4002的虚拟地址空间中的地址,即SVA。
2.第一节点的内存管理单元4103根据进程A 4002的进程页表,将SVA转换成相应的物理地址,即TPA。
3.第一节点的总线端设备4104根据TPA和AVA之间的映射关系,将TPA转换成对应的AVA。例如:该映射关系承载在前文描述的第一映射表中。
4.第一节点的总线端设备4104将包括AVA的请求(例如前文的第二请求)发送到高性能互联总线4105上。
5.高性能互联总线4105根据AVA中的总线端设备标识EPID(第二请求中的EPID指示第二节点的总线端设备4106),将该包括有AVA的请求发送到第二节点的总线端设备4106。
6.总线端设备4106接收请求,并解析出AVA中的ASID(这个ASID对应进程B 4007),根据ASID与进程页表基址之间的对应关系,得到进程B 4007的进程页表基址。具体的,ASID与进程页表基址之间的对应关系承载在一个映射表中,例如前文的第三映射表,这个映射表可以也是页表。
7.总线端设备4106将请求中的读指令和得到的进程B 4007的进程页表基址发送给输入输出内存管理单元4107。
8.输入输出内存管理单元4107根据进程B 4007的进程页表基址和AVA中的虚拟地址VA,得到该虚拟地址VA对应的物理地址,并基于该物理地址和读指令访问物理内存4108,以读取第一节点发来的请求所指示读取的数据。
9.第二节点读取到相应的数据后,总线端设备4106通过总线(具体是高性能互联总线4105)将数据发送给第一节点。
上述过程完成了跨节点的内存访问,第二节点的内存可以通过总线被第一节点访问,在跨节点场景下也可以使用单节点内访问内存的指令。上述过程中统一了跨节点访问和单节点访问的场景,提升了跨节点场景下内存访问的速度,读以及写数据的时延更低。另一方面,也由于读请求和写请求中携带的是虚拟地址而非物理地址,第二节点的内存不仅可以通过地址转换,让第一节点的进程下发的读请求和写请求在经过 一系列处理后能够访问到第二节点的内存中要被读或者写的物理地址,第二节点的操作系统也没有丧失对这段内存的管理权。换句话说,第一节点能读写这段内存的时候,第二节点中的进程B 4007一样可以读和写这段内存。另外,除了第一节点和第二节点之外的节点,在这个时候也可以读和写这段内存,实现了真正的内存共享。
下面从系统角度,描述一个用于读数据或者写数据的请求从处理器产生后,是如何被系统中的多个器件处理,最终得到该请求的处理结果的。前文中对各种词或者句的说明,如果下文中有涉及,也同样适用,不再重复。则图5a和图5b是系统的两种架构示意图。该系统用于处理请求。图5a和图5b示意的系统包括第一处理器5001,内存管理单元5002,第一总线端设备5003,第二处理器5004,存储介质5005和第二总线端设备5006。其中,该第二处理器运行有实例5007,实例5007的物理地址空间指向该存储介质5005。当然,图5a和图5b描述的系统是两种示意性的例子,而实际上,图5a和图5b中的各个器件可以是如图所示的独立器件,也可以某两个或者更多的器件集成在一起,本申请对各个器件的具体实现和布局方式不做限定。例如,第二总线端设备5006与输入输出内存管理单元5008可以封装在一个器件内,再例如,括第一处理器5001,内存管理单元5002,第一总线端设备5003三者集成在一个芯片上。
第一处理器5001和第二处理器5004可以由一个或多个处理单元构成,第一处理器5001可以是中央处理器(central processing unit,CPU),图形处理器(Graphics processing unit,GPU),特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于执行本申请实施例中第一处理器5001的功能的集成电路,本申请不做限制。第二处理器5004也可以是中央处理器(central processing unit,CPU),图形处理器(Graphics processing unit,GPU),特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于执行本申请实施例中第二处理器5004的功能的集成电路,本申请不做限制。
第一总线端设备5003和第二总线端设备5006,用于与其他总线端设备通信。在本申请实施例中,第一总线端设备5003和第二总线端设备5006可以是模块、电路、接口或者其它能实现通信功能的装置。可选的,一个总线端设备可以包括独立设置的发送器,该发送器可用于在高性能互联总线上发送信息和独立设置的接收器,用于从高性能互联总线上接收信息。一个总线端设备也可以是将发送、接收信息功能集成在一起的部件,甚至包括简单的处理和存储资源,以支撑使用映射表的功能,本申请实施例对总线端设备的具体实现不做限制。
存储介质5005可以归属于只读存储器(read-only memory,ROM)内或可存储静态信息和指令的其他类型的存储模块,或者随机存取存储器(random access memory,RAM)或者可动态存储信息和指令的其他类型的存储模块,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)或者其他磁存储设备。存储介质5005所在的器件可以是独立存在,通过设备内的总线与前述的第二处理器5004相连接,具体可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。存储介质5005也可以和前述的第二处理器5004集成在一起。
需说明,实例的物理地址空间指向存储介质,是指该实例可以使用的这段物理地址,是属于该存储介质的,或者说,该实例能使用的物理存储资源,是该存储介质中 的一部分。
内存管理单元5002用于基于来自该第一处理器5001的第一请求,得到与第一虚拟地址对应的物理地址,所述第一请求用于请求读数据,或者请求写数据,所述第一请求中包括所述第一虚拟地址;所述第一总线端设备5003用于基于第一映射关系向所述第二总线端设备5006发送第二请求,所述第一映射关系为所述物理地址与总线地址之间的映射关系,所述第二请求与所述第一请求对应,所述第二请求包括所述总线地址,所述总线地址指示与所述实例5007对应的虚拟地址;所述第二总线端设备5006用于接收所述第二请求;所述第二总线端设备5006还用于基于所述总线地址以及第二映射关系,处理所述第二请求,以得到所述请求对应的结果,所述第二映射关系为所述总线地址与所述第二请求对应的物理地址之间的映射关系,所述第二请求的对应物理地址属于所述实例5007的物理地址空间。
其中,各个器件之间的连接关系可以由上一段的请求的处理过程体现,图5a中示意性画出了请求的被处理方向(从5001到5007)。本系统不限定上述器件的组合形式。例如,一种实现方式下,可以认为上述器件(5001~5006)被封装在同一个物理机中,第一处理器5001和第二处理器5004上运行有不同的操作系统,第一处理器5001和第二处理器5004可以是不同类型的处理器。另一种实现方式下,第一处理器5001,内存管理单元5002和第一总线端设备5003位于一个物理机,第二处理器5004,存储介质5005和第二总线端设备5006位于另一个物理机。第一总线端设备5003和第二总线端设备5006之间通过总线连接。
这样,第二处理器5004使用的存储介质5005可以被第一处理器5001访问,而且可以使用操作系统内访问内存的指令,读和写数据的时延更低。另一方面,也由于请求中携带的是虚拟地址而非物理地址,不仅可以通过地址转换,让第一处理器5001下发的请求在经过一系列处理后能够访问到第二处理器5004使用的存储介质5005中的物理地址,第二处理器5004也没有丧失对这段物理地址的管理权和使用权。换句话说,第一处理器5001能够访问存储介质5005中的某段物理地址时,第二处理器5004一样可以读和写这段物理地址。甚至,除了第一处理器5001和第二处理器5004之外的处理器,也可以读和写这段物理地址,实现了真正的存储介质的共享。
其中,前述的物理地址是第一总线端设备5003对应的物理地址空间中的地址。
一种实现方式下,第一处理器5001还用于运行第一总线端设备5003的驱动,第一总线端设备5003的驱动用于更新所述第一映射关系所在的第一映射表。
其中,第一总线端设备5003的驱动用于获取存储介质5005对应的至少一个总线地址;以及基于获取到的存储介质5005对应的至少一个总线地址,更新第一映射表,以使得更新后的第一映射表中,包括存储介质5005对应的至少一个总线地址对应的至少一个表项。第一总线端设备5003的驱动还用于配置(其中包括更新)第一虚拟地址和与第一虚拟地址对应的物理地址之间的对应关系,这个对应关系可以存储在一个映射表中,该映射表可以是页表,在图5a中,该映射表指示为表1。可见,内存管理单元5002使用表1,将第一请求中的第一虚拟地址转换为对应的物理地址。
一种实现方式下,总线地址包括第二总线端设备5006的标识以及第二虚拟地址,第二虚拟地址与实例5007有关。则第二映射关系为第二虚拟地址与请求对应的物理地址之间的映射关系。例如,该第二虚拟地址是前文提及的,自定义的DVA,或者,是前文描述的,DVA中的VA,属于实例5007的虚拟地址空间。
一种实现方式下,第二处理器5004还用于运行第二总线端设备5006的驱动,第二总线端设备5006的驱动用于获取实例5007的地址分配请求,该地址分配请求表示实例5007提供实例5007对应的物理地址空间;基于地址分配请求,更新第二映射关系所在的映射表,以使得更新后的第二映射关系所在的映射表中,包括与实例5007对应的物理地址空间对应的至少一个表项。应理解,实例5007可以提供全部或者部分的物理地址空间。
图5a示意的就是总线地址(前文所述的AVA)由所述第二总线端设备5006的标识以及第二虚拟地址组成的情况,也就是AVA由EPID和一个虚拟地址,即DVA组成。DVA可以在第二节点中全局唯一。图5a也示意出了前文描述的多个地址转换过程。例如,
图5b示意了另一种实现方式,也就是总线地址还包括实例5007的标识。相应的,第二映射关系与图5a对应的实现方式不同。第二映射关系包括实例5007的标识与实例5007的页表基址之间的映射,和该第二虚拟地址与该请求对应的物理地址之间的映射,所述第二虚拟地址与所述第二请求对应的物理地址之间的映射记载在所述实例5007的页表中。实例5007的页表在图5b中示意为表2。
对应的,第二节点中的地址翻译过程也与图5a中不同。图5b示意的系统还包括输入输出内存管理单元5008,输入输出内存管理单元5008用于通过该实例5007的页表,图5b中示意为表2,查找到与该第二请求对应的物理地址,以执行与第二请求相应的操作,并将该操作的结果(例如读取到的数据,或者用于指示写数据成功的反馈)返回给所述第二总线端设备。相应的,第二总线端设备506用于基于该总线地址,以及实例5007的标识与实例5007的页表基址之间的映射,查找到实例5007的页表并将实例5007的页表信息(例如页表基址)传递给输入输出内存管理单元5008
当然,系统中可以始终包括输入输出内存管理单元5008,而兼容上述两种实现。图5a和图5b只是示意了两种可能的实现方式,实际应用中,某些实现细节可以与图5a和图5b中示意的方式略有不同,本申请不做限制。例如,图5a中示意的是由第二总线端设备5006使用第二映射表,将第二虚拟地址转换为第二请求对应的物理地址。实际实现中,可以是输入输出内存管理单元5008使用第二映射表,将第二虚拟地址转换为第二请求对应的物理地址,而第二总线端设备5006只用于接收第二请求,并从第二请求中读出第二虚拟地址。再例如,图5b中示意的是第二总线端设备5006使用第三映射表,查找到第二请求中总线地址中的实例标识对应的页表基址,再将页表基址和总线地址中的第二虚拟地址传递给输入输出内存管理单元5008,由输入输出内存管理单元5008查找表2,得到对应的物理地址。实际实现中,这两次地址翻译可以都由第二总线端设备5006完成,即第二总线端设备5006查找第三映射表和表2,而无需再使用输入输出内存管理单元5008。实际实现中,也可以这两次地址翻译都由输入输出内存管理单元5008完成,即第二总线端设备5006只用于接收第二请求,并从第二请求中读出实例的标识和第二虚拟地址,输入输出内存管理单元5008基于实例的标识查找第三映射表得到页表基址,再查表2,得到第二请求对应的物理地址。
图6为用于执行前述的处理请求方法的装置的一个架构示意图。图6对应前述源端,也可以称图6描述的装置600位于前述的第一节点。该装置600包括:处理模块6001,处理模块6001用于向地址翻译模块6002发送第一请求,该第一请求用于请求读第二节点的数据,或者请求将数据写入该第二节点;地址翻译模块6002,用于基 于第一虚拟地址得到对应的物理地址,该第一虚拟地址是该第一请求中的虚拟地址;总线通信模块6003,用于基于第一映射关系向该第二节点发送第二请求,该第一映射关系为该物理地址与总线地址之间的映射关系,该第二请求与该第一请求对应,该第二请求包括该总线地址,该总线地址指示该第二节点中的实例对应的虚拟地址。
上述装置600用于执行前述的处理请求方法,尤其是对应前述的在源端或者在第一节点执行的方法,因此,具体实现、说明以及技术效果,均可参照前文相应的段落,此处不再赘述。该装置600可以是第一节点,也可以是第一节点中的一部分。上述的各个模块的具体实现方式本申请不做限定,例如,上述模块可以集成在一个模块中实现。再例如,该处理模块6001可以是处理器或控制器,例如可以是CPU,通用处理器,DSP,专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。
又例如,地址翻译模块6002可以是前文描述的内存管理单元MMU。
再例如,总线通信模块6003可以是前文描述的总线端设备,该总线端设备用于使该装置接入高性能互联总线,并收发信息。
图7为用于执行前述的处理请求方法的装置的一个架构示意图。图7对应前述目的端,也可以称图7描述的装置700位于前述的第二节点。该装置包括:处理模块7001和存储介质7002,处理模块7001用于运行实例,该实例的物理地址空间指向存储介质7002;总线通信模块7003,用于接收来自第一节点的请求,该请求用于读取数据,或者用于将数据写入,该请求包括总线地址,该总线地址指示该实例对应的虚拟地址,还用于基于该总线地址以及第二映射关系,处理该第二请求,以得到该请求对应的结果,该第二映射关系为该总线地址与该请求对应的物理地址之间的映射关系,该请求对应的物理地址属于该实例的物理地址空间。
需说明,实例的物理地址空间指向该存储介质,是指该实例可以使用的这段物理地址,是属于该存储介质的,或者说,该实例能使用的物理存储资源,是该存储介质中的一部分。
上述装置700用于执行前述的处理请求方法,尤其是对应前述的在目的端或者在第二节点执行的方法,因此,具体实现、说明以及技术效果,均可参照前文相应的段落,此处不再赘述。该装置可以是第二节点,也可以是第二节点中的一部分。上述的各个模块的具体实现方式本申请不做限定,例如,上述模块可以集成在一个模块中实现。处理模块7001的一些具体实现可以参考前文对处理模块6001的描述。
又例如,存储介质7002可以归属于内存或者其他类型的存储器。
再例如,总线通信模块7003可以是前文描述的总线端设备,该总线端设备用于使该装置接入高性能互联总线,并收发信息。
当然,结合前文的描述,在一些实现方式下,装置700还可以包括地址翻译模块(图中未示出),用于使用实例的页表,将虚拟地址翻译为物理地址。地址翻译模块可以是前文描述的输入输出内存管理单元。
图8所示,为本申请的实施例提供的用于处理请求的设备的一种可能的逻辑结构示意图。该设备800包括:存储介质8001、处理电路8002、内存管理单元8003和总 线端设备8004,该存储介质8001与该处理电路8002耦合,该存储介质8001用于存储计算机程序代码和数据,该计算机程序代码包括计算机指令,当该计算机指令被该处理电路8002执行时,可与内存管理单元8003和总线端设备8004一起执行前述的方法。处理电路8002用于对计算机设备800的动作进行控制管理总线端设备8004用于支持设备800通过总线(例如高性能互联总线)与其他设备通信。具体的,内存管理单元8003用于基于第一虚拟地址得到对应的物理地址,所述第一虚拟地址是第一请求中的虚拟地址,所述第一请求用于请求读取另一设备的数据,或者请求将数据写入所述另一设备;总线端设备8004用于基于第一映射关系向所述另一设备发送第二请求,所述第一映射关系为所述物理地址与总线地址之间的映射关系,所述第二请求与所述第一请求对应,所述第二请求包括所述总线地址,所述总线地址指示所述另一设备中的实例对应的虚拟地址。
处理电路8002可以是中央处理器,图处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理电路8002也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。存储介质8001可以归属于只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的存储模块,或者随机存取存储器(random access memory,RAM)或者可动态存储信息和指令的其他类型的存储模块,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)或者其他磁存储设备。
存储介质8001、处理电路8002和总线端设备8004之间可以通过总线连接。图8中,示意内存管理单元8003和处理电路8002封装在一起,二者电连接,并且内存管理单元8003直接接入总线,处理电路8002通过内存管理单元8003。而实际的设备中,内存管理单元8003也可能是独立器件,或者处理电路8002和内存管理单元8003封装在一起,且处理电路8002直接接入总线。本申请对设备800中的各种部件的布局方式不做限定。这里的总线是设备内的总线,具体可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示设备800中仅有一根总线或一种类型的总线。
图8对应的设备800可以是前述的源端或者第一节点所在的设备,或者前述的源端或者第一节点,用于执行前述的源端或者第一节点所执行的方法,因此,具体实现、说明以及技术效果,均可参照前文方法、装置和系统的相应的段落,此处不再赘述。例如一种实现方式下,存储介质8001可以是前文的内存1006、处理电路8002可以是前文的中央处理器1004、内存管理单元8003对应内存管理单元1005,总线端设备8004对应总线端设备1008。
图9所示,为本申请的实施例提供的用于处理请求的设备的一种可能的逻辑结构示意图。该设备900包括:存储介质9001、处理电路9002和总线端设备9003,存储介质9001与处理电路9002耦合,存储介质9001用于存储计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被处理电路9002执行时,指示总线端设备 9003执行以下方法:接收来自另一设备的请求,该请求用于读取该设备的数据,或者用于将数据写入该设备,该请求包括总线地址,该总线地址指示该设备中的实例对应的虚拟地址;基于该总线地址以及第二映射关系,得到该设备的存储介质中,与该请求对应的物理地址,以执行该请求指示的操作,该第二映射关系为该总线地址与该请求对应的物理地址之间的映射关系。
其中,处理电路9002的一些具体实现方式,可以参考前文对处理电路8002的描述。处理电路9002用于运行实例,运行的实例可以将该实例可使用的一段或者多段物理内存分享给其他设备使用。存储介质9001的一些具体实现方式,可以参考前文对存储介质8001的描述。
存储介质9001、处理电路9002和总线端设备9003之间可以通过总线连接。这里的总线是设备内的总线,具体可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示设备900中仅有一根总线或一种类型的总线。
图9对应的设备900可以是前述的目的端或者第二节点所在的设备,或者前述的源端或者第二节点,用于执行前述的源端或者第二节点所执行的方法,因此,具体实现、说明以及技术效果,均可参照前文方法、装置和系统的相应的段落,此处不再赘述。例如,存储介质9001可以是前文的内存1006、处理电路9002可以是前文的中央处理器1004,总线端设备9004可以是前文描述的总线端设备1008。另外,设备900还可以包括输入输出内存管理单元,具体的,输入输出内存管理单元是前文描述的输入输出内存管理单元1007,这样,就可以在总线地址中包括实例的标识的情况下,使用输入输出内存管理单元1007进行地址查询,以找到被请求的物理地址。图9示意性地展示输入输出内存管理单元通过总线与其他器件(如处理电路9002等)连接的布局方式。而实际上,输入输出内存管理单元也可能与图9中的某一器件封装在一起,通过线路电连接,本申请不做限制。
作为一种实施例,设备800和/或设备900都可以包括多个处理器。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。以及,本申请实施例中的计算机程序代码也可以简称为计算机程序或者代码,或者其它名称,计算机指令也可以简称为指令或命令,本申请实施例对此不作具体限定。
此外,本领域的技术人员可以理解设备800可包括比图8中所示部件更少或更多的部件,图8仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。同样的,设备900也可包括比图9中所示部件更少或更多的部件,图9仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。作为一种实施例,设备800和/或设备900还可以包括输出设备和输入设备。输出设备和前述的处理电路(如处理电路8002或者处理电路)通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备和处理器通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。另外,图8和图9未示意出高性能互联总线,也就是用于设备之间通信的,通过总线端设备接入的,功能类似无线网络的总线。
可以理解的是,上述设备或装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对上述设备(如800和900)或者装置(如600和700)进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请实施例还提供一种芯片系统,该芯片系统应用于上述设备。该芯片系统包括:一个或多个接口电路和一个或多个处理器。该接口电路和该处理器通过线路互联。该接口电路用于从设备的存储器接收信号,并向该处理器发送该信号。该信号包括存储器中存储的计算机指令。当处理器执行该计算机指令时,上述设备执行上述方法实施例中第一节点执行的任一方法,或者,执行上述方法实施例中第二节点执行的任一方法。
本申请实施例还提供一种计算机存储介质,该计算机存储介质包括计算机指令,当该计算机指令在设备上运行时,使得设备执行上述方法实施例中第一节点执行的任一方法,或者,执行上述方法实施例中第二节点执行的任一方法。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得设备执行上述方法实施例中第一节点执行的任一方法,或者,执行上述方法实施例中第二节点执行的任一方法。
其中,本申请提供的设备、芯片系统、计算机存储介质或者计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

Claims (53)

  1. 一种处理请求的方法,其特征在于,所述方法包括:
    第一节点基于第一虚拟地址得到对应的物理地址,所述第一虚拟地址是第一请求中的虚拟地址,所述第一请求用于请求读第二节点的数据,或者请求将数据写入所述第二节点;
    所述第一节点基于第一映射关系向所述第二节点发送第二请求,所述第一映射关系为所述物理地址与总线地址之间的映射关系,所述第二请求与所述第一请求对应,所述第二请求包括所述总线地址,所述总线地址指示所述第二节点中的实例对应的虚拟地址。
  2. 根据权利要求1所述的方法,其特征在于,所述第一节点包括总线端设备,所述第一节点中的总线端设备用于使用所述第一映射关系与所述第二节点通信。
  3. 根据权利要求2所述的方法,其特征在于,所述物理地址是所述第一节点的总线端设备对应的物理地址空间中的地址。
  4. 根据权利要求1到3任一所述的方法,其特征在于,所述总线地址包括所述第二节点中的总线端设备的标识以及第二虚拟地址,所述第二节点中的总线端设备用于所述第二节点与所述第一节点通信,所述第二虚拟地址与所述实例有关。
  5. 根据权利要求4所述的方法,其特征在于,所述总线地址还包括所述实例的标识。
  6. 根据权利要求5所述的方法,其特征在于,所述实例的标识还指示所述实例对应的虚拟地址空间。
  7. 根据权利要求1到6所述的方法,其特征在于,所述第一节点存储有第一映射表,所述第一映射表用于指示包括所述第一映射关系在内的多个映射关系,其中,所述多个映射关系中的每个映射关系为物理地址与总线地址之间的映射。
  8. 根据权利要求7所述的方法,其特征在于,所述方法还包括:
    获取所述第二节点中的地址空间,所述地址空间指示至少一个总线地址;
    基于获取到的所述第二节点中的地址空间,更新所述第一映射表,以使得更新后的所述第一映射表中,包括所述地址空间指示的所述至少一个总线地址对应的至少一个表项。
  9. 根据权利要求7或8所述的方法,其特征在于,所述第一映射表由所述总线端设备的驱动更新。
  10. 一种处理请求的方法,其特征在于,所述方法用于第二节点,所述方法包括:
    接收来自第一节点的请求,所述请求用于读取所述第二节点中的数据,或者用 于将数据写入所述第二节点,所述请求包括总线地址,所述总线地址指示所述第二节点中的实例对应的虚拟地址;
    基于所述总线地址以及第二映射关系,得到所述第二节点的存储介质中,与所述请求对应的物理地址,以执行所述请求指示的操作,所述第二映射关系为所述总线地址与所述请求对应的物理地址之间的映射关系。
  11. 根据权利要求10所述的方法,其特征在于,所述第二节点包括总线端设备,所述总线端设备用于基于所述第二映射关系处理来自所述第一节点的请求。
  12. 根据权利要求11所述的方法,其特征在于,所述总线地址包括所述总线端设备的标识和第二虚拟地址,所述第二虚拟地址与所述实例有关。
  13. 根据权利要求11或12所述的方法,其特征在于,所述第二映射关系为所述第二虚拟地址与所述请求对应的物理地址之间的映射关系。
  14. 根据权利要求13所述的方法,其特征在于,所述第二节点存储有第二映射表,所述第二映射表用于指示包括所述第二映射关系在内的多个映射关系,其中,所述多个映射关系中的每个映射关系为所述第二节点中的虚拟地址,以及与所述第二节点中的虚拟地址对应的物理地址之间的映射。
  15. 根据权利要求14所述的方法,其特征在于,所述第二映射表由所述总线端设备的驱动更新。
  16. 根据权利要求14或15所述的方法,其特征在于,所述方法还包括:
    获取所述实例的地址分配请求,所述地址分配请求表示所述实例提供所述实例对应的物理地址空间;
    基于所述地址分配请求,更新所述第二映射表,以使得更新后的所述第二映射表中,包括与所述实例对应的物理地址空间对应的至少一个表项。
  17. 根据权利要求12所述的方法,其特征在于,所述总线地址还包括所述实例的标识。
  18. 根据权利要求17所述的方法,其特征在于,所述实例的标识也指示所述实例对应的虚拟地址空间,所述请求对应的物理地址属于所述实例对应的物理地址空间。
  19. 根据权利要求17或18所述的方法,其特征在于,所述第二映射关系包括所述实例的标识与所述实例的页表基址之间的映射,和所述第二虚拟地址与所述请求对应的物理地址之间的映射,所述第二虚拟地址与所述请求对应的物理地址之间的映射记载在所述实例的页表中。
  20. 根据权利要求19所述的方法,其特征在于,所述第二节点存储有第三映射表,所述第三映射表包括多个表项,所述实例的标识与所述实例的页表基址之间的 映射记载在所述多个表项中的一个,所述多个表项的每个表项用于记录所述第二节点中的实例的信息,所述信息包括实例的标识和实例的页表基址。
  21. 根据权利要求20所述的方法,其特征在于,所述第三映射表由所述总线端设备的驱动更新。
  22. 根据权利要求20或21所述的方法,其特征在于,所述方法还包括:
    基于所述第二节点中实例的信息,更新所述第三映射表,以使得更新后的所述第三映射表中,包括与所述信息对应的表项,所述信息包括实例的标识和实例的页表基址。
  23. 一种处理请求的系统,其特征在于,所述系统包括第一处理器,内存管理单元MMU,第一总线端设备,第二处理器,存储介质和第二总线端设备,所述第二处理器运行有实例,所述实例的物理地址空间指向所述存储介质;
    所述MMU用于基于来自所述第一处理器的第一请求,得到与第一虚拟地址对应的物理地址,所述第一请求用于请求读数据,或者请求写数据,所述第一请求中包括所述第一虚拟地址;
    所述第一总线端设备用于基于第一映射关系向所述第二总线端设备发送第二请求,所述第一映射关系为所述物理地址与总线地址之间的映射关系,所述第二请求与所述第一请求对应,所述第二请求包括所述总线地址,所述总线地址指示与所述实例对应的虚拟地址;
    所述第二总线端设备用于接收所述第二请求;
    所述第二总线端设备还用于基于所述总线地址以及第二映射关系,处理所述第二请求,以得到所述请求对应的结果,所述第二映射关系为所述总线地址与所述第二请求对应的物理地址之间的映射关系,所述第二请求的对应物理地址属于所述实例的物理地址空间。
  24. 根据权利要求23所述的系统,其特征在于,所述物理地址是所述第一总线端设备对应的物理地址空间中的地址。
  25. 根据权利要求23或24所述的系统,其特征在于,所述第一处理器还用于运行所述第一总线端设备的驱动,所述第一总线端设备的驱动用于更新所述第一映射关系所在的第一映射表。
  26. 根据权利要求25所述的系统,其特征在于,所述第一总线端设备的驱动用于获取所述存储介质对应的至少一个总线地址;以及基于获取到的所述存储介质对应的至少一个总线地址,更新所述第一映射表,以使得更新后的所述第一映射表中,包括所述存储介质对应的至少一个总线地址对应的至少一个表项。
  27. 根据权利要求23-26任一权要所述的系统,其特征在于,所述总线地址包括所述第二总线端设备的标识以及第二虚拟地址,所述第二虚拟地址与所述实例有关。
  28. 根据权利要求23-26任一权要所述的系统,其特征在于,所述第二映射关系为所述第二虚拟地址与所述第二请求对应的物理地址之间的映射关系。
  29. 根据权利要求23-26任一权要所述的系统,其特征在于,所述第二处理器还用于运行所述第二总线端设备的驱动,所述第二总线端设备的驱动用于获取所述实例的地址分配请求,所述地址分配请求表示所述实例提供所述实例对应的物理地址空间;基于所述地址分配请求,更新所述第二映射关系所在的映射表,以使得更新后的所述第二映射关系所在的映射表中,包括与所述实例对应的物理地址空间对应的至少一个表项。
  30. 根据权利要求27所述的系统,其特征在于,所述总线地址还包括所述实例的标识。
  31. 根据权利要求30所述的系统,其特征在于,所述第二映射关系包括所述实例的标识与所述实例的页表基址之间的映射,和所述第二虚拟地址与所述第二请求对应的物理地址之间的映射,所述第二虚拟地址与所述第二请求对应的物理地址之间的映射记载在所述实例的页表中。
  32. 根据权利要求31所述的系统,其特征在于,所述系统还包括输入输出内存管理单元IOMMU,所述IOMMU用于通过所述实例的页表,查找到与所述第二请求对应的物理地址,以执行与所述第二请求相应的操作,并将所述操作的结果返回给所述第二总线端设备,相应的,所述第二总线端设备用于基于所述总线地址,以及所述实例的标识与所述实例的页表基址之间的映射,查找到所述实例的页表基址并将所述实例的页表基址传递给所述IOMMU。
  33. 一种处理请求的装置,所述装置位于第一节点,其特征在于,所述装置包括:
    处理模块,所述处理模块用于向地址翻译模块发送第一请求,所述第一请求用于请求读第二节点的数据,或者请求将数据写入所述第二节点;
    所述地址翻译模块,用于基于第一虚拟地址得到对应的物理地址,所述第一虚拟地址是所述第一请求中的虚拟地址;
    总线通信模块,用于基于第一映射关系向所述第二节点发送第二请求,所述第一映射关系为所述物理地址与总线地址之间的映射关系,所述第二请求与所述第一请求对应,所述第二请求包括所述总线地址,所述总线地址指示所述第二节点中的实例对应的虚拟地址。
  34. 根据权利要求33的装置,其特征在于,所述物理地址是所述总线通信模块对应的物理地址空间中的地址。
  35. 根据权利要求33或34所述的装置,其特征在于,所述总线地址包括所述第二节点中的总线通信模块的标识以及第二虚拟地址,所述第二节点中的总线通信模块用于所述第二节点与所述第一节点通信,所述第二虚拟地址与所述实例有关。
  36. 根据权利要求33到35中任一所述的装置,其特征在于,所述总线通信模块用于使用第一映射表,所述第一映射表用于指示包括所述第一映射关系在内的多个映射关系,其中,所述多个映射关系中的每个映射关系为物理地址与总线地址之间的映射。
  37. 根据权利要求33到36中任一所述的装置,其特征在于,所述驱动模块还运行有所述总线通信模块的驱动,所述驱动用于获取所述第二节点中的地址空间,所述地址空间指示至少一个总线地址;以及基于获取到的所述第二节点中的地址空间,更新所述第一映射表,以使得更新后的所述第一映射表中,包括所述地址空间指示的所述至少一个总线地址对应的至少一个表项。
  38. 一种处理请求的装置,所述装置位于第二节点,其特征在于,所述装置包括:
    处理模块和存储介质,所述处理模块用于运行实例,所述实例的物理地址空间指向所述存储介质;
    总线通信模块,用于接收来自第一节点的请求,所述请求用于读取数据,或者用于将数据写入,所述请求包括总线地址,所述总线地址指示所述实例对应的虚拟地址,还用于基于所述总线地址以及第二映射关系,处理所述第二请求,以得到所述请求对应的结果,所述第二映射关系为所述总线地址与所述请求对应的物理地址之间的映射关系,所述请求对应的物理地址属于所述实例的物理地址空间。
  39. 根据权利要求38所述的装置,其特征在于,所述总线地址包括所述总线通信模块的标识和第二虚拟地址,所述第二虚拟地址与所述实例有关。
  40. 根据权利要求39所述的装置,其特征在于,所述第二映射关系为所述第二虚拟地址与所述请求对应的物理地址之间的映射关系。
  41. 根据权利要求40所述的装置,其特征在于,在基于所述总线地址以及第二映射关系,处理所述第二请求,以得到所述请求对应的结果的方面,所述总线通信模块用于通过所述第二虚拟地址以及所述第二映射关系,访问所述存储介质中,与所述请求对应的物理地址,以执行所述请求指示的操作。
  42. 根据权利要求38到41任一所述的装置,其特征在于,所述处理模块还用于运行所述总线通信模块的驱动,所述总线通信模块的驱动用于获取所述实例的地址分配请求,所述地址分配请求表示所述实例提供所述实例对应的物理地址空间;基于所述地址分配请求,更新所述第二映射关系所在的映射表,以使得更新后的所述第二映射关系所在的映射表中,包括与所述实例对应的物理地址空间对应的至少一个表项。
  43. 根据权利要求39所述的装置,其特征在于,所述总线地址还包括所述实例的标识。
  44. 根据权利要求43所述的装置,其特征在于,所述第二映射关系包括所述实例的标识与所述实例的页表基址之间的映射,和所述第二虚拟地址与所述请求对应的 物理地址之间的映射,所述第二虚拟地址与所述请求对应的物理地址之间的映射记载在所述实例的页表中。
  45. 根据权利要求44所述的装置,其特征在于,所述装置还包括地址转换模块,所述地址转换模块用于通过所述实例的页表,查找到与所述请求对应的物理地址,以执行与所述第二请求相应的操作,并将所述操作的结果返回给所述总线通信模块;
    相应的,在基于所述总线地址以及第二映射关系,处理所述第二请求,以得到所述请求对应的结果的方面,所述总线通信模块用于基于所述总线地址中所述实例的标识,以及所述实例的标识与所述实例的页表基址之间的映射,查找到所述实例的页表基址并将所述实例的页表基址传递给所述输入输出内存管理单元IOMMU。
  46. 一种芯片,其特征在于,所述芯片包括处理电路和接口电路,所述接口电路路与所述处理电路通过线路互联,所述接口电路用于从存储介质接收信号,并向所述处理器发送所述信号,所述信号包括所述存储介质中存储的计算机指令;当所述计算机指令被所述处理电路执行时,所述芯片执行如权利要求1-9任一权利要求所述的处理请求的方法。
  47. 一种芯片,其特征在于,所述芯片包括处理电路和接口电路,所述接口电路路与所述处理电路通过线路互联,所述接口电路用于从存储介质接收信号,并向所述处理器发送所述信号,所述信号包括所述存储介质中存储的计算机指令;当所述计算机指令被所述处理电路执行时,所述芯片用于执行如权利要求10-22任一权利要求所述的处理请求的方法。
  48. 一种用于处理请求的设备,其特征在于,所述设备包括:存储介质、处理电路、内存管理单元MMU和总线端设备,所述存储介质与所述处理电路耦合,所述存储介质用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理电路执行时,执行以下方法:
    所述内存管理单元MMU基于第一虚拟地址得到对应的物理地址,所述第一虚拟地址是第一请求中的虚拟地址,所述第一请求用于请求读取另一设备的数据,或者请求将数据写入所述另一设备;
    所述总线端设备基于第一映射关系向所述另一设备发送第二请求,所述第一映射关系为所述物理地址与总线地址之间的映射关系,所述第二请求与所述第一请求对应,所述第二请求包括所述总线地址,所述总线地址指示所述另一设备中的实例对应的虚拟地址。
  49. 一种用于处理请求的设备,其特征在于,所述设备包括:存储介质、处理电路和总线端设备,所述存储介质与所述处理电路耦合,所述存储介质用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理电路执行时,指示所述总线端设备执行以下方法:
    接收来自另一设备的请求,所述请求用于读取所述设备的数据,或者用于将数据写入所述设备,所述请求包括总线地址,所述总线地址指示所述设备中的实例对应的 虚拟地址;
    基于所述总线地址以及第二映射关系,得到所述设备的存储介质中,与所述请求对应的物理地址,以执行所述请求指示的操作,所述第二映射关系为所述总线地址与所述请求对应的物理地址之间的映射关系。
  50. 一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如权利要求1-9中任一项所述的处理请求的方法。
  51. 一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如权利要求10-22中任一项所述的处理请求的方法。
  52. 一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序当被一个或多个处理器执行时用于实现如权利要求1-9任一项所述的方法。
  53. 一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序当被一个或多个处理器执行时用于实现如权利要求10-22任一项所述的方法。
CN202280071075.1A 2021-10-21 2022-10-19 一种处理请求的方法、装置及系统 Pending CN118159951A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2021112295460 2021-10-21
CN202111229546.0A CN116010296A (zh) 2021-10-21 2021-10-21 一种处理请求的方法、装置及系统
PCT/CN2022/126038 WO2023066268A1 (zh) 2021-10-21 2022-10-19 一种处理请求的方法、装置及系统

Publications (1)

Publication Number Publication Date
CN118159951A true CN118159951A (zh) 2024-06-07

Family

ID=86023643

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111229546.0A Pending CN116010296A (zh) 2021-10-21 2021-10-21 一种处理请求的方法、装置及系统
CN202280071075.1A Pending CN118159951A (zh) 2021-10-21 2022-10-19 一种处理请求的方法、装置及系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111229546.0A Pending CN116010296A (zh) 2021-10-21 2021-10-21 一种处理请求的方法、装置及系统

Country Status (2)

Country Link
CN (2) CN116010296A (zh)
WO (1) WO2023066268A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483738B (zh) * 2023-06-20 2023-09-05 苏州浪潮智能科技有限公司 数据访问方法及装置、存储介质及电子装置
CN117093161B (zh) * 2023-10-19 2024-01-26 之江实验室 一种基于光收发芯片的内存管理系统、方法、介质及设备
CN117609122B (zh) * 2023-11-03 2024-06-18 摩尔线程智能科技(上海)有限责任公司 一种数据传输系统及方法、电子设备和存储介质
CN117472796B (zh) * 2023-12-06 2024-06-18 摩尔线程智能科技(北京)有限责任公司 总线模块的数据处理方法、装置、电子设备和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US20090089537A1 (en) * 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes
CN103312720B (zh) * 2013-07-01 2016-05-25 华为技术有限公司 一种数据传输方法、设备及系统
CN103744799B (zh) * 2013-12-26 2017-07-21 华为技术有限公司 一种内存数据访问方法、装置和系统
US10534719B2 (en) * 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
CN112395220B (zh) * 2020-11-18 2023-02-28 海光信息技术股份有限公司 共享存储控制器的处理方法、装置、系统及存储控制器

Also Published As

Publication number Publication date
CN116010296A (zh) 2023-04-25
WO2023066268A1 (zh) 2023-04-27

Similar Documents

Publication Publication Date Title
US7606995B2 (en) Allocating resources to partitions in a partitionable computer
CN118159951A (zh) 一种处理请求的方法、装置及系统
US8484307B2 (en) Host fabric interface (HFI) to perform global shared memory (GSM) operations
JP6110038B2 (ja) 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション
US10564997B2 (en) Computing system for securely executing a secure application in a rich execution environment
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
CN103034524A (zh) 半虚拟化的虚拟gpu
US20070162641A1 (en) Method and apparatus for utilizing platform support for direct memory access remapping by remote DMA ("RDMA")-capable devices
US20130013889A1 (en) Memory management unit using stream identifiers
RU2491616C2 (ru) Устройство, способ и система управления матрицами
KR20080063125A (ko) 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
US20040107329A1 (en) Memory pool configuration system
US10387325B2 (en) Dynamic address translation for a virtual machine
US8275947B2 (en) Mechanism to prevent illegal access to task address space by unauthorized tasks
US20090199191A1 (en) Notification to Task of Completion of GSM Operations by Initiator Node
CN114328295A (zh) 存储管理装置、处理器、相关装置和相关方法
US8214604B2 (en) Mechanisms to order global shared memory operations
WO2023125565A1 (zh) 网络节点的配置和访问请求的处理方法、装置
US10684959B2 (en) Shared memory in a virtual environment
US10936219B2 (en) Controller-based inter-device notational data movement system
JP2022541059A (ja) ヘテロジニアスコンピューティングのための統合カーネル仮想アドレス空間
CN111666579A (zh) 计算机设备及其访问控制方法和计算机可读介质
CN117453352B (zh) 一种Xen下的设备直通方法
US11281612B2 (en) Switch-based inter-device notational data movement system
US20240211293A1 (en) Efficient queue shadowing for virtual machines

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination