CN101196835A - 用于在线程之间通信的方法和装置 - Google Patents

用于在线程之间通信的方法和装置 Download PDF

Info

Publication number
CN101196835A
CN101196835A CNA2007101927522A CN200710192752A CN101196835A CN 101196835 A CN101196835 A CN 101196835A CN A2007101927522 A CNA2007101927522 A CN A2007101927522A CN 200710192752 A CN200710192752 A CN 200710192752A CN 101196835 A CN101196835 A CN 101196835A
Authority
CN
China
Prior art keywords
inbox
thread
bag
request
access
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
CNA2007101927522A
Other languages
English (en)
Other versions
CN101196835B (zh
Inventor
J·K·克里格尔
E·O·梅德里奇
R·D·胡佛
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Priority claimed from US11/567,882 external-priority patent/US7752413B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101196835A publication Critical patent/CN101196835A/zh
Application granted granted Critical
Publication of CN101196835B publication Critical patent/CN101196835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了用于在处理器中的线程之间通信的方法和装置。该方法包括为收件箱保留处理器中的高速缓存的第一部分。收件箱与由处理器执行的第一线程相关联。该方法还包括从第二线程接收包,其中该包包括访问请求。该方法进一步包括使用收件箱控制电路用于收件箱以处理接收的包并且确定是否授权包括在包中的访问请求。

Description

用于在线程之间通信的方法和装置
技术领域
本发明的实施例一般涉及计算机处理器。
背景技术
计算机通常包括用于存储程序的主存储器和用于执行在主存储器中存储的程序的处理器。在一些情况下,处理器可能包括多处理核其可以用于同时处理来自执行的多线程的数据(例如来自多程序,来自多处理,和/或来自多线程)。如本领域技术人员已知的,在处理随后的线程之前例如,通过同时处理线程(同时的多线程)或通过在短时间内处理每个线程(例如按照预定的优先级),每个处理核本身可以被用于处理执行的多线程。
一般期望使得尽可能多的处理核每个都同时处理尽可能多的线程,以便从处理器获得最大的处理能力和效率。例如,多个线程可以用于执行应用,例如执行三维图形呈现的视频游戏、音响效果、物理模拟、玩家输入/输出和其他功能。为向视频游戏玩家提供最真实的体验,可能期望使得每个线程执行给定的功能(例如一个线程可能绘制三维场景,也称为呈现,而另外的线程执行物理计算),这在设定的时间内需要一定量处理能力。例如,如果处理器是用于在视频游戏中呈现由视频游戏玩家执行的动作的三维序列,则可能期望按照序列快速呈现每个图片(称为帧),使得动作显得平滑地发生(例如,如果由视频游戏玩家执行的动作为跳跃,则可能期望跳跃象真实生活中的跳跃一样向上和向下平滑地发生)。
为维持执行线程的同时执行,处理器可以配置为有效地从计算机的主存储器取回数据和/或用于每个执行线程的指令。在一些情况下,取回的数据和指令可以放置在称为高速缓存的一个或多个小的存储器中,其可以位于与处理器相同的芯片上。高速缓存也可能是按等级排列,例如,使得第一高速缓存(称为二级高速缓存,或L 2高速缓存)由处理器中的每个处理核共享,而将多个较小的高速缓存(称为一级,或L1高速缓存)提供给给定的处理核或处理核的组。当线程所请求的数据和指令在处理器高速缓存之一中不可用时,处理器可能从主存储器请求数据和指令。
尽管请求的数据和指令是从主存储器取回,但请求数据和指令的线程的执行可以暂时被处理核中止,以便为满足请求提供时间。在一些情况下,其他的线程可以执行,而请求数据和指令的线程被中止。然而,如果过多的线程被中止以等待数据和指令,则处理器中的一个或多个处理核可以在从主存储器取回数据和指令的同时,保持空闲。
当处理器提供执行多线程的多个核,每个线程也可以为处理器的高速缓存空间的使用与其他的线程竞争。例如,因为处理器中的高速缓存空间可能比计算机的主存储器小,高速缓存空间可能不是足够大到可以保持由每个执行的核执行的每个线程的所有的数据和指令。因而,当给定的处理核从执行第一线程切换到执行第二线程时,可以从高速缓存移除用于第一线程的数据和指令并且替换为用于第二线程的数据和指令。如果随后恢复第一线程的执行,则第一线程可能再次中止,同时从主存储器取回用于第一线程的数据和指令并且放回到处理器的高速缓存中。在从主存储器取回数据和指令的同时中止执行的线程可能降低处理器的效率。
当处理器中的多线程从主存储器访问数据和指令时,向和从主存储器传输的数据量(称为消耗的存储器带宽)可能随着每个线程向和从主存储器发送数据而显著地增加。当消耗的存储器带宽增加时,随着其他的访问的执行,线程的每个后续的访问会慢速执行(例如相对于主存储器未由多线程访问时的单个访问慢速,例如,当消耗的存储器带宽为低时)。如上所述,等待存储器访问得以执行的线程可以被中止,因而降低了处理器的效率。
当给定线程的执行试图访问由处理器正在执行的另一个线程的执行的数据和/或指令时,由线程的执行访问的数据和指令可能进一步复杂化。当线程的执行彼此共享数据和指令时,如果不在处理器的通常有限的高速缓存空间中移除其他的数据和指令,将难以有效地在存储器中共享数据和指令。如上所述,随着数据和指令从处理器的高速缓存空间被移除,并且随着其他的数据和指令被从主存储器取回,消耗的存储器带宽以及访问时间可以增加,因而降低了处理器的效率。
当由处理器执行的线程的执行过频繁地中止时,由处理器执行的应用的性能也会受到不利影响。例如,如上所述关于呈现由视频游戏玩家执行的动作的三维序列的视频游戏,可能期望使得动作显得平滑和没有任何的中止。然而,当由于例如上述情形之一引起的慢的存储器访问使得执行呈现的线程中止时,呈现序列会受到中止的不利影响,这导致了不平滑的动作序列。
因此,所需要是改善的方法和装置,用于管理处理器中的存储器访问。还需要是改善的方法和装置,用于利用处理器呈现三维场景。
发明内容
本发明的实施例一般地提供了用于在处理器中的线程之间通信的方法和装置。该方法包括为收件箱保留处理器中的高速缓存的第一部分。收件箱与由处理器执行的第一线程相关联。该方法还包括从第二线程接收包,其中该包包括访问请求。该方法进一步包括使用收件箱控制电路用于收件箱以处理接收的包并且确定是否授权包括在该包中的访问请求。
一个实施例还提供了处理器,包括处理器高速缓存和收件箱控制电路。收件箱控制电路配置为为收件箱保留处理器高速缓存的第一部分。收件箱与由处理器执行的第一线程相关联。收件箱控制电路还配置为从第二线程接收包,其中该包包括访问请求。收件箱控制电路进一步配置为处理接收的包并且确定是否授权包括在包中的访问请求。
一个实施例进一步提供了一种方法,包括分配处理器中的高速缓存的第一部分作为发件箱,用于由处理器执行的第一线程。该方法还包括将来自第一线程的数据放置在发件箱中并且使用发件箱控制电路用于发件箱以将由第一线程作为包放置在收件箱中的数据发送到用于第二线程的收件箱。
附图说明
通过参考附图所示的本发明的实施例,提供了获得和详细理解本发明的上述特征、优点和目的的方式以及对上述内容简要概括的本发明的更特别的说明。
然而应当注意,只示出了本发明的典型实施例并且因此不构成对其范围的限制,因为本发明允许其他等效的实施例。
图1是描述根据本发明的一个实施例的示例性计算机处理器的方框图;
图2A-D是说明根据本发明的一个实施例的存储器收件箱方面的方框图;
图3是描述根据本发明的一个实施例的用于分配收件箱存储器空间的示例性处理的流程图;
图4是描述根据本发明的一个实施例的用于访问收件箱的示例性处理的流程图;
图5A-B是描述根据本发明的一个实施例的用于与收件箱通信的示例性包的方框图;
图6A-6C是描述根据本发明的一个实施例的用于经由包访问收件箱的示例性处理的流程图;
图7A-D是描述根据本发明的一个实施例的用于访问收件箱的示例性电路的方框图;
图8是描述根据本发明的一个实施例的用于访问发件箱的示例性电路的方框图。
具体实施方式
本发明一般地提供了用于在处理器中的线程之间通信的方法和装置。该方法包括为收件箱保留处理器中的高速缓存的第一部分。收件箱与由处理器执行的第一线程相关联。该方法还包括从第二线程接收包,其中该包包括访问请求。该方法进一步包括使用收件箱控制电路用于收件箱以处理接收的包并且确定是否授权包括在包中的访问请求。
以下,参考本发明的实施例。然而,应当理解本发明不限于所描述的特定实施例。相反,以下的特征和元素的任意的组合,无论是否涉及不同的实施例,都可预期用于实施和实现本发明。此外,本发明的各种实施例提供了优于现有技术许多优点。然而,虽然发明的实施例可以实现优于其他可能的方案和/或现有技术的优点,但无论特定的优点是否由给定的实施例来实现,都不限制本发明。因而,下列方面、特征、实施例和优势仅仅是说明性的并且不应认为是所附权利要求书的元素或限制,除当在一个或多个权利要求中有明确的表述。同样地,提及″本发明″将不构成在此公开的任何发明主题的概括并且不应认为是所附权利要求书的元素或限制,除当在一个或多个权利要求中有明确的表述。
以下是在附图中描述的本发明的实施例的详细描述。实施例为示例并且详细到可以明确地说明本发明。然而,所提供的细节的数量不试图限制可能的实施例的变形;相反,本发明将覆盖落入到如由所附权利要求书限定的本发明的精神和范围内的所有修改、等效方案和替代方案。
本发明的实施例可用于例如计算机系统的系统并且关于该系统在以下进行描述。在此使用的系统可以包括任何系统,其利用处理器和高速缓冲存储器并且包括个人计算机、互联网应用、数字媒体应用、便携式数字助理(PDA)、便携式音乐/视频播放器和视频游戏控制台。尽管高速缓冲存储器可以与利用高速缓冲存储器的处理器位于相同的晶片上,但在一些情况下,处理器和高速缓冲存储器可以位于不同的晶片上(例如在分离的模块内的分离的芯片或在单一的模块内的分离的芯片)。尽管本发明的实施例如下描述的处理器具有多处理器核以及多L1高速缓存,但本发明的实施例可以使用任何利用高速缓存的处理器,包括具有单一处理核的处理器。一般而言,本发明的实施例可以利用任何处理器并且不限于任何特定的配置。
用于计算机系统的程序产品
本发明的一个实施例实现为程序产品,其用于例如图1中示出的和如下描述的计算机系统100的计算机系统。程序产品的一个或多个程序定义了实施例的功能(包括在此描述的方法)并且可以包含在各种计算机可读介质中。示例性计算机可读介质包括,但不限于:(i)永存地存储在非可写入存储媒体上(例如计算机内的只读存储器设备,诸如由CD-ROM驱动器可读的CD-ROM盘)的信息;(ii)存储在可写入存储媒体(例如在软盘驱动器中的软盘或磁盘驱动器)上的可改变的信息;和(iii)由通信媒介通过例如计算机或包括无线通信的电话网络传送到计算机的信息。后者的实施例特别地包括从互联网或其他网络下载的信息。当执行引导本发明的功能的计算机可读指令时,这样的计算机可读介质表示了本发明的实施例。
一般而言,为实现本发明的实施例执行的历程可以是操作系统或特定应用、部件、程序、模块、对象、或指令的序列的一部分。本发明的计算机程序通常包括多个指令,其由本地计算机翻译成为机器可读格式以及因而可执行的指令。同样,程序包括变量和数据结构,其或者本地地驻留于程序中或者在存储器或存储设备中。另外,此后描述的各种程序可以基于应用而得以识别,其为该应用实现在本发明的指定实施例中。然而应当理解,任何如下的特定程序术语表仅为方便起见并且因此本发明不应限于仅仅使用由这样的术语表识别和/或隐含的任何指定的应用。
示例性计算机系统
图1是描述根据本发明的一个实施例的计算机系统100的方框图。系统100包括一个或多个多核处理器102。每个多核单元102包括多个核110,其每一个排列在共享二级高速缓存(L2高速缓存)114周围。共享L2高速缓存114可以包括存储器的一部分,在此称为收件箱存储器116,其如下所述可用于管理对由在多核单元102中的核110执行的线程的存储器访问。每个核110还包括一级高速缓存(L1高速缓存)112,在某些情况下,其仅由核110使用。
在某些情况下,系统100还可以包括进一步的中央处理单元(CPU)104,在某些情况下,其可以提供附加的处理功能性。系统100还可以包括输入/输出(I/O)接口106和存储器接口108,其可以用于分别与外部的I/O设备和附加的系统存储器进行通信。系统内的每个部件可以通过高速处理器总线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的数据路径的方框图。如上所述,存储器收件箱202...208和共享L2高速缓存114两者可经由共享L2高速缓存接口222得以访问。当在核110中执行的线程从收件箱202...208或从共享L2高速缓存114取回数据时,所取回的数据可以放置在L1高速缓存112中用于核110。线程的指令可以从发布单元232发布。如上所述,在一些情况下,核110可以配置为同时执行多线程。因此,发布单元232可以配置为发布用于多线程的指令。在一些情况下,核110可提供多执行单元234...238,其可以用于同时执行在核110中的线程。执行单元234...238可包括固定点执行单元234,浮点执行单元236,和分支执行单元238。
在本发明的一个实施例中,收件箱可以只用于从其他线程接收数据(例如,其他线程可以直接在收件箱之间写入数据和/或发送数据)。在一些情况下,收件箱也可以用于发送数据。例如,待由线程发送的数据和/或包可以放置在收件箱中并且然后收件箱电路可以将数据发送到接收的收件箱。
可选地,在一个实施例中,称为发件箱的分离的缓冲器可以由每个线程使用以从发送的线程将数据发送到接受线程的收件箱。图2C是描述根据本发明的一个实施例的示例性收件箱和发件箱的方框图。在本发明的一个实施例中,每个发件箱可以与给定的拥有者线程相关联。因此,在某些情况下,每个发件箱的存储器空间可以排他地分配给发件箱的拥有者线程。如所述,发件箱可经由共享L2高速缓存接口222得以访问。如下更详细的描述,发件箱存储器空间可用于通过发送线程来与接收的线程进行通信。
尽管关于形成L2高速缓存114的一部分的收件箱和/或发件箱进行了描述,发明的实施例可以用于可经由任何本领域技术人员已知的方法访问的(例如存储器映射、寄存器等)任何类型的存储器(例如分离的缓冲器)。
如在此所述,收件箱和/或发件箱可在传统存储器管理系统之外得以使用,以在计算机系统100中操纵数据。例如,在某些情况下,线程可以更新或产生待今后(例如由相同的线程或由另一个线程)访问的数据。当更新的数据是待今后访问时,线程可以将更新的数据放置在L1高速缓存112中。此外,当期望时,更新的数据还可以放置在L2高速缓存114或在收件箱202...208中,以便经由共享L2高速缓存接口222更新线程。在一些情况下,如上所述,经由共享L2高速缓存接口222对给定收件箱(例如收件箱0 202)的直接访问将会限制到拥有该给定的收件箱的线程(例如线程T0)。
在本发明的一个实施例中,存储器收件箱(或发件箱,如果有的话)内的存储器空间可以映射到全局存储器地址(例如包括L1高速缓存112、L2高速缓存114和主存储器的所有级别的存储器以及所有的线程都可以使用相同的全局存储器地址以访问给定的存储器收件箱)。因此,在本发明的一个实施例中,为访问收件箱存储器空间,拥有者线程可以只读取或写入对应于收件箱存储器空间的、对全局存储器地址期望的信息。如下所述,当不拥有存储器收件箱的线程试图经由全局存储器地址直接访问收件箱时,访问可能被拒绝。如下所述,取而代之可以向其他非拥有者线程提供访问的其他形式,例如经由发送给收件箱的分包化的消息。
同样,在本发明的一个实施例中,存储在存储器收件箱和/或发件箱中的信息可以是本地的,以至于被访问的存储器不可进行缓冲存储。例如,信息在L1高速缓存112、L2高速缓存114、和其他的存储器级别中的信息可以自动地由多核处理器102缓冲存储,使得从给定的存储器地址请求的信息可以自动地从主存储器取回并且在被访问的同时保持在高速缓存级别112、114之一中。相反,给定的收件箱中的全局可寻址存储器只可位于收件箱中并且在不是拷贝到收件箱之外的新的地址空间的情况下,不可在存储器层次的不同的级别之间移动(例如主存储器、共享L2高速缓冲存储器114,或L1高速缓冲存储器)。因此,由拥有者线程对收件箱的访问可以快速和直接地执行到收件箱存储器,而不等待信息被从存储器层次的另一个级别取回和/或在取回期间被转换。收件箱存储器的不可缓冲存储性还可以关于如下描述的收件箱的分包化访问得以应用(例如接收的包或发送的包还可以放置在不可缓冲存储存储器中。在利用发件箱时,也可以对不可缓冲存储存储器进行对每个发件箱的访问。此外,在本发明的优选实施例中,存储在收件箱或发件箱中的信息可以缓冲存储在存储器层次的其他级别。
在本发明的一个实施例中,用于收件箱/发件箱缓冲器结构的物理存储器还可以实现为例如L2高速缓存114的缓冲存储器级别的“锁定的”集合。例如,在L2高速缓存114中的高速缓存集合可以针对一个或多个存储器收件箱和/或发件箱特定地保留并且不象其他高速缓存集合适合于插拔置换。保留的高速缓存集合可以例如在制造期间永存地保留或可选地在执行期间动态地保留。
存储器收件箱/发件箱的分配
在本发明的一个实施例中,存储器收件箱和/或发件箱可以从共享L2高速缓存114提供(例如L2高速缓存114的一部分可以为收件箱存储器116保留)。图2D是描述根据本发明的一个实施例的从共享L2高速缓存114到收件箱202、204等和发件箱220等进行分区的收件箱存储器116的方框图。
如所述,每个收件箱202、204等和/或发件箱220等的大小和位置可以由收件箱控制寄存器240来控制。每个收件箱202、204等和/或发件箱220等的状态(例如激活的或未激活的)可以经由收件箱状态寄存器262指出和/或修改。在一个实施例中,对收件箱控制寄存器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可以在系统100通电的步骤302处开始。在步骤304,可以接收开始执行线程的请求,并且在步骤306,线程的执行可以开始。在步骤308,接收请求以为线程的收件箱分配存储器空间。请求可以包括任何类型的请求。例如,可以试图将请求为给定的收件箱写入地址寄存器和尺寸寄存器。在步骤310,可以确定是否有足够的存储器空间以授权分配请求。确定例如可以包括确认选择的开始地址不在另一个收件箱内并且确认收件箱的选择的大小不重叠另一个收件箱的存储器空间。
如果没有足够的存储器空间以授权分配请求,则在步骤320提供收件箱存储器空间未分配的指示。该指示可以包括任何类型的指示。例如,可以清除(或如果愿意,可以设置)对应于请求的收件箱的收件箱状态寄存器中的位,以指示该收件箱存储器空间未分配。如果有足够的存储器空间以授权请求,则在步骤312分配收件箱的存储器空间并且在步骤314提供收件箱存储器空间已分配的指示。该指示可以包括例如设置位以指示收件箱存储器空间已分配。
在一些情况下,收件箱控制寄存器240可以与图2C中的描述不同地排列,例如添加或移除控制寄存器。例如,当收件箱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的方框图,包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中所述,用于向收件箱请求访问处理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))其用于避免循环的定时活锁,在其中线程重复地尝试访问收件箱而不成功。在一个实施例中,响应于接收指示请求未授权的确认包,发件箱还可生成再次尝试时间,例如作为常数时间、估计时间,或随机的再次尝试间隔。
在一些情况下,否定的确认还可包含保留或优先级指示,其允许发件箱在后续的时间重新发送请求。后续的请求可包括先前接收的优先级指示(例如作为时间戳或作为请求的寿命)其可由收件箱用于确定是否授权请求(例如可首先授权较高优先级的请求或较早的请求)。
用于管理收件箱通信的示例性电路
在本发明的一个实施例中,在收件箱之间通信的处理可由软件控制。例如,当写入请求由请求线程做出时,是否授权写入请求的确定可由接收写入请求的线程做出(例如如上关于图6A-B所述,可由接收线程执行一个或多个指令以确定是否授权写入请求)。此外,在本发明的一个实施例中,软件可用于在线程之间就收件箱数据包进行通信。例如,发送线程可将请求发送到控制线程(例如核心线程)以在发送线程和接收线程之间路由包。核心线程则可控制传输已经发送的包所需要的通信。
可选地,在本发明的一个实施例中,可以使用硬件(例如不执行软件指令)来执行在线程和收件箱之间的通信处理。这样的硬件可提供在线程和收件箱之间自动路由发送的包的网络电路。用于网络的电路还可用于实现访问控制,如上关于图6A、6B和6C所述。
图7是描述根据本发明的一个实施例的用于在存储器收件箱之间路由包的示例性网络路由电路的方框图。如所述,路由电路可以用于在核110中将数据路由到线程和从线程路由数据。在一些情况下,路由可以在单一的核110中的、在分离的核110之间的或在分离的处理器102、104之间的线程之间执行。
在本发明的一个实施例中,路由电路可以用于从称为工作量管理者线程702的控制线程路由数据和/或指令。工作量管理者线程702可以用于分配处理工作量到处理线程704。例如,当系统100用于图形处理时,处理工作量可包括数据和/或指令,其可以用于呈现三维图像的一部分。如果工作量管理者线程702确定给定的处理线程704工作超负荷(例如,如上所述,因为处理线程704具有满的收件箱),则工作量管理者线程702可寻找另外的处理线程702以分配给定的处理工作量,或工作量管理者线程702在将附加处理工作量分配到超负荷的处理线程704之前可等待。
在本发明的一个实施例中,呈现工作量可包括数据和/或指令,其用于经由射线跟踪呈现三维场景。射线跟踪技术跟踪到待呈现在计算机屏幕上的三维场景中的假想射线的传播,射线的行为类似于光线。射线源于坐在计算机屏幕后的观察者的眼睛,并且穿过构成计算机屏幕的像素而通过,朝向三维场景。每个跟踪的射线行进到场景之中并且可以与场景以内的物体相交。如果射线与场景以内的物体相交,则使用该物体的属性以及多个其他起作用的因素来计算射线暴露处的颜色和光的量、或者其中的缺乏。然后,使用这些计算来确定跟踪的射线所通过的像素的最终颜色。
对某些实施例,射线跟踪操作可在执行射线跟踪操作时,利用在此描述的收件箱和发件箱机制在处理元件之间传输信息。如在共同拥有的待审美国专利申请No.11/460,797所述,在第一处理元件(例如工作量管理者)上的第一线程可以通过从内部节点获取分支来遍历具有定义三维场景的边界体积的节点的空间索引,直到达到叶节点,其中基于射线是否与由节点定义的边界体积相交来获取分支。为在遍历空间索引时加快后续的遍历,可以记录指示定义射线相交的边界体积的一个或多个节点和所获取的分支的遍历历史。第一线程的发件箱控制电路可用于向第二线程的收件箱发送定义射线的信息以执行射线图元相交试验。第二线程的发件箱控制电路可用于向第一线程的收件箱发送射线原始试验的结果。如果射线图元相交试验的结果指示射线没有击中包含在由叶节点定义的边界体积中的图元,则可以使用记录的遍历历史重新遍历空间索引。
当呈现由工作量管理者线程702分配的工作量是为射线跟踪呈现工作量时,分配给处理线程704的每个工作量可包括处理线程704可通过给定的场景跟踪的一个或多个射线。处理线程704则可向工作量管理者线程702返回关于一个或多个射线的数据,工作量管理者线程702可为来自多个处理线程704的多个射线汇编数据并且使用汇编的数据确定对应于射线的一个或多个像素的颜色并且显示待呈现的场景。
为向任何处理线程704分配处理工作量,每个工作量管理者702能够向对应于分离的线程704的任何收件箱202、204、206、208发送包。在本发明的一个实施例中,全交叉条(full crossbar)706(即,工作量管理者可访问全部的收件箱202、204、206、208)可以用于为任何相应的处理线程704,从任何工作量管理者线程702向以及从任何收件箱202、204、206、208路由包。此外,如关于图7B所述,当发件箱220、222、224、226等由发送线程使用以向接收线程的收件箱202、204、206、208等发送信息时,全交叉条706还可用于执行传输。
如上所述,在本发明的一个实施例中,电路可以用于自动地确定是否授权到收件箱的访问,而没有使用软件指令来进行确定。图7B是描述根据本发明的一个实施例的收件箱电路的方框图。如所述,收件箱202可包括分配寄存器712,其指示收件箱存储器720有多少已经被分配以访问请求。每次访问请求得以授权,都可以递增分配寄存器712以指示有更多的收件箱存储器720被保留。
在处理线程704已经从收件箱202移除了待处理的数据和/或指令时,可以递减分配寄存器712以指示附加的收件箱存储器720可用。例如,在拥有者线程已经为处理从收件箱202移除了信息之后,可以由收件箱202的拥有者线程递减分配寄存器712。如上所述,当拥有者线程在收件箱202中、在分配寄存器712中、或在收件箱202的任何其他部分中访问信息时,这样的访问可以是针对局部的、不可缓冲存储存储器地址。可选地,在包由拥有者线程读取之后,分配寄存器712可以由收件箱控制电路724自动地递减。如果收件箱202是满的并且接收了写入请求,则分配寄存器可返回指示收件箱202为满的值(例如预先的常数)。
例如以上关于图6A所述,当例如通过访问请求包接收了访问请求时,收件箱控制电路724可以配置为自动地确定是否授权访问请求。分配应答(例如如上所述的应答包或信号)可以提供给发送线程以指示存储器空间已经分配。在一个实施例中,收件箱控制电路724还可配置为确定是否接受进入的写入数据包并且在何处放置已接受的进入的写入数据包。收件箱控制电路724可为收件箱202更改收件箱控制寄存器726以指示,例如,在收件箱存储器720内的写入数据的大小和/或位置。如上所述,收件箱控制电路724还可提供收件箱中断,以向接受线程指示写入数据已经放置在收件箱存储器720中。
如在图7C中所述,在本发明的一个实施例中,门铃寄存器730可以用于向接收线程指示访问请求已接收。将访问请求提供给收件箱控制电路724之后,发送线程可将值写入到门铃寄存器730,其指示访问请求已发送。可选地,当包含通知信息512的包520已接收时,可以解析该包并且可以将通知信息放置在门铃寄存器中。在门铃寄存器730中接收信息时,收件箱控制电路724可自动地发布门铃中断到接收线程。如上关于图6A-C所述,例如,在接收门铃中断时,接收线程则可处理访问请求的全部或一部分。在一个实施例中,门铃寄存器730可以经由本地读取和/或写入由拥有者线程访问。
可选地,门铃寄存器730还可用于指示数据已写入到收件箱存储器720。例如,在发送线程已将写入数据写入到收件箱存储器720之后,发送线程可写入到门铃寄存器730,使得将门铃中断发布到接收线程。在接收门铃中断时,接收线程可例如检查收件箱控制寄存器728以确定写入数据已写入到何处并且处理数据。
在一些情况下,写入到门铃寄存器730中的信息可提供相应于放置在收件箱存储器720中的数据的优先级水平。优先级可以用于,例如,确定是否和/或何时发布中断到接收线程。例如,在一个实施例中,如果接收线程的优先级大于在门铃寄存器730中接收的优先级,则接收线程可不被中断,或中断可不发布,例如,直到具有小于或等于已接收的线程的优先级的接收线程开始执行。
图8是描述根据本发明的一个实施例的用于访问发件箱的示例性电路的方框图。如所述,发件箱220可包括分配寄存器812,其指示有多少发件箱存储器820已分配到由发件箱220的拥有者线程发送的包。每次拥有者线程发送包时,拥有者线程可检查分配寄存器812(例如通过本地读取)以确定发件箱存储器820是否包含在其中可放置发出的包的足够的自由空间。如果发件箱220包含足够的空间,则发送拥有者线程可将待发送的包放置到发件箱存储器820中(例如通过本地存储)并且可以响应于数据被写入,或者通过发送线程或者自动地通过发件箱控制电路824,递增分配寄存器812。
如上例如关于图6A-C所述,在一个实施例中,发件箱控制电路824可以用于发送包。例如,发件箱控制电路824可检测包何时写入到发件箱存储器820并且响应于检测包,自动地发送该包。可选地,在将包写入到发件箱存储器820之后,发送线程可使用发件箱控制寄存器828来发布命令到发件箱控制电路824以发送包。在一些情况下,发件箱控制电路可以经由发件箱控制寄存器828向发送线程指示正在发送的包的状态(例如成功发送、未决发送、或不成功发送)。如上所述,可以通过本地读取和/或写入向发送线程提供对发件箱控制寄存器824的访问。发件箱控制电路824还可配置为在成功发送包之后递减分配寄存器812。此外,发件箱控制电路824可以配置为生成中断或异常以向发送线程指示在发送包的同时是否发生错误和/或是否包已成功发送。
一般而言,可以以本领域技术人员已知的任何方式管理经由发件箱220发送的包。例如发件箱220可以作为先入先出(FIFO)队列,以首先发送发件箱中的最早的包。可选地,发件箱220可作为堆栈(后入先出),或者发送线程可向每个包分配优先级或包编号,这可以由发件箱控制电路824在确定首先发送哪个包中使用。还可以由发送线程通过发件箱控制寄存器828或通过包本身,向发件箱控制电路824提供其他信息。这样的信息可包括为发送给定的包所应该进行的尝试的次数、在发送每个包时应该使用的超时(例如在等待应答中)以及其他这样的信息。可选地,发件箱控制电路824可以配置有用于发送包的预定的设置。
尽管先前的描述致力于本发明的实施例,但可以想象出本发明的其他和进一步的实施例而不背离本发明的基本范围,并且本发明的范围由所附权利要求书限定。

