CN107077384A - 上下文敏感的屏障指令的执行 - Google Patents

上下文敏感的屏障指令的执行 Download PDF

Info

Publication number
CN107077384A
CN107077384A CN201580060525.7A CN201580060525A CN107077384A CN 107077384 A CN107077384 A CN 107077384A CN 201580060525 A CN201580060525 A CN 201580060525A CN 107077384 A CN107077384 A CN 107077384A
Authority
CN
China
Prior art keywords
context
access
data processing
equipment
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.)
Granted
Application number
CN201580060525.7A
Other languages
English (en)
Other versions
CN107077384B (zh
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines 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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN107077384A publication Critical patent/CN107077384A/zh
Application granted granted Critical
Publication of CN107077384B publication Critical patent/CN107077384B/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/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

提供了用于数据处理的设备以及用于数据处理的方法,根据该设备和方法,该设备的处理电路可以访问存储器系统并且在其支持的多个上下文中的一个上下文中执行数据处理指令。当处理电路执行屏障指令时,产生的访问顺序约束可以被限制为强制执行于由处理电路在被识别的上下文中操作时所初始化的访问,被识别的上下文例如可以是在其中执行屏障指令的上下文。这提供了处理电路在它的多个可能的上下文中的操作间的隔离,特别是避免了访问顺序约束完成的延迟(例如与访问存储器的高延迟区域相关)影响其它上下文的时间敏感度。

Description

上下文敏感的屏障指令的执行
技术领域
本公开涉及数据处理。更具体地,涉及数据屏障指令在处理设备中的使用。
背景技术
已知执行数据处理指令以执行或委托数据处理操作的数据处理设备被布置为响应屏障指令。屏障指令使数据处理设备确保特定访问顺序约束被强制执行,也就是说,屏障指令确保在数据处理设备执行数据处理指令序列中的、在屏障指令后面的指令之前,(数据处理设备执行的)数据处理指令序列中的在屏障指令前面的指令完成(即,可确保在所访问的存储器系统内生效)。例如,这可以用于确保当数据处理设备遇到屏障指令时,存储器系统的上下文是最新的并且与数据处理设备当前的处理状态相一致。
本公开涉及对数据处理设备在遇到此类屏障指令时如何响应的改进。
发明内容
从第一方面来看,提供了一种用于数据处理的设备,该设备包括:处理电路,该处理电路执行数据处理指令以执行数据处理操作,其中,数据处理操作包括访问存储器系统,并且其中,处理电路能够在多个上下文中执行数据处理指令;以及存储器系统交互电路,该存储器系统交互电路提供处理电路和存储器系统间的接口;其中,存储器系统交互电路能够响应于所述处理电路在所述多个上下文中的当前上下文中执行屏障指令而强制执行访问顺序约束,并且其中,存储器系统交互电路能够将访问顺序约束的强制执行限制于由处理电路在被识别的上下文中操作时所初始化的访问
从第二方面来看,提供了一种用于数据处理之方法,该方法包括以下步骤:执行数据处理指令以执行数据处理操作,其中,数据处理操作包括访问存储器系统,并且其中,数据处理指令能够在多个上下文中的当前上下文中被执行;响应于在多个上下文中的当前上下文中执行屏障指令,强制执行访问顺序约束;以及将访问顺序约束的强制执行限制于当在被识别的上下文中执行数据处理指令时所初始化的访问。
从第三方面来看,提供了一种用于数据处理的设备,该设备包括:用于执行数据处理指令以执行数据处理操作的装置,其中,数据处理操作包括访问存储器系统,并且其中,数据处理指令能够在多个上下文中的当前上下文中被执行;用于提供处理电路和所述存储器系统之间的接口的装置,其中,用于提供接口的装置能够响应于用于执行数据处理指令的装置在多个上下文中的当前上下文中执行屏障指令而强制执行访问顺序约束,并且其中,用于执行数据处理指令的装置能够将访问顺序约束的强制执行限制于由处理电路在被识别的上下文中操作时所初始化的访问。
附图说明
将仅通过举例的方式参考如附图所示的实施例来进一步地描述本发明,其中:
图1在一个实施例中示意性示出数据处理系统,该数据处理系统包括两个数据处理设备及一存储器系统;
图2在一个实施例中示意性示出在一个或多个数据处理设备(如图1所示的那些)上运行的虚拟操作环境的结构;
图3A在一个实施例中更详细地示意性示出图1的数据处理系统的一些组件;
图3B在一个实施例中示出屏障指令;
图4在一个实施例中更详细地示意性示出图3A的每个数据处理设备内的每个存储缓冲器的配置;
图5在一个实施例中示出由诸如图4中所示的那种存储缓冲器的存储缓冲器所执行的一系列步骤;以及
图6A及6B在一个实施例中分别给出可由处理电路执行的示例性指令序列。
具体实施方式
本技术识别数据处理设备的处理电路何处能在不止一个上下文中执行数据处理指令(即,具有允许该处理电路在不止一个上下文中执行数据处理指令的配置),这对于修改其中数据处理装置根据上下文来对屏障指令进行响应的方式是有益的,其中处理电路在该上下文中执行数据处理指令。此处,“上下文”应根据以数据处理设备本身的组件还有其中发现该数据处理设备的数据处理系统(例如,还包括数据处理设备被连接至的存储器系统)的整体的明显完整及自我一致的检视而提供的数据处理装置的组件,而被理解为其中数据处理设备可以在其中运行操作环境。词语“明显”在此处用于指示,例如,当在特定上下文中操作时,与数据处理设备交互的存储器系统事实上可包括较宽范围的地址位置(相较于数据处理设备的处理电路所能看见的范围而言),但在该特定上下文中操作的处理电路并不知道存储器系统中存在的其它无法访问的存储器位置。屏障指令例如可以是存储器屏障指令或者例如可以是同步屏障,该同步屏障不仅同步存储器访问且还同步其它相关操作(如一致操作)。例如,分支预测器或TLB维护操作将产生DVM消息,并且同步屏障还将同步这些访问。
根据本技术,当数据处理设备的处理电路遇到屏障指令时,数据处理设备可通过将访问顺序约束的强制执行限制于处理电路在被识别的上下文(例如,当前上下文)中操作时所初始化的访问(即,先前在与处理电路当前在其中操作并且遭遇到屏障指令的上下文相同的上下文中所初始化的访问)来进行响应。换句话说,访问顺序约束的强制执行可以被限制于由处理电路在被识别的上下文中操作时所初始化的访问。访问可采用各种各样的形式,并且这些访问例如可为存储器访问(如存储或加载),并且例如还可以是一致操作或缓存(数据或指令)维护操作。
这具有进一步减少下述影响的优势:数据处理设备中的多个可能的上下文的存在在处理电路正在这些多个上下文中的给定上下文中执行数据处理指令时对数据处理设备的操作的影响。例如,此技术可以是特别有益的一个情形是:当数据处理设备被要求执行它的数据处理指令并且以非常小的延迟对外部信号进行响应(“例如,实时上下文”)并且被布置为在另一上下文(在该上下文中,该数据处理设备的数据处理指令的执行的完成以及对外部信号进行响应的一些延迟是可接受的(“非实时上下文”))中操作时,数据处理设备中所提供的一个上下文被用于处理电路的操作。通过布置数据处理设备,使得处理电路在给定上下文中遇到屏障指令时被执行的访问顺序约束被强制执行,以用于由处理电路在该特定上下文中操作时已经被初始化的访问;由于不会通过等待访问(这些访问已由在不同上下文(该不同上下文不具有此类严格的时间限制)中操作的处理电路初始化)完成(以便于遵守访问顺序约束)来减缓在此上下文中所操作的处理电路的操作,从而更好地保护对延迟敏感的上下文(实时上下文)的时间限制,并且因而该处理电路的操作可以包含可能潜在地涉及较大延迟(相较于“实时”上下文可接受的延迟而言)的访问;例如,到已知的具有相对长的响应延迟的外部存储器的访问。
在一个实施例中,被识别的上下文为当前上下文。当前上下文可被传输至以各种方式强制执行访问顺序约束的组件。
在一个实施例中,在屏障指令中具体指定被识别的上下文。这给程序员(和/或管理程序)在任意时刻强制执行用于经选择的上下文的访问顺序约束带来灵活性。
在一个实施例中,在处理电路可访问的存储装置中具体指定被识别的上下文。例如,被识别的上下文的指示可存储于寄存器中(虽然还可使用任何其它合适的存储装置)。
在一个实施例中,设备能够提供多个虚拟机中的当前虚拟机在其中操作的虚拟操作环境,其中处理电路能够通过与当前虚拟机的交互来执行数据处理指令,并且其中当前上下文与当前虚拟机相对应。因此,虚拟操作环境提供了数据处理设备的处理电路可在不止一个上下文中操作(即,执行数据处理指令)的方式。当给定的虚拟机的操作是针对数据处理设备的操作的当前上下文时,此虚拟机(通常包括特定的访客操作系统和在该访客操作系统上运行的一组应用)与数据处理设备的硬件(即,特别是在当前上下文中的处理电路和存储器系统交互电路)交互。本发明技术因而为每个虚拟机提供时间限制保护(特别是具有低延迟时间限制的虚拟机)。
在一些实施例中,设备还包括用于存储虚拟机标识符的虚拟机标识符存储装置,其中该设备能更新虚拟机标识符以指示当前虚拟机。例如可通过数据处理设备的处理电路中的寄存器来提供虚拟机标识符存储(虽然还可用任何其它合适的标识符存储的形式来提供);并且从而向数据处理设备提供针对设备的组件的易用及可靠的参考以确定当前虚拟机。
在一些实施例中,存储器系统交互电路包括存储缓冲器以缓冲未决访问,并且该存储缓冲器能利用指示从中发布未决访问的上下文的标识符来标记每个未决访问。缓冲未决访问的存储缓冲器的提供使得现存电路能够委托对访问的管理(通常在访问完成前至少具有小的延迟),而处理电路继续其它数据处理指令的执行。对存储缓冲器所缓冲的每个未决访问的标记指示从中发布该未决访问的上下文。应该要注意到的是,尽管名称是存储缓冲器,但存储缓冲器不仅处理“存储”访问,例如还处理诸如一致操作的其它访问。
这使得存储缓冲器能够分辨数据处理电路针对数据处理电路能在其中操作的每个上下文所初始化的未决访问。
在一些实施例中,存储缓冲器能够将访问顺序约束的强制执行限制于指示符所标记的未决访问,该指示符指示匹配当前上下文的、从中发布未决访问的上下文。这使得存储缓冲器能够在访问顺序约束将要被强制执行时(在处理电路执行屏障指令时),确定处理电路在当前上下文(以及因此应该对其执行访问顺序约束的上下文)中操作时已经初始化的那些访问以及处理电路在不同的上下文(以及因此可能不希望对其执行访问顺序约束的上下文)中操作时所初始化的那些访问。
在一些实施例中,存储器系统交互电路还包括一致单元,并且存储缓冲器能够经由一致单元来与存储器系统交互。经由一致单元与存储器系统的交互使能访问存储器系统的数据处理设备和也访问相同存储器系统的其它数据处理设备间的一致、以及各个存储器阶层的存储设备之间的一致,并且其中存储缓冲器经由一致单元与存储器系统交互,可通过选择性过滤存储缓冲器发送至一致单元的消息来提供对选择的访问顺序约束的实施方式(取决于上下文)。一致单元例如可以是窥探控制单元(snoop control unit)。
在一些实施例中,存储缓冲器包括具有多个存储位置的上下文追踪存储装置,并且其中如果当前上下文具有由于最后对当前上下文强制执行访问顺序约束而被初始化的访问,则该存储缓冲器能在多个存储位置中的一个中存储针对当前上下文的条目。供应此上下文追踪存储装置因而提供具有能轻易确定是否需要在当前上下文中完全强制执行访问顺序约束的能力的存储缓冲器。
在一些实施例中,存储缓冲器能够在与选择的条目相对应的访问顺序约束已被强制执行时清除上下文追踪存储装置中的所选择条目。因此,一旦已针对给定上下文强制执行了访问顺序约束,则在该点处清除上下文追踪存储装置中相对应的条目,确保当在该上下文中执行进一步的屏障指令时,存储缓冲器可轻易认识到不需要针对受制于先前屏障指令所产生的行动的那些先前访问执行访问顺序约束。
在一些实施例中,如果上下文追踪存储装置中的所有多个存储位置皆被占据并且存储缓冲器中不具有用于当前上下文的被占据的条目,则存储缓冲器能够强制执行针对由除了具有相应的牺牲条目的当前上下文外的牺牲上下文所初始化的未决访问的隐含的访问顺序约束,并且清除针对所选择的上下文的牺牲条目,其中隐含的访问顺序约束不需处理电路执行相应的屏障指令。虽然存储缓冲器可具有针对所有可能的上下文(处理电路在其中可执行数据处理指令)有充足的存储位置的上下文追踪存储装置,但可能会有一种情况:数据处理设备所支持的上下文数目超过了期望在上下文追踪存储装置中提供的存储位置的数目。换句话说,为了维持存储缓冲器的大小尽可能地小,可能希望将上下文追踪存储装置中的存储位置的数目限制在相对小的数目。在此情况中认为存储缓冲器可不具有针对当前上下文的被占据的条目,并且该存储缓冲器可不具有可立即被用于当前上下文的可用的条目。在此情况中,当针对当前上下文而需要条目时,存储缓冲器之后可强迫执行隐含的访问顺序约束(就“隐含的”意义而言,并不是由执行屏障指令的处理电路所指示的,而是由存储缓冲器本身初始化以便于释放其上下文追踪存储装置中的条目)。存储缓冲器选择的除了当前上下文外的一个或多个牺牲上下文受制于此类隐含的访问顺序约束,以便于在上下文追踪存储装置中释放一个或多个条目。
在一些实施例中,存储缓冲器能够存储与上下文追踪存储装置中的每个条目相关的至少一个指示,该至少一个指示指示由于访问顺序约束被最后强制执行于那个上下文而初始化的访问是否包括至少一种类型的访问。这使得存储缓冲器能够在可由处理电路在给定上下文中所初始化的不同类型的访问之间进行区分,不同类型的访问可能关于访问顺序约束的强制执行具有不同的要求。
在一些实施例中,设备能够在当前上下文由于用于当前上下文的访问顺序约束被最后执行而已经执行相应类型的访问指令时,将访问顺序约束的强制执行限制于对所选类型的未决访问,其中所选类型的未决访问是由当前上下文执行相应类型的访问指令而被初始化的。换句话说,只有当前上下文已因用于当前上下文的访问顺序约束最后地被执行而执行相应类型的访问指令,设备才能对由当前上下文执行相应类型的访问指令所初始化的所选类型的未决访问强制执行访问顺序约束。因此,设备因而能在由处理电路执行相应的不同类型的访问指令所初始化的不同类型的访问之间做出区分,并且使访问顺序约束的强制执行进一步依赖于访问的类型。这是因为本技术认可不同类型的访问可稍微彼此独立,并且针对一种类型的访问指令的访问顺序约束的强制执行事实上可能不需将由不同类型的访问指令所初始化的未决访问卷入访问顺序约束的强制执行中。
在一些实施例中,所选的未决访问类型是存储操作。根据数据处理系统中的存储操作所期望的延迟,存储操作可代表(存储器)访问类型,由于此类存储访问可能具有与它们相关的显著延迟,因此仅对由当前上下文所初始化的存储操作强制执行访问顺序约束是有益的。
在一些实施例中,存储器系统交互电路能够在存储操作是针对所选择的存储器区域时,限制访问顺序约束的强制执行。由此,只有在存储操作是到所选择的存储器区域时,内存交互电路才强制执行访问顺序约束。虽然所选择的访问类型可以是所有的存储操作,但本技术认识到可以是存储器系统的具有相关高延迟的特定组件(并且存储器系统的其它部分可具有可接收的低延迟);因此存储器系统交互电路可通过与其相关联的所选存储器区域(例如,存储器地址的范围)来识别到存储器的较高延迟部分的访问。这还可以通过访问数据处理系统中的(一个或多个)特定端口的存储的标识来识别,已知该(一个或多个)端口提供到存储器系统的高延迟组件的访问。
在一些实施例中,所选择的未决访问类型是一致操作。例如,一致操作可包括缓存维护操作、转译后备缓冲区(TLB)维护操作及分支预测器维护操作等。本技术认可此类一致操作可涉及相对高的完成延迟以及因此特别有利于本技术的访问类型。
图1在一个实施例中示意性地示出数据处理系统10,该数据处理系统10包括两个中央处理单元(CPU)12、14。每个CPU包括相应的处理器16、18,处理器16、18执行一系列的数据处理指令以执行或初始化数据处理系统10内的数据处理操作;并且每个CPU还包括相应的一组寄存器20、22,在寄存器20、22中存储处理器16、18在它们的数据处理操作中所使用的值。每个CPU 12、14具有紧密相关联的1级(L1)存储器系统(缓存),该存储器系统能用本领域的相关技术人员所熟知的方式存储(即,具有能让该存储器系统进行存储的配置)从数据处理系统10的存储器系统的剩余部分所得到的数据项的临时复本,以便于减少针对这些数据项的访问延迟。在这组缓存和存储器的分级配置中,每个数据处理设备12、14各自的L1存储器24、26再次利用本领域的相关技术人员所熟悉的方式与2级(L2)存储器28交互,并且该2级存储器28经由系统总线30与外部存储器32交互。
图2示意性地图示说明图1所示的数据处理系统10的一个特征:即,数据处理系统10的处理设备12和14支持虚拟操作环境。这些虚拟操作环境可以在图2中示意性示出的分级方式中查看,其中被提供来维护虚拟化的总体控制的管理程序34在图中所示的最高特权等级处操作,该最高特权等级称为“例外级数2(EL2)”或“特权等级2(PL2)”。还可提供更进一步的更高的特权等级(EL3),例如,安全监控器在其中操作的特权等级。管理程序操作于最高的不安全特权等级及管理虚拟化的特权等级处。管理过程控制几个虚拟机中当前在数据处理设备中操作的虚拟机。为清楚说明的目的,图2仅示出两个虚拟机36和38,但应该要了解的是,数据处理设备可以被配置为支持更多虚拟机。在图2中分别通过操作系统(OS140和OS2 42)以及分别通过在该操作系统控制下执行的应用程序44和46以及48和50来表示各个虚拟机。再次地,为清楚说明的目的,仅在每个虚拟机内示出了两个应用程序,但事实上每个虚拟机能够运行更多应用程序。访客操作系统40和42通常操作于特权的中间特权级别(EL1/PL1),而应用程序通常操作于最低特权级别(EL0/PL0)。每个可在数据处理设备上运行的虚拟机因此代表数据处理设备(特别是数据处理设备的处理器(处理电路))在其中可操作的不同上下文。注意到可仅通过一个数据处理设备托管虚拟机或这些虚拟机可跨越多个数据处理设备分布,这取决于对每个虚拟机而言适合可用的处理资源。提供的实时虚拟机更可能被限制在仅一个数据处理设备中,而非实时虚拟机可被配置为跨越多个数据处理设备分布。
图3A更详细地示意性示出图1中示出的数据处理设备12和14的配置及数据处理系统10的一些另外的组件。每个数据处理设备12和14包括数据处理单元(执行单元/处理电路)52、54,这些数据处理单元执行数据处理指令以执行或初始化数据处理操作。其中数据处理指令/操作包括访问存储器系统,每个DPU 52、54通过与各自的加载及存储单元(LSU)60、62和存储缓冲器(STB)56、58的交互做此事。如参考图2所讨论地,每个数据处理设备12、14操作于当前上下文中(即,在允许操作所选择的虚拟机的管理程序34的控制下),并且各个DPU 52、54将值存储在寄存器VSCTLR.VMID 80、82中,这些寄存器充当虚拟机标识符并且指示在各个数据处理设备上所执行的当前虚拟机。每个数据处理设备的LSU及STB可与各种存储器系统存储组件交互,这些存储组件可特别地具有与这些存储组件相关联的相当不同的访问延迟。例如,分别将到紧密耦合的存储器(TCM)68、70的访问提供给每个数据处理设备12、14,这些TCM中每个都具有低的访问延迟。类似地,数据处理设备12、14共享到也具有低访问延迟的低延迟RAM(LL RAM)76的访问。然而,也可使用LL RAM 76来存储页表78,针对这些页表,一些维持操作可具有与这些页表相关联的较长延迟。在常规的逐端口存储器顺序不足以避免对本发明技术所寻求避免的特定上下文的延迟的情况下,因本发明技术认识到与LL RAM中的那些页表直接或间接相关的任何一致操作应被视为是来自常规LL RAM加载和存储(低延迟访问)的不同类别的访问(即,高延迟)。
每个数据处理设备12、14也共享对一致单元的访问,该一致单元在本示例中体现为窥探控制单元(SCU)72,该窥探控制单元72形成L2存储器系统28的部分并且特别地提供对总线访问端口74的访问;在此实施例中,该总线访问端口74是如英国剑桥的ARM有限公司所提供的AXI主端口,并且SCU还维护集群中的所有核/处理元素之间的一致(也参见图1)。此AXI主端口74经由AXI系统总线30来提供对外部存储器32的访问,因此该AXI主端口74具有与该外部存储器32相关联的明显较高的访问延迟(相较于例如TCM 60、78或LL RAM 76而言)。每个数据处理设备的STB 56、58分别经由各自的本地总线接口单元(BIU)64、66与共享的SCU 72和共享的LL RAM 76交互。
图3B示意性示出示例屏障指令,屏障指令包括将该指令识别为屏障指令的至数据处理设备的操作码部分以及VMID使用部分,该VMID使用部分可具体指定屏障指令是否应被应用至当前VMID(例如,如VSCTLR.VMID寄存器的上下文所给定的)或可明确地具体指定应该应用于屏障指令的VMID值。应该应用屏障指令的VMID值可存储于寄存器中(参见图1中的20、22),而不是编码于屏障指令中。
图4更详细地示意性示出图3A所示的存储缓冲器56的配置。注意存储缓冲器58具有相似配置。以L1存储器中的当前VMID值(从VMID寄存器80获取到的、或在屏障指令中明确地具体指定的或是诸如寄存器之类的存储装置中的指示)来标记所有存储操作、缓存维护操作、TLB维护操作等等,并且通过STB 56。换句话说,从处理电路(DPU)52退出的(retired)相应指令和相关联的VMID指示由STB 56接收。这些指令及指示首先由控制单元90首次接收,该控制单元90管理存储缓冲器的整体控制。存储缓冲器56还包括多个存储缓冲插槽92,其中未决访问在被传递到存储器系统的其余部分前暂时存储于此。用虚拟机标识符的指示94来标记每个存储缓冲插槽,该指示94是结合相应的所退出的指令而被接收的并且该指示94设定此相应的未决访问。存储缓冲器还包括上下文追踪器96,该上下文追踪器96被存储缓冲器用来追踪哪个VMID(上下文)已(经由SCU 72)访问高延迟AXI主端口74、或哪个VMID(上下文)已执行D-缓存维护操作(标记为“SCU”)以及哪个VMID已发送分布式虚拟存储器(DVM)消息(标记为“DVM同步(DYM sync)”)。DVM消息例如可以关于I-缓存维护、分支预测器维护及TLB维护。DVM同步有效地是DVM消息,这些DVM消息强制执行顺序约束。此处,上下文追踪器仅具有可用于此存储的相对有限数量的条目(如图4所示的三个条目),这使得存储缓冲器56能够被提供来作为数据处理设备12的相对小的组件。控制单元90还具有对高延迟AXI主端口98的存储器寻址范围的指示的访问,使得该控制单元90可经由SCU 72至AXI主端口74识别退出的存储指令何时与访问相关,并且该控制单元90可访问一致指令的列表100(即,产生DVM消息的那些指令)。应该注意一些“一致的”存储器访问实际上可能没有访问AXI-M端口;例如,可以在不访问AXI-M端口的情况下,通过本地缓存访问、L2缓存访问或至另一核心的(一个或多个)缓存的窥探来满足至某一致的地址的存储(该地址在AXI-M地址范围中)。
图4所描述的配置在如下情况启用存储缓冲器:当屏障指令退出并且由控制单元90接收以将该屏障的应用程序限制于具有匹配的VMID的存储缓冲器插槽时,并且因此响应于屏障指令将访问顺序约束的强制执行限制于具有由DPU 52在相同上下文中操作时(即,以按VMID值所指示运行的相同的虚拟机)所初始化的存储缓冲插槽中的相应条目的未决访问。然而,应该注意到存储缓冲器还可对编码于屏障指令中的明确的VMID规格(例如,如上文关于图3B所述的)进行响应,以强制执行仅针对该VMID的访问顺序约束。此外,应注意到管理程序已访问“强”屏障,该强屏障可强制执行针对所有虚拟机(VMID/上下文)的顺序约束。还应注意到就对其它处理元素(核心)而言可见的意义来说,顺序约束不仅应用于目前未决的存储器访问,通常还应用于任何形式的可能尚未完成的访问。换句话说,在考虑此核心时访问可能已完成(因此不再为未决),但并非它所有的影响仍对其他观察者(例如,其他核心)可见。屏障需要强制执行此顺序约束而不论其(在STB中)是否仍为未决。
如果屏障指令所应用于的上下文(即,该屏障指令相关联的VMID指示)因已执行最后的DVM同步而已发送DVM消息,则上下文追踪器96的配置允许存储缓冲器在屏障指令退出时仅发送DVM同步消息至存储器系统的剩余部分。这是通过维护与DVM同步相关的上下文追踪器中的指示来完成的;这将关于图5进行更详细地描述。相似地,如果屏障所应用于的上下文(即,该屏障指令相关联的VMID指示)因已针对相关上下文(VMID)执行了最后的屏障操作而已经向SCU发送AXI主存储或缓存维持操作,则上下文追踪器96的这种配置允许存储缓冲器56仅传播屏障至SCU 72(以便于隔绝所有其它来自于CPU 12的突出的AXI主访问)。将参考图5、图6A及图6B来描述支持此事的上下文追踪器56的上下文的维护的更多细节。
图5在一个实施例中示出图4所示的存储缓冲器56所执行的步骤的序列。在此示例中,存储缓冲器使用当前的VMID/上下文(即,不是在屏障指令中具体指定的VMID)。可认为流程开始于步骤110处,其中指令退出(retire)且该指令由存储缓冲器56的控制单元90所接收。之后在步骤112处决定此指令是否为屏障指令。若否,则流程前进至步骤114,其中控制单元90参考相关的存储器地址范围98及一致指令的列表100决定指令是否为(经由SCU)至AXI主端口的存储、DVM一致指令或数据缓存维护操作。若否,则流程前进至步骤116,其中访问指令可被直接地传递到存储器系统的目标部分上或(若必要的话)该访问指令在多个STB缓冲插槽的缓冲插槽中待决直到可处理该访问指令止。当以此方式被存储于缓冲插槽92中的一个插槽时,相关的VMID指示还被存储在与该缓冲插槽相关联的为此目的提供的存储装置94中。流程回到步骤110。
然而,如果在步骤112处确定所退出的指令是屏障指令,则流程前进至步骤118,其中参考上下文追踪器96决定上下文追踪器是否具有带有当前VMID(上下文)指示的条目。若否,则流程前进至步骤120,其中存储缓冲器56强制执行用于当前上下文的此屏障指令的相应顺序约束;即,仅隔绝具有匹配的VMID的存储缓冲插槽。流程回到步骤110。
然而,在步骤118处,如果确定上下文追踪器具有以当前VMID标记的条目(关于此屏障指令已经接收该当前VMID的指示),则流程前进至步骤122,其中检查该条目是否指示相关于此条目而设定SCU标记,这指示此屏障指令所应用于的上下文(即,参考VMID指示)已经因为已经针对此上下文(VMID)执行了最后的屏障而向SCU发送了AXI主存储或其它缓冲维护操作(SCU访问)。如果SCU标记被设定,则流程前进至步骤124,且发送屏障至SCU;若否,则流程直接地跳至步骤126。在步骤126处,类似地确定具有相应VMID指示的上下文追踪器中的条目是否指示屏障所应用于的上下文(即,与此屏障指令相关联的被接收的VMID指示)已经因为针对此上下文执行了最后的DVM同步,而发送了DVM消息。如果没有设定DVM同步标记,则流程直接地跳至步骤130。然而,若设定了DVM同步标记,则流程经由步骤128前进,其中屏障指令导致针对所有未决DVM消息的DVM同步,后面是用于所有未决AXI主端口访问的数据同步屏障(DSB)。之后在步骤130处,还可隔绝任何具有匹配的VMID的存储缓冲插槽,一旦所有此类访问已耗尽,则立即清除具有匹配的VMID的上下文追踪器中的条目。流程回到步骤110。
回到步骤114进行考虑,如果确定所退出的指令是(经由SCU)至AXI主端口的存储或是DVM一致指令,则流程前进至步骤134,其中确定上下文追踪器是否具有用于当前上下文的条目(即,具有匹配的VMID)。如果有,或者如果在步骤136处确定在上下文追踪器中有自由条目,则流程前进至步骤138,其中该条目被选择来由当前上下文使用。之后,在步骤140处以当前VMID来标记条目并且在步骤142处设定相应的标志(marker),该标志指示指令的类型(即,是否表示SCU访问或是否是发送DVM消息的指令)。流程前进至步骤116,其中与此指令相关的访问被分配至存储缓冲器的以当前VMID值标记的缓冲插槽(若必要的话)。此后如先前一样,如先前一样,流程返回至步骤110。
然而,在步骤136处,如果目前在上下文追踪器96中没有可用的条目,则流程前进至步骤144,其中存储缓冲器针对具有上下文追踪器的条目的至少一个上下文执行隐含的屏障,其中应了解“隐含的(implicit)”反映了如下事实:该屏障不是通过存储缓冲器所接收到的所退出的屏障指令而被初始化的,而是通过存储缓冲器自身的协议被初始化;因此,在步骤146处,存储缓冲器等待以相关(一个或多个)上下文标记(即具有(一个或多个)匹配的VMID)的所有未决访问耗尽,并且等待存储缓冲器当前处理的所退出的指令退出)。此后,在步骤148处,清除上下文追踪器中的一个或多个相应条目,并且流程经由如上文所述的步骤138前进。
图6A及6B分别给出了数据处理指令的示例序列,还示出这些指令在其中被执行的上下文,以更进一步地图示说明存储缓冲器的操作。参考图6A,在上下文A内执行的存储(STR)-指令1-被存储缓冲器识别为与长延迟地址相关(例如,经由SCU至AXI主端口);因此在上下文追踪器中制作针对该上下文的具有SCU访问标志集合的条目。在指令2(也是至所识别的长延迟地址的存储)退出后,存储缓冲器将上下文D添加至上下文追踪器的条目,该条目标记有SCU访问指示。指令3是至低延迟地址的存储,因此不在上下文追踪器中制作针对上下文B的条目。当指令4(数据同步屏障(DSB))退出时,由于该上下文在上下文追踪器中不具有相应条目,所以存储缓冲器不将屏障传播至SCU,并因此避免等待任何(用于其它上下文的)当前正传播的AXI主端口存储,而必须只能等待(经由相应的低延迟端口)至存储器的低延迟部分的存储。当指令5(至长延迟地址的存储;即,经由SCU至AXI主端口)退出时,如果存储缓冲器的上下文追踪器具有三个或更多个可用条目(如图4中给定的范例实施例),则在上下文追踪器中制作针对上下文C的条目(以相应的VMID及SCU访问进行标记)。然后由于针对该上下文的条目已经在上下文追踪器中被制作并且已经设立了SCU标志(指示这是“高延迟上下文”),指令6(DSB)将必须在它能退出前等待所有较早的AXI主端口访问完成。然而,如果存储缓冲器的上下文追踪器仅具有两个可能条目,则在图6A所示的指令序列中的该点处,将不会有可用于上下文C的条目(因该两个条目已被上下文A和上下文D占据了),并且存储缓冲器因而插入针对(正占据上下文追踪器的条目的)高延迟上下文A和D中的至少一者的隐含屏障,并且之后等待被此隐含屏障所影响的所有访问耗尽。一旦所有这些访问已耗尽,则上下文追踪器中的一个(或两个)条目立即将为空的,并且上下文C所需的条目可以被添加至追踪列表(当存储(指令5)退出时)。存储会被阻止为此退出。之后,DSB(指令6)将等待所有AXI主访问(高延迟访问),其中这些AXI主访问在图6A所示的这个示例指令序列中的该点处只应该是指令5存储,因为所有较早的访问应该已由所插入的隐含DSB所隔绝。
现在考虑图6B所示的示例指令序列,在指令1(TLB维护操作)退出后,存储缓冲器新增条目至上下文追踪器,以指示上下文A已执行DVM操作(并且因而此处应被归类为“非实时”上下文)。指令2被识别为瞄准低延迟地址(即,不经由SCU至AXI主端口),因此不在上下文追踪器中制作相应条目。当指令3(DSB)退出时,指令3将不需要等待任何未决的AXI主端口存储(因这些存储只能应用于其它上下文),并且指令3只需等待(经由被标识的低延迟端口)至低延迟内存地址的存储。由于此上下文本身并未执行任何DVM(存储缓冲器可通过上下文追踪器中缺少相应条目(并且因此必然缺少用于此上下文的相应DVM同步标志)进行识别),故还避免发送任何种类的DVM同步操作。在指令4(至长延迟地址的存储或另一TLB维持操作)退出后,存储缓冲器在上下文追踪器中添加用于上下文C的条目,将该条目标记为为SCU访问或以指示上下文C已执行DVM操作的DVM同步标志来标记该条目。之后当指令5(DSB)退出时,根据指令4是否是存储(STR)或TLB失效(TLBIMVAA),下述两个可能性之一者会发生。如果指令4是存储,则DSB屏障将影响此存储及所有当前由数据处理系统所处理的至AXI主端口的其它存储,但并不导致从存储缓冲器发送DVM同步。另一方面,如果指令4是TLB失效,则DSB屏障(指令5)将产生用于所有较早的DVM消息的DVM同步,其中该DVM同步后面是影响所有在先的AXI主端口访问的DSB。
虽然本文已参考附图详细描述了本发明的示意性实施例,但应该了解的是,本发明并不限于这些精确的实施例,所属技术领域的相关技术人员在没有背离由所附权利要求所定义的本发明的范畴及精神的情况下可进行各种变化、增加及修改。例如,在没有背离本发明的范畴的情况下可以将独立权利要求的特征与附属权利要求的特征进行各种结合。

