CN108255517A - 处理器及请求指令缓存数据的方法 - Google Patents
处理器及请求指令缓存数据的方法 Download PDFInfo
- Publication number
- CN108255517A CN108255517A CN201611247360.7A CN201611247360A CN108255517A CN 108255517 A CN108255517 A CN 108255517A CN 201611247360 A CN201611247360 A CN 201611247360A CN 108255517 A CN108255517 A CN 108255517A
- Authority
- CN
- China
- Prior art keywords
- subitem
- miss
- instruction
- request
- thread
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 239000000872 buffer Substances 0.000 claims abstract description 54
- 230000004913 activation Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 6
- 238000002360 preparation method Methods 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种处理器及一种请求指令缓存数据的方法。其中,处理器包括多个线程和指令未命中单元,其中,指令未命中单元被配置用于:从多个线程中的至少一个线程分别接收指令缓存未命中请求,其中,至少一个线程处在休眠状态;对每个指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配;以及根据匹配结果,对指令缓存未命中请求进行归类处理。这样,对于请求同一个指令缓存数据的指令缓存未命中请求,配置一个项,此项的要求子项对应的线程执行一次指令缓存数据写入指令缓存的操作,从而可以节省计算机资源。
Description
技术领域
本发明涉及计算机领域,特别涉及一种处理器及一种请求指令缓存数据的方法。
背景技术
中央处理单元(CPU)包括:指令未命中缓存(IMB)、指令缓存(IC)、执行单元(execution unit)等等。IC用于存储IC数据,可以是一级高速缓存(cache),一级高速缓存是执行单元与CPU中的二级高速缓存或CPU外的外部存储介质之间的临时存储介质。IC的容量比二级高速缓存和外部存储介质小但交换速度快。存储在IC中的IC数据是二级高速缓存和外部存储介质中的一小部分,但这一小部分是短时间内执行单元即将访问的。这样,就可避开二级高速缓存和外部存储介质,直接从IC中调用IC数据,从而提高读取速度。
指令缓存未命中(IC miss)指未能从IC中调用到IC数据。对于多线程处理器,多线程可平行执行一个程序,所以多线程可能从IC中调用同一个IC数据,其中线程是程序执行流中的最小实体单元。。如果IC中没有需要的IC数据,多线程都会发送IC未命中请求至IMB。现有技术中,每收到一个IC未命中请求,IMB会分配一个新的IMB项,用于向二级缓存或外部存储介质请求需要的IC数据。这样,多个IMB项可能向二级缓存或外部存储介质请求同一个IC数据。为了避免同一个IC数据被不必要地重复写入IC,可以采用链接表或其他方案,以对请求同一个IC数据的IMB项进行进一步的处理。因此,更多的CPU资源会被占用,并且链接表或其他方案在错误分支预测(branch misprediction)的情况下可能无法顺利进行。
发明内容
本发明实施例提供一种处理器及一种请求指令缓存数据的方法,对于请求同一个IC数据的IC未命中请求,配置一个IMB项,以节省计算机资源。
本发明实施例提供一种处理器,所述处理器包括多个线程和指令未命中单元,所述指令未命中单元被配置用于:从所述多个线程中的至少一个线程分别接收指令缓存未命中请求,其中,所述至少一个线程处在休眠状态;对每个所述指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配;以及根据匹配结果,对所述指令缓存未命中请求进行归类处理。
在一些实施例中,每个所述指令缓存未命中请求包括第一存储地址,所述至少一个未处理的其他指令缓存未命中请求包括第二存储地址,所述指令未命中单元被配置用于:对所述第一存储地址与所述第二存储地址进行匹配。
在一些实施例中,所述指令未命中单元被配置用于:根据匹配结果,通过所述指令未命中单元的项,对所述指令缓存未命中请求进行归类处理,其中所述项用于请求指令缓存数据,包括要求子项和至少一个重复子项,所述要求子项或至少一个重复子项用于记录线程的序号。
在一些实施例中,所述指令未命中单元被配置用于:若一个指令缓存未命中请求与所有未处理的其他指令缓存未命中请求不匹配,分配一个未被占用的所述项;以及设定所述要求子项为发送所述一个指令缓存未命中请求的线程的序号。在一些实施例中,所述指令未命中单元被配置用于:若一个指令缓存未命中请求与一个未处理的其他指令缓存未命中请求匹配,获取所述一个未处理的其他指令缓存未命中请求对应的所述项;以及设定所述至少一个重复子项中的一个重复子项为发送所述一个指令缓存未命中请求的线程的序号。
在一些实施例中,所述指令未命中单元还被配置用于:若所述要求子项对应的线程出现错误分支预测,设定所述要求子项的值为所述至少一个重复子项中的一个重复子项的值。在一些实施例中,所述指令未命中单元还被配置用于:若所述至少一个重复子项中的一个或多个重复子项对应的线程出现错误分支预测,重置所述一个或多个重复子项。
在一些实施例中,所述指令未命中单元还被配置用于:接收所述项请求的指令缓存数据后,激活所述要求子项对应的线程。
在一些实施例中,所述指令未命中单元还被配置用于:激活所述要求子项对应的线程后,检查所述至少一个重复子项。在一些实施例中,若所述至少一个重复子项中的一个或多个重复子项被设定,激活所述一个或多个重复子项对应的线程。
本发明实施例还提供一种请求指令缓存数据的方法,所述方法包括:从多个线程中的至少一个线程分别接收指令缓存未命中请求,其中,所述至少一个线程处在休眠状态;对每个所述指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配;以及根据匹配结果,对所述指令缓存未命中请求进行归类处理。
在一些实施例中,每个所述指令缓存未命中请求包括第一存储地址,所述至少一个未处理的其他指令缓存未命中请求包括第二存储地址,对每个所述指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配包括:对所述第一存储地址与所述第二存储地址进行匹配。
在一些实施例中,根据匹配结果,通过指令未命中单元的项,对所述指令缓存未命中请求进行归类处理,其中所述项用于请求指令缓存数据,包括要求子项和至少一个重复子项,所述要求子项或至少一个重复子项用于记录线程的序号。
在一些实施例中,对所述指令缓存未命中请求进行归类处理包括:若一个指令缓存未命中请求与所有未处理的其他指令缓存未命中请求不匹配,分配一个未被占用的所述项;以及设定所述要求子项为发送所述一个指令缓存未命中请求的线程的序号。在一些实施例中,对所述指令缓存未命中请求进行归类处理包括:若一个指令缓存未命中请求与一个未处理的其他指令缓存未命中请求匹配,获取所述一个未处理的其他指令缓存未命中请求对应的所述项;以及设定所述至少一个重复子项中的一个重复子项为发送所述一个指令缓存未命中请求的线程的序号。
在一些实施例中,所述方法还包括:若所述要求子项对应的线程出现错误分支预测,设定所述要求子项的值为所述至少一个重复子项中的一个重复子项的值。在一些实施例中,所述方法还包括:若所述至少一个重复子项中的一个或多个重复子项对应的线程出现错误分支预测,重置所述一个或多个重复子项。
在一些实施例中,所述方法还包括:接收所述项请求的指令缓存数据后,激活所述要求子项对应的线程。
在一些实施例中,所述方法还包括:激活所述要求子项对应的线程后,检查所述至少一个重复子项。在一些实施例中,若所述至少一个重复子项中的一个或多个重复子项被设定,激活所述一个或多个重复子项对应的线程。
与现有技术相比,本发明实施例的技术方案具有以下优点:
对于请求同一个IC数据的IC未命中请求,配置一个IMB项,所述IMB项包括要求子项和至少一个重复子项,所述要求子项对应的线程执行一次IC数据写入IC的操作,从而可以节省计算机资源;
在分支预测错误的情况下,重新设定一个IMB项的要求子项或重复子项,从而避免引入其他方案或链接表,以进一步地节省了计算机资源。
附图说明
图1示出了本发明一个实施例的处理器的结构示意图;
图2示出了本发明一个实施例的IMB项的结构示意图;以及
图3示出了本发明一个实施例的应用于处理器的请求指令缓存数据的方法的流程示意图。
具体实施方式
本发明实施例提供一种处理器及一种请求指令缓存数据的方法,对于请求同一个IC数据的IC未命中请求,配置一个IMB项,以节省计算机资源。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。以特定实施例作为参考,对本发明进行说明。因此,公开的实施例不应解释为对本发明的不当的限制。
图1示出了本发明一个实施例的处理器100的结构示意图。所述处理器100包括三个线程(101、103及105)、指令缓存(IC)107以及指令未命中缓存(IMB)109。所述三个线程与IC 107和IMB 109连接,因此,所述三个线程101、103及105可共享所述IC 107。此外,所述三个线程对应的二进制序号分别是01、10及11。在一些实施例中,所述IC 107可以是组相连缓存(set associative cache),组相连缓存包括多个组,每个组包括多个路(way),以及每个路包括多个快速缓存行(cache line)。需要说明地,快速缓存行是一级快速缓存与其他存储介质(例如,二级快速缓存或外部存储介质)进行IC数据交换的单位。
基于处理器100,提供本发明的一个具体实施例。
线程101调用IC 107中的指令时,没有在IC 107中搜索到所述指令,从而发生IC未命中的情况,因此线程101发送IC未命中请求至IMB 109,然后进入休眠状态。
IMB 109接收线程101发送的IC未命中请求,并对所述IC未命中请求中的快速缓存行地址和至少一个未处理的其他IC未命中请求中的快速缓存行地址进行匹配。根据匹配结果,所述IMB 109通过IMB项,对IC未命中请求进行归类。需要说明地,所述IMB 109包括多个IMB项,用于向二级高速缓存或外部存储介质请求IC数据。在一些实施例中,所述IMB 109存储所述至少一个未处理的其他IC未命中请求。
图2示出了本发明一个实施例的IMB项200的结构示意图。所述IMB项200包括有效(valid)比特201、要求(demand)比特203、重复(duplicate)比特205、IMB项预备(Brdy)指示比特207、激活预备(Irdy)指示比特209、及完成指示比特211。
在一些实施例中,所述有效比特201包括一个比特,用于指示所述IMB项200是否正在被使用。具体地,所述有效比特201为1时,表示所述IMB项200正在被使用,即所述IMB 109中存储有一个未处理的其他IC未命中请求。所述有效比特201为0时,表示所述IMB项200未被使用。
在一些实施例中,所述要求比特203和重复比特205用于记录线程的二进制序号。所述要求比特203和重复比特205分别包括的比特数与线程的个数有关。在一个实施例中,对应两个线程,所述要求比特203和重复比特205分别包括一个比特。在另一个实施例中,对应四个线程,所述要求比特203和重复比特205分别包括两个比特。在另一个实施例中,对应六个线程,所述要求比特203和重复比特205分别包括三个比特。
在一些实施例中,所述Brdy指示比特207包括一个比特,用于表示所述IMB项200是否已预备好,即所述IMB 109是否可以发送所述IMB项200对应的IC数据请求。所述Brdy指示比特207为1时,表示所述IMB 109可以发送所述IC数据请求至二级快速缓存或外部存储介质。所述Brdy指示比特207为0时,表示所述IMB项200还未准备好。
在一些实施例中,所述Irdy指示比特209包括一个比特,用于表示所述IMB项200对应的请求的IC数据是否已全部收到及IMB 109是否已激活所述IMB项200对应的所有休眠的线程。所述Irdy指示比特209为1时,表示请求的IC数据已全部收到且所述IMB 109已预备开始激活所述IMB项200对应的一个或多个休眠的线程,即表示至少有一个所述IMB项200对应的休眠的线程还未被激活。所述Irdy指示比特209为0时,表示请求的IC数据未全部收到或所述IMB项200对应的休眠的线程已经全部激活。
在一些实施例中,所述完成指示比特211包括一个比特,用于表示是否完成执行所述IMB项200。若完成,所述完成指示比特211为1;若未完成,所述完成指示比特211为0。
需要说明地,所述有效比特201、所述Brdy指示比特207、所述Irdy指示比特209、及所述完成指示比特211的默认值为0,所述要求比特203和所述重复比特205的默认值为空值(即,Null)。
在一个实施例中,所述IC未命中请求中的快速缓存行地址和所有未处理的其他IC未命中请求中的快速缓存行地址不匹配,即所述IC未命中请求对应的快速缓存行之前未被请求过,所述IMB 109分配一个新的IMB项。参考图2,然后,将所述有效比特201及所述Brdy指示比特207设为1,所述要求比特203设为01,即线程101对应的序号,其他各比特为默认值。
根据所述Brdy指示比特207,所述IMB 109判断其是否准备好用于进行下一步操作。若所述Brdy指示比特207为1,所述IMB 109发送所述新的项对应的IC数据请求至二级快速缓存或外部存储介质,并且将所述Brdy指示比特207还原为0。在一些实施例中,所述IMB109执行判断操作的频率可由第一时钟(clock)来控制。
所述二级快速缓存或外部存储介质将请求的快速缓存行发送至所述IMB109。然后,所述IMB 109判断请求的IC数据是否已全部收到,因为所有请求的IC数据可能不是在同一时间到达所述IMB 109的。所述IMB 109确认请求的IC数据已全部收到后,将所述Irdy指示比特209设为1,并预备开始激活线程101。
所述IMB 109根据所述Irdy指示比特209,判断所述IMB 109是否准备好用于进行下一步操作,即激活线程101。当所述Irdy指示比特209为1时,所述IMB 109发送激活信号至线程101以激活休眠的线程101。在一些实施例中,所述IMB 109执行判断操作的频率可由第二时钟来控制。
然后,激活的线程101从IMB 109获取请求的快速缓存行,并执行IC写入操作将请求的快速缓存行写入IC 107。完成IC写入操作后,线程101发送写入完成信号至IMB 109。在一些实施例中,发送激活信号后,所述IMB 109检查所述重复比特205中是否为空值,若是空值,将所述Irdy指示比特209还原为0。
所述IMB 109接收所述写入完成信号后,根据所述Irdy指示比特209,判断所述新的项对应的线程是否都已全部激活。若所述Irdy指示比特209为0,所述IMB 109将所述完成指示比特211设为1,从而完成对所述新的项的操作。在一些实施例中,接收所述写入完成信号后,所述IMB 109检查所述重复比特205中是否为空值,若是空值,将所述完成指示比特211设为1。
基于处理器100,提供本发明的另一个具体实施例。
线程103调用IC 107中的指令时,发生IC未命中的情况,因此线程103发送第一IC未命中请求至IMB 109,然后进入休眠状态。
IMB 109接收线程103发送的第一IC未命中请求,并对所述第一IC未命中请求中的快速缓存行地址和至少一个未处理的其他IC未命中请求中的快速缓存行地址进行匹配。
通过匹配得知,所述第一IC未命中请求中的快速缓存行地址和所有未处理的其他IC未命中请求中的快速缓存行地址不匹配,从而IMB 109分配一个新的IMB项。然后,参考图2,将所述有效比特201及所述Brdy指示比特207设为1,所述要求比特203设为10,即线程103对应的序号,其他比特为默认值。
此外,线程105从IC 107中调用所述指令时,也发生IC未命中的情况,因此线程105发送第二IC未命中请求至IMB 109,然后进入休眠状态。
IMB 109接收线程105发送的第二IC未命中请求,并对所述第二IC未命中请求中的快速缓存行地址和至少一个未处理的其他IC未命中请求中的快速缓存行地址进行匹配,其中所述至少一个未处理的其他IC未命中请求包括所述第一IC未命中请求。
通过匹配得知,所述第二IC未命中请求中的快速缓存行地址和所述第一IC未命中请求中的快速缓存行地址匹配,从而IMB 109获取所述新的项并对所述新的项进一步设定。具体地,将所述重复比特205设为11,即线程105对应的序号。
所述IMB 109根据所述Brdy指示比特207,判断所述IMB 109是否准备好用于进行下一步操作。若所述Brdy指示比特207为1,所述IMB 109发送所述新的IMB项对应的IC数据请求至二级快速缓存或外部存储介质,并且将所述Brdy指示比特207还原为0。在一些实施例中,所述IMB 109执行判断操作的频率可由第一时钟来控制。
所述二级快速缓存或外部存储介质将请求的快速缓存行发送至IMB 109。然后,所述IMB 109判断请求的IC数据是否已全部收到。所述IMB 109确认请求的IC数据已全部收到后,将所述Irdy指示比特209设为1,并预备开始激活线程103和105。
所述IMB 109根据所述Irdy指示比特209,判断所述IMB 109是否准备好用于进行下一步操作,即激活线程103和105。当所述Irdy指示比特209为1时,所述IMB 109发送第一激活信号至线程103以激活休眠的线程103。在一些实施例中,所述IMB 109执行判断操作的频率可由第二时钟来控制。
然后,激活的线程103从IMB 109获取请求的快速缓存行,并执行IC写入操作将请求的快速缓存行写入IC 107。完成IC写入操作后,线程103发送写入完成信号至IMB 109。在一些实施例中,发送第一激活信号后,所述IMB109检查所述重复比特205中是否为空值,若是空值,将所述Irdy指示比特209还原为0。
所述IMB 109接收所述写入完成信号后,根据所述Irdy指示比特209,判断所述新的项对应的线程是否都已激活。若所述Irdy指示比特209为1,所述IMB 109发送第二激活信号至线程105以激活休眠的线程105,并且将所述Irdy指示比特209设为0及所述完成指示比特211设为1,从而完成所述新的项的操作。
在一些实施例中,接收所述写入完成信号后,所述IMB 109检查所述重复比特205中是否为空值,若不是空值,发送第二激活信号至线程105以激活休眠的线程105,并且将所述Irdy指示比特209设为0及所述完成指示比特211设为1。
在一些实施例中,一个IMB项可以包括多个重复比特,若多个重复比特中都不为空值,IMB 109发送多个激活信号以分别激活所述多个重复比特对应的休眠的线程,并且将所述Irdy指示比特209设为0及所述完成指示比特211设为1。
在一些实施例中,线程103接收到分支预测错误信号,所述IMB 109将所述要求比特203设为11,即线程105对应的序号,将所述重复比特205设为空值。在一些实施例中,线程105接收到分支预测错误信号,所述IMB 109将所述重复比特205设为空值。
在一些实施例中,若有多个IMB项处在预备状态(Brdy或Irdy)时,从所述多个IMB项先挑选一个IMB项执行,比如,所述一个IMB项可以是所述多个IMB项中最先预备的或使用轮询(round robin)法挑选。本发明实施例对挑选方法不做限定。
所述外部存储介质可包括,如硬盘、闪存盘、光盘、随机读取内存(RAM)、只读内存(ROM)、及其他任何公知的计算机可读介质。所述外部存储介质可存储所述处理器100执行的指令缓存数据。
应用本发明实施例提供的处理器可以对于请求同一个快速缓存行的IC未命中请求,配置一个IMB项,所述IMB项包括要求子项和至少一个重复子项。所述要求子项对应的线程执行一次快速缓存行写入IC的操作,避免将相同的快速缓存行不必要地重复写入IC,从而可以节省计算机资源。特别地,对于组相连缓存,可以避免将相同的快速缓存行写入相同组的不同路中。此外,在分支预测错误的情况下,重新设定一个IMB项的要求子项或重复子项,从而避免引入其他方案或链接表,可进一步地节省了计算机资源。
本发明实施例还提供一种应用于处理器(比如,处理器100)的请求指令缓存数据的方法。图3示出了本发明一个实施例的应用于处理器100的请求指令缓存数据的方法300的流程示意图。所述请求指令缓存数据的方法300包括以下步骤。
步骤301中,线程101发送第一IC未命中请求至IMB 109,然后线程101进入休眠状态。
步骤302中,IMB 109对所述第一IC未命中请求包括的快速缓存行地址与至少一个未处理的其他IC未命中请求包括的快速缓存行地址进行匹配。
步骤303中,IMB 109根据匹配结果获知快速缓存行地址不匹配,从而分配一个新的IMB项,参考图2,将所述要求比特203设为01,所述有效比特201及所述Brdy指示比特207设为1,其他比特为默认值。
步骤304中,线程105发送第二IC未命中请求至IMB 109,然后,线程105进入休眠状态。
步骤305中,IMB 109对所述第二IC未命中请求包括的快速缓存行地址与至少一个未处理的其他IC未命中请求包括的快速缓存行地址进行匹配,其中,至少一个未处理的其他IC未命中请求包括第一IC未命中请求。
步骤306中,IMB 109根据匹配结果获知所述快速缓存行地址与所述第一IC未命中请求包括的快速缓存行地址匹配,从而获得所述新的项并将其重复比特205设为11。
步骤307中,根据判断所述Brdy指示比特207的结果(即,所述Brdy指示比特207为1),IMB 109发送IC数据请求至存储介质320。其中,所述存储介质320可以是处理器中的缓存或处理器外的外部存储介质。
步骤308中,IMB 109将所述Brdy指示比特207还原为0。
步骤309中,所述存储介质320发送请求的快速缓存行至IMB 109。
步骤310中,IMB 109接收到所有请求的IC数据后,将所述Irdy指示比特209设为1,即指示IMB 109可开始激活休眠的线程。
步骤311中,根据判断所述Irdy指示比特209的结果(即,所述Irdy指示比特209为1),IMB 109发送第一激活信号至线程101以激活线程101。
步骤312中,激活的线程101从IMB 109获取请求的快速缓存行,所述请求的快速缓存行被写入IC(图3中未示出)。
步骤313中,将请求的快速缓存行写入IC后,线程101发送写入完成信号至IMB109。
步骤314中,通过检查所述复制比特205的值,IMB 109收到所述写入完成信号后,发送第二激活信号至线程105以激活线程105。
步骤315中,IMB 109将所述Irdy指示比特209设为0且将所述完成指示比特211设为1。
在一些实施例中,若线程101出现错误分支预测,IMB 109设定所述要求比特203的值为11,所述复制比特205为空值;若线程105出现错误分支预测,IMB设定所述复制比特205为空值。
在一些实施例中,若确定没有设定的重复比特,IMB 109收到所述写入完成信号后,可将所述Irdy指示比特209设为0且将所述完成指示比特211设为1。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (20)
1.一种处理器,其特征在于,包括多个线程和指令未命中单元,所述指令未命中单元被配置用于:
从所述多个线程中的至少一个线程分别接收指令缓存未命中请求,其中,所述至少一个线程处在休眠状态;
对每个所述指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配;以及
根据匹配结果,对所述指令缓存未命中请求进行归类处理。
2.如权利要求1所述的处理器,其特征在于,每个所述指令缓存未命中请求包括第一存储地址,所述至少一个未处理的其他指令缓存未命中请求包括第二存储地址,所述指令未命中单元被配置用于:对所述第一存储地址与所述第二存储地址进行匹配。
3.如权利要求1所述的处理器,其特征在于,所述指令未命中单元被配置用于:根据匹配结果,通过所述指令未命中单元的项,对所述指令缓存未命中请求进行归类处理,其中所述项用于请求指令缓存数据,包括要求子项和至少一个重复子项,所述要求子项或至少一个重复子项用于记录线程的序号。
4.如权利要求3所述的处理器,其特征在于,所述指令未命中单元被配置用于:若一个指令缓存未命中请求与所有未处理的其他指令缓存未命中请求不匹配,分配一个未被占用的所述项;以及设定所述要求子项为发送所述一个指令缓存未命中请求的线程的序号。
5.如权利要求3所述的处理器,其特征在于,所述指令未命中单元被配置用于:若一个指令缓存未命中请求与一个未处理的其他指令缓存未命中请求匹配,获取所述一个未处理的其他指令缓存未命中请求对应的所述项;以及设定所述至少一个重复子项中的一个重复子项为发送所述一个指令缓存未命中请求的线程的序号。
6.如权利要求3所述的处理器,其特征在于,所述指令未命中单元还被配置用于:若所述要求子项对应的线程出现错误分支预测,设定所述要求子项的值为所述至少一个重复子项中的一个重复子项的值。
7.如权利要求3所述的处理器,其特征在于,所述指令未命中单元还被配置用于:若所述至少一个重复子项中的一个或多个重复子项对应的线程出现错误分支预测,重置所述一个或多个重复子项。
8.如权利要求3所述的处理器,其特征在于,所述指令未命中单元还被配置用于:接收所述项请求的指令缓存数据后,激活所述要求子项对应的线程。
9.如权利要求8所述的处理器,其特征在于,所述指令未命中单元还被配置用于:激活所述要求子项对应的线程后,检查所述至少一个重复子项。
10.如权利要求9所述的处理器,其特征在于,所述指令未命中单元还被配置用于:若所述至少一个重复子项中的一个或多个重复子项被设定,激活所述一个或多个重复子项对应的线程。
11.一种请求指令缓存数据的方法,其特征在于,包括:
从多个线程中的至少一个线程分别接收指令缓存未命中请求,其中,所述至少一个线程处在休眠状态;
对每个所述指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配;以及
根据匹配结果,对所述指令缓存未命中请求进行归类处理。
12.如权利要求11所述的方法,其特征在于,每个所述指令缓存未命中请求包括第一存储地址,所述至少一个未处理的其他指令缓存未命中请求包括第二存储地址,对每个所述指令缓存未命中请求与至少一个未处理的其他指令缓存未命中请求进行匹配包括:对所述第一存储地址与所述第二存储地址进行匹配。
13.如权利要求11所述的方法,其特征在于,根据匹配结果,通过指令未命中单元的项,对所述指令缓存未命中请求进行归类处理,其中所述项用于请求指令缓存数据,包括要求子项或至少一个重复子项,所述要求子项和至少一个重复子项用于记录线程的序号。
14.如权利要求13所述的方法,其特征在于,对所述指令缓存未命中请求进行归类处理包括:若一个指令缓存未命中请求与所有未处理的其他指令缓存未命中请求不匹配,分配一个未被占用的所述项;以及设定所述要求子项为发送所述一个指令缓存未命中请求的线程的序号。
15.如权利要求13所述的方法,其特征在于,对所述指令缓存未命中请求进行归类处理包括:若一个指令缓存未命中请求与一个未处理的其他指令缓存未命中请求匹配,获取所述一个未处理的其他指令缓存未命中请求对应的所述项;以及设定所述至少一个重复子项中的一个重复子项为发送所述一个指令缓存未命中请求的线程的序号。
16.如权利要求13所述的方法,其特征在于,还包括:若所述要求子项对应的线程出现错误分支预测,设定所述要求子项的值为所述至少一个重复子项中的一个重复子项的值。
17.如权利要求13所述的方法,其特征在于,还包括:若所述至少一个重复子项中的一个或多个重复子项对应的线程出现错误分支预测,重置所述一个或多个重复子项。
18.如权利要求13所述的方法,其特征在于,还包括:接收所述项请求的指令缓存数据后,激活所述要求子项对应的线程。
19.如权利要求18所述的方法,其特征在于,还包括:激活所述要求子项对应的线程后,检查所述至少一个重复子项。
20.如权利要求19所述的方法,其特征在于,若所述至少一个重复子项中的一个或多个重复子项被设定,激活所述一个或多个重复子项对应的线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611247360.7A CN108255517B (zh) | 2016-12-29 | 2016-12-29 | 处理器及请求指令缓存数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611247360.7A CN108255517B (zh) | 2016-12-29 | 2016-12-29 | 处理器及请求指令缓存数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108255517A true CN108255517A (zh) | 2018-07-06 |
CN108255517B CN108255517B (zh) | 2020-05-05 |
Family
ID=62720808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611247360.7A Active CN108255517B (zh) | 2016-12-29 | 2016-12-29 | 处理器及请求指令缓存数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108255517B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941451A (zh) * | 2019-10-23 | 2020-03-31 | 中国科学院计算技术研究所 | 一种数据流处理器指令映射方法及系统、装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729445A (zh) * | 2002-09-16 | 2006-02-01 | 英特尔公司 | 预取计算机系统中的数据 |
CN101256481A (zh) * | 2007-03-02 | 2008-09-03 | 富士通株式会社 | 数据处理器以及存储器读激活控制方法 |
CN101344842A (zh) * | 2007-07-10 | 2009-01-14 | 北京简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
CN101539853A (zh) * | 2008-03-21 | 2009-09-23 | 富士通株式会社 | 信息处理单元、程序和指令序列生成方法 |
CN101730885A (zh) * | 2007-06-28 | 2010-06-09 | 英特尔公司 | 用于多线程和多核心系统的高速缓存及其方法 |
US20150019835A1 (en) * | 2013-07-09 | 2015-01-15 | Texas Instruments Incorporated | Predication Methods for Vector Processors |
-
2016
- 2016-12-29 CN CN201611247360.7A patent/CN108255517B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729445A (zh) * | 2002-09-16 | 2006-02-01 | 英特尔公司 | 预取计算机系统中的数据 |
CN101256481A (zh) * | 2007-03-02 | 2008-09-03 | 富士通株式会社 | 数据处理器以及存储器读激活控制方法 |
CN101730885A (zh) * | 2007-06-28 | 2010-06-09 | 英特尔公司 | 用于多线程和多核心系统的高速缓存及其方法 |
CN101344842A (zh) * | 2007-07-10 | 2009-01-14 | 北京简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
CN101539853A (zh) * | 2008-03-21 | 2009-09-23 | 富士通株式会社 | 信息处理单元、程序和指令序列生成方法 |
US20150019835A1 (en) * | 2013-07-09 | 2015-01-15 | Texas Instruments Incorporated | Predication Methods for Vector Processors |
Non-Patent Citations (1)
Title |
---|
周本海: "基于多核处理平台上的任务调度与共享缓存分配策略研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941451A (zh) * | 2019-10-23 | 2020-03-31 | 中国科学院计算技术研究所 | 一种数据流处理器指令映射方法及系统、装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108255517B (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US3967247A (en) | Storage interface unit | |
US7840759B2 (en) | Shared cache eviction | |
WO2001025921A1 (en) | An arbitration protocol for a shared data cache | |
CN105320608A (zh) | 用于控制存储器设备处理访问请求的存储器控制器和方法 | |
US10503410B2 (en) | Apparatus and method for enforcing timing requirements for a memory device | |
US20030056075A1 (en) | Shared memory array | |
US9761296B2 (en) | Smart in-module refresh for DRAM | |
US7680992B1 (en) | Read-modify-write memory with low latency for critical requests | |
CN107025130A (zh) | 处理节点、计算机系统及事务冲突检测方法 | |
US20090235026A1 (en) | Data transfer control device and data transfer control method | |
CN107403642A (zh) | 有源随机存取存储器 | |
US20170090791A1 (en) | Data storage | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
CN108255517A (zh) | 处理器及请求指令缓存数据的方法 | |
US10101999B2 (en) | Memory address collision detection of ordered parallel threads with bloom filters | |
US20070083708A1 (en) | Controller of redundant arrays of independent disks and operation method thereof | |
US9524769B2 (en) | Smart in-module refresh for DRAM | |
CN108519860B (zh) | 一种ssd读命中的处理方法和装置 | |
CN109086231B (zh) | 输入输出设备的访问方法及装置 | |
CN107924370A (zh) | 单一中断服务例程线程中处理关联于多个请求的返回实体的方法以及使用该方法的装置 | |
US20170308296A1 (en) | Staging write requests | |
CN114091384A (zh) | 数据处理电路及人工智能芯片、数据处理方法和装置 | |
US20210173772A1 (en) | Memory data access apparatus and method thereof | |
US6829692B2 (en) | System and method for providing data to multi-function memory | |
US20100064280A1 (en) | Systems and methods for implementing test applications for systems using locks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |