CN104123242B - 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 - Google Patents

为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 Download PDF

Info

Publication number
CN104123242B
CN104123242B CN201410350006.1A CN201410350006A CN104123242B CN 104123242 B CN104123242 B CN 104123242B CN 201410350006 A CN201410350006 A CN 201410350006A CN 104123242 B CN104123242 B CN 104123242B
Authority
CN
China
Prior art keywords
memory
processor
accelerator
mmu
storage
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.)
Expired - Fee Related
Application number
CN201410350006.1A
Other languages
English (en)
Other versions
CN104123242A (zh
Inventor
G.N.钦亚
H.王
D.A.马泰库蒂
J.D.科林斯
E.舒赫曼
J.P.赫尔德
A.V.巴特
P.塞蒂
S.F.瓦利
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104123242A publication Critical patent/CN104123242A/zh
Application granted granted Critical
Publication of CN104123242B publication Critical patent/CN104123242B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory

Abstract

本发明的名称是“为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持”。在一个实施例中,本发明包括具有存储虚拟地址到物理地址转换的条目的存储器管理单元(MMU),其中各条目包括指明对应条目的存储单元是存在于本地存储器中还是存在于远程存储器中的存储单元指示符。这样,公共虚拟存储器空间可在可由一个或多个非相干链路分隔的两个存储器之间共享。描述了其它实施例并且要求其权益。

Description

为本地与远程物理存储器之间的共享虚拟存储器提供硬件 支持
本分案申请的母案申请日为2010年9月16日、申请号为201010293493.4、发明名称为“为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持”。
技术领域
本申请涉及为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持。
背景技术
随着基于处理器的系统发展,经由例如按照基于PCI ExpressTM规范基本规范版本2.0(2007年1月17日发布)(以下称作PCIeTM规范)或者另一种这样的协议的链路的外设部件互连Express(PCIeTM)互连等高速外设互连连接到系统的可编程加速器的可用性允许系统集成人员将更大计算功率装入系统。但是,在确保应用可透明地(transparently)利用附加计算功率而无需对应用进行显著变更以便在主处理器(例如多核中央处理单元(CPU))与加速器之间手动划分计算以及管理数据的来回移动方面存在难题。传统上,只有由操作系统(OS)管理的主系统存储器被分配供应用使用。对经由外设互连所耦合的任何加速器本地的物理存储器被单独管理。具体来说,加速器上的这种本地存储器作为运行在主处理器上的OS可识别的系统存储器的一部分不是可见的。相反,装置驱动软件负责显式管理本地存储器与远程存储器之间的数据移动。
由处理器存取的物理存储器由操作系统来管理,操作系统将对这个物理存储器的存取虚拟化,以便创建连续(contiguous)大虚拟地址空间的幻象(illusion)。OS将基础处理器支持用于虚拟存储器管理,因为处理器允许软件建立将虚拟页面映射到物理页面的映射表。处理器通过每次需要进行存储器存取时查询映射表,来支持虚拟存储器地址转换。频繁存取的转换可由处理器进行高速缓存,以便加速这个过程。通常称作页表的这些映射表还包含例如控制对给定虚拟页面的存取(access)的读/写和用户/超级用户特权位等属性位。虽然OS管理主板上可用的物理存储器(系统存储器),但是它没有管理或分配对加速器本地并且可用的存储器。因此,当前解决方案创建编程人员看到的共享存储器模型,并且取决于存储器保护机制来找出错误并在不同存储器之间来回移动页面。
发明内容
根据第一实施例,本发明提供了一种用于支持共享虚拟存储器的处理器,包括:
第一核心,包括取指令单元、指令解码单元、第一存储器管理单元(MMU)和至少一个执行单元,第一MMU包括存储虚拟地址到物理地址转换的多个条目;以及
加速器,与第一核心耦合并包括第二MMU,第二MMU包括存储虚拟地址到物理地址转换的多个条目,其中,第一MMU的各条目包括存储指明对应条目的存储单元是存在于与所述处理器耦合的第一存储器中还是存在于与所述加速器耦合的第二存储器中的第一指示符的存储单元字段,其中,所述处理器执行处理程序以将对于第二存储器中的存储单元的存储器请求转换成直接存储器存取(DMA)事务来与第二存储器通信。
根据第二实施例,本发明提供了一种用于支持共享虚拟存储器的方法,包括:
接收包含虚拟地址的存储器存取请求;
分析处理器的转换后备缓冲器(TLB)中存储的与虚拟地址对应的条目,以便根据指示与虚拟地址对应的物理地址(PA)是存在于第一存储器还是存在于第二存储器中的TLB条目的位置属性,确定所述PA是存在于关联所述处理器的第一存储器还是存在于关联与所述处理器耦合的加速器的第二存储器中,第一存储器和第二存储器共同形成共享虚拟存储器空间;以及
如果所述PA存在于第二存储器中,则经由非相干互连向第二存储器发送反向代理执行请求,以便执行所述存储器存取请求。
根据第三实施例,本发明提供了一种用于支持共享虚拟存储器的系统,包括:
具有包括第一存储器管理单元(MMU)的第一核心的处理器,第一MMU包括各用来存储虚拟地址到物理地址转换的多个条目,其中各条目包括存储所述处理器对与耦合到所述处理器的第二处理器相关联的第二存储器的存储单元的存取次数的计数的计数器,其中,当条目的计数器达到阈值时,所述处理器将与所述条目相关联的存储单元中存储的数据从第二存储器的所述存储单元移动到与所述处理器耦合的系统存储器的存储单元;
经由链路与所述处理器耦合的第二处理器,第二处理器包括第二MMU;以及
与所述处理耦合的系统存储器。
附图说明
图1是根据本发明的一个实施例的系统的框图。
图2是根据本发明的一个实施例、用于反向代理执行(reverse proxy execution)的方法的流程图。
图3是示出根据本发明的一个实施例的反向代理执行操作的框图。
图4是根据本发明的一个实施例、用于代理执行的方法的流程图。
图5是示出根据本发明的一个实施例的代理执行操作的框图。
图6是根据本发明的一个实施例的页表的示例条目。
图7是根据本发明的一个实施例的处理器的框图。
图8是根据本发明的一个实施例、包括片上加速器的系统的框图。
具体实施方式
实施例使处理器(例如插槽(socket)上的中央处理单元(CPU))能够通过使用特殊加载/存储事务存取存在于加速器上的存储器并且对存储器寻址,来创建和管理与通过例如外设部件互连Express(PCIeTM)接口等接口与系统互连的加速器的全共享虚拟地址空间。直接对远程存储器寻址的能力允许应用软件所看到的有效计算容量增加,并且允许应用无缝(seamlessly)共享数据而无需显式涉及编程人员来回移动数据。这样,可对存储器寻址,而无需借助于存储器保护以及找出虚拟地址存取的错误,以便从错误处理程序重定向待完成的存储器存取。因此,现有共享存储器多核处理可扩展到包括不在插槽上、而是经由外设非相干链路连接的加速器。
相比之下,例如基于群集的系统等典型系统创建编程人员看到的部分共享存储器模型,并且取决于存储器保护机制来找出错误并在CPU与外围设备之间来回移动页面。另外,在基于群集的系统中,各节点运行在其上运行应用的操作系统(OS)栈的单独副本,并且系统的这个方面是编程人员接触到的,因为只有地址空间的一部分是共享的,并且编程人员从共享区域分配或者显式指定将数据的哪一部分放入共享地址空间。执行环境与类似单共享存储器多核系统的全共享存储器执行环境不同。
相反,在各个实施例中,插槽上的处理器可对加速器本地的远程存储器寻址,这允许处理器透明地使用远程存储器地址来存取共享数据。要实现这个方面,可提供架构扩展,以便允许虚拟存储器管理系统得到增强,使得可发出(issue)特殊加载/存储事务,以便对远程共享数据寻址,并且进一步使系统能够将存储器页面移动到更靠近它们被更频繁存取的存储单元,而无需显式编程人员干涉来进行此操作。另外,存储器管理扩展允许编程人员直接运行应用代码,而无需显式指明地址空间的哪些部分必须共享或者使编程人员管理公共共享数据区域。
因此,可创建和管理高速缓存相干CPU插槽上的核心与经由外设互连与系统互连的加速器(包括多核CPU)之间的共享虚拟地址空间。因此,互连两侧的CPU/加速器可通过互连来存取共享虚拟页面,共享虚拟页面可在物理上位于系统存储器中或者位于对加速器本地的存储器上,互连可以是高速缓存相干的或可以不是高速缓存相干的。
相应地,加速器本地的物理存储器可对CPU并且又对OS和应用表现为附加系统存储器,即使加速器的本地存储器是通过互连而不是由CPU通过相干结构(例如前端总线(FSB)或快速路径互连(QPI))直接可访问的。
实施例可在许多不同的系统类型中实现。现在参照图1,示出的是根据本发明的一个实施例的系统的框图。如图1所示,系统100可以是示范计算机系统,其中具有经由可以是例如PCIeTM链路的非相干互连140耦合到加速器卡150的主个人计算机(PC)平台110。大家看到,主平台110可包括CPU120以及在一些实施例中可以是动态随机存取存储器(DRAM)的系统存储器130。虽然图1中为了便于说明而仅以这些最低限度的组件示出,但是大家理解,给定平台可包括许多其它典型组件,包括输入/输出集线器、芯片组组件、外围设备、大容量存储装置、输入/输出装置等等。
在图1中看到,CPU120可包括存储器管理单元(MMU)125。MMU125可实现虚拟地址到物理地址的映射,并且在一些实现中可包括一个或多个转换后备缓冲器(TLB)。正如下面将进一步论述,根据本发明的一个实施例对MMU的各种架构扩展可实现与平台110和加速器卡150关联的存储器之间的共享虚拟存储器的创建和使用。
仍然参照图1,加速器卡150可包括知识产权(IP)块160,它可以是任何类型的加速器,例如图形处理单元、CPU或者任何其它这种装置。大家看到,这个IP块本身可包括MMU165。要实现与平台110的通信,桥接器155可存在,以便将按照互连140的协议发生的通信变换成符合片上系统(SoC)结构170上所使用的协议,其中SoC结构170又将IP块160耦合到在一些实施例中同样可以是DRAM的本地存储器180。虽然在图1的实施例中以这种具体实现示出,但是本发明的范围并不局限于这个方面。
实施例可实现反向代理执行(RPE),它增强CPU识别板载(例如主板)系统存储器外部的物理存储器存取的能力。然后,可将对这类存储单元的存取转换成通过外围结构隧道传输(tunnel)到加速器的一类存取。加速器又服务于来自其本地物理存储器的存取。结合使用RPE和代理执行(其中CPU可在加速器的请求下帮助完成存储器存取),具有经由(相干或非相干)结构耦合到多插槽CPU的单独MMU的任何加速器可构建包括系统存储器和加速器本地存储器的物理存储器的共享虚拟地址空间。使用RPE和代理执行,一个实施例可允许为传统对称多处理(SMP)所构建的同一个基于多线程共享虚拟存储器的程序将线程分布在CPU上,CPU遍布于(across)多个CPU插槽或遍布于外围I/O结构上的多个止动机构上。
连同架构机制一起,实施例还可包括固件和系统软件扩展,它们允许插槽上的核心与加速器(或CPU)之间通过外围互连的控制和数据传输,以便在范围从完全OS未知到OS感知的不同抽象级(各具有用于优化的不同选项)透明地工作。
可根据从CPU侧以及加速器侧对共享数据的存取模式按照需求来共享数据。可采用虚拟地址进行工作并且支持地址转换的加速器可透明地运行相同代码而对数据和代码的参考保持不变(intact),因为在加速器执行应用程序的一部分、引用代码或数据时可使用相同的虚拟地址。包含代码或数据的物理页面可位于加速器本地或者可从系统存储器取出。虚拟页面可根据存取频率从远程存储单元移动到本地存储单元,而无需显式涉及应用软件栈来进行这种操作,因为应用无需管理数据移动以建立加速器上的计算。
往往向驱动软件分配使用主系统存储器与加速器本地的远程存储器之间的直接存储器存取(DMA)传输来显式移动大批数据的任务。在传统驱动模型中,运行在CPU上的应用程序和管理加速器的驱动程序通常驻留在两个截然不同的虚拟地址空间中。必然地,对于应用与驱动器之间的数据通信以及系统存储器与加速器本地存储器之间的数据传输通常引起极大开销。此外,这种数据传输通常通过由编程人员编写的应用代码来实现。例如,可能要求编程人员使用供应商特定的一组应用编程接口(API)手动将数据从系统存储器移动到加速器存储器。相反,根据本发明的一个实施例在CPU与加速器核心之间创建共享虚拟地址空间而无需显式管理DMA操作极大地简化了数据共享,因为整个应用代码和数据可放入公共共享虚拟地址空间,而无需通过例如采用编程人员对DMA操作的显示编排而改变应用程序来显式移动数据。因此,虽然数据传输仍然可通过DMA进行,但是它们不是编程人员控制的。换言之,处理器可在执行用户级应用期间直接存取远程存储器中存在的数据,而无需由编程人员显式编程以配置和管理基础结构来实现数据存取。
为了构造CPU与加速器之间的共享地址空间,存储器管理单元可根据用于转换虚拟-物理地址的页表的内容来允许对共享虚拟地址空间的加载/存储存取被发送给远程存储器。
系统软件支持可允许运行时系统透明且动态地迁移虚拟页面的存储单元,使得CPU与加速器之间的公共共享虚拟地址空间可被创建,并且程序的运行时工作集本地性行为(run-time working-set locality behavior)用于在存取不频繁时远程定位(locate)虚拟页面或者对于频繁存取页面对它们进行本地定位。
在各个实施例中,可提供扩展虚拟存储器支持的不同机制。一种实现没有包括对现有传统分页系统设计的任何OS变化,而其它实现可向页表条目添加更多信息。这些机制涉及支持反向代理执行的类似架构机制,即,CPU识别和服务于不是映射在系统存储器上、而是通过外围结构映射到对加速器本地的远程物理存储器的那些虚拟地址存取的能力。
要支持RPE,CPU可识别给定虚拟地址是映射到系统存储器还是通过外围结构映射到远程存储器。如果物理地址映射到系统存储器,则存取可采用标准存储器存取来进行本地处理,否则可指明RPE以处理存取。在一个实施例中,RPE可使用专用微码流来实现。RPE可开始于用将由微码处理程序来处理的特殊错误条件来标记(tag)存取(例如加载/存储(LD/ST))。处理程序可通过外围结构将存取转换成READ/WRITE/DMA事务,但若干变化也是可能的。为了描述简单起见,假定外围结构是PCIeTM互连,并且对远程物理存储器的每个单独存取被转换成不可高速缓存存取,并且又转换成PCIeTM数据事务,以便通过PCIeTM结构隧道传输请求/数据。事务可封装(encapsulate)原始虚拟地址或者物理地址。在一些实施例中,执行存取的CPU线程可停止待处理完成(pending completion)的远程存取(并且可切换到另一个线程)。当加速器从CPU接收到通知关于存取请求的PCIeTM事务时,加速器中的定序器将请求作为特殊中断事件来处理。定序器从请求中提取存取地址和存取类型。如果存取地址是虚拟地址,则定序器可经由本地MMU而在本地执行转换,以便得到物理地址。使用该物理地址,加速器定序器提交(commit)存储(如果是写事务)或者得到加载的数据(如果是读事务)。定序器将把应答(例如在加载的情况下)封装到PCIeTM事务中,并且回送给主根(hostroot)(即CPU)。CPU核心接收已完成存取的状态和PCIeTM事务,并且恢复连续操作,根据远程存取的存取状态,这可引起存取错误。
现在参照图2,所示的是根据本发明的一个实施例的反向代理执行的流程图。如图2所示,方法200可用于存取加速器的本地存储器(即相对于CPU的远程存储器)上存在的数据。在图2中看到,方法200可通过接收存储器存取请求来开始(框210)。这个请求可在主CPU中接收,主CPU又可将请求转发给MMU、如TLB,以便确定条目是否用于TLB中存在的虚拟地址(菱形框220)。如果不是,则可执行页面丢失处理程序,以便得到该条目并且将其存储到TLB中(框225)。
当条目存在于TLB时,可对它进行分析,以便确定对应物理地址的存储单元(框230)。例如,正如下面进一步论述,各TLB条目可包括指明对应页面是存在于本地(即系统存储器)还是远程存储器的信息。如果物理地址存在于系统存储器(菱形框240),则控制转到框245,其中可执行对系统存储器的存储器存取请求,并且相应地可提供所请求数据作为对请求方的响应(框250)。
如果在菱形框240而是确定物理地址不在系统存储器中,则控制转到框260。在框260,可准备反向代理执行请求,以便将存储器存取请求发送给包括数据的远程存储器(例如加速器的本地存储器)。在各种实现中,这个请求可通过非相干互连、例如作为专用加载/存储请求来隧道传输。在加速器上处理这个反向代理执行请求之后,控制转到框270,其中接收反向代理执行请求的结果,即,接收所请求数据,并且可将响应提供给请求方,如以上针对框250所述。虽然在图2的实施例中以这种具体实现示出,但是本发明的范围并不局限于这个方面。
现在参照图3,所示的是示出根据本发明的一个实施例的反向代理执行的操作的框图。如图3所示,当从CPU120到MMU125的存取(1)虚拟地址(V.A)X的请求失败(例如,查找指明页面存在于加速器卡的本地存储器中)时,反向代理执行请求被准备并且发送(2)给加速器卡150。加速器160又处理请求,以便将存储器存取请求(3)发送给MMU165,MMU165又存取(4)本地存储器180中的所请求页面,使得所请求数据可回送给CPU120(5)。注意,完全在主CPU的控制下,在其有利的(glorified)LD/ST实现内(all under the host inside itsglorified LD/ST implementation)(例如在微码流中),来自加速器的数据可经由DMA或者轮询来发送给主CPU。换言之,一旦CPU发出对远程存储单元的存取,则CPU将存取转向微码例程,以便执行有利的LD/ST,这将等待DMA中断或者执行活动轮询(active polling)而从加速器得到“返回”数据。对(V.A)X的存储器存取的完成以对存取标识在虚拟地址X处的存储单元的应用程序透明的方式来执行。
总体上,RPE操作的作用就像通过不均匀存储器架构(NUMA)系统的长等待时间存储器存取操作。基础隧道传输机制可根据结构的性质而改变。在PCIeTM结构的情况下,由于根(系统)与子(加速器)联合体之间的不对称,其中即使CPU通常无法存取加速器的本地存储器的任一个,加速器也可存取一系列系统存储器,RPE性能机制的各种优化可通过将系统存储器的部分或者加速器的本地存储器用作专有存储器(private memory)来实现。在一个实施例中,系统存储器的部分可保留作为远程加速器本地存储器的高速缓存。或者,可分配专有存储器区域以充当缓冲器,以便保存远程存取的虚拟页面。例如对映射到远程页面的虚拟地址X的存取可引起整个页面临时读入本地缓冲器,其中它将可用于将来的存取,以便减少远程存储器存取。
在一个实施例中,代理执行机制可用于处理在加速器定序器上发生(incur)的页面错误(page fault)情况,表示可将错误发送给CPU供处理。这意味着,加速器定序器上的MMU与CPU的MMU是相干的(coherent),并且全部指向OS的同一个页表。无论是由CPU还是加速器上的操作所引起的虚拟页面的页面错误使CPU使用传统页面处理机制来使页面进入存储器。如果错误来源于加速器定序器上的存取,则CPU可在远程加速器本地物理存储器中安装新的页面。否则,可将该页面放入系统存储器。CPU上对映射到远程加速器本地存储器的虚拟地址的非错误存取将保证映射到加速器上的物理页面,由此确保完成代理执行。
现在参照图4,所示的是根据本发明的一个实施例的代理执行的方法的流程图。在图4中看到,方法300可用于在加速器所预期的数据没有存在于其本地存储器时执行代理执行。
在图4中看到,方法300可通过接收来自加速器的存储器存取请求来开始(框310)。然后,可确定请求的虚拟地址的条目是否存在于加速器的TLB中(菱形框350)。如果是的话,则加速器的本地存储器可使用这个虚拟地址来存取(框370),并且将响应提供给请求方(框380)。
否则,如果条目没有存在于TLB,则控制转到框330,其中可将代理执行请求发送给CPU(框330)。假定所请求的转换没有存在于CPU的MMU中,则可运行页面丢失处理程序,以便得到该条目(框335)。此外,与这个虚拟地址对应的页面可从系统存储器移动到加速器本地存储器(框340)。然后,恢复消息可从CPU发送给加速器(框350)。相应地,加速器可对其TLB重试存储器请求(框360)。由于条目这时存在于MMU中,所以可对本地存储器执行存储器存取请求,以便得到所请求的数据(框370)。相应地,可将包含所请求数据的响应提供给请求方(框380)。
现在参照图5,所示的是示出根据本发明的一个实施例的代理执行操作的框图。在图5中看到,代理执行可在加速器请求存取(1)没有存在于本地MMU165的虚拟地址(V.A)X时发生。相应地,将对这个页面错误的代理执行请求(2)发送给CPU120。图5示出其中MMU165直接向CPU120发送代理执行请求的实现。但是,当代理通过页面漫步代码(page-walkingcode)(微码、固件或软件,取决于如何管理MMU)来实现时,这个代码则可发送代理请求。CPU120将请求(3)发送给本地MMU125,MMU125又存取系统存储器130中的页面以便获得所请求的虚拟地址(4)。大家看到,当请求用于读取数据时,整个页面可从系统存储器130发送(5)到本地存储器180。在一个实施例中,数据的传输可经由CPU120进行,CPU120对DMA编程,以便将数据从系统存储器130中的区域复制到本地存储器180中的区域。备选地,CPU120可通过运行例如使用上述微码所实现的单独的“有利”加载/存储指令序列来执行复制。此后,CPU120可将恢复消息(6)发送给加速器160,加速器160又重试对MMU165的存取(7),MMU165这时发现转换存在,并且发送请求(8)以便从本地存储器180得到对应数据。注意,为了实现对本地存储器180中的数据的存取,使MMU165是可寻址的。CPU120可直接执行单独的“有利”LD/ST,以便把来自系统存储器130上的页表的转换条目更新到MMU165中。备选地,CPU120可经由到本地存储器180的数据传输来将包含转换的页表或者页表的子集复制到加速器侧,并且然后恢复加速器160,其页面漫步器(page walker)将漫步(walk)这时本地驻留的页表。
区分CPU上的虚拟地址存取是本地(在系统存储器中)还是远程(在加速器的存储器中)的信息可来自OS,它从基本输入/输出系统(BIOS)知道这种信息,BIOS完全知道系统存储器配置。要支持RPE,BIOS可列举(enumerate)加速器上的公告存储器大小。这个操作与由BIOS在引导时所执行的只读存储器(ROM)/随机存取存储器(RAM)芯片选择相似。然后,BIOS可报告系统存储器和加速器本地存储器的总和,并且通知OS关于存储器的哪一个范围是本地系统存储器以及哪一个是远程的。
在各个实施例中,BIOS的系统级状态、即称作存储器分区描述符的一组描述符架构状态可记录这种范围信息,例如最小程度地记录系统存储器的范围信息,因而这个范围之外的任何物理地址将识别为远程。在一个实施例中,这种信息可存储在BIOS内建数据结构中。存储器描述符也可作为专有状态(private state)存储在软件和微码均可存取的机器特定寄存器中。注意,这种范围信息首先由BIOS在OS启动之前建立,因此这些状态的使用与OS没有相关性。换言之,RPE机制可与甚至不知道远程与本地存储器之间的区别的传统OS配合工作。
对于由CPU所处理的任何给定LD/ST,使各TLB转换还将物理地址与存储器分区描述符进行比较以判定它是本地系统存储器还是远程存取可能是麻烦的。相反,这种检查可在MMU的关键路径外执行,并且可仅在填充新TLB条目时才通过页面漫步发生。在一些实施例中,各TLB条目可包括属性位,以便指明对应条目是在远程还是在本地系统存储器中。当安装新的TLB条目时,页面漫步器可执行页表条目中的物理地址范围相对存储器分区描述符的范围检查。注意,这种机制即使在OS不在本地或者远程映射的页面之间进行区分时也进行工作。
在一些实施例中,OS可通过将加速器本地存储器仅用于保存加速器频繁存取的应用的代码和数据的那个子集,来处理使用加速器本地存储器背后的策略(policy behindusage of accelerator local memory)。如果OS不知道,则例如运行时层或其它实体的本地性原则将帮助把工作集移动到系统存储器或加速器本地存储器中接近存取更频繁发生的存储单元。
另外,如上所述,OS页表格式可包括属性位,以便指明对应页面是存储在本地还是远程存储器中。当OS建立虚拟地址到物理地址映射时,可标记这个位,并且对于各物理页面,OS可检查存储器分区描述符,以便将该页面标记为本地或远程。这样,无需对任何已安装TLB条目执行范围检查。为了允许应用存取加速器上的存储器,CPU可分析属性位,使得它可将对给定虚拟地址的加载/存储路由到远程物理存储单元。另外,属性位还可跟踪远程执行的存取次数,从而使OS软件能够实现基于远程存取次数的策略,使得在远程存取次数超过特定阈值时,可将页面迁移到另一个存储单元。
虽然有可能通过增强虚拟页面的保护、例如将页面标记为不可存取或者不存在,并且处理所得错误,来实现远程存储器存取,但是存取等待时间增加,因为页面错误处理程序需要在每次存储器存取发生时运行。相反,使用本发明的一个实施例,CPU可将远程存储单元地址提供给总线控制器,总线控制器将存取导向加速器的存储单元。例如,CPU可通过存取总线控制器中定义的寄存器的标准集来直接重定向加载/存储,以便对远程存储单元进行存取,而无需来自软件的任何帮助以完成加载/存储。这种数据传输可通过DMA(成批传输)或者以高速缓存行粒度的标量传输来进行。透明地将虚拟页面从远程存储单元移动到本地存储单元(反过来也是一样)的能力允许软件(例如应用)与加速器共享数据,而无需显式管理数据的移动。在没有连接到系统或者进入无响应状态的加速器的情况下,地址转换单元产生指明加载/存储失败的原因的页面错误。
现在参照图6,所示的是根据本发明的一个实施例的页表中的示例条目400。大家看到,各条目可包含页面基址(PBA)字段410,它存储指向存储器中存储的页面的第一地址的PBA。另外,各条目可包括:加速器字段420,它存储表示(referto)包括该页面的系统中存在的加速器的n位加速器标识符(ID);本地/远程字段430,存储关于对应虚拟页面是存储在本地存储器还是可能多个远程存储器之一中的例如n位指示符;计数器字段440,存储对远程存储器进行的存取的次数进行计数的m位计数器(使得计数器仅在页面处于远程存储器时才是活动的);以及属性字段450,存储指明页面的不同属性的各个位。
在一个实施例中,当存取计数器的值达到零时,发生例外情况。这种例外情况允许OS软件、例如负责页面迁移的虚拟存储器管理核心根据对给定虚拟页面的存取次数来管理迁移策略。也就是说,软件可管理虚拟地址空间,其中应用进行工作,使得虚拟地址空间可映射位于更接近CPU或者更接近加速器的物理存储器页面。对于耦合到PCIeTM总线的加速器,由于总线是非相干的,所以基础运行时软件可实现基于软件的相干机制。对于对任何共享数据结构的争用存取,可使用同步控制、如信标(semaphore),使得生产者线程没有释放信标,直到它准备将数据移交给消费者(consumer)。在生产者(producer)释放信标之前,需要将与共享数据有关的所有脏高速缓存行刷(flush)到存储器中。这保证在加速器上的消费者线程开始对来自存储器的共享数据进行存取时,数据是相干的,即使主CPU与加速器之间的结构不支持高速缓存相干性。相反,当加速器完成处理共享数据时,类似的同步和刷新机制可用于确保基于存储器的数据相干。如果CPU与加速器之间的结构是高速缓存相干的(例如未来一代的PCIe),则在生产者释放信标之前,在移交时,不需要将脏行刷到存储器中。
在具有OS支持的实施例中,加速器上的存储器的分配和管理可与分配和管理给予应用的系统存储器页面并且管理由CPU用于将虚拟地址转换到物理地址的页表的OS的存储器管理器配合来执行。存储器管理器还处理因存取远程存储器的重定向而发生的例外情况,并且管理CPU与加速器之间的物理页面的迁移背后的策略。页面迁移策略可根据工作负荷的行为而改变,并且可潜在地(potentially)改变成减少远程存取次数(在对应页面移动到系统存储器之前)或者实现第一接触策略,以便将页面移动到存在最大存取次数的存储单元。代码和只读数据页面可在多个存储器中复制,以便防止不必要地来回移动物理页面。只有包含在执行程序期间处理的数据的数据页面才根据对数据页面的存取的本地性来回迁移。
现在参照图7,示出的是根据本发明的一个实施例的处理器的框图。如图7所示,处理器500可以是多级流水线无序处理器。处理器500以图7中相对简化的视图示出,以便说明与根据本发明的一个实施例的代理执行和反向代理执行结合使用的各种特征。
如图7所示,处理器500包括前端单元510,前端单元510可用于取将要执行的宏指令,并且将它们准备稍后供处理器中使用。例如,前端单元510可包括取指令单元504、指令高速缓存506和指令解码器508。在一些实现中,前端单元510还可包括追踪高速缓存(tracecache)连同微码存储装置以及微操作存储装置。取指令单元504可以例如从存储器或者指令高速缓存506取宏指令,并且将它们馈送给指令解码器508,以便将它们解码为原语、即微操作,以供处理器执行。前端单元510还包括根据本发明的一个实施例的MMU509,以便存储包含增加状态信息的条目,以处理本文所述的代理执行和反向代理执行。根据这种信息,可有效地执行包括系统存储器和一个或多个加速器的本地存储器的共享虚拟存储器空间中的操作,而无需用于移动数据的编程人员支持。
耦合在前端单元510与执行单元520之间的是无序(OOO)引擎515,它可用于接收微指令,并且将它们准备用于执行。更具体来说,OOO引擎515可包括各种缓冲器,以便对微指令流重排序,并且分配执行所需的各种资源,以及提供逻辑寄存器到各种寄存器文件(如寄存器文件530和扩展寄存器文件535)内的存储装置存储单元的重命名。寄存器文件530可包括用于整数和浮点运算的独立寄存器文件。扩展寄存器文件535可为向量大小单元(vector-sized unit)提供存储,如每个寄存器256或512位。
各种资源可存在于执行单元520中,包括例如各种整数、浮点和单指令多数据(SIMD)逻辑单元以及其它专用硬件。可将结果提供给引退逻辑(retirement logic),即重排序缓冲器(ROB)540。更具体来说,ROB540可包括各种阵列和逻辑,以便接收与被执行的指令关联的信息。然后,这个信息由ROB540检查,以便确定指令是否可有效地引退以及结果数据被提交给处理器的架构状态,或者是否发生阻止指令的正确引退的一个或多个例外情况(exception)。当然,ROB540可处理与引退关联的其它操作。
如图7所示,ROB540耦合到高速缓存550,高速缓存550在一个实施例中可以是低级高速缓存(例如L1高速缓存),但是本发明的范围并不局限于这个方面。执行单元520也可直接耦合到高速缓存550。从高速缓存550,可与更高级高速缓存、系统存储器等进行数据通信。虽然在图7的实施例中以这种高级示出,但是大家理解,本发明的范围并不局限于这个方面。
例如,在一些实现中,加速器可与处理器片上集成。例如,在一种架构中,多核处理器可包括多个单独处理器核心以及加速器可以是例如图形处理器或者其它专用处理单元的异构核心。一般来说,代理执行和反向代理执行的操作可通过与以上对于可通过包括相干或非相干链路的任何类型的互连耦合到核心的片上加速器所述的相同方式发生。
现在参照图8,所示的是根据本发明的另一个实施例的系统的框图。在图8中看到,系统600包括多核处理器610,多核处理器610可在单个半导体芯片上形成并且包括各种组件。具体来说,在图8的实现中,处理器610可包括多个核心620a-620n,其中的每个可包括TLB625a-625n,它们可包括具有如上所述转换和附加字段的条目。核心又可耦合到共享高速缓存640,共享高速缓存640可以是共享最后级高速缓存,因为单独核心的每个可包括它自己的高速缓冲存储器。还看到,处理器610还可包括加速器。在所示实施例中,示出两个这类加速器,但是本发明的范围并不局限于这个方面。加速器与核心的连接可以通过例如相干或非相干链路等任何类型的互连,例如PCIeTM链路、共享总线互连等等。加速器630a和630b示为各包括具有上述条目的TLB635。另外,处理器610可包括存储控制器650。
在一种实现中,处理器610可耦合到存储器660,存储器660可以是可划分为多个分区的系统存储器,例如包括可与处理器核心关联的第一分区665a以及可与加速器关联的第二分区665b。当然,与核心和加速器关联的存储器可例如经由不同端口以及作为不同存储器模块等等以不同方式来配置。处理器610还可耦合到芯片组670,芯片组607又可耦合到各种外围设备,例如输入/输出装置、存储装置、其它加速器等等。
相应地,实施例可提供在可包括集成加速器或者经由可以是相干或非相干的链路耦合的加速器的不同系统中的代理执行和反向代理执行的处理。
实施例可通过代码来实现,并且可存储在其上已存有指令的存储介质上,该指令可用于对系统编程,以便执行指令。存储介质可包括但不限于:任何类型的磁盘,包括软盘、光盘、固态驱动(SSD)、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘;半导体器件,例如只读存储器(ROM)、例如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)等随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、磁卡或光卡;或者适合于存储电子指令的任何其它类型的介质。
虽然针对有限数量的实施例描述了本发明,但是本领域的技术人员将会从其中知道大量修改和变更。所附权利要求书意在涵盖落入本发明的真实精神和范围之内的所有这类修改和变更。

