CN101661384B - 微处理器及微处理器方法 - Google Patents

微处理器及微处理器方法 Download PDF

Info

Publication number
CN101661384B
CN101661384B CN2009101693459A CN200910169345A CN101661384B CN 101661384 B CN101661384 B CN 101661384B CN 2009101693459 A CN2009101693459 A CN 2009101693459A CN 200910169345 A CN200910169345 A CN 200910169345A CN 101661384 B CN101661384 B CN 101661384B
Authority
CN
China
Prior art keywords
mentioned
word string
microprocessor
ecx
micro
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
Application number
CN2009101693459A
Other languages
English (en)
Other versions
CN101661384A (zh
Inventor
G.葛兰·亨利
泰瑞·派克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101661384A publication Critical patent/CN101661384A/zh
Application granted granted Critical
Publication of CN101661384B publication Critical patent/CN101661384B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种微处理器及微处理器方法,用于执行字串重复搬移宏指令,指定被搬移的字串的字长度为于IA-32ECX暂存器的一立即值。微处理器包括一存储器,用来储存第一组微指令序列与第二组微指令序列。第一组微指令序列根据立即值条件分支至第一组微指令序列的一微指令。第二组微指令序列不包含条件分支微指令。微处理器包括一耦接于存储器的指令转译器。因应搬移立即值给ECX暂存器的宏指令,指令转译器设定一旗标并储存立即值。因应修改ECX暂存器的宏指令,指令转译器清除旗标。当旗标被清除,指令转译器转移控制给第一组微指令序列;当旗标被设定,指令转译器转移控制给第二组微指令序列。本发明改善了重复字串宏指令的执行效能。

Description

微处理器及微处理器方法
技术领域
本发明有关于微处理器,且特别有关于生成微指令的装置,用以执行字串搬移宏指令。
背景技术
英特尔架构(IA-32)指令集(普遍地也被称为x86架构)包括一字串(MOVS)宏指令(在英特尔软件开发者手册中称为“字串搬移”指令)。MOVS宏指令从来源存储器位置搬移字节(8位)、字(16位)、双字(32位)或四字(64位)到目的地存储器位置。重复(REP)前置指令可被加在MOVS宏指令之前,用以多次重复MOVS宏指令来搬移字节、字、双字或四字。
包含字串重复搬移(REP MOVS)宏指令的程序也必须包括优先指令(prior instruction),此优先指令将ECX暂存器载入一值,此值指定MOVS宏指令要被重复的次数。也就是说ECX暂存器指定要被搬移的字串的大小,如那些要被从来源存储器位置搬移至目的地存储器位置的字节、字、双字、四字数目。详细的MOVS宏指令提供于IA-32英特尔软件开发者手册第2A集:指令集参考资料A-M的第3-656到3-659页。而详细的REP前置指令提供于IA-32英特尔软件开发者手册第2B集:指令集参考资料N-Z的第4-211到4-215页。以上全部细节在此合并一起作为参考资料。
许多现代化的微处理器都拥有指令转译器,指令转译器将如同x86这样的宏指令转换为一个或多个在微处理器的微架构内执行的微指令。当微处理器执行了全部组成的微指令,它会完成宏指令的语义(semantics)。指令转译器本身产生一组不同的微指令序列给每一个更普通的宏指令来完成宏指令。另外,微指令ROM耦接于指令转译器。微指令ROM储存微指令序列,这些微指令序列用来完成更复杂或更不常出现的x86宏指令的语义,此动作降低了指令转译器的复杂性。因此,微指令序列可能由指令转译器产生或微指令ROM输出,依微处理器的设计基准而定。
因为字串搬移指令关系到反复的操作,上述操作由一执行一回路的微指令ROM中的一微指令序列完成。ECX暂存器的计数值决定微指令在回路被执行的次数。每执行一次回路便减少ECX暂存器的值,并且位于回路结尾的条件分支指令(conditional branch instruction)根据ECX暂存器目前的值条件分支回到回路的起始位置。然而,回路的执行效能相对较差,因为条件分支指令需要相对较大的时钟周期来执行。更进一步,如果微处理器错估分支结果,要修复错误预估的后果相当大,特别是在管线化很深的微处理器。因此,所需要的是一个改善字串重复搬移(REP MOVS)宏指令效能的方法。
发明内容
本发明提供一个微处理器,并用来执行英特尔架构(IA-32)字串重复搬移(REP MOVS)宏指令。被搬移的字串的字长度指定(specified)为于IA-32架构的ECX暂存器中的一立即值。微处理器包括一存储器,配置来储存第一组微指令序列,用以完成字串重复搬移宏指令,上述第一组微指令序列包括一条件分支微指令,当条件分支微指令被执行时,上述条件分支微指令就会根据储存于IA-32架构的ECX暂存器的字长度条件分支至第一组微指令序列内的一微指令。存储器也配置来储存第二组微指令序列,用以完成字串重复搬移宏指令,上述第二组微指令序列不包括任何条件分支微指令。微处理器包括一指令转译器,并耦接于存储器。因应搬移立即值给IA-32架构的ECX暂存器的宏指令,指令转译器设定一个快速字串旗标并储存立即值。因应以不同于搬移立即值给IA-32架构的ECX暂存器的方式来修改IA-32架构的ECX暂存器的宏指令,指令转译器清除快速字串旗标。因应字串重复搬移宏指令,如果快速字串旗标被清除,指令转译器转移上述微处理器的控制权给第一组微指令序列;如果快速字串旗标被设定,指令转译器根据储存的立即值转移上述微处理器的控制权给第二组微指令序列内的一目标位置。
本发明提供一方法,用来使微处理器执行英特尔架构(IA-32)字串重复搬移(REP MOVS)宏指令,其中被搬移的字串的字长度指定为于IA-32架构的ECX暂存器中的一立即值。微处理器包括一存储器,用来储存多个微指令序列。因应搬移立即值给IA-32架构的ECX暂存器的宏指令,上述方法包括设定一快速字串旗标与储存立即值。因应以不同于搬移立即值给IA-32架构的ECX暂存器的方式来修改IA-32架构的ECX暂存器的宏指令,上述方法包括清除快速字串旗标。因应字串重复搬移宏指令,上述方法包括设定或清除快速字串旗标,当快速字串旗标被清除时,上述方法包括转移上述微处理器的控制权到第一组微指令序列,以完成字串重复搬移宏指令。当快速字串旗标被设定时,上述方法包括根据储存的立即值,转移上述微处理器的控制权到第二组微指令序列内的一目标位置,以完成字串重复搬移宏指令。第一组微指令序列包括一条件分支微指令,当条件分支微指令被执行时,上述条件分支微指令就会根据储存于IA-32架构的ECX暂存器的字长度条件分支至第一组微指令序列的一微指令。第二组微指令序列不包括任何条件分支微指令。
本发明提供一个微处理器,并用来执行英特尔架构(IA-32)字串重复搬移(REP MOVS)宏指令,其中被搬移的字串的字长度指定为于IA-32架构的ECX暂存器中的一立即值。微处理器包括一存储器,配置来储存第一组微指令序列,用以完成字串重复搬移宏指令,上述第一组微指令序列包括一条件分支微指令,当条件分支微指令被执行时,上述条件分支微指令就会根据储存于IA-32架构的ECX暂存器的字长度条件分支至第一组微指令序列的一微指令。微处理器包括一指令转译器,并耦接于存储器。因应搬移立即值给IA-32架构的ECX暂存器的宏指令,指令转译器设定一快速字串旗标并储存立即值。因应以不同于搬移立即值给IA-32架构的ECX暂存器的方式来修改IA-32架构的ECX暂存器的宏指令,指令转译器清除快速字串旗标。因应字串重复搬移宏指令,如果快速字串旗标被清除,指令转译器会转移上述微处理器的控制权给第一组微指令序列;如果快速字串旗标被设定,指令转译器会根据储存的立即值产生第二组微指令序列。第二组微指令序列会完成字串重复搬移宏指令,并且不包含任何条件分支微指令。
本发明提供一个微处理器,并用来执行英特尔架构(IA-32)REP STOS、REP INS、REP OUTS、REP LODS、REP CMPS或REP SCAS宏指令,其中被搬移的字串的字长度指定为于IA-32架构的ECX暂存器中的一立即值。微处理器包括一存储器,配置来储存第一组微指令序列,用以完成REP STOS、REPINS、REP OUTS、REP LODS、REP CMPS或REP SCAS宏指令,上述第一组微指令序列包括一条件分支微指令,当条件分支微指令被执行时,上述条件分支微指令就会根据储存于IA-32架构的ECX暂存器的字长度条件分支至第一组微指令序列的一微指令。存储器也配置来储存第二组微指令序列,用以完成REPSTOS、REP INS、REP OUTS、REP LODS、REP CMPS或REPSCAS宏指令,上述第二组微指令序列不包括任何条件分支微指令。微处理器包括一指令转译器,并耦接于存储器。因应搬移立即值给IA-32架构的ECX暂存器的宏指令,指令转译器设定一快速字串旗标并储存立即值。因应以不同于搬移立即值给IA-32架构的ECX暂存器的方式来修改IA-32架构的ECX暂存器的宏指令,指令转译器清除快速字串旗标。因应REP STOS、REP INS、REP OUTS、REP LODS、REP CMPS或REP SCAS宏指令,如果快速字串旗标被清除,指令转译器转移上述微处理器的控制权给第一组微指令序列;如果快速字串旗标被设定,指令转译器根据储存的立即值转移上述微处理器的控制权给第二组微指令序列内的一目标位置。
本发明的优点是通过消除会完成重复字串宏指令的微指令序列中的回路,潜在地改善了重复字串宏指令的执行效能。
本发明被实行于一个微处理器装置内,上述微处理器装置可能用于一般用途的计算机。
附图说明
图1a是已知的微处理器方块图。
图1b是显示图1a的回路式(looping)REP MOVS微指令序列144的方块图。
图2是一个显示本发明的微处理器200的方块图。
图3是一个显示图2中快速REP MOVS微指令序列212的方块图。
图4a是一显示根据本发明图2的指令转译器206因应一MOV ECX立即宏指令的操作流程图。
图4b是一显示根据本发明替代实施例的图2的指令转译器206因应一MOV ECX立即宏指令的操作流程图。
图5是一个显示根据本发明图2的指令转译器206因应接收到一修改ECX暂存器的宏指令,但不是一MOV ECX立即宏指令的操作流程图。
图6是一显示根据本发明图2的指令转译器206因应接收一REP MOVS宏指令的操作流程图。
图7是一个显示根据本发明替代实施例的图2中指令转译器206因应接收一REP MOVS宏指令的操作流程图。
具体实施方式
现在参考图1a,图1a为一显示已知技术微处理器100的方块图。指令快取(未显示于图)提供宏指令104给指令转译器106。宏指令104之中包括一字串重复搬移(REP MOVS)宏指令。指令转译器106转换宏指令104成微指令108,在此单一宏指令104可能被转换成一个或多个微指令108。对于更复杂或更不常被使用的宏指令104,指令转译器106可能从一微指令ROM 142得到需要的微指令108。微指令ROM 142储存不同的微指令序列给许多宏指令104。举例来说,REP MOVS宏指令可能有一个回路式REP MOVS微指令序列144,其它复杂或不频繁使用的宏指令则可能拥有其他不同的微指令序列。
微指令108由一指令调度器112所接收,指令调度器112通过执行单元134排定要执行的微指令108。执行单元134包括各种不同功能的单元,处理整数与浮点运算、数据搬移、地址计算、分支运算等等,并可支持微处理器100的宏指令集所需的全部运算。在一实施例中,执行单元134包括一载入单元128与一储存单元132,载入单元128从微处理器100的存储器子系统114载入数据。存储器子系统114包括一个或多个微处理器100的快取存储器,再加上用来存取微处理器100的外部存储器位置的总线接口单元。在REP MOVS宏指令104的情况,载入单元128从图1a存储器子系统114中的字串来源116中撷取(fetch)要搬移的数据。储存单元132储存数据到图1a存储器子系统114中的字串目的地118。
字串来源116与字串目的地118分别包括多重存储器位置(multiple memory locations)。REP MOVS宏指令104从字串来源116内的一组存储器位置搬移数据值字串到字串目的地118内的另一组存储器位置。执行单元134耦接于微处理器100的架构暂存器122。架构暂存器122包括一个ECX暂存器124。
图1b为一显示图1a中回路式(looping)REP MOVS微指令序列144的一个例子的方块图。回路式REP MOVS微指令序列144从微指令ROM 142转移到指令调度器112。在微指令ROM 142发出回路式REP MOVS微指令序列144到指令调度器112之前,其他宏指令104被指令转译器106所接收,指令转译器106为了字串搬移与要搬移的字数目,例如,字串的大小,于架构暂存器122载入来源位置与目的地位置。除非另有详细指定,用于此的“字”这一项当做固定大小的多个的数据位,它被字串搬移宏指令指定,包括字节(8位)、字(16位)、双字(32位)或四字(64位),但不限于这些。
回路式REP MOVS微指令序列144的第一个微指令108是一个“来源地址载入暂存(load temp,source addr)”的微指令152,它从字串来源116内的存储器位置载入数据到微处理器100的临时暂存器。字串来源116内的存储器位置由DS:SI或DS:ESI暂存器所派给(designated),依宏指令104的地址大小特征而定。回路式REP MOVS微指令序列144的第二个微指令108是一个“目的地地址储存暂存(store temp,destination addr)”的微指令154,它从微处理器100的临时暂存器把数据储存到存储器子系统114字串目的地118内的一个存储器位置。字串目的地118内的存储器位置由ES:DI或ES:EDI暂存器所派给,依宏指令104的地址大小特征而定。回路式REP MOVS微指令序列144内的下一个微指令108是一个“减量ECX(decrement ECX)”微指令156。“减量ECX”微指令156减少现行ECX暂存器124的值,其减少计数值以反映出要被搬移的字串的字数目。回路式REP MOVS微指令序列144内要被产生的下一个微指令108是一个“增量来源地址(increment source addr)”微指令158,它更新DS:SI或DS:ESI暂存器(依宏指令104的地址大小特征而定)至字串来源116的下一个来源数据位置。回路式REP MOVS微指令序列144内要被产生的下一个微指令108是一个“增量目的地地址(incrementdestination addr)”微指令162,它更新ES:DI或ES:EDI暂存器(依宏指令104的地址大小特征而定)至字串目的地118的下一个目的地数据位置。回路式REP MOVS微指令序列144内要被产生的最后一个微指令108是一个“于ECX分支(branch on ECX)”微指令164,简称为条件分支微指令164,如果架构暂存器ECX 124的值不是0则条件分支回“来源地址载入暂存(load temp,sourceaddr)”微指令152;否则在回路式REP MOVS微指令序列144后继续到下一个微指令108,把控制交回指令转译器106。
也许可轻易观察得到,回路式REP MOVS微指令序列144的条件分支微指令164创造(creat)一个回路。如同以上所讨论,虽然回路空间(space)很有效率,但回路的执行效能相对的较差。特别是如果正在被搬移的字串很大,微处理器100必须执行很大量的条件分支微指令164,造成REP MOVS宏指令104相对较慢地执行。因为这些原因,降低或消除完成REP MOVS宏指令104语义的微指令序列中的条件分支微指令164是非常值得的。
现在参考图2,图2是一个显示本发明的微处理器200的方块图。图2的微处理器200在各方面相似于图1a的微处理器100。然而图2的指令转译器206不同于图1a的指令转译器106,因为它包括一个用以储存立即ECX值(immediate ECX value)204与快速字串旗标(fast string flag)208的暂存器(图未示)。当指令转译器206接收MOV ECX立即宏指令,即搬移立即ECX值204到上述IA-32架构ECX暂存器124的宏指令,在立即ECX值204将被紧接着发生的REP MOVS宏指令104所使用的情况下,指令转译器206设定(set)快速字串旗标208与储存立即ECX值204于上述暂存器。指令转译器206也产生一个微指令108,它写入立即ECX值给架构暂存器122的ECX暂存器124。
另一个图2指令转译器206与图1a指令转译器106不同之处是指令转译器206回应修改ECX暂存器124内容的宏指令(有别于MOV ECX立即宏指令)的方式,如同一个根据其他暂存器的值修改ECX暂存器的计算宏指令,例如,ADD ECX、EAX。特别的是,如果指令转译器206接收修改ECX暂存器124的宏指令104,并且宏指令104不是一个MOV ECX立即宏指令,指令转译器206会清除快速字串旗标208。
另一个图2与图1a的不同之处在于图2包括一个在微指令ROM 142中的快速REP MOVS微指令序列212,其并没有包含任何如同图1b的条件分支微指令164这样的回路指令,其将在图3详尽说明。当指令转译器206接收REP MOVS宏指令104时,如果快速字串旗标208被设定且储存的立即ECX值204少于或等于一预定值(predetermined value),指令转译器206会根据储存的立即ECX值204(如下所述),转移上述微处理器200的控制权给快速REP MOVS微指令序列212中的一个适当的位置;否则指令转译器206转移控制给回路式REP MOVS微指令序列144。
现在参考图3,图3是一个显示图2中快速REP MOVS微指令序列212的方块图。快速REP MOVS微指令序列212包括多个搬移字串数据集322,其中在快速REP MOVS微指令序列212中搬移字串数据集322的数目为上述预定值(如上面图2所提)。图3所示的实施例中,有64组搬移字串数据集322,因此预定值是64。其他实施例可包含更多或更少的搬移字串数据集322。搬移字串数据集322的数目是一个设计上的考量,基于可获得的微指令ROM空间与所想要增进的效能而定。每一个搬移字串数据集322包括多个微指令108,其搬移对应REP MOVS宏指令104的一字串数据。因此,每一个搬移字串数据集322包括一“来源地址载入暂存”微指令152、一“目的地地址储存暂存”微指令154、一“增量来源地址”微指令158与一“增量目的地地址”微指令162,其相似于图1b。图3的实施例包括一最佳化(optimization)的例子,其中ECX暂存器124的值在快速REP MOVS微指令序列212的结尾(end)被载入0,而不是减低每一个搬移字串数据集322内的ECX暂存器124的值。然而,在其他实施例中,每一个搬移字串数据集322也包括一个图1b的“减量ECX”微指令156。
被REP MOVS宏指令104搬移或储存的数据字串可能包含数百或数千的数据字。也就是说,被REP MOVS宏指令104所使用的立即ECX值可能相当的大。更进一步,微指令ROM 142还包含许多除了之前所述回路式REP MOVS微指令序列144与快速REP MOVS微指令序列212之外其他的微指令序列。在实际的考量上,微指令ROM 142是固定的大小。因此快速REP MOVS微指令序列212的长度受限于只有在立即ECX值最高不超过其预定值时处理REP MOVS宏指令104。任何REP MOVS宏指令104在立即ECX值大于预定值时将被回路式REP MOVS微指令序列144来处理。
如果要被搬移的数据位置的数量低于或等于预定值,指令转译器206计算快速REP MOVS微指令序列212内的起始位置。起始位置是目标地址312,它指出第一组快速搬移字串数据集322要被微指令ROM 142从快速REP MOVS微指令序列212输出给现行的REP MOVS宏指令104。为了阐明目的,现在说明一个例子。在这个例子中,假定每一个微指令152、154、158与162是4位的长度,使得每一个搬移字串数据集322是16位长;预定值是64组搬移字串数据集322;第一个搬移字串数据集322(搬移字串数据集0)的起始地址于0x500地址;因此最后搬移字串数据集322(搬移字串数据集63)将开始于微指令ROM 142内的地址0x8F0。因为一搬移字串数据集322的长度是16位,通过将储存的立即ECX值204左移4位(bit),指令转译器206计算目标地址312。也就是说,指令转译器106有效地将立即ECX值204乘以16。在图3例子中,立即ECX值204是0x03D,左移4位后产生左移的立即ECX值304为0x03D0。接下来,减法器308从快速REP MOVS微指令序列结尾地址306减去左移的ECX值304,以得到目标地址312。在一例子中,快速REP MOVS微指令序列212的结尾地址306是0x900,并且计算的目标地址312是0x530。因为图3实施例的快速REP MOVS微指令序列212的搬移字串数据集322没有产生减量ECX暂存器124的微指令108,因此快速REP MOVS微指令序列212中有一微指令314将ECX暂存器124载入0。因应REP MOVS宏指令,在转移控制至快速REP MOVS微指令序列212内的目标地址312后,指令转译器206清除快速字串旗标208。
在一实施例中,快速REP MOVS微指令序列212包括相同的微指令连续集的一阵列,每个上述微指令连续集搬移一组字串位,其中根据一储存的立即值,指令转译器配置来计算出快速REP MOVS微指令序列212内的一目标位置,上述目标位置为上述阵列的一索引。在一实施例中,上述阵列大小是N个连续集,其中指令转译器配置来计算出上述阵列的上述索引,上述索引为N减去储存的上述立即值。在一实施例中,上述目标位置在上述阵列的上述连续集中的其中之一并且在上述阵列结尾之前。
现在参考图4a,图4a是一显示根据本发明图2的指令转译器206因应MOV ECX立即宏指令的操作流程图。流程开始于方块404。
于方块404,指令转译器206接收一MOV ECX立即宏指令104。MOV ECX立即宏指令104载入立即ECX值于架构暂存器122的ECX暂存器124。流程前进到方块406。
于方块406,指令转译器206储存被MOV ECX立即宏指令104指定的立即ECX值至一暂存器。若是接收REP MOVS宏指令104,指令转译器206将有可能接着使用立即ECX值204来计算于快速REP MOVS微指令序列212的一目标地址312。流程前进到方块408。
于方块408,指令转译器206设定快速字串旗标208。这强化了指令转译器206,以致更有效的快速REP MOVS微指令序列212可以替代回路式REP MOVS微指令序列144,使得当快速字串旗标208被设定时执行指令转译器206收到的REP MOVS宏指令104。流程前进到方块412。
于方块412,指令转译器206产生一载入ECX立即微指令来载入被MOV ECX立即宏指令104所指定的立即ECX值给架构暂存器122的ECX暂存器124。流程结束于方块412。
现在参考图4b,根据本发明一个替代的实施例,图4b是一显示图2的指令转译器206因应MOV ECX立即宏指令的操作流程图。图4b相似于图4a,除了方块408被方块428所取代。相似部分不再赘述。方块428相似于图4a的方块408,除了只有在被MOV ECX立即宏指令104所指定的立即值小于或等于一预定值时,指令转译器206会设立快速字串旗标208。
现在参考图5,图5是一个显示根据本发明图2的指令转译器206因应接收到一修改ECX暂存器的宏指令104,但不是一MOVECX立即宏指令104的操作流程图。流程开始于步骤504。
于步骤504,指令转译器206接收到一修改ECX暂存器的宏指令104,但并非MOV ECX立即宏指令104。流程前进到方块506。
于方块506,指令转译器206清除快速字串旗标208。指令转译器206清除快速字串旗标208,因为当指令转译器206被执行时,它无法由于方块504所接收的宏指令104来判断宏指令104要载入架构暂存器122的ECX暂存器124的值。因为这个值可能是其他架构暂存器122的值的函数且(或)是特定算数函数,如指令ADD ECX,EAX(将暂存器ECX,EAX的值相加)。因此,如果指令转译器206接收一伴随而生(subsequent)的REP MOVS宏指令,指令转译器206不会转移控制给快速REP MOVS微指令序列212,因为指令转译器206不能判断快速REP MOVS微指令序列212的图3搬移字串数据集322内适当的位置来转移控制。相反的,在MOV ECX立即宏指令104的情况(如同上述图4a与图4b的说明),指令转译器206清楚知道ECX 124的值为何(也就是立即值),因为没有被牵涉的计算与从属在其他暂存器/存储器值上。流程前进到方块508。
于方块508,指令转译器206产生适当的微指令序列来完成修改ECX暂存器124的宏指令104,但不是一个MOV ECX立即宏指令的语义法。流程结束于方块508。
现在参考图6,图6是一显示根据本发明图2的指令转译器206因应接收一REP MOVS宏指令104的操作流程图。流程开始于方块604。
于方块604,指令转译器206接收一REP MOVS宏指令104。REP MOVS宏指令104从存储器内的第一组位置搬移数据字串到存储器内的第二组位置。流程前进到决定方块606。
于决定方块606,指令转译器206决定快速字串旗标208是否被设定。快速字串旗标表示修改ECX暂存器124内容的最后的宏指令104是一MOV ECX立即宏指令。因此,快速字串旗标208被设定则表示快速REP MOVS微指令序列212可能被使用来给REP MOVS宏指令104。如果快速字串旗标208设定,那么流程前进至决定方块608。如果快速字串旗标208没有被设定,那么流程前进至方块612。
于决定方块608,指令转译器206决定立即ECX值204是否大于一预定值。预定值是可以利用的快速REP MOVS微指令序列212的最大字串长度。图6显示根据图4a实施例的指令转译器206操作。然而,对一个指令转译器206根据图4b的替代实施例操作而言,指令转译器206不需要执行决定方块608的步骤。如果立即ECX值204大于预定值,流程前进至方块612。如果立即ECX值204没有大于预定值,流程前进至方块614。
于方块612,指令转译器206转移控制至回路式REP MOVS微指令序列144。流程结束于方块612。
于方块614,指令转译器206根据储存的立即ECX值204产生一目标地址312给快速REP MOVS微指令序列212,这会使得微指令ROM 142输出一数量的搬移字串数据集322,其数量等于储存的立即ECX值204。在一个实施例,指令转译器206产生目标地址312,如同图3所示。流程前进至方块616。
于方块616,指令转译器206于方块614计算出的目标地址312转移控制至微指令ROM 142的快速REP MOVS微指令序列212。流程前进至方块618。
于方块618,微指令ROM 142输出一“来源地址载入暂存”152、“目的地地址储存暂存”154、“增量来源地址”158、与“增量目的地地址”162的微指令108的微指令序列,其开始于目标地址312。被产生的微指令108是一数量的快速REP MOVS微指令序列212的搬移字串数据集322,其数量等于储存的立即ECX值204。搬移字串数据集322显示的序列对应于一REP MOVS宏指令104。流程前进至方块622。
于方块622,在微指令ROM 142产生全部相关于REP MOVS宏指令104的微指令108之后,微指令ROM 142将控制返回给指令转译器206。流程结束于方块622。
现在参考图7,根据本发明一个替代的实施例,图7是一个显示图2中指令转译器206因应接收一REP MOVS宏指令104的操作流程图。图7的流程图相似于图6的流程图,除了方块614到方块622这部分被方块714与方块716取代。相似部分不再赘述。流程从决定方块608前进至方块714。
于方块714,指令转译器206产生图3的N个搬移字串数据集322,在此N是图2的储存的立即ECX值204。每一次指令转译器206产生搬移字串数据集322,指令转译器206就减少立即ECX值204。当ECX暂存器204到达0时,就产生了全部所需要的N个搬移字串数据集322。流程前进到方块716。
于方块716,全部N个搬移字串数据集322已经产生,指令转译器206产生一将架构暂存器122的ECX暂存器124载入为0的微指令314。流程结束于方块716。
虽然实施例已经说明了有关于x86架构的REP MOVS宏指令。但本发明不限于此特定的巨集架构,而可以更改为配合其他有重复字串宏指令的巨集架构。更进一步,虽然实施例已经说明了有关于REP MOVS宏指令104,在此启示的技术也可以用于改善IA-32 INS、OUTS、LOSD、STOS、CMPS、SCAS这些包含REP前置指令的宏指令104的效能。举例来说,在REP STOS宏指令104的情况,微指令ROM 142包含一快速REP STOS微指令序列,此微指令序列包含相似于图3搬移字串数据集的储存字串数据集,只是不需要“来源地址载入暂存”微指令152与“增量来源地址”微指令158,并且“目的地地址储存暂存”微指令154从IA-32架构的AL、AX、EAX或RAX暂存器而不是临时暂存器中把数据储存至存储器子系统114的字串目的地118。
本发明多个实施例描述于此,但必须知道它们只是以例子的方法呈现,并非只限于此。很明显的,熟习此计算机相关技术者可以在形式或细节上做多种改变而没脱离这个发明的范畴。举例来说,除了使用硬件(如耦接(或这些装置之内)一中央处理单元(CPU)、微处理器、微控制器、数字信号处理器、处理器核心、芯片上系统(SOC)或任何其他装置),也可能用软件实施(如计算机可读码、程序码与处理成任何形式的微指令,如同来源、物件或机械语言),如在一个配置来储存软件的计算机可用(如可读)介质中。这样的软件可实行,例如函数、建构、模型制作、模拟、说明与(或)测试在此说明的装置及方法。举例来说,这可以通过一般的程序语言(如C、C++)、硬件描述语言(HDL,包括Verilog HDL、VHDL等)或其他可得程序来完成。这样的软件可以配置在任何所知的计算机可用介质如半导体、磁盘或光盘(如CD-ROM、DVD-ROM等)。本发明的实施例可以包括提供在此所叙述的微处理器的方法,通过提供叙述微处理器设计与随后传输软件如计算机数据信号在沟通网络上(,包括因特网与局域网)。也可知道在此叙述的装置与方法可被包含在半导体知识产权核心中,如同微处理器核心(如实施于HDL)与在集成电路生产中的硬件电路。除此之外,在此叙述的装置与方法可以由硬件与软件的结合来实施。因此,本发明不应被在此叙述的实施例范本所限制,而必须只能根据上述权利要求的范围及与它们的相等的意思来定义。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
附图中符号的简单说明如下:
100:微处理器                104:宏指令
106:指令转译器              108:微指令
112:指令调度器              114:存储器子系统
116:字串来源                118:字串目的地
122:架构暂存器              124:ECX暂存器
128:载入单元                132:储存单元
134:执行单元                142:微指令ROM
144:回路式REP MOVS微指令序列
152:“来源地址载入暂存”微指令
154:“目的地地址储存暂存”微指令
156:“减量ECX”微指令
158:“增量来源地址”微指令
162:“增量目的地地址”微指令
164:分支微指令              200:微处理器
204:立即ECX值               206:指令转译器
208:快速字串旗标
212:快速REP MOVS微指令序列
304:左移的ECX值          306:微指令序列结尾地址
308:减法器               312:目标地址
314:载入为0的微指令      322:搬移字串数据集
404、406、408、412、428:流程方块
504、506、508:流程方块
604、606、608、612、614、616、618、622:流程方块
714、716:流程方块。

Claims (12)

1.一种微处理器,其特征在于,用来执行IA-32架构字串重复搬移宏指令,其中被搬移的字串的字长度被指定为于上述IA-32架构的ECX暂存器中的一立即值,上述微处理器包括一用来储存多个微指令序列的存储装置,还包括:
第一装置,因应搬移上述立即值到上述IA-32架构的ECX暂存器的宏指令,设定一快速字串旗标并储存上述立即值;
第二装置,因应以不同于搬移上述立即值到上述IA-32架构的ECX暂存器的方式修改上述IA-32架构的ECX暂存器的宏指令,清除上述快速字串旗标;
第三装置,因应一字串重复搬移宏指令,当上述快速字串旗标被清除时,转移上述微处理器的控制权到一第一组微指令序列以完成上述字串重复搬移宏指令;以及
第四装置,因应上述字串重复搬移宏指令,当上述快速字串旗标被设定时,根据储存的上述立即值转移上述微处理器的控制权到一第二组微指令序列内的一目标位置以完成上述字串重复搬移宏指令;
其中上述第一组微指令序列包括一条件分支微指令,当上述条件分支微指令被执行时,上述条件分支微指令根据上述IA-32架构的ECX暂存器里储存的字长度条件分支到位于上述第一组微指令序列内的一微指令;
其中上述第二组微指令序列不包含任何条件分支微指令。
2.根据权利要求1所述的微处理器,其特征在于,
因应搬移上述立即值到上述IA-32架构的ECX暂存器的宏指令,所述第一装置只在储存的上述立即值少于或等于一预定值时设定上述快速字串旗标。
3.根据权利要求1所述的微处理器,其特征在于,因应上述字串重复搬移宏指令,如果上述快速字串旗标被设定,并且只有当储存的上述立即值少于或等于一预定值时,所述第四装置转移上述微处理器的控制权到上述第二组微指令序列内的上述目标位置。
4.根据权利要求1所述的微处理器,其特征在于,还包括:
第五装置,因应上述字串重复搬移宏指令,在转移上述微处理器的控制权到上述第二组微指令序列内的上述目标位置后,清除上述快速字串旗标。
5.根据权利要求1所述的微处理器,其特征在于,上述第二组微指令序列包括相同的微指令连续集的阵列,每一个上述微指令连续集搬移一组字串位,上述微处理器还包括:
第六装置,根据储存的上述立即值计算出上述第二组微指令序列内的上述目标位置,上述目标位置为上述阵列的一索引。
6.根据权利要求5所述的微处理器,其特征在于,上述阵列的大小是N个微指令连续集,N为正整数,其中上述索引为N减去储存的上述立即值。
7.一种微处理器方法,其特征在于,用来执行IA-32架构字串重复搬移宏指令,其中被搬移的字串的字长度被指定为于上述IA-32架构的ECX暂存器中的一立即值,上述微处理器包括一用来储存多个微指令序列的存储器,上述微处理器方法包括:
因应搬移上述立即值到上述IA-32架构的ECX暂存器的宏指令,设定一快速字串旗标并储存上述立即值;
因应以不同于搬移上述立即值到上述IA-32架构的ECX暂存器的方式修改上述IA-32架构的ECX暂存器的宏指令,清除上述快速字串旗标;
因应一字串重复搬移宏指令,当上述快速字串旗标被清除时,转移上述微处理器的控制权到一第一组微指令序列以完成上述字串重复搬移宏指令;以及
因应上述字串重复搬移宏指令,当上述快速字串旗标被设定时,根据储存的上述立即值转移上述微处理器的控制权到一第二组微指令序列内的一目标位置以完成上述字串重复搬移宏指令;
其中上述第一组微指令序列包括一条件分支微指令,当上述条件分支微指令被执行时,上述条件分支微指令根据上述IA-32架构的ECX暂存器里储存的字长度条件分支到位于上述第一组微指令序列内的一微指令;
其中上述第二组微指令序列不包含任何条件分支微指令。
8.根据权利要求7所述的微处理器方法,其特征在于,还包括:
因应搬移上述立即值到上述IA-32架构的ECX暂存器的宏指令,只有当储存的上述立即值少于或等于一预定值时,设定上述快速字串旗标。
9.根据权利要求7所述的微处理器方法,其特征在于,还包括:
因应上述字串重复搬移宏指令,如果上述快速字串旗标被设定,并且只有当储存的上述立即值少于或等于一预定值时,转移上述微处理器的控制权到上述第二组微指令序列内的上述目标位置。
10.根据权利要求7所述的微处理器方法,其特征在于,还包括:
因应上述字串重复搬移宏指令,在转移上述微处理器的控制权到上述第二组微指令序列内的上述目标位置后,清除上述快速字串旗标。
11.根据权利要求7所述的微处理器方法,其特征在于,上述第二组微指令序列包括相同的微指令连续集的阵列,每一个上述微指令连续集搬移一组字串位,上述微处理器方法还包括:
根据储存的上述立即值,计算上述第二组微指令序列内的上述目标位置,上述目标位置为上述阵列的一索引。
12.根据权利要求11所述的微处理器方法,其特征在于,上述阵列的大小是N个微指令连续集,N为正整数,其中上述索引为N减去储存的上述立即值。
CN2009101693459A 2008-09-09 2009-08-25 微处理器及微处理器方法 Active CN101661384B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US9547308P 2008-09-09 2008-09-09
US61/095,473 2008-09-09
US12/270,010 2008-11-13
US12/270,010 US7802078B2 (en) 2008-09-09 2008-11-13 REP MOVE string instruction execution by selecting loop microinstruction sequence or unrolled sequence based on flag state indicative of low count repeat

Publications (2)

Publication Number Publication Date
CN101661384A CN101661384A (zh) 2010-03-03
CN101661384B true CN101661384B (zh) 2012-08-15

Family

ID=41789433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101693459A Active CN101661384B (zh) 2008-09-09 2009-08-25 微处理器及微处理器方法

Country Status (3)

Country Link
US (1) US7802078B2 (zh)
CN (1) CN101661384B (zh)
TW (1) TWI395135B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8090931B2 (en) * 2008-09-18 2012-01-03 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US10261790B2 (en) 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
CN107544937A (zh) * 2016-06-27 2018-01-05 深圳市中兴微电子技术有限公司 一种协处理器、数据写入方法和处理器
US10296416B2 (en) 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
US10255068B2 (en) 2017-03-03 2019-04-09 International Business Machines Corporation Dynamically selecting a memory boundary to be used in performing operations
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US10564967B2 (en) * 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10613862B2 (en) * 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10620956B2 (en) * 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US11693666B2 (en) * 2021-10-20 2023-07-04 Arm Limited Responding to branch misprediction for predicated-loop-terminating branch instruction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144426A1 (en) * 2001-10-23 2005-06-30 Ip-First Llc Processor with improved repeat string operations
US7366885B1 (en) * 2004-06-02 2008-04-29 Advanced Micro Devices, Inc. Method for optimizing loop control of microcoded instructions

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0270081B1 (en) * 1986-12-01 1995-05-10 Nec Corporation Microprogram controller receiving interrupt request during instruction execution
US5752015A (en) * 1996-03-29 1998-05-12 Integrated Device Technology, Inc. Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144426A1 (en) * 2001-10-23 2005-06-30 Ip-First Llc Processor with improved repeat string operations
US7366885B1 (en) * 2004-06-02 2008-04-29 Advanced Micro Devices, Inc. Method for optimizing loop control of microcoded instructions

Also Published As

Publication number Publication date
TW201011638A (en) 2010-03-16
US7802078B2 (en) 2010-09-21
TWI395135B (zh) 2013-05-01
CN101661384A (zh) 2010-03-03
US20100064122A1 (en) 2010-03-11

Similar Documents

Publication Publication Date Title
CN101661384B (zh) 微处理器及微处理器方法
US11307873B2 (en) Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10565134B2 (en) Apparatus, methods, and systems for multicast in a configurable spatial accelerator
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US10915471B2 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
EP3776229A1 (en) Apparatuses, methods, and systems for remote memory access in a configurable spatial accelerator
US9298437B2 (en) Unrolling quantifications to control in-degree and/or out-degree of automaton
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
WO2019194918A1 (en) Apparatuses, methods, and systems for conditional queues in a configurable spatial accelerator
CN1299218C (zh) 执行指令的方法
US20200310797A1 (en) Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
KR101722645B1 (ko) 축소된 다중 네스트된 루프들의 벡터화
TW201802668A (zh) 可中斷及可重啟矩陣乘法指令、處理器、方法和系統
TW202125287A (zh) 用於矩陣運算加速器之指令的裝置,方法和系統
WO2020005447A1 (en) Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
WO2020005449A1 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
CN109992302A (zh) 远程原子操作的空间和时间上的归并
CN111767079A (zh) 用于矩阵操作加速器的转置指令的装置、方法和系统
US20210200540A1 (en) Apparatuses, methods, and systems for fused operations in a configurable spatial accelerator
US7039793B2 (en) Microprocessor apparatus and method for accelerating execution of repeat string instructions
JPH11259290A (ja) マイクロプロセッサ、演算処理実行方法及び記憶媒体
JP4444305B2 (ja) 半導体装置
CN112149050A (zh) 用于增强的矩阵乘法器架构的装置、方法和系统
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム

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