发明名称 跨越多重预测分支指令之指令提取的对准指令高速存取储存器处理
摘要 一种包含多重指令高速存取储存器扇区(sectors)的对准指令高速存取储存器(aligned instruction cache,简称;在该扇区中系可能不按指令区块之顺序(out-of- sequence)而记录。在程式运转时间(run time)时,将诸多指令基本区块(basic blocks)加以对准在AIC扇区中。AIC目录使用目前指令位址来选择:一AIC目录登载项(directory entry),以及在包含多重扇区之AIC中之一关联列。AIC目录登载项包含分别与多重AIC扇区有关联的多重"扇区S第一位址"栏位;而这些目录栏位中的每个栏位则都包含:当扇区内容皆有效时,在关联AIC扇区S中的第一指令位址。一种"提取操作历史表"(fetch history table,简称FHT)包含:被组织在诸多四个登载项的FHT组中,针对每一关联AIC列的四个FHT登载项。每个有效 FHT登载项都会记录一种根据在相同程式中之先前实际执行顺序的预测指令顺序,该顺序可能会一再重覆。每个 FHT登载项都包含:用来抓取针对可能被非循序定位在记忆体中的诸多指令区块顺序之先前执行历史的一些非常有效栏位。每个有效FHT登载项都能够控制:在单一提取周期(fetch cycle)中,储存在关联AIC列的诸多扇区中之多重指令顺序的输出闸控操作(outgating)。使用单一FHT登载项的每一提取周期都可能加以输出闸控,以供处理器按照记录在FHT登载项中的任何顺序加以执行许多AIC扇区之用,因而处理器不用等待就能提取这些来自记忆体中不同位置的指令。
申请公布号 TW457426 申请公布日期 2001.10.01
申请号 TW088118116 申请日期 1999.10.20
申请人 万国商业机器公司 发明人 巴拉瑞辛哈洛
分类号 G06F12/00 主分类号 G06F12/00
代理机构 代理人 陈长文 台北巿敦化北路二○一号七楼
主权项 1.一种用来显着地减少由执行在一程式中的分支指令和结果分支目标指令所造成的时间损失的处理器装置,包括:指令高速存取储存器(I-cache),用来接收和储存从记忆体中之诸非循序位置中所提取的指令区块群组,以供处理器装置执行之用;分支指令预测单元(预测单元),用来预测紧接在一条指令之后的许多分支指令之分支结果,在先前的程式执行或编译期间,当许多指令已经获得分支操作历史时,该条指令正在被定址,以供程式中的提取操作之用;提取操作历史表(FHT),其包含用来抓承取储存在指令高速存以储存器中的诸多指令区块之执行历史顺序的一些FHT登载项;以及一些闸,在诸多FHT登载项中之一登载项的控制下,用来将诸多指令区块从指令高速存取储存器输出到一执行元件,以便按照被抓取历史顺序加以提供诸多指令区块,以供执行元件执行之用。2.如申请专利范围第1项之利用FHT的处理器装置,另包括:分支结果预测向量,正在由预测单元所提供,以回应在程式执行期间将一指令位址输入到预测单元;FHT登载项选择和致动控制程式,用来选择一个有效FHT登载项,该登载项包含与至少一部份的分支结果预测向量匹配之一分支结果栏位;以及指令定序缓冲器,按照在FHT登载项中所抓取的历史顺序,加以接收来自指令高速存取储存器的指令,以回应FHT登载项选择和启动控制程式。3.如申请专利范围第2项之利用FHT的处理器装置,另包括:提取周期完成控制程式,用来决定按照FHT登载项中的历史顺序加以指示的所有区块何时已经被输出到指令定序缓冲器,以便结束针对程式之目前进取周期;以及预测单元,其会接收由FHT登载项之历史顺序所表示之一最后分支指令的目标位址,用来制定下一预测,以便初启针对处理器装置之下一提取周期。4.如申请专利范围第3项之利用FHT的处理器装置,另包括:在FHT中的每个FHT登载项,与储存在指令高速存取储存器中之诸区块之一个别群组有关联,因而表示针对在群组中之诸区块的一种特定的执行历史顺序。5.如申请专利范围第4项之利用FHT的处理器装置,另包括:在FHT中所提供之一组复数FHT登载项,与储存在指令高速存取储存器中之诸区块之一个别群组有关联;以及在该组中的每一FHT登载项,用来指示在个别群组中之诸区块的一种不同的执行历史顺序。6.如申请专利范围第5项之利用FHT的处理器装置,另包括:在该组中的第一FHT登载项,当群组之诸区块被储存在指令高速存取储存器中时,用来记录在一群组中之诸区域的执行顺序;以及在群组中的每个其它FHT登载项都会记录发生在区块群组被写入指令高速存取储存器中之后,在程式中之诸区块的一种不同的执行历史顺序,其中在群组中的每个FHT登载项都会记录针对在群组中之诸区块的一种不同的执行顺序。7.如申请专利范围第1项之利用FHT的处理器装置,另包括:被提供在每个FHT登载项中的区块顺序栏位,用来记录在FHT登载项中的历史顺序。8.如申请专利范围第1项之利用FHT的处理器装置,另包括:被构筑在指令高速存取储存器中的诸多扇区,而每一扇区都包含一定数目的储存位置,用来储存从包含的所有或一部份程式之记忆体或缓冲器中所接收的按照一种顺序的一些指令;每一扇区都具有用来储存在程式中之所有或一部份指令基本区域块的容量,当基本区域被储存在指令高速存取储存器中时,每一基本区块都是以在扇区中的开端位置为开始,并且基本区块是以在相同扇区中或在另一扇区中一之一位置为结束,储存在指令高速存取储存器中的任何基本区块会占有在一个或更多扇区中之任何数目的指令位置,其中每一基本区块都至少占有一扇区的第一指令位置,使得储存在指令高速存取储存器中的每一基本区块与扇区之一预定侧对准;被储存在一扇区中的每个未被占有指令位置中的无指令代码(nop),藉此将指令高速存取储存器构筑成一种对准指令高速存取储存器(AIC)。9.如申请专利范围第1项之利用FHT的处理器装置,另包括:被构筑成许多列的指令高速存取储存器,每一列都包含许多扇区,而每一扇区则储存最多一个程式基本区块的指令,储存在指令高速存取储存器中的每一基本区块是以在扇区中之一扇区对准位置为开始,并且当基本区块超过扇区时,将基本区块延续到每一扇区中,直到触及基本区块末端为止;但若基本区块需要超过使用第一指令的指令位址之列的末端,则会超过该列,以便定位另一列,进而将基本区块延续到另一列中的第一和任何所需的邻接扇区中,直到基本区块在指令高速存取储存器中之任何扇区中结束为止;若被采取分支指令存在于最后基本区域末端处,则藉由使用目标分支指令来存取在指令高速存取储存器中的下一扇区,但若不被采取分支指令是在最后基本区块末端处,或者若没有分支指令存在于目前基本区块所存取的最后扇区中,则下一扇区就是在下一后续扇区位置处之一扇区;被储存在每个FHT登载项中的扇区安排资讯,用来指示在指令高速存以储存器中之一连串扇区,因而包含在预定数目之扇区中的程式中之指令执行顺序;以及包含一些具有诸多扇区位址栏位的目录登载项之指令高速存取储存器目录,该扇区位址栏位都分别与指令高速存取储存器中之扇区有关联,而每一扇区位址栏位则都会接收储存在关联扇区中之任何第一指令位置,以使稍后使用之程式指令位址能够藉由寻找在指令高速存取储存器目录中的任何扇区位址栏位是否包含程式指令位址来定位包含具有该位址之指令的任何扇区,此乃因为若在目录中的扇区位址栏位中找到关联扇区包含有指令高速指令存取储存器中之指令的话。10.如申请专利范围第9项之利用FHT的处理器装置,另包括:被储存在每个FHT登载项中的扇区分支结果资讯,用来指示“被采取分支指令",或“不被采取分支指令",或“并没有分支指令在扇区中"其中之一资讯,作为针对在相同FHT登载项之扇区安排资讯中所指示的每一扇区之分支结果。11.如申请专利范围第10项之利用FHT的处理器装置,另包括:预测单元,在目前程式执行位址(程式位址)处会产生预测分支结果的量(预测向量),针对该位址,预测向量包含一些具有诸多状态的位元,该状态用来表示针对紧接在程式位址之后之程式中的一连串基本区块的分支结果预测;逻辑程式,当预测向量并不包含关于不包含分支指令之诸扇区的任何资讯时,其会藉着使寻找操作不予理会“并没有分支指令在扇区中"的任何结果指示资讯,来寻找是否至少有初始部份的预测向量比较相等于FHT中之任何FHT登载项的扇区分支结果资讯;以及执行单元,若逻辑程式找到一种与FHT登载项中之扇区分支结果资讯的相等比较资讯,则按照由FHT登载项中之扇区安排资讯所指示的顺序,加以接收来自FHT登载项之扇区安排资讯中所识别之每一扇区的指令。12.如申请专利范围第11项之利用FHT的处理器装置,另包括:指令定序缓冲器,用来接收来自FHT登载项中所循序指示之诸扇区的指令,并且按照接收顺序,将指令转递到执行单元。13.如申请专利范围第11项之利用FHT的处理器装置,另包括:被储存在FHT中的每个FHT登载项中之相同栏位中的扇区安排资讯和扇区分支结果资讯。14.如申请专利范围第12项之利用FHT的处理器装置,另包括:被储存在FHT中的每个FHT登载项中之不同栏位中的扇区安排资讯和扇区分支结果资讯。15.如申请专利范围第1项之利用FHT的处理器装置,另包括:在每个FHT登载项中的扇区安排栏位,用来储存包含有指令高速存取储存器中的指令之一群组扇区的历史顺序;以及被提供在每个登载项中的分支结果栏位,用来记录一种结果,该结果包括针对在FHT登载项中之扇区安排栏位中所表示之每一区块的被采取或不被采取条件。16.如申请专利范围第12项之利用FHT的处理器装置,另包括:许多包括指令高速存取储存器的指令高速存取储存器列,每一列都包含一预定数目的扇区,而每一列都具有在指令高速存取储存器中之一唯一位置;被唯一定位在FHT中的诸多FHT登载项的许多FHT组,在任何FHT组中的每个FHT登载项都具有在FHT中之一位置,该位置是由指令高速存取储存器之一关联指令高速存取储存器列的位置所决定。17.如申请专利范围第16项之利用FHT的处理器装置,另包括:被提供在每一FHT组中之一预设数目的FHT登载项;以及针对在FHT中的每一FHT组之索引,其是藉由使用该预设数目以及在指令高速存取储存器中之一关联指令高速存取储存器列的索引来计算出。18.如申请专利范围第17项之利用FHT的处理器装置,另包括:被构筑在FHT中的每个FHT登载项中的有效位元栏位,用来指示FHT登载项对控制指令高速存取储存器而言是可用的;以及被构筑在每个FHT登载项中的替换栏位,用来指示不在该组中的哪个登载项是最近最少使用的(LRU),并且是下一个替换用候选者。19.如申请专利范围第18项之利用FHT的处理器装置,另包括:在每个有效FHT登载项中的第一指令栏位,用来指示在关联AIC列之任何扇区中的第一指令之位址;按照由关联FHT登载项中之顺序资讯所指示的执行顺序,打算最先输出该指令。20.如申请专利范围第19项之利用FHT的处理器装置,另包括:在每个有效FHT登载项中的下一指令位址栏位,用来指示一指令位址,该指令(按照程式执行顺序)是接在按照FHT登载项中所指示之扇区顺序的最后指令之后。21.一种用来立即定序操作,以便执行从储存在电脑系统中一程式的多重基本区块所获得指令的处理器方法,其系藉着利用程式先前执行之执行历史,该方法包括:使用一些提取周期来定序程式指令,以供执行之用,其中每一提取周期都可能定序,以便执行包含在高达“m"个程式之多重基本区域中的指令;藉着使用一指令位址来起动每一提取周期,该位址最初是在程式中之一入口位址(entry address),其后,其就是从先前提取周期中之一最后分支指令中所获得之一目标位址,直到完成程式执行为止,入口位址和目标位址各为一提取周期之周期起始位址;藉着利用起始位址来获得在每一提取周期开始时的预测向量,预测向量包括成为状态位元时,其中每一状态位元都会指示针对预测下次会发生在程式执行的顺序中的“m"条分支指令中的每一分支指令的被采取或不被采取状态;搜寻在一对准指令高速存取储存器(AIC)目录中的周期起始位址,以便决定是否有任何AIC列(在关联AIC中)包含一条具有周期起始位址的指令,若在一AIC列中之一AIC扇区中找到指令,则会指示一AIC命令中,但若在AIC中未找到指令,则会显示一AIC未命中;若指示一AIC命中,则将诸多FHT登载项之一提取操作历史表(FHT)组定位在与找到AIC列有关联之一FHT中;比较预测向量与在被定位FHT登载项之诸FHT登载项中的“扇区分支结果"资讯,以及选择在具有FHT命中之FHT组中的任何FHT登载项,且若在该组中并没有FHT登载项具有FHT命中,则发生一FHT未命中;以及若发生FHT命中,则藉由控制按照在FHT登载项之“扇区安排"资讯中所指示之顺序的扇区输出操作,加以输出在FHT登载项中之“扇区安排"资讯中所指示之诸AIC扇区中的指令,以供执行之用。22.如申请专利范围第21项的一种用来立即定序操作,以便执行从一程式的多重基本区块中所获得之指令的处理器方法,另包含:若发生AIC未命中,则使用周期起始位址来选择在AIC目录中与AIC列有关联之一目录登载项,每一AIC列都包含一预定数目的扇区,而每一扇区则都具有一预定数目的指令储存位置;选择在FHT中与被选择AIC列有关联之一FHT登载项;使被选择AIC列无效,并且使被选择FHT登载项无效,准备用来建立它们,以供未来使用;定位包含一指示之一记忆体程式列,该指令是在电脑系统之一储存器层次结构中的提取周期起始位址处;开始提取记忆体程式列中之提取周期起始位址处的指令,并且将被提取指令拷贝在以扇区之一对准指令位置为开始的列中之第一扇区中,并且当侦测出分支指令,触及AIC列之末端,或者触及记忆体程式列之末端,不论哪一个最先发生时,就会结束提取操作和拷贝操作,进而必要时,在提取操作和拷贝操作继续进行时加以更新程式指令位址的时候,继续在AIC列中之诸连续扇区中的提取操作和拷贝操作,其中将第一基本区块拷贝在列之任何扇区中结束之列中;当正在提取和拷贝它们时,也会输出指令,以供执行之用;将提取周期起始位址储存在AIC目录登载项中的“扇区第一位址"栏位中,用来定位在列中的第一扇区,并将第一扇区指示符储存在被选择FHT登载项中之一“扇区安排"栏位中的第一扇区位置中,以及将在每一对应扇区中之任何第一指令的程式位址储存在被选择AIC目录登载项中之一“扇区S第一位址"栏位中;测试在接收被提取指令之每一扇区中的任何分支指令,并且针对接收被提取指令之每一扇区,将扇区识别符储存在被选择FHT登载项之一“扇区安排"栏位中,并将针对每一被提取扇区之扇区结果指示资讯储存在FHT登载项中之一扇区分支结果栏位的每一对应扇区位置中,其中每一扇区结果指示资讯会指示每一对应扇区是否具有“无分支指令",或者具有被采取分支指令或不被采取分支指令;测试在AIC列中的所有AIC扇区是否都已经接收被提取指令,以便决定是否没有扇区打算在被选择AIC列中继续处理,若有扇区可用的话,就选择一个下次可用扇区,并且使其成为目前扇区;更新目前程式指令位址(其系在被选择AIC列中的最后拷贝分支指令之一目标位址),或者,若拷贝操作角触及列之末端,则按照已拷贝在列中的指令数目来递增已更新程式指令位址;若另一扇区存在,则找出包含在目前程式指令位址处之一指令的记忆体程式列,并开始提取来自目前程式位址处之该记忆体程式列的指令,以及开始拷贝被提取命令,以供执行之用,进而将指令拷贝在以扇区中之一对准指令位置为开始的目前被选择AIC扇区中,并且当侦测出分支指令,触及AIC列之末端,或者触及记忆体程式列之末端,不论哪一个最先发生时,就会结束提取操作和拷贝操作,必要时,在提取操作和拷贝操作继续进行时加以更新程式指令位址的时候,继续在AIC列中之诸连续扇区中的提取操作和拷贝操作,直到被选择AIC列之所有扇区都有指令拷贝在其中为止;将起始程式位址储存在AIC目录登载项中之该扇区的“扇区第一位址"栏位中;将针对每个下一扇区的扇区识符储存在FHT登载项中之“扇区安排"栏位中的对应扇区子栏位中;测试在接收任何被拷贝指令之每个下一扇区中的任何分支指令,并且将针对每一被拷贝扇区之扇区结果指示资讯储存在FHT登载项中之一扇区分支结果栏位的每一对应扇区位置中,其中每一扇区结果指示资讯就会指示每一对应扇区是否具有“无分支指令"或者具有被采取分支指令或不被采取分支指令;测试在AIC列中的所有AIC扇区是否都已经接收被拷贝指令,以便决定是否所有扇区都已经被拷贝在被选择AIC列中,然后再将被选择FHT登载项中之一替换栏位设定成一种最近最多使用的状态,将被选择FHT登载项中之一“下一程式位址"栏位设定成目前程式位址,以及将被选择FHT登载项中之一“有效位元"栏位设定成一种有效状态。23.如申请专利范围第22项的用来立即定序操作,以便执行从一程式的多重基本区块中所获得之指令的处理器方法,另包括;藉由输出到指令定序缓冲器来执行供执行用的输出操作,该缓冲器会将指令提供到一种执行本方法的处理器之一执行连通管。24.如申请专利范围第21项的用来立即定序操作,以便执行从一程式的多重基本区块中所获得之指令的处理器方法,另包括:若当发生AIC命中时就发生FHT未命中,则选择在FHT组中之一无效FHT登载项,将子栏位索引C设定成0,以便定位目前子栏位C,将扇区索引S设定成0,以便定位目前扇区S,以及将向量位元索引B设定成0,以便定位目前向量位元;将目前程式位址设定在被选择FHT登载项中之一“第一指令位址"栏位中;调整在被选择FHT登载项中之一替换栏位,用来指示最近最多使用的状态;将S储存在被选择FHT登载项中之一“扇区安排"栏位中之一子栏位中,用来建立FHT登载项,以供未来使用;输出包含在被选择AIC列之扇区S中的所有指令,以供执行之用;测试任何分支指令扇区S,且若没有分支指令存在于扇区S中,则将一种“无指令"代码储存在被选择FHT登载项之子栏位C中,并且按照从扇区S中所输出的指令数目来递增程式指令位址,以供执行之用;但若在扇区S中检测出分支指令,则测试在预测向量中之目前位元B是被采取或不被采取状态,且若找到被采取状态,则将被采取指示资讯储存在被选择FHT登载项中之一“扇区分支结果"栏位中之子栏位C中,并且将程式指令位址设定成在扇区S中所检测出的分支指令之目标位址,但若找到不被采取状态,则将不被采取指示资讯储存在被选择FHT登载项中之一“扇区分支结果"栏位中之子栏位C中,并且按照从扇区S中所输出的指令数目来递增程式指令位址,以供执行之用;将子栏位C递增加1,以便获得新目前子栏位C,并且测试被递增数値,以便决定其是否指示在AIC列中的所有扇区都已经被服务,若所有扇区都已经被服务,则将被选择FHT登载项中之一有效位元栏位设定成一种有效状态,并且将目前程式指令位址设定成从被选择FHT登载项中之一“下一程式指令位址"栏位中所获得之一新数値;然后使用程式指令位址之新数値来起动下一提取周期;但若测试子栏位C之被递增数値指示不是所有的AIC扇区都已经被服务,则存取被选择AIC目录登载项;在被选择AICH目录登载项中之诸“扇区第一位址"栏位中搜寻与目前程式指令位址匹配的任何栏位,若这些栏位中的任何栏位有匹配,则发生扇区命中,进而匹配栏位会识别一对应AIC扇区,该扇区需要服务且现在变成被选择AIC扇区(其可能是在被选择AIC列中的任何扇区位置处),然后再起动一提取周期,以供新选择AIC扇区之用;并且针对每个下一子栏位C而重复处理过程,直到子栏位达到指示所有扇区都已经被服务之一数値为止;然后再将被选择FHT登载项设定成有效状态,并且设定其替换栏位,用来指示一种最近最多使用的状态;但若在搜寻AIC目录登载期间并没有找到扇区命中,则会发生扇区未命中,然后再将无操作字元写入被选择FHT登载项之“扇区安排"和“扇区分支结果"栏位中的任何剩余子栏位中;以及将目前程式指令位址设定成在目前AIC列中之“下一程式指令位址"栏位中所找到之一数値,并且起动下一提取周期。25.如申请专利范围第24项的用来立即定序操作,以便执行从一程式的多重基本区块中所获得之指令的处理器方法,另包括:藉由输出到指令定序缓冲来执行供执行用的输出操作,该缓冲器会将指令提供到一种执行该方法的处理器之一执行连通管。图式简单说明:第一图显示:此处所描述之本发明的较佳实施例之硬体配置。第二图A表示:“对准指令高速存取储存器"(AIC),并且显示:在AIC中之每一已划分扇区列中的诸多栏位之一实图例。第二图B显示:在“提取操作历史表"(FHT)中之一FHT登载项之一实例。第三图图解说明:一AIC列的内容与包含登载项之一关联FHT组中的FHT登载项之间的关系。第四图,第五图,第六图,第七图及第八图提供:由较佳实施例所使用的新奇方法之一流程图,其中;第四图显示:藉由该方法的初始化操作及主路径(primary path)。第五图和第六图显示:用来处理发生AIC未命中的方法之一子处理过程。第七图和第八图显示:用来处理发生FHT未命中的方法之一子处理过程。
地址 美国