Claims (13)

1.一种用于支持共享虚拟存储器的处理器,包括:
第一核心,包括取指令单元、指令解码单元、第一存储器管理单元MMU和至少一个执行单元,第一MMU包括存储虚拟地址到物理地址转换的多个条目;以及
加速器,与第一核心耦合并包括第二MMU,第二MMU包括存储虚拟地址到物理地址转换的多个条目,其中,第一MMU的各条目包括存储指明对应条目的存储单元是存在于与所述处理器耦合的第一存储器中还是存在于与所述加速器耦合的第二存储器中的第一指示符的存储单元字段,其中,所述处理器执行处理程序以将对于第二存储器中的存储单元的存储器请求转换成直接存储器存取DMA事务来与第二存储器通信。
2.如权利要求1所述的处理器,其中,第一MMU的各条目还包括存储所述加速器的标识符的标识符字段和存储所述处理器对第二存储器的所述存储单元的存取次数的计数的计数器。
3.如权利要求1所述的处理器,其中,第一存储器是系统存储器。
4.如权利要求3所述的处理器,其中,所述系统存储器和第二存储器包括单个虚拟地址空间。
5.如权利要求1所述的处理器,其中,当第一MMU的条目指明所述存储单元存在于第二存储器中时,所述处理器经由与第一核心和所述加速器耦合的非相干互连的协议将存储器请求隧道传输到所述加速器。
6.如权利要求1所述的处理器,其中,响应第二MMU上的页面错误,所述加速器请求所述处理器解析所述页面错误。
7.如权利要求6所述的处理器,其中,所述处理器使第一存储器将关联所述页面错误的地址的存储器页面传输给第二存储器,并且使所述存储器页面的转换发送给所述加速器供存储在第二MMU中。
8.如权利要求1所述的处理器,其中,所述处理器使用第一MMU的条目中的信息直接对存在于第二存储器中的存储单元寻址。
9.如权利要求1所述的处理器,其中,所述处理器向所述加速器发出反向代理执行请求,以便使用第一MMU的条目中的信息来存取第二存储器中存储的数据,并且无需使用运行在所述处理器上的用户级应用。
10.一种用于支持共享虚拟存储器的系统,包括:
具有包括第一存储器管理单元MMU的第一核心的处理器,第一MMU包括各用来存储虚拟地址到物理地址转换的多个条目,其中各条目包括存储指明对应条目的存储单元是存在于所述系统存储器中还是存在于第二存储器中的指示符的第一字段以及存储所述处理器对与耦合到所述处理器的第二处理器相关联的第二存储器的存储单元的存取次数的计数的计数器,其中,当条目的计数器达到阈值时,所述处理器将与所述条目相关联的存储单元中存储的数据从第二存储器的所述存储单元移动到与所述处理器耦合的系统存储器的存储单元;
经由链路与所述处理器耦合的第二处理器,第二处理器包括第二MMU;以及
与所述处理器耦合的系统存储器。
11.如权利要求10所述的系统,其中,所述处理器使用第一MMU的条目中的信息直接对存在于第二存储器中的存储单元寻址。
12.如权利要求10所述的系统,其中,所述处理器响应于当所述计数器达到阈值时发生中断,将所述数据从第二存储器的存储单元移动到所述系统存储器的存储单元,而无需涉及运行在所述处理器上的应用。
13.一种用于支持共享虚拟存储器的处理器,包括:
第一核心,包括取指令单元、指令解码单元、第一存储器管理单元MMU,第一MMU包括存储虚拟地址到物理地址转换的多个条目,其中,各条目包括由第一核心对关联与所述处理器耦合的第二处理器的第二存储器的存储单元的访问的次数的计数的计数器,其中,当条目的计数达到阈值时,所述处理器将与所述条目相关联的存储单元中存储的数据从第二存储器的存储单元移动到与所述存储器耦合的系统存储器的存储单元,第一核心进一步包括第一高速缓冲存储器和至少一个执行单元;
互连;
加速器,经由所述互连与第一核心耦合并包括第二MMU,第二MMU包括存储虚拟地址到物理地址转换的多个条目,其中,第一MMU的各条目包括存储指明对应条目的存储单元是存在于与所述处理器耦合的第一存储器中还是存在于与所述加速器耦合的第二存储器中的第一指示符的存储单元字段,其中,所述处理器执行处理程序以将对于第二存储器中的存储单元的存储器请求转换成直接存储器存取DMA事务来与第二存储器通信;
与第一核心和所述加速器耦合的共享高速缓冲存储器;以及
与所述共享高速缓冲存储器耦合的存储控制器。
CN201410350006.1A 2009-09-18 2010-09-16 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 Expired - Fee Related CN104123242B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/562477 2009-09-18
US12/562,477 US8719547B2 (en) 2009-09-18 2009-09-18 Providing hardware support for shared virtual memory between local and remote physical memory
CN201010293493.4A CN102023932B (zh) 2009-09-18 2010-09-16 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201010293493.4A Division CN102023932B (zh) 2009-09-18 2010-09-16 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持