Claims (27)

1.一种方法,包括:
为收件箱保留处理器中的高速缓存的第一部分,其中该收件箱与由该处理器执行的第一线程相关联;
从第二线程接收包,其中该包包括访问请求;以及
使用收件箱控制电路用于该收件箱以处理接收的包并且确定是否授权包括在该包中的访问请求。
2.根据权利要求1所述的方法,其中将通过向该收件箱中的存储器地址进行加载或存储的直接访问仅提供给第一线程。
3.根据权利要求1所述的方法,其中在该收件箱中的存储器地址处存储的数据是不可缓冲存储的。
4.根据权利要求1所述的方法,其中不执行指令以便确定是否授权该访问请求。
5.根据权利要求1所述的方法,其中使用收件箱控制电路用于该收件箱以确定是否授权包括在该包中的该访问请求,包括:
使用分配寄存器用于该收件箱以确定该收件箱是否包括未保留的和足以授权该访问请求的存储器空间;以及
如果该高速缓存的第一部分包括未保留的足以授权该访问请求的存储器空间,则保留在该收件箱中的该存储器空间的一部分以满足访问请求,其中保留在该收件箱中的该存储器空间的一部分以满足该访问请求包括增加存储在该分配寄存器中的值以指示该保留的存储器空间的部分。
6.根据权利要求1所述的方法,进一步包括:
当执行对应于该访问请求的访问时,向该第一线程提供通知,其中提供该通知包括至少以下之一:
响应于在该收件箱中放置用于该访问的数据,向该第一线程发布中断;
响应于为该收件箱向门铃寄存器写入的值,向该第一线程发布中断;以及
在状态寄存器中设置一个或多个位,其由该第一线程轮询。
7.根据权利要求1所述的方法,其中该包包括用于该访问请求的数据和通知信息,其中如果该访问请求被授权,则将该数据放置在该收件箱中,以及如果该访问请求被授权,则该通知信息用于通知该第一线程。
8.根据权利要求1所述的方法,其中响应于接收该包,将指示该访问请求是否被授权的确认包发送到该第二线程的收件箱。
9.一种处理器,包括:
处理器高速缓存;以及
收件箱控制电路,配置为:
为收件箱保留该处理器高速缓存的第一部分,其中该收件箱与由该处理器执行的第一线程相关联;
从第二线程接收包,其中该包包括访问请求;以及
处理该接收的包并且确定是否授权包括在该包中的访问请求。
10.根据权利要求9所述的处理器,其中该收件箱控制电路进一步配置为将通过向该收件箱中的存储器地址进行加载或存储的直接访问仅提供给该第一线程。
11.根据权利要求9所述的处理器,其中在该收件箱中的存储器地址处存储的数据是不可缓冲存储的。
12.根据权利要求9所述的处理器,其中不执行指令以便确定是否授权该访问请求。
13.根据权利要求9所述的处理器,其中当确定是否授权包括在该包中的访问请求时,将该收件箱控制电路配置为:
使用分配寄存器用于该收件箱以确定该收件箱是否包括未保留的和足够的存储器空间以授权该访问请求;以及
如果该高速缓存的第一部分包括未保留的足以授权该访问请求的存储器空间,则保留在该收件箱中的该存储器空间的一部分以满足该访问请求,其中保留在该收件箱中的该存储器空间的一部分以满足该访问请求包括增加存储在该分配寄存器中的值以指示保留的该存储器空间的部分。
14.根据权利要求9所述的处理器,其中该收件箱控制电路进一步配置为:
当执行对应于该访问请求的访问时,向该第一线程提供通知,其中提供该通知包括至少以下之一:
响应于在该收件箱中放置用于该访问的数据,向该第一线程发布中断;
响应于为该收件箱向门铃寄存器写入的值,向该第一线程发布中断;以及
在状态寄存器中设置一个或多个位,其由该第一线程轮询。
15.根据权利要求9所述的处理器,其中该包包括用于该访问请求的数据和通知信息,并且其中该收件箱控制电路进一步配置为:
如果该访问请求被授权,则将该数据放置在该收件箱中;以及
如果该访问请求被授权,则向该第一线程提供该通知信息。
16.根据权利要求9所述的处理器,其中响应于接收该包,将该收件箱控制电路配置为:
将指示是否该访问请求被授权的确认包发送到该第二线程的收件箱。
17.一种方法,包括:
分配处理器中的高速缓存的第一部分作为发件箱,用于由该处理器执行的第一线程;
将来自于该第一线程的数据放置在该发件箱中;以及
使用发件箱控制电路用于该发件箱将由该第一线程放置在该收件箱中的数据作为包发送到第二线程的收件箱。
18.根据权利要求17所述的方法,其中该包进一步包括用于将该数据写入该收件箱的访问请求和用于该第二线程的通知信息。
19.根据权利要求17所述的方法,进一步包括:
响应于由该发件箱控制电路发送的、指示在该包中的数据已写入到该第二线程的收件箱的该包,在该发件箱电路接收确认包之后,将该数据从该发件箱移除。
20.根据权利要求17所述的方法,进一步包括:
响应于由该发件箱控制电路发送的、指示在该包中的数据已写入到该第二线程的收件箱的该包,在该发件箱电路接收确认包之前,将该数据保持在该发件箱中;以及
响应于对由该发件箱控制电路发送的、指示在该包中的数据未写入到该第二线程的收件箱的该包进行的响应接收确认包,重新发送该包。
21.根据权利要求20所述的方法,其中该发件箱控制电路使用随机生成的等待间隔以在重新发送该包之前进行等待。
22.根据权利要求17所述的方法,进一步包括:
响应于由该发件箱控制电路发送的、指示在该包中的访问请求优先级的该包,接收确认包。
23.根据权利要求17所述的方法,其中在该发件箱中的存储器地址处存储的数据是不可缓冲存储的。
24.根据权利要求17所述的方法,其中将来自于该第一线程的数据放置在该发件箱中包括由该第一线程执行本地存储。
25.根据权利要求17所述的方法,其中该第二线程由该处理器执行。
26.根据权利要求17所述的方法,进一步包括在射线跟踪操作中利用该发件箱和收件箱,包括:
利用该第一线程,可以通过从内部节点获取分支来遍历具有定义三维场景的边界体积的节点的空间索引,直到达到叶节点,其中基于射线是否与由该节点定义的边界体积相交来获取分支。
当遍历该空间索引时,记录指示定义该射线相交的边界体积的一个或多个节点和所获取的分支的遍历历史;以及
使用发件箱控制电路用于该第一线程向该第二线程的收件箱发送定义该射线的信息以执行射线图元相交试验;以及
使用发件箱控制电路用于该第二线程向该第一线程的收件箱发送该射线图元试验的结果。
27.根据权利要求26所述的方法,其中该射线跟踪操作进一步包括:如果该射线图元相交试验的结果指示该射线没有击中包含在由该叶节点定义的边界体积中的图元,则可以使用该记录的遍历历史重新遍历该空间索引。
CN2007101927522A 2006-12-07 2007-11-16 用于在线程之间通信的方法和装置 Active CN101196835B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/567,882 2006-12-07
US11/567,882 US7752413B2 (en) 2006-07-28 2006-12-07 Method and apparatus for communicating between threads

Publications (2)

Publication Number Publication Date
CN101196835A true CN101196835A (zh) 2008-06-11
CN101196835B CN101196835B (zh) 2012-01-11

Family

ID=39547267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101927522A Active CN101196835B (zh) 2006-12-07 2007-11-16 用于在线程之间通信的方法和装置

Country Status (1)

Country Link
CN (1) CN101196835B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572275A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种进程加载方法、装置及系统
CN107025064A (zh) * 2016-01-30 2017-08-08 北京忆恒创源科技有限公司 一种低延迟高iops的数据访问方法
CN107949837A (zh) * 2015-08-13 2018-04-20 超威半导体公司 用于i/o数据包压缩的寄存器文件

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572275A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种进程加载方法、装置及系统
CN104572275B (zh) * 2013-10-23 2017-12-29 华为技术有限公司 一种进程加载方法、装置及系统
CN107949837A (zh) * 2015-08-13 2018-04-20 超威半导体公司 用于i/o数据包压缩的寄存器文件
CN107949837B (zh) * 2015-08-13 2021-10-15 超威半导体公司 用于i/o数据包压缩的寄存器文件
CN107025064A (zh) * 2016-01-30 2017-08-08 北京忆恒创源科技有限公司 一种低延迟高iops的数据访问方法
CN107025064B (zh) * 2016-01-30 2019-12-03 北京忆恒创源科技有限公司 一种低延迟高iops的数据访问方法