Claims (19)

1.一种用于数据处理的设备,包括:
处理电路,所述处理电路执行数据处理指令以执行数据处理操作,其中,所述数据处理操作包括访问存储器系统,并且其中,所述处理电路能够在多个上下文中执行所述数据处理指令;以及
存储器系统交互电路,所述存储器系统交互电路提供所述处理电路和所述存储器系统间的接口;
其中,所述存储器系统交互电路能够响应于所述处理电路在所述多个上下文中的当前上下文中执行屏障指令而强制执行访问顺序约束,
并且其中,所述存储器系统交互电路能够将所述访问顺序约束的强制执行限制于由所述处理电路在被识别的上下文中操作时所初始化的访问。
2.如权利要求1所述的设备,其中,所述被识别的上下文是所述当前上下文。
3.如权利要求1所述的设备,其中,所述被识别的上下文在所述屏障指令中被指定。
4.如权利要求1至3中任意项所述的设备,其中,所述设备能够提供多个虚拟机中的当前虚拟机操作于的虚拟操作环境,其中,所述处理电路能够通过与所述当前虚拟机的交互来执行所述数据处理指令,并且其中,所述当前上下文与所述当前虚拟机相对应。
5.如权利要求4所述的设备,其中,所述设备还包括:用于存储虚拟机标识符的虚拟机标识符存储装置,其中,所述设备能够更新所述虚拟机标识符以指示所述当前虚拟机。
6.如权利要求1-5中任意项所述的设备,其中,所述存储器系统交互电路包括缓冲未决访问的存储缓冲器,并且所述存储缓冲器能够利用指示从中发布所述未决访问的上下文的标识符来标记每个未决访问。
7.如权利要求6所述的设备,其中,所述存储缓冲器能够将所述访问顺序约束的强制执行限制于利用下述标识符标记的未决访问:所述标识符指示从中发布所述未决访问的上下文,所述上下文匹配于所述当前上下文。
8.如权利要求7所述的设备,其中,所述存储器系统交互电路还包括一致单元,并且所述存储缓冲器能够经由所述一致单元与所述存储器系统交互。
9.如权利要求6至8中任意项所述的设备,其中,所述存储缓冲器包括具有多个存储位置的上下文追踪存储装置,并且其中,所述存储缓冲器能够在所述当前上下文具有由于最后对所述当前上下文强制执行所述访问顺序约束而被初始化的访问时,在所述多个存储位置中的一个存储位置中存储针对所述当前上下文的条目。
10.如权利要求9所述的设备,其中,所述存储缓冲器能够在与所选择的条目相对应的所述访问顺序约束已经被强制执行时,在所述上下文追踪存储装置中清除所述所选择的条目。
11.如权利要求9或10所述的设备,其中,如果所述上下文追踪存储装置中的所述多个存储位置全部被占据并且所述存储缓冲器不具有用于所述当前上下文的被占据的条目,则所述存储缓冲器能够针对除了具有相应的牺牲条目的当前上下文外的牺牲上下文所初始化的未决访问强制执行隐含的访问顺序约束,并且清除用于所选择的上下文的所述牺牲条目,其中,所述隐含的访问顺序约束不要求所述处理电路执行相应的屏障指令。
12.如权利要求9至11中任意项所述的设备,其中,所述存储缓冲器能够存储与所述上下文追踪存储装置中的每个条目相关联的至少一个指示,所述指示指示由于所述访问顺序约束被最后强制执行于那个上下文而初始化的访问是否包括至少一种类型的访问。
13.如权利要求1至12中任意项所述的设备,其中,所述设备能够在所述当前上下文由于用于所述当前上下文的所述访问顺序约束被最后执行而已经执行相应类型的访问指令时,将所述访问顺序约束的强制执行限制于所选类型的未决访问,其中所述所选类型的未决访问是由所述当前上下文执行所述相应类型的访问指令而被初始化的。
14.如权利要求13所述的设备,其中,所述所选类型的未决访问是存储操作。
15.如权利要求14所述的设备,其中,所述存储器系统交互电路能够在所述存储操作是针对经选择的存储器区域时,限制所述访问顺序约束的强制执行。
16.如权利要求13所述的设备,其中,所述所选类型的未决访问是一致操作。
17.如权利要求1所述的设备,其中,所述被识别的上下文在所述处理电路能访问的存储装置中被指定。
18.一种数据处理方法,包括以下步骤:
执行数据处理指令以执行数据处理操作,其中,所述数据处理操作包括访问存储器系统,并且其中,所述数据处理指令是在多个上下文中的当前上下文中被执行的;
响应于在所述多个上下文中的当前上下文中执行屏障指令,强制执行访问顺序约束;以及
将所述访问顺序约束的强制执行限制于在被识别的上下文中执行数据处理指令时所初始化的访问。
19.一种用于数据处理的设备,包括:
用于执行数据处理指令以执行数据处理操作的装置,其中,所述数据处理操作包括访问存储器系统,并且所述数据处理指令是在多个上下文中的当前上下文中被执行的;
用于提供处理电路和所述存储器系统之间的接口的装置,
其中,所述用于提供接口的装置能够响应于所述用于执行数据处理指令的装置在所述多个上下文中的当前上下文中执行屏障指令而强制执行访问顺序约束,
并且其中,所述用于执行数据处理指令的装置能够将所述访问顺序约束的强制执行限制于由所述处理电路在被识别的上下文中操作时所初始化的访问。
CN201580060525.7A 2014-11-13 2015-10-09 上下文敏感的屏障指令的执行 Active CN107077384B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1420173.5 2014-11-13
GB1420173.5A GB2549239A (en) 2014-11-13 2014-11-13 Context sensitive barriers in data processing
PCT/GB2015/052959 WO2016075430A1 (en) 2014-11-13 2015-10-09 Context sensitive barrier instruction execution

