《微处理器及其执行的方法.pdf》由会员分享,可在线阅读,更多相关《微处理器及其执行的方法.pdf(16页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN101984403A43申请公布日20110309CN101984403ACN101984403A21申请号201010194974X22申请日2010060161/182,79920090601US12/781,33720100517USG06F9/38200601G06F12/0820060171申请人威盛电子股份有限公司地址中国台湾台北县72发明人G葛兰亨利罗德尼E虎克柯林艾迪74专利代理机构北京市柳沈律师事务所11105代理人钱大勇54发明名称微处理器及其执行的方法57摘要一种微处理器,包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预。
2、取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。30优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书8页附图4页CN101984406A1/3页21一种微处理器,包括一高速缓存;一指令组,包括一第一预取指令与一第二预取指令,该第一预取指令与该第二预取指令中每一者用来命令该微处理器自一系统存储器预取。
3、一数据快取列至该高速缓存;以及一存储器子系统,用来执行该第一预取指令与该第二预取指令,其中,对于该第一预取指令,该存储器子系统根据一第一既定情况组而放弃自该系统存储器预取该数据快取列至该高速缓存;其中,对于该第二预取指令,该存储器子系统根据该第一既定情况组来完成自该系统存储器预取该数据快取列至该高速缓存。2根据权利要求1所述的微处理器,其中,该指令组为一微架构指令组。3根据权利要求1所述的微处理器,根据该第一既定情况组,该存储器子系统通过重新执行该第二预取指令来完成自系统存储器预取该数据快取列至该高速缓存。4根据权利要求1所述的微处理器,其中该第一既定情况组包括以下其中一者该微处理器的一填充队。
4、列被填满,该填充队列具有一既定数量的储存元件,用以接收来自该系统存储器的多个快取列;一地址冲突发生在该第一预取指令与该第二预取指令所指定的该数据快取列的一地址与该微处理器内待处理中较旧的一储存操作之间;一地址冲突发生在该第一预取指令与该第二预取指令所指定的该数据快取列的一地址与该微处理器内的待处理中的一监测操作之间;该第一预取指令与该第二预取指令晚于一序列指令;以及该第一预取指令与该第二预取指令所指定的该数据快取列的地址未命中该微处理器的一转译后备缓冲器。5根据权利要求1所述的微处理器,其中对于该第一预取指令,该存储器子系统根据一第二既定情况组而放弃自系统存储器预取该数据快取列至该高速缓存,以。
5、及对于该第二预取指令,该存储器子系统根据该第二既定情况组引发一例外处理程序。6根据权利要求5所述的微处理器,其中该第二既定情况组包括以下其中一者该第一预取指令与该第二预取指令所寻址的一存储器页面的存储器特性为不可快取;以及该第一预取指令与该第二预取指令所指定的该数据快取列的一地址未命中该微处理器的一转译后备缓冲器。7根据权利要求6所述的微处理器,其中该存储器子系统执行一页面页表查找,以获得该第二预取指令所指定的该数据快取列的该地址的一虚拟至物理地址转换。8根据权利要求5所述的微处理器,还包括一微码单元,包括一例外处理例程,用来处理该例外处理程序且传达给该微处理器的一重复数据串搬移微码;其中,该。
6、重复数据串搬移微码实现该为微处理器的指令组架构的一重复数据串搬移巨指令。9一种微处理器,包括一高速缓存;权利要求书CN101984403ACN101984406A2/3页3一微码单元,包含一微码,该微码用来实现一架构性重复数据串搬移巨指令,其中,该微码包括多个保证预取加载储存指令组的序列;以及一存储器子系统,用来执行该多个保证预取加载储存指令组,在一既定情况组存在且当该存储器子系统将多个非保证预取指令仅视为暗示时,用来预取该多个保证预取指令所指定的多个快取列至该高速缓存。10根据权利要求9所述的微处理器,其中该微码包括在该多个保证预取加载储存指令组的序列之前的一或多个由该存储器子系统所执行的初。
7、始保证预取指令,并在该存储器子系统遭遇到该多个保证预取加载储存指令组的序列中的加载指令之前,使得该一或多个初始保证预取指令读取指定的快取列被预取至该高速缓存。11一种微处理器,包括一高速缓存;一微码单元,包含一微码,该微码用以实现一架构性重复数据串搬移巨指令,该微码包括多个加载指令与储存指令,以将数据串由一来源存储器位置搬移至一目标存储器位置,且该微码还包括在该多个加载指令之前的多个预取指令,以增加该多个加载指令被处理之前,多个快取列出现在该高速缓存的可能性;以及一存储器子系统,用来执行该多个预取指令、加载指令、与储存指令,其中该存储器子系统用来检测该多个预取指令的一者所指示的一存储器地址未命。
8、中该微处理器的一转译后备缓冲器,当该存储器位置未命中该转译后备缓冲器时,该存储器子系统通知该微码单元。12根据权利要求11所述的微处理器,其中该微处理器根据上述检测的情况来清除晚于该多个预取指令的一者的每一该加载指令与该储存指令。13根据权利要求12所述的微处理器,其中,在清除后,于剩余的该多个加载指令之前,该微码单元重新开始执行剩余的该多个预取指令,以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存的可能性。14根据权利要求11所述的微处理器,其中,该存储器子系统用来检测该多个预取指令的一者正指示具有非可缓存特性的一存储器区域的一存储器地址的一情况,且相应地导致该微码单元。
9、被通知该情况,以及该微码用来相应地搬移数据串的剩余部分而不需使用该多个预取指令。15一种由一微处理器所执行的方法,该微处理器包括一高速缓存以及一指令组,且该指令组具有多个第一预取指令与第二预取指令,该方法包括当执行该第一预取指令时,检测一预设情况组中的一者或多个的存在,其中,该第一预取指令命令该微处理器自一系统存储器预取一第一数据快取列至该高速缓存;相应于当执行该第一预取指令时检测该预设情况组中的一者或多个的存在的步骤,放弃自该系统存储器预取该第一数据快取列至该高速缓存;当执行该第二预取指令时,检测该预设情况组中的一者或多个的存在,其中,该第二预取指令命令该微处理器自该系统存储器预取一第二数据。
10、快取列至该高速缓存;以及相应于执行该第二预取指令时检测该预设情况组中的一者或多个的存在的步骤,完成自该系统存储器预取该第二数据快取列至该高速缓存。16一种由一微处理器所执行的方法,该微处理器包括一高速缓存,该方法包括权利要求书CN101984403ACN101984406A3/3页4对一架构性重复数据串搬移指令进行解码;以及相应于对该架构性重复数据串搬移指令进行解码的步骤,执行多个保证预取加载储存指令组的序列;其中,执行该多个保证预取加载储存指令组的序列的步骤包括甚至在一既定情况组存在时且当该存储器子系统将多个非保证预取指令仅视为暗示时,预取由该多个保证预取加载储存指令组的序列所指定的该高速缓。
11、存的多个快取列。17一种由一微处理器所执行的方法,该微处理器包括一高速缓存,该方法包括对一架构性重复数据串搬移指令进行解码;相应于对该架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由一来源存储器位置搬移至一目标存储器位置;在执行该多个加载指令之前,执行多个预取指令,以增加多个快取列在被该多个加载指令处理前出现在该高速缓存的可能性;以及检测该多个预取指令的一者正指示出一存储器地址于该微处理器的一转译后备缓冲器中未命中的一情况,且相应地导致一微码单元被通知该转译后备缓冲器的未命中。18根据权利要求17所述的由微处理器所执行的方法,还包括根据上述检测的步骤,清除晚于该。
12、多个预取指令的一者的每一该加载指令与该储存指令;以及在上述清除的步骤后,于剩余的该多个加载指令之前,重新开始执行剩余的该多个预取指令,以增加剩余的该多个快取列在被剩余的该多个加载指令处理前出现在该高速缓存的可能性。权利要求书CN101984403ACN101984406A1/8页5微处理器及其执行的方法技术领域0001本发明是有关于微处理器的数据预取DATAPREFETCHING,特别是有关于微处理器的指令预取。背景技术0002重复数据串搬移REPMOVS巨指令是X86指令集架构中常被频繁执行的巨指令。此巨指令命令微处理器将数据串由存储器内的来源位置搬移至存储器内的目标位置。此指令可以微码MI。
13、CROCODE来实现。假使被搬移的字节的数量相对地较大,则微码可以利用“快速数据串搬移FASTSTRINGMOVE”的微码例程ROUTINE来实现该巨指令。此快速数据串搬移微码例程执行多个加载储存LOADSTORE微操作MICROOP组PAIRS的序列。快速数据串搬移微码例程试图执行大量的加载与储存微操作例如16字节,这是因为加载与储存微操作的效率较高,换言之,载入与储存微操作可处理的数据量大于REPMOVSB/W/D/Q即字节/字组/双字组/四字组所指定的每一数据单位。0003然而,由于加载微操作所指定的系统存储器快取列读取具有较长的延迟,因此加载微操作通常会未命中高速缓存而导致REPMOV。
14、S巨指令相对变慢。发明内容0004本发明提供一种微处理器,包括高速缓存、指令组以及存储器子系统。指令组包括第一预取指令与第二预取指令,第一预取指令与第二预取指令中每一者用来命令微处理器自系统存储器预取数据快取列至高速缓存。存储器子系统用来执行第一预取指令与第二预取指令。对于第一预取指令,存储器子系统根据既定情况组而放弃自系统存储器预取数据快取列至高速缓存。对于第二预取指令,存储器子系统根据既定情况组来完成自系统存储器预取数据快取列至高速缓存。0005本发明还提供一种微处理器,包括高速缓存及微码单元。微码单元包含一微码,该微码用来实现一架构性重复数据串搬移指令。该微码包括多个保证预取加载储存指令。
15、组的序列。微处理器还包括存储器子系统,用来执行保证预取、加载、及储存指令,甚至在既定情况组存在且当存储器子系统将非保证预取指令仅视为暗示时,用来将保证预取指令所指定的快取列的数据预取至高速缓存。0006本发明又提供一种微处理器,包括高速缓存及微码单元。微码单元包含一微码,该微码用来实现一架构性重复数据串搬移指令,且微码包括多个加载指令与储存指令,用以将数据串由来源存储器位置搬移至目标存储器位置。微码还包括多个预取指令,这些预取指令远远领先加载指令,以增加快取列在被加载指令存取前出现在该高速缓存的可能性。微处理器还包括存储器子系统,用来执行预取、加载、与储存指令。存储器子系统用来检测预取指令之中。
16、的一者所指示的存储器地址于微处理器的转译后备缓冲器中未命中的情况,且相应地通知微码单元该转译后备缓冲器的未命中。0007本发明也提供一种由微处理器所执行的方法。微处理器包括高速缓存以及指令说明书CN101984403ACN101984406A2/8页6组,且指令组具有多个第一预取指令与第二预取指令。该方法包括当执行第一预取指令时,检测预设情况组中之中的一者或多个是否存在。第一预取指令命令该微处理器自系统存储器预取第一数据快取列至高速缓存。该方法也包括当执行第一预取指令时,检测到预设情况组中的一者或多个存在时,放弃自系统存储器预取第一数据快取列至高速缓存的步骤。该方法也包括当执行第二预取指令时,。
17、检测预设情况组中之中的一者或多个是否存在。第二预取指令命令微处理器自系统存储器预取第二数据快取列至高速缓存。该方法还包括当执行第二预取指令时,检测到预设情况组中的一者或多个存在时,完成自系统存储器预取第二数据快取列至高速缓存的步骤。0008本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包括解码架构性重复数据串搬移指令。该方法也包括相应于对架构性重复数据串搬移指令进行解码的步骤,执行多个保证预取加载储存指令组的序列。执行该等保证预取加载储存指令组的序列的步骤包括甚至在既定情况组存在时且当存储器子系统将多个非保证预取指令仅视为暗示时,预取由该等保证预取加载储存指令组的序列所指。
18、定的高速缓存的多个快取列。0009本发明还提供一种由微处理器所执行的方法。微处理器包括高速缓存。该方法包括对架构性重复数据串搬移指令进行解码。该方法也包括相应于对架构性重复数据串搬移指令进行解码的步骤,执行多个加载指令与储存指令,以将数据串由来源存储器位置搬移至目标存储器位置。该方法也包括在执行加载指令之前,执行多个预取指令,以增加多个快取列在被加载指令处理前出现在高速缓存的可能性。该方法还包括检测预取指令的一者正指示出一存储器地址于微处理器的转译后备缓冲器中未命中的情况,且相应地导致微码单元被通知转译后备缓冲器的未命中。附图说明0010图1绘示本发明一实施例的微处理器的方块图;0011图2的。
19、窗体示意图1的存储器子系统在不同情况下执行保证预取微指令时,存储器子系统所执行的操作;0012图3示意图1的微处理器的快速数据串搬移微码一实施例的部分序列;以及0013图4示意图1的微处理器的操作流程图。0014主要元件标号说明0015100微处理器;102指令高速缓存;0016104指令转译器;106RAT;0017108保留站;114引退单元;0018112多个执行单元与存储器子系统;0019116重排序缓冲器ROB;0020118微码单元;122填充队列;0021124数据高速缓存;0022126总线接口单元BIU;0023128控制逻辑单元;132重复数据串搬移巨指令;0024134、。
20、136微指令;说明书CN101984403ACN101984406A3/8页70025135处理器总线;0026138一般目的缓存器GPR;0027142快速数据串搬移微码;0028144转译后备缓冲器TLB;0029402、404、406、408、412、414、416、418方法步骤。具体实施方式0030为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并配合所附图式,作详细说明如下。0031发明人认为假使能以某种方式使加载操作命中HIT图1的数据高速缓存124,则图1的微处理器100可更快速地执行数据串搬移。发明人试图通过隐藏与加载操作相关的存储器存取延迟来达到快速数据。
21、串搬移。而隐藏的方式是在微码中加入预取微指令,此预取微指令可在加载操作之前先预取数据串中即将会需要的部分至数据高速缓存124。然而,发明人注意到存储器子系统把一般预取操作仅视为暗示HINT。也就是说,在某些情况下存储器子系统会放弃预取快取列至数据高速缓存124。例如,当图1的填充队列FILLQUEUE122被填满时即填充队列122的所有项目ENTRIES现在都被配置、需要执行页表查找TABLEWALK、遭遇序列SERIALIZE执行的情况例如预取操作位于一序列指令之后,例如锁定操作、或是预取的地址与储存操作或监测SNOOP操作的地址发生冲突ADDRESSCOLLISION。当这些情况其中一者发。
22、生时,指定的快取列不会被预取至高速缓存,这通常导致了加载操作开始未命中于高速缓存,进而使数据串搬移再次变慢。0032在了解到微处理器100十分需要将数据预取至数据高速缓存124,发明人将一保证预取GUARANTEEDPREFETCH,GPREFETCH微指令加入图1的快速数据串搬移微码142所能使用的微指令组。保证预取微指令与一般预取微指令的相异之处在于,只要指令架构允许,在几乎任何情况下,保证预取微指令都能保证特定快取列会被撷取至数据高速缓存124。0033图2的窗体列出在不同情况下执行一保证预取微指令时,存储器子系统112所执行的操作。00341假使保证预取微指令正预取的存储器页面PAGE。
23、的存储器特性为不可快取UNCACHEABLE,由于指令架构不允许预取不可快取的存储器页面,因此存储器子系统112不会预取快取列,但是相对地会致使保证预取微指令产生例外处理程序EXCEPTION,让微码单元118可以一般方式来执行数据串搬移,也就是非预取的方式。00352假使填充队列122被填满时,存储器子系统112将使保证预取微指令被重新执行REPLAY,直到填充队列122的一项目可被成功地配置。00363假使保证预取微指令与储存操作或监测操作发生冲突例如存取同一地址时,存储器子系统112将使保证预取微指令被重新执行,直到不再有冲突发生。00374假使存储器子系统112遭遇一序列执行的情况,其。
24、将重新执行保证预取微指令。00385假使保证预取微指令的虚拟地址未命中于图1的转译后备缓冲器TRANSLATIONLOOKASIDEBUFFER,TLB144中,存储器子系统112不会预取快取列,且将使说明书CN101984403ACN101984406A4/8页8保证预取微指令产生一个例外处理程序。通过产生由微码单元118所处理的例外处理程序,存储器子系统112致使存储器子系统112执行页表查找,之后再使快速数据串搬移微码重新加载执行REPRIMETHEPUMP。否则的话,尤其是如果TLB144的未命中是发生在之保证预取加载储存微指令组GPREFETCHLOADSTORETRIPLETS的循。
25、环主体LOOPBODY时参阅图3与下文讨论,与保证预取微指令相关的存储器存取延迟可能无法被隐藏,使得对应的加载微指令将未命中高速缓存。然而,此例外处理程序会导致管线中较晚于保证预取微指令的任何微指令被清除FLUSHED,包括保证预取加载储存微指令组在内。一般来说,在下列情况之下,快速数据搬移微码不需要重新执行,例如填充队列122为填满的、与储存指令/监测指令发生冲突、或是在序列执行的情况下。因此,在这些情况下存储器子系统112不会产生例外处理程序,而是重新执行保证预取微指令。在其它实施例中,当保证预取微指令的虚拟地址未命中TLB144时,存储器子系统112执行页表查找并重新执行保证预取微指令。。
26、0039如图3所示,为了在加载微指令执行之前将数据预取至数据高速缓存124内,快速数据串搬移微码142经改良加入一保证预取微指令至加载储存微指令组,以建立保证预取加载储存微指令组。由于保证预取微指令通常会有相对较长的系统存储器存取延迟,因此快速数据串搬移微码142在开始保证预取加载储存微指令组之前,还包含了一些额外的初始保证预取微指令使系统存储器存取延迟可减少在图3的实施例中为5个保证预取微指令。快速数据串搬移微码142的程序设计应试图把这些初始保证预取微指令放置在时间上充分领先于保证预取加载储存微指令组的循环主体的位置,使得初始保证预取微指令所指定的快取列的数据,在加载操作进入存储器子系统之。
27、前就已经预取至数据高速缓存124,进而使加载操作可命中于数据高速缓存124。也就是说,快速数据串搬移微码142的程序设计应试图在初始保证预取微指令与保证预取加载储存微指令组循环主体之间放置足够的其它指令,使得在加载操作到达时,初始保证预取微指令所预取的快取列已位于数据高速缓存124内。因此,在循环的尾端END,快速数据串搬移微码142包括与初始保证预取微指令数量对应的加载储存微指令组不包括保证预取微指令例如5组加载储存微指令组,以与预先执行的初始保证预取微指令同步SYNCUP。在一实施例中,一快取列为64字节,且每一加载/储存操作是16字节。因此,虽然图3的范例的微码序列有5组加载储存微指令组。
28、,但是实际上共有5组64字节的加载储存微指令组,意即有5组微指令组,且每一组为4个16字节的加载储存微指令组。对于效能来说,保证预取微指令必须位在加载操作之前,并且必须将指定的快取列读入数据高速缓存124,使加载操作可命中数据高速缓存124,这点是很重要的。这就是为什么保证预取微指令必须保证其完成度,甚至在需要时重新执行,或者至少要引发例外处理程序使快速数据串搬移微码142有机会重新执行快速数据串搬移例如在未命中TLB144的情况下是如此重要。这也是为什么一般预取微指令在操作上有所不足,因为一般预取微指令仅被视为暗示。在一实施例中,每一保证预取、载入、与储存操作都会更新各自的地址,分别是PRE。
29、FETCH_ADDRESS、LOAD_ADDRESS、及STORE_ADDRESS。0040现在参阅图1,其示意本发明一实施例的微处理器100的方块图。微处理器100是一个管线微处理器PIPELINEDMICROPROCESSOR,包括指令高速缓存102。指令高速缓存102用以快取多个程序指令,在此处也称为巨指令MACROINSTRUCTIONS132。指令高速缓说明书CN101984403ACN101984406A5/8页9存102提供巨指令132至指令转译器104。指令转译器104对每一巨指令132进行解码,且将大部分的巨指令132转译为一或多个微指令134。转译后的微指令134可包括一般。
30、预取NORMALPREFETCH微指令等等。此外,在一实施例中,微处理器100的指令组架构包括重复数据串搬移巨指令132,其可包括在使用者程序内,细节将于后文描述。指令转译器104用以识别哪些巨指令132会被实现于存放于微处理器100的微码单元118的微码142。当指令转译器104遇到实现于微码142的巨指令132时,指令转译器104将转移控制权至微码单元118的微序列发生器MICROSEQUENCER未显示,其中该微序列发生器自微码单元118的微码存储器未显示内撷取微码142的多个微指令136,并分派DISPATCH这些微指令136以供执行。值得一提的是,微码142包括用以实现重复数据串搬移。
31、巨指令132的程序码此处称为快速数据串搬移微码142,例如X86架构的REPMOVS巨指令。此重复数据串搬移巨指令132使用到保证预取微指令。微指令136可包括加载、储存、以及保证预取微指令等等。0041一缓存器别名表REGISTERALIASTABLE,RAT106接收来自指令转译器104的转译后微指令134以及来自微码单元118的快速数据串搬移微码142中的微指令136,且RAT106产生微指令134和136的相依性DEPENDENCIES。在一实施例中,微处理器100是一个非循序OUTOFORDER执行的微处理器,且RAT106是微处理器100管线中按程序顺序接收微指令的最后管线部分。R。
32、AT106整合INCORPORATE微指令的程序顺序,而该程序顺序被重排序缓冲器REORDERBUFFER,ROB116用以根据程序顺序来引退微指令134和136。RAT106在分派微指令134和136给保留站RESERVATIONSTATION108之前,会先依照程序顺序在ROB116内配置一项目给每一个微指令134和136。ROB116耦接至RAT106、保留站108、多个执行单元与存储器子系统112、以及引退单元114。0042保留站108接收来自RAT106的微指令134和136,并根据RAT106所产生的相依性信息判断微指令134和136的来源操作数是否为可用AVAILABLE,且多。
33、个执行单元112也可用时,保留站108将微指令134和136发布至多个执行单元112。微处理器100也包括多个一般目的缓存器GENERALPURPOSEREGISTER,GPR138,其被微指令134和136所使用,作为快速数据串搬移微码142所搬移的数据串的中间储存位置INTERMEDIATESTORAGELOCATIONS。引退单元114按照微指令134和136在ROB116内的程序顺序来引退微指令134和136。值得一提的是,引退单元114会检查在ROB116内最旧的指令的项目的多个旗标,以判断微指令134和136是否需要被重新执行,或判断是否需要引发例外处理程序。0043存储器子系统1。
34、12包括转译后备缓冲器TRANSLATIONLOOKASIDEBUFFER,TLB144、数据高速缓存124、填充队列122、总线接口单元BUSINTERFACEUNIT,BIU126、以及控制逻辑单元128,其中,控制逻辑单元128耦接于TLB144、数据高速缓存124、填充队列122、以及BIU126。BIU126将微处理器100介接至一处理器总线,该处理器总线耦接至微处理器100所在RESIDE的计算机系统的系统存储器未显示。系统存储器储存重复数据串搬移巨指令132所要搬移的数据串,此数据串是由一来源地址搬移至重复数据串搬移巨指令132所指定的目标地址。TLB144提供存储器页面的虚拟至。
35、物理地址转换的快取。数据高速缓存124提供自系统存储器所读取的数据的快取,例如重复搬移数据串巨指令132的数据串。填充队列122具有一定数量的快取列缓冲器,每一快取列缓冲器可由存储器子系统112来分别配置,以接收BIU126自系统存储器读出的快取列,例如由保证预说明书CN101984403ACN101984406A6/8页10取微指令所预取的一快取列的数据串,该数据串为重复搬移数据串巨指令132所指定的。由于保证预取微指令不会将数据加载至微处理器100的架构缓存器,因此最好由存储器子系统112来完成保证预取微指令,并接着释放出存储器子系统112的资源。一旦存储器子系统112确定任何会防止其预取。
36、由保证预取微指令所指定的快取列的情况存在时,可配置填充队列122的一个快取列缓冲器给该快取列。此外,当此保证预取微指令成为微处理器100中最旧的指令时,引退单元114会立刻引退此保证预取微指令,以利有效地释放先前配置给该保证预取微指令的ROB116项目。0044存储器子系统112可执行保证预取微指令、一般预取微指令、加载微指令、以及储存微指令等等。在某些情况下,如图2的窗体所示,存储器子系统112可能想要致使微处理器100重新执行某个微指令例如一保证预取微指令,或者致使微处理器100引发例外处理程序来响应某一微指令。为了完成重新执行,存储器子系统112对保证预取微指令所对应的ROB116项目设。
37、定一重新执行旗标,以示意此保证预取微指令必须重新执行。接着,当此保证预取微指令准备引退时例如此保证预取微指令为ROB116中最旧的指令,ROB116重新执行保证预取微指令,并且将晚于此微指令的所有微指令返回至保留站108,使得其来源操作数被重新撷取,并重新发布被返回的微指令至执行单元与存储器子系统112来执行。为了完成例外处理程序,存储器子系统112对保证预取微指令所对应的ROB116项目设定一例外旗标,以示意此保证预取微指令引发例外状况EXCEPTIONCONDITION。接着,当保证预取微指令准备引退时,ROB116引发一例外处理程序,由微码单元118中的例外处理管理程序EXCEPTION。
38、HANDLER执行,以将例外状况传达给快速数据串搬移微码142。0045现在参阅图4,其示意图1的微处理器100的操作流程的一实施例。流程开始于步骤402。0046在步骤402中,存储器子系统112正执行一预取微指令可以是保证预取微指令或是一般预取微指令,且遭遇一状况,例如图2的窗体所表示的情况,存储器子系统112无法将指定的快取列撷取到数据高速缓存124。流程前进至步骤404。0047在步骤404中,存储器子系统112判断该预取微指令的类型。如果此预取微指令是保证预取微指令,流程前进至判断步骤408;反之,如果此预取微指令是一般预取微指令,流程则前进至步骤406。0048在步骤406中,存储。
39、器子系统112压制SQUASH此一般预取微指令。也就是说,存储器子系统112不会在处理器总线135上产生数据传输TRANSACTION以读取一般预取微指令所指定的快取列,并允许此一般预取微指令可正常地引退。换句话说,存储器子系统112将此一般预取微指令视为一暗示,并且在此状况下把它当作无操作NOOP微指令来执行。于一实施例中,在一般预取微指令所指定的快取列位置未命中TLB144的情况下,存储器子系统112会执行页表查找,并接着重新执行此一般预取微指令,而不是压制它。一般预取微指令的流程结束于步骤406。0049如果此预取微指令为保证预取微指令,在判断步骤408中,存储器子系统112判断步骤40。
40、2所遭遇到的情况是否为,保证预取微指令所指定的地址落在具有不可快取特性的存储器区域内。如果是的话,流程前进至步骤412;反之,流程前进至判断步骤414。0050在步骤412中,存储器子系统112放弃预取该快取列,并对此保证预取微指令所对应的ROB116项目设定例外旗标,使得此保证预取微指令接续引发例外处理程序。如此一说明书CN101984403ACN101984406A7/8页11来会使得快速数据串搬移微码142藉助于程序码的非预取版本来实现重复数据串搬移巨指令132。在此应注意,在步骤412与416中通过对ROB116的项目设定例外旗标所引发的例外处理程序并非架构性例外处理程序ARCHITE。
41、CTURALEXCEPTION,而是微处理器100的内部微例外处理程序MICROEXCEPTION。也就是说,在内部微例外处理程序的情况下,快速数据串搬移微码142不会将控制权转移至系统软件。例外处理程序的流程结束于步骤412。0051在步骤414中,存储器子系统112判断在步骤402中所遭遇到的情况是否为保证预取微指令所指定的地址未命中TLB114。如果是的话,流程前进至步骤416;反之,流程前进至步骤418。0052若保证预取微指令所指定的地址未命中TLB114,在步骤416中,存储器子系统112放弃预取该快取列,并对此保证预取微指令所对应的ROB116项目设定例外旗标,使得此保证预取微指。
42、令接续引发例外处理程序。此例外处理程序导致微处理器100管线中较晚于此保证预取微指令的任何微指令136被清除,包括图3的保证预取加载储存微指令组。接着,快速数据串搬移微码142执行一微指令以引发页表查找的执行,藉此获得存储器页面的虚拟至物理地址转换,此存储器页面包含保证预取微指令所指定的快取列地址。此外,图3的快速数据串搬移微码142会回复执行RESUME,重新加载微指令并利用保证预取微指令来执行快速数据串搬移。在本发明另一实施例中,当发生未命中TLB时,存储器子系统112会执行页表查找,并接着以类似步骤418所叙述的方式来重新执行保证预取微指令,而不是致使存储器子系统112产生例外处理程序。。
43、未命中TLB的流程结束于步骤416。0053如果保证预取微指令所指定的地址命中TLB114,在步骤418中,存储器子系统112对保证预取微指令所对应的ROB116项目设定重新执行旗标,使得保证预取微指令可接续被重新执行。在许多情况中,当保证预取微指令被重新执行时,状况可被排除即填充队列122的项目为可用的、地址冲突不再存在、或是序列指令被引退,使得存储器子系统112可立即重新执行保证预取微指令,当对应的加载微指令到达存储器子系统112时,快取列的数据已实时放入数据高速缓存124。命中TLB的流程结束于步骤418。0054在一实施例中,可考虑将一保证预取指令加入至微处理器100的指令组架构内,以。
44、供使用者程序使用,如同快速数据串搬移微码142所使用的保证预取微指令。0055将保证预取微指令加入微指令组的优点在于,由于当加载微指令执行时,所搬移的数据较可能命中于数据高速缓存124,因此微码单元118可较快速地执行REPMOVE指令。0056本发明的不同实施例已于本文叙述,但本领域技术人员应能了解这些实施例仅作为范例,而非限定于此。本领域技术人员可在不脱离本发明的精神的情况下,对形式与细节上做不同的变化。例如,软件可致能本发明实施例所述的装置与方法的功能、组建FABRICATION、塑造MODELING、模拟、描述DESCRIPTION、以及/或测试。可透过一般程序语言C、C、硬件描述语言。
45、HARDWAREDESCRIPTIONLANGUAGES,HDL包括VERILOGHDL、VHDL等等、或其它可利用的程序语言来完成。此软件可配置在任何已知的计算机可使用媒介,例如半导体、磁盘、或光盘例如CDROM、DVDROM等等。本发明所述的装置与方法实施例可被包括于半导体智能财产核心,例如微处理器核心以HDL来实现,并转换成集成电路产品的硬件。此外,本发明所述的装置与方法可实现为硬件与软件的结合。因此,本发明不应局限于所揭露的实施例,而是依所附的权利要求范围与等同实施所界定。特说明书CN101984403ACN101984406A8/8页12别是,本发明可实施在使用于一般用途计算机中的微处理器装置内。最后,本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。说明书CN101984403ACN101984406A1/4页13图1说明书附图CN101984403ACN101984406A2/4页14图2说明书附图CN101984403ACN101984406A3/4页15图3说明书附图CN101984403ACN101984406A4/4页16图4说明书附图CN101984403A。