CN103488464B - 微处理器以及微处理器操作方法 - Google Patents
微处理器以及微处理器操作方法 Download PDFInfo
- Publication number
- CN103488464B CN103488464B CN201310460683.4A CN201310460683A CN103488464B CN 103488464 B CN103488464 B CN 103488464B CN 201310460683 A CN201310460683 A CN 201310460683A CN 103488464 B CN103488464 B CN 103488464B
- Authority
- CN
- China
- Prior art keywords
- working storage
- instruction
- microprocessor
- section working
- loaded
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000003860 storage Methods 0.000 claims abstract description 288
- 230000001052 transient effect Effects 0.000 claims description 9
- 230000007717 exclusion Effects 0.000 claims description 2
- 239000008186 active pharmaceutical agent Substances 0.000 abstract description 91
- 230000008569 process Effects 0.000 abstract description 11
- 230000001419 dependent effect Effects 0.000 description 20
- 238000007689 inspection Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005096 rolling process 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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, look ahead
- G06F9/3824—Operand accessing
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Abstract
一种微处理器以及微处理器操作方法,适用于x86架构下的微处理器处理存储器存取指令,存储器存取指令指示载入/储存信息由/至微处理器的x86区段暂存器的存储器区段,x86指令指示微处理器载入新值至x86区段暂存器,而x86指令尚未被微处理器引退,微处理器操作方法包括:判断该x86区段暂存器是否为多个DS/ES?x86区段暂存器的一个;若是,则:发送存储器存取指令以利用DS/ES?x86区段暂存器的目前值而不是新值来执行;以及若不是,则:等候发送存储器存取指令直到存储器存取指令可利用新值而不是非DS/ES?x86区段暂存器的目前值来执行。
Description
本申请是申请日为2010年2月5日、申请号为201010112024.8、发明名称为“乱序执行微处理器及提升效能的方法、执行方法”的申请的分案申请。
技术领域
本发明有关于微处理器领域的应用,特别是有关于微处理器领域的暂存器重新命名的应用。
背景技术
计算机程序设计者将一计算机程序内的指令按照一特定的顺序安排,通常这个特定顺序称为程序顺序。计算机程序设计者通过执行计算机程序的微处理器,根据程序顺序,并依据如何执行指令的特定规则以执行计算机程序里的各项指令。举例来说,于第一个例子中,假设指令B的程序顺序是于指令A之后,并且假设指令A写入至微处理器的一暂存器,指令B从同一暂存器中读取数据。于此例中,程序设计者通过微处理器,利用指令A所写入的数值来执行指令B,而不是利用在指令A将其数值写入至暂存器之前在暂存器中的数值。于第二个例子中,假设指令A由暂存器中读取数据且指令B写入至暂存器。于此例中,程序设计者是通过微处理器,利用在指令B将其数值写入至暂存器之前在暂存器中的数值来执行指令A。于第三个例子中,假设指令A以及指令B皆将数据写入至暂存器,指令C的程序顺序在指令B之后,并且指令C读取暂存器的数据。于此例中,程序设计者是通过微处理器,利用由指令B写入的数值来执行指令C,而不是指令A写入的数值。
一种可以使微处理器根据上述程序顺序的规则执行的方法是简单地根据程序顺序来执行指令。然而,许多较先进的微处理器,特别是包括多个执行单元的超纯量管线微处理器(superscalarpipelinedmicroprocessor),可在一个单一时脉周期中发送多个指令,并且可通过乱序(out-of-order),亦即不依照程序顺序来执行指令,以实现效能的提升。乱序执行特别利于在指令流中需要较长的时间来执行的特定的指令(通常为长延迟指令,例如浮点指令或存储器读取指令)的处理。
当一个有序(in-order)执行微处理器遇到(encounter)一长延迟指令时,执行单元可能在多个时隙(timeslot)中(在一些情况下可为100个时隙)保持闲置(idle),用以等待长延迟指令完成。然而,在等待长延迟指令完成的同时,一个乱序执行微处理器试着去找到可被执行单元所执行的指令。这些指令通常为独立指令,因为这些指令可以在不违反任何与程序顺序有关的规则(例如上述讨论三种)的情况下,不依照与长延迟指令有关的程序顺序加以执行。相反地,有序执行微处理器必须等候执行与任何程序顺序出现在之前的指令(例如长延迟指令)相关的指令。因此,可以发现一乱序执行超纯量管线微处理器的多个执行单元的效能利用,可能受限于微处理器可在程序的指令流中找到的独立指令的个数。
一种应用在乱序执行超纯量管线微处理器上,用以增加指令流的独立指令的数量的现有技术为暂存器重新命名。特别地,暂存器重新命名可以帮助在上面第二以及第三例子中的指令A以及指令B彼此独立,使得微处理器可以不照顺序执行指令A以及指令B。微处理器包括结构暂存器(architecturalregister),例如程序指令定义的运算元的来源暂存器或存放结果的目的暂存器。举例来说,一个x86结构微处理器的整数结构暂存器包括EAX、EBX、ECX、EDX、ESI、EDI、ESP以及EBP暂存器等。一个具有暂存器重新命名功能的微处理器包括比结构暂存器的数量更多的实体暂存器。举例来说,一结构定义为8个整数暂存器的x86微处理器可能具有32个实体暂存器,其可重新命名8个结构暂存器。当微处理器遇到定义这些结构暂存器中的一暂存器为其目的暂存器的一指令时,重新命名硬件将结构暂存器“重新命名”为实体暂存器中其中之一。当微处理器执行此指令以产生结果时,微处理器便将结果写入至实体暂存器。此外,假设一个指令定义结构暂存器中其中一者为一运算元的来源,重新命名硬件判断与目前指令相依(关)的指令,该指令是在程序顺序中将一结果写入至定义好的来源结构暂存器的最新的指令但较早于目前指令。重新命名硬件将致使目前指令不去参考结构暂存器,而是去参考与目前指令相关的结构暂存器被重新命名后的实体暂存器。如此一来,将使得目前指令从适当地重新命名的实体暂存器中接收其来源运算元。
然而,通过暂存器重新命名来提升效能可能会造成硬件芯片(die)空间、电源以及复杂度的大量增加。在许多暂存器重新命名微处理器上,这是存在的事实。因此,需要一种可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供一良好平衡的解决方法。
发明内容
有鉴于此,本发明提供一种可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供一良好平衡的解决方法。
本发明还提供一种微处理器操作方法,适用于x86架构下的一微处理器处理一存储器存取指令,该存储器存取指令指示由该微处理器的一x86区段暂存器的一存储器区段载入数据、或者储存数据至该微处理器的一x86区段暂存器的一存储器区段,一x86指令指示该微处理器载入一新值至该x86区段暂存器,而该x86指令尚未被该微处理器引退,该微处理器操作方法包括:判断该x86区段暂存器是否为多个DS/ESx86区段暂存器的一个;若该x86区段暂存器为所述DS/ESx86区段暂存器的一个,则:发送该存储器存取指令以利用该DS/ESx86区段暂存器的一目前值而不是该新值来执行;以及若该x86区段暂存器并非为该DS/ESx86区段暂存器,则:等候发送该存储器存取指令直到该存储器存取指令可利用该新值而不是一非DS/ESx86区段暂存器的一目前值来执行。
本发明还提供一微处理器,用于x86架构下处理一存储器存取指令,该存储器存取指令指示由该微处理器的一x86区段暂存器的一存储器区段载入数据、或者储存数据至该微处理器的一x86区段暂存器的一存储器区段,一x86指令指示该微处理器载入一新值至该x86数据区段暂存器,而该x86指令尚未被该微处理器引退,该微处理器包括:一微码,引发以回应该x86指令,且该x86指令指示该微处理器载入该新值至该x86区段暂存器;其中,若该x86区段暂存器并非为一DS/ESx86区段暂存器,则:该微码执行一第一指令用以载入该新值至一非DS/ESx86区段暂存器,以致使该存储器存取指令利用该新值而不是该非DS/ESx86区段暂存器的一目前值执行;其中,若该x86区段暂存器为该DS/ESx86区段暂存器,则:该微码执行一第二指令用以比较该新值与该DS/ESx86区段暂存器的一目前值,其中若该目前值等于该新值时,则该微码不执行载入该新值至该DS/ESx86区段暂存器的指令,以致使该存储器存取指令利用该DS/ESx86区段暂存器的该目前值而非该新值执行,否则执行一第三指令以及一第四指令,该第三指令用以载入该新值至该DS/ESx86区段暂存器,而该第四指令用以将该存储器存取指令清除并利用载入至该DS/ESx86区段暂存器的该新值重新执行该存储器存取指令。
本发明还提供一微处理器,用以执行一区段暂存器载入指令以及一存储器存取指令,该区段暂存器载入指令将一新值载入至一区段暂存器,以及该存储器存取指令存取一区段暂存器所描述的一存储器区段,其中该存储器存取指令的程序顺序处于该区段暂存器载入指令之后,该微处理器包括:多个区段暂存器,包括该区段暂存器,其中该微处理器不包括用于所述区段暂存器的一暂存器重新命名硬体;以及多个执行单元,用以:从该区段暂存器撷取一目前值;利用所撷取到的该目前值执行该存储器存取指令;以及撷取该目前值后,判断该目前值是否等于该新值;其中,若该新值等于该目前值,则:该微处理器不载入该新值至该区段暂存器;以及其中,若该新值不等于该目前值,则:该微处理器载入该新值至该区段暂存器;从该区段暂存器撷取该新值;以及利用从该区段暂存器所撷取的该新值重新执行该存储器存取指令。
本发明还提供一种微处理器操作方法,适用于具有多个区段暂存器的一微处理器,其中所述区段暂存器包括互斥的第一子集合以及第二子集合,该微处理器操作方法包括:遇到指示所述区段暂存器中的一区段暂存器载入一新值的一指令;若该区段暂存器于该第一子集合中,则:将该新值直接载入至该区段暂存器中;以及若该区段暂存器于该第二子集合中,则:于该新值不等于该区段暂存器中所储存的一目前值时,将该新值载入至该区段暂存器中;以及于该新值等于该区段暂存器中所储存的该目前值时,不载入该新值至该区段暂存器。
本发明上述方法可以通过程序码方式收录于实体介质中。当程序码被机器载入且执行时,机器变成用以实行本发明的装置。
本发明可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供良好的平衡。
附图说明
图1显示一依据本发明实施例的微处理器的示意图。
图2至图4显示依据本发明实施例的图1的微处理器的操作流程示意图。
附图中符号的简单说明如下:
100:微处理器
102:指令快取
104:指令转译器
106:相依性检查单元
108:保留站(RS)
112:载入DS/ES暂存器微码程序
114:执行单元
116:微码只读存储器
118:重排序缓冲器(ROB)
122:载入非DS/ES暂存器微码程序
124:发送逻辑单元
128:暂时暂存器
132:DS/ES暂存器
134:比较器
138:区段暂存器
142:宏指令
144:微指令
202~208:执行步骤
302~308:执行步骤
402~412:执行步骤。
具体实施方式
为使本发明的上述和其他目的、特征和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。
图1显示依据本发明实施例的微处理器100。于本实施例中,微处理器100的宏结构为一x86宏结构。一微处理器如果能正确地执行大部分被设计在一x86微处理器上执行的应用程序,则此微处理器被称为具有一x86宏结构。若得到一个应用程序预期的结果时,该应用程序是被正确地执行。特别地,微处理器100可执行x86指令集中的指令并包括x86使用者可视暂存器(user-visibleregister)集。
x86使用者可视暂存器集包括区段暂存器(segmentregister)138,亦即,CS、DS、ES、FS、GS以及SS暂存器。区段暂存器138被程序用来定义(specify)不同的存储器区段以及其属性,例如基地址(baseaddress)、大小、特权级(privilegelevel)、预设操作大小、可供系统软件所使用、读/写/执行能力、是否存在存储器中等。存取存储器的指令可取决于区段暂存器138的值。也就是说,为了能够适当地执行存储器存取指令,微处理器100必须存取区段暂存器138的值,以决定相关存储器区段的属性。
每一x86区段暂存器138在区段暂存器138的一使用者可视部分储存有一16位选择器(selector)以及在区段暂存器138的一隐藏部分(亦即非使用者可视部分)储存有一64位区段描述符(descriptor)。选择器为储存在系统存储器中的描述符表(如全域描述符表(globaldescriptortable,GDT)或区域描述符表(localdescriptortable,LDT))的一索引。描述符描述存储器区段,亦即,定义其属性,并且其为微处理器中由选择器值所索引的GDT或LDT描述符表项目(entry)的一区域性备份。x86指令集包括可允许一程序载入区段暂存器(例如,LDS,LES,LFS,LGS,LSS,POPsegment_register以及MOVsegment_register)的指令。这些指令定义一个运算元,其为欲载入至区段暂存器138的选择器的16位选择器值。除了根据前述指令中的其中一指令将新的选择器值载入至区段暂存器138之外,微处理器也由新的选择器值所索引的GDT或LDT项目中读取描述符,并将描述符载入至区段暂存器138。
为了减少微处理器100的电力消耗以及复杂度,微处理器100并不包括用以重新命名区段暂存器138的暂存器重新命名硬件。也就是说,微处理器100不包括提供执行区段暂存器138的暂存器重新命名所需的特定元件,例如相关重新命名表(relevantrenamingtable)、得分板项目(scoreboard)、相依性比较器(dependencycomparator)以及转送总线(forwardingbus),即使微处理器100需包括这些元件以执行其他结构暂存器(例如在通用整数、浮点数以及多介质暂存器集里的暂存器)的暂存器重新命名。因此,为了确保微处理器100可产生正确的程序结果,若微处理器100尚未将较旧的用以将一数值载入至一区段暂存器138的指令结果写回时,微处理器100将依序(serialize)执行任何与区段暂存器载入指令相关的较新指令,亦即使用区段暂存器138作为一来源运算元的较新指令,其中上述微处理器中比上述区段暂存器载入指令更旧的指令是指于上述区段暂存器载入指令之前被提取的指令。于一实施例中,微处理器100依序执行一指令是通过等到该指令成为微处理器100中最旧的指令时,才发送该指令加以执行,亦即,等到所有较旧的指令都被引退(retired)时。本领域技术人员可由上述得知,如此将使得与区段暂存器载入指令相关的较新指令的效能降低。
下表一显示一示范的程序片段,用以说明前述的相依性情形。
表一
(1)LFSEBX
…
(2)MOVFS:[mem],EAX
表一的程序中包括一个x86LFS指令(将EBX暂存器的内容载入至FS区段暂存器以及将所选取的区段描述符由适当的描述符表中载入至区段暂存器的隐藏部分),并且按照一程序顺序(尽管不一定要是连续地)接着一将EAX暂存器的内容储存至一存储器区段里的一存储器位置的x86MOV指令,其中该存储器区段由FS区段暂存器描述符所描述,如组合语言码中的区段跨越标记(segmentoverridenotation)所指示。第(2)行中的MOV指令是相依于第(1)行中的LFS指令,因为MOV指令使用由LFS指令所写入的FS区段暂存器描述符值。
然而,有益地,发明人观察各种程序,观察当程序执行将一新值载入至DS或ES区段暂存器的一指令,特别是新值频繁地与旧值相同时的情形。观察结果发现,依据本发明实施例的微处理器100不会使与一DS/ES载入指令相依的指令依序执行。微处理器100“预测”DS/ES载入指令所载入的新的DS/ES值将与旧的DS/ES值相同。也就是说,微处理器100在无须等待接收DS/ES载入指令中的新值的情形下,允许发送相依指令以执行并且使用DS/ES暂存器132中的旧值。为了检查此预测以确保微处理器100产生正确的程序结果,微处理器100在允许使用旧的DS/ES值的相依指令更新结构状态之前,也会检查确认预测结果正确,亦即新值等于旧值。若新值不等于旧值时,在将新值载入至DS/ES区段暂存器之后,微处理器100清除(flush)管线中的相依指令,使得这些相依指令利用新值重新执行。因此,微处理器100可以称为预测地执行(speculativelyexecute)相依指令。
下表二显示一示范的程序片段,用以说明前述的情形,其中微处理器100是通过预测一个较旧的区段暂存器载入指令将写入与ES暂存器的目前值相同的值至ES暂存器,以预测地执行一使用ES暂存器的相依存储器存取指令。
表二
(3)LESEBX
…
(4)MOVES:[mem],EAX
表二的程序片段是类似于表一的程序片段,差别在于其包括ES区段暂存器,而不是FS区段暂存器。表二的程序包括一个x86LES指令(将EBX暂存器的内容载入至ES区段暂存器),并且按照一程序顺序(尽管不一定要是连续地)接着一将EAX暂存器的内容储存至一存储器区段里的一存储器位置的x86MOV指令,其中该存储器区段由ES区段暂存器描述符所描述,如组合语言码中的区段跨越标记所指示。第(4)行中的MOV指令是相依于第(3)行中的LES指令,因为MOV指令使用由LES指令所写入的ES暂存器描述符值。
参考图1,微处理器100包括一指令快取102,耦接至一指令转译器104(亦可称为指令解码器);一相依性检查单元106,耦接至指令转译器104;一微码只读存储器116,耦接至指令转译器104以及相依性检查单元106;一保留站(reservationstation,RS)108,耦接至相依性检查单元106;发送逻辑单元124(在一实施例中,发送逻辑单元为一指令排程器(instructionscheduler)),耦接至保留站108;执行单元114,其包括一比较器134,耦接至保留站108;区段暂存器138(亦可称为结构区段暂存器),其包括DS/ES暂存器132,耦接至执行单元114;一暂时暂存器128(非结构暂存器),耦接至执行单元114以及区段暂存器138;以及一重排序缓冲器(reorderbuffer,ROB)118,耦接至相依性检查单元106、发送逻辑单元124以及执行单元114。于一实施例中,执行单元114包括一执行存储器存取指令的载入/储存单元(未绘示)。载入/储存单元利用在区段暂存器138中的区段描述符值以执行存储器存取指令。指令快取102由系统存储器(未绘示)中快取包括存储器存取指令以及载入区段暂存器138的程序指令。
微处理器也包括一指令转译器104,用以接收来自指令快取102的指令142。于一实施例中,这些指令可视为宏指令(macroinstruction)142,因为这些指令是来自微处理器100的宏指令集(例如x86结构指令集)的指令。指令转译器104将宏指令142转译为微指令144,其中微指令144为微处理器100的微结构的微指令集的指令。特别地,指令转译器104将用以存取存储器的宏指令142转译成与一区段暂存器载入指令相依的载入/储存微指令。
微处理器100也包括一微码只读存储器(microcodeROM)116,用以储存微码程序(microcoderoutine)。本发明不限定于微码只读存储器116,于另一实施例中,亦可用其他储存装置替代。一般而言,微码程序包括可实现载入一区段暂存器138的宏指令142的载入DS/ES暂存器微码程序112以及载入非DS/ES暂存器微码程序122。微处理器100的一微定序器(microsequencer)(未绘示)撷取载入DS/ES暂存器微码程序112以及载入非DS/ES暂存器微码程序122的指令,以提供给微处理器100管线的下一阶段。请参照图2,用以说明载入DS/ES暂存器微码程序112、载入非DS/ES暂存器微码程序122的操作。
微处理器100进行一乱序执行。亦即,执行单元114可不依照原有的程序顺序执行指令。特别地,相依性检查单元106以预设在ROB118中的一特定顺序接收来自指令转译器104的微指令144,因此指令可依据此特定顺序引退。然而,执行单元114也可不依照此顺序执行微指令144。因此,依据本发明(例如,如下将描述的图3的步骤308),一个与原有的程序顺序中的旧DS/ES载入指令所写入DS/ES暂存器132的值相依的存储器存取指令,可能实际上由执行单元114在旧DS/ES载入指令写入新值至DS/ES暂存器132之前被执行。
请参照图2,其是显示依据本发明实施例的图1中微处理器100的操作流程图。
于步骤202,图1的指令转译器104遇到一个载入区段暂存器138的宏指令142,例如前述表一第(1)行的LFS指令或表二第(3)行的LES指令。接着执行判断步骤204。
于判断步骤204,指令转译器104判断目的区段暂存器是否为DS或ES暂存器。若目的区段暂存器为DS或ES暂存器时,则执行步骤206;否则,执行步骤208。
于步骤206,指令转译器104暂停宏指令142的转译并且暂时地转移控制至图1的载入DS/ES暂存器微码程序112。载入DS/ES暂存器微码程序112将于图4详细说明。于是,流程于步骤206结束。
在步骤208,指令转译器104暂停宏指令142的转译并且暂时地转移控制至图1的载入非DS/ES暂存器微码程序122。载入非DS/ES暂存器微码程序122可包括将非DS/ES载入宏指令142所定义的新值载入至非DS/ES暂存器并且接着返回控制给指令转译器104的微指令。于是,流程于步骤208结束。
请再参照图1,微处理器100也包括一相依性检查单元106,其可接收来自指令转译器104以及来自微码只读存储器116的微指令144。相依性检查单元106在ROB118中对每一个指令配置一对应的项目。ROB118的项目是依照程序顺序设置,使得ROB118可确保指令会依照程序顺序引退。相依性检查单元106也产生每一指令的相依信息并且将指令的相依信息提供给ROB118,以储存至与指令相关的ROB118项目中。相依性检查单元106接着提供指令至保留站108,使指令于保留站108中等候,直到发送逻辑单元124决定其是已经准备好要被发送至执行单元114加以执行。ROB118更新每个指令的状态,例如指示指令已被发送、已被执行完成或已被引退,发送逻辑单元124也用此以判断一个指令是否已准备好被发送。
更特别来说,相依性检查单元106保持追踪在微处理器100中所有未引退指令的结果目的暂存器。当相依性检查单元106接收到一指令时,其察看被指令所使用的多个来源运算元暂存器(例如区段暂存器138),并且对每个来源运算元决定较旧的未引退指令(例如一区段载入指令)中的哪一个将被写入至来源运算元暂存器,并指出该指令是相依于该较旧的未引退指令。若相依性检查单元106找到许多写入同一来源运算元暂存器的未引退指令,相依性检查单元106判断这些未引退指令中哪一个未引退指令最新,并指出目前接收的指令是相依于这些未引退指令中最新的一个。
发送逻辑单元124使用由相依性检查单元106所产生的相依性信息以决定保留站108中的哪一指令已准备好发送至执行单元114加以执行。一般来说,发送逻辑单元124将根据相依性信息,等到所有的指令都被引退时(亦即利用其结果更新其目的暂存器)才发送一指令,其中相依性信息表示指令与其来源运算元相依。为求精确,微处理器100可通过转送总线及/或重新命名暂存器,转送其结果至相依指令中;亦即,结果可为有效的,致使发送逻辑单元124可在结果供应(result-supplying)指令实际更新结构暂存器并且引退之前,发送相依指令。然而,由相依性信息所表示的结果供应指令必须在发送逻辑单元124可发送相依指令至执行单元114之前,产生其结果以及致使结果可有效于相依指令。关于发送逻辑单元124的细部操作,请参照图3。
请参照图3,其是显示依据本发明实施例的图1中微处理器100的操作流程图。流程由步骤302开始。
于步骤302,发送逻辑单元124判断在其中一保留站108中有一个指令,该指令与载入其中的一区段暂存器138的指令相依。也就是说,发送逻辑单元124判断该指令为一存储器参考指令(例如表一第(2)行中或表二第(4)行中的MOV指令),使得微处理器100必须存取一区段暂存器138加以执行,并且区段暂存器138为一较旧的未引退指令的目的暂存器。接着,执行判断步骤304。
于判断步骤304,发送逻辑单元124判断相依指令与DS/ES暂存器132相依或与区段暂存器(非DS/ES暂存器)138相依。若相依指令与DS/ES暂存器132相依,执行步骤308;否则执行步骤306。
于步骤306,如前述,发送逻辑单元124依序执行与载入一非DS/ES暂存器相依的指令。于一实施例中,相依性检查单元106产生相依性信息表示相依指令与其本身相依以实现依序执行。也就是说,当相依性信息表示相依指令与其本身相依时,发送逻辑单元124将依照ROB118所指示,等到相依指令为微处理器100中最旧的指令时,才决定相依指令是已准备好要发送至执行单元114。特别地,因为执行单元114乱序执行指令,若相依性检查单元106以及发送逻辑单元124并未依序执行相依指令,则载入/储存单元可能使用一个陈旧的(stale)区段描述符值加以执行。然而,在本发明中,即使微处理器100不包括区段暂存器138的暂存器重新命名硬件,依序执行指令可确保正确的程序操作,如前述,因为其可确保相依指令在其可接收来自区段暂存器138的区段描述符的最新值前,不会被发送。也就是说,发送逻辑单元124可等到新值被载入至区段暂存器138之后,由该区段暂存器138中撷取新值,并且利用撷取到的新值发送次一连续的指令加以执行。表一的第(2)行的MOV指令为一个微处理器100将依序执行的指令的例子,因为其相依于表一的第(1)行的非DS/ES暂存器载入指令。于是,流程于步骤306结束。
于步骤308,发送逻辑单元124忽略存储器存取指令关于DS/ES暂存器132的相依性。也就是说,只要所有用以使相依指令准备被发送的其他条件满足(例如载入/储存单元是可用的并且除了DS/ES暂存器132之外的所有其他来源运算元都有效),发送逻辑单元124发送指令至执行单元114并且DS/ES暂存器132将其目前值提供至执行单元114,借此执行存储器存取指令。于另一实施例中,发送逻辑单元124可由DS/ES暂存器132中撷取其目前值,并且发送使用撷取到的目前值作为来源运算元的存储器存取指令加以执行,并以此执行结果更新微处理器100的结构状态。有效地,发送逻辑单元124预测DS/ES暂存器132的目前值与将通过DS/ES载入指令写入至DS/ES暂存器132的新值相等,并且预测地执行相依的存储器存取指令。通过前述预测并且进而发送相依指令,微处理器100有效地减少了执行包括DS/ES载入指令及其相依存储器存取指令的程序所需的时间。表二的第(4)行的MOV指令为一个微处理器100预测地执行的例子,因为其相依于表二的第(3)行的DS/ES暂存器载入指令。于是,流程于步骤308结束。
下表三显示一示范的虚拟程序码,用以描述图1的载入DS/ES暂存器微码程序112的相关部分。此虚拟程序码将与图4一并讨论。
表三
(1)loadTemp,[NewDescriptorAddress]
(2)compareTemp,DS
(3)if(Temp==DS){
(4)done;
(5)}else{
(6)MoveTemp-->DS
(7)branchtoNextInstruction;causeapipelineflush
(8)done;
(9)}
请参照图4,其是显示依据本发明实施例的图1中微处理器100的操作流程图。流程由步骤402开始。
于步骤402,相应于遇到一将一值(区段暂存器值)载入图1的DS/ES暂存器132的指令,指令转译器104将转移控制至载入DS/ES暂存器微码程序112,如前述的图2的对应步骤206所示。载入DS/ES暂存器微码程序112首先将指令所定义的值(区段暂存器值)自存储器载入至图1的暂时暂存器128,如表三的第(1)行所示。接着,执行步骤404。
于步骤404,载入DS/ES暂存器微码程序112比较图1的DS/ES暂存器132中的目前值与在步骤402时载入至暂时暂存器128中的值,如表三的第(2)行所示。于一实施例中,载入DS/ES暂存器微码程序112可命令比较器134执行此步骤。接着,执行决定步骤406。
于决定步骤406,载入DS/ES暂存器微码程序112判断图1的DS/ES暂存器132中的目前值与载入至暂时暂存器128中的值是否相等,如表三的第(3)行所示。若是,流程结束,如表三的第(4)行所示;否则,接着执行步骤408,如表三的第(5)行所示。
于步骤408,因为在图1的DS/ES暂存器132中的目前值不等于与载入至暂时暂存器128中的值(其为将被DS/ES载入指令所载入的新值),载入DS/ES暂存器微码程序112将暂时暂存器128中的值移至DS/ES暂存器132中,如表三的第(6)行所示。值得注意的是,执行表三的第(6)行的动作的微指令144为载入DS/ES暂存器微码程序112中的实际写入新值至DS/ES暂存器132的指令。因此,于步骤308所描述的相依存储器存取指令是相依于第(6)行中的指令,并且发送逻辑单元124忽略其相依性并预测由第(6)行中的指令所写入的DS/ES暂存器132的新值是等于步骤308中所描述的相依存储器存取指令所使用的DS/ES暂存器132的旧值。然而,在这种情形下,于决定步骤406将判断出预测为不正确的,亦即第(6)行中的指令所写入的DS/ES暂存器132的新值是不等于步骤308中所描述的相依存储器存取指令所使用的DS/ES暂存器132的旧值;因此,存储器存取指令可能会使用错误的DS/ES暂存器132的值以执行,并且预测错误必须被更正以确保微处理器100产生正确的程序结果。接着,执行步骤412。
于步骤412,为了更正图3的步骤308的错误预测结果,载入DS/ES暂存器微码程序112清除管线中所有较新于表三的第(6)行的指令,包括相依存储器存取指令,例如表二的第(4)行的MOV指令。载入DS/ES暂存器微码程序112接着在如步骤202所述遇到载入DS/ES暂存器132的宏指令142(例如表二的第(3)行的LES指令)之后,重新开始撷取次一连续的宏指令。如此,将可正确地利用在步骤408中通过第(6)行中的指令写入至DS/ES暂存器132的新值重新发送以及重新执行相依存储器存取指令,并以此执行结果更新微处理器100的结构状态,因此更正了在步骤308的预测错误。于一实施例中,清除并跳至次一连续的宏指令是可通过表三的第(7)行中的指令加以执行。于一实施例中,载入DS/ES暂存器微码程序112可命令执行单元114执行此步骤。
虽然于上述实施例中,微处理器是具有一x86宏结构,然而本发明并不限于应用在x86宏结构。再者,实施例考虑微处理器具有一不同的宏结构,具有包括区段暂存器以及不包括区段暂存器重新命名硬件的一超纯量微结构,也可利用前述技术,通过预测由一较旧的指令所载入至一区段暂存器的新值与区段暂存器的旧值相同并随后忽略较新的存储器存取指令在区段暂存器值的相依性,再于新值不等于旧值时,通过清除并重新执行相依指令来确保正确的程序结果,进而预测地执行相依存储器存取指令。
本发明的方法,或特定型态或其部分,可以以程序码的型态包括于实体介质,如软盘、光盘片、硬盘或是任何其他机器可读取(如计算机可读取)储存介质,其中,当程序码被机器,如计算机载入且执行时,此机器变成用以实施本发明的装置。本发明的方法与装置也可以以程序码型态通过一些传送介质,如电线或电缆、光纤或是任何传输型态进行传送,其中,当程序码被机器,如计算机接收、载入且执行时,此机器变成用以实施本发明的装置。当在一般用途微处理器操作时,程序码结合微处理器提供一操作类似于应用特定逻辑电路的独特装置。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (6)
1.一种微处理器,其特征在于,用以执行一区段暂存器载入指令以及一存储器存取指令,该区段暂存器载入指令将一新值载入至一区段暂存器,以及该存储器存取指令存取该区段暂存器所描述的一存储器区段,其中该存储器存取指令的程序顺序处于该区段暂存器载入指令之后,该微处理器包括:
多个该区段暂存器,其中该微处理器不包括用于所述区段暂存器的一暂存器重新命名硬件;以及
多个执行单元,用以:
从该区段暂存器撷取一目前值;
利用所撷取到的该目前值执行该存储器存取指令;以及
撷取该目前值后,判断该目前值是否等于该新值;
其中,若该新值等于该目前值,则:
该微处理器不载入该新值至该区段暂存器;以及
其中,若该新值不等于该目前值,则:
该微处理器载入该新值至该区段暂存器;
从该区段暂存器撷取该新值;以及
利用从该区段暂存器所撷取的该新值重新执行该存储器存取指令。
2.根据权利要求1所述的微处理器,其特征在于,还包括:
一暂时暂存器;
其中,该微处理器还用以在判断该目前值是否等于该新值的步骤之前,将该新值由存储器载入该暂时暂存器;以及
其中,当判断该目前值是否等于该新值时,所述执行单元比较由该存储器载入至该暂时暂存器的该新值与该区段暂存器中的该目前值。
3.根据权利要求1所述的微处理器,其特征在于,还用以在利用从该区段暂存器所撷取的该新值重新执行该存储器存取指令的步骤之前,清除该微处理器的一管线中的该存储器存取指令。
4.一种微处理器操作方法,其特征在于,适用于具有多个区段暂存器的一微处理器,其中所述区段暂存器包括互斥的第一子集合以及第二子集合,该微处理器操作方法包括:
遇到指示所述区段暂存器中的一区段暂存器载入一新值的一指令;
若该区段暂存器于该第一子集合中,则:
将该新值直接载入至该区段暂存器中;以及
若该区段暂存器于该第二子集合中,则:
于该新值不等于该区段暂存器中所储存的一目前值时,将该新值载入至该区段暂存器中;以及
于该新值等于该区段暂存器中所储存的该目前值时,不载入该新值至该区段暂存器。
5.根据权利要求4所述的微处理器操作方法,其特征在于,区段暂存器的该第二子集合由x86DS以及ES区段暂存器所构成。
6.根据权利要求4所述的微处理器操作方法,其特征在于,还包括:
若该区段暂存器于该第二子集合中,则:
当该新值不等于该区段暂存器中所储存的该目前值时,将所有较新于该指令的指令利用该新值重新执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/369,132 US8880854B2 (en) | 2009-02-11 | 2009-02-11 | Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register |
US12/369,132 | 2009-02-11 | ||
CN201010112024.8A CN101776989B (zh) | 2009-02-11 | 2010-02-05 | 乱序执行微处理器及提升效能的方法、执行方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010112024.8A Division CN101776989B (zh) | 2009-02-11 | 2010-02-05 | 乱序执行微处理器及提升效能的方法、执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103488464A CN103488464A (zh) | 2014-01-01 |
CN103488464B true CN103488464B (zh) | 2016-03-30 |
Family
ID=42513463
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010112024.8A Active CN101776989B (zh) | 2009-02-11 | 2010-02-05 | 乱序执行微处理器及提升效能的方法、执行方法 |
CN201310460683.4A Active CN103488464B (zh) | 2009-02-11 | 2010-02-05 | 微处理器以及微处理器操作方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010112024.8A Active CN101776989B (zh) | 2009-02-11 | 2010-02-05 | 乱序执行微处理器及提升效能的方法、执行方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8880854B2 (zh) |
CN (2) | CN101776989B (zh) |
TW (2) | TWI411957B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9733941B2 (en) * | 2012-10-09 | 2017-08-15 | Advanced Micro Devices, Inc. | Technique for translating dependent instructions |
US9823929B2 (en) * | 2013-03-15 | 2017-11-21 | Qualcomm Incorporated | Optimizing performance for context-dependent instructions |
KR101819315B1 (ko) * | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
US10108428B2 (en) * | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US11561792B2 (en) * | 2015-06-08 | 2023-01-24 | Qualcomm Incorporated | System, apparatus, and method for a transient load instruction within a VLIW operation |
US10678542B2 (en) * | 2015-07-24 | 2020-06-09 | Apple Inc. | Non-shifting reservation station |
US10452434B1 (en) | 2017-09-11 | 2019-10-22 | Apple Inc. | Hierarchical reservation station |
KR102456176B1 (ko) * | 2020-05-21 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11573891B2 (en) | 2019-11-25 | 2023-02-07 | SK Hynix Inc. | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device |
US11531544B1 (en) | 2021-07-29 | 2022-12-20 | Hewlett Packard Enterprise Development Lp | Method and system for selective early release of physical registers based on a release field value in a scheduler |
US11687344B2 (en) | 2021-08-25 | 2023-06-27 | Hewlett Packard Enterprise Development Lp | Method and system for hard ware-assisted pre-execution |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6898697B1 (en) * | 2002-03-29 | 2005-05-24 | Advanced Micro Devices, Inc. | Efficient method for mode change detection and synchronization |
CN1940862A (zh) * | 2005-09-27 | 2007-04-04 | 国际商业机器公司 | 用来在信息处理系统中从发出队列发出指令的方法和设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395412B2 (en) * | 2002-03-08 | 2008-07-01 | Ip-First, Llc | Apparatus and method for extending data modes in a microprocessor |
US6944744B2 (en) * | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
US7266673B2 (en) * | 2003-05-02 | 2007-09-04 | Advanced Micro Devices, Inc. | Speculation pointers to identify data-speculative operations in microprocessor |
US7210009B2 (en) * | 2003-09-04 | 2007-04-24 | Advanced Micro Devices, Inc. | Computer system employing a trusted execution environment including a memory controller configured to clear memory |
JP2007272353A (ja) * | 2006-03-30 | 2007-10-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
US8069340B2 (en) * | 2008-02-08 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
-
2009
- 2009-02-11 US US12/369,132 patent/US8880854B2/en active Active
-
2010
- 2010-02-01 TW TW99102817A patent/TWI411957B/zh active
- 2010-02-01 TW TW102123151A patent/TWI502500B/zh active
- 2010-02-05 CN CN201010112024.8A patent/CN101776989B/zh active Active
- 2010-02-05 CN CN201310460683.4A patent/CN103488464B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6898697B1 (en) * | 2002-03-29 | 2005-05-24 | Advanced Micro Devices, Inc. | Efficient method for mode change detection and synchronization |
CN1940862A (zh) * | 2005-09-27 | 2007-04-04 | 国际商业机器公司 | 用来在信息处理系统中从发出队列发出指令的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US8880854B2 (en) | 2014-11-04 |
TWI411957B (zh) | 2013-10-11 |
TWI502500B (zh) | 2015-10-01 |
CN103488464A (zh) | 2014-01-01 |
CN101776989A (zh) | 2010-07-14 |
US20100205406A1 (en) | 2010-08-12 |
TW201030613A (en) | 2010-08-16 |
CN101776989B (zh) | 2014-05-14 |
TW201342230A (zh) | 2013-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488464B (zh) | 微处理器以及微处理器操作方法 | |
CN101876890B (zh) | 管线式微处理器及其执行两种条件分支指令的方法 | |
KR101754462B1 (ko) | 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치 | |
CN101826001B (zh) | 微处理器以及快速执行条件分支指令的方法 | |
CN101681259B (zh) | 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法 | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN101894009B (zh) | 乱序执行的微处理器以及相关执行指令的方法 | |
US9703562B2 (en) | Instruction emulation processors, methods, and systems | |
JP2014182813A (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
TW202143044A (zh) | 用於在異質處理資源上調適性地排程工作的設備及方法 | |
CN105446777A (zh) | 高速缓存行的非对齐加载指令的推测并行执行方法 | |
CN101135973A (zh) | 自动安装设备驱动程序的系统及方法 | |
CN103425502B (zh) | 一种操作系统的预取启动方法和装置 | |
CN102890624B (zh) | 用于管理无序毫码控制操作的方法和系统 | |
JP2017228267A (ja) | リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法 | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
US7562206B2 (en) | Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
CN100583030C (zh) | 一种risc处理器及其数据访存方法 | |
CN109144572A (zh) | 指令执行方法和处理器 | |
KR100861701B1 (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 | |
CN113703842B (zh) | 一种基于分支预测的值预测方法、装置及介质 | |
CN102193775A (zh) | 微处理器融合搬运/算术逻辑运算/条件跳跃指令 | |
CN105511837A (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
CN105511842A (zh) | 用以改善在处理器中重新执行加载的装置与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |