CN105637492A - 多核异构系统转换后备缓冲器相干性 - Google Patents

多核异构系统转换后备缓冲器相干性 Download PDF

Info

Publication number
CN105637492A
CN105637492A CN201480054508.8A CN201480054508A CN105637492A CN 105637492 A CN105637492 A CN 105637492A CN 201480054508 A CN201480054508 A CN 201480054508A CN 105637492 A CN105637492 A CN 105637492A
Authority
CN
China
Prior art keywords
value
processor
tlb
physical address
mask
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.)
Granted
Application number
CN201480054508.8A
Other languages
English (en)
Other versions
CN105637492B (zh
Inventor
J·沈
L·G·蔡-奥恩
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105637492A publication Critical patent/CN105637492A/zh
Application granted granted Critical
Publication of CN105637492B publication Critical patent/CN105637492B/zh
Active 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]
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Abstract

用于使用物理地址输入来执行反向转换后备缓冲器(TLB)查找的方法、设备和指令,包括:利用第一处理器获得所述物理地址输入,其中,所述物理地址输入指示对应于共享存储器的物理地址;从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码是比特模式;从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。

Description

多核异构系统转换后备缓冲器相干性
背景技术
计算设备通常包括很多用于执行各种指令/系统的处理器。例如,智能电话移动设备可以利用应用处理器来执行与所下载的应用相关的例程,以及利用数字信号处理器来执行信令处理操作。这样的处理器可以各自被配置为利用虚拟存储器地址方案,因此它们各自的进程可以使用映射到系统存储器内的各种物理地址的简单化的存储器地址来访问数据。例如,应用处理器可以利用连续的虚拟地址来访问与用于应用的数据相关联的任意RAM位置。
设备现在正在开始利用不同架构的各种处理器。这样的异构系统可以提高软件从共享存储器获益的潜力,并且可以利用诸如OpenCL、Renderscript等的各种应用编程接口(API)。然而,寻址方案上的不同可能需要使用常规方案的低效的机制。例如,异构系统设备(诸如现代智能电话)可以使用64位和32位处理器两者和/或处理核心。在具有不同的架构的情况下,各种处理器可以采用不同的虚拟存储器地址方案来访问相同的(或者共享的)系统存储器。例如,RAM的相同页(或者存储器块)可以被第一处理器和第二处理器两者使用;然而,可以由两个处理器通过两个不同的虚拟地址引用该页。这样的异构系统中的处理器可以各自利用转换后备缓冲器(TLB),所述转换后备缓冲器(TLB)经由虚拟地址来提高访问系统存储器的速度和效率,并且因此可能需要对TLB相干性的稳健的支持。TLB可以使用虚拟页到系统或者公共的存储器中的物理页的多对一映射,使得对条目的相干识别在处理时间和功耗方面是昂贵的。
存在用于维护多核系统中的相干性的技术。例如,存在使用虚拟地址来修改TLB条目的API命令,例如LinuxARMTLB清除方法flush_tlb_all()、flush_tlb_mm(memory_block_identifier(存储器块标识符))、flush_tlb_range(memory_block_identifier(存储器块标识符),start_index(开始索引),end_index(结束索引))和flush_tlb_page(virtual_address(虚拟地址),virtual_mask(虚拟掩码))。作为另一个示例,一些系统可以执行TLB“击落”技术,所述TLB“击落”技术将虚拟地址用于TLB内的条目的查找和失效操作。典型的TLB击落过程可以包括:第一处理器向第二处理器发送中断,中断包括虚拟地址,所述虚拟地址将在第二处理器的页表中被失效。
发明内容
在一个方面中,一种用于使用物理地址输入来执行反向转换后备缓冲器(TLB)查找的方法可以包括:利用第一处理器获得所述物理地址输入,其中,所述物理地址输入指示对应于共享存储器的物理地址;从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码是比特模式;从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。在另一个方面中,所述方法可以还包括:响应于确定所述第一值和所述第二值不匹配而迭代地从所述TLB内的其它TLB条目获得第二掩码和第二页帧号;迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值;以及,迭代地将所获得的第二掩码应用到所获得的物理地址输入以生成所述第二值,其中,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配可以包括:迭代地比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。在另一个方面中,迭代地将所获得的第二掩码应用到所获得的第二页帧号应用以生成所述第一值可以包括:在不复制的情况下再使用来自系统页表中的条目的页帧号。在另一个方面中,所述方法可以还包括:响应于确定所述第一值和所述第二值匹配而清除所述第一TLB条目。在另一个方面中,所述方法可以还包括:向第二处理器发送指示TLB动作和所述物理地址的消息,其中,所述TLB动作可以包括TLB清除操作。在另一个方面中,所述方法可以还包括:响应于确定所述第一值和所述第二值匹配而返回所述第一TLB条目的索引。在另一个方面中,利用第一处理器获得所述物理地址输入可以包括:从第二处理器接收包括TLB动作和所述物理地址的消息,并且所述方法可以还包括:响应于接收由所述第二处理器发送的所述消息而将活跃标记清零;使用所返回的所述第一TLB条目的索引来执行在所接收的消息中所指示的所述TLB动作;以及,响应于执行所述TLB动作而设置所述活跃标记。
在一个方面中,一种多核异构计算设备可以包括:用于利用第一处理器获得物理地址输入的单元,其中,所述物理地址输入指示对应于共享存储器的物理地址;用于从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码的单元,其中,所获得的第一掩码可以是比特模式;用于从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号的单元;用于将所获得的第一掩码应用到所获得的第一页帧号以生成第一值的单元;用于将所获得的第一掩码应用到所获得的物理地址输入以生成第二值的单元;以及,用于比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配的单元。
在一个方面中,一种多核异构计算设备可以包括:第一处理器、第二处理器和共享存储器,其中,所述第一处理器可以被配置为具有处理器可执行指令,以执行可以包括以下操作的操作:利用所述第一处理器获得物理地址输入,其中,所述物理地址输入指示对应于所述共享存储器的物理地址;从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码可以是比特模式;从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
在一个方面中,一种具有存储在其上的处理器可执行软件指令的非暂时性处理器可读存储介质,所述处理器可执行软件指令被配置为使第一处理器执行可以包括以下操作的操作:利用所述第一处理器获得物理地址输入,其中,所述物理地址输入指示对应于共享存储器的物理地址;从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码可以是比特模式;从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
附图说明
被并入本文并且构成本说明书的部分的附图说明了本发明的示例性方面,并且与上面给出的一般描述和下面给出的具体实施方式一起用来阐述本发明的特征。
图1是包括第一类型的第一处理器和第二类型的第二处理器的多核异构计算设备的部件框图。
图2是被配置为用于利用与共享系统存储器相关联的物理地址来执行反向TLB查找操作的方面逻辑电路的部件框图。
图3A至3B是示出了用于多核异构计算设备利用与共享系统存储器相关联的物理地址来执行反向TLB查找操作的方面方法的过程流程图。
图4是示出了使用由多核异构计算设备内的第一处理器和第二处理器执行的反向TLB查找操作的方面方法的过程流程图。
图5是适合在各种方面中使用的多核异构计算设备的部件框图。
具体实施方式
将参考附图详细地描述各种方面。只要有可能,将贯穿附图使用相同的附图标记来指相同或者相似的部分。对特定示例和实现方式的参考是出于说明的目的,并且将不旨在限制本发明或者权利要求书的范围。
在本文中使用词语“示例性的”表示“充当示例、实例或者说明”。在本文中被描述为“示例性”的任何实现方式不必理解为比其它实现方式优选或者有优势。
在本文中使用术语“计算设备”和“多核异构计算设备”指配备有至少第一处理器(或者第一处理单元)和第二处理器(或者第二处理单元)的蜂窝电话、智能电话(例如,iPhone)、网络平板电脑、平板型计算机、实现了互联网的蜂窝电话、实现了WiFi的电子设备、个人数字助理(PDA)、膝上型计算机、台式计算机、个人计算机和类似的电子设备中的任一项或全部,其中第一处理器的架构或者技术与第二处理器的架构或者技术不同。例如,多核异构计算设备可以包括64位应用处理器和32位辅助处理器。在各种方面中,这样的设备可以被配置为具有用于建立广域网(WAN)或者局域网(LAN)连接的网络收发机(例如,LTE、3G或4G无线广域网收发机、到互联网的有线连接或者WiFi)。
当前,用于维护多核系统中的相干性的电路、硬件、指令、软件和/或命令对于使用多对一虚拟地址方案的异构系统来说是不够的。例如,现有的利用虚拟地址的API命令针对异构系统不起作用,这是因为这些命令假定了由系统内的处理器所使用的虚拟地址之间的对等性。作为另一个示例,已知的用于维护相干性的击落技术可以涉及虚拟地址和/或顺序地读取处理器的TLB内的每个条目以识别具有匹配的物理帧的条目,需要许多周期(例如,处理器可以迭代地检查每个TLB条目以识别与系统存储器内的特定物理存储器地址相关的条目)。
各种方面提供用于在多核异构计算设备中利用转换后备缓冲器(TLB)的设备、指令和方法。在各种方面中,多核异构计算设备的处理器可以被配置为使用物理地址对相关联的TLB执行TLB查找(即,“反向TLB查找”)。这样的反向TLB查找操作可以由与TLB相关联(并且因此采用虚拟地址方案)的多核异构计算设备内的任何处理器或者处理器核心来执行。例如,多核异构计算设备内的应用处理器和DSP可以同时地或者单独地执行与它们各自的TLB相关的TLB查找操作。为描述简单起见,下面参考多核异构计算设备内的“第一处理器”和“第二处理器”描述了方面操作。然而,这样的一般参考将不旨在要求或者暗示特定的次序、优先级或者处理器的类型。
执行用于反向TLB查找的方面方法,多核异构计算设备内的第一处理器可以接收物理地址(或者物理地址输入),例如,与将基于上下文切换被第一处理器修改的页相关联的系统存储器位置。所接收的物理地址可以是系统调用(例如,API命令)或者指令(例如,精简指令集内的低级指令)中的参数。第一处理器可以获得对应于与第一处理器相关联的TLB的第一条目内的虚拟地址的掩码。第一处理器还可以获得与所述虚拟地址相关联的页帧号,例如,与系统存储器相关并且与所述虚拟地址一起被存储在TLB条目中的页帧号。第一处理器可以通过将所获得的掩码应用到所获得的页帧号来生成第一值。并行地,第一处理器可以通过将所述掩码应用到所接收的物理地址来生成第二值。然后,第一处理器可以比较第一值和第二值以确定是否存在匹配。如果发现匹配,则第一处理器可以将与掩码相关联的TLB条目的索引(以及其对应的虚拟地址)存储在命中向量中,同时把页大小信息作为因素计入,所述命中向量被用于指示哪些TLB条目具有物理地址。这样的“命中”TLB条目可以被第一处理器设备用于使条目失效或者清除条目,以促进相干性。在一个方面中,可以将多个命中存储在命中向量中(即,多于一个TLB条目可以对应于所接收的物理地址)。
当基于比较第一值和第二值确定没有匹配时,第一处理器可以继续使用与其它TLB条目中的虚拟地址相关联地存储的新的掩码和页帧号来生成新的第一值和第二值。换句话说,第一处理器可以迭代地应用TLB中所表示的掩码以确定是否存在与第二值的匹配。第一处理器可以针对各种TLB条目的全部虚拟地址迭代地继续该操作。在一个方面中,TLB可以是内容可寻址的存储器(CAM)。
在一个方面中,多核异构计算设备内的第二处理器可以利用较低抽象、指令级功能来执行反向TLB查找。特别地,第一处理器可以利用反向TLB探查指令,所述反向TLB探查指令将物理地址复制到控制寄存器(例如,ARM处理器中的控制寄存器中的一个控制寄存器)中,将与TLB条目的虚拟地址相关联的掩码应用到物理地址,以及,当发现具有掩码的物理地址与具有掩码的页帧号(PFN)之间的匹配时,返回TLB条目(多个条目)索引。利用该指令级功能,第二处理器可以以快速、非串行的方式执行TLB查找操作。下面在图2中示出该指令级功能的一个方面硬件实现方式。
在各种方面中,多核异构计算设备内的处理器可以被配置为利用API命令,所述API命令使用物理地址作为各种TLB操作的输入值,例如,指示使哪些TLB条目失效或者清除哪些TLB条目的输入。API命令可以使多核异构计算设备采用反向TLB查找的软件或者硬件实现方式。例如,多核异构计算设备内的处理器可以使用API命令(例如,flush_tlb_range(memory_block_identifier(存储器块标识符),start_PA(开始PA),end_PA(结束PA)),所述API命令可以引起使第一处理器中的、与特定存储器块的范围内的物理地址一致的TLB条目失效的方法的执行。作为另一个示例,多核异构计算设备内的处理器可以使用另一个API命令,所述另一个API命令可以引起对清除第一处理器中的、与特定物理地址一致的TLB条目的硬件或者电路的使用(例如,flush_tlb_page(physical_address(物理地址),memory_block_identifier(存储器块标识符)))。这样的API命令对于为处理器提供用于实现物理地址空间协议以实现TLB动作的方便方法可能是有价值的。在一个方面中,多核异构计算设备内的处理器可以被配置为利用API命令来执行对多个TLB条目的批量失效。
在另一个方面中,多核异构计算设备内的处理器可以被配置为执行增强型TLB击落方法或者(或者击落协议),其中,与虚拟地址相反,处理器可以利用物理地址作为输入来识别应当使之失效的TLB条目。在这样的方法中,多核异构计算设备可以采用硬件、指令、API调用或者软件方法来执行如下面所描述的反向TLB查找操作。例如,响应于检测到与第一TLB内的页的虚拟地址相关的转换信息需要被修改,多核异构计算设备内的第一处理器可以:禁用处理器间中断,将与第一TLB(以及第一处理器)相关联的活跃标记清零,锁定系统页表,使用物理地址使用反向TLB指令或者电路对第一处理器的TLB执行查找,清除与物理地址相关的TLB条目,以及发送消息,所述消息指示多核异构计算设备内的第二处理器应当对第二处理器的TLB中对应于物理地址的条目执行失效操作。使用如上面所描述的方法,第二处理器还可以例如经由反向TLB查找指令或者电路使用物理地址对第二TLB执行TLB查找操作,并且可以清除任何匹配的TLB条目。
在另一个方面中,被配置为采用分布式虚拟存储器(DVM)的系统或者设备(例如,采用ARM架构的设备)可以被配置为利用本公开内容的各种方法和/或指令。共享存储器中的存储器管理单元(MMU)页表的相干集合的多集群相干CPU系统可能需要TLB相干性。例如,当TLB是存储器中的存储器管理单元(MMU)页表的高速缓存时,这样的系统可以执行对当主设备更新页表时可以包含MMU页表条目的陈旧副本的TLB条目的失效。高速缓存相干性协议中的分布式虚拟存储器支持可以由使用物理地址的广播失效消息组成。DVM消息可以支持TLB失效、分支预测器、虚拟或者物理指令高速缓存失效(用于当处理器已经向存储器写入代码时)和同步,所述同步等待全部之前的DVM命令完成。可以使用监听信令在读信道上发送DVM消息。系统MMU(SMMU)可以利用使用物理地址的TLB失效消息来确保其整体是最新的。
图1示出了包括第一类型的第一处理器501和第二类型的第二处理器531的多核异构计算设备500。例如,第一处理器501可以是具有64位架构的应用处理器,并且第二处理器531可以是具有32位架构的协处理器(例如,图形处理单元、数字信号处理器等)。可以将第一处理器501和/或第二处理器531包括在片上系统中。第一处理器501可以与第一页表120(在图1中称为“页表_A”)相关联,并且第二处理器531可以与第二页表140(在图1中称为“页表_B”)相关联,每个页表120、140包括所存储的数据,所述数据将虚拟地址链接到共享系统存储器502的物理地址(例如,存储应用数据的部分的随机访问存储器(RAM)内的有索引的块或者页)。在一个方面中,系统存储器502可以与系统页表(图1中未示出)相关联。
出于说明的目的,第一页表120可以包括将第一虚拟地址(即,对应于第一处理器501的地址‘1’)链接到第一物理地址存储器块150(即,存储器索引‘2’)的第一数据记录122、将第二虚拟地址(即,对应于第一处理器501的地址‘2’)链接到第二物理地址存储器块152(即,存储器索引‘3’)的第二数据记录124、和将第三虚拟地址(即,对应于第一处理器501的地址‘3’)链接到第三物理地址存储器块154(即,存储器索引‘X’)的第三数据记录126。第二页表140可以包括将第四虚拟地址(即,对应于第二处理器531的地址‘1’)链接到第三物理地址存储器块154(即,存储器索引‘X’)的第四数据记录142、和将第五虚拟地址(即,对应于第二处理器531的地址‘2’)链接到第四物理地址存储器块156(即,存储器索引‘X+3’)的第五数据记录144。
由于存储器502是共享系统存储器,第一页表120和第二页表140可以包括包含对存储器502的相同物理地址的引用的数据记录。作为非限制性说明:第三数据记录126可以将第三虚拟地址(即,对应于第一处理器501的地址‘3’)链接到第三物理地址存储器块154(即,存储器索引‘X’),并且第四数据记录142可以将第四虚拟地址(即,对应于第二处理器531的地址‘1’)链接到第三物理地址存储器块154。换句话说,经由页表120、140,第一处理器501和第二处理器531两者可以使用不同的虚拟地址链接到并且访问存储在共享系统存储器502中的相同数据。
第一处理器501还可以与第一TLB110(在图1中称为“TLB_A”)相关联,并且第二处理器531可以与第二TLB130(在图1中称为“TLB_B”)相关联,每个TLB110、130包括分别来自第一页表120和第二页表140的所存储的数据。例如,第一TLB110可以包括第一页表120的数据记录124、126的子集,并且第二TLB130可以包括第二页表140的数据记录142、144的子集(或者全部)。
图2示出了被配置为用于利用与共享系统存储器相关联的物理地址来执行反向TLB查找操作的一个方面的多核异构计算设备500。多核异构计算设备500可以被配置为具有用于在不复制TLB或者存储器条目和没有重大时间影响的情况下执行硬件反向TLB探查指令的电路、硬件和/或各种模块。特别地,多核异构计算设备500可以包括内容可寻址存储器(在图2中称为‘CAM’)202,所述内容可寻址存储器202可以存储对应于与物理地址相关联的虚拟地址203至205的掩码206至208的集合。CAM202可以起处理器(例如,应用处理器、第一处理器、第二处理器等)的TLB的作用。掩码206至208可以被用于控制页帧号或者虚拟地址值的最高有效位的数量,并且通常可以被实现为利用它们对应的虚拟地址203至205被存储在TLB条目中的比特字段。在一个方面中,CAM202还可以与虚拟地址203至205和掩码206至208相关联地存储页帧号的集合。例如,CAM202可以接收并且存储来自系统页表的页帧号,以用于在相关的虚拟地址203至205的TLB条目中进行存储。
多核异构计算设备500还可以包括用于接收并且(例如,在寄存器、系统变量或者其它缓冲器单元内)存储物理地址输入220、并且出于图2的目的可以称为“输入模块”250的硬件/电路。例如,响应于多核异构计算设备500检测到用于使用物理地址使TLB条目失效的API命令的实例化,多核异构计算设备500可以将物理地址输入220存储在与输入模块250相关联的寄存器内。在一个方面中,输入模块250可以是CAM202的一部分。在另一个方面中,输入模块250和/或CAM202可以与多核异构计算设备500内的单独的处理器相关联。
多核异构计算设备500还可以包括用于管理诸如随机访问存储器(或者RAM502)的共享系统存储器的RAM控制器240。RAM控制器240还可以利用命中向量(例如,可以被RAM控制器240用于存储与TLB查找操作相关联的信息的缓冲器)。例如,RAM控制器240可以响应于检测到“命中”(即,CAM202的条目中所存储的数据与诸如物理地址的搜索令牌之间的匹配)而存储CAM202的索引(或者条目索引)。在一个方面中,命中向量可以存储CAM202条目的多个索引(或者命中)。RAM控制器240可以被配置为,例如通过逐条目地(或者逐周期地)评估存储在RAM502的每个存储器块中的数据来突发读取RAM502。特别地,RAM控制器240可以被配置为,迭代地一次一个地读取RAM502的块211至213,以识别与块211至213中的每个块相关联的页帧号。在一个方面中,多核异构计算设备500可以针对RAM控制器240读取/评估的每个条目使用一个时钟周期。在一个方面中,可以在与RAM502相关联的系统页表内指示页帧号。在另一个方面中,块211至213可以与CAM202的TLB条目相关联。例如,第一块211的页帧号(例如,“PFN_1”)可以与存储在TLB条目中的第一虚拟地址203(例如,“VA_1”)和第一掩码206(例如,“掩码_1”)相关联。
RAM控制器240可以例如通过响应于读取RAM502的块211至213中的每个块来发送指示页帧号(例如,‘PFN_1’、‘PFN_2’、‘PFN_n’等)的信号214来发送指示各种页帧号的信号214。RAM控制器240可以经由信号214迭代地并且一次一个地发送单独的页帧号。多核异构计算设备500可以被配置为在CAM202处接收经由RAM控制器240来发送的信号214,并且使用所指示的页帧号来进行与存储在CAM202中的数据的比较或者掩码操作。
在一个方面中,多核异构计算设备500可以被配置为发送信号210、201’,所述信号210、201’指示对应于存储在CAM202中的虚拟地址203至205的各种掩码206至208。例如,多核异构计算设备500可以发送信号210’以供输入模块250使用,和/或发送信号210以供CAM202使用。可以经由信号210、210’迭代地并且一次一个地发送对应于存储在CAM202中的虚拟地址203至205的单独的掩码206至208。
多核异构计算设备500可以被配置为与经由信号210、210’发送的掩码206至208相结合地利用掩码应用部件201、201’。这样的掩码应用部件201、201’可以是用于进行滤波、增大、译码、合并或者以其它方式将两个输入值改变成单个唯一的结果值的电路、硬件或者模块(例如复用器或者门)。例如,掩码应用部件201、201’可以是将算术操作、比特模式或者方程应用到页帧号输入值的硬件逻辑单元。作为另一个示例,掩码应用部件201、201’可以将掩码206至208中的一个掩码作为指示地址(例如,物理存储器地址)或者帧号的哪些比特将被归零的比特模式来应用。在另一个方面中,掩码应用部件201、201’可以是状态机。
CAM202可以被配置为经由第一掩码应用部件201来应用掩码206至208,并且输入模块250可以被配置为经由第二掩码应用部件201’来应用掩码206至208。特别地,使用第一掩码应用部件201,CAM202可以被配置为信号210内单独地指示的掩码206至208应用到信号214内单独地指示的页帧号。例如,CAM202可以经由第一掩码应用部件201迭代地将掩码206至208应用到经由信号214所发送的页帧号(例如,‘PFN_1’等)以生成输出值。在一个方面中,多核异构计算设备500可以被配置为在不复制数据的情况下再使用所接收的信号214内的数据(即,再使用来自系统页表中的条目的页帧号)。换句话说,CAM202可以被配置为,例如通过缓冲或者以其它方式存储经由信号214接收的各种页帧号来避免在经由第一掩码应用部件201迭代地将掩码206至208应用到页帧号期间复制比较器。CAM202可以发送信号265,所述信号265指示来自经由第一掩码应用部件201对各种页帧号来应用掩码206至208的输出值。
进一步,使用第二掩码应用部件201’,输入模块250可以被配置为将在信号210’内单独地指示的掩码206至208应用到物理地址输入220。例如,经由第二掩码应用部件201’,输入模块250可以将第一掩码206应用到由物理地址输入220指示的物理地址以生成输出值。输入模块250可以发送信号260,所述信号260指示来自经由第二掩码应用部件201’来应用掩码206至208的输出值。
由于相同的掩码206至208可以被CAM202和输入模块250分别经由第一和第二掩码应用部件201、201’来使用,所以在信号260、265中所发送的输出值当是通过将相同的掩码应用到相同的值(即,物理地址输入220或者信号214中的页帧号)而生成的时可以是相同的。例如,当物理地址输入220与由CAM202经由信号214接收的页帧号相同时,来自与CAM202相关联的第一掩码应用部件201和与输入模块250相关联的第二掩码应用部件201’的输出值可以是相同的。
多核异构计算设备500可以利用比较电路230来确定从经由掩码应用部件201、201’来应用掩码206至206产生和通过信号260、265发送的输出值是否相同。换句话说,比较电路230可以被用于确定CAM202和输入模块250是否生成了匹配的输出值,并且因此确定两者是否在具有相同的输入值的情况下使用了其各自的掩码应用部件201、201’(即,是否存在“命中”)。经由比较电路230,CAM202可以被配置为,与将信号210内的掩码206至208应用到在信号214内接收的页帧号并行地,比较信号260中的输出值。当比较电路230确定来自信号260、265的输出值是相同的(即,“命中”)时,可以向RAM控制器240发送信号270,所述信号270指示对应于与掩码应用部件201、201’一起使用的输入值(即,掩码206至208)的CAM202(或者TLB)条目或者条目索引生成相同的输出值。在一个方面中,CAM202可以通过利用多个比较电路(例如针对CAM202中的每个条目利用一个比较电路)来执行并行的比较。
图3A示出了多核异构计算设备的处理器利用与共享系统存储器相关联的物理地址来执行反向TLB查找操作的一个方面的方法300。可以执行方法300以识别对应于特定物理地址的TLB条目,例如可能需要响应于由多核异构计算设备内的其它处理器执行的动作而被修改或者清除的条目。例如,响应于第一处理器修改RAM的共享存储器块内的内容,多核异构计算设备中的第二处理器可以作为TLB击落机制的一部分来执行方法300。在各种方面中,可以经由如上面所描述的指令、软件方法或者硬件在多核异构计算设备内的处理器中实现方法300。为描述的简单起见,下面参考多核异构计算设备内的“第一处理器”描述方法300的方面的操作。
在框302中,多核异构计算设备内的第一处理器可以例如通过利用第一处理器与API命令相关地接收物理地址输入来获得对应于共享存储器的物理地址输入。物理地址输入可以是系统存储器块标识符、页帧号或者标识符、或者其它与共享系统存储器相关的索引值。多核异构计算设备可以监控指示物理地址的指令、API命令和/或方法(例如,针对对应于将使之失效或者被清除的物理地址的TLB条目的被调用命令)的实例化。例如,多核异构计算设备可以检测API命令“Invalidate(PA)”已被调用以用于执行,其中‘PA’是表示将使之失效的特定物理地址的输入变量或者参数。
在框304中,第一处理器可以选择与第一处理器相关联的TLB内的TLB条目。在各种方面中,所选择的TLB条目可以包括虚拟地址、与虚拟地址相关联的掩码和与设备的共享存储器相关联的来自系统页表的页帧号。例如,TLB条目可以是包括各种数据的数据表记录,所述各种数据包括特定的虚拟地址、比特模式掩码和来自系统页表的相关联的页帧号。TLB条目可以具有可以被用于引用与TLB条目相关联地存储的信息的对应的索引或者其它标识符(例如,数据表索引)。在一个方面中,TLB可以是如上面所描述的CAM。
在框306中,第一处理器可以从所选择的TLB条目中获得与虚拟地址相关联的掩码。每个TLB条目可以包括可以具有各种掩码大小(例如,4K、4MB等)的掩码。掩码可以是比特模式或者比特表示。第一处理器可以在框308中从所选择的TLB条目中获得页帧号。在一个方面中,为避免冗余的周期和避免瓶颈,在TLB填充时,多核异构计算设备经由第一处理器可以获得用于写入TLB的页帧号,并且因此在方法300的执行期间可能不需要从系统存储器中取得任何东西。例如,所获得的页帧号可以是当前存储在系统存储器中的页的物理地址,其是从系统页表中被检索以用于在运行时间之前存储在TLB中的。在一个方面中,页帧号可以是指示索引或者存储器块标识符的信息。
在框310中,第一处理器可以将所获得的掩码应用到所获得的页帧号以生成第一输出值。如上面所描述的,第一处理器可以经由采用输入值(例如,所获得的掩码和所获得的页帧号)并且生成可以使用相同的输入值来复制和重复的输出值的滤波器、方程、方法或者其它操作来应用掩码。例如,第一处理器可以掩码比特模式应用到所获得的页帧号以将比特归零。换句话说,当与相同的输入值(例如,页帧号)一起使用相同的掩码时,将生成相同的输出值。与框310中的操作类似,第一处理器可以在框312中将所获得的掩码应用到所获得的物理地址输入以生成第二输出值。
在框314中,第一处理器可以比较第一输出值和第二输出值。例如,内部的第一处理器可以对第一和第二输出值执行模式匹配、算术或者其它比较操作以检测等价性。在确定框316中,第一处理器可以例如基于比较操作来确定第一输出值和第二输出值是否匹配。如果确定了第一和第二输出值不匹配(即,确定框316=“否”),则第一处理器可以结束方法300。如果第一和第二输出值匹配(即,确定框316=“是”),则在框318中第一处理器可以返回所选择的TLB条目的索引。例如,第一处理器可以向TLB(例如,CAM)发送匹配的TLB条目的索引,以在失效或者清除操作(或者进行清除的操作)中使用。使用所返回的索引,在可选的框320中,第一处理器可以清除所选择的TLB条目。例如,第一处理器可以否定、移除、使之失效或者以其它方式取消虚拟地址和基于反向TLB查找操作与所选择的TLB条目相关联地存储的其它信息。
图3B示出了多核异构计算设备内的处理器利用与共享系统存储器相关联的物理地址来执行反向TLB查找操作的另一个方面的方法350。除了方法350包括用于实现操作循环的操作之外,方法350与上面参考图3A描述的方法300类似,所述操作循环使多核异构计算设备内的处理器能够利用与系统存储器相关的页帧号和每个与TLB中所指示的虚拟地址相关联的掩码来迭代地生成输出值。换句话说,多核异构计算设备可以被配置为:从TLB条目中迭代地获得掩码和页帧号;迭代地将所获得的掩码应用到所获得的页帧号以及所接收/获得的物理地址(或者物理地址输入);以及,迭代地比较产生的输出值以确定是否存在任何匹配。在各种方面中,可以经由如上面所描述的指令、软件方法或者专用硬件在多核异构计算设备内的处理器中实现方法350。再一次地,为描述简单起见,下面参考多核异构计算设备内的“第一处理器”描述了方法350的一个方面的操作。
在框302中,多核异构计算设备内的第一处理器可以获得对应于共享存储器的物理地址输入。在框304’中,第一处理器可以选择与第一处理器相关联的TLB内的下一个TLB条目。框304’中的操作可以与上面参考图3A在框304中描述的操作相同;然而,第一处理器可以被配置为按次序选择TLB条目。例如,当方法350最初被执行时下一个TLB条目可以是第一个TLB条目。在框306中,第一处理器可以从所选择的TLB条目中获得与虚拟地址相关联的掩码。在框308中,第一处理器可以从所选择的TLB条目中获得页帧号。在框310中,第一处理器可以将所获得的掩码应用到所获得的页帧号以生成第一输出值。在框312中,第一处理器可以将所获得的掩码应用到所获得的物理地址输入以生成第二输出值。
在框314中,第一处理器可以比较第一输出值和第二输出值。在确定框316中,第一处理器可以例如基于比较操作来确定第一输出值和第二输出值是否匹配。如果确定了第一和第二输出值不匹配(即,确定框316=“否”),则在确定框352中,第一处理器可以确定所选择的TLB条目是否是TLB中的最后一个条目。如果确定了所选择的TLB条目是最后一个TLB条目(即,确定框352=“是”),则第一处理器可以结束方法350。然而,如果确定了所选择的TLB条目不是最后一个TLB条目(即,确定框352=“否”),则第一处理器可以通过选择下一个TLB条目并且继续生成和评估各种输出值来继续进行框304’中的操作。如果确定了第一和第二输出值匹配(即,确定框316=“是”),则第一处理器可以在框318中返回所选择的TLB条目的索引。在可选的框320中,使用所返回的索引,第一处理器可以清除所选择的TLB条目。
多核异构计算设备中的各种处理器可以被配置为执行握手操作或者协议以实现TLB击落机制。例如,当第一处理器确定与它的TLB内的虚拟地址相关的转换信息需要被修改时,第一处理器可以清除它的活跃标记(例如,多核异构计算设备的操作系统可访问的比特/变量),锁定系统页表(例如,与系统存储器相关联的页表),清除与虚拟地址相关的TLB条目,向第二处理器发送描述将被执行的TLB动作(例如,使TLB条目失效)的消息(或者中断),以及忙等待直到第二处理器的活跃标记被清零为止。响应于接收到所述消息,第二处理器可以将它的活跃标记清零,并且忙等待直到系统页表被锁定为止(即,等待直到修改第二处理器本地的TLB是安全的为止)。当第二处理器的活跃标记被清零时,第一处理器然后可以修改系统存储器的页表,设置它的活跃标记,解锁系统页表,以及继续执行它的常规进程。第二处理器然后可以执行消息中所指示的TLB动作(例如,使TLB条目失效),设置它的活跃标记,并且继续执行它的进程。然而,这样的常规的握手机制可能依赖于处理器之间的虚拟地址对等性和/或代价高的串行操作来维持多核异构计算设备中的相干性。
图4示出了多核异构计算设备利用物理地址来使与第一处理器相关联的第一TLB条目失效(或者将其清除)的一个方面的方法400和用于利用物理地址来使与第二处理器相关联的第二TLB条目失效的一个方面的方法450。换句话说,图4示出了可以由两个处理器协力地执行以启用增强型TLB击落机制的方法400、450,所述增强型TLB击落机制用于使对应于匹配物理地址的物理帧号的第一和第二处理器的TLB条目失效。在各种方面中,方法400、450可以由多核异构计算设备的各种处理器作为并发地执行的软件、应用、例程或者操作系统线程来执行。
在框402中,多核异构计算设备内的第一处理器可以接收TLB动作和对应于共享存储器的物理地址输入。例如,多核异构计算设备可以接收用于清除与第一处理器相关联的TLB的条目的API调用。可以在中断内将TLB动作和/或物理地址输入作为数据来接收。在框404中,第一处理器可以例如通过将与第一处理器相关联的系统比特或者变量归零来将与第一处理器相关联的活跃标记归零。这样的活跃标记可以是对于多核异构计算设备内的各种处理器和/或在多核异构计算设备上执行的操作系统例程可访问或者以其它方式可见的。在框406中,第一处理器可以向第二处理器发送指示TLB动作和所接收的物理地址的消息(例如,中断)。在框407中,第一处理器可以被配置为响应于接收TLB动作和物理地址输入而禁用处理器间中断(或者IPI)。然后,在框408中,第一处理器可以例如通过在一段时间内进入休眠或者等待模式来执行忙等待操作,并且在确定框410中,可以确定多核异构计算设备内的其它处理器的活跃标记是否已被清零。在一个方面中,第一处理器可以定期地评估所存储的指示全部处理器的活跃标记的信息,或者替代地可以在各种处理器清零或者设置它们各自的活跃标记时接收信号或者消息。如果第一处理器确定全部活跃标记未被清零(即,确定框410=“否”),则第一处理器可以在框408中继续进行忙等待操作。
参考方法450,响应于由第一处理器执行框406中的操作,在框452中,多核异构计算设备内的第二处理器可以从第一处理器接收指示TLB动作和物理地址的消息。在框454中,第二处理器可以基于所接收的消息将它的活跃标记清零。然后,在框456中,第二处理器可以例如通过在一段时间内进入休眠或者等待模式来执行忙等待操作,并且在确定框458中,可以确定系统页表是否已经被第一处理器锁定。在一个方面中,第二处理器可以定期地评估所存储的指示系统页表的被锁定状态的信息,或者替代地,可以在系统页表被锁定时接收信号或者消息,例如,经由多核异构计算设备的操作系统的信号。如果第二处理器确定系统页表还未被第一处理器锁定(即,确定框458=“否”),则在框456中,第二处理器可以继续进行忙等待操作。
回头参考方法400,如果第一处理器确定全部活跃标记被清零(即,确定框410=“是”),则在框412中,第一处理器可以锁定系统页表,诸如与共享存储器相关联的页表。这可以通过第一处理器设置操作系统比特、变量或者指示符、或者替代地通过执行用于锁定共享存储器的页表的系统API调用来完成。
在框414中,第一处理器可以使用所接收的物理地址来执行反向TLB查找操作以识别与第一处理器相关联的第一TLB的条目。在各种方面中,第一处理器可以通过执行上面参考图3B所描述的方法350、执行用于找出与物理地址相关联的TLB条目的API命令、和/或执行如上面所描述的硬件实现的反向TLB查找指令来执行反向TLB查找操作。例如,对框414进行操作可以包括对上面描述的图3B的方法350进行操作或者使用例如上面参考图2描述的反向TLB查找硬件。
在框416中,第一处理器可以对所识别的第一TLB的条目执行TLB动作。例如,第一处理器可以清除所识别的对应于物理地址的条目或者以其它方式使所识别的对应于物理地址的条目失效。在框418中,第一处理器可以例如通过将共享存储器中的一块或者范围的页清零,而基于TLB动作和物理地址修改系统页表。在框420中,第一处理器可以解锁系统页表,并且在框422中,设置第一处理器的活跃标记。然后在框424中,第一处理器可以重新启用处理器间中断(IPI),并且继续进行常规的操作,例如,在接收TLB动作和物理地址之前执行正在进行的软件例程。在一个实施例中,第一处理器可以响应于第二处理器利用下面参考框464描述的操作来设置它的活跃标记而重新启用处理器间中断。
回头参考方法450,如果第二处理器确定系统页表已经被第一处理器锁定(即,确定框458=“是”),则第二处理器可以使用所接收的物理地址执行反向TLB查找操作以识别与第二处理器相关联的第二TLB的条目。除了框460中的操作可以由第二处理器执行以识别与第二处理器相关联的TLB条目之外,框460中的操作可以与上面参考框414描述的那些操作类似。例如,第二处理器可以执行上面描述的图3B中的方法350的操作。在框462中,第二处理器可以对第二TLB中所识别的条目执行TLB动作,例如清除使用例如上面参考图2描述的反向TLB查找方法、API命令或者硬件来识别的TLB条目或者使其失效。在框464中,第二处理器可以设置它的活跃标记,并且继续执行其它例程,例如,挂起的或者之前启动的应用或者例程。
图5是适合与各种方面一起使用的多核异构计算设备500的系统框图。在各种实施例中,多核异构计算设备500可以包括耦合到触摸屏控制器504和内部存储器502的处理器501。处理器501可以是被指定用于一般或者具体处理任务的一个或多个多核IC。在一个方面中,多核异构计算设备500可以包括耦合到内部存储器502的第二处理器531。在一个方面中,第一处理器501可以是应用处理器,以及第二处理器531可以是辅助处理器(例如,数字信号处理器、图形处理器(或者GPU)等)。内部存储器502可以是易失性或者非易失性存储器,并且可以还是安全和/或经加密的存储器、或者非安全和/或未经加密的存储器、或者其任意组合。触摸屏控制器504和处理器501可以还耦合到诸如电阻感应触摸屏、电容感应触摸屏、红外感应触摸屏等的触摸屏面板512。多核异构计算设备500可以具有用于发送和接收的耦合到彼此和/或耦合到处理器501的一个或多个无线信号收发机508(例如,Peanut(花生)Wi-Fi、RF无线电)和天线510。可以与上面提到的电路一起使用收发机508和天线510,以实现各种无线传输协议栈和接口。多核异构计算设备500可以包括蜂窝网络无线调制解调器芯片516,所述蜂窝网络无线调制解调器芯片516实现经由蜂窝网络的通信,并且耦合到处理器。多核异构计算设备500可以包括耦合到处理器501的外围设备连接接口518。外围设备连接接口518可以被单独地配置为接受一种类型的连接,或者被多样地配置为接受公共或专有的各种类型的物理和通信连接,例如,USB、火线(FireWire)、雷电(Thunderbolt)或者PCIe。外围设备连接接口518还可以耦合到被类似地配置的外围设备连接端口(未示出)。多核异构计算设备500还可以包括用于提供音频输出的扬声器514。多核异构计算设备500还可以包括由塑料、金属或者材料的组合构造的外壳520,所述外壳520用于包含本文中讨论的部件中的全部或一些部件。多核异构计算设备500可以包括耦合到处理器501的电源522(例如,一次性或可再充电的电池)。可再充电电池还可以耦合到外围设备连接端口以从多核异构计算设备500外部的源接收充电电流。
处理器501和531可以是任何可以由软件指令(应用)配置为执行各种功能(包括上面描述的各种方面的功能)的可编程微处理器、微计算机或者多个处理器芯片或者芯片组。在各种设备中,可以提供多个处理器,例如,专用于无线通信功能的一个处理器和专用于运行其它应用的一个处理器。通常,软件应用可以在它们被访问和加载到被处理器501和531中之前被存储在内部存储器502中。处理器501和531可以包括足以存储应用软件指令的内部存储器。在许多设备中,内部存储器可以是易失性存储器或者非易失性存储器(例如,闪速存储器),或者两者的混合。出于本说明的目的,对存储器或者系统存储器的一般引用指可被处理器501和531访问的存储器,包括内部存储器或者插入到处理器501和531内的各种设备和存储器中的可移除存储器。
前述方法描述和流程图仅是作为说明性示例而提供的,并且将不旨在要求或者暗示各种方面的步骤必需以所给出的次序来执行。如本领域的技术人员将认识到的,可以以任何次序来执行前述方面中的步骤的次序。诸如是“此后”、“然后”、“接下来”等的术语不旨在限制步骤的次序;这些术语仅仅用于引导读者遍历对方法的描述。进一步,任何以单数形式(例如使用冠词“一”、“一个”或者“那个(the)”)对权利要求要素的引用将不理解为将所述要素限制为单数。
结合本文所公开的方面描述的各种说明性的逻辑框、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或者两者的组合。为清楚地说明硬件和软件的该可互换性,在上面已经在总体上就它们的功能描述了各种说明性部件、框、模块、电路和步骤。这样的功能被实现为硬件还是软件取决于特定的应用和施加在整个系统上设计约束。技术人员可以针对每个特定的应用以不同方式来实现所描述的功能,但这样的实现方式决定不应当被解释为导致脱离本发明的范围。
可以利用被设计为执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立的门或者晶体管逻辑单元、分立的硬件部件、或者其任意组合来实现或者执行被用于实现结合本文所公开的方面描述的各种说明性的逻辑单元、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,但是或者,所述处理器可以是任何常规的处理器、控制器、微控制器或者状态机。处理器可以还被实现为计算设备的组合,例如,DSP和微处理器、多个微处理器、与DSP核心相结合的一个或多个微处理器或者任何其它这样的配置的组合。替代地,可以由专用于给定功能的电路来执行一些步骤或者方法。
在一个或多个示例性方面中,可以用硬件、软件、固件或者其任意组合来实现所描述的功能。如果用软件实现,则功能可以作为非暂时性计算机可读或服务器可读介质或者非暂时性处理器可读存储介质上的一个或多个指令或者代码而被存储或者被发送。本文所公开的方法或者算法的步骤可以体现在处理器可执行软件模块中,所述处理器可执行软件模块可以存在于有形的、非暂时性计算机可读存储介质、非暂时性服务器可读存储介质和/或非暂时性处理器可读存储介质上。在各种方面中,这样的指令可以是所存储的处理器可执行指令或者所存储的处理器可执行软件指令。有形的、非暂时性计算机可读存储介质可以是任何可以由计算机访问的可用介质。作为示例而非限制,这样的非暂时性计算机可读介质可以包括:RAM、ROM、EEPROM、CD-ROM或者其它光盘存储器、磁盘存储器或者其它磁存储器设备,或者任何其它可以被用于以可以由计算机来访问的指令或者数据结构的形式存储期望的程序代码的介质。如本文所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光光学地复制数据。上述的组合也应当被包括在非暂时性计算机可读介质的范围内。额外地,方法或者算法的操作可以作为可以并入计算机程序产品的有形的、非暂时性处理器可读存储介质和/或计算机可读介质上的代码和/或指令中的一项或者任意组合或者集合而存在。
为了使本领域的任何技术人员能够制作或者使用本发明,提供了对所公开的方面的之前描述。对这些方面的各种修改对于本领域的技术人员来说将是显而易见的,并且本文所定义的一般原理可以被应用到其它方面,而不会脱离本发明的精神或者范围。因此,本发明将不旨在限于本文所示的方面,而是要符合与随后的权利要求书和本文所公开的原理和新颖性特征一致的最宽范围。

Claims (28)

1.一种用于使用物理地址输入执行反向转换后备缓冲器(TLB)查找的方法,包括:
利用第一处理器获得所述物理地址输入,其中,所述物理地址输入指示对应于共享存储器的物理地址;
从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码是比特模式;
从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;
将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;
将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及
比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
2.根据权利要求1所述的方法,还包括:
响应于确定所述第一值和所述第二值不匹配而迭代地从所述TLB内的其它TLB条目获得第二掩码和第二页帧号;
迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值;以及
迭代地将所获得的第二掩码应用到所获得的物理地址输入以生成所述第二值,
其中,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配包括:迭代地比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
3.根据权利要求2所述的方法,其中,迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值包括:在不复制的情况下再使用来自系统页表中的条目的页帧号。
4.根据权利要求1所述的方法,还包括:响应于确定所述第一值和所述第二值匹配而清除所述第一TLB条目。
5.根据权利要求1所述的方法,还包括:向第二处理器发送指示TLB动作和所述物理地址的消息,其中,所述TLB动作包括TLB清除操作。
6.根据权利要求1所述的方法,还包括:响应于确定所述第一值和所述第二值匹配而返回所述第一TLB条目的索引。
7.根据权利要求6所述的方法,其中,利用第一处理器获得所述物理地址输入包括:从第二处理器接收包括TLB动作和所述物理地址的消息,
所述方法还包括:
响应于接收由所述第二处理器发送的所述消息而将活跃标记清零;
使用所返回的所述第一TLB条目的索引来执行在所接收的消息中所指示的所述TLB动作;以及
响应于执行所述TLB动作而设置所述活跃标记。
8.一种多核异构计算设备,包括:
用于利用第一处理器获得物理地址输入的单元,其中,所述物理地址输入指示对应于共享存储器的物理地址;
用于从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码的单元,其中,所获得的第一掩码是比特模式;
用于从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号的单元;
用于将所获得的第一掩码应用到所获得的第一页帧号以生成第一值的单元;
用于将所获得的第一掩码应用到所获得的物理地址输入以生成第二值的单元;以及
用于比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配的单元。
9.根据权利要求8所述的多核异构计算设备,还包括:
用于响应于确定所述第一值和所述第二值不匹配而迭代地从所述TLB内的其它TLB条目获得第二掩码和第二页帧号的单元;
用于迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值的单元;以及
用于迭代地将所获得的第二掩码应用到所获得的物理地址输入以生成所述第二值的单元,
其中,用于比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配的单元包括:用于迭代地比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配的单元。
10.根据权利要求9所述的多核异构计算设备,其中,用于迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值的单元包括:用于在不复制的情况下再使用来自系统页表中的条目的页帧号的单元。
11.根据权利要求8所述的多核异构计算设备,还包括:用于响应于确定所述第一值和所述第二值匹配而清除所述第一TLB条目的单元。
12.根据权利要求8所述的多核异构计算设备,还包括:用于向第二处理器发送指示TLB动作和所述物理地址的消息的单元,其中,所述TLB动作包括TLB清除操作。
13.根据权利要求8所述的多核异构计算设备,还包括:用于响应于确定所述第一值和所述第二值匹配而返回所述第一TLB条目的索引的单元。
14.根据权利要求13所述的多核异构计算设备,其中,用于利用第一处理器获得所述物理地址输入的单元包括:用于从第二处理器接收包括TLB动作和所述物理地址的消息的单元,
所述多核异构计算设备还包括:
用于响应于接收由所述第二处理器发送的所述消息而将活跃标记清零的单元;
用于使用所返回的所述第一TLB条目的索引来执行在所接收的消息中所指示的所述TLB动作的单元;以及
用于响应于执行所述TLB动作而设置所述活跃标记的单元。
15.一种多核异构计算设备,包括:
第一处理器;
第二处理器;以及
共享存储器,其中,所述第一处理器被配置为具有处理器可执行指令,以执行包括以下操作的操作:
利用所述第一处理器获得物理地址输入,其中,所述物理地址输入指示对应于所述共享存储器的物理地址;
从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码是比特模式;
从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;
将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;
将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及
比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
16.根据权利要求15所述的多核异构计算设备,其中,所述第一处理器被配置为具有处理器可执行指令,以执行还包括以下操作的操作:
响应于确定所述第一值和所述第二值不匹配而迭代地从所述TLB内的其它TLB条目获得第二掩码和第二页帧号;
迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值;以及
迭代地将所获得的第二掩码应用到所获得的物理地址输入以生成所述第二值,
其中,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配包括:迭代地比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
17.根据权利要求16所述的多核异构计算设备,其中,所述第一处理器被配置为具有处理器可执行指令以执行操作,以使得迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值包括:在不复制的情况下再使用来自系统页表中的条目的页帧号。
18.根据权利要求15所述的多核异构计算设备,其中,所述第一处理器被配置为具有处理器可执行指令,以执行还包括以下操作的操作:响应于确定所述第一值和所述第二值匹配而清除所述第一TLB条目。
19.根据权利要求15所述的多核异构计算设备,其中,所述第一处理器被配置为具有处理器可执行指令,以执行还包括以下操作的操作:向所述第二处理器发送指示TLB动作和所述物理地址的消息,其中,所述TLB动作包括TLB清除操作。
20.根据权利要求15所述的多核异构计算设备,其中,所述第一处理器被配置为具有处理器可执行指令,以执行还包括以下操作的操作:响应于确定所述第一值和所述第二值匹配而返回所述第一TLB条目的索引。
21.根据权利要求20所述的多核异构计算设备,其中,所述第一处理器被配置为具有处理器可执行指令以执行操作,以使得利用所述第一处理器获得所述物理地址输入包括:从所述第二处理器接收包括TLB动作和所述物理地址的消息,以及
其中,所述第一处理器被配置为具有处理器可执行指令,以执行还包括以下操作的操作:
响应于接收由所述第二处理器发送的所述消息而将活跃标记清零;
使用所返回的所述第一TLB条目的索引来执行在所接收的消息中所指示的所述TLB动作;以及
响应于执行所述TLB动作而设置所述活跃标记。
22.一种具有存储在其上的处理器可执行软件指令的非暂时性处理器可读存储介质,所述处理器可执行软件指令被配置为使第一处理器执行包括以下操作的操作:
利用所述第一处理器获得物理地址输入,其中,所述物理地址输入指示对应于共享存储器的物理地址;
从与所述第一处理器相关联的TLB内的第一TLB条目获得与第一虚拟地址相关联的第一掩码,其中,所获得的第一掩码是比特模式;
从所述第一TLB条目获得与所述共享存储器相关联的第一页帧号;
将所获得的第一掩码应用到所获得的第一页帧号以生成第一值;
将所获得的第一掩码应用到所获得的物理地址输入以生成第二值;以及
比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
23.根据权利要求22所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行还包括以下操作的操作:
响应于确定所述第一值和所述第二值不匹配而迭代地从所述TLB内的其它TLB条目获得第二掩码和第二页帧号;
迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值;以及
迭代地将所获得的第二掩码应用到所获得的物理地址输入以生成所述第二值,
其中,比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配包括:迭代地比较所述第一值和所述第二值以确定所述第一值和所述第二值是否匹配。
24.根据权利要求23所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行操作,以使得迭代地将所获得的第二掩码应用到所获得的第二页帧号以生成所述第一值包括:在不复制的情况下再使用来自系统页表中的条目的页帧号。
25.根据权利要求22所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行还包括以下操作的操作:响应于确定所述第一值和所述第二值匹配而清除所述第一TLB条目。
26.根据权利要求22所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行还包括以下操作的操作:向第二处理器发送指示TLB动作和所述物理地址的消息,其中,所述TLB动作包括TLB清除操作。
27.根据权利要求22所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行还包括以下操作的操作:响应于确定所述第一值和所述第二值匹配而返回所述第一TLB条目的索引。
28.根据权利要求27所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行操作,以使得利用所述第一处理器获得所述物理地址输入包括:从第二处理器接收包括TLB动作和所述物理地址的消息,以及
其中,所存储的处理器可执行软件指令被配置为使所述第一处理器执行还包括以下操作的操作:
响应于接收由所述第二处理器发送的所述消息而将活跃标记清零;
使用所返回的所述第一TLB条目的索引来执行在所接收的消息中所指示的所述TLB动作;以及
响应于执行所述TLB动作而设置所述活跃标记。
CN201480054508.8A 2013-10-04 2014-09-19 多核异构系统转换后备缓冲器相干性 Active CN105637492B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/046,341 2013-10-04
US14/046,341 US9411745B2 (en) 2013-10-04 2013-10-04 Multi-core heterogeneous system translation lookaside buffer coherency
PCT/US2014/056664 WO2015050726A1 (en) 2013-10-04 2014-09-19 Multi-core heterogeneous system translation lookaside buffer coherency

Publications (2)

Publication Number Publication Date
CN105637492A true CN105637492A (zh) 2016-06-01
CN105637492B CN105637492B (zh) 2018-04-20

Family

ID=51703398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480054508.8A Active CN105637492B (zh) 2013-10-04 2014-09-19 多核异构系统转换后备缓冲器相干性

Country Status (6)

Country Link
US (1) US9411745B2 (zh)
EP (1) EP3053045A1 (zh)
JP (1) JP6066250B2 (zh)
KR (1) KR101750669B1 (zh)
CN (1) CN105637492B (zh)
WO (1) WO2015050726A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825665A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 数据获取单元和应用于控制器的数据获取方法
CN113612863A (zh) * 2021-07-12 2021-11-05 武汉理工大学 一种gpu中地址转换优化方法、系统、设备及存储介质

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US10534686B2 (en) * 2014-01-30 2020-01-14 Micron Technology, Inc. Apparatuses and methods for address detection
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) * 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US20160041603A1 (en) * 2014-07-16 2016-02-11 New Concepts Development Corp. Power Management Apparatus, Systems, and Methods for Increased Power Loads
EP3764678B1 (en) 2014-09-17 2023-11-01 Simless, Inc. Apparatus for implementing a trusted subscription management platform
US10516990B2 (en) 2014-09-17 2019-12-24 Simless, Inc. Apparatuses, methods and systems for implementing a trusted subscription management platform
US11172352B2 (en) 2014-09-17 2021-11-09 Gigsky, Inc. Apparatuses, methods, and systems for configuring a trusted java card virtual machine using biometric information
US11606685B2 (en) 2014-09-17 2023-03-14 Gigsky, Inc. Apparatuses, methods and systems for implementing a trusted subscription management platform
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US9665505B2 (en) 2014-11-14 2017-05-30 Cavium, Inc. Managing buffered communication between sockets
US9916255B2 (en) * 2014-12-11 2018-03-13 Empire Technology Development Llc Data storage based on memory persistency
US9678872B2 (en) * 2015-01-16 2017-06-13 Oracle International Corporation Memory paging for processors using physical addresses
WO2016185293A1 (en) * 2015-05-16 2016-11-24 Simless, Inc. Apparatuses, methods and systems for virtualizing a reprogrammable universal integrated circuit chip
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US10007619B2 (en) 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
KR102026877B1 (ko) * 2015-06-16 2019-09-30 한국전자통신연구원 메모리 관리 유닛 및 그 동작 방법
US20170149166A1 (en) * 2015-11-25 2017-05-25 GM Global Technology Operations LLC Electrical connector assembly
US9772874B2 (en) * 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
US10386904B2 (en) * 2016-03-31 2019-08-20 Qualcomm Incorporated Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks
US9779028B1 (en) 2016-04-01 2017-10-03 Cavium, Inc. Managing translation invalidation
US9910799B2 (en) 2016-04-04 2018-03-06 Qualcomm Incorporated Interconnect distributed virtual memory (DVM) message preemptive responding
US11843597B2 (en) * 2016-05-18 2023-12-12 Vercrio, Inc. Automated scalable identity-proofing and authentication process
EP3255550B1 (en) * 2016-06-08 2019-04-03 Google LLC Tlb shootdowns for low overhead
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
US10482031B1 (en) * 2016-08-25 2019-11-19 Cadence Design Systems, Inc. Method and system for reconstructing virtual address from physical memory
US10353767B2 (en) * 2017-09-14 2019-07-16 Bae Systems Controls Inc. Use of multicore processor to mitigate common mode computing faults
US10725932B2 (en) 2017-11-29 2020-07-28 Qualcomm Incorporated Optimizing headless virtual machine memory management with global translation lookaside buffer shootdown
CN108874729B (zh) * 2018-04-19 2022-04-01 北京中科睿芯科技集团有限公司 芯片互联多应用有效映射方法、系统及内容寻址存储器
JP6810098B2 (ja) * 2018-05-24 2021-01-06 日本電信電話株式会社 統計データ処理装置、統計データ処理方法及びコンピュータプログラム
US10552339B2 (en) * 2018-06-12 2020-02-04 Advanced Micro Devices, Inc. Dynamically adapting mechanism for translation lookaside buffer shootdowns
US10846239B2 (en) * 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size
US10725928B1 (en) * 2019-01-09 2020-07-28 Apple Inc. Translation lookaside buffer invalidation by range
US10997019B1 (en) * 2019-10-31 2021-05-04 Alibaba Group Holding Limited System and method for facilitating high-capacity system memory adaptive to high-error-rate and low-endurance media
US11816037B2 (en) * 2019-12-12 2023-11-14 Advanced Micro Devices, Inc. Enhanced page information co-processor
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493812B1 (en) * 1999-12-17 2002-12-10 Hewlett-Packard Company Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
CN1524228A (zh) * 2001-04-24 2004-08-25 先进微装置公司 使用共享内存施行虚拟记忆的多元处理系统以及维持分页记忆整合性的记忆页更换方法
CN101770429A (zh) * 2008-12-30 2010-07-07 英特尔公司 用于在硬件中保存有损失的元数据的元物理地址空间
US20100228944A1 (en) * 2009-03-04 2010-09-09 Qualcomm Incorporated Apparatus and Method to Translate Virtual Addresses to Physical Addresses in a Base Plus Offset Addressing Mode
CN101946232A (zh) * 2008-03-17 2011-01-12 飞思卡尔半导体公司 基于地址的条件调试指令的认定
CN102622329A (zh) * 2011-02-11 2012-08-01 微软公司 多核计算机中的远程核操作

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0336648A (ja) * 1989-07-03 1991-02-18 Hitachi Ltd 電子計算機及びtlb装置とマイクロプロセッサチップ
JPH0383150A (ja) * 1989-08-28 1991-04-09 Fujitsu Ltd アドレス変換機構付キャッシュ装置の制御方式
JP2833062B2 (ja) * 1989-10-30 1998-12-09 株式会社日立製作所 キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置
US7069389B2 (en) 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US20070005932A1 (en) 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
US8156309B2 (en) 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
US20120137079A1 (en) 2010-11-26 2012-05-31 International Business Machines Corporation Cache coherency control method, system, and program
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493812B1 (en) * 1999-12-17 2002-12-10 Hewlett-Packard Company Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
CN1524228A (zh) * 2001-04-24 2004-08-25 先进微装置公司 使用共享内存施行虚拟记忆的多元处理系统以及维持分页记忆整合性的记忆页更换方法
CN101946232A (zh) * 2008-03-17 2011-01-12 飞思卡尔半导体公司 基于地址的条件调试指令的认定
CN101770429A (zh) * 2008-12-30 2010-07-07 英特尔公司 用于在硬件中保存有损失的元数据的元物理地址空间
US20100228944A1 (en) * 2009-03-04 2010-09-09 Qualcomm Incorporated Apparatus and Method to Translate Virtual Addresses to Physical Addresses in a Base Plus Offset Addressing Mode
CN102622329A (zh) * 2011-02-11 2012-08-01 微软公司 多核计算机中的远程核操作

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825665A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 数据获取单元和应用于控制器的数据获取方法
CN110825665B (zh) * 2018-08-10 2021-11-05 昆仑芯(北京)科技有限公司 数据获取单元和应用于控制器的数据获取方法
CN113612863A (zh) * 2021-07-12 2021-11-05 武汉理工大学 一种gpu中地址转换优化方法、系统、设备及存储介质

Also Published As

Publication number Publication date
EP3053045A1 (en) 2016-08-10
KR101750669B1 (ko) 2017-07-03
WO2015050726A1 (en) 2015-04-09
JP6066250B2 (ja) 2017-01-25
US20150100753A1 (en) 2015-04-09
KR20160065873A (ko) 2016-06-09
US9411745B2 (en) 2016-08-09
CN105637492B (zh) 2018-04-20
JP2016535883A (ja) 2016-11-17

Similar Documents

Publication Publication Date Title
CN105637492A (zh) 多核异构系统转换后备缓冲器相干性
US9785571B2 (en) Methods and systems for memory de-duplication
US10860323B2 (en) Method and apparatus for processing instructions using processing-in-memory
US9218286B2 (en) System cache with partial write valid states
CN104981815B (zh) 用于用安全属性限制cpu事务的方法、装置和系统
US10176099B2 (en) Using data pattern to mark cache lines as invalid
US9405703B2 (en) Translation lookaside buffer
CN107636625A (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
US9244837B2 (en) Zero cycle clock invalidate operation
CN107038123A (zh) 用于数据处理系统中的缓存一致性的探听过滤器
US20140075125A1 (en) System cache with cache hint control
US9218040B2 (en) System cache with coarse grain power management
CN106537361A (zh) 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置
WO2015075673A4 (en) Systems and methods for reducing first level cache energy by eliminating cache address tags
US9262318B1 (en) Serial flash XIP with caching mechanism for fast program execution in embedded systems
CN110312994A (zh) 使用指令地址映射绕过加载指令的存储器访问
US20170206035A1 (en) Random-Access Disjoint Concurrent Sparse Writes to Heterogeneous Buffers
US9003130B2 (en) Multi-core processing device with invalidation cache tags and methods
US9311251B2 (en) System cache with sticky allocation
CN103645996A (zh) 内存拷贝的方法、装置和片上系统
EP2901287B1 (en) System cache with sticky removal engine
US10073620B2 (en) Memory management
US9292442B2 (en) Methods and apparatus for improving performance of semaphore management sequences across a coherent bus
CN108885569A (zh) 识别增强型同步操作结果以改善运行时操作
CN105183668B (zh) 缓存刷新方法及装置

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