专利名称:指令预取方法与预取装置的制作方法
技术领域:
本发明涉及计算机技术领域,更具体地,本发明涉及一种用于多核处理器的指令预取方法与预取装置。
背景技术:
多核处理器是指将多个处理器核心及相关功能部件集成到一个处理器芯片上,从而形成包含有多个处理器核心的处理器结构。相较于以往的单核处理器,由于集成了多个处理器核心,所述多核处理器的数据处理能力大大提高。在所述多核处理器执行程序的过程中,每个处理器核心有限容量的本地指令缓冲不能满足大规模程序的存储,需要不断的从片外主存中将需要用到的指令装入所述本地指令缓冲。然而,所述片外主存的存取速度很难满足处理器核心处理速度的需求,而且所述多核处理器在实际运行时通常会有多个处理器核心竞争访问片外主存,这加剧了指令获取的难度,多核处理器的数据处理能力无法完全发挥。针对所述因指令获取引起的处理器处理能力无法完全发挥的问题,申请号为 01816274. 6的中国专利申请提供了一种采用辅助处理器预取用于主要处理器的指令的方法和装置,通过主要处理器外部的辅助处理器预取指令以充分发挥处理器的处理能力。然而,该方法只可以为一个处理器提供指令预取服务,不适于多核处理器的处理器结构。另一方面,所述用于预取指令的辅助处理器需要执行程序的简化版本,硬件开销较大。
发明内容
本发明解决的问题是提供一种指令预取方法与预取装置,简化了硬件指令存储的管理逻辑,提高了处理器的处理效率。为解决上述问题,本发明提供了一种指令预取装置,用于向处理器核心提供指令预取服务,包括取指控制单元与指令缓存单元,其中所述取指控制单元,用于接收处理器核心提供的预取请求,基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,或指示指令缓存单元从片外主存中获取与所述预取请求对应的指令;基于所述预取请求指示指令缓存单元将与预取请求对应的指令提供给处理器核心;所述指令缓存单元,用于存储指令;响应所述取指控制单元的指示,从片外主存中获取与所述预取请求对应的指令,以及将与预取请求对应的指令提供给处理器核心。可选的,所述取指控制单元还用于将不同处理器核心提供的预取请求合并,基于所述合并后的预取请求进行指令预取操作。可选的,所述取指控制单元包括预取请求合并单元、指令引擎、取指缓存、访存缓存、装填缓存以及传输单元,其中所述预取请求合并单元,用于接收处理器核心提供的预取请求,将取指目标相同的预取请求合并,并将合并后的预取请求提供给取指缓存;
所述指令引擎,用于从取指缓存中获取预取请求,基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,若预取请求命中,则将预取请求写入装填缓存,若预取请求未命中,且所述预取请求与装填缓存中已存储的预取请求不冲突时,则将所述未命中的预取请求提供给访存缓存;所述取指缓存、访存缓存以及 装填缓存,用于暂存预取请求;所述传输单元,用于从装填缓存中获取预取请求,从指令缓存单元中获取指令,基于所述预取请求将与所述预取请求对应的指令提供给处理器核心;片外主存从访存缓存中获取预取请求,基于所述预取请求,将与所述预取请求对应的指令提供给指令缓存单元,并将所述预取请求提供给装填缓存。相应的,本发明还提供了一种指令预取方法,包括获取处理器核心提供的预取请求;基于所述预取请求,获取与所述预取请求对应的指令并存储于处理器的片上指令缓存中;将片上指令缓存中与所述预取请求对应的指令提供给与所述预取请求对应的处理器核心。与现有技术相比,本发明具有以下优点1.以较为简便的方式实现了多核处理器的指令预取,无需使用辅助处理器执行程序,降低了硬件开销,简化了硬件指令存储的管理逻辑,提高了处理器的处理效率;2.可以将不同处理器核心提供的预取请求合并后再进行指令预取操作,以便于向需求相同指令的处理器核心同时装载指令,这进一步提高了指令预取的效率。
图1示出了本发明指令预取装置的第一实施例;图2示出了本发明指令预取装置的第二实施例;图3示出了本发明指令预取装置中预取请求合并单元的一种实施方式;图4示出了预取请求合并单元的级联结构;图5示出了本发明指令预取方法一个实施例的流程。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式
做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。正如背景技术部分所述,现有技术利用辅助处理器为主要处理器提供预取指令的方法只可以为一个处理器提供指令预取服务,不适于多核处理器的处理器结构。此外,所述用于预取指令的辅助处理器需要执行程序的简化版本,硬件开销较大。针对上述问题,本发明的发明人提供了一种用于处理器的指令预取方法与预取装置,简化了硬件指令存储的管理逻辑,有效提高了处理器的处理效率。依据具体实施例的不同,本发明的指令预取方法与预取装置既可以用于单核处理器,也可以用于多核处理器。为了便于说明,在下面的实施例中,均以多核处理器为例进行说明,但不应限制其范围。第一实施例图1示出了本发明指令预取装置的第一实施例。如图1所 示,所述指令预取装置包括取指控制单元101与指令缓存单元103。所述指令预取装置配合于片外主存105及多个处理器核心107,向处理器核心107提供预取指令的服务,其中,所述取指控制单元101,用于接收处理器核心107提供的预取请求,基于所述预取请求在指令缓存单元103搜索与所述预取请求对应的指令,或指示指令缓存单元103从片外主存105中获取与所述预取请求对应的指令,基于所述预取请求指示指令缓存单元103 将与预取请求对应的指令提供给处理器核心107的本地指令缓冲111。所述指令缓存单元103,用于存储指令;响应所述取指控制单元101的指示,从片外主存105中获取与所述预取请求对应的指令,以及将与预取请求对应的指令提供给处理器核心107。所述处理器核心107包含有微处理单元109与本地指令缓冲111,所述本地指令缓冲111用于存储由指令缓存单元103提供的指令,并将所述指令提供给对应的微处理单元 109 ;所述微处理单元109调用本地指令缓冲111中存储的指令,并执行所述指令。在具体实施例中,所述指令预取装置集成在处理器中,用于预取指令并提供给所述处理器的一个或多个处理器核心。为了实现指令预取,所述预取请求中应包含有预取指令信息、核心需求信息以及指令装填地址等信息。其中,所述预取指令信息用于标识需要预取的指令;所述核心需求信息对应于所述预取的指令具体需要存放到哪些处理器核心中;而所述指令装填地址则对应于所述预取的指令存放于处理器核心的本地指令缓冲中的具体地址,优选的,不同的处理器核心对应于相同的指令装填地址,将与预取指令信息对应的指令存储至所述至少一个处理器核心中相同的指令装填地址。上述的预取请求是针对多核处理器而言的,依据具体实施例的不同,处理器中还有可能只包含有一个处理器核心,在这种情况下,发出预取请求与接收预取指令的操作只涉及一个处理器核心,因此,所述预取请求无需包含有核心需求信息。在具体实施例中,所述预取指令信息可以包含一个或多个需要预取的指令的标识;指令缓存单元根据所述预取指令信息,将与预取指令信息对应的一个或多个指令提供至所述核心需求信息对应的处理器核心。特别的,对于不同的处理器核心,其可以预取相同的指令,也可以预取不同的指令。接下来,对本发明指令预取装置第一实施例的工作过程进行说明,在本实施例中, 集成所述指令预取装置的处理器包含有多个处理器核心,所述多个处理器核心协同工作, 完成数据计算等处理任务。处理器在执行处理任务时,其中的处理器核心执行的指令通常直接从所述处理器核心的本地指令缓冲中获得。但由于所述本地指令缓冲的存储容量有限,因此,在所述本地指令缓冲中的指令处理完成前,即当前执行的程序未结束前,该处理器核心提前向取指控制单元发送预取请求。在具体实施例中,所述预取请求可以采用预取请求指令的形式添加在需要执行的程序中。在处理器当前执行的程序运行到不同的分支时,处理器核心基于当前程序中不同的预取请求指令,即可提供不同的预取请求。对于某个处理器核心发出的预取请求,其既可以为当前处理器核心获取指令,也可以为其他处理器核心一起预取指令。所述多个处理器核心一起预取的指令即可以用于实现后续指令的同步运行。
所述取指控制单元在获得预取请求后,即基于所述预取请求从指令缓存单元中搜索与预取指令信息所对应的指令。若指令缓存单元中未存储有对应的指令,所述取指控制单元即基于预取请求指示指令缓存单元从片外主存中获取与预取指令信息对应的指令并存储所述指令。所述片外主存中存储的指令是通过软件编译的,而非硬件动态执行的,这就大大减少了硬件开销。在指令缓存单元中确定存储有与预取指令信息对应的指令后,所述取指控制单元基于预取请求,确定需要所述预取指令的处理器核心、以及所述预取指令在所述处理器核心本地指令缓冲中的具体存储地址,并指示指令缓存单元将其存储的与预取指令信息对应的指令提供给对应的处理器核心的本地指令缓冲,以供微处理单元调用。在实际应用中,指令缓存单元将其中存储的指令提供给处理器核心的本地指令缓冲时,需要对所述本地指令缓冲的写入端口申请写入操作。相应的,如果该写入操作的申请结果有效,则基于预取请求向处理器核心的本地指令缓冲中写入指令;如果该写入操作的申请结果无效,则在下一周期后继续申请写入操作,直至获得有效的申请结果,从而完成指令的写入。此外,基于实际应用的需要,所述取指控制单元中还可以选择集成有预取请求合并功能。所述预取请求合并功能是指,取指控制单元在接收到不同处理器核心提供的预取请求后,可以基于预取指令信息与核心需求信息的信息,选择将预取指令信息相同的预取请求合并为新的预取请求。在预取请求合并后,所述取指控制单元即基于合并后的预取请求进行相应的指令预取操作。举例说明所述预取请求合并功能。所述预取请求中包含有预取指令信息与核心需求信息等信息。其中,所述核心需求信息可以采用核心序号阵列的形式,所述核心序号阵列中的每一元素对应于处理器中的一个处理器核心。例如,所述处理器包含有核心A、核心B、核心C与核心D,而核心A与核心B分别向指令预取装置提供预取请求1与预取请求2,其中,所述预取请求1与预取请求 2对应于相同的指令,但预取请求1对应于向核心A与核心B预取所述指令,其对应的核心序号阵列中核心A与核心B对应的元素为有效;预取请求2对应于向核心C预取所述指令, 其对应的核心序号阵列中核心C对应的元素为有效。基于所述预取请求1与预取请求2,所述取指控制单元可以将这两个预取请求合并为一个新的预取请求,这时,只需要将所述核心序号阵列中核心A、B、C对应的元素设置为有效,即可实现向核心A、B、C预取所述指令的操作。之所以在指令预取装置中设置预取请求合并功能,是因为在处理器运行过程中, 不同处理器核心运行的程序并不相同,因此,不同处理器核心发出的预取请求也并不相同。 但是,有可能出现不同处理器核心需要相同指令的情况。在这种情况下,如果仍分别处理所述预取请求,无疑会导致指令预取的效率降低。因此,通过将预取相同指令的预取请求合并,需求相同指令的不同处理器核心即可以同时装载所需求的指令,这就避免了多次装载相同指令的重复操作,提高了指令预取的效率。第二实施例参考图2,示出了本发明指令预取装置的第二实施例。相较于本发明指令预取装置的第一实施例,所述指令预取装置第二实施例的结构进一步细化。此外,依据实际应用的不同,本发明的指令预取装置可以选择集成有预取请求合并功能,在本实施例中,以集成有预取请求合并功能的实施例为例进行说明,但不应限制其范围。所述指令预取装置包括预取请求合并单元201、指令引擎203、指令缓存单元 205、取指缓存207、访存缓存209、装填缓存211以及传输单元213。所述指令预取装置配合于片外主存217及多个处理器核心215,向处理器核心215提供预取指令的服务,其中,
所述预取请求合并单元201,用于接收处理器核心提供的预取请求,将取指目标相同的预取请求合并,并将合并后的预取请求提供给取指缓存207 ;所述指令引擎203,用于从取指缓存207中获取预取请求,基于所述预取请求在指令缓存单元205搜索与所述预取请求对应的指令,若预取请求命中,则将预取请求写入装填缓存211,若预取请求未命中,且所述预取请求与装填缓存211中已存储的预取请求不冲突时,则将所述未命中的预取请求提供给访存缓存209 ;片外主存217,用于从访存缓存209中获取预取请求,基于所述预取请求,将与所述预取请求对应的指令提供给指令缓存单元205,并将所述预取请求提供给装填缓存211 ;传输单元213,用于从装填缓存211中获取预取请求,从指令缓存单元205中获取指令,基于所述预取请求将与所述预取请求对应的指令提供给处理器核心215。对于所述取指缓存207、访存缓存209以及装填缓存211,其主要用于暂存预取请求。特别的,其可以采用FIFO的缓存器结构,通过所述FIFO结构,预取请求的处理顺序得到有效控制。其中,所述预取请求合并单元201、指令引擎203、取指缓存207、访存缓存209、装填缓存211以及传输单元213即对应于第一实施例中的取指控制单元。接下来,对本实施例的工作过程进行说明。其中,本实施例与第一实施例相同的工作方式不再赘述。处理器核心执行程序,并基于当前执行程序中的预取指令形成预取请求并向指令预取装置的预取请求合并单元发送所述预取请求。特别的,对于每个处理器核心,其每次只能发出一个预取请求,前一预取请求对应的指令返回后,处理器核心才能发出下一预取请求。所述预取请求合并单元获得预取请求后,会判断所述预取请求是否与其他预取请求可以合并,若可以合并,则将取指目标相同的预取请求合并,并将合并后的预取请求提供给取指缓存;若不可合并,则直接将所述预取请求提供给取指缓存。之后,指令引擎从取指缓存中获取预取请求,并基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,若预取请求命中,则将预取请求写入装填缓存,若预取请求未命中,且所述预取请求与装填缓存中已存储的预取请求不冲突时,则将所述来命中的预取请求提供给访存缓存,若所述预取请求与装填缓存中已存储的预取请求冲突,则等待装填缓存中已存储的预取请求处理完之后,再将所述未命中的预取请求提供给访存缓存。 对于所述命中的预取请求,说明所述指令缓存单元中已存储有对应的指令,无需从片外主存中获取指令;而对于因未命中而暂存于访存缓存中的预取请求,片外主存会从访存缓存中获取所述预取请求,并基于所述预取请求,将与所述预取请求对应的指令提供给指令缓存单元,同时将所述预取请求提供给装填缓存,这样,指令缓存单元中即存储有与预取请求对应的指令,而装填缓存中亦得到了所述预取请求。接着,传输单元从装填缓存中获取预取请求,同时从指令缓存单元中获取对应的指令,基于所述预取请求将与所述预取请求对应的指令提供给处理器核心的本地指令缓冲,从而完成所述指令预取操作。可以看出,通过所述预取请求合并单元,指令预取装置避免了多次装载相同指令的重复操作,提高了指令预取的效率。接下来,再对所述预取请求合并单元的具体结构进行说明。参考图3,示出了所述预取请求合并单元的一种具体实施方式
。所述预取请求合并单元包括轮转仲裁单元与指令比较单元,其中,所述轮转仲裁单元,用于接收处理器核心提供的预取请求,选择一个预取请求作为主预取请求,其他的预取请求作为从预取请求;所述指令比较单元,用于接收主预取请求及从预取请求并进行比较,将包含有相同的指令需求信息的主预取请求与从预取请求合并为新的预取请求,同时向处理器核心返回预取请求已处理的接收响应。在实际应用中,与所述指令预取装置相连的处理器的每一处理器核心分别通过一个独立的硬连线与预取请求合并单元连接。通过所述硬连线,轮转仲裁单元接收多个处理器核心提供的预取请求,并采用公平轮转的策略,每次合并时选择一个预取请求作为主预取请求,其他的预取请求作为从预取请求。在确定主预取请求与从预取请求之后,指令比较单元对所述主预取请求及从预取请求进行比较。若所述主预取请求与从预取请求包含有相同的指令需求信息,则将所述主预取请求与从预取请求合并为新的预取请求,同时向处理器核心返回预取请求已处理的接收响应。所述接收响应用于指示处理器核心其发出的预取请求已被处理,以便撤销被处理的预取请求,避免同一预取请求被多次处理。若所述主预取请求与从预取请求不包含有相同的指令需求信息,则不合并所述主预取请求与从预取请求,而直接提供给后续单元。对于所述预取指令合并处理,其可以根据电路实现的延时,分为一拍或多拍进行。 需要注意的是,对于多拍执行的预取指令合并处理,其合并过程不能够流水进行。依据实际应用的不同,所述预取请求合并单元还可以采用采用多级级联结构,图4 即示出了预取请求合并单元的一种级联结构。依据具体应用的不同,所述预取请求合并单元包含有两级以上的级联结构,作为示例,图4示出了两级级联结构,但不应限制其范围。如图4所示,不同的第一级预取请求合并子单元分别接收不同处理器核心提供的预取请求并进行相应的合并处理。合并处理后的预取请求继续提供给第二级预取请求合并子单元,并由其进行合并处理。再所述两级合并处理之后,预取请求合并单元将合并后的预取请求提供给取指缓存。之所以设置所述级联结构的预取请求合并单元,是因为处理器核心的规模并不确定,对于规模较大的处理器核心,由于其中包含有较多的处理器核心,如果采用一级结构,预取请求需要比较的次数过多,电路逻辑级数过长,限制了芯片工作频率。 因此,采用多级级联结构可以减少预取请求比较电路的延迟,从而优化预取请求的合并电路逻辑,提高电路工作频率。本发 明的指令预取装置实现了指令由片外主存向处理器核心的预先转移,提高了处理器的处理效率。特别的,一次预取操作可以向多个处理器核心提供指令,这就减少了指令预取操作的次数,减少了片外主存或指令缓存单元与处理器核心的指令交互次数,提高了指令管理的效率。图5示出了本发明指令预取方法一个实施例的流程。如图5所示,本发明指令预取方法一个实施例的流程包括执行步骤S502,获取处理器核心提供的预取请求。在具体实施例中,所进预取请求可以采用预取请求指令的形式添加在需要执行的程序中。所述程序中不同分支或不同位置的预取请求指令对应于不同指令的预取操作。在处理器当前执行的程序运行到不同的分支时,处理器核心即基于当前程序中不同的预取请求指令,提供不同的预取请求。特别的,处理器核心提供所述预取请求为异步进行的,因此,所述预取请求的提供并不会影响处理器核心中的微处理单元进行运算操作,也不会影响其流水线继续运行。可以看出,本发明的指令预取方法通过程序自行管理指令预取,提高了指令预取的可移植性, 大大扩展了适用范围。依据具体实施例的不同,可以将不同处理器核心提供的需要相同指令的预取请求合并。通过将预取相同指令的预取请求合并,需求相同指令的不同处理器核心即可以同时装载所述指令,这就避免了多次装载相同指令的重复操作,提高了指令预取的效率。执行步骤S504,基于所述预取请求,获取与所述预取请求对应的指令并存储于处理器的片上指令缓存中。为了实现指令预取,所述预取请求中应包含有预取指令信息、核心需求信息以及指令装填地址等信息。其中,所述预取指令信息用于标识需要预取的指令,所述核心需求信息对应于所述预取的指令具体需要存放到哪些处理器核心中,而所述指令装填地址则对应于所述预取的指令存放于处理器核心本地指令缓冲中的具体地址。在实际应用中,所述集成于程序中的预取请求指令可以采用下述的指令格式 Preblk Ra Rb,其中,Preblk标记了预取请求指令,该指令的两个参数Ra表示预取指令信息,Rb表示核心需求信息,而指令装填地址可以基于当前本地指令缓冲的存储状况由处理器核心提供。基于所述预取请求中的预取指令信息,在处理器的片上指令缓存(所述片上指令缓存不包括处理器核心中的本地指令缓冲,例如图1中示出的指令缓存单元)中搜索与所述预取指令信息所对应的指令。若片上指令缓存中已存储有对应的指令,则继续执行后续的指令写入;而若片上指令缓存中未存储有对应的指令,则从片外主存中获取与预取指令信息对应的指令并存储到片上指令缓存中。相较于片外主存与片上指令缓存间较慢的通信速度,处理器核心与片上指令缓存间具备较快的通信速度,因此,通过将指令由片外主存转移到片上指令缓存中,指令预取速度大为提高。
执行步骤S506,将片上指令缓存中与所述预取请求对应的指令提供给与所述预取请求对应的处理器核心。在具体实施例中,所述核心需求信息包含至少一个处理器核心的标识,基于所述预取请求中的核心需求信息,向一个或多个处理器核心的本地指令缓冲提供预取的指令; 优选的,不同的处理器核心对应于相同的指令装填地址,将与预取指令信息对应的指令存储至所述至少一个处理器核心中相同的指令装填地址。所述预取指令信息可以包含一个或多个需要预取的指令的标识;基于所述预取指令信息,将与预取指令信息对应的一个或多个指令提供至所述核心需求信息对应的处理器核心。特别的,对于不同的处理器核心,其可以预取相同的指令,也可以预取不同的指令。在实际应用中,需要对处理器核心中用于存储指令的本地指令缓冲的写入端口申请写入操作。相应的,如果该写入操作的申请结果有效,则基于预取请求向处理器核心的本地指令缓冲中写入指令;如果该写入操作的申请结果无效,则在下一周期后继续申请写入操作,直至获得有效的申请结果,从而完成指令的写入。本发明的指令预取方法与预取装置以较为简便的方式实现了多核处理器的指令预取,简化了硬件指令存储的管理逻辑,提高了处理器的处理效率;所述预取请求通过指令的形式添加在需要执行的程序中,通过程序来管理指令预取,这就提高了指令预取的可移植性,大大扩展了适用范围;此外,基于需要预取的指令的不同,还可以将不同处理器核心提供的预取请求合并后再进行指令预取操作,以便于向需求相同指令的处理器核心同时装载指令,这进一步提高了指令预取的效率。应该理解,此处的例子和实施例仅是示例性的,本领域技术人员可以在不背离本申请和所附权利要求所限定的本发明的精神和范围的情况下,做出各种修改和更正。
权利要求
1.一种指令预取装置,用于向处理器核心提供指令预取服务,其特征在于, 包括取指控制单元与指令缓存单元,其中所述取指控制单元,用于接收处理器核心提供的预取请求,基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,或指示指令缓存单元从片外主存中获取与所述预取请求对应的指令;基于所述预取请求指示指令缓存单元将与预取请求对应的指令提供给处理器核心;所述指令缓存单元,用于存储指令;响应所述取指控制单元的指示,从片外主存中获取与所述预取请求对应的指令,以及将与预取请求对应的指令提供给处理器核心。
2.如权利要求1所述的指令预取装置,其特征在于,所述取指控制单元包括指令引擎、 取指缓存、访存缓存、装填缓存以及传输单元,其中所述取指缓存,用于接收并暂存处理器核心提供的预取请求; 所述指令引擎,用于从取指缓存中获取预取请求,基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,若预取请求命中,则将预取请求写入装填缓存,若预取请求未命中,且所述预取请求与装填缓存中已存储的预取请求不冲突时,则将所述未命中的预取请求提供给访存缓存;所述访存缓存以及装填缓存,用于暂存预取请求;所述传输单元,用于从装填缓存中获取预取请求,从指令缓存单元中获取指令,基于所述预取请求将与所述预取请求对应的指令提供给处理器核心;片外主存从访存缓存中获取预取请求,基于所述预取请求,将与所述预取请求对应的指令提供给指令缓存单元,并将所述预取请求提供给装填缓存。
3.如权利要求1所述的指令预取装置,其特征在于,所述取指控制单元还用于将不同处理器核心提供的预取请求合并,基于所述合并后的预取请求进行指令预取操作。
4.如权利要求3所述的指令预取装置,其特征在于,所述取指控制单元包括预取请求合并单元、指令引擎、取指缓存、访存缓存、装填缓存以及传输单元,其中所述预取请求合并单元,用于接收处理器核心提供的预取请求,将取指目标相同的预取请求合并,并将合并后的预取请求提供给取指缓存;所述指令引擎,用于从取指缓存中获取预取请求,基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,若预取请求命中,则将预取请求写入装填缓存,若预取请求未命中,且所述预取请求与装填缓存中已存储的预取请求不冲突时,则将所述未命中的预取请求提供给访存缓存;所述取指缓存、访存缓存以及装填缓存,用于暂存预取请求;所述传输单元,用于从装填缓存中获取预取请求,从指令缓存单元中获取指令,基于所述预取请求将与所述预取请求对应的指令提供给处理器核心;片外主存从访存缓存中获取预取请求,基于所述预取请求,将与所述预取请求对应的指令提供给指令缓存单元,并将所述预取请求提供给装填缓存。
5.如权利要求4所述的指令预取装置,其特征在于,所述预取请求合并单元包括轮转仲裁单元与指令比较单元,其中,所述轮转仲裁单元,用于接收处理器核心提供的预取请求,选择一个预取请求作为主预取请求,其他的预取请求作为从预取请求;所述指令比较单元,用于接收主预取请求及从预取请求并进行比较,将包含有相同的指令需求信息的主预取请求与从预取请求合并为新的预取请求,同时向处理器核心返回预取请求已处理的接收响应。
6.如权利要求5所述的指令预取装置,其特征在于,所述预请求合并单元采用级联结构。
7.如权利要求1所述的指令预取装置,其特征在于,所述指令预取装置集成在多核处理器中,用于预取指令并提供给所述多核处理器的多个处理器核心。
8.如权利要求7所述的指令预取装置,其特征在于,所述预取请求中包含有预取指令信息、核心需求信息以及指令装填地址。
9.如权利要求8所述的指令预取装置,其特征在于,所述核心需求信息包含至少一个处理器核心的标识,所述指令缓存单元将与预取指令信息对应的指令存储至所述至少一个处理器核心中相同的指令装填地址。
10.如权利要求8所述的指令预取装置,其特征在于,所述预取指令信息包含一个或多个需要预取的指令的标识;所述指令缓存单元根据所述预取指令信息,将与预取指令信息对应的一个或多个指令提供至所述核心需求信息对应的处理器核心。
11.一种指令预取方法,其特征在于,包括获取处理器核心提供的预取请求;基于所述预取请求,获取与所述预取请求对应的指令并存储于处理器的片上指令缓存中;将片上指令缓存中与所述预取请求对应的指令提供给与所述预取请求对应的处理器核心。
12.如权利要求11所述的指令预取方法,其特征在于,所述基于所述预取请求,获取与所述预取请求对应的指令并存储于处理器的片上指令缓存中包括在处理器的片上指令缓存中搜索与所述预取请求所对应的指令,若所述片上指令缓存中未存储有与预取请求对应的指令,则从片外主存中获取与预取请求对应的指令并存储到片上指令缓存中。
13.如权利要求11所述的指令预取方法,其特征在于,所述预取请求以预取请求指令的形式添加在当前执行的可执行程序中,处理器核心基于所述当前执行程序中不同的预取请求指令提供不同的预取请求。
14.如权利要求11所述的指令预取方法,其特征在于,所述预取请求中包含有预取指令信息、核心需求信息及指令装填地址,所述将片上指令缓存中与所述预取请求对应的指令提供给与所述预取请求对应的处理器核心还包括所述核心需求信息包含至少一个处理器核心的标识,基于所述预取请求中的核心需求信息,向一个或多个处理器核心的本地指令缓冲提供预取的指令。
15.如权利要求14所述的指令预取方法,其特征在于,还包括不同的处理器核心对应于相同的指令装填地址,将与预取指令信息对应的指令存储至所述至少一个处理器核心中相同的指令装填地址。
16.如权利要求14所述的指令预取方法,其特征在于,还包括所述预取指令信息包含一个或多个需要预取的指令的标识,基于所述预取指令信息,将与预取指令信息对应的一个或多个指令提供至所述核心需求信息对应的处理器核心。
17.如权利要求11所述的指令预取方法,其特征在于,所述将片上指令缓存中与所述预取请求对应的指令提供给与所述预取请求对应的处理器核心还包括基于所述预取请求,向处理器核心中本地指令缓冲申请写入操作,如果申请结果有效,则向所述本地指令缓冲中写入与所述预取请求对应的指令;如果申请结果无效,则在下一周期后继续申请写入操作。
18.如权利要求11所述的指令预取方法,其特征在于,在所述获取处理器核心提供的预取请求之后,还包括将不同处理器核心提供的需要相同指令的预取请求合并。
全文摘要
一种指令预取方法与预取装置。所述指令预取装置,用于向处理器核心提供指令预取服务,包括取指控制单元,用于接收处理器核心提供的预取请求,基于所述预取请求在指令缓存单元搜索与所述预取请求对应的指令,或指示指令缓存单元从片外主存中获取与所述预取请求对应的指令;基于所述预取请求指示指令缓存单元将与预取请求对应的指令提供给处理器核心;指令缓存单元,用于存储指令;响应所述取指控制单元的指示,从片外主存中获取与所述预取请求对应的指令,以及将与预取请求对应的指令提供给处理器核心。本发明的指令预取方法与预取装置以较为简便的方式实现了多核处理器的指令预取,简化了硬件指令存储的管理逻辑,提高了处理器的处理效率。
文档编号G06F9/38GK102446087SQ20101050887
公开日2012年5月9日 申请日期2010年10月12日 优先权日2010年10月12日
发明者任秀江, 吕晖, 李宏亮, 谢向辉, 郑方, 钱磊 申请人:无锡江南计算技术研究所