Publications (2)

Publication Number Publication Date
CN107077384A true CN107077384A (zh) 2017-08-18
CN107077384B CN107077384B (zh) 2020-11-17

Family

ID=52248288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580060525.7A Active CN107077384B (zh) 2014-11-13 2015-10-09 上下文敏感的屏障指令的执行

Country Status (10)

Country Link
US (1) US10503512B2 (zh)
EP (1) EP3218796B1 (zh)
JP (1) JP6722182B2 (zh)
KR (1) KR102421315B1 (zh)
CN (1) CN107077384B (zh)
GB (1) GB2549239A (zh)
IL (1) IL251309B (zh)
MY (1) MY183825A (zh)
TW (1) TWI693549B (zh)
WO (1) WO2016075430A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020087264A1 (en) * 2018-10-30 2020-05-07 Intel Corporation Supporting self-modifying graphics workloads in fully virtualized graphics architectures

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10628329B2 (en) * 2016-04-26 2020-04-21 Nxp Usa, Inc. Data processing system having a coherency interconnect
KR20220169754A (ko) 2021-06-21 2022-12-28 최은지 입체퍼즐을 이용한 혼합현실 체감형 학습 교구

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011195A1 (en) * 2008-07-08 2010-01-14 Sony Corporation Processor
CN101771600A (zh) * 2008-12-30 2010-07-07 北京天融信网络安全技术有限公司 多核下连接并发处理的方法
CN104050032A (zh) * 2013-03-11 2014-09-17 辉达公司 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0679990B1 (en) * 1994-04-28 2000-03-01 Hewlett-Packard Company A computer apparatus having a means to force sequential instruction execution
US6978360B2 (en) * 2001-05-11 2005-12-20 International Business Machines Corporation Scalable processor
US7752423B2 (en) 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
JP4234361B2 (ja) 2002-06-28 2009-03-04 富士通株式会社 記憶制御装置およびデータ格納方法
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
WO2008155806A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
US8112604B2 (en) * 2007-12-17 2012-02-07 International Business Machines Corporation Tracking load store ordering hazards
GB2456813B (en) * 2008-01-24 2012-03-07 Advanced Risc Mach Ltd Diagnostic context construction and comparison
WO2009114645A1 (en) * 2008-03-11 2009-09-17 University Of Washington Efficient deterministic multiprocessing
US8539204B2 (en) * 2009-09-25 2013-09-17 Nvidia Corporation Cooperative thread array reduction and scan operations
US8443148B2 (en) * 2009-12-26 2013-05-14 Intel Corporation System-wide quiescence and per-thread transaction fence in a distributed caching agent
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9703951B2 (en) * 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011195A1 (en) * 2008-07-08 2010-01-14 Sony Corporation Processor
CN101771600A (zh) * 2008-12-30 2010-07-07 北京天融信网络安全技术有限公司 多核下连接并发处理的方法
CN104050032A (zh) * 2013-03-11 2014-09-17 辉达公司 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020087264A1 (en) * 2018-10-30 2020-05-07 Intel Corporation Supporting self-modifying graphics workloads in fully virtualized graphics architectures
US11907377B2 (en) 2018-10-30 2024-02-20 Intel Corporation Supporting self-modifying graphics workloads in fully virtualized graphics architectures

