CN103765380B - 用于事件的安全排队的方法和系统 - Google Patents

用于事件的安全排队的方法和系统 Download PDF

Info

Publication number
CN103765380B
CN103765380B CN201280042605.6A CN201280042605A CN103765380B CN 103765380 B CN103765380 B CN 103765380B CN 201280042605 A CN201280042605 A CN 201280042605A CN 103765380 B CN103765380 B CN 103765380B
Authority
CN
China
Prior art keywords
indicator
user
processing
doorbell
level
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
CN201280042605.6A
Other languages
English (en)
Other versions
CN103765380A (zh
Inventor
R·L·法雷尔
A-R·阿德-塔巴塔巴伊
A·科克
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 CN103765380A publication Critical patent/CN103765380A/zh
Application granted granted Critical
Publication of CN103765380B publication Critical patent/CN103765380B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Abstract

用于促进在第一处理单元中执行的用户级应用程序为第二处理单元安全地对工作或任务进行排队,而不执行任何环变换的方法和系统。例如,在本发明的一个实施例中,第一处理单元执行一个或多个用户级应用程序,其中每个用户级应用程序具有将卸载到第二处理单元的任务。在本发明的一个实施例中,第一处理单元用信号通知第二处理单元处理来自每个用户级应用程序的任务,而不执行任何环变换。

Description

用于事件的安全排队的方法和系统
技术领域
本发明涉及系统,更具体但并非排他地,涉及用于从一个处理单元到另一个处理单元的事件安全排队而不使用任何环变换的方法和系统。
背景技术
系统可以有多个处理单元或设备。处理单元可以卸载任务或事件给在系统中的另一处理单元。然而,处理单元需要采用环变换来对将要卸载到另一处理单元的任务进行排队。例如,在现有技术图1 100中,在环3 140中执行的用户级应用程序需要通过环2 130和环1 120变换到在环0 110中的内核模式,以对将要卸载到另一处理单元的任务进行排队。
附图说明
通过以下对主题的详细描述,本发明的实施例的特征和优点将会变得明显,其中:
图1示出了等级保护域或环的现有技术框图;
图2示出了根据本发明的一个实施例的事件的安全排队的框图;
图3示出了根据本发明的一个实施例的事件的安全排队的框图;
图4A示出了根据本发明的一个实施例的实现本文公开的方法的系统;以及
图4B示出了根据本发明的一个实施例的实现本文公开的方法的系统。
具体实施方式
本文所描述的本发明的实施例在附图中以示例的方式而不是限制的方式示出。为了解释的简单和清晰,在图中示出的元件不一定按照比例画出。例如,为了清晰,相对于其他元件增大了一些元件的尺寸。进一步地,在图之间,参考数字在认为合适的地方重复以指示对应的或类似的元件。在本发明说明书中引用的“一个实施例”或“实施例”意思是结合实施例描述的特定的特征、结构或特性至少包括在本发明的一个实施例中。因此,在说明书各处出现的短语“在一个实施例中”不一定全指同一个实施例。
本发明的实施例提供一种方法和系统,用以促进在第一处理单元中执行的用户级应用程序为第二处理单元安全地排队工作或任务,而不执行任何环变换。例如,在本发明的一个实施例中,第一处理单元执行一个或多个用户级应用程序,其中每个用户级应用程序均具有将要卸载到第二处理单元的任务。在本发明的一个实施例中,第一处理单元用信号通知第二处理单元来处理来自每个用户级应用程序的任务,而不执行任何环变换。
第一和第二处理单元包括,但不限于,中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)和任何其他的处理单元。例如,在本发明的一个实施例中,第一处理单元是CPU而第二处理单元是GPU。
在本发明的一个实施例中,用户级软件线程在CPU上执行,用信号通知GPU:它有任务将要卸载到GPU,而不带来到操作系统(OS)内核级别的环变换的开销。在本发明的一个实施例中,通过避免CPU的到OS内核级别的环变换,CPU不打开安全漏洞,同时通过信号通知GPU它有任务将要卸载到所述GPU。
图2示出了根据本发明的一个实施例的事件的安全排队的框图200。为了解释的清晰,图2示出了CPU,其对将要由GPU 260执行的事件进行排队。在本发明的一个实施例中,每个事件指示了将要由GPU 260执行的工作或任务。
在本发明的一个实施例中,CPU具有等级保护域或者环,其提供到系统中的资源的不同级别的安全访问。例如,在本发明的一个实施例中,CPU具有监督级别或者环0 250、用户级或环3 210、以及为了图示清晰而没有在图2中展示的其他环。相关领域中普通的技术人员将会容易地理解等级保护环的工作,在此将不对其进行描述。
在本发明的一个实施例中,CPU在环3 210中执行一个或多个用户级应用程序,其示出为:应用程序(App.)1 220、App.2 230和App.N 240。所述App.N 240示出在本发明的一个实施例中,可能有任何数量的可在CPU上执行的用户级应用。
在本发明的一个实施例中,在CPU上执行的每个用户级的应用程序具有指示器,其指示它有任务将要被卸载到GPU 260。在本发明的一个实施例中,通过对任务的标识进行排队到可被GPU 260访问的队列里而卸载任务。
为了解释的清晰,假定App.1 220和App.N 240中的每个具有一个或多个任务或工作将要被卸载到GPU 260。在本发明的一个实施例中,App.1 220和App.N 240各自具有映射的门铃指示器225和映射的门铃指示器245。在本发明的一个实施例中,映射的门铃指示器225和映射的门铃指示器245是在App.1 220和App.N 240各自的虚拟地址空间中。
在本发明的一个实施例中,GPU 260具有与CPU通信的逻辑。在本发明的一个实施例中,所述逻辑具有门铃指示器270、272、274和276。每个门铃指示器270、272、274和276各自与在CPU上执行的用户级应用程序的映射的门铃指示器相关联。
例如,在本发明的一个实施例中,当App.1 220具有将要卸载到GPU 260的任务时,App.1 220写入或设定映射的门铃指示器225。映射的门铃指示器225与GPU 260中的门铃指示器272相关联。当设定了映射的门铃指示器225时,GPU 260的逻辑设定门铃指示器272,作为对设定映射的门铃指示器225的响应。
相似地,在本发明的一个实施例中,当App.N 240具有将要卸载到GPU260的任务时,App.N 240写入或设定映射的门铃指示器245。映射的门铃指示器245与GPU 260中的门铃指示器276相关联。当设定了映射的门铃指示器245时,GPU 260的逻辑设定门铃指示器276,作为对设定映射的门铃指示器245的响应。假定App.2 230没有将要卸载到GPU 260的任何任务,则不写入它的映射的门铃指示器。
在本发明的一个实施例中,在GPU 260中的逻辑具有门铃选择器280。门铃选择器280选择已设定的门铃指示器270、272、274和276中的一个。假定门铃指示器270和274被其他应用程序设定,为了解释的清晰而没有在图2中示出所述其他应用程序。在选择了门铃指示器270、272、274和276中的一个之后,门铃选择器280为GPU 260产生中断290。
在本发明的一个实施例中,中断290指示GPU 260:存在将要执行的与选择的门铃指示器相关联的任务,GPU 260进行处理所述任务。例如,在本发明的一个实施例中,门铃选择器280选择门铃272并且产生中断290以通知GPU 260。在本发明的一个实施例中,App.1220的标识被写入寄存器中以允许GPU 260处理从App.1 220卸载的任务。在本发明的一个实施例中,GPU使用App.1 220的标识来判定需要执行哪个任务。
在本发明的一个实施例中,在与选择的门铃相关联的应用程序的标识被写入寄存器之后,选择的门铃的设定被清除或者复位。例如,在本发明的一个实施例中,在App.1 220的标识被写入寄存器之后,门铃272被清除或复位,并且生成了中断290。在本发明的一个实施例中,这使得门铃选择器280可以仅仅选择已经被设定的门铃。
在本发明的一个实施例中,门铃选择器280使用确保跨越用户级进程的公平的规则来检查门铃。在本发明的一个实施例中,这防止了恶意软件造成拒绝服务攻击。
例如,在本发明的一个实施例中,门铃选择器280基于门铃选择器的优先级,在门铃指示器270、272、274和276之间选择一个门铃指示器。例如,在本发明的一个实施例中,门铃指示器270、272、274和276中的每个设定有优先级。门铃选择器280检查门铃指示器270、272、274和276的优先级,并且基于优先级选择一个门铃指示器。在本发明的一个实施例中,门铃指示器的优先级基于但不限于系统的可用资源、完成时间、执行时间、以及被CPU用以分类卸载的任务的任何其他因素。
在本发明的一个实施例的另一个示例中,门铃选择器280基于最近最少使用的标准,在门铃指示器270、272、274和276中选择一个门铃指示器。例如,在本发明的一个实施例中,门铃选择器280检查门铃指示器270、272、274和276中的哪个是最近最少使用(LRU)的,并且选择LRU门铃指示器。
在本发明的其他实施例中,门铃选择器280使用其他标准来保证门铃指示器270、272、274和276的公平选择。相关领域中的普通技术人员将会容易理解如何选择其他标准,并且这些其他标准可以被使用而不影响本发明的工作。
在本发明的一个实施例中,在CPU和GPU 260之间的通信允许异步的信号通知已经为GPU 260的处理而对任务进行了排队。在CPU和GPU 260之间的信号通知不需要环变换,并且它提供安全方式来通过信号通知GPU260而不打开任何安全漏洞。
图2中的图示不是为了进行限制。例如,在本发明的另一个实施例中,GPU 260向CPU卸载任务并且为CPU对任务进行排队。在本发明的又一个实施例中,除了CPU和GPU之外的另一类型的处理单元可以使用相同的逻辑和方法来用信号通知处理单元。在本发明的一个实施例中,门铃选择器280和门铃指示器270、272、274和276不需要是GPU 260的一部分,并且可以实施为GPU 260之外的逻辑。
图3示出了根据本发明的一个实施例的事件的安全排队的框图300。为了解释的清晰,参考图2来讨论图3。在本发明的一个实施例中,门铃指示器270、272、274和276实施为存储在门铃存储器352中的门铃阵列的一部分。图3示出了在本发明的一个实施例中用于三十个公共门铃的逻辑,但是它的目的不是为了限制。相关领域中的普通技术人员将会容易理解如何应用本发明的工作用于其他数量的公共门铃。
在本发明的一个实施例中,当用户级应用程序写入它的映射的门铃指示器时,在GPU 260的逻辑中的各自的门铃指示器根据使用公共门铃写入数据[9:0]信号而被设定。公共门铃写入数据[9:0]信号连接到5到32行解码逻辑330和5到32位解码逻辑340。
5到32行解码逻辑330和5到32位解码逻辑340与具有两个读取端口的门铃存储器352连接。在本发明的一个实施例中,门铃存储器352存储三十二个32位字,其代表了三十二个门铃指示器的阵列。公共门写入数据[9:0]信号使用5位作为用于5到32行解码逻辑330的行地址,和另外5位作为用于5到32位解码逻辑340的位地址。
每个门铃指示器与具有一个或多个将要排队的任务的应用程序相关联。在本发明的一个实施例中,每个应用程序在应用程序的初始化过程中被分配有应用程序标识(APP_ID)。
逻辑具有与在门铃存储器352中的每个门铃指示器相关联的对应的门使能存储器322。在本发明的一个实施例中,门铃使能存储器322存储三十二个32位字。在本发明的一个实施例中,门铃使能存储器322针对门铃存储器352中的三十二个门铃指示器中的每个具有各自的门铃使能信号。在本发明的一个实施例中,门铃使能存储器322防止无效门铃由不受信任的软件设定。
在本发明的一个实施例中,在门铃使能存储器322中的各自的门铃使能信号是经由公共门铃使能写入信号310设定的。在本发明的一个实施例中,公共门铃使能写入信号310具有与5到32行解码逻辑320耦合的5个行地址信号用来选择门铃使能存储器322的期望行,并且逻辑在选择的期望行中写入或存储期望的设置。
在本发明的一个实施例中,门铃存储器352具有32个输入信号,示出为wdata[31:0] 350。门铃存储器352的每个输入信号耦合到AND门和OR门。例如,在本发明的一个实施例中,门铃存储器352的wdata[31]信号耦合到AND门346和OR门342。门铃存储器352的wdata[0]信号耦合到AND门348和OR门344。门铃存储器352的每个其他输入信号耦合到AND门和OR门,但是为了解释的清晰,没有在图3中展示。
在本发明的一个实施例中,经由5到32行解码逻辑320选择的读取端口324来读取门铃使能存储器322。读取端口324的输出耦合到门铃存储器352的每个输入信号的每个AND门。通过这样做,与门铃存储器352中每个门铃相关联的门铃使能信号控制门铃存储器352的每个输入信号的访问。
例如,在本发明的一个实施例中,AND门346的第一输入耦合到读取端口324的输出。当由5到32行解码逻辑330选择特定的门铃指示器时,仅当读取端口324的输出是断言的或启用的时,可以设定wdata[31]信号的位设定。
AND门346的第二输入耦合到各自一个clear_bit[31:0]信号,即来自位32位最近最少访问(LRA)的搜寻逻辑360的clear_bit[31]信号。在本发明的一个实施例中,clear_bit[31:0]信号可以被设定为逻辑零,以清除在门铃存储器352中的门铃指示器的各自设定。例如,当clear_bit[31]被设定为逻辑零时,AND 346的输出被设定为逻辑零,并且它清除选择的门铃指示器的值。
在本发明的一个实施例中,AND门346的第三输入耦合到OR门342的输出。OR门342的第一输入耦合到门铃存储器352的读取端口1 354的输出。OR门342的第二输入耦合到5到32位解码逻辑340的输出。为了设定特定的门铃,公共门铃写入数据[9:0]提供特定门铃的行和位地址。5到32位解码逻辑340和5到32行解码逻辑330相应地解码公共门铃写入数据[9:0]以设定特定的门铃。AND门和OR门耦合到门铃存储器352其他每个输入的工作,类似于AND门346和OR门342,并且将不会在这里描述。
在本发明的一个实施例中,门铃存储器352耦合到三十二个32到1 OR门,如OR门372和374所示出的。三十二个32到1 OR门中每个的输出耦合到行32位LRA搜寻逻辑370。每个OR门使用门铃存储器352的特定行的32位作为其输入。当门铃存储器352的特定行的一个或多个位被设定时,OR门的输出被断言。
行32位LRA搜寻逻辑370使用每个OR门的输出来判定门铃存储器352的特定行是否已经被断言。在本发明的一个实施例中,行32位LRA搜寻逻辑370选择LRA行,并且以LRA行的地址设定读取端口0 356。读取端口0 356的输出耦合到位32位LRA搜寻逻辑360。位32位LRA搜寻逻辑360选择在LRA行中具有最高优先级的门铃位,并且将与选择的门铃位相关联的APP_ID排队到先进先出(FIFO)队列380。APP_ID 382被写入公共门铃矢量寄存器,其可以被处理单元访问以处理卸载的任务。
当FIFO队列380是空的时,FIFO空信号384被设定。经由逆变器390,中断信号386耦合到FIFO空信号384。当FIFO队列380不是空的时,FIFO空信号384解除断言,而中断信号386被断言。中断信号386指示有任务将要被处理或者执行。当FIFO队列380是满的时,轮询仲裁器,即行32位LRA搜寻逻辑370和位32位LRA搜寻逻辑360,停止对任务排队以防止任何可能的溢出。
在本发明的一个实施例中,门铃指示器被分配作为最后一级高速缓存等级的一部分,其可以作为高速缓存客户端而被CPU和GPU访问。当门铃页面或者高速缓存存储器线被分配给GPU时,高速缓存存储器线的排他所有权被传送给GPU。按照包容高速缓存等级的高速缓存一致性协议(修改的、排他的、共享的、无效的—MESI 规则),更新门铃高速缓存存储器线的用户级应用程序必须通过使GPU的所有权无效来将所有权传送回CPU。所有权传送被GPU用作读取更新内容的触发机制,并判定用户级应用程序是否已经提交任何工作或任务。
这一机制允许单个门铃被分配给一个用户级应用程序和多个用户级应用程序。在多个用户级应用程序被分配给单个门铃指示的情况下,每个用户级应用程序竞争以设定门铃指示器,并且门铃指示器的成功设定是经由在可高速缓存的存储器空间上的原子操作进行的。
图4A示出了根据本发明的一个实施例的用于实现本文公开的方法的系统400。系统400包括但不限于,台式计算机、平板计算机、膝上计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网家电或者任何其他类型的计算设备。在另一个实施例中,用来实现本文公开的方法的系统400可以是片上系统(SOC)系统。
处理器410具有处理核心412,用来执行系统400的指令。处理核心412包括但不限于,用来取得指令的预取逻辑、用来解码指令的解码逻辑、用来执行指令的执行逻辑,等等。处理器410具有高速缓存存储器416,用来高速缓存系统400的指令和/或数据。在本发明的另一个实施例中,高速缓存存储器416包括但不限于,一级、二级和三级高速缓存存储器或者在处理器410内的任何其他配置的高速缓存存储器。
存储器控制中心(MCH)414执行以下功能:其使得处理器410能够访问存储器430并与存储器430通信,所述存储器430包括易失性存储器432和/或非易失性存储器434。易失性存储器432包括但不限于,同步动态随机访问存储器(SDRAM)、动态随机访问存储器(DRAM)、RAMBUS动态随机访问存储器(RDRAM)和/或任何其他类型的随机访问存储器设备。非易失性存储器434包括但不限于,NAND闪存、相变存储器(PCM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、或者任何其他类型的非易失性存储器设备。
存储器430存储将要被处理器410执行的信息和指令。当处理器410正在执行指令时,存储器430还可以存储临时变量或者其他中间信息。芯片组420经由点对点(PtP)接口417和422与处理器410连接。芯片组420使得处理器410能够连接到系统400中的其他模块。在本发明的一个实施例中,接口417和422按照PtP通信协议操作,例如快速通道互联(QPI)等等。芯片组420连接到GPU或者显示设备440上,其包括但不限于液晶显示器(LCD)、阴极射线管(CRT)显示器或者任何其他形式的虚拟显示设备。
此外,芯片组420连接到互连各种模块474、480、482、484和486的一个或多个总线450和460。如果在总线速度或者通信协议中有不匹配,则总线450和460可以经由总线桥472互连在一起。芯片组420与非易失性存储器480、大规模存储设备482、键盘/鼠标484和网络接口486耦合,但并不局限于此。大规模存储设备482包括,但不限于固态驱动、硬盘驱动、通用串行总线闪存驱动、或者任何其他形式的计算机数据存储介质。使用任何类型的已知网络接口标准实现网络接口486,包括,但不限于以太网接口、通用串行总线(USB)接口、外部设备互连(PCI)快速接口、无线接口和/或任何其他合适类型的接口。无线接口根据但不限于以下协议进行操作:IEEE 802.11标准及其相关家族、家用电力线AV(HPAV)、超宽带(UWB)、蓝牙、WiMax或者任何形式的无线通信协议。
尽管在图4中示出的模块被描绘成系统400内的分离框,但这些框中的一些执行的功能可以被集成在单个半导体电路内,或者可以使用两个或更多个分离的集成电路实现。在本发明的另一个实施例中,系统400可以包括不止一个处理器/处理核心。
图4B示出了根据本发明的一个实施例的实现本文所公开的方法的系统490。系统490是系统400的变型,其中GPU 492与处理器410集成在一起。在本发明的一个实施例中,GPU 492耦合到显示器494。在系统490中的其他部件与在系统400中的部件相似,将不在此进行描述。
本文公开的方法可以用硬件、软件、固件或者其任何其他组合实现。尽管描述了公开主题的实施例的示例,但相关领域的普通技术人员将会容易地明白可以替代地使用实现所公开主题的许多其他方法。在前面的描述中,已经描述了所公开主题的各方面。为了解释的目的,陈述了特定数字、系统和配置,是为了提供对主题的透彻理解。然而,对受益于本公开的相关领域的普通技术人员来说显然的是,可以不采用特定的细节来实践本主题。在其他例子中,省略、简化、合并或者分解熟知的特征、部件或者模块是为了不模糊所公开的主题。
本文所使用的术语“可操作的”的意思是当设备或者系统处于断电状态时,设备、系统、协议等能够操作或者适用于操作其期望的功能。所公开主题的各种实施例可以用硬件、固件、软件或者其组合实现,并且可以参考或结合程序代码进行描述,例如指令、函数、程序、数据结构、逻辑、应用程序、设计表现或者用于仿真、模拟和直到设计的格式,当被机器访问时会造成机器执行任务、定义摘要数据类型或者低级别硬件上下文、或者产生结果。
在附图中展示的技术可以使用在一个或多个计算设备中(例如通用计算机或者计算设备)存储和执行的代码和数据实现。这样的计算设备使用机器可读介质来(在内部和通过网络与其他计算设备)存储并通信代码和数据,所述机器可读介质例如是机器可读存储器介质(例如磁盘;光盘;随机访问存储器;只读存储器;闪存设备;相变存储器)和机器可读通信介质(例如,电、光、声或者其他形式的传播信号—例如载波、红外信号、数字信号等)。
尽管已经参考解释性的实施例描述了所公开的主题,但本说明书目的不应解释为限制的含义。对主题的示出的实施例和其它实施例的各种修改对于所公开主题所属于的领域中的技术人员而言是明显的,并且这些修改被视落入所公开主题的范围内。

Claims (21)

1.一种用于事件的安全排队的装置,包括:
第一处理单元,用于:
执行一个或多个用户级应用程序,其中每个用户级应用程序将卸载任务到第二处理单元,其中,每个用户级应用程序具有第一指示器;
通过响应于每个用户级应用程序具有待卸载到所述第二处理单元的任务而设定每个用户级应用程序的所述第一指示器,用信号通知所述第二处理单元处理来自每个用户级应用程序的任务,而不执行任何环变换;
基于每个用户级应用程序的每个对应的第一指示器,设定与每个第一指示器相对应的多个第二指示器中的每一个;
选择所述多个第二指示器中的一个;
判定与所选择的第二指示器相关联的所述用户级应用程序的标识(Identification,ID);以及
将所述用户级应用程序的所述ID存储到先进先出(First input First output,FIFO)队列。
2.如权利要求1所述的装置,其中所述第一处理单元进一步用于:
为所述第二处理单元产生中断,其中所述中断用于指示所述FIFO队列不是空的。
3.如权利要求2所述的装置,其中所述第一处理单元进一步用于:
响应于将所述用户级应用程序的所述ID存储到所述FIFO队列,清除所选择的第二指示器。
4.如权利要求1所述的装置,其中用于选择所述多个第二指示器中的一个的第一处理单元用于:基于所述多个第二指示器的优先级,来选择所述多个第二指示器中的一个。
5.如权利要求1所述的装置,其中用于选择所述多个第二指示器中的一个的第一处理单元用于:基于最近最少使用(Least Recently Used,LSU)标准,来选择所述多个第二指示器中的一个。
6.如权利要求1所述的装置,其中所述第一处理单元进一步用于断言与所选择的第二指示器相关联的使能信号,并且其中用于选择所述多个第二指示器中的一个的第一处理单元用于:响应于与所选择的第二指示器相关联的所述使能信号的断言,来选择所述多个第二指示器中的一个。
7.如权利要求1所述的装置,其中所述第一处理单元是中央处理单元,并且其中所述第二处理单元是图形处理单元。
8.如权利要求1所述的装置,其中所述多个第二指示器是公共门铃,其中每个第一指示器是在与每个各自公共门铃相关联的每个用户级应用程序的虚拟地址空间中的映射的门铃。
9.如权利要求8所述的装置,其中所述公共门铃是最后一级高速缓存存储器等级的一部分,能作为高速缓存存储器客户端而被所述第一处理单元和所述第二处理单元访问。
10.如权利要求1所述的装置,其中用信号通知所述第二处理单元处理来自每个用户级应用程序的任务,而不执行任何环变换的第一处理单元用于:用信号通知所述第二处理单元处理来自每个用户级应用程序的任务,同时保持每个用户级应用程序的特权级别。
11.一种用于事件的安全排队的装置,包括:
第一处理单元,用于:
执行一个或多个用户级线程来为第二处理单元的事件进行排队,其中每个用户级线程具有第一指示器,并且其中绕过每个用户级线程的监督级别验证,用信号通知所述第二处理单元执行所述事件的第一处理单元用于:通过响应于每个用户级线程具有待为所述第二处理单元排队的事件而设定每个用户级线程的所述第一指示器,绕过每个用户级线程的所述监督级别验证,用信号通知所述第二处理单元执行所述事件;
基于每个用户级线程的每个对应的第一指示器,设定与每个第一指示器相对应的多个第二指示器中的每一个;
选择所述多个第二指示器中的一个;
判定与所选择的第二指示器相关联的所述用户级线程的标识(Identification,ID);以及
将与所选择的第二指示器相关联的所述用户级线程的所述ID存储到队列。
12.如权利要求11所述的装置,其中所述第一处理单元进一步用于:
为所述第二处理单元产生中断,其中所述中断用于指示所述队列不是空的。
13.如权利要求11所述的装置,其中所述第一处理单元进一步用于:
响应于将所述用户级线程的所述ID存储到所述队列,清除所选择的第二指示器。
14.如权利要求11所述的装置,其中用于选择所述多个第二指示器中的一个的第一处理单元用于:基于所述多个第二指示器的优先级或者最近最少使用(Least RecentlyUsed,LSU)标准中的一个,来选择所述多个第二指示器中的一个。
15.如权利要求11所述的装置,其中所述第一处理单元进一步用于断言与所选择的第二指示器相关联的使能信号,并且其中用于选择所述多个第二指示器中的一个的第一处理单元用于:响应于与所选择的第二指示器相关联的所述使能信号的断言,来选择所述多个第二指示器中的一个。
16.如权利要求11所述的装置,其中所述多个第二指示器是公共门铃,其中每个第一指示器是在与每个各自公共门铃相关联的每个用户级线程的虚拟地址空间中的映射的门铃。
17.如权利要求16所述的装置,其中所述公共门铃是最后一级高速缓存存储器等级的一部分,能作为高速缓存存储器客户端而被所述第一处理单元和所述第二处理单元访问。
18.一种用于事件的安全排队的方法,包括:
在第一处理单元中执行一个或多个用户级应用程序,其中每个用户级应用程序将卸载任务到第二处理单元,其中每个用户级应用程序具有第一指示器;
通过响应于每个用户级应用程序具有待卸载到所述第二处理单元的任务而设定每个用户级应用程序的所述第一指示器,用信号通知所述第二处理单元处理来自每个用户级应用程序的任务,同时维持每个用户级应用程序的特权等级;
基于每个用户级应用程序的每个对应的第一指示器,设定与每个第一指示器相对应的多个第二指示器中的每一个;
选择所述多个第二指示器中的一个;
判定与所选择的第二指示器相关联的所述用户级应用程序的标识(Identification,ID);以及
将所述用户级应用程序的所述ID存储到先进先出(First input First output,FIFO)队列。
19.如权利要求18所述的方法,进一步包括:
为所述第二处理单元产生中断,其中所述中断用于指示所述FIFO队列不是空的;以及
响应于将所述用户级应用程序的所述ID存储到所述FIFO队列,清除所选择的第二指示器。
20.如权利要求18所述的方法,其中选择所述多个第二指示器中的一个包括:基于所述多个第二指示器的优先级或者最近最少使用(Least Recently Use,LSU)标准中的一个,来选择所述多个第二指示器中的一个。
21.如权利要求18所述的方法,进一步包括:断言与所选择的第二指示器相关联的使能信号,并且其中选择所述多个第二指示器中的一个包括:响应于与所选择的第二指示器相关联的所述使能信号的断言,来选择所述多个第二指示器中的一个。
CN201280042605.6A 2011-07-01 2012-06-29 用于事件的安全排队的方法和系统 Expired - Fee Related CN103765380B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/175,493 2011-07-01
US13/175,493 US8813083B2 (en) 2011-07-01 2011-07-01 Method and system for safe enqueuing of events
PCT/US2012/044837 WO2013006406A2 (en) 2011-07-01 2012-06-29 Method and system for safe enqueuing of events

Publications (2)

Publication Number Publication Date
CN103765380A CN103765380A (zh) 2014-04-30
CN103765380B true CN103765380B (zh) 2017-07-28

Family

ID=47392082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280042605.6A Expired - Fee Related CN103765380B (zh) 2011-07-01 2012-06-29 用于事件的安全排队的方法和系统

Country Status (4)

Country Link
US (1) US8813083B2 (zh)
KR (1) KR101599843B1 (zh)
CN (1) CN103765380B (zh)
WO (1) WO2013006406A2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678497B2 (en) * 2013-08-30 2017-06-13 Regents Of The University Of Minnesota Parallel processing with cooperative multitasking
EP3694135B1 (en) * 2013-10-31 2023-05-10 Sony Group Corporation Telecommunications apparatus and methods
US9639395B2 (en) * 2015-04-16 2017-05-02 Google Inc. Byte application migration
US9747122B2 (en) * 2015-04-16 2017-08-29 Google Inc. Virtual machine systems
EP3115898B1 (en) * 2015-07-06 2022-06-15 Intuilab Method for generating user-level events for an application
EP3726390B1 (en) * 2018-02-02 2024-04-24 Huawei Technologies Co., Ltd. Method and device for protecting kernel integrity
GB2579617B (en) * 2018-12-06 2021-01-27 Advanced Risc Mach Ltd An apparatus and method for handling exception causing events
US10831483B1 (en) * 2019-04-29 2020-11-10 Intel Corporation Memory mapped virtual doorbell mechanism
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US11182208B2 (en) 2019-06-29 2021-11-23 Intel Corporation Core-to-core start “offload” instruction(s)
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1282915A (zh) * 1999-06-18 2001-02-07 凤凰技术有限公司 在应用程序模块不工作时自动卸载的方法和装置
CN1698337A (zh) * 2003-06-05 2005-11-16 恩维达公司 利用卸载单元处理tcp连接数据
US7586493B1 (en) * 2006-05-24 2009-09-08 Nvidia Corporation System and method for offloading application tasks in a multi-processor environment utilizing a driver
CN101754437A (zh) * 2008-12-19 2010-06-23 英特尔公司 处理上下文感知平台中的传感器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480200B1 (en) * 2000-06-09 2002-11-12 Hewlett-Packard Company Method and apparatus for deferred texture validation on a multi-tasking computer
US20060136874A1 (en) 2004-12-22 2006-06-22 Berry Frank L Ring transition bypass
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
KR101517258B1 (ko) 2007-09-27 2015-05-04 로날드 엔. 힐튼 크로스-시스템의 프록시-기반 태스크 오프로딩을 위한 장치, 시스템 및 방법
US8521995B2 (en) * 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US20110154334A1 (en) 2009-12-21 2011-06-23 Andrew Ward Beale Method and system for offloading processing tasks to a foreign computing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1282915A (zh) * 1999-06-18 2001-02-07 凤凰技术有限公司 在应用程序模块不工作时自动卸载的方法和装置
CN1698337A (zh) * 2003-06-05 2005-11-16 恩维达公司 利用卸载单元处理tcp连接数据
US7586493B1 (en) * 2006-05-24 2009-09-08 Nvidia Corporation System and method for offloading application tasks in a multi-processor environment utilizing a driver
CN101754437A (zh) * 2008-12-19 2010-06-23 英特尔公司 处理上下文感知平台中的传感器

Also Published As

Publication number Publication date
US8813083B2 (en) 2014-08-19
KR20140018413A (ko) 2014-02-12
KR101599843B1 (ko) 2016-03-04
CN103765380A (zh) 2014-04-30
WO2013006406A3 (en) 2013-03-28
US20130007751A1 (en) 2013-01-03
WO2013006406A2 (en) 2013-01-10

Similar Documents

Publication Publication Date Title
CN103765380B (zh) 用于事件的安全排队的方法和系统
CN102567109B (zh) 中断分配方案
US8589613B2 (en) Method and system to improve the operations of an integrated non-transparent bridge device
TWI494942B (zh) 用於i/o流量的同調性開關
CN101878475B (zh) 向星形拓扑串行总线接口委托网络处理器操作
EP0306702B1 (en) Virtual input/output commands
CN101221544B (zh) 用于执行dma块移动的方法及dma设备
US8490110B2 (en) Network on chip with a low latency, high bandwidth application messaging interconnect
CN104508593B (zh) 在处理器中执行跨域热控制
US9280290B2 (en) Method for steering DMA write requests to cache memory
JPH11191075A (ja) メモリアーキテクチャーのための優先符号化及び復号化
CN107636630B (zh) 中断控制器
CN103647807A (zh) 一种信息缓存方法、装置和通信设备
TW200534102A (en) A method and apparatus to manage memory access requests
US20120311266A1 (en) Multiprocessor and image processing system using the same
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
TW201423663A (zh) 資料傳輸之系統與方法
CN110320970A (zh) 高度可缩放的加速器
CN103946822A (zh) 用于促进定制在计算设备处的多用途互连代理的机制
US9330024B1 (en) Processing device and method thereof
US9378163B2 (en) Method to accelerate message signaled interrupt processing
US8856459B1 (en) Matrix for numerical comparison
US20180373671A1 (en) Techniques to control remote memory access in a compute environment
US20150032929A1 (en) Circuitry for a computing system, lsu arrangement and memory arrangement as well as computing system
US20220414022A1 (en) Apparatus, system, and method for secure memory access control

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: 20170728

Termination date: 20210629

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