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

文档序号:9264699阅读:来源:国知局
34之间通过获取请求总线166传输的数据是不同的。加载预取总线168被连接到每个侦察核134,并且位于母核132和每个侦察核134之间。为每个侦察核134提供获取监视总线170,获取监视总线170位于共享高速缓存器150和每个侦察核134之间。不像获取请求总线166,每个侦察核134之间通过预取获取监视总线170传输的数据可以不同,也可以相同。
[0020]返回到图2A,共享高速缓存器50作为一个集线器或连接点,以便侦察核34可以监视母核32。侦察核34监视母核32以得到在母核32中发生的至少一个指定的数据模式。具体来说,侦察核34执行用于监视母核32的预取代码。预取代码确定是否在母核32中发生一个或多个指定的数据模式,并基于指定的数据模式向共享高速缓存器50发送获取请求。侦察核34通常在位于侦察核34的LI指令高速缓存器40中存储预取代码。
[0021]指定的数据模式可以或者是留给母核32的内容要求(例如,对在母核32的或者指令高速缓存器40或者数据高速缓存器42中不存在的指定高速缓存行的请求),或者是母核32的检查点地址。例如,如果指定的数据模式是高速缓存器未命中(例如在母核32的指令高速缓存器40或者数据高速缓存器中的高速缓存器未命中行),那么可以由侦察核34通过获取请求总线66对共享高速缓存器55发送对预计的未命中的高速缓存器行的预取。如果指定的数据模式是母核32的检查点地址,侦察核34监视母核32,并且一旦指定事件完成(例如,垃圾收集或者内容切换),侦察核34向共享高速缓存器发送预取请求来获取与指定事件相关联的高速缓存器行。
[0022]侦察核34被配置为基于母核32正在执行的指定的应用程序,选择性地执行指定的预取代码。例如,如果母核32顺序一个接一个地执行应用程序A、应用程序B、应用程序C (例如,母核32首先执行应用程序A,然后应用程序B,然后应用程序C),那么侦察核34可以执行预取代码A来监视应用程序A,预取代码B来监视应用程序B,预取代码C来监视应用程序C。也就是说,指定的预取代码具体配置为当母核32执行对应的应用程序时,监视母核32 (例如,预取代码A监视应用程序A)。这是因为指定的预取代码可以根据母核32执行的指定的应用程序表现不同。例如,当将被设计为搜索稀疏人口数据库的应用程序与被设计为执行图像颜色校正的应用程序相比较时,可以表现不同(例如,预取算法可以提供较高的或者较低的访问高速缓存器内容的延迟)。应该注意到如果程序没有与其关联的指定预取代码,那么侦察核34可以执行事实上的或者默认的预取代码。位于侦察核34内部的结构化的描述提供了默认预取代码存储在侦察核34的位置。
[0023]当以相对高的速率从一个应用程序切换到另一个应用程序时(例如高达每秒十万次的速率),母核32通常顺序地执行不同的应用程序(即一次一个应用程序),被称为所谓的多任务。具体地,母核32可以执行任意数量的应用程序。当指定的应用程序将母核32的控制放弃给另外一个应用程序时,这就被称为任务切换。在母核32的操作系统遇到任务切换期间,母核32存储位于母核32之内、与当前正在执行的应用程序相关的预取地址48 (图2B说明为148)。预取地址48指示与当前正在执行的应用程序相关的预取代码起始地址被存储在何处。然后母核32可以加载新的应用程并且用与新的应用程序相关的预取代码起始地址更新预取地址48。然后母核32通过加载预取总线68将广播中断信号发送到侦察核34。广播中断信号提供了预取代码起始地址的位置以及中断通知。在没有与母核32已经加载的新的应用程序相关联的指定的预取代码的情况下,母核34将广播中断信号发送给侦察核34指出侦察核34要加载默认的预取代码。
[0024]除了由母核32所做的任务切换,广播中断信号也可以被母核32中执行的指定的应用程序发起。也就是说,母核32中执行的指定的应用程序可以发出指示侦察核34要被加载指定的预取代码的指令。现在转到图3,可以由母核32中执行的指定地应用程序发出结构化的侦察预加载指令70。结构化的侦察预加载指令70指出与在母核32中执行的指定的应用程序相关联的预取代码起始地址。例如,如果母核32正在执行应用程序A,由“应用程序A”发出的结构化的侦察预加载指令70指示对应于应用程序A的指定预取代码已经被存储。
[0025]结构化的侦察预加载指令70包括用于指定要执行的操作的操作码72以及基本寄存器74、索引寄存器76以及用于指定指定的预取代码被存储的起始地址的位置的偏址78。结构化的侦察预加载指令70还指出要用预取代码被预先加载的指定侦察核的号80 (例如,参考图2B,指定侦察核的号80可以指出或者为侦察核1、侦察核2或者侦察核3)。结构化的侦察预加载指令70每个域(例如操作码70,基本寄存器74,索引寄存器76,偏址78以及侦察核的号80)可以是多个位的域。每个域的位数可以是不同的。参考图2A和3,母核执行结构化的侦察预加载指令70。然后母核32将由结构化的侦察预加载指令70指示的预取代码起始地址作为预存地址48存储。
[0026]返回参考图2A,一旦接收到广播中断信号,侦察核34的指令流水线被冲满。然后侦察核34可以执行从母核32通过加载预取总线68发送的预取代码起始地址指示的预取代码来重启动指令流。
[0027]现在转向图4,描述了说明用于从母核32向侦察核34加载预取代码的示例性方法200的流程图。通常参考图2A-4,方法200在块202开始,在这通过加载预取总线68 (或者在多侦察核134连接到母核132的情况下的加载预取总线168)从母核32向侦察核34发送广播中断信号。广播中断信号提供预取代码起始地址的位置以及中断通知。方法200然后运行到块204。
[0028]在块204,侦察核32通过加载预取总线68接收到指示中断通知的广播中断信号,然后方法200可以处理到块206。
[0029]在块206,侦察核34的指令流水线被充满,侦察核34执行通过加载预取总线68从母核32发送的预取代码起始地址指示的预取代码。然后方法200可以终止。
[0030]图5是用于说明由母核32的操作系统遇到的任务切换期间发起广播中断信号的示例性方法300。通常参考图2A-2B及5,方法300在块302开始,在这确定是否母核32遇到任务切换。在母核32遇到任务切换的情况下,然后方法300可以处理到块304。
[0031]在块304,母核32存储与当前执行的应用程序相关的预取地址48。然后方法300可以处理到块306。
[0032]在块306,母核32加载新的应用程序并且用与新的应用程序相关联的预取代码起始地址更新预取地址48。然后方法300可以处理到块308。
[0033]在块308,母核32通过加载预取总线68向侦察核34发送广播中断信号,广播中断信号提供了预取代码起始地址的位置以及中断通知。然后方法300可以终止。
[0034]图6是用于说明由在母核内执行的指定的应用程序发起广播中断信号的示例性方法400。通常参考图2A-2B,3及6,方法400在块402开始,在这母核执行指定的应用程序来发出结构化的侦察预加载指令70
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1