Publications (2)

Publication Number Publication Date
CN104123242A CN104123242A (zh) 2014-10-29
CN104123242B true CN104123242B (zh) 2017-08-08

Family

ID=43705804

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201010293493.4A Expired - Fee Related CN102023932B (zh) 2009-09-18 2010-09-16 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持
CN201410350006.1A Expired - Fee Related CN104123242B (zh) 2009-09-18 2010-09-16 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201010293493.4A Expired - Fee Related CN102023932B (zh) 2009-09-18 2010-09-16 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持

Country Status (6)

Country Link
US (2) US8719547B2 (zh)
JP (3) JP2011065650A (zh)
CN (2) CN102023932B (zh)
BR (1) BRPI1003466A2 (zh)
DE (1) DE102010035603A1 (zh)
TW (1) TWI470435B (zh)

Families Citing this family (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8656397B2 (en) * 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
CN104204990B (zh) * 2012-03-30 2018-04-10 英特尔公司 在使用共享虚拟存储器的处理器中加速操作的装置和方法
US9164904B2 (en) 2012-08-28 2015-10-20 Hewlett-Packard Development Company, L.P. Accessing remote memory on a memory blade
US9384153B2 (en) * 2012-08-31 2016-07-05 Freescale Semiconductor, Inc. Virtualized local storage
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
CN107402891B (zh) 2012-12-25 2020-12-22 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9906459B2 (en) 2013-01-27 2018-02-27 Hewlett Packard Enterprise Development Lp Socket state transfer
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
US9465729B2 (en) 2013-03-13 2016-10-11 Empire Technology Development Llc Memory allocation accelerator
US10133677B2 (en) * 2013-03-14 2018-11-20 Nvidia Corporation Opportunistic migration of memory pages in a unified virtual memory system
US20140280669A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
EP2979193B1 (en) * 2013-03-28 2021-04-28 Hewlett Packard Enterprise Development LP Shared memory system
US9678818B2 (en) * 2014-01-30 2017-06-13 Mellanox Technologies, Ltd. Direct IO access from a CPU's instruction stream
US9785576B2 (en) 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
WO2015150976A1 (en) 2014-04-03 2015-10-08 Strato Scale Ltd. Cluster-wide memory management using similarity-preserving signatures
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US10025715B2 (en) 2014-06-27 2018-07-17 International Business Machines Corporation Conditional inclusion of data in a transactional memory read set
US9342346B2 (en) 2014-07-27 2016-05-17 Strato Scale Ltd. Live migration of virtual machines that use externalized memory pages
US9436601B2 (en) 2014-09-15 2016-09-06 International Business Machines Corporation Categorizing memory pages based on page residences
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
CN105765542B (zh) * 2014-10-31 2019-11-15 华为技术有限公司 访问文件的方法、分布式存储系统和存储节点
US9600642B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization processing in CAPI adapters
US9600428B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization command flow processing in CAPI adapters
US9710624B2 (en) * 2014-11-20 2017-07-18 International Business Machines Corporation Implementing extent granularity authorization initialization processing in CAPI adapters
US20160149909A1 (en) 2014-11-20 2016-05-26 International Business Machines Corporation Implementing block device extent granularity authorization model processing in capi adapters
US9582659B2 (en) 2014-11-20 2017-02-28 International Business Machines Corporation Implementing extent granularity authorization and deauthorization processing in CAPI adapters
US9697370B2 (en) 2014-11-20 2017-07-04 International Business Machines Corporation Implementing and processing extent granularity authorization mechanism in CAPI adapters
CN104391753B (zh) * 2014-12-16 2017-12-05 浪潮电子信息产业股份有限公司 一种服务器主板内存系统无故障运行方法
US9921768B2 (en) 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9524328B2 (en) 2014-12-28 2016-12-20 Strato Scale Ltd. Recovery synchronization in a distributed storage system
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9727241B2 (en) * 2015-02-06 2017-08-08 Advanced Micro Devices, Inc. Memory page access detection
US9658793B2 (en) * 2015-02-20 2017-05-23 Qualcomm Incorporated Adaptive mode translation lookaside buffer search and access fault
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
WO2016135570A1 (en) 2015-02-26 2016-09-01 Strato Scale Ltd. Using access-frequency hierarchy for selection of eviction destination
GB2536199B (en) * 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Memory management
GB2536200B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Memory management
US10067893B2 (en) * 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism
US10198294B2 (en) * 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
JP6724908B2 (ja) * 2015-05-12 2020-07-15 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9858198B2 (en) 2015-06-26 2018-01-02 Intel Corporation 64KB page system that supports 4KB page operations
CN105938461B (zh) * 2015-07-31 2019-02-19 杭州迪普科技股份有限公司 一种dma数据传输方法、装置以及网络设备
US10216662B2 (en) * 2015-09-26 2019-02-26 Intel Corporation Hardware mechanism for performing atomic actions on remote processors
US10025722B2 (en) 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US9678788B2 (en) 2015-11-10 2017-06-13 International Business Machines Corporation Enabling poll/select style interfaces with coherent accelerators
CN108292291A (zh) 2015-11-30 2018-07-17 Pezy计算股份有限公司 管芯和封装件
JP5956708B1 (ja) * 2015-11-30 2016-07-27 株式会社PEZY Computing ダイ及びパッケージ、並びに、ダイの製造方法及びパッケージの生成方法
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法
WO2017123208A1 (en) 2016-01-12 2017-07-20 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US10613991B2 (en) 2016-08-01 2020-04-07 Hewlett Packard Enterprise Development Lp Transparent routers to provide services
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
TWI645290B (zh) * 2016-10-11 2018-12-21 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
US10289553B2 (en) 2016-10-27 2019-05-14 International Business Machines Corporation Accelerator sharing
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
CN108572864A (zh) * 2017-03-13 2018-09-25 龙芯中科技术有限公司 触发负载均衡调度的方法、装置及服务器
US11113440B1 (en) * 2017-03-17 2021-09-07 Synopsys, Inc. Memory migration in hybrid emulation
US20180285262A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for shared virtual memory access protection
US10282811B2 (en) * 2017-04-07 2019-05-07 Intel Corporation Apparatus and method for managing data bias in a graphics processing architecture
US10324858B2 (en) * 2017-06-12 2019-06-18 Arm Limited Access control
WO2018230444A1 (ja) * 2017-06-13 2018-12-20 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラムが格納された記録媒体
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
CN109729110B (zh) * 2017-10-27 2022-02-11 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、设备以及计算机可读介质
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
US11099789B2 (en) * 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11231927B2 (en) * 2018-03-08 2022-01-25 Intel Corporation System, apparatus and method for providing a fabric for an accelerator
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
CN109308270B (zh) * 2018-09-04 2021-07-23 飞腾技术(长沙)有限公司 一种加速虚实地址转换的方法及装置
US11030012B2 (en) * 2018-09-28 2021-06-08 Intel Corporation Methods and apparatus for allocating a workload to an accelerator using machine learning
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US10909045B2 (en) * 2018-12-20 2021-02-02 Arm Limited System, method and apparatus for fine granularity access protection
WO2020154223A1 (en) 2019-01-21 2020-07-30 John Rankin Systems and methods for processing network traffic using dynamic memory
US11023397B2 (en) 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11301396B2 (en) * 2019-03-29 2022-04-12 Intel Corporation Technologies for accelerated data access and physical data security for edge devices
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11487674B2 (en) * 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
US11061819B2 (en) * 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11169930B2 (en) * 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
WO2020243244A1 (en) * 2019-05-28 2020-12-03 John Rankin Supporting a virtual memory area at a remote computing machine
US11256624B2 (en) * 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11526290B2 (en) * 2019-06-29 2022-12-13 Intel Corporation System and method to track physical address accesses by a CPU or device
US11226902B2 (en) * 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection
CN111290979B (zh) * 2020-03-23 2021-08-17 优刻得科技股份有限公司 数据传输方法、装置及系统
US11922297B2 (en) * 2020-04-01 2024-03-05 Vmware, Inc. Edge AI accelerator service
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes
US11573898B2 (en) 2020-08-17 2023-02-07 Hewlett Packard Enterprise Development Lp System and method for facilitating hybrid hardware-managed and software-managed cache coherency for distributed computing
TWI766387B (zh) * 2020-10-07 2022-06-01 智捷科技股份有限公司 一種具延遲感知負載平衡的反向代理方法和存儲裝置
US20210149812A1 (en) * 2020-11-18 2021-05-20 Intel Corporation Network interface controller with eviction cache
CN113014631A (zh) * 2021-02-19 2021-06-22 浙江曲速科技有限公司 基于Hlink的设备缓存推送系统及方法
US20220292026A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Virtual addresses for a memory system
US20220292027A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Shared virtual address spaces
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
EP4352619A2 (en) * 2021-06-09 2024-04-17 Enfabrica Corporation Transparent remote memory access over network protocol
US11934279B2 (en) * 2021-10-27 2024-03-19 Dell Products L.P. Sequential file restore performance using filesystem redirection
WO2024073864A1 (en) * 2022-10-02 2024-04-11 Intel Corporation Distributed address translation services

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004A (en) * 1845-04-16 Wooden bbidge
IT1228728B (it) 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
GB2239724B (en) 1990-01-05 1993-11-24 Sun Microsystems Inc Apparatus for maintaining consistency in a multi-processor computer system using virtual caching
DE69132300T2 (de) 1990-03-12 2000-11-30 Hewlett Packard Co Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
US5450542A (en) * 1993-11-30 1995-09-12 Vlsi Technology, Inc. Bus interface with graphics and system paths for an integrated memory system
EP0769171A1 (en) * 1995-05-05 1997-04-23 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5897664A (en) 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5860116A (en) * 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5914730A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
WO1999034293A1 (en) * 1997-12-30 1999-07-08 Micron Technology, Inc. Accelerated graphics port for multiple memory controller computer system
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US6317706B1 (en) 1998-03-31 2001-11-13 Sony Corporation Simulation development tool for an embedded system
US6362826B1 (en) * 1999-01-15 2002-03-26 Intel Corporation Method and apparatus for implementing dynamic display memory
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6412057B1 (en) 1999-02-08 2002-06-25 Kabushiki Kaisha Toshiba Microprocessor with virtual-to-physical address translation using flags
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6282601B1 (en) 1999-03-31 2001-08-28 International Business Machines Corporation Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt
US6651163B1 (en) 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
US6604187B1 (en) 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
JP4263919B2 (ja) * 2002-02-25 2009-05-13 株式会社リコー 画像形成装置及びメモリ管理方法
JP4128467B2 (ja) * 2002-02-25 2008-07-30 株式会社リコー 画像形成装置及びメモリマップ方法
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6922766B2 (en) * 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7047320B2 (en) * 2003-01-09 2006-05-16 International Business Machines Corporation Data processing system providing hardware acceleration of input/output (I/O) communication
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7516449B2 (en) 2005-01-04 2009-04-07 International Business Machines Corporation Run-time type conversion
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US7831780B2 (en) * 2005-06-24 2010-11-09 Nvidia Corporation Operating system supplemental disk caching system and method
US20070005927A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Systems and methods for remote triggering of page faults
US7793067B2 (en) * 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
JP2007304747A (ja) * 2006-05-10 2007-11-22 Nec Corp 計算機システム及びメモリアクセス方法
US7487341B2 (en) 2006-06-29 2009-02-03 Intel Corporation Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US7490191B2 (en) 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
JP4304676B2 (ja) * 2006-10-31 2009-07-29 日本電気株式会社 データ転送装置、データ転送方法、及びコンピュータ装置
US8205064B2 (en) * 2007-05-11 2012-06-19 Advanced Micro Devices, Inc. Latency hiding for a memory management unit page table lookup
US8521919B2 (en) * 2009-06-30 2013-08-27 International Business Machines Corporation Direct memory access in a computing environment

Also Published As

Publication number Publication date
JP2013254524A (ja) 2013-12-19
US9003164B2 (en) 2015-04-07
CN102023932B (zh) 2014-08-27
TWI470435B (zh) 2015-01-21
JP2015135696A (ja) 2015-07-27
US20110072234A1 (en) 2011-03-24
CN102023932A (zh) 2011-04-20
BRPI1003466A2 (pt) 2015-08-18
US20140208042A1 (en) 2014-07-24
TW201120643A (en) 2011-06-16
DE102010035603A1 (de) 2011-04-07
CN104123242A (zh) 2014-10-29
JP2011065650A (ja) 2011-03-31
US8719547B2 (en) 2014-05-06
JP5911985B2 (ja) 2016-04-27

Similar Documents

Publication Publication Date Title
CN104123242B (zh) 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持
CN101203838B (zh) 直接存储器存取转换的地址窗口支持
CA2349569C (en) Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node
US6622217B2 (en) Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system
TWI254861B (en) Data processing system, method, and computer readable medium for sharing input/output facilities of a logical partition with another logical partition
JP3628595B2 (ja) 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード
CN109558168A (zh) 低等待时间加速器
CN102906716A (zh) 依据适配器的多个地址空间
US8375171B2 (en) System and method for providing L2 cache conflict avoidance
JP2003067357A (ja) 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法
US10929295B2 (en) Accelerating replication of page tables for multi-socket machines
JP2004506981A (ja) マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法
CN101802796A (zh) 防止多核处理器中的写回竞争
CN111742302A (zh) 通过基于上层缓存中的条目来日志记录对下层缓存的流入量进行跟踪记录
CN102906693A (zh) 用于与适配器进行通信的存储/存储块指令
Keeton et al. The OpenFAM API: a programming model for disaggregated persistent memory
US10564972B1 (en) Apparatus and method for efficiently reclaiming demoted cache lines
CN104049904B (zh) 用于管理统一虚拟存储器的页面状态目录的系统和方法
TW202343254A (zh) 具有零線最佳化的直接交換快取
Patil et al. Āpta: Fault-tolerant object-granular CXL disaggregated memory for accelerating FaaS
US20240086195A1 (en) Monitor exclusive instruction
CN104049905B (zh) 在异构处理器之间迁移不同尺寸的页
Lee et al. SDM: Sharing-Enabled Disaggregated Memory System with Cache Coherent Compute Express Link
CN104049903A (zh) 用于统一虚拟存储器系统的迁移方案
Miller et al. Pointers in Far Memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170808

Termination date: 20180916

CF01 Termination of patent right due to non-payment of annual fee