Also Published As

Publication number Publication date
CN101196835B (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
US7818503B2 (en) Method and apparatus for memory utilization
CN1728118B (zh) 资源分配管理方法和设备
US8205067B2 (en) Context switching and synchronization
CN105579961B (zh) 数据处理系统及操作方法、用于数据处理系统的硬件单元
US7389508B2 (en) System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7617376B2 (en) Method and apparatus for accessing a memory
JP4687729B2 (ja) キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
GB2529074A (en) Graphics processor with non-blocking concurrent architecture
CN103999051A (zh) 用于着色器核心中着色器资源分配的策略
EP3295293B1 (en) Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
US7373467B2 (en) Storage device flow control
US10810146B2 (en) Regulation for atomic data access requests
US20070294448A1 (en) Information Processing Apparatus and Access Control Method Capable of High-Speed Data Access
CN107436798A (zh) 一种基于numa节点的进程访问方法及装置
CN103109283A (zh) 在计算系统中以多个存储通道对存储缓冲器的分配
US20090013023A1 (en) Process Management Apparatus, Computer Systems, Distributed Processing Method, and Computer Program
US7710904B2 (en) Ring network with variable token activation
US20110320722A1 (en) Management of multipurpose command queues in a multilevel cache hierarchy
CN101196835B (zh) 用于在线程之间通信的方法和装置
CN101196833B (zh) 用于存储器利用的方法和装置
KR20070122228A (ko) 외부 디바이스 액세스 장치
CN114153615A (zh) 内存管理方法、装置、设备、计算机程序及存储介质
JP2005209206A (ja) マルチプロセッサシステムにおけるデータ転送方法、マルチプロセッサシステム、及び、この方法を実施するプロセッサ
WO2013148439A1 (en) Hardware managed allocation and deallocation evaluation circuit

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