具有母核和侦察核的芯片的数据预取的制作方法

文档序号:9264699阅读:211来源:国知局
具有母核和侦察核的芯片的数据预取的制作方法
【技术领域】
[0001]本发明一般涉及具有母核和侦察(scout)核的多核芯片,更具体地涉及在多核芯片中为母核指定预取算法。
【背景技术】
[0002]多核可能位于单个芯片上。在一种方法中,可以提供同一芯片上作为母核的第二核作为侦察核。在一种借用或者利用侦察核的方法中,侦察核用于从共享高速缓存器中预取数据到母核的私有高速缓存器中。这种方法在母核遇到高速缓存器未命中(miss)的事件中可能是特别有用的。当指定的数据行导致搜索母核的目录,而请求的缓存行不存在时,高速缓存器未命中发生。一个典型的获得未命中的高速缓存行的方法是对更高级别的高速缓存器启动一个获取操作。侦查核提供了一种用于预取母核所需要的数据的机制。
[0003]应该注意,不同的应用程序表现不同,造成的结果是一种预取算法或者方法可能不总是能够改进访问高速缓存器的内容的延迟。尤其是,例如,如果母核正在执行几个不同的应用程序,那么用于监视不同应用程序的预取算法基于被执行的指定的应用程序,对访问高速缓存器的内容可以提供不同的延迟。例如,被设计为对人口稀疏的数据库的搜索的应用程序与被设计为执行图像颜色校正的应用程序相比较表现是不同的(例如,预取算法可以提供访问高速缓存器内容较高的和较低的延迟)。

【发明内容】

[0004]本发明的多个方面涉及一种用于在芯片上预取数据的方法、系统、和计算机程序产品,所述芯片具有至少一个侦察核和一个母核,该方法包括由该母核存储预取代码起始地址。所述预取代码起始地址指示预取代码被存储在何处。预取代码具体地被配置为基于由母核执行的指定应用程序监视母核。该方法包括由母核向该至少一个侦察核发送广播中断信号,被发出的所述广播中断信号基于被存储所述预取代码起始地址。该方法包括由所述至少一个侦察核执行预取代码监视所述母核。所述侦察核基于接收到的所述广播中断信号执行所述预取代码。
【附图说明】
[0005]现在将要参考附图,通过举例的方式描述本发明的多个实施例,其中:
[0006]图1根据一个实施例描述了多核芯片;
[0007]图2A根据一个实施例描述了一个中央处理(CP)芯片;
[0008]图2B根据另一个实施例描述了 CP芯片;
[0009]图3描述了结构化的侦察预加载指令;
[0010]图4描述了说明用于从母核向侦察核加载预取代码的示例性方法的流程图;
[0011]图5描述了用于说明在母核的操作系统遇到的任务交换期间加载预取代码的示例性方法的流程图;
[0012]图6描述了用于说明由在母核上执行的指定应用程序加载预取代码的示例性方法的流程图;以及
[0013]图7示出根据本发明的一个实施例的计算机程序产品。
【具体实施方式】
[0014]公开了用于多核芯片上由侦察核为母核预取数据的多个实施例,改进了预取效率。在一个示例性实施例中,所述多核芯片包括母核和至少一个侦察核,该母核存储预取代码起始地址,所述预取代码起始地址指示预取代码被存储在何处。预取代码具体被配置为基于母核执行的指定的应用程序来监视母核。侦察核通过执行指定的预取代码监视母核,指定的预取代码可以对应母核选择执行的指定的应用程序(例如,如果应用程序没有与其关联的指定的预取代码,那么侦察核可以执行事实上的或者默认的预取代码)。应该注意到由母核执行的不同应用程序行为不同,因此,通常的预取算法(例如,不是对指定的应用程序裁剪的预取算法)可能不总是改进延迟,要依赖于母核正在执行的指定的应用程序。在示例性实施例中公开的方法允许侦察核使用指定的为监视母核执行的指定的应用程序而具体裁剪的预取代码来侦察母视。母核可以向侦察核发送广播中断信号来基于母核正在执行的指定的应用程序切换预取代码。
[0015]图1根据一个实施例描述了计算系统10的例子。计算系统10包括至少一个中央处理芯片20。在如图1所示的示范性实施例中,示出了三个CP芯片20,然而可以理解,可以使用任何数量的CP芯片20。例如,在一个方法中,计算机系统10可以包括8个CP芯片20 ;在另一个实施例中,计算机系统10可以包括多达12个或者16个CP芯片20。每一个CP芯片20与共享的高速缓存器22和系统内存器24通信。
[0016]现在参考图1-2A,每个CP芯片20包括用于读取和执行指令的多个核30。例如,在如图2A所示的示例实施例中,每个CP芯片20包括母核32和侦察核34,然而可以理解,CP芯片20上也可以存在多个母核32和多个侦察核34。例如,在一个方法中,CP芯片20可以包括4个母核32,每一个都与一个侦察核34通信(即,总共8个核)。在图2B所示的另一个实施例中说明了 CP芯片120。母核132可以与多个侦察核134通信,例如,在一个方法中,提供CP芯片120,具有2个母核132,每一个与3个侦察核134通信(即总共8个核)。
[0017]返回参考图2A,每个核30还包括各自的指令高速缓存器(1-cache)40和数据高速缓存器(D-cache)42。在如图2A所示的示例实施例中,每个核30只包括一级(LI)高速缓存器,然而可以理解,在不同实施例中,核30也可以包括二级(L2)高速缓存器。每个核30可操作地连接到共享高速缓存器50。在如图2A所示的实施例中,共享高速缓存器50是L2高速缓存器,然而,可以理解,共享高速缓存器50也可以是三级(L3)高速缓存器。
[0018]在母核32和共享高速缓存器50之间提供数据返回总线60,并且在侦察核34和共享高速缓存器50之间提供数据返回总线62。获取请求总线64将母核32与共享高速缓存器50和侦察核34连接起来,其中将数据从母核32发送到共享高速缓存器50和侦察核34。获取监视请求总线66将侦察核34与共享高速缓存器50连接起来,其中侦察核34通过获取请求总线66监视共享高速缓存器50。获取请求总线66可用于为侦察核34获取。这在行为上类似于获取请求总线64为母核获取。之所以需要这种获取是要将一个或者多个获取算法加载到侦察核34,除此之外,载入要分析的进一步的数据的可能需求应该是要被分析的数据没有全部纳入本地数据高速缓存器42。加载预取总线68位于母核32和侦察核34之间。母核32通过加载预取总线68通知侦察核32加载预取代码以及用于指示预取代码存储的地方的指定的预取代码起始地址。预取代码可以被存储在计算机系统10中的多个不同位置,这些位置诸如是可访问的存储器地址,例如,侦察核的LI指令高速缓存器40,共享高速缓存器50,共享高速缓存器22 (图1),或者系统存储器24 (图1)。
[0019]现在转到图2B,在母核132和共享高速缓存器150之间提供数据返回总线160,在侦察核134和共享高速缓存器150之间提供数据返回总线162。预取请求总线164将母核132与共享高速缓存器150连接起来,其中将数据从母核132发送数据到共享高速缓存器150。为每个侦察核134提供获取请求总线166,并且获取请求总线166将侦察核134与共享高速缓存器150连接起来。在每个侦察核1
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1