CN101196833A - 用于存储器利用的方法和装置 - Google Patents
用于存储器利用的方法和装置 Download PDFInfo
- Publication number
- CN101196833A CN101196833A CNA2007101866143A CN200710186614A CN101196833A CN 101196833 A CN101196833 A CN 101196833A CN A2007101866143 A CNA2007101866143 A CN A2007101866143A CN 200710186614 A CN200710186614 A CN 200710186614A CN 101196833 A CN101196833 A CN 101196833A
- Authority
- CN
- China
- Prior art keywords
- thread
- inbox
- access
- request
- outbox
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的一个实施例提供一种用于利用存储器的方法和装置。该方法包括为收件箱保留处理器中高速缓存的第一部分。发件箱与处理器所执行的第一线程相关联。该方法也包括从第二线程接收分组,其中该分组包括访问请求。该方法还包括使用用于收件箱的收件箱控制电路来处理所接收的分组并且确定是否批准分组中包含的访问请求。
Description
技术领域
本发明主要地涉及计算机处理器。
背景技术
计算机通常包括用于存储程序的主存储器和用于执行主存储器中存储的程序的处理器。在一些情况下,处理器可以包括能够用来同时处理来自多个执行线程(例如来自多个程序、来自多个进程和/或来自多个线程)的数据的多个处理核心。如本领域技术人员所知,各处理核心本身可以用来例如通过同时处理线程(例如同时多线程处理)或者通过在处理后续线程之前以少量时间(例如取决于优先级)处理各线程来处理多个执行线程。
通常希望具有尽可能多的处理核心,各处理核心同时处理尽可能多的线程,以便从处理器获得最大处理能力和效率。例如,多个线程可以用来执行比如视频游戏这样的应用,该视频游戏执行三维图形呈现、音效、物理仿真、玩家输入/输出和其它功能。为了向视频游戏玩家提供最逼真的体验,可能希望使各线程执行给定功能(例如一个线程可以绘制三维场景,也称之为呈现,而另一线程执行物理计算),该功能设定的时间量内需要某一数量的处理能力。例如,如果处理器用来呈现视频游戏玩家在视频游戏中执行的动作的三维序列,则可能希望快速地呈现该序列中的各画面(称为帧),使得该动作看上去平滑地出现(例如,如果视频游戏玩家执行的动作是跳跃,则可能希望该跳跃看上去平滑地向上和向下,就如同现实生活的跳跃一样)。
为了维持对执行线程的同时执行,处理器可以被配置为从计算机的主存储器高效地获取用于各执行线程的数据和/或指令。在一些情况下,获取的数据和指令可以放置于称为高速缓存的一个或者多个小型存储器中,这些存储器可以位于与处理器相同的芯片上。也可以分级地布置高速缓存,例如使得第一高速缓存(称为二级高速缓存或者L2高速缓存)由处理器中的各处理核心共享,而为给定处理核心或者一组处理核心提供多个较小的高速缓存(称为一级或者L1高速缓存)。在线程所请求的数据和指令不能在处理器高速缓存之一中获得时,处理器可以从主存储器请求数据和指令。
尽管从主存储器获取所请求的数据和指令,但是处理核心可以暂时地中止对请求数据和指令的线程的执行以提供用以满足请求的时间。在一些情况下,在中止了请求数据和指令的线程的同时,可以执行其它线程。然而,如果中止太多线程以等待数据和指令,则处理器中的一个或者多个处理核心可能在从主存储器获取数据和指令的同时保持空闲。
当处理器提供了执行多个线程的多个核心时,各线程也可以与其它线程竞争使用处理器的高速缓存空间。例如,由于处理器中的高速缓存空间可能小于计算机的主存储器,因此高速缓存空间可能没有大到足够为各处理核心所执行的各线程保持所有数据和指令。因此,当给定处理核心从执行第一线程切换到执行第二线程时,用于第一线程的数据和指令可以被从高速缓存中删除而代之以用于第二线程的数据和指令。如果随后恢复对第一线程的执行,则在用于第一线程的数据和指令被从主存储器获取并且放回到处理器的高速缓存中的同时,可以再次中止第一线程。在数据和指令被从主存储器中获取的同时中止执行线程可能会降低处理器的效率。
当处理器中的多个线程访问来自主存储器的数据和指令时,向主存储器传送的和从主存储器传送的数据数量(称为消耗的存储器带宽)可能由于各线程发送去往和来自主存储器的数据而明显增加。当消耗的存储器带宽增加时,线程所进行的各后续访问可能由于其它访问被执行而缓慢地执行(例如相对于当主存储器并未被多个线程访问时,例如当消耗的存储器带宽为低时的单独访问而言缓慢地执行)。如上所述,可能会中止等待执行存储器访问的线程,由此降低处理器的效率。
当给定的执行线程尝试访问处理器所执行的另一执行线程的数据和/或指令时,执行线程对数据和指令的访问可能更为复杂。当执行线程彼此共享数据和指令时,在没有删除在处理器的通常有限的高速缓存空间中的其它数据和指令的情况下,存储器中的数据和指令可能难以被高效地共享。如上所述,当从处理器的高速缓存空间删除数据和指令时以及当从主存储器获取其它数据和指令时,消耗的存储器带宽以及访问时间可能会增加,由此降低处理器的效率。
在过于频繁地中止处理器所执行的执行线程时,处理器所执行的应用的性能也可能受损。例如,如上文结合一种对视频游戏玩家所执行的动作的三维序列进行呈现的视频游戏所述,可能希望使动作没有停顿地平滑出现。然而,当由于例如造成上述情形之一的缓慢的存储器访问而中止了执行该呈现的线程时,所呈现的序列可能因造成不平滑动作序列的停顿而受损。
因此需要用于在处理器中管理存储器访问的改进的方法和装置。还需要用于利用处理器来呈现三维场景的改进的方法和装置。
发明内容
本发明主要提供一种用于利用存储器的方法和装置,该方法包括为收件箱保留处理器中高速缓存的第一部分。发件箱与处理器所执行的第一线程相关联。该方法也包括从第二线程接收分组,其中该分组包括访问请求。该方法还包括使用用于收件箱的收件箱控制电路来处理所接收的分组并且确定是否批准分组中包含的访问请求。
本发明的一个实施例也提供一种包括处理器高速缓存控制电路的处理器。该控制电路被配置为将处理器高速缓存的第一部分分配给处理器所执行的第一线程。对尝试访问向第一线程分配的处理器高速缓存第一部分的除第一线程以外的线程设置一个或者多个访问限制。该控制电路还被配置为从第二线程接收访问请求,其中该访问请求尝试访问处理器高速缓存的第一部分。该控制电路还被配置为向来自第二线程的访问请求施加一个或者多个限制。
本发明的一个实施例也提供如下方法,该方法包括分配处理器中高速缓存的第一部分作为用于处理器所执行的第一线程的发件箱。对尝试访问用于第一线程的发件箱的除第一线程之外的线程设置一个或者多个访问限制,并且发件箱内的存储器地址不可高速缓存。该方法也包括使用用于发件箱的发件箱电路将第一线程在高速缓存的第一部分中放置的数据从第一线程发送到第二线程。
附图说明
通过在附图中图示的本发明实施例在对上文简述的本发明的具体描述中能够具体地理解实现上述本发明的特征、优点和目的的方式。
然而将注意到附图仅仅图示了本发明的典型实施例,因此不应视为对本发明范围的限制,因为本发明可以采用其它等效实施例。
图1是描绘了根据本发明一个实施例的示例性计算机处理器的框图。
图2A-2D是图示了根据本发明一个实施例的存储器收件箱的诸多方面的框图。
图3是描绘了根据本发明一个实施例用于分配收件箱存储器空间的示例性过程的流程图。
图4是描绘了根据本发明一个实施例用于访问收件箱的示例性过程的流程图。
图5A-5B是描绘了根据本发明一个实施例用于与收件箱通信的示例性分组的框图。
图6A-6C是描绘了根据本发明一个实施例用于经由分组访问收件箱的视示例性过程的流程图。
图7A-7D是描绘了根据本发明一个实施例用于访问收件箱的示例性电路的框图。
图8是描绘了根据本发明一个实施例用于访问发件箱的示例性电路的框图。
具体实施方式
本发明的一个实施例包括一种用于利用存储器的方法和装置。该方法包括为收件箱保留处理器中高速缓存的第一部分。收件箱与处理器所执行的第一线程相关联。该方法也包括从第二线程接收分组,其中该分组包括访问请求。该方法还包括使用用于收件箱的收件箱控制电路来处理接收的分组并且确定是否批准分组中包含的访问请求。
在下文中参照本发明的实施例。然而应当理解本发明不限于所述特定实施例。相反,都可以考虑如下特征和单元的任何组合以实施和实现本发明,而不论这些特征和单元是否涉及不同实施例。另外,在各种实施例中,本发明提供相对于现有技术而言的很多优点。然而,虽然本发明的实施例可以实现相对于其它可能的解决方案和/或现有技术而言的优点,但是特定优点是否是由给定实施方式实现的,并不构成对本发明的限制。因此,如下方面、特征、实施例和优点仅仅是举例说明,并且除非在一个或者多个权利要求中有明确记载,否则并不视为所附权利要求的元素或者限制。类似地,除非在一个或者多个权利要求中有明确记载,否则提及“本发明”并不应当理解为对这里公开的任何发明主题内容的归纳,也不应当视为所附权利要求的元素或者限制。
下文是对附图中描绘的本发明实施例的具体描述。实施例是例子并且具体到能够清楚地表达本发明。然而,所提供的细节数量并不旨在于限制实施例的预期变更;恰好相反,本发明将覆盖落在如所附权利要求限定的本发明精神和范围内的所有修改、等同形式和替代。
本发明的实施例可以与例如计算机系统这样的系统一起使用并且下文参照该系统来描述本发明的实施例。如这里所用的,系统可以包括利用处理器和高速缓存存储器的任何系统,包括个人计算机、因特网设备、数字媒体设备、便携数字助理(PDA)、便携音乐/视频播放器和视频游戏控制台。尽管高速缓存存储器可以位于与利用高速缓存存储器的处理器相同的电路小片(die)中,但是在一些情况下处理器和高速缓存存储器可以位于不同的电路小片(例如在分立模块内的分立芯片或者在单个模块内的分立芯片)上。另外,尽管下文针对具有多个处理器核心和多个L1高速缓存的处理器进行了描述,但是本发明的实施例可以与利用高速缓存的任何处理器一起使用,该处理器包括具有单个处理核心的处理器。一般而言,本发明的实施例可以与任何处理器一起使用而不限于任何具体配置。
与计算机系统一起使用的程序产品
本发明的一个实施例实施为用于与计算机系统一起使用的程序产品,该计算机系统诸如图1中所示和下文所述的计算机系统100。该程序产品的一个或者多个程序限定实施例(包括这里描述的方法)的功能并且能够被包含在各种计算机可读介质上。示例性计算机可读介质包括但不限于:(i)持久存储于不可写存储介质(例如在计算机内的只读存储器设备,比如CD-ROM可读的CD-ROM盘)上的信息;(ii)存储于可写存储介质(例如在软盘驱动器或者硬盘驱动器内的软盘)上的可更改信息;以及(iii)通过通信介质,比如通过计算机或者电话网络,包括无线通信,向计算机传送的信息。后一实施例具体地包括从因特网和其它网络下载的信息。这样的计算机可读介质在承载用以指引本发明功能的计算机可读指令时代表本发明的实施例。
一般而言,被执行用以实施本发明实施例的例程可以是操作系统或者特定应用、组件、程序、模块、对象或者指令序列的一部分。本发明的计算机程序通常包括将由本地计算机转译成机器可读格式并且由此转译成可执行指令的多个指令。另外,程序包括驻留于程序本地或者在存储器中或者在存储设备上找到的变量和数据结构。此外,下文描述的各种程序可以基于如下应用来标识,在本发明的特定实施例中针对该应用来实施这些程序。然而,应当认识到仅仅出于方便而使用以下任何特定程序命名,因此本发明不应当限于仅仅用于由这样的命名所标识和/或暗示的任何特定应用中。
示例性的计算机系统
图1是描绘了根据本发明一个实施例的计算机系统100的框图。系统100可以包含一个或者多个多核心处理器102。各多核心单元102可以包括各布置在共享二级高速缓存(L2高速缓存)114周围的多个核心110。共享L2高速缓存114包括存储器中的这里称为收件箱存储器116的一部分,该部分如下文所述可以用来针对由多核心单元102中的核心110所执行的线程来管理存储器访问。各核心110也可以包括在一些情况下中可以由该核心110独占地使用的一级高速缓存(L1高速缓存)112。
在一些情况下,系统100也可以包括在一些情况下可以提供附加处理功能的又一中央处理单元(CPU)104。系统100也可以包括可以用来分别与外部I/O设备和附加系统存储器通信的输入/输出(I/O)接口106和存储器接口108。系统内的各组件可以跨经高速处理器总线150通信。系统100也可以包括可以用来将多核心处理器连接到附加系统组件的扩展总线120。尽管描绘为计算机系统100的分立组件,但是在一些情况下,图1中描绘的两项或者更多项可以组合成片上系统(SOC)的一部分。
使用处理器中的收件箱存储器
如上所述,可能希望在同时执行于处理器中的多个线程之间高效分配存储器以便提高处理器的性能。另外,当在多个线程之间共享高速缓存空间时可能难以在同时执行的线程之间传输指令和数据。
本发明的实施例在高速缓存中提供称为存储器收件箱的存储器空间,该存储器空间可以分配给在比如多核心处理器102这样的多线程处理器中执行的给定线程(这里称为属主线程)。在本发明的一个实施例中,用于收件箱的存储器空间可以独占地分配给属主线程。通过将高速缓存中的存储器空间独占地分配给属主线程,属主线程可以维持用以高速缓存它自己的指令和数据的足够存储器空间而无需另外使其它竞争线程来置换属主线程的指令和数据。因此,存储器收件箱可以通过在高速缓存的所分配收件箱部分中维持属主线程的数据和指令并且减少在从较高存储器级获取用于属主线程的数据和指令的同时拖延属主线程的可能性来改进属主线程的执行。
另外,收件箱存储器可以由其它线程用来与属主线程高效通信。例如,当另一线程具有将要向用于收件箱的属主线程提供的数据和/或指令,该另一线程可以将数据和/或指令发送到属主线程可以从中获取数据和/或指令的收件箱。类似地,在一些情况下,属主线程可以使用收件箱作为用以与其它线程传送信息的发件箱。例如,为了与另一线程传送信息,属主线程可以将信息放置于收件箱中并且向另一线程发送表明数据和/或指令位置的通知,由此允许另一线程获取信息。可选地,属主线程可以例如通过向地址进行写入或者将分组发送到与另一线程的收件箱相对应的地址(例如通过使用另一线程的收件箱作为发件箱)或者通过使用专用电路(例如用于发送线程的发件箱缓冲器和/或硬件)发送数据来向另一线程的收件箱直接提供信息。由此,收件箱存储器可以用来在防止其它线程置换数据和/或指令的同时简化发送线程与接收线程之间的通信。
图2A是根据本发明一个实施例的多核心处理器102中的存储器收件箱202...218的框图。对存储器收件箱202.218的描绘旨在于作为概念视图,因此不限于任何特定物理配置。如图所示,在各核心110中执行的线程(例如线程T0-T7)可以经由共享L2高速缓存接口222访问共享L2高速缓存114。另外,L2高速缓存接口222也可以由线程T0...T7用来访问对应的存储器收件箱202...218。如上所述,在一些情况下,各收件箱202...218可以分配给对应的T0-T7。因此,收件箱0 202可以分配给线程T0,依此类推。如下所述,通过将给定收件箱分配给给定线程,对指定收件箱的访问对于属主线程而言可以没有限制,而其它线程的访问可能受到限制。下文具体地描述示例性限制。
图2B是描绘了向处理核心110发送的和从处理核心110发送的来自存储器收件箱(例如收件箱202...208)和共享L2高速缓存114的数据的路径的框图。如上所述,可以经由共享L2高速缓存接口222访问存储器收件箱202...208和共享L2高速缓存114。当在核心110中执行的线程从收件箱202...208或者从共享L2高速缓存114获取数据时,获取的数据可以放置于用于核心110的L1高速缓存112中。可以从发布单元232发出用于线程的指令。如上所述,在一些情况下,核心110可以被配置为同时执行多个线程。因此,发布单元232可以被配置为发出用于多个线程的指令。在一些情况下,核心110可以提供可以用来在核心110中同时执行线程的多个执行单元234...238。执行单元234...238可以包括定点执行单元234、浮点执行单元236和分支执行单元238。
在本发明的一个实施例中,收件箱可以仅用于从其它线程接收数据(例如其它线程可以写数据和/或在线程之间直接发送数据)。在一些情况下,收件箱也可以用于发送数据。例如,要由线程发送的数据和/或分组可以放置于收件箱中,然后收件箱电路可以将该数据发送到进行接收的收件箱。
可选地,在一个实施例中,称为发件箱的分立缓冲器可以由各线程用来从发送线程发送数据到接收线程的收件箱。图2C是描绘了根据本发明一个实施例的示例性收件箱和发件箱的框图。在本发明的一个实施例中,各发件箱可以与给定属主线程相关联。因此,在一些情况下,用于各发件箱的存储器空间可以独占地分配给发件箱的属主线程。如图所示可以经由共享L2高速缓存接口222访问发件箱。如下文所具体描述的,发件箱存储器空间可以由发送线程用来与接收线程的收件箱通信。
尽管针对形成L2高速缓存114的一部分的收件箱和/或发件箱进行了描述,但是本发明的实施例可以与可经由本领域技术人员已知的任何方法(例如存储器映射、寄存器等)来访问的任一类存储器(例如分立缓冲器)一起使用。
如这里所述,除了传统存储器管理系统之外还可以使用收件箱和/或发件箱来操控计算机系统100中的数据。例如,在一些情况下,线程可以更新或者产生随后将要访问(例如同一线程或者另一线程将要访问)的数据。当随后将要访问更新的数据时,线程可以将更新的数据放置于L1高速缓存112中。另外,在需要时,更新的数据也可以经由共享L2高速缓存接口222放置于L2高速缓存114中或者用于更新线程的收件箱202...208中。在一些情况下,如上所述,经由共享L2高速缓存接口222对给定收件箱(例如收件箱0 202)的直接访问可以限于拥有该给定收件箱的线程(例如线程T0)。
在本发明的一个实施例中,存储器收件箱(或者在实施了发件箱时,为发件箱)内的存储器空间可以映射到全局存储器地址(例如所有存储器级包括L1高速缓存112、L2高速缓存114和主存储器,并且所有线程可以使用同一全局存储器地址来访问给定的存储器收件箱)。因此,在本发明的一个实施例中,为了访问收件箱存储器空间,属主线程可以仅对与收件箱存储器空间相对应的全局存储器地址读取或者写入所需信息。如下所述,当并不拥有存储器收件箱的线程尝试经由全局存储器地址直接访问收件箱时,可以拒绝访问。如下所述,例如经由向收件箱发送的分组消息,可以作为替代地向其它非属主线程提供其它形式的访问。
另外,在本发明的一个实施例中,存储于存储器收件箱和/或发件箱中的信息可以是本地的,使得所访问的存储器是不可高速缓存的。例如,多核心处理器102可以自动高速缓存L1高速缓存112、L2高速缓存114和其它存储器级中的信息,使得从给定存储器地址请求的信息可以在被访问的同时被从主存储器自动地获取并且维持于高速缓存级112、114之一中。对照而言,给定收件箱中的全局可寻址存储器可以仅位于收件箱中并且可以不在存储器分级的不同级(例如主存储器、共享L2高速缓存存储器114或者L1高速缓存存储器)之间移动而无需被复制到收件箱以外的新地址空间。因此,属主线程对收件箱的访问可以快速和直接执行到收件箱存储器而无需等待从存储器分级的另一级获取信息和/或在获取过程中等待转译该信息。收件箱存储器的不可高速缓存性也适用于下文描述的收件箱的分组访问(例如接收的分组或者正在发送的分组也可以放置于不可高速缓存的存储器中)。当利用发件箱时,也可以对不可高速缓存的存储器进行针对各发件箱的访问。另外,在本发明的可选实施例中,存储于收件箱或者发件箱中的信息可以高速缓存于存储器分级的其它级中。
在本发明的一个实施例中,用于收件箱/发件箱缓冲器结构的物理存储器也能够实施为比如L2高速缓存114这样的一组高速缓存级的“ 锁定”组。例如,L2高速缓存114中的高速缓存组可以针对一个或者多个存储器收件箱和/或发件箱而被专门保留,并且可以不像其它高速缓存组那样适合于逐出更换。保留的高速缓存组例如可以在制造过程中持久地保留或者可选地可以在执行过程中动态地保留。
存储器收件箱/发件箱的指定
在本发明的一个实施例中,可以从共享L2高速缓存114提供存储器收件箱和/或发件箱(例如可以针对收件箱存储器116保留L2高速缓存114的一部分)。图2D是描绘了根据本发明一个实施例的收件箱存储器116,该收件箱存储器116被从共享L2高速缓存114分成收件箱202、204等以及发件箱220等。
如图所示,各收件箱202、204等和/或发件箱220等的大小和位置可以由收件箱控制寄存器240控制。可以经由收件箱状态寄存器262来表明和/或修改各收件箱202、204等和/或发件箱220等的状态(例如启用或者禁用)。在一个实施例中,对收件箱控制寄存器240的访问可以不受限制。可选地,在一些情况下,对收件箱控制寄存器240的访问可以例如限于所批准的线程的子组(例如属主线程、属主线程的父线程、专门指定的控制线程和/或操作系统内核线程)。在一个实施例中,收件箱控制寄存器240可以包括开始地址寄存器242、248...254、大小寄存器244、250..256和属主线程标识寄存器246、252...258。也可以提供对应的寄存器262、264、266用以表明各发件箱220等的开始地址、大小和线程标识。
在一个实施例中,开始地址寄存器242、248...254可以表明各收件箱202、204等的开始地址。大小寄存器244、250...258可以表明对应的收件箱202、204等的大小。用于收件箱的存储器空间因此可以占用从对应的开始地址开始并且范围为所表明的收件箱大小的各地址。该大小可以用任何方式来表示,例如表示为以字节为单位的绝对大小,或者固定大小的整数倍(例如大小寄存器244、250...258中的大小可以表明以千字节为单位的大小)。
在一个实施例中,属主线程标识寄存器246、252...258可以标识哪个线程(例如线程T0、T1...TN)拥有给定收件箱202、204等或者发件箱220等。尽管针对线程和对应的收件箱1、2...N进行了描述,但是本发明的实施例可以与任何类型的线程和/或收件箱标识(例如编号、地址等)一起使用。在本发明的一个实施例中,收件箱标识寄存器可以用来将对对应的收件箱内的存储器地址的直接访问限制于属主线程。在一些情况下,也可以允许所选择的有限数量的其它线程进行直接访问,这些其它线程诸如属主线程的父线程、指定控制线程和/或操作系统内核线程。在一个实施例中,访问控制电路260可以用来提供受限访问。
图3是描绘了根据本发明一个实施例用于分配收件箱存储器空间的过程300的框图。过程300可以类似地用来为发件箱分配存储器空间。如图所示,过程300可以始于步骤302,其中系统100开机。在步骤304,可以接收对开始执行线程的请求,而在步骤306可以开始对线程的执行。在步骤308,可以接收用于为线程的收件箱分配存储器空间的请求。该请求可以包括任一类请求。例如,该请求可以是尝试向用于给定收件箱的地址寄存器和大小寄存器进行写入。在步骤310,可以进行关于是否有足够存储器空间用以批准分配请求的确定。该确定例如可以包括保证所选开始地址不在另一收件箱内以及保证收件箱的所选大小不与另一收件箱的存储器空间重合。
如果没有足够存储器空间用以批准分配请求,则在步骤320可以提供“未分配收件箱存储器空间”的指示。该指示可以包括任一类指示。例如,可以清除收件箱状态寄存器中与所请求的收件箱相对应的位(或者如果希望则设置该位)以表明未分配收件箱存储器空间。如果有足够的存储器空间用以批准请求,则在步骤312分配用于收件箱的存储器空间而在步骤314可以提供“已经分配收件箱存储器空间”的指示。该指示可以例如包括设置用以表明分配了收件箱存储器空间的位。
在一些情况下,可以例如通过添加或者删除控制寄存器来与图2C中所示不同地配置收件箱控制寄存器240。例如,当在连续的存储器地址上配置收件箱202、204等和/或发件箱220等时,控制寄存器可以仅包括用于第一收件箱(例如收件箱0 202)的开始地址寄存器242和用于各收件箱202、204等的大小寄存器244、250、256。然后可以通过将各先前收件箱的大小加到第一收件箱的开始地址上来确定针对给定收件箱的界限。可选地,在一个实施例中,可以针对各收件箱和/或发件箱的开始地址提供寄存器,而各收件箱可以占用从开始地址开始的存储器地址的预定范围。在其它实施例中,也可以在固定位置以固定大小提供收件箱202、204等和/或发件箱220等,使得无需利用用于分配收件箱存储器空间的过程。
对存储器收件箱/发件箱的访问
在本发明的一个实施例中,例如针对访问类型、访问模式和允许进行访问的线程来限制对给定存储器收件箱(和/或发件箱,就这里描述的各例子而言)的访问。在一些情况下,多个访问模式可以具有不同限制。例如,一种访问模式可以是对访问收件箱存储器空间的直接请求。另一访问模式可以是经由分组请求消息对收件箱进行访问。如上所述,通过提供对收件箱的受限访问,收件箱的属主线程可以在收件箱内维持用以高速缓存它自己的指令和数据的足够存储器空间而无需其它竞争线程来置换属主线程的指令和数据。下文具体描述对收件箱访问方法的示例性限制。
如上所述,在本发明的一个实施例中,访问电路260可以将对收件箱存储器空间内存储器地址(例如通过开始地址寄存器和大小寄存器来标识的存储器地址)的直接访问限于用于收件箱的属主线程。图4是根据本发明一个实施例用于经由收件箱存储器空间内的存储器地址直接访问收件箱的示例性过程400的流程图。过程400也可以适用于发件箱访问。
如图所示,过程400可以始于步骤402,其中例如经由L2高速缓存接口222接收对访问L2高速缓存存储器空间内存储器地址的请求。在步骤404,可以进行关于所请求的存储器地址是否落入收件箱的存储器空间内的确定。例如可以通过将用于该请求的存储器地址与用于共享L2高速缓存114内各所分配收件箱202、204等的开始地址寄存器242、248...254和大小寄存器244、250...256进行比较来进行这样的确定。如果所请求的存储器地址没有落入收件箱存储器空间内,则在步骤420可以将访问批准为对L2高速缓存114的常规访问。
如果所请求的存储器地址确实落入收件箱存储器空间内,则在步骤406可以进行关于请求是否来自拥有收件箱存储器空间的线程的确定。例如可以通过将进行请求的线程的线程标识与线程标识寄存器(例如寄存器246、252...258)进行比较来进行这样的确定。如果所请求的存储器地址落入收件箱存储器空间内以及如果请求来自属主线程,则在步骤420可以批准访问请求。
在一个实施例中,如果所请求的存储器地址落入收件箱存储器空间内,但是访问请求不是来自属主线程,则在步骤408可以进行关于请求是否来自被批准访问收件箱存储器空间的线程的确定。如上所述,批准的线程可以包括属主线程的父线程、专门指定的控制线程和/或操作系统内核线程。因此,如果所请求的存储器地址落入收件箱存储器空间内以及如果请求来自批准的线程,则在步骤420可以批准访问请求。如果请求不是来自批准的线程,则可以拒绝访问请求。在一些情况下,对访问请求的拒绝可能会造成产生错误指示。例如,在本发明的一个实施例中,该错误指示可以包括响应于拒绝访问请求经由访问控制电路260产生的异常。
在一些情况下,也可以使用锁定(例如使用寄存器来向获得该锁定的线程分配对收件箱存储器的暂时性独占访问)来批准对收件箱存储器空间的独占访问。在这样的情况下,希望向收件箱进行写入的线程可以获得锁定(假设另一线程尚未保持锁定)。当线程获得锁定时,然后可以批准线程访问收件箱。在线程已经完成访问收件箱之后,线程可以丢弃锁定,因此其它线程可以获得锁定并访问收件箱,或者因此属主线程能够访问收件箱。如下所述,在一个实施例中,访问请求分组也可以用来获得对收件箱一部分的独占写访问。
尽管上文针对限制对收件箱存储器空间的所有类型的直接访问进行了描述,但是在一些情况下可以仅限制对收件箱存储器空间的某些类型的访问,比如向收件箱存储器的写入。在这样的情况下,可以自由允许任何线程的其它访问,比如读访问。可选地,在本发明的一个实施例中,可以不经由硬件将对收件箱存储器空间的直接访问限于任何给定线程。
经由分组消息对存储器收件箱的访问
在本发明的一个实施例中,可以经由从线程发送到另一线程的收件箱的分组消息来提供对给定收件箱的访问。接收线程可以例如按照接收次序或者可选地根据接收的分组所表明的优先级来处理接收的分组。使用分组消息在线程之间传送数据可以通过使各线程之间的数据传输自动化来提供用于使发送线程与接收线程通信的简单接口(例如处理器可以被配置为将消息从发送线程自动地路由到接收线程)。另外,使用这样的消息可以提供对于向给定线程发送的数据量的更大控制。如下所述,在一些情况下,通过限制向给定线程发送的数据量,可以使线程具有可管理的工作量,而不使线程的收件箱超负荷和消耗处理器内的存储器带宽。
一般而言,可以用本领域技术人员已知的任何方式来执行向给定收件箱的写入。例如,可以将分组写入到发送分组给给定收件箱的存储器映射控制电路。可选地,可以提供控制寄存器,这些控制寄存器允许发送线程表明将要从发送线程传送到接收线程的收件箱的数据(例如在给定的存储器地址)。如下所述,发件箱也可以用来将数据分组从发送线程发送到接收线程。
图5A是描绘了根据本发明一个实施例的示例性分组500的框图,该分组可以用来在比如多核心处理器102这样的处理器中的线程收件箱和/或发件箱之间进行通信。如图所示,分组500可以包括报头502和主体504。报头502可以表明用于分组的目的地506并表明分组信息508。分组信息可以例如包括奇偶信息、纠错码(ECC)、分组路由信息、分组大小信息、分组源信息(例如表明分组的发送线程)或者用于发送分组的其它适当信息。报头502也可以表明分组类型,例如写请求分组、写数据分组、通知分组或者系统100中所用的任何其它类型的分组。主体504可以包括数据和/或指令。可选地,在一些情况下,例如在写请求分组或者通知分组这样的控制分组情况下,可以从分组中省略主体504。
在本发明的一个实施例中,想要向接收线程的收件箱发送信息的线程可以先发送写请求分组到接收线程的收件箱。写请求分组可以用来确定在接收线程的收件箱中是否有足够空间用以满足写请求。通过确定在接收线程的收件箱中是否有足够空间用以满足写请求,系统100可以保证接收线程在它的收件箱中具有足够空间用以接收将要写入的数据。另外,由于接收线程可以随着数据被处理而从收件箱中删除数据,所以收件箱中自由空间的数量可以表明接收线程有多繁忙(例如忙线程的收件箱可能已满)。因此,通过确定接收线程在它的收件箱中是否具有足够空间,发送线程可以确定接收线程是否具有足够时间用以处理它的收件箱中的数据而不会因不能快速处理的数据和指令而超负荷。
如果在接收线程的收件箱中有足够空间用以满足写请求,则可以批准写请求(例如通过发送响应分组或者通过在寄存器中设置可以被发送线程轮询的通知位),而发送线程可以发送后续数据分组以满足所批准的写请求。在已经发送各数据分组之后,可以发送后续通知分组以便通知接收线程来自数据分组的数据已经放置于收件箱中以供处理。可选地,如下所述,发送线程可以向一个特殊的寄存器进行写入以便通知接收线程数据已经放置于收件箱中以供处理。
另外,在本发明的一个实施例中,如图5B中所示,可以在单个分组520中提供上述由写请求分组、数据分组和通知分组提供的一个或者多个功能,该单个分组包括报头502、写请求510、包括数据和/或指令的主体504和/或可以用来通知接收线程已经接收新数据的通知信息512。如下所述,使用单个分组来提供在别的方式下由两个或者多个分组提供的功能可以减少在计算机系统100中线程间通信所需分组的数目。
图6A和6B是描绘了根据本发明一个实施例用于使用多个分组来访问收件箱的过程600、620的流程图。如图6A中所示,可以在步骤602开始用于请求访问收件箱的过程600,在该步骤602中从发送线程接收请求访问收件箱的请求分组。在步骤604,可以进行关于收件箱是否具有足够的非保留存储器空间用以批准访问请求的确定。例如,请求分组可以表明发送线程请求发送的数据量。
如果在接收线程的收件箱中空间不足,则在步骤610可以向发送线程提供“已经拒绝请求”的指示。在一个实施例中,该指示可以包括表明已经拒绝请求的响应分组。可选地,在本发明的一个实施例中,该指示可以包括在状态寄存器中已清除的位(或者可选地,已设置的位),该位表明已经拒绝了请求。在一些情况下,如果在收件箱中有非保留的空间可用,则该指示可以提供与该空间的数量有关的信息。如果需要则请求线程然后可以使用与非保留的空间的数量有关的信息来发送另一写请求分组以写入数量可接受的数据。
如果在接收线程的收件箱中有足够的非保留空间,则在步骤606可以保留用于写请求的存储器空间。尽管描绘为不同的步骤604、606,但是在本发明的一个实施例中,确定是否批准请求以及为请求而保留空间可以是单个操作(例如自动操作)。在一些情况下,将确定和保留作为单个操作来执行,可以防止其它干预性的写请求不利地干扰未处理的写请求。
在已经确定有足够的非保留空间用以满足写请求之后,在步骤608可以提供“已经批准请求”的指示。在一个实施例中,响应分组可以提供表明已经批准请求的指示。可选地,这一指示可以作为状态寄存器中的数据来提供。在一些情况下,也可以提供如下标识符,该标识符表明用于所批准的请求的保留存储器空间的位置。例如,该标识符可以是如下地址,该地址表明发送线程可以在何处向存储器收件箱进行写入。可选地,该标识符可以是发送线程可以在分组中提供的如下值,该值表明收件箱内可以写入分组内容的位置。
在本发明的一个实施例中,在已经批准访问请求之后,进行访问请求的线程可以发送写分组以将数据写到收件箱。在一些情况下,可以针对批准访问的每个请求分组发送单个写分组。可选地,单个请求分组可以用来针对多个写分组获得访问(例如多个后续写分组中的数据和/或指令可以填充收件箱中分配的空间)。
图6B是描绘了用于经由写分组向收件箱写入数据的过程620的流程图。过程620可以始于步骤622,其中从发送线程接收写数据分组,该分组包括将要写入收件箱存储器空间中的数据和/或指令。在步骤624,可以进行关于先前是否已经向发送线程批准访问请求(例如,如上文参照图6A所述)的确定。如果尚未批准访问请求(例如如果拒绝了先前的访问请求或者如果没有进行可接受的访问请求),则在步骤640可以向发送线程提供“已经拒绝写请求”的指示。
如果先前已经批准访问请求,则在步骤626可以将来自写数据分组的数据和/或指令写入到在先前访问请求过程中保留的收件箱存储器空间中。当多个写分组用来满足访问请求时,可以使用计数器来跟踪写分组已经满足了访问请求中的多少(例如如果访问请求保留了四千字节的空间,则计数器可以设置为四)。在经由写数据分组接收数据/或指令之后,可以递减计数器以表明已经满足访问请求的一部分(例如在上例中,如果在写分组中接收了一千字节的数据,则计数器可以递减到三)。
另外,在本发明的一个实施例中,各写入数据分组可以表明应当在收件箱中何处放置写数据(例如表示为与保留存储器空间之间的偏移、收件箱内的绝对地址或者通过任何其它方法)。可选地,写数据可以自动地放置于收件箱中。例如,第一接收写数据可以(例如由接收线程或者由收件箱访问电路)自动地放置于为访问请求(例如对应的访问请求可以通过写数据分组来表明)而分配的收件箱存储器空间的开头。写数据的各后续分组可以在存储器收件箱中放置于连续可用位置。作为另一例子,当批准访问请求时,可以在存储器收件箱中分配多个时隙。各写分组于是可以包含如下序号,该序号表明写分组应当放置于其中的时隙。
在步骤628,在已经在存储器收件箱中放置写数据之后,可以向发送线程提供“来自写分组的数据已经被成功写入到接收收件箱”的指示。在步骤630,也可以向接收线程提供“新的写数据已经放置于存储器收件箱中”的指示。该指示可以例如包括在状态寄存器中设置表明已经接收新的写数据的位。该位可以被适当的接收线程轮询,由此允许接收线程确定在何时新的写数据已经被接收并且已准备好被处理。可选地,该指示可以包括向接收线程发出的中断或者异常信号。在收到中断或者异常信号时,接收线程可以中止它当前正在执行的任何处理并且服务于中断(例如接收线程可以调用中断句柄或者异常句柄,该句柄可以将写数据添加到待处理数据队列)。
尽管上文针对请求分组和写分组进行了描述,但是在没有请求分组时也可以使用本发明的实施例(例如各写分组可以包括可能被允许或者拒绝的向收件箱写入数据的隐式请求)。另外,本发明的实施例也可以与读请求一起使用。读请求可以例如包括从发送线程发送到接收线程的读请求分组。如果接受读请求,则接收收件箱可以向发送线程的收件箱发送包含读数据的读响应分组。
如上所述,在一个实施例中,发送线程可以使用与收件箱相关联的电路和存储器将数据发送到接收线程的收件箱。当使用发件箱来发送数据到接收线程的收件箱时,发送线程可以在发件箱中存放待发送数据并且允许发件箱执行与发送数据有关的任何任务。通过使用发件箱来执行与发送数据有关的任务,可以减少发送线程为了向接收线程发送数据而必需的处理开销。另外,在一个实施例中,单个分组可以用来在发件箱与收件箱之间进行通信。例如,发件箱电路可以自动传送单个分组到可以位于同一处理核心110、位于同一多核心处理器102中另一处理核心100或者位于另一多核心处理器102的接收收件箱。通过使用单个分组在发件箱与收件箱之间进行通信,可以减少发件箱与收件箱之间的通信业务。
图6C是描绘了根据本发明一个实施例用于使用发件箱和收件箱在发送线程与接收线程之间进行通信的示例性过程650的框图。该过程可以始于步骤652,其中发送线程将包括写请求、数据和通知信息的分组写到属主线程所拥有的或者与属主线程相关联的发件箱。向发件箱写入的分组也可以包括用于分组的报头信息。可选地,发件箱可以在发送分组之前自动生成分组的一个或者多个部分,比如报头、写请求和/或通知信息。
在步骤654,发送线程可以向发件箱执行写入以表明发件箱中的分组已准备好被发送。例如,发送线程可以直接向发件箱寄存器、向存储器映射发件箱寄存器或者向发件箱所轮询的位置进行写入。在检测到发送线程所提供的指示时,发件箱可以在步骤656向接收收件箱发送包括写请求、数据和通知信息的分组。如下所述,发件箱与收件箱之间的硬件可以将分组从发件箱自动移到收件箱。发件箱可以在步骤658等待确认。
确认分组可以向发件箱表明是否成功地发送了分组和/或是否接受了分组所提供的请求。在一些情况下,如下所述,发件箱可以保持分组的副本以便在先前发送的分组未被接收收件箱接受的情况下重发分组。另外,在一些情况下,可以向发件箱添加超时,使得发件箱不因确认分组而等待太久。如下所述,当在超时到期之前没有收到确认分组时,发件箱可以假定分组没有收到并且尝试重发分组。
在发件箱已经在步骤656发送分组之后,可以在步骤670将分组自动路由到接收分组的接收收件箱。在收到分组时,发件箱可以在步骤672确定收件箱中是否有足够空间用以批准所接收的分组所提供的写请求。在一个实施例中,关于收件箱中是否有足够空间用以批准请求的确定可以由收件箱自动执行。例如,收件箱电路可以通过将所接收的分组中的请求写大小与表明收件箱中自由空间数量的分配寄存器进行比较来进行该确定。可选地,接收分组的收件箱的属主线程可以辅助确定是否接受所接收的分组。例如,当接收到分组时,可以调用句柄(例如经由异常或者中断)以确定收件箱是否有足够空间用以容纳所接收的写请求。
如果在收件箱中没有足够空间用以批准请求,则在步骤674,收件箱可以提供(例如自动使用收件箱电路或者经由来自属主线程的命令)确认分组到发件箱,该确认分组表明所接收的分组未被写入到收件箱。
然而,如果在收件箱中有足够空间用以批准请求,则在步骤676,数据可以被从接收的分组写入到收件箱中并且可以向收件箱的接收属主线程提供指示以通知属主线程新的数据已经被写入到收件箱。该指示可以例如作为组合分组520的一部分来提供并且可以用来向门铃寄存器写入或者生成中断。可选地,如上所述,发件箱可以例如通过产生随后由接收收件箱检测的中断信号或者通过向门铃寄存器进行写入来经由另外的机制发送通知信息。另外,在一些情况下,收件箱可以自动生成通知信息而无需从发件箱接收数据或者其它信号。在已经向接收属主线程提供指示之后,在步骤678,收件箱可以提供(自动使用收件箱电路或者经由来自属主线程的命令)确认分组到发送发件箱,该分组表示所接收的分组中的新数据已被成功写入到收件箱。
当发件箱从收件箱接收确认分组(或者任何其它类型的确认信号)时,可以在步骤660进行关于是否批准请求的确定。当批准向收件箱写入分组的请求时,在步骤662可以从发件箱中删除所发送的分组。然而,如果请求没有被批准,则发件箱可以尝试重发分组(例如,先前发送的同一分组,该分组的副本被维持于发件箱中),返回步骤656。在一个实施例中,重发可以由发件箱电路自动执行。可选地,可以(例如由发件箱)通知发送线程所发送的分组是否已被成功写到接收收件箱,由此允许发送线程尝试重发分组。
在一些情况下,发件箱或者发送线程可以仅尝试重发分组预定次数。当发件箱自动尝试重发分组时以及当收件箱在预定次数的重试之后没有成功接受所接收的分组时,发件箱可以例如通过产生发送线程可检测的错误信号或者通过引起异常来向发送线程提供错误指示。另外,尽管上文针对从接收分组的收件箱向发送分组的发件箱发送的确认分组进行了描述,但是当收件箱以其它方式提供确认,例如通过从收件箱提供由发件箱接收和解码的直接信号来提供确认时,也可以运用本发明的其它实施例。
在一些情况下,确认分组可以向发件箱提供附加信息。例如,在本发明的一个实施例中,当确认分组表明不能批准请求时,确认分组也可以表明发件箱应当何时尝试重发请求。例如,收件箱可以提供用于发送另一分组的重试时间,比如向各发件箱提供的常数时间、以接收线程的工作量(例如通过收件箱有多满来表示的工作量)为基础的估计时间或者如下随机重试间隔(例如有效锁定装置(live-lock buster)),其中可以提供该随机重试间隔以在线程反复尝试访问发件箱而不成功时避免循环时序有效锁定。在一个实施例中,发件箱也可以响应于接收到表明不能批准请求的确认分组来生成重试时间,例如表示为常数时间、估计时间或者随机重试间隔。
在一些情况下,否定的确定也可以包含保留或者优先级指示,该指示允许发件箱在随后时间重发请求。后续请求可以包括先前接收的优先级指示(例如表示为时间戳或者表示为该请求的已存在时间(age)),该指示可以由发件箱用来确定是否批准请求(例如可以先批准较高优先级的请求或者较旧的请求)。
用于管理收件箱通信的示例性电路
在本发明的一个实施例中,可以通过软件来控制收件箱之间通信的过程。例如,当发出请求的线程进行写请求时,接收写请求的线程可以进行关于是否批准写请求的确定(例如,如上文参照图6A-6B所述,接收线程执行一个或者多个指令以确定是否批准写请求)。另外,在本发明的一个实施例中,可以使用软件在线程之间传送收件箱数据分组。例如,发送线程可以向控制线程(例如内核线程)发送用以在发送线程与接收线程之间对分组进行路由的请求。内核线程然后可以控制为了传输正在发送的分组所必需的通信。
可选地,在本发明的一个实施例中,可以使用硬件(例如无需执行软件指令)来执行在线程与收件箱之间的通信过程。这样的硬件可以提供如下网络电路,该电路自动对在线程与收件箱之间发送的分组进行路由。用于网络的电路也可以用来实施如上文参照图6A、6B和6C所述的访问控制。
图7A是描绘了根据本发明一个实施例用于在存储器收件箱之间对分组进行路由的示例性网络路由电路的框图。如图所示,路由电路可以用来对去往和来自核心110中线程的数据进行路由。在一些情况下,可以在单个核心110中的线程之间、在不同核心110之间或者在不同处理器102、104之间执行路由。
在本发明的一个实施例中,路由电路可以用来对来自称之为工作量管理器线程702的控制线程的数据和/或指令进行路由。工作量管理器线程702可以用来将处理工作量分配给处理线程704。例如,当系统100用于图形处理时,处理工作量可以包括可以用来呈现三维图像的一部分的数据和/或指令。如果工作量管理器线程702确定给定的处理线程的工作已超负荷(例如,如上所述,由于处理线程704的收件箱已满),则工作量管理器线程702可以寻求另一处理线程702以分配给定的处理工作量,或者工作量管理器线程702可以在分配附加处理工作量给超负荷的处理线程704之前进行等待。
在本发明的一个实施例中,呈现工作量可以包括用来经由射线跟踪来呈现三维场景的数据和/或指令。射线跟踪技术对虚射线(imaginary ray)传播到将要呈现到计算机屏幕上的三维场景中的过程进行跟踪,这些射线表现得类似于光线。射线源自于坐在计算机屏幕后面的观看者的一只或者一双眼睛并且朝向三维场景遍历构成计算机屏幕的像素。各个被跟踪的射线进入屏幕中并且可以与场景内的对象相交。如果射线与场景内的对象相交,则使用该对象的性质以及数个其它作用因子来计算射线所暴露于的颜色和光的量或者所缺少的颜色和光。这些计算然后用来确定跟踪射线所经过的像素的最终颜色。
对于一些实施例,射线跟踪操作可以在执行射线跟踪操作时利用这里描述的收件箱和发件箱机制在处理单元之间传送信息。如在共有的共同未决申请,即序列号为11/460,797的美国专利申请中所述,第一处理单元(例如工作量管理器)上的第一线程可以通过选取从内部节点直至到达叶节点的分支来遍历如下空间索引(spatialindex),该空间索引具有对三维场景的有界体积进行限定的节点,其中基于射线是否与节点所限定的有界体积相交来选取分支。为了加速后续遍历,可以记录如下遍历历史,该遍历历史表明了对射线所相交的有界体积进行限定的一个或者多个节点以及在遍历空间索引时选取的分支。用于第一线程的发件箱控制电路可以用来将限定射线的信息发送到第二线程的收件箱以执行射线原语相交测试。用于第二线程的发件箱控制电路可以用来将射线原语测试的结果发送到第一线程的收件箱。如果射线原语相交测试的结果表明射线没有命中叶节点所限定的有界体积中包含的原语,则可以使用所记录的遍历历史来重新遍历空间索引。
当工作量管理器线程702所分配的呈现工作量是用于射线跟踪的呈现工作量时,分配给处理线程704的各工作量可以包括一个或者多个如下射线,处理线程704可以通过给定场景来跟踪这些射线。处理线程704然后可以将关于一个或者多个射线的数据返回到工作量管理器线程702,该工作管理器线程可以编译来自多个处理线程704的多个射线的数据并且使用所编译的数据来确定与射线相对应的一个或者多个像素的颜色并且显示所呈现的场景。
为了将处理工作量分配给任何处理线程704,各工作量管理器702应能够将分组发送到与不同线程704相对应的任何收件箱202、204、206、208。在本发明的一个实施例中,全交叉器(full crossbar)706(意味着工作量管理器能够访问所有收件箱202、204、206、208)可以用来对去往和来自用于任何对应的处理线程704的任何收件箱202、204、206、208的来自任何工作量管理器线程702的分组进行路由。另外,如参照图7B所示,当发件箱220、222、224、226等由发送线程用来发送信息到接收线程的收件箱202、204、206、208等时,全交叉器706也可以用来执行发送。
如上所述,在本发明的一个实施例中,电路可以用来自动确定是否批准对收件箱的访问而无需使用软件指令来执行该确定。图7B是描绘了根据本发明一个实施例的收件箱电路的框图。如图所示,收件箱202可以包括分配寄存器712,该寄存器表明有多少收件箱存储器720已经分配给访问请求。每当批准访问请求时,可以递增分配寄存器712以表明已经保留更多收件箱存储器720。
在处理线程704已经从收件箱中删除待处理数据和/或指令之后,可以递减分配寄存器712以表明附加收件箱存储器720可用。例如,在收件箱202的属主线程已经从收件箱202中删除用于处理的信息之后,该属主线程可以递减分配寄存器712。如上所述,当属主线程访问收件箱202中、分配寄存器712中、或者收件箱202的任何其它部分中的信息时,这样的访问可以针对本地不可高速缓存的存储器地址。可选地,在属主线程读取分组之后,收件箱控制电路724可以自动递减分配寄存器712。如果收件箱202已满并且接收到写请求,则分配寄存器可以返回表明收件箱202已满的值(例如预定常数)。
如上文参照图6A所述,当例如经由访问请求分组接收访问请求时,收件箱控制电路724可以被配置为自动确定是否批准访问请求。可以向发送线程提供分配响应(例如,如上文所述的响应分组或者信号)以表明已经分配存储器空间。在一个实施例中,收件箱控制电路724也可以被配置为确定是否接受传入的写数据分组以及在何处放置所接受的传入写数据分组。收件箱控制电路724可以修改用于收件箱202的收件箱控制寄存器726以例如表明所写数据的大小和/或在收件箱存储器720内的位置。收件箱控制电路724也可以提供如上所述的收件箱中断以向接收线程表明写数据已经放置于收件箱存储器720中。
在本发明的一个实施例中,如图7C中所示,门铃寄存器730可以用来向接收线程表明已经接收访问请求。在已经向收件箱控制电路724提供访问请求之后,发送线程可以向门铃寄存器730写入表明已经发送访问请求的值。可选地,当接收到包含通知信息512的分组520时,可以解析该分组并且可以将通知信息放置于门铃寄存器中。当在门铃寄存器730中收到信息时,收件箱控制电路724可以自动发出门铃中断到接收线程。当收到门铃中断时,例如,如上文参照图6A-6C所述,接收线程然后可以处理全部或者部分访问请求。在一个实施例中,属主线程可以经由本地读取和/或写入来访问门铃寄存器730。
可选地,门铃寄存器730也可以用来表明已经将数据写入到收件箱存储器720。例如,在发送线程已经将写数据写入到收件箱存储器720之后,发送线程可以向门铃寄存器730进行写入,这使得发出门铃中断到接收线程。当收到门铃中断时,接收线程可以例如检查收件箱控制寄存器728以确定写数据已经被写入到何处并且处理该数据。
在一些情况下,向门铃寄存器730写入的信息可以提供与放置于收件箱存储器720中的数据相对应的优先级。该优先级可以例如用来确定是否和/或何时发出中断到接收线程。例如,在一个实施例中,如果接收线程的优先级大于在门铃寄存器中接收的优先级,则可以不中断接收线程或者可以不发出中断,例如直至接收线程开始以小于或者等于所接收的优先级的优先级执行为止。
图8是描绘了根据本发明一个实施例用于访问发件箱的示例性电路的框图。如图所示,发件箱220可以包括分配寄存器812,该分配寄存器表明发件箱存储器820中有多少空间已经被分配给发件箱220的属主线程所发送的分组。每当属主线程发送分组时,属主线程可以检查分配寄存器812(例如经由本地读取)以确定发件箱存储器820是否包含其中可以放置传出分组的足够自由空间。如果发件箱220没有包含足够空间,则发送属主线程可以将待发送分组放置于发件箱存储器820中(例如经由本地存储),并且可以由发送线程或者由发件箱控制电路824响应于所写数据自动地递增分配寄存器812。
在一个实施例中,例如,如上文参照图6A-6C所述,发件箱控制电路824可以用来发送分组。例如,发件箱控制电路824可以检测何时将分组写入发件箱存储器820并且响应于检测到分组而自动发送分组。可选地,发送线程在将分组写入到发件箱存储器820之后可以使用发件箱控制寄存器828发出命令到发件箱控制电路824以发送分组。在一些情况下,发件箱控制电路可以经由发件箱控制寄存器828向发送线程表明所发送的分组的状态(例如成功发送、未决未处理或者未成功)。如上所述,可以经由本地读取和/或写入向发送线程提供对发件箱控制寄存器828的访问。发件箱控制电路824也可以被配置为在分组已经成功发送之后递减分配寄存器812。另外,发件箱控制电路824可以被配置为生成中断或者异常以向发送线程表明是否在发送分组的同时出现了错误和/或是否成功发送了分组。
一般而言,可以用本领域技术人员已知的任何方式来管理经由发件箱220发送的分组。例如,发件箱220可以充当用以先发送发件箱中最旧分组的先进先出(FIFO)队列。可选地,发件箱220可以充当栈(后进先出),或者发送线程可以向各分组发送可以由发件箱控制电路824确定先发送哪个分组的优先级或者分组编号。发送线程也可以经由发件箱控制寄存器828或者经由分组本身向发件箱控制电路824提供其它信息。这样的信息可以包括为发送给定分组而应当进行的尝试次数、当发送各分组时应当使用的超时(例如在等待响应时)以及其它这样的信息。可选地,发件箱控制电路824可以配置有在发送分组时使用的预定设置。
尽管上文针对本发明的实施例,但是在不脱离本发明的基本范围的情况下,可以构思本发明的其它和更多实施例,本发明的范围由所附权利要求来确定。
Claims (24)
1.一种方法,包括:
将处理器中高速缓存的第一部分分配给由所述处理器执行的第一线程,其中对尝试访问向所述第一线程分配的所述高速缓存的所述第一部分的除所述第一线程以外的线程设置一个或者多个访问限制;
从第二线程接收访问请求,其中所述访问请求尝试访问所述高速缓存的所述第一部分;以及
向来自所述第二线程的所述访问请求施加所述一个或者多个限制。
2.根据权利要求1所述的方法,其中将所述高速缓存的所述第一部分分配给所述第一线程造成所述高速缓存的所述第一部分中的存储器地址变得不可高速缓存。
3.根据权利要求1所述的方法,其中施加所述一个或者多个访问限制包括:
确定所述高速缓存的所述第一部分是否包括非保留的并且足够用以批准所述访问请求的存储器空间;以及
如果所述高速缓存的所述第一部分包括足够用以批准所述访问请求的非保留存储器空间则保留所述存储器空间的一部分用以满足所述访问请求。
4.根据权利要求1所述的方法,还包括:
批准所述访问请求;
执行与所述访问请求相对应的访问;以及
响应于执行所述访问而为所述第一线程提供通知。
5.根据权利要求4所述的方法,其中为所述第一线程提供所述通知包括发出中断到所述第一线程。
6.根据权利要求4所述的方法,其中为所述第一线程提供所述通知包括在状态寄存器中设置由所述第一线程轮询的位。
7.根据权利要求1所述的方法,其中所述第二线程由所述处理器执行。
8.一种处理器,包括:
处理器高速缓存;以及
控制电路,配置为:
将所述处理器高速缓存的第一部分分配给由所述处理器执行的第一线程,其中对尝试访问向所述第一线程分配的所述处理器高速缓存的所述第一部分的除所述第一线程以外的线程设置一个或者多个访问限制;
从第二线程接收访问请求,其中所述访问请求尝试访问所述高速缓存的所述第一部分;以及
向来自所述第二线程的所述访问请求施加所述一个或者多个限制。
9.根据权利要求8所述的处理器,其中当将所述处理器高速缓存的所述第一部分分配给所述第一线程时,所述控制电路被配置为使所述处理器高速缓存的所述第一部分中的存储器地址变得不可高速缓存。
10.根据权利要求8所述的处理器,其中当施加所述一个或者多个访问限制时,所述控制电路被配置为:
确定所述处理器高速缓存的所述第一部分是否包括非保留的并且足够用以批准所述访问请求的存储器空间;以及
如果所述处理器高速缓存的所述第一部分包括足够用以批准所述访问请求的非保留存储器空间则保留所述存储器空间的一部分用以满足所述访问请求。
11.根据权利要求8所述的处理器,其中所述控制电路还被配置为:
批准所述访问请求;
检测与所述访问请求相对应的访问;以及
响应于检测到所述访问而为所述第一线程提供通知。
12.根据权利要求11所述的处理器,其中为所述第一线程提供所述通知包括发出中断到所述第一线程。
13.根据权利要求11所述的处理器,其中为所述第一线程提供所述通知包括在状态寄存器中设置由所述第一线程轮询的位。
14.根据权利要求8所述的处理器,其中所述第二线程由所述处理器执行。
15.一种方法,包括:
分配处理器中高速缓存的第一部分作为用于由所述处理器执行的第一线程的发件箱,其中对尝试访问用于所述第一线程的所述发件箱的除所述第一线程之外的线程设置一个或者多个访问限制,其中所述发件箱内的存储器地址不可高速缓存;以及
使用用于所述发件箱的发件箱电路将所述第一线程在所述高速缓存的所述第一部分中放置的数据从所述第一线程发送到第二线程。
16.根据权利要求15所述的方法,还包括:
分配用于所述第二线程的收件箱,其中对尝试访问用于所述第二线程的所述收件箱的除所述第二线程之外的线程设置一个或者多个访问限制;
从所述发件箱电路接收访问请求,其中所述访问请求尝试将所述高速缓存的所述第一部分中的所述数据发送到所述收件箱;以及
向来自所述发件箱电路的所述访问请求施加所述一个或者多个限制。
17.根据权利要求16所述的方法,其中向来自所述发件箱电路的所述访问请求施加所述一个或者多个限制包括:
确定收件箱是否包括非保留的并且足够用以批准所述访问请求的存储器空间;以及
如果所述处理器高速缓存的所述第一部分包括足够用以批准所述访问请求的非保留存储器空间则保留所述收件箱的一部分用以满足所述访问请求。
18.根据权利要求16所述的方法,还包括:
批准所述访问请求;
执行与所述访问请求相对应的对所述收件箱的访问;以及
响应于执行所述请求,为所述第二线程提供通知。
19.根据权利要求19所述的方法,其中为所述第二线程提供所述通知包括发出中断到所述第二线程。
20.根据权利要求19所述的方法,其中为所述第二线程提供所述通知包括在状态寄存器中设置由所述第二线程轮询的位。
21.根据权利要求18所述的方法,还包括:
响应于批准所述访问请求,向所述发件箱电路提供表明已经批准所述访问请求的响应。
22.根据权利要求15所述的方法,其中所述第二线程由所述处理器执行。
23.根据权利要求16所述的方法,还包括在射线跟踪操作利用所述发件箱和收件箱,包括:
将射线生成到三维场景中;
通过选取从内部节点直至到达叶节点的分支来遍历空间索引,该空间索引具有对所述三维场景的有界体积进行限定的节点,其中基于所述射线是否与由所述节点限定的有界体积相交来选取分支;
记录遍历历史,该遍历历史表明了对所述射线所相交的有界体积进行限定的一个或者多个节点以及在遍历所述空间索引时选取的分支;以及
将限定所述射线的信息发送到处理单元以执行射线原语相交测试,其中经由所述收件箱和发件箱发送限定所述射线的所述信息以及所述射线原语相交测试的结果。
24.根据权利要求23所述的方法,其中所述射线跟踪操作还包括:
如果所述射线原语相交测试的所述结果表明所述射线没有命中由所述叶节点限定的所述有界体积中包含的原语,则使用所述记录的遍历历史来重新遍历所述空间索引。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/567,874 US7818503B2 (en) | 2006-07-28 | 2006-12-07 | Method and apparatus for memory utilization |
US11/567,874 | 2006-12-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101196833A true CN101196833A (zh) | 2008-06-11 |
CN101196833B CN101196833B (zh) | 2013-02-27 |
Family
ID=39547266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101866143A Active CN101196833B (zh) | 2006-12-07 | 2007-11-14 | 用于存储器利用的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101196833B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912394A (zh) * | 2016-04-25 | 2016-08-31 | 深圳市万普拉斯科技有限公司 | 线程处理方法和系统 |
CN106598706A (zh) * | 2015-10-15 | 2017-04-26 | 五八同城信息技术有限公司 | 一种提高服务器的稳定性的方法、装置及服务器 |
CN108885559A (zh) * | 2016-03-29 | 2018-11-23 | 微软技术许可有限责任公司 | 在多个处理器之间快速转移工作负载 |
WO2019097344A1 (en) * | 2017-11-14 | 2019-05-23 | International Business Machines Corporation | Memory based configuration state registers |
-
2007
- 2007-11-14 CN CN2007101866143A patent/CN101196833B/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598706A (zh) * | 2015-10-15 | 2017-04-26 | 五八同城信息技术有限公司 | 一种提高服务器的稳定性的方法、装置及服务器 |
CN108885559A (zh) * | 2016-03-29 | 2018-11-23 | 微软技术许可有限责任公司 | 在多个处理器之间快速转移工作负载 |
CN108885559B (zh) * | 2016-03-29 | 2021-12-03 | 微软技术许可有限责任公司 | 在多个处理器之间快速转移工作负载 |
CN105912394A (zh) * | 2016-04-25 | 2016-08-31 | 深圳市万普拉斯科技有限公司 | 线程处理方法和系统 |
WO2019097344A1 (en) * | 2017-11-14 | 2019-05-23 | International Business Machines Corporation | Memory based configuration state registers |
GB2581111A (en) * | 2017-11-14 | 2020-08-05 | Ibm | Memory based configuration state registers |
GB2581111B (en) * | 2017-11-14 | 2020-12-23 | Ibm | Memory based configuration state registers |
Also Published As
Publication number | Publication date |
---|---|
CN101196833B (zh) | 2013-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7818503B2 (en) | Method and apparatus for memory utilization | |
US10382574B2 (en) | Systems and methods for providing messages to multiple subscribers | |
US7200695B2 (en) | Method, system, and program for processing packets utilizing descriptors | |
US9838340B2 (en) | Systems and methods for storing message data | |
US8205067B2 (en) | Context switching and synchronization | |
US20130074088A1 (en) | Scheduling and management of compute tasks with different execution priority levels | |
US20070294447A1 (en) | Information Processing Apparatus and Access Control Method Capable of High-Speed Data Access | |
US7617344B2 (en) | Methods and apparatus for controlling access to resources in an information processing system | |
CN103827842A (zh) | 向控制器存储器空间写入消息 | |
US11983437B2 (en) | System, apparatus and method for persistently handling memory requests in a system | |
KR102212269B1 (ko) | I/o 패킷 압축을 위한 레지스터 파일 | |
US10810146B2 (en) | Regulation for atomic data access requests | |
CN101196833B (zh) | 用于存储器利用的方法和装置 | |
CN101421791B (zh) | 用于主机和外围设备之间通信的队列深度管理的方法 | |
US20020112105A1 (en) | Method and apparatus for efficient messaging between memories across a PCI bus | |
CN101196835B (zh) | 用于在线程之间通信的方法和装置 | |
US20060149885A1 (en) | Enforcing global ordering through a caching bridge in a multicore multiprocessor system | |
CN110035021B (zh) | 针对原子数据访问请求进行的资源分配 | |
US10579428B2 (en) | Data token management in distributed arbitration systems | |
CN107203890A (zh) | 凭证数据发放方法、装置及系统 | |
WO2010119932A1 (ja) | マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム | |
US11226910B2 (en) | Ticket based request flow control | |
CN109302377B (zh) | 一种应用功能实现方法、装置、设备和存储介质 | |
CN114741214A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |