具有自适应优先权控制器的数据处理系统的制作方法

文档序号:6427347阅读:196来源:国知局
专利名称:具有自适应优先权控制器的数据处理系统的制作方法
技术领域
本发明一般涉及数据处理器,更具体说,则专门涉及具有自适应优先权控制器的数据处理器。
背景技术
有分离指令和数据超高速缓存的微处理器,一般需要把对单一主存储器的各请求优先化。在中央处理单元(CPU)指令侧的操作,包括取指令、取指令流程的变化(instruction change of flow fetches)、和预取指令。CPU中的数据操作,包括装入操作和存储操作。近代的数据处理器还常常包括写入缓冲器、用于修改超高速缓存数据的推入(push)缓冲器、和指令的超高速缓存及数据的超高速缓存(连续写入或反向复制)。因为指令超高速缓存及数据超高速缓存(包括写入/推入缓冲器)的操作是独立的,所以能够出现对主存储器的同时的请求。主存储器和外部设备可以按CPU频率的分数频率运行。对主存储器请求的有效优先化,能够降低要求CPU的停顿周期(stall cycles)数,从而增强整个系统的性能。因此,需要把对主存储器的多个请求更有效地优先化。


本发明在各附图画出的实施例中的说明,是以示例的方式,而不是以限制的方式,图中用相同的标记表示相同的单元。
图1按照本发明的一个实施例,以方框图的形式画出一种数据处理系统。
图2按照本发明的一个实施例,以方框图的形式画出一种优先权控制器的一部分。
图3-10按照本发明的各个实施例,以流程图的形式说明把请求优先化的各方法。
本领域熟练人员显然知道,为简单和明晰起见,图中各单元没有必要按比例画出。例如,图中有些单元的尺寸,可以比其他单元画得更大,以便帮助对本发明各实施例的了解。
具体实施例方式
在本文中,“总线(bus)”一词是指多个信号或导线,可用于传送一个或多个各种类型的信息,如数据、地址、控制、或状态。“断言(assert)”和“求反(negate)”两词,是在把信号、状态比特、或类似设备译为它的逻辑状态时使用,分别指译为它们的逻辑真或逻辑假状态。如果逻辑真状态是逻辑电平1,则逻辑假状态是逻辑电平0。又,如果逻辑真状态是逻辑电平0,则逻辑假状态是逻辑电平1。
括弧用于表明总线的导线或一个值的比特位置。例如,“总线60
”或“总线的导线60
”,表示总线60的8根较低次序的导线,而“地址比特
”或“ADDRESS 60
”表示某一地址值8个较低次序的比特。数字前的符号“$”表示该数字以16进制或基数16形式表示。数字前的符号“%”表示该数字以二进制或基数2形式表示。
图的说明图1画出数据处理系统10的一个实施例。在一个实施例中,数据处理系统10包括处理器12、存储器14、其他总线主控器16、处理器18、以及可能的通过系统总线50相互双向耦合的其他总线主控器或总线受控器。在一个实施例中,处理器12包括通过总线38与指令超高速缓存22双向耦合的CPU 20。在一个实施例中,CPU 20通过总线36,与数据超高速缓存26、推入缓冲器28、和写入缓冲器30双向耦合。CPU 20通过信号46,与总线接口单元32(BIU 32)双向耦合。指令超高速缓存22通过信号48,与BIU 32双向耦合。数据超高速缓存26通过信号44,与BIU 32双向耦合。推入缓冲器28通过信号42,与BIU32双向耦合。写入缓冲器30通过信号40,与BIU 32双向耦合。在本发明的一个实施例中,BIU 32包括优先权控制电路34。注意,系统总线50可用作通信总线,在处理器12、存储器14、其他总线主控器16、处理器18,和任何其他与系统总线50耦合的总线主控器或总线受控器之间通信。
图2画出图1优先权控制电路34一部分的一个实施例。在本发明的一个实施例中,优先权控制电路34,包括用于分辨当前优先权电路60、优先权有效性监控器62的电路,以及用于规定优先权规则64的电路。注意,本发明的另外实施例,可以包括,也可以不包括优先权有效性监控器62。电路60与信号40、42、44、和46双向耦合。电路60包括比较电路61。电路60通过信号72,与电路64双向耦合。在本发明的一个实施例中,规定优先权规则64的电路,包括阈值寄存器66、副阈值寄存器68、和控制寄存器70。在本发明另外的实施例中,电路64可以包括附加的寄存器或其他电路。在本发明的一个实施例中,电路64与可选的优先权有效性监控器62双向耦合。在图2所示的本发明实施例中,电路60通过信号74,与优先权有效性监控器62双向耦合。
图3和4一并画出一种方式,按照该方式,优先权控制34(见图1)基于写入缓冲器30和推入缓冲器28的有效入口数,实现一种自适应优先权控制方法。本发明另外的实施例,可以显著改变画在图3和4的流程。用于图3和4的方法,仅仅作为一种可能的实现方式。现在参考图3,流程在开始椭圆100开始。之后,流程前进至判定菱形105,判定菱形105询问,是否有预取指令请求待决。如果没有预取指令待决,流程继续在该判定菱形上等待,直至有预取指令待决。一旦有预取指令待决,流程继续到判定菱形106,判定菱形106询问,在写入缓冲器30中是否有任何有效入口。如果在写入缓冲器30中有有效入口,则流程在判定菱形107上继续,判定菱形107询问,写入缓冲器30上的有效入口数,是否超过它的阈值。如果对判定菱形107的回答是超过,流程继续到判定菱形108,判定菱形108询问,预取指令缓冲器24中的有效入口数,是否在预取缓冲器24阈值之下。如果对判定菱形108的回答是不在阈值之下,则流程在步骤109上继续,步骤109完成写入缓冲器30向存储器的接入。流程继续从步骤109返回判定菱形105。如果在预取缓冲器24中,有效入口数是在阈值之下,那么流程在判定菱形110上继续,判定菱形110询问,用户是否已经对静态控制寄存器70编程,以便确定此时的优先权。如果用户已经编程,把优先权给予写入缓冲器30,那么,流程继续从判定菱形110到步骤109。但是,如果用户已经编程,使预取指令缓冲器24具有优先权,那么流程经圆圈B 103,继续从判定菱形110到步骤111(见图4)。步骤111提升待决的预取指令请求。然后,流程继续到步骤112,步骤112为预取指令缓冲器24完成存储器的接入。通过提升预取指令请求的优先权,它成为最高优先权的请求,因此在步骤112中执行。之后,流程继续从步骤112到椭圆101,流程结束。
现在回到判定菱形106,如果在写入缓冲器30中没有有效的入口,流程经圆圈C 104,在判定菱形113(见图4)上继续。同样,判定菱形107否定回答的路径,也经圆圈C 104,在判定菱形113上继续。判定菱形113询问,在推入缓冲器28中是否有任何有效入口。如果在推入缓冲器28中有有效入口,流程在判定菱形114上继续,判定菱形114询问,推入缓冲器28中的有效入口是否超过它的阈值。如果对判定菱形114的回答是超过,那么流程在判定菱形115上继续,判定菱形115询问,预取指令缓冲器24中的有效入口数是否在它的阈值之下。如果对判定菱形115的回答是在它的阈值之下,则流程在判定菱形116上继续,检查静态控制寄存器70中的值,以便确定用户是否已经对优先权编程。如果用户已经编程,使推入缓冲器28有优先权,那么流程继续从判定菱形116到步骤117,步骤117完成推入缓冲器28向存储器的接入。之后,流程经圆圈A 102,继续从步骤117到判定菱形105。此时在流程中,返回判定菱形105,对检查预取指令请求是否仍旧待决,是有好处的。因为可能存在如下的情形,预取指令请求已经通过判定菱形105的第一次待决,但不再待决了。现在返回判定菱形116,如果相反,静态控制寄存器70包含用户可编程的信息,该信息选择预取指令缓冲器24有优先权,那么流程继续从判定菱形116到步骤111,该步骤已经在本文的前面说明。
现在参考判定菱形113和114,如果这两个判定菱形任一个,都取否定回答的路径,则流程都在判定菱形118上继续。注意,此时的流程表明,在推入缓冲器28中没有有效入口,或有效入口数不超过推入缓冲器28的阈值。判定菱形118询问,是否有任何数据请求待决。如果没有数据请求待决,流程继续从判定菱形118到本文上面说明的步骤111。但是,如果有数据请求待决,流程继续从判定菱形118到判定菱形119,判定菱形119询问,预取指令缓冲器24中的有效入口数,是否在阈值之下。如果对判定菱形119的回答是在阈值之下,流程在判定菱形120上继续,判定菱形120询问,用户在控制寄存器70中已经编程的是什么优先权。如果用户已经选择预取指令缓冲器24具有优先权,流程继续从判定菱形120到本文上面说明的步骤111。但是,如果用户对控制寄存器70的编程,是选择数据请求具有优先权,那么流程继续从判定菱形120到步骤121,步骤121为待决数据请求完成存储器的接入。之后,流程经圆圈A 102,继续从步骤121到判定菱形105。现在参考判定菱形119,如果预取指令缓冲器24中的有效入口数,是在阈值之下,则流程在步骤121上继续,步骤121为待决数据请求完成存储器的接入。现在参考判定菱形118,如果没有数据请求待决,那么流程在步骤111上继续。现在参考判定菱形115,如果预取指令缓冲器24中的有效入口数,是在它的阈值之下,则流程在步骤117上继续,步骤117完成从推入缓冲器28到存储器的接入。之后,流程经圆圈A 102,继续从步骤117到判定菱形105。
图5和6画出优先权控制电路34(见图2)可以实现优先权切换方法的一种方式,以便缓解写入缓冲器30中的冲突。现在参考图5,流程在开始椭圆200开始。之后,流程前进至判定菱形201,判定菱形201询问,是否有任何读出请求待决。如果有读出请求待决,流程继续从判定菱形201到步骤202,把写入缓冲器30有效入口的地址比特,与待决读出请求的地址比较。再参考判定菱形201,如果没有读出请求待决,流程继续从判定菱形201到判定菱形203,判定菱形203询问,写入缓冲器30是否已经超过它的阈值。如果写入缓冲器30尚没有超过它的阈值,流程继续从判定菱形203到判定菱形204,判定菱形204询问,推入缓冲器28是否已经超过它的阈值。如果推入缓冲器28尚没有超过它的阈值,那么,流程继续从判定菱形204到判定菱形201,判定菱形201再次询问,是否有任何读出请求待决。此时,推入缓冲器既没有,写入缓冲器也没有超过它们各自的阈值,所以也无需为这两个缓冲器完成存储器的接入,但要再次完成检查,以便查明是否有读出请求变成待决。再参考判定菱形203,如果写入缓冲器30已经超过它的阈值,那么流程在判定菱形205上继续,判定菱形205询问,推入缓冲器28是否已经超过它的阈值。如果推入缓冲器28已经超过它的阈值,则流程继续从判定菱形205到判定菱形206,判定菱形206询问,控制寄存器70指示的是什么优先权。此时,两个缓冲器比它们各自已经存在的阈值有更多的入口(即,已经超过用户选择的阈值)。如果用户已经对控制寄存器70编程,选择写入缓冲器30具有优先权,那么流程继续从判定菱形206到步骤207,步骤207完成从写入缓冲器30到存储器的接入。再参考判定菱形205,如果推入缓冲器28的阈值尚没有被超过,那么流程也在步骤207上继续。再参考判定菱形206,如果用户已经对寄存器70编程,选择推入缓冲器28具有优先权,那么流程在步骤208上继续,步骤208完成从推入缓冲器28到存储器的接入。再参考判定菱形204,如果推入缓冲器28的入口数已经超过它的阈值,则流程在步骤208上继续。一旦步骤207和208完成各自向存储器的接入,流程继续到判定菱形201。
再参考步骤202,流程然后经圆圈B 210,在判定菱形209上继续(见图6)。判定菱形209询问,是否检测到冲突。注意,在本发明的一个实施例中,当写入缓冲器30的入口包含的数据,与待决读出请求相关的地址对应时,可以认为已经出现冲突。现在参考判定菱形209,如果检测到冲突,流程在步骤211上继续,步骤211提升写入缓冲器请求的优先权。之后,流程继续从步骤211到步骤212,步骤212把写入缓冲器30中先于冲突入口并包括冲突入口的入口,清除至主存储器(如图1中的存储器14),以便消除冲突的入口。然后,流程继续从步骤212到判定菱形213。现在参考判定菱形209,如果没有检测到冲突,流程也在判定菱形213上继续。判定菱形213询问,写入缓冲器30的阈值是否已经超过。如果写入缓冲器30的阈值尚没有被超过,流程继续从判定菱形213到判定菱形214,判定菱形214询问,推入缓冲器28的阈值是否已经被超过。如果推入缓冲器28的阈值尚没有被超过,流程在步骤215上继续,步骤215为读出请求完成存储器的接入。注意,因为两个缓冲器的阈值没有一个被超过,所以待决的读出请求应具有优先权。但是,如果推入缓冲器28的阈值已经被超过,则流程在判定菱形216上继续,判定菱形216用控制寄存器70来确定优先权。如果用户已经编程,使推入缓冲器28的优先权在待决的读出之上,那么,流程继续从判定菱形216到步骤217,步骤217完成从推入缓冲器28到存储器的接入。但是,如果用户已经对控制寄存器70编程,把优先权给予读出请求,那么流程继续从判定菱形216到步骤215,步骤215为读出请求完成存储器的接入。步骤215和217两者,经圆圈A 218,在判定菱形201上继续。
现在再参考判定菱形213,如果写入缓冲器30的阈值已经被超过,流程在判定菱形219上继续,判定菱形219询问,推入缓冲器28的阈值是否已被超过。如果推入缓冲器28的阈值尚没有被超过,流程在判定菱形220上继续,再次用控制寄存器70来确定优先权。如果用户已经对控制寄存器70编程,选择读出请求的优先权在写入缓冲器请求之上,那么,流程继续从判定菱形220到步骤215,步骤215为读出请求完成存储器的接入。但是,如果用户已经对控制寄存器70编程(见图2),使写入缓冲器30的优先权在待决读出请求之上,则流程在步骤221上继续,步骤221完成从写入缓冲器30到存储器的接入。现在参考判定菱形219,如果推入缓冲器28已经超过阈值,流程则在判定菱形222上继续,判定菱形222用控制寄存器70来确定优先权。如果用户已经对寄存器70编程,把优先权给予推入缓冲器28,那么流程经圆圈C223,在步骤217上继续。但是,如果用户已经对寄存器70编程,把优先权给予写入缓冲器30,那么流程在步骤221上继续。如果用户已经对寄存器70编程,把优先权给予读出请求,那么流程在步骤215上继续。现在参考步骤221和217,在完成存储器的接入之后,流程经圆圈218,在判定菱形201上继续。
图7和8画出优先权控制电路34(见图1)根据指令流程的变化,实现优先权提升的一种方式。流程在椭圆300开始。然后,流程前进至判定菱形301,判定菱形301询问,是否有流程取指令请求的变化待决。注意,在判定菱形301中所指的取指令请求,是导致流程变化的前一指令的结果。如果有流程取指令请求的变化待决,则流程继续从判定菱形301到步骤302,步骤302用控制寄存器70来确定流程变化的优先权。在随后整个流程的判定菱形中,都用控制寄存器70的信息来确定流程接入、预取缓冲器接入、写入缓冲器接入、和推入缓冲器接入的变化的相对优先权。现在参考判定菱形301,如果流程取指令请求的待决没有变化,那么流程继续检查该请求。然后,流程从步骤302前进至判定菱形303,判定菱形303询问,预取指令缓冲器24入口数是否已经超过预取指令缓冲器24的阈值。如果预取指令缓冲器24入口数确实已经超过预取指令缓冲器24的阈值,则流程在判定菱形304上继续,判定菱形304询问,是否有写入缓冲器30的请求待决。如果有写入缓冲器30的请求待决,流程继续从判定菱形304到判定菱形305,判定菱形305询问,根据步骤302完成的检查,流程取指令待决请求的变化是否有较高的优先权。如果流程取指令待决请求的变化,没有较高的优先权,那么,流程继续从判定菱形305,到达由于优先权由用户在控制寄存器70中选择而不执行优先权管理的步骤306。流程继续从步骤306到流程结束椭圆307。现在再参考判定菱形303,如果预取指令缓冲器24的入口数尚没有超过它的阈值,流程在判定菱形308上继续,判定菱形308询问,根据步骤302完成的检查,流程取指令待决请求的变化是否有较高的优先权。如果控制寄存器70没有指出流程取指令待决请求的变化有较高的优先权,那么,流程继续从判定菱形308到不执行优先权管理的步骤309。然后,流程继续从步骤309到结束307。现在参考判定菱形308,如果流程取指令待决请求的变化有较高的优先权,那么流程继续从判定菱形308到步骤310,步骤310把流程取指令待决请求的优先权,提升至待决的预取指令请求优先权之上。然后,从步骤310,流程终结在结束307上。
现在参考判定菱形305,如果流程取指令待决请求的变化有较高的优先权,那么流程经圆圈B 312,在步骤311上继续。在步骤311,流程取指令待决请求优先权的变化被提升至写入缓冲器30的待决请求之上。流程继续从步骤311到判定菱形313,判定菱形313询问,是否有推入缓冲器28的请求待决。如果推入缓冲器28没有请求待决,那么流程继续从判定菱形313到判定菱形314,判定菱形314询问,流程取指令待决请求的变化,是否有较高的优先权。如果流程取指令待决请求的变化没有较高的优先权,则流程继续从判定菱形314到不执行优先权管理的步骤315。然后,从步骤315,流程终结在结束307上。现在参考图7的判定菱形304,如果没有写入缓冲器30的请求待决,那么流程经圆圈A 350,在图8的判定菱形313上继续。现在参考判定菱形313,如果没有推入缓冲器28的请求待决,那么流程在判定菱形316上继续,判定菱形316询问,是否有数据请求待决。如果有数据请求待决,则流程继续从判定菱形316到判定菱形317,判定菱形317询问,流程取指令请求的待决变化,是否有较高的优先权。如果流程取指令请求的待决变化没有较高的优先权,则流程继续从判定菱形317到不执行优先权管理的步骤318。然后,从步骤318,流程终结在结束307上。现在参考判定菱形317,如果流程取指令请求的待决变化确实有较高的优先权,则流程在步骤319上继续,步骤319把流程取指令待决请求的优先权,提升至待决的预取指令请求之上。流程继续从步骤319到步骤320,步骤320为流程取指令请求的待决变化,完成向存储器的接入。现在再参考判定菱形316,如果没有数据请求待决,流程在步骤320继续。现在参考判定菱形314,如果流程取指令待决请求的变化,确实有较高的优先权,则流程在步骤321上继续,步骤321把流程取指令待决请求的优先权,提升至推入缓冲器28的待决请求之上。然后,流程从步骤321前进至判定菱形316。从步骤320,流程终结在结束307上。
图9和10以流程图的形式,画出一种可以与本发明一起使用的副阈值方式。副阈值是指当相应缓冲器尚没有达到它已编程的充满度电平或空度电平时的条件。现在参考图9,流程在椭圆400开始。然后流程在判定菱形401上继续,判定菱形401询问,写入缓冲器30是否空。如果写入缓冲器30不空,流程继续从判定菱形401到判定菱形402,判定菱形402询问,是否已经超过写入缓冲器30的阈值。如果尚没有超过写入缓冲器30的阈值,则流程从判定菱形402到判定菱形403,判定菱形403询问,推入缓冲器28是否空。如果推入缓冲器28不空,流程继续从判定菱形403到判定菱形404,判定菱形404询问,是否已经超过推入缓冲器28的阈值。如果已经超过推入缓冲器28的阈值,流程继续到达步骤405,步骤405完成从推入缓冲器28向存储器的接入。从步骤405,流程经圆圈G 475,在判定菱形401上继续。
现在参考判定菱形402,如果写入缓冲器30的阈值已经超过,流程在步骤406上继续,步骤406完成从写入缓冲器30到存储器的接入。流程继续从步骤406到判定菱形401。现在参考判定菱形403,如果推入缓冲器28是空的,流程继续从判定菱形403到判定菱形407,判定菱形407询问,预取指令缓冲器24的阈值是否已经超过。如果已经超过预取指令缓冲器24的阈值,流程在判定菱形408上继续,判定菱形408询问,根据预取指令缓冲器24和写入缓冲器30接近它们的副阈值电平的程度,预取指令缓冲器24和写入缓冲器30中哪一个应有优先权。如果通过使用副阈值,确定写入缓冲器30应有优先权,那么流程经圆圈C 410,在步骤409上继续(见图10)。但是,如果通过使用副阈值,确定预取指令缓冲器24应有优先权,那么流程经圆圈B 412,继续从判定菱形408到步骤411(见图10)。现在参考判定菱形407,如果预取指令缓冲器24的阈值尚没有被超过,流程在步骤413继续,步骤413为预取指令缓冲器24完成向存储器的接入。然后,流程经圆圈G 475,继续从步骤413到判定菱形401。现在参考判定菱形404,如果推入缓冲器28的阈值尚没有被超过,则流程经圆圈D 415,继续到达判定菱形414(见图10)。现在参考判定菱形401,如果写入缓冲器30是空的,流程继续到达判定菱形416,判定菱形416询问,推入缓冲器28是否空。如果推入缓冲器28不空,流程继续从判定菱形416到判定菱形417,判定菱形417询问,推入缓冲器28的阈值是否已被超过。如果推入缓冲器28的阈值尚没有被超过,流程从判定菱形417到判定菱形418,判定菱形418询问,预取指令缓冲器24的阈值是否已被超过。如果预取指令缓冲器24的阈值已经被超过,流程继续从判定菱形418到判定菱形419,判定菱形419用副阈值来确定推入缓冲器28和预取指令缓冲器24之间的优先权。现在参考判定菱形419,如果通过使用副阈值,确定推入缓冲器由于它的充满度而有优先权,流程经圆圈E 421,继续到达步骤420(见图10)。但是,如果副阈值的使用表明,不认为预取指令缓冲器24是充满的,从而有优先权,则流程经圆圈B 412,在步骤411上继续(见图10)。现在参考判定菱形418,如果预取指令缓冲器24的阈值尚没有被超过,流程经圆圈B 412,继续到达步骤411(见图10)。现在参考判定菱形417,如果推入缓冲器28的阈值已经被超过,流程经圆圈E 421,在步骤420上继续(见图10)。现在参考判定菱形416,如果推入缓冲器28是空的,流程经圆圈F 423,继续从判定菱形416到达判定菱形422(见图10)。
现在参考图10,圆圈D 415前进至判定菱形414,判定菱形414询问,预取指令缓冲器24的阈值是否已被超过。如果预取指令缓冲器24的阈值尚没有被超过,流程继续从判定菱形414到达步骤411,步骤411提升预取指令的优先权。现在参考判定菱形414,如果如果预取指令缓冲器24的阈值已经被超过,流程继续从判定菱形414到判定菱形424,判定菱形424用副阈值来确定写入缓冲器30、推入缓冲器28、和预取指令缓冲器24之间的优先权。现在参考判定菱形424,如果用写入缓冲器30的充满度与它的副阈值比较,确定写入缓冲器30应有优先权,流程继续到达步骤409,步骤409提升写入缓冲器30的优先权。如果用推入缓冲器28的充满度与它的副阈值比较,确定推入缓冲器28应有优先权,那么流程继续从判定菱形424到步骤420,步骤420提升推入缓冲器28的优先权。同样,如果用预取指令缓冲器24的充满度与它的副阈值比较,确定预取指令缓冲器24应有优先权,那么流程继续从判定菱形424到步骤411,步骤411提升预取指令缓冲器24的优先权。注意,可以用比较电路61和优先权控制34(见图2),对来自各种资源(如22、24、26、28、和30)的信息(如充满度、空度),以及预先确定或由用户可编程存储电路预先编程的优先权准则等信息(如,阈值电平、副阈值电平、从寄存器66、68、和70接收的优先权的决胜信息),进行必要比较。
流程继续从圆圈F 423到判定菱形422,判定菱形422询问,预取指令缓冲器24是否充满。如果预取指令缓冲器24没有充满,流程继续从判定菱形422到步骤411,步骤411提升预取指令缓冲器24的优先权。如果预取指令缓冲器24是充满的,流程经圆圈A 426,继续从判定菱形422到判定菱形425(见图9)。同样,流程从步骤409、步骤420、和步骤411,都经圆圈A 426,继续到达判定菱形425(见图9)。
现在再参考图9,判定菱形425询问,流程取指令请求或数据请求是否有变化。如果没有,流程继续从判定菱形425到判定菱形401。但是,如果流程取指令请求或数据请求有变化,流程继续从判定菱形425,或者为数据请求而到达开始椭圆200(见图5),或者为流程取指令请求的变化而到达开始椭圆300(见图7)。
图10中,某一缓冲器的优先权一旦已经在步骤409、411、或420中被提升,可以完成相应的缓冲器接入。
操作说明当今的数据处理器,能够有多个请求源共享存储器资源。例如,参考图1,可以让多个资源(如,指令超高速缓存22、预取指令缓冲器24、数据超高速缓存26、推入缓冲器28、和写入缓冲器30)同时请求接入存储器14。注意,指令超高速缓存22和数据超高速缓存26的请求,可以是再充填的请求。还可以让其他资源(如其他总线主控器16)也同时请求接入存储器14。例如,其他总线主控器16可以包括直接存储器存取(DMA)装置。在本发明另外的实施例中,任何电路类型都可以试图接入共享的存储器资源,如存储器14。还有,重要的是要指出,各种资源为接入共享存储器资源如存储器14的竞争,可以在比CPU 20低得多的频率上运行,因此能因延迟接入共享资源而在CPU 20中产生停顿(stall)。现在参考图1,虽然存储器14画在处理器12之外,但在本发明另外的实施例中,画在图1的电路的任何部分,都可以在同一集成电路芯片(die)上实现,或者,可以分为两个或多个分离的集成电路芯片。
现在参考图1和2,在本发明的一个实施例中,优先权控制电路34监控来自CPU 20的信号,并在把优先权分配给请求接入并使用系统总线50的请求之前,动态地检查资源的使用率。优先权控制电路34的目的,是确定每一竞争资源(22、24、26、28、30)离导致CPU 20停顿有多近。在本发明的一个实施例中,将对优先权控制电路34编程,把优先权给予竞争总线50的资源,因为总线50是第二位最可能导致CPU 20停顿的根源。例如,优先权控制34必须查明写入缓冲器30的充满情况,因为充满的写入缓冲器30能够导致CPU 20停顿。同样,充满的推入缓冲器28能够导致CPU 20停顿,因此,优先权控制电路34也将监控推入缓冲器28的充满情况。优先权控制电路34还将监控预取指令缓冲器24的充满情况,以确保预取指令缓冲器24不致太空而导致CPU 20停顿。
在本发明的一个实施例中,优先权控制电路34监控指令超高速缓存22或CPU 20,以便确定何时出现指令流程的变化。优先权控制电路34需要检测指令流程变化的原因,在于指令流程的变化,将导致预取指令缓冲器24的内容不再可用,并要求为新的指令流程预取新的指令。优先权控制电路34监控数据超高速缓存26,以便检测何时出现数据超高速缓存的丢失(miss),从而检测必须用系统总线50来再填充数据超高速缓存。如果出现数据超高速缓存丢失,CPU 20可能停顿,直至通过系统总线50检索数据为止。因此,需要使优先权控制电路34能动态地并灵活地调整各种资源(如22、24、26、28、30)之间的优先权,这些资源为使用系统总线50而竞争。
本发明能在数据处理系统10中实现动态的并自适应的优先权管理。现在参考图2,在一个实施例中,本发明能根据写入缓冲器30和推入缓冲器28的有效入口数,实现动态的并自适应的优先权管理。注意,推入缓冲器28还可以调用回写或反向复制缓冲器。写入缓冲器30可以作为先进先出(FIFO)队列或缓冲器实现,该先进先出队列或缓冲器,能够使有连续写入标记的待决的写入丢失或写入延期,以便使性能最优化。当写入缓冲器30被启动时,数据超高速缓存26中丢失存储操作,或有连续写入标记的存储操作,被放进写入缓冲器30,而从CPU 20的接入则被中断。这些得到缓冲的写入被保持,供稍后向系统总线50传送。如果待决的指令超高速缓存22填充被请求,同时写入缓冲器30有有效的入口,那么,优先权控制电路34根据写入缓冲器30的有效入口数分配优先权。在把写入缓冲器30清空到预定的阈值(例如,写入缓冲器30大小的一半)后,优先权可以切换,从而可以运行待决的指令超高速缓存22填充的请求。在完成指令超高速缓存22填充的请求后,或者,如果写入缓冲器30的有效入口数变成大于阈值,可以把优先权反向切换,运行来自写入缓冲器30的写入。本发明另外的实施例,可以按使用电路64(见图2)的用户可编程部分的无论何种方式,把来自资源22、24、26、28、和30的请求优先化。这里说明的优先化,就是这许多方式中一种可能的优先化方式。
参考图3和4及图9和10,这些图根据写入缓冲器30和推入缓冲器28的有效入口数,实现一种自适应优先权控制的可能的方案。但再次指出,本发明另外的实施例,可以按任何方式优先化。
优先权控制电路34还可以实现优先权切换,以便缓解写入缓冲器30中的冲突。这种优先权切换方法的一种可能的实施方式,示于图5和6。对数据超高速缓存26中读出的丢失,把写入缓冲器30中有效入口的地址比特,与读出丢失的地址比较(例如通过比较电路61),以便检测冲突。如果检测到冲突,则写入缓冲器30中在冲突入口之前并包括冲突入口的所有入口,都被清除,送至主存储器(如存储器14)。然后,优先权控制电路34可以把优先权切换到数据超高速缓存26的读出丢失,以便运行,并且在运行数据超高速缓存26的读出丢失之后,把写入缓冲器30的剩余入口写入主存储器。
通过增加写入缓冲器30的阈值,可以在达到阈值之前,把更多的写入保持在缓冲器中更长的时间。因此,本发明动态的和可编程的阈值特性,能使入口在写入缓冲器30中存在更长的时间,不致影响CPU 20的性能。这样,通过写入归并(write merging)(即在写入缓冲器30中的写入命中(write hits)),可以使外部总线(如系统总线50)的业务量进一步最小化。
在本发明另外的实施例中,优先权控制电路34可以根据预取指令缓冲器24的有效入口数和根据指令的大小,实现动态优先权管理。在一个实施例中,可以把指令超高速缓存22读出丢失请求,分类为预取顺序指令、取顺序指令、或流程条件的变化。可以对预取指令缓冲器24的阈值编程。能够根据阈值及指令的大小(如16比特、32比特、64比特),运行预取顺序指令请求。
在本发明的一个实施例中,优先权控制电路34可以根据CPU 20中的流程条件变化,实现优先权的提升。流程条件的变化,可以因推测或非推测的分支目标取数、异常取数、或转移(speculative or non-speculative branch target fetch,exception fetch,or jumps)而引起。CPU 20流程信号的变化,可以被优先权控制电路34用来提升因指令超高速缓存22流程变化而产生的读出丢失的优先权。如果流程的变化导致指令超高速缓存22中的丢失,可以动态地增加写入缓冲器30的阈值,从而使指令超高速缓存22向主存储器14提出请求。如果增加的阈值在当前写入缓冲器30有效入口数之上,通过增加阈值,可以降低写入缓冲器30的相对优先权。在运行指令超高速缓存22的流程请求变化之后,可以降低写入缓冲器30的阈值,并运行来自写入缓冲器30的写入,直至写入缓冲器30在运行指令超高速缓存22另一个顺序请求之前,达到它的阈值。可以对优先权控制电路34编程,使流程变化请求的优先权在待决的顺序预取指令丢失之上。这样做,对CPU 20的频率高于主存储器(如存储器14)频率和当流程变化发生时预取指令请求尚未完成的情形,是有利的。注意,图7和8画出一种可能方式,其中,优先权控制电路34可以根据流程条件的变化,实施优先权提升方案。本发明另外的实施例,可以按任何方式,实现这样的一种方案。
注意,优先权控制电路34可以实施多种多样的动态地改变优先权方案的方式。例如,可以用控制寄存器70(见图2)对广泛的各种优先权方案编程,其中的一些或全部可以由用户利用软件控制来动态地改变。注意,在本发明另外的实施例中,用优先权控制电路34实施的优先权方案,可以在处理器12运行时由用户进行掩模可编程、动态可编程,本方案也可以在一次性可编程寄存器中实现,或者在任何其他类型存储媒质或电路中实现,这类媒质或电路允许处理器12的用户,至少一次性地选择优先权方案。
现在参考图2,阈值寄存器66,可以为正在追求接入系统总线50的处理器12内每一资源,存储一个或多个阈值。优先权控制电路34可以把副阈值寄存器68用作指示器,指示处理器12中各种资源(22、24、26、28、30),离到达它们各自存储在阈值寄存器66中的阈值有多近。因此,当各种资源尚未达到它们的阈值时,优先权控制电路34可以使用副阈值寄存器68,通报有关优先权的判定。现在参考图2,比较电路61可供电路60使用,以便把存储在阈值寄存器66中的阈值,与从预取指令缓冲器24、推入缓冲器28、和写入缓冲器30来的状态值比较。在本发明的一个实施例中,阈值寄存器66存储一个规定每一缓冲器资源(24、28、30)充满度电平的阈值。这些缓冲器(24、28、30)向比较电路61提供的状态信息,指示相应缓冲器当前的充满程度。
注意,向预取指令缓冲器24的请求被用来充填该缓冲器,而且,只要有效入口数大于预定的阈值,缓冲器便超过它的阈值。相反,来自推入缓冲器28和写入缓冲器30的请求,是为清空这些缓冲器而产生的。只要它们各自的有效入口数已经超过它们各自的阈值,则产生的请求意味着需要更高的优先权。
在本发明的一个实施例中,可以使优先权控制电路34适合对同时的副阈值请求,实现可编程的指令/数据优先权。在同时请求使用系统总线50的情形中,如果预取指令缓冲器24已接近充满(即有较低的优先权),而写入缓冲器30有少量入口(即小于它的阈值),可以根据在两个缓冲器中有效入口数和相应阈值的差,对优先权控制电路34的作用编程。换句话说,如果缓冲器24已经超过它的阈值(意指到达充满度),而缓冲器28和30尚没有超过它们各自的阈值(意指它们还没有达到充满状态),那么,优先权控制电路34可以使用存储在副阈值寄存器68中的副阈值,以便确定缓冲器24、28、和30之间相应的优先权。举例说,如果预取指令缓冲器24正在从慢速存储器取指令,而数据请求的数据位于快速存储器中,那么,可以对优先权控制电路34编程,使存在副阈值条件的情况下,给予预取指令缓冲器24的指令请求的优先权,在写入缓冲器30或推入缓冲器28数据请求的优先权之上。在另外的数据处理系统中,当存在副阈值条件时,最好把优先权给予写入缓冲器30,以避免将来与写入缓冲器入口的读出冲突。
现在参考图2,本发明的一些实施例可以利用优先权有效性监控器62,监控处理器12的性能并自适应地修改优先权控制电路34中的优先权程序。因此,优先权有效性监控器62可以根据处理器12的性能,调整优先权控制电路34的优先权方案。在图2所示实施例中,优先权有效性监控器62,通过电路60内的监控信号,监控系统的性能。优先权有效性监控器62,通过修改阈值寄存器66和/或副阈值寄存器68和/或控制寄存器70中的值,修改优先权控制电路34的优先权。注意,规定优先权规则64的电路,可以包括其他电路,这些电路可以是,也可以不是用户可编程的,但在规定处理器12内使用的优先权方案中,可以用于规定或帮助规定。
虽然本文已经说明处理器12的各种优先权方案,本发明另外的实施例可以使用任何优先权方案。因此,优先权控制电路34可以在处理器12内任何数量的资源(如22、24、26、28、和30)间,实现任何优先权方案,这些资源为任何公共资源(如系统总线50)而竞争。在一个实施例中,优先权控制电路34实现的优先权方案是,使因共享资源如系统总线50的冲突接入而导致CPU 20停顿的时间最小化。本发明另外的实施例,可以通过优先权控制电路34,调整使用的优先权方案,以便使某些其他选择的准则最小化或最大化。例如,可以按某些不同于CPU 20停顿时间的别的方式,测量CPU 20的性能。例如,一个可供优先权控制电路34使用的准则是,系统总线50上的业务量最小化目标。本发明另外的实施例可以按需要,选择处理器12和数据处理系统10的任何目标。然后,用任何需要的准则(如,CPU 20的停顿、或系统总线的使用率),测量该选择的目标。现在参考图2,虽然本发明已就阈值方面说明,但本发明另外的实施例可以使用别的机构来衡量和规定所选资源需要的充满度或空度。例如,某些资源(如数据超高速缓存26和指令超高速缓存22)不用阈值。替代值可以存储在存储电路(如控制寄存器70)中,其后可供优先权控制电路34用来确定指令超高速缓存22和数据超高速缓存26之间使用的优先权方案。注意,在本发明另外的实施例中,用户可以通过系统总线50或其他接入处理器12的集成电路终端(未画出),向优先权控制电路34提供程序信息。
虽然本发明已就特定的传导类型或电势的极性说明,但本领域熟练人员应当清楚,该种传导类型和电势的极性,是可以反过来的。
在前面的说明中已经参照特定的实施例说明本发明。但是,本领域熟练人员应当清楚,在不偏离所附权利要求书范围情况下,可以作各种修改和变化。因此,应当认为,说明书与图是示例性的,而不是限制性的,且所有这类修改都被认为包括在本发明的范围之内。
上面已经对特定的实施例,说明了利益、其他优点、和解决问题的方案。但是,利益、优点、解决问题的方案、和任何能导致任何利益、优点、或方案的出现或成为更显著的要素,都不能认为是任何或所有权利要求关键的、需要的、和本质的特性或要素。如在本文中所使用的,“包括”、“包括着”、及其任何变体,都指涵盖非专有的包含关系,以使某种处理、方法、条文、或包含单元表的某一设备,不仅包括表中的单元,也可能包括没有明显列入表中的单元或本来属于该处理、方法、条文、或设备的单元。
权利要求
1.一种在数据处理器中使请求优先化的方法,该数据处理器有总线接口单元和多种资源,该总线接口单元适于与通信总线耦合、并为使用通信总线的请求服务,该多种资源为使用通信总线提出请求,所述方法包括从第一资源接收第一请求和从第二资源接收第二请求;使用对应于第一资源和第二资源之一的一个阈值,向第一请求分配优先权。
2.一种数据处理器,包括中央处理单元;与中央处理单元耦合的第一请求资源,适于请求使用通信总线,以便发送或接收数据;与中央处理单元耦合的第二请求资源,适于请求使用通信总线,以便发送或接收数据;和与中央处理单元、第一请求资源、和第二请求资源耦合的总线接口单元,适于与通信总线耦合,该总线接口单元还包括优先权控制器,与从第一请求资源接收的第一请求及从第二请求资源接收的第二请求耦合,并根据对应于第一资源和第二资源之一的一个阈值,把优先权分配给第一请求和第二请求的每一个。
3.一种数据处理器,包括处理单元;与处理单元耦合的超高速缓存;与处理单元耦合的写入缓冲器;与处理单元、超高速缓存、和写入缓冲器耦合的优先权控制器,该优先权控制器包括优先权规则说明电路,其中,优先权规则说明电路包括第一可编程阈值寄存器,用于存储与写入缓冲器对应的第一阈值;和与优先权规则说明电路耦合的当前优先权方案电路,该当前优先权方案电路从超高速缓存和写入缓冲器接收向存储器接入的请求,并至少根据该第一阈值,把向存储器的接入请求优先化。
4.一种在数据处理器中使请求优先化的方法,该数据处理器有处理单元、与处理单元耦合的超高速缓存、与处理单元耦合的写入缓冲器、和与处理单元、超高速缓存、及写入缓冲器耦合的总线接口单元,该总线接口单元适于与通信总线耦合,并为超高速缓存和写入缓冲器使用通信总线的请求服务,所述方法包括从超高速缓存接收第一通信总线的接入请求,和从写入缓冲器接收第二通信总线的接入请求;以及使用与写入缓冲器对应的第一阈值,确定第一和第二通信总线的接入请求中哪一个获得优先权。
5.一种数据处理器,包括处理单元;与处理单元耦合的超高速缓存;与处理单元耦合的写入缓冲器;与处理单元、超高速缓存、和写入缓冲器耦合的总线接口单元,该总线接口单元适于耦合至通信总线,且该接口单元为超高速缓存和写入缓冲器使用通信总线的请求服务;与超高速缓存和写入缓冲器耦合的接收装置,用于从超高速缓存接收第一通信总线的接入请求,和从写入缓冲器接收第二通信总线的接入请求;以及与接收装置耦合的优先权分配装置,该优先权分配装置使用与写入缓冲器对应的第一阈值,确定第一和第二通信总线的接入请求中哪一个获得优先权。
6.一种在数据处理器中使用的方法,该数据处理器有处理单元、与处理单元耦合的写入缓冲器、和与处理单元、超高速缓存、及写入缓冲器耦合的总线接口单元,其中,该总线接口单元适于与通信总线耦合,并为写入缓冲器和处理单元使用通信总线的请求服务,所述方法包括接收与预取指令缓冲器对应的预取指令请求;把写入缓冲器内的有效入口数,与写入缓冲器阈值比较,获得第一比较结果;把预取指令缓冲器内的有效入口数,与预取指令缓冲器阈值比较,获得第二比较结果;和根据第一和第二比较结果,向预取指令请求分配优先权。
7.一种数据处理器,包括处理单元;与处理单元耦合的写入缓冲器;和与处理单元和写入缓冲器耦合的总线接口单元,其中,该总线接口单元适于与通信总线耦合,并为写入缓冲器和处理单元使用通信总线的请求服务,该总线接口单元包括接收装置,用于接收与预取指令缓冲器对应的预取指令请求;与接收装置耦合的第一比较装置,用于把写入缓冲器内的有效入口数,与写入缓冲器阈值比较,获得第一比较结果;与接收装置耦合的第二比较装置,用于把预取指令缓冲器内的有效入口数,与预取指令缓冲器阈值比较,获得第二比较结果;和与第一和第二比较装置耦合的优先权装置,用于根据第一和第二比较结果,向预取指令请求分配优先权。
8.一种在数据处理器中使用的方法,该数据处理器有处理单元、有多个入口并与处理单元耦合的写入缓冲器、和与处理单元及写入缓冲器耦合的总线接口单元,该总线接口单元适于与通信总线耦合,并为写入缓冲器和处理单元使用通信总线的请求服务,所述方法包括接收读出请求;在收到读出请求后,在写入缓冲器中的冲突入口上,检测写入缓冲器的冲突;和响应写入缓冲器冲突的检测,在写入缓冲器中清除多个入口的一部分,包括冲突的入口。
9.一种数据处理器,包括处理单元;有多个入口并与处理单元耦合的写入缓冲器;与处理单元及写入缓冲器耦合的总线接口单元,该总线接口单元适于与通信总线耦合,并为写入缓冲器及处理单元使用通信总线的请求服务;与总线接口单元耦合的接收装置,用于接收读出请求;与接收装置耦合的检测装置,用于在收到读出请求后,在写入缓冲器中的冲突入口上检测写入缓冲器的冲突;和与检测装置耦合的清除装置,用于响应写入缓冲器冲突的检测,在写入缓冲器中清除多个入口的一部分,包括冲突的入口。
10.一种在数据处理器中使用的方法,该数据处理器有处理单元和与处理单元耦合的总线接口单元,该处理单元有预取指令缓冲器,该总线接口单元适于与通信总线耦合,并为预取指令缓冲器和处理单元使用通信总线的请求服务,所述方法包括接收取指令流程请求的变化;把预取指令缓冲器内的入口数,与预取指令缓冲器阈值比较;和响应入口数的比较,有选择地改变取指令流程请求的变化相对于预取指令缓冲器的使用通信总线请求的优先权。
11.一种在数据处理器中使请求优先化的方法,该数据处理器有总线接口单元、第一请求资源、和第二请求资源,该总线接口单元适于与通信总线耦合,并为使用通信总线的请求服务,其中,该第一和第二请求资源为使用通信总线提出请求,所述方法包括有选择地从第一资源接收第一请求和有选择地从第二资源接收第二请求;如果收到第一请求和第二请求,用对应于第一资源和第二资源之一的一个阈值,向第一和第二请求分配优先权;和如果没有收到第一请求和第二请求,则把第一请求资源内的入口数,与第一请求资源的阈值比较,还把第二请求资源内的入口数,与第二请求资源的阈值比较;和如果第一请求资源内的入口数,落在第一请求资源的阈值之下,且第二请求资源内的入口数,落在第二请求资源的阈值之下,则用对应于第一请求资源和第二请求资源之一的一个副阈值,向第一和第二请求分配优先权。
全文摘要
本发明一般涉及数据处理器,更具体说,是涉及具有自适应优先权控制器的数据处理器。一个实施例涉及一种在有总线接口单元(32)的数据处理器(12)中,使请求优先化的方法。本方法包括,从第一总线请求资源(如30)接收第一请求和从第二总线请求资源(如28)接收第二请求,并用与第一或第二总线请求资源对应的一个阈值,把第一和第二请求优先化。第一和第二总线请求资源,可以是超高速缓存的推入缓冲器(28)、写入缓冲器(30)、或预取指令缓冲器(24)。按照一个实施例,该总线接口单元(32)包括优先权控制器(34),该优先权控制器接收第一和第二请求、分配优先权、和把阈值存储在阈值寄存器(66)中。优先权控制器(34)还可以包括一个或多个阈值寄存器(66)、副阈值寄存器(68)、和控制寄存器(70)。
文档编号G06F13/16GK1554050SQ02817807
公开日2004年12月8日 申请日期2002年7月24日 优先权日2001年8月10日
发明者阿弗泽尔·M·马里克, 威廉·C·莫耶尔, 小威廉·C·布鲁斯, C 布鲁斯, C 莫耶尔, 阿弗泽尔 M 马里克 申请人:自由度半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1