微处理器及其执行方法

文档序号:6608087阅读:219来源:国知局

专利名称::微处理器及其执行方法
技术领域
:本发明涉及一种微处理器的指令集结构,特别涉及一种将数据串存储在存储器的指令。
背景技术
:程序一般使用x86指令集的REPSTOS指令来清除(scrub)存储器,例如以“0”来填满存储器或者将大量相同数据写入至视频缓冲器。在寄存器ECX所指定将写入的数据量相对的大,使得许多快取列甚至是许多存储器的页面被写入。对于处理器而言,此目的是为了尽可能的快速执行写入。一般而言,被写入的存储器具有回写(write-back)存储器特性,即是其可写入且可快取。假使存储区域(即被写入的存储器区域)已命中于快取存储器,与存储区域未命中于快取存储器比较起来,REPSTOS指令将更快速地执行。这是因为处理器必须分配未命中的快取列,即获得快取列的所有权(gainownership)且将其由存储器读进快取存储器,这导致相对多的时间消耗。
发明内容在一观点中,本发明提供一种微处理器,其通过一总线耦接一存储器。微处理器包括一快取存储器以及一攫取线指令。攫取线指令用以指定涉及该存储器的一快取列的一存储器地址。攫取线指令指示微处理器在总线上开始执行一零拍读取无效异动(zero-beatread-invalidatetransaction)以获得该快取列的所有权。假使微处理器判断对快取列的一存储操作会引起异常处理程序,当微处理器执行攫取线指令时,微处理器放弃开始执行在总线上的零拍读取无效异动。在另一观点中,本发明提供一种执行方法,由一微处理器执行。微处理器通过一总线耦接一存储器。此执行方法包括接收一攫取线指令以执行。攫取线指令用来指定涉及存储器的一快取列的一存储器地址。此执行方法也包括根据攫取线指令的接收,判断对快取列的一存储操作是否会引起异常处理程序。此执行方法还包括假使对快取列的一存取不会引起异常处理程序,开始执行总线上的一零拍读取无效异动(zero-beatread-invalidatetransaction)以获得快取列的所有权;以及假使对快取列的一存取会引起异常处理程序(exc印tion),则放弃开始执行在总线上的零拍读取无效异动。图1表示根据本发明实施例的微处理器;图2表示图1的微处理器的操作流程图;以及图3A-图3D表示图1中微处理器的操作流程图。主要元件符号说明图1100微处理器;102指令快取存储器;104指令转译器;106寄存器命名表(RAT);108保留站;112执行单元与存储器次系统114引退单元;116重排缓冲器(ROB);118微码单元;122填充队列;124数据快取存储器;126总线接口单元(BIU);128控制逻辑单元132宏指令136微指令;134处理器总线;138寄存器(ECX/EDI);142快速REPSTOS微码常式;图2202、204、206、208、212、214、216、218、222、224、226步骤;图3A-图3D302、304、306、308、312、314、316、318、322、324、326、328、332、334、336、338、342、344、346、348、352、354步骤。具体实施例方式为使本发明的上述目的、特征和优点能更明显易懂,下文特举一优选实施例,并配合附图,作详细说明如下。加速REPSTOS指令(在此也称为重复数据串存储指令)的方法是在数据实际存储至快取列之前,分配存储区域的快取列。然而,本申请发明人认为,对于一长存储数据串所涉及到每一条(entire)快取列而言,来自系统存储器的快取列数据不被需要,因为处理器将存储至整条快取列。因此,不是执行一般总线周期来获得快取列的专用所有权,而是(图1的)微处理器100在(图1的)处理器总线134上执行零拍(zero-beat)读取无效(read-invalidate)异动(transaction),由在此异动不具有数据周期且不需要实际对存储器存取,因此较为快速。再者,由于微处理器100知道其将以来自REPSTOS指令的数据写入整条快取列,微处理器100可以早在实际存储操作之前执行此读取无效异动,使得存储指令到达(图1的)快取存储器124那时拥有该快取列。然而,获得一快取列的所有权而不具有来自存储器的数据,具有数据讹误和/或处理器停摆(hang)的可能性,所以为了利用读取无效异动,必须解决这些问题,如下文所述。举例来说,由于微处理器100将只具有快取列的所有权,但将不具有快取列的实际数据,因此,其不会执行读取无效异动,除非微处理器100得知其将存储至整条快取列。举另一例子来说明,REPSTOS指令具有其提供来被执行作为单一(individual)STOS指令的循环的结构性的要求。因此,假使一STOS指令导致异常时,结构状态必须反映(reflect)出那里发生异常。尤其是,寄存器ECX必须反映出有剩下多少个循环迭代(iterations)要来执行,且寄存器EDI必须反映出导致异常的存储器的地址。这大大地复杂化大量存储操作与读取无效异动的使用。7现在参阅图1,其表示根据本发明实施例的微处理器100。微处理器100包括指令快取存储器,用以快取程序指令,例如x86REPSTOS指令,也称为宏指令132。微处理器100也包括指令转译器104,其将宏指令132转译成为由微处理器100的多个执行单元112所执行的微指令。当指令转译器104遇到某些复杂的宏指令132(例如REPSTOS指令)时,指令转译器104转移控制权至微码单元118。微码单元118包括微码只读存储器(ROM)(未显示),用以存储包括多个微指令136的微码常式(routine),其实施宏指令132。特别是,微码单元包括一快速微码常式142用以实施REPSTOS宏指令132。微码常式142包括传统存储指令,以存储由REPSTOS指令所指定的数据。微码ROM也包括以传统方式来实施REPSTOS指令的常式(未显示),例如,不需使用攫取线操作(grablineoperation)(于下文说明)且不需使用与REPSTOS指令所指定比较起来较大量的存储操作。快速微码常式142也包括特定微指令136,称为攫取线操作,其命令微处理器100的存储器次系统112去指示微处理器100的总线接口单元126通过在总线134上执行零拍读取无效异动,去获取攫取线操作所指定的存储器地址所涉及的快取列的所有权。微处理器100与包括寄存器命名表(registeraliastable,RAT)106,其按程序顺序来接收来自指令转译器104与微码单元118的微指令,产生指令相依信息、并将指令发送至多个保留站108。当指令已准备执行时,保留站108发布指令至微处理器100的执行单元112。多个寄存器138包括微处理器100的结构寄存器与临时寄存器,用以提供运算元和指令至执行单元112。尤其是,寄存器138包括REPSTOS指令所使用的ECT寄存器与EDI寄存器。执行单元与存储器次系统112包括共同建立在一微处理器内的多个单元,例如,整数单元、浮点单元、SIMD单元、载入/存储单元、以及分支单元(未表示)。存储器次系统112包括数据快取存储器124、填充队列122、总线接口单元(businterfaceunit,BIU)126、以及控制逻辑单元128。填充队列122包括多个项目(entry)以维持接收自系统存储器的快取列,以分配进入至数据快取存储器124。存储器次系统112的操作于下文详细说明。微处理器100也包括引退单元(retireunit)124,其按程序顺序来引退指令,该程序顺序依照指令在微处理器100的重排缓冲器(reorderbuffer,ROB)116内的位置所指示。现在参阅图2,其表示图1的微处理器的操作流程图。流程开始在步骤202。在步骤202中,指令转译器104遇到一大量REPSTOS指令且转移控制权至快速REPSTOS微码常式142。在一实施例中,“大量”REPSTOS指令是指其ECX的值大于或等于128。在一实施例中,转移控制权至微码常式142将禁能微处理器100以避免中断,直到微码常式142明确地允许中断。在一实施例中,微码常式142包括一特定微操作,其在微操作执行期间内致能中断被调用,微码常式142也包括另一特定微操作,其在微操作的执行期间内禁能中断以避免被调用。流程继续进行至步骤204。在步骤204中,微码常式142在REPSTOS所指定的初始存储器位置上执行小量存储操作,直到其到达快取列边界(boundary)。与导致快取列边界的这些小量存储操作相关的区域在此称为“标头(head)”。这些小量存储操作为字节、字元、双字元、以及上至半个快取列尺寸的存储操作。在一实施例中,一快取列为64字节。流程继续进行至步骤206。在步骤206中,微码常式142在对应的存储操作之前执行N个攫取线操作,而这些对应存储操作是将填充攫取的快取列。在一实施例中,N为6,其稍微地小于填充队列122项目的总数。这些攫取线操作命令存储器次系统112去要求总线接口单元126,去为了攫取线操作所指定的存储器地址所涉及的一整条快取列而在处理器总线134上执行一读取无效异动。有利地,在处理器总线134读取无效异动(也称为零拍读取)将不存取系统存储器且不在处理器总线134上传送数据。这在处理器总线134上是更有效率的,其效率高于在未命中(miss)数据快取存储器124中且导致快取列填满的一存储操作,因为此存储操作需要在处理器总线134上进行一个异动,且需要存取系统存储器以读取快取列。然而,这需要微处理器100去保证其以有效数据(validdata)来填满快取列,这是因为来自系统存储器的有效数据无法读入微处理器100。特别的是,微处理器100必须保证异常处理程序(exception)与中断不会阻止每一攫取的快取列的填充。此外,在即将填充快取列的存储操作之前,每一攫取线操作被成功地执行,使得处理器总线134所需以执行与攫取线操作相关在总线134上的零拍读取异动的时间,可能部分重叠于介于攫取线操作与对应存储操作之间的其他指令执行。即是,微码常式142被设计来使得攫取线操作足够地处于其相关存储操作之前,以建立等到相关操作被存储器次系统112执行时,在总线134上读取无效异动将以被执行的高度可能性,这使得相关存储所涉及的快取列所有权将已获得,以使相关存储操作将命中(hit)数据快取存储器124。在一实施例中,总线接口单元126立即执行读取无效异动,即是,读取无效异动可能在攫取线操作由引退单元124所引退之前被执行。此外,例如依据分支指令为误预测(mispredicted)的判断或依据未命中数据快取存储器124的载入操作而反应执行的微处理器100管线的清除,不会终止预测性(speculatively)执行的攫取线操作。因此,为了避免不能填充攫取的快取列,微码常式142必须设计来保证一攫取线操作绝不会预测性的执行。流程继续进行至步骤208。在步骤208中,微码常式142执行足够大量多个存储操作(例如四个16字节存储操作)以填充一快取列,并执行一攫取线操作。一个“大量”存储操作是指长于REPSTOS指令的个别字节、字元、或双字元所指定的长度的存储操作。在一实施例中,一个大量存储操作大小为16字节。注意到,在步骤208之一提出的举例中所执行的这些存储操作将不会填充由步骤208的相同举例所执行的攫取线操作所攫取的快取列,而是将填充步骤208的一先前举例所执行的攫取线操作所攫取的一快取列。流程继续进行到判断步骤212中。在判断步骤212中,微码常式142判断是否剩下N个快取列来存储以满足REPSTOS指令,其中,N是在步骤206中预攫取的快取列的数量。假使是,流程继续进行至步骤218,否则流程继续进行至步骤214。在判断步骤214中,微码常式142判断其是否需要允许中断。在结构上,REPSTOS必须在其执行期间允许中断。在一实施例中,为了满足结构性的要求,每次46个数据快取列被写入时,微码常式142允许中断。在一实施例中,通过步骤208/212/214而由流程图说明的循环于微码常式142中展现(unrolled),以改善效能。假使是时候允许中断,流程继续进行至步骤216,否则,流程返回至步骤208。在步骤216中,微码常式142更新微处理器100的结构状态以反映其已执行多少个REPSTOS指令的STOS迭代。尤其是,微码常式142更新ECX值与EDI值以满足上述结9构性的要求。当伴随异常处理程序,根据一中断的调用,结构状态必须反映当中断发生时,微处理器100在REPSTOS指令执行的何处。除非中断被谨慎地处理,即只在受控时间上被允许,中断可导致错误的结构状态和/或停摆,其中,此停摆与不能填充其所有权已通过一零拍读取无效异动而获得的一快取列相关联。在提供一短暂窗口(window)给将发生的中断时,中断再次被禁能且流程循环回到步骤206以执行其他的预攫取操作。在判断步骤218,微码常式142执行大量存储操作,以填满在步骤206和/或208中由攫取线操作所攫取的最后N个快取列。流程继续进行至判断步骤222。在判断步骤222中,微码常式142判断是否剩余REPSTOS指令的字节以存储。假使是,流程继续进行至步骤224,否则流程继续进行至步骤226。在步骤224中,微码常式142执行多个小量存储操作,以完成存储REPST0S指令的最后字节(lastbytes)。在最后填满的快取列之后且与这些小量存储操作相关的区域在此称为尾端(tail)。流程继续进行至步骤226。在步骤226中,微码常式142更新结构状态(ECX/EDI)以反映REPST0S指令的完成。流程结束在步骤226。现在参阅图3A-图3D,其表示图1中微处理器100的操作流程图。流程开始在步骤302。在步骤302中,一攫取线操作(例如图2中步骤206或208所执行的攫取线操作)到达存储器次系统112,其检查此攫取线操作。在一实施例中,由在步骤206或208所执行的攫取线操作所指定的存储器地址指定了一存储器位置,其处于或接近快取列的末端(end),以为了致能存储器次系统112执行各种异常情况核对,而这些异常情况核对发生在快取列的末端或接近快取列的末端,但不会较接近于快取列的起始(beginning),例如分段限制冲突(segmentlimitviolations)或中断点。流程继续进行至判断步骤304。在判断步骤304中,存储器次系统112判断是否存在与攫取线操作有关的一异常情况。一异常情况可能包括但不限制以下几种在攫取线操作所指定的快取列内任何地方的一分段限制冲突;在包括快取列的存储器页面上的页面错误(pagefault);除错中断点;快取列的存储器特性(trait)为未知的(例如转译后备缓冲区(TLB)的未命中情况);页面不能被存储操作所使用(即页面表查找(pagetablewalk)尚未被执行以指示该页面是脏的(dirty));快取列的存储器特性是除了回写(write-back,WB)或写入组合(write-combine,WC)以外的。由于存储器次系统112硬件为了这些情况而核对,假使没有异常情况存在(以及存储器特性为WB),微码常式142有利地能以全速并伴随在对应大量存储操作之前甚至是跨越页面边界的攫取线操作而持续。假使一异常情况存在,流程继续进行至步骤328,否则流程继续进行至判断步骤306。在判断步骤306中,存储器次系统112判断快取列的存储器特性是否为写入组合。假使是,流程继续进行至步骤308,否则流程继续进行至步骤312。在步骤308中,存储器次系统112不执行(no-op)攫取线操作。换句话说,存储器次系统112不会执行读取无效异动(例如在步骤316中)且不会分配在数据快取存储器124或填充队列122内的一项目(例如在步骤314中)。此外,存储器次系统112不会将攫取线操作标记为异常处理程序。因此,在步骤208与218中执行的随后大量存储操作被发布且进入至微处理器100的写入组合缓冲器(未显示),且随后的攫取线操作也不执行任何10作业且不执行异常处理程序。因此,进入至存储器之一WC区域(region)的REPSTOS指令可能享有大量存储操作效能益处,即使其不享有攫取线的益处。流程结束在步骤308。在判断步骤312中,存储器次系统112判断快取列的存储器特性是否为回写。假使是,流程继续进行至步骤314,否则流程继续进行至步骤328。在步骤314中,存储器次系统112分配在数据快取列124的一项目以及填充队列122的一项目给被攫取的快取列。流程继续进行至步骤316。在步骤316中,总线接口单元126在总线134上执行零拍读取无效异动,以为了获得快取列的专用(exclusive)所有权而不需自系统存储器读取任何数据。流程继续进行至步骤318。在步骤318中,在图2的步骤208或218执行的存储操作到达存储器次系统112,且存储器次系统112将存储数据写入至数据快取存储器124中所分配出的快取列。流程继续进行至步骤322。在步骤322中,当步骤318的存储数据正写入至数据快取存储器124时,填充队列122的项目维持住存储数据已被写入至的有效字节的字节遮罩(bytemask)。字节遮罩识别出(identify)对于命中快取列的随后载入操作而言哪些字节是有效的。流程继续进行至步骤324。在步骤324中,假使一探测(snoop)操作命中与攫取线操作相关填充队列122的项目时,总线接口单元126重试(retry)该探测操作直到快取列完全地存储(fullypolulate)来自存储操作的有效数据。流程继续进行至步骤326。在步骤326中,一旦快取列的所有字节已被有效数据填满时,填充队列122的项目自己解除分配(deallocateitself),其导致快取列最后被引退至数据快取存储器124。流程结束在步骤326。在步骤328中,存储器次系统112不执行(no-op)攫取线操作。换句话说,存储器次系统112不会执行读取无效异动(例如在步骤316中)且不会分配在数据快取存储器124或填充队列122内的一项目(例如在步骤314中)。然而,存储器次系统112标记(mark)攫取线操作为异常处理程序。因此,在程序顺序中新于异常攫取线的多个指令被清除,例如在步骤208与218中执行的较新大量存储操作以及在步骤206与208中执行的较新攫取线操作。尤其是,存储器次系统112标记异常攫取线操作为内部的(internally)异常处理程序,而不是在结构性的异常处理程序,详细说明参考步骤332至348。流程继续进行至步骤332。在步骤332中,攫取线操作已准备好引退,且引退单元114检测到攫取线操作被标记为异常处理程序,因此引退单元114将较新于表示为异常处理程序的攫取线操作的所有指令清除,且将控制权转移至快速REPSTOS微码常式142的一异常处理程序处理常式(handler)0在一实施例中,存储器次系统112设定一位来指示(indicate)引起内部异常处理程序的一攫取线操作,且微码常式142读取此位以检测此情况。流程继续进行至步骤334。在步骤334中,微码异常处理程序处理常式检测到异常处理程序已由一攫取线操作所引起并以小量存储操作(若有的话)来填充“标头”的任何剩下部分。在一实施例中,在图2的步骤206中执行的攫取线操作在程序顺序中实际上处于在步骤204中执行的小量存储操作之前。因此,在标头已被完全地填充之前,步骤206的攫取线操作中的一个可能为异常处理程序。步骤继续进行至步骤336。在步骤336中,微码异常处理程序处理常式判断有多少快取列在最后执行的操作之前已准备被攫取线操作所攫取,即存在多少未被填充的快取列。微码异常处理程序处理常式接着通过执行大量存储操作来填充未被填充的快取列,相似在步骤208的大量存储操作。如上所讨论,存储器次系统112与微码常式142—直保证没有结构异常处理程序或中断发生(即控制权不会被转移至操作系统),直到结构状态为正确且由一攫取线操作所攫取的每一快取列被填充。流程继续进行至步骤338。在步骤338中,微码异常处理程序处理常式触发(tickle)身为攫取线操作的目标的快取列,且此攫取线操作引起了内部异常处理程序。即是,微码异常处理程序处理常式执行一指令,其指示存储器次系统112去实质上执行与一存储操作相关的功能,而不需实际上将存储数据写入至存储器。尤其是,存储器次系统112必须核对在一存储操作上执行的所有的异常处理程序。举例来说,异常处理程序核对可能包括但不限制于其中一分段限制冲突、页面错误、侦错(debug)中断点、快取列为非可写入的(non-writeable)。假使必要获得与快取列相关的页面表信息(包括存储器特性信息),此触发指令将执行一页面表查找。流程继续进行至判断步骤342。在判断步骤342中,存储器次系统112判断在步骤338中执行的触发是否引发结构异常处理程序情况。假使是,流程继续进行至步骤354,否则继续进行至步骤344。在步骤344中,微码异常处理程序处理常式载入快取列的存储器特性。流程继续进行至判断步骤346。在判断步骤346中,微码异常处理程序处理常式检查载入的存储器特性。假使此存储器特性为回写(WB)或写入组合(WC),流程继续进行至步骤352,否则流程继续进行至步骤348。在步骤348中,微码异常处理程序处理常式更新结构状态(例如ECX/EDI)以反映最后引退的存储操作、清除异常处理程序、并回复(revert)至慢速数据串存储模式(slowstringstoremode)0即是,微码异常处理程序处理常式将控制权转移至一般执行REPSTOS指令的微码单元118内的微码常式(未表示),即在具有REPSTOS指令所指定的尺寸(相对于大尺寸的字节、字元、或双字元)的STOS操作循环内且不需使用攫取线操作,且允许在每一STOS操作之后的中断。在判断步骤304与346中的这些核对有益地允许微处理器100器执行快速数据串存储操作,以在总线134上执行具有由原始REPSTOS指令所指定的尺寸的写入,且不需对具有非可快取特性的存储器区域进行快取操作。举例来说,存储器映射式输出入(memory-mapped1/0)装置可能被映射至在一具有非可快取特性的存储器区域中的一个位置,这是因为(1)程序开发者(programmer)实际上要存储走出至总线而不是至快取存储器以及(2)程序开发者实际上要此输出入装置以程序所指定的尺寸存储来被写入(例如对输出入装置上字节尺寸的控制寄存器的字节尺寸写入)而不是一较大量的存储操作。因此,假使REPST0S由一可快取区域(于其中允许从事大量存储操作)转变至一非可快取区域时(于其中不被允许从事大量存储操作),在此期望的微处理器100有益地停止从事快取/大量写入,且从事非可快取/小量写入。流程结束在步骤348。在步骤352中,微码异常处理程序处理常式持续在快速数据串存储模式(fast12stringstoremode)中。即是,流程返回至图2的步骤206。流程结束在步骤352。在步骤354中,微码异常处理程序处理常式结构异常处理程序导致流程转移至微码常式142内的另一异常处理程序处理常式,其更新结构状态、清除异常处理程序情况、且执行与在步骤348中由慢速数据串存储编码所执行的存储相似的多个小量存储操作,直到这些小量存储操作中的一个重新引起上述触发所导致的结构异常处理程序。尤其是,为了保证允许将数据存储至介于引起异常处理程序触发的快取列的起点与实际引起异常处理程序的快取列内的位置之间的存储器区域,此异常处理程序处理常式不会允许中断。当结构异常处理程序处理常式是根据小量存储操作而引发(invoke)时,其将正常地操作(handle)结构异常处理程序,而这是可被接受的,是因为微码异常处理程序处理常式先前更新结构状态且任何重要的被攫取快取列已被填充。流程结束在步骤354。由图3可得知且如上所讨论,为了接收来自图3的效能益处,适当地在存储操作为结构上的之前(即适当地在实际引退的存储操作之前),攫取线操作在总线134上执行。假使存储器次系统112检测到一攫取线可引起异常情况(abnormalcondition)(例如异常处理程序或其他上述指明的情况),存储器次系统112使此攫取线产生一内部异常处理程序,其致能微码异常处理程序处理常式去判断它是引起异常处理程序的攫取线,使得异常处理程序处理常式可进行特殊攫取线处理编码。为了致能重要的攫取线被存储填充(例如在步骤336中),存储器次系统112产生此内部异常处理程序,而不是一结构异常处理程序。否则,可能发生机器停摆(machinehang)。因此,假使整体REPSTOS指令进入至WB存储器区域且不存在一异常情况,此处的微处理器100的实施例可能以有效地最大速率来有益地存储REPSTOS指令所指定的整体数据串(除了标头与尾端部分以外),而此该最大速率下,处理器总线134与存储器次系统可通过利用攫取线与大量存储操作来调和(accommodate),且在整体数据串长度中不需减慢速度。虽然已叙述攫取线操作用来执行快速数据串存储(REPST0S)的实施例,但可考虑使用攫取线操作在来执行快速数据移动(REPM0VS)的实施例,即充分地在与MOVS操作相关的存储之前来执行攫取线操作以加速REPMOVS的效能,以导致当攫取线操作以被执行时能命中快取存储器。本发明的不同实施例已于本文叙述,但本领域技术人员应能了解这些实施例仅作为范例,而非限定于此。本领域技术人员可在不脱离本发明的精神的情况下,对形式与细节上做不同的变化。例如,软件可致能本发明实施例所述的装置与方法的功能、组建(fabrication)、建模(modeling)、仿真、描述(description)、和/或测试。可通过一般程序语言(C、C++)、硬件描述语g(HardwareDescriptionLanguages,HDL)(包括VerilogHDL、VHDL等等)、或其他可利用的程序语言来完成。此软件可配置在任何已知的计算机可使用介质,例如半导体、磁盘、或光盘(例如CD-R0M、DVD_R0M等等)。本发明所述的装置与方法实施例可被包括于半导体知识产权内核,例如微处理器内核(以HDL来实现),并转换成集成电路产品的硬件。此外,本发明所述的装置与方法可实现为硬件与软件的结合。因此,本发明不应局限于所公开的实施例,而是依后附的申请专利范围与等同实施所界定。特别是,本发明可实施在使用于一般用途计算机中的微处理器装置内。最后,本发明虽以优选实施例公开如上,然其并非用以限定本发明的范围,本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视所附权利要求书所界13定者为准。权利要求一种微处理器,通过一总线耦接一存储器,该微处理器包括一快取存储器;以及一攫取线指令,用以指定涉及该存储器的一快取列的一存储器地址,其中,该攫取线指令指示该微处理器在该总线上开始执行一零拍读取无效异动以获得该快取列的所有权;其中,假使该微处理器判断对该快取列的一存储操作会引起异常处理程序,当该微处理器执行该攫取线指令时,该微处理器放弃开始执行在该总线上的该零拍读取无效异动。2.如权利要求1所述的微处理器,还包括一微码单元,包括一结构指令,该结构指令指示该微处理器重复地将一数据串存储至在该结构指令所指定的该存储器中的多个相邻位置;其中,在该存储器中的这些相邻位置共同包括多个快取列,该微码单元包括用来指定多个存储器地址的多个攫取线指令,而这些存储器地址与这些快取列有关;以及其中,该微码单元也包括多个存储指令,且这些存储指令以该数据串填充这些快取列。3.如权利要求2所述的微处理器,其中,该微码单元更用来检测在引退一或多个这些存储指令之前该微处理器清除的一情况,使得其所有权通过该零拍读取无效异动而由该微处理所获得的一或多个这些快取列,没有按照被清除的这些存储指令来以该数据串来填充。4.如权利要求3所述的微处理器,其中,该微码单元更用依据该情况的检测而以该数据串来填充,没有按照被清除的这些存储指令来以该数据串来填充的一或多个这些快取列。5.如权利要求4所述的微处理器,其中,该微码单元还根据该情况的检测而将该数据串存储至该结构指令所指定的该存储器中的这些相邻位置的一标头部分,且该标头部分包括在该存储器中由该结构指令所指定的第一位置开始上至但不包括这些快取列中第一快取列的多个位置。6.如权利要求3所述的微处理器,其中,该微处理器根据在这些攫取线指令中用来指示对这些快取列的一快取列的一存储会引起异常处理程序的一攫取线指令,来清除该一或多个这些存储指令;以及其中,被清除的这些存储指令在程序顺序上新于在这些攫取线指令中用来指示对这些快取列中的一快取列的一存储会引起异常处理程序的该攫取线指令。7.如权利要求6所述的微处理器,其中,假使对这些快取列的该快取列的该存储将引起一结构异常处理程序,该微码单元将该数据串存储至这些快取列的该一快取列的多个相邻位置,直到该结构异常处理程序产生。8.如权利要求7所述的微处理器,其中,该结构指令指定重复存储至该存储器内这些相邻位置的该数据串的一数据串尺寸,且该微码单元通过多个数据串尺寸存储指令来将该数据串存储至这些快取列的该一快取列的多个相邻位置,直到该结构异常处理程序产生。9.如权利要求2所述的微处理器,其中,该微码单元配置来使得这些攫取线指令短暂地处于这些存储指令之前,以建立在这些存储指令各自试图以该数据串填充该快取列之前该微处理器已获得该快取列的优先权的高度可能性。10.如权利要求2所述的微处理器,其中,该结构指令指定重复存储至该存储器内的这些相邻位置的该数据串的一尺寸,且每一该存储指令写入多于该结构指令所指定的该数据串的该尺寸的多个字节。11.如权利要求2所述的微处理器,其中,该微处理器还保证在该结构指令的执行期间内,控制不会转移至系统软件,直到其所有权通过该零拍读取无效异动而由该微处理器所获得的这些快取列的每一快取列以该数据串来填充。12.如权利要求1所述的微处理器,其中,假使该微处理器判断该快取列具有一写入组合存储器特性,当该微处理器执行该攫取线指令时,该微处理器更放弃开始执行在该总线上的该零拍读取无效异动。13.如权利要求1所述的微处理器,其中,假使该快取列的存储器特性不是写入组合也不是回写,当该微处理器执行该攫取线指令时,该微处理器更放弃开始执行在该总线上的该零拍读取无效异动并产生一非结构异常处理程序。14.如权利要求1所述的微处理器,其中,假使该攫取线指令的该存储器地址未命中在该微处理器的一转译后备缓冲区,当该微处理器执行该攫取线指令时,该微处理器更放弃开始执行在该总线上的该零拍读取无效异动并产生一非结构异常处理程序。15.如权利要求1所述的微处理器,其中,假使一页面表查找尚未被执行给包括该攫取线指令的该存储器地址所涉及的该快取列的一存储器页面,当该微处理器执行该攫取线指令时,该微处理器更放弃开始执行在该总线上的该零拍读取无效异动并产生一非结构异常处理程序。16.如权利要求1所述的微处理器,还包括一微码单元,用来实施一结构指令,该结构指令指示该微处理器将一数据串由该存储器的一第一区域移动至该存储器的一第二区域,该存储器的该第二区域共同地包括多个快取列;其中,该微码单元包括用来指定多个存储器地址的多个攫取线指令,而这些存储器地址与这些快取列有关;以及其中,该微码单元也包括多个存储指令,且这些存储指令以一部分的该数据串来填充这些快取列。17.一种执行方法,由一微处理器执行,该微处理器通过一总线耦接一存储器,执行方法包括接收一攫取线指令以执行,该攫取线指令指定涉及该存储器的一快取列的一存储器地址;根据该攫取线指令的接收,判断对该快取列的一存储操作是否会引起异常处理程序;假使对该快取列的一存取不会引起异常处理程序,开始执行该总线上的一零拍读取无效异动以获得该快取列的所有权;以及假使对该快取列的一存取会引起异常处理程序,则放弃开始执行在该总线上的该零拍读取无效异动。18.如权利要求17所述的执行方法,还包括对一结构指令进行解码,该结构指令指示该微处理器重复地将一数据串存储至在该结构指令所指定的该存储器中的多个相邻位置;以及根据该结构指令的解码,执行该微处理器的一微码单元,其中,该微码单元包括用来指定多个存储器地址的多个攫取线指令,而这些存储器地址与这些快取列有关;其中,该微码单元也包括多个存储指令,且这些存储指令以该数据串填充这些快取列。19.如权利要求17所述的执行方法,还包括检测在引退一或多个这些存储指令之前该微处理器清除的一情况,使得其所有权通过该零拍读取无效异动而由该微处理所获得的一或多个这些快取列,没有按照被清除的这些存储指令来以该数据串来填充。20.如权利要求19所述的执行方法,还包括依据该情况的检测,而以该数据串来填充没有按照被清除的这些存储指令来以该数据串来填充的一或多个这些快取列。21.如权利要求19所述的执行方法,其中,该微处理器根据在这些攫取线指令中用来指示对这些快取列的一快取列的一存储会引起异常处理程序之一攫取线指令,来清除该一或多个这些存储指令;以及其中,被清除的这些存储指令在程序顺序上新于在这些攫取线指令中用来指示对这些快取列的一快取列的一存储会引起异常处理程序的该攫取线指令。22.如权利要求21所述的执行方法,还包括判断对这些快取列的该一快取列的该存储将引起一结构异常处理程序;以及根据判断对这些快取列的该一快取列的该存储将引起该结构异常处理程序的步骤,该数据串存储至这些快取列的该一快取列的多个相邻位置,直到该结构异常处理程序产生。23.如权利要求18所述的执行方法,其中,该微码单元配置来使得这些攫取线指令短暂地处于这些存储指令之前,以建立在这些存储指令各自试图以该数据串填充该快取列之前该微处理器已获得该快取列的优先权的高度可能性。24.如权利要求18所述的执行方法,还包括保证在该结构指令的执行期间内,控制不会转移至系统软件,直到其所有权通过该零拍读取无效异动而由该微处理所获得的这些快取列的每一快取列以该数据串来填充。25.如权利要求17所述的执行方法,还包括假该快取列具有一写入组合存储器特性,当执行该攫取线指令时,放弃开始执行在该总线上的该零拍读取无效异动。26.如权利要求17所述的执行方法,还包括假使该快取列的存储器特性不是写入组合也不是回写,当执行该攫取线指令时,放弃开始执行在该总线上的该零拍读取无效异动并产生一非结构异常处理程序。27.如权利要求17所述的执行方法,还包括假使该攫取线指令的该存储器地址未命中在该微处理器的一转译后备缓冲区,当执行该攫取线指令时,放弃开始执行在该总线上的该零拍读取无效异动并产生一非结构异常处理程序。28.如权利要求17所述的执行方法,还包括假使一页面表查找尚未被执行给包括该攫取线指令的该存储器地址所涉及的该快取列的一存储器页面,当执行该攫取线指令时,放弃开始执行在该总线上的该零拍读取无效异动并产生一非结构异常处理程序。29.如权利要求17所述的执行方法,还包括对一结构指令进行解码,该结构指令指示该微处理器将一数据串由该存储器的一第一区域移动至该存储器的一第二区域,且该存储器的该第二区域共同地包括多个快取列;以及根据对该结构指令进行解码的步骤,执行该微处理器的一微码,其中,该微码包括用来指定多个存储器地址的多个攫取线指令,而这些存储器地址与这些快取列有关;其中,该微码也包括多个存储指令,且这些存储指令以一部分的该数据串来填充这些快取列。全文摘要微处理器及其执行方法。该微处理器包括一快取存储器以及一攫取线指令。攫取线指令用以指定涉及该存储器的一快取列的一存储器地址。攫取线指令指示微处理器在总线上开始执行一零拍读取无效异动(zero-beatread-invalidatetransaction)以获得该快取列的所有权。假使微处理器判断对快取列的一存储操作会引起异常处理程序(exception),当微处理器执行攫取线指令时,微处理器放弃开始执行在总线上的零拍读取无效异动。文档编号G06F9/312GK101916181SQ20101026034公开日2010年12月15日申请日期2010年8月20日优先权日2009年8月28日发明者G·葛兰·亨利,柯林·艾迪,罗德尼·E·虎克申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1