Also Published As

Publication number Publication date
TW201633116A (zh) 2016-09-16
CN107077384B (zh) 2020-11-17
KR20170083070A (ko) 2017-07-17
WO2016075430A1 (en) 2016-05-19
US10503512B2 (en) 2019-12-10
MY183825A (en) 2021-03-17
IL251309A0 (en) 2017-05-29
GB2549239A (en) 2017-10-18
TWI693549B (zh) 2020-05-11
US20160139922A1 (en) 2016-05-19
JP2017539001A (ja) 2017-12-28
KR102421315B1 (ko) 2022-07-15
EP3218796B1 (en) 2020-05-06
GB201420173D0 (en) 2014-12-31
JP6722182B2 (ja) 2020-07-15
EP3218796A1 (en) 2017-09-20
IL251309B (en) 2020-02-27

Similar Documents

Publication Publication Date Title
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
CN108885583B (zh) 高速缓存存储器访问
US8806148B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US8832415B2 (en) Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US20170177501A1 (en) Translation entry invalidation in a multithreaded data processing system
JP6933896B2 (ja) 複数のプロセッサ・コアを含むマルチスレッド・データ処理システムにおいて変換エントリを無効化する方法、処理ユニット、データ処理システム、設計構造体
US10824567B2 (en) Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead
US8868844B2 (en) System and method for a software managed cache in a multiprocessing environment
CN107077384A (zh) 上下文敏感的屏障指令的执行
TW201211777A (en) Apparatus and method for handling access operations issued to local cache structures within a data processing apparatus
US9898416B2 (en) Translation entry invalidation in a multithreaded data processing system
GB2538054A (en) Data processing apparatus, controller, cache and method
CN105446889B (zh) 一种内存管理方法、装置以及内存控制器
US9830198B2 (en) Translation entry invalidation in a multithreaded data processing system
US20200183853A1 (en) Translation entry invalidation in a multithreaded data processing system
GB2546387B (en) Translation entry invalidation in a multithreaded data processing system
WO2017074416A1 (en) Managing cache operations using epochs
He et al. VISU: A Simple and Efficient Cache Coherence Protocol Based on Self-updating
US20190258574A1 (en) Apparatus and method for providing an atomic set of data accesses

Legal Events

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