CN101520723B - 用于装入/移动以及复制指令的处理器、系统和方法 - Google Patents

用于装入/移动以及复制指令的处理器、系统和方法 Download PDF

Info

Publication number
CN101520723B
CN101520723B CN2009101331655A CN200910133165A CN101520723B CN 101520723 B CN101520723 B CN 101520723B CN 2009101331655 A CN2009101331655 A CN 2009101331655A CN 200910133165 A CN200910133165 A CN 200910133165A CN 101520723 B CN101520723 B CN 101520723B
Authority
CN
China
Prior art keywords
register
processor
source
instruction
destination register
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.)
Expired - Fee Related
Application number
CN2009101331655A
Other languages
English (en)
Other versions
CN101520723A (zh
Inventor
P·罗塞尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN101520723A publication Critical patent/CN101520723A/zh
Application granted granted Critical
Publication of CN101520723B publication Critical patent/CN101520723B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一种方法包括,在处理器中,装入/移动源的第一部分位到目标寄存器的第一部分并在目标寄存器的后续部分中复制所述第一部分位。

Description

用于装入/移动以及复制指令的处理器、系统和方法
本发明专利申请是国际申请号为PCT/US02/40166,国际申请日为2002年12月12日,进入中国国家阶段的申请号为02825327.2,名称为“用于装入/移动以及复制指令的处理器、系统和方法”的发明专利申请的分案申请。
技术领域
本发明涉及处理器的装入/移动以及复制指令。
背景技术
系统体系结构说明处理器操作的模式以及被提供用于支持操作系统的机制,该机制包括面向系统的寄存器和数据结构以及面向系统的指令。该系统体系结构也提供用于在实际地址和保护模式之间切换的必要机制。
对系统体系结构引入单指令、多数据(SIMD)技术提供了对包含于64位寄存器内的封包整数数据的并行计算。SIMD对例如高级媒体、图像处理和数据压缩应用中的处理器提供增强性能。
发明内容
为了解决以上问题,本发明的第一方面提供了一种处理器,包括:存储单元;控制器逻辑;以及执行单元数据路径,包括算术逻辑单元和通用寄存器组,所述算术逻辑单元响应于指令执行功能,其中一个指令包括移动和复制指令,促使算术处理器将源的多个位组装入目的寄存器的多个不连续的位组,并把所述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
本发明的第二方面提供一种方法,所述方法包含:在处理器中,将源的多个位组装入到目的寄存器的多个不连续的位组;以及把所述目的寄存器中的所述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
本发明的第三方面提供一种系统,包括:存储第一指令的存储器;执行所述第一指令的处理器,使得该处理器:将源的多个位组装入到目的寄存器的多个不连续的位组中;以及把所述目的寄存器中的所述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
本发明的第四方面提供一种处理器,包括:存储单元;控制器逻辑;以及执行单元数据路径,包括算术逻辑单元和通用寄存器组,所述算术逻辑单元响应于指令执行功能,其中一个指令包括移动封包单浮点高和复制指令,该指令促使处理器将源的位[63-32]装入128位的目的寄存器的位[31-0]中,将目的寄存器的位[31-0]复制到目的寄存器的位[63-32]中,将源的位[127-96]装入目的寄存器的位[95-64]中,以及在所述目的寄存器的位[127-96]中复制目的寄存器的位[95-64]。
本发明的第五方面提供一种在处理器中执行的方法,所述方法包含:访问源的位[127-0];以及在目的寄存器的位[31-0]中装入源的位[63-32],并在目的寄存器的位[63-32]中复制目的寄存器的位[31-0];以及在所述目的寄存器的位[95-64]中装入源的位[127-96],并且在目的寄存器的位[127-96]中复制目的寄存器的位[95-64]。
本发明的第六方面提供一种系统,包括:存储第一指令的存储器;执行所述第一指令的处理器,使得所述处理器:在128位的目的寄存器的位[31-0]中装入源的位[63-32];在所述目的寄存器的位[63-32]中复制所述目的寄存器的位[31-0];在所述目的寄存器的位[95-64]中装入源的位[127-96];以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。
本发明的第七方面提供一种处理器,包括:存储单元;控制器逻辑;以及执行单元数据路径,包括算术逻辑单元和通用寄存器组,所述算术逻辑单元响应于指令执行功能,其中一个指令包括移动封包单浮点低和复制指令,该指令促使处理器把源的位[31-0]装入到128位的目的寄存器的位[31-0]中,在所述目的寄存器的位[63-32]中复制该目的寄存器的位[31-0],在所述目的寄存器的位[95-64]中装入所述源的位[95-64],以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。
本发明的第八方面提供一种方法,所述方法包含:在处理器中,在128位的目的寄存器的位[31-0]中装入源的位[31-0];在所述目的寄存器的位[63-32]中复制目的寄存器的位[31-0];在所述目的寄存器的位[95-64]中装入所述源的位[95-64];以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。
本发明的第九方面提供一种系统,包括:存储第一指令的存储器;执行所述第一指令的处理器,使得所述处理器:在128位的目的寄存器的位[31-0]中装入源的位[31-0];在所述目的寄存器的位[63-32]中复制所述目的寄存器的位[31-0];在所述目的寄存器的位[95-64]中装入所述源的位[95-64];以及在所述目的寄存器的位[127-96]中复制所述目的寄存器的位[95-64]。
附图说明
图1是处理器的框图。
图2是执行环境的框图。
图3是字节顺序基本数据类型的框图。
图4示出浮点格式。
图5示出概括各种SIMD扩展、数据类型以及该数据类型如何被封包到寄存器中的表。
具体实施方式
参考图1,示出处理器10。该处理器10是三路超级计数器、管道体系结构。处理器10通过使用并行处理技术,平均能够在每个时钟周期中解码、分派以及完成(引出)三条指令的执行。为处理这个水平的指令吞吐量,处理器10使用去耦的12阶段管道,该管道支持无序的指令执行。处理器10的微体系结构管道被分为4个部分,即,一级高速缓存12和二级高速缓存14、前端16、无序执行核心18,以及引出部分20。指令和数据通过与系统总线24连接的总线接口单元22供给给这些单元。前端16以程序顺序向该无序核心18供给指令,该核心具有非常高的执行带宽且能够执行具有1/2时钟周期延时的基本整数操作。前端16读取指令并将指令解码为称作微操作(μ-ops)的简单操作。前端16能以最初的程序顺序在每周期将多个微操作提交到无序核心18。前端16执行几个基本功能。例如,前端16执行很有可能被执行的预取指令、读取还没有被预取的指令、将指令解码为微操作、产生复杂指令和专用码的微码、递送来自执行轨迹高速缓存26的已经解码的指令,以及使用分支预测单元28中的高级算法来预测分支。
处理器10的前端16被设计为解决高速管道微处理器中的某些普通问题。例如,这些问题中的两个是延迟的主要来源。这是解码从目标读取且由于高速缓存线中间的分支或分支目标而浪费解码带宽的指令的时间。
执行轨迹高速缓存26通过保存已经解码的指令而处理这两个问题。通过转换引擎(未示出)来读取指令并对指令进行解码,且将该指令构建成称作轨迹的微操作序列。这些微操作轨迹被保存在轨迹高速缓存26中。来自最有可能的分支目标的指令立即跟随在该分支的后面,而不考虑指令地址的连续性。一旦建立轨迹,则搜索轨迹高速缓存26查找跟随在该轨迹后面的指令。若该指令显现为现有轨迹内的第一条指令,则对来自存储器层次的指令30的读取和解码就停止,且轨迹高速缓存26变成新的指令源。
执行轨迹高速缓存18和转换引擎(未示出)具有协同操作分支预测硬件。使用分支目标缓冲器(BTBS)28,基于分支目标的线性地址来预测该分支目标,且尽快读取该分支目标。若分支目标确实被缓冲在那里,则从轨迹高速缓存26读取该分支目标;否则,从存储器层次读取该分支目标。转换引擎的分支预测信息被用来沿着最有可能的路径来形成轨迹。
核心18无序地执行指令,允许处理器10重排序指令,以使若一个微操作在等待数据或竞争执行资源时被延迟,则其它在程序顺序中较后的微操作可在其周围继续进行。处理器10使用几个缓冲器来使T操作(T-ops)流平滑。这意味着当管道的一部分经历延迟时,该延迟可被其它并行执行的操作或者在缓冲器中先前排队等候的微操作执行覆盖。
核心18被设计为促进并行执行。核心18每周期最多可分派6个微操作;注意这个超过轨迹高速缓存26以及引出20微操作带宽。绝大多数的管道可在每周期开始执行新的微操作,以使可在任何时间对每个管道处理几个指令。多个算术逻辑单元(ALU)指令可在每周期开始两个,且多个浮点指令可在每两个周期开始一个。最终,微操作的数据输入一准备好且资源一旦可用,微指令就可开始无序的执行。
引出部分20接收来自执行核心18的执行微操作的结果,并对该结果进行处理,以使根据最初程序顺序来更新适当的体系结构状态。为语义上的正确执行,执行的结果在其引出之前是以最初的程序顺序进行的。可将异常作为引出的指令触发。这样,异常不能随机地出现。它们以正确的顺序出现,并且处理器10可在执行后正确的重新启动。
当微操作完成其结果并将其结果写到目的文件的时候,该微操作引出。每周期引出的微操作可达3个。引出部分20中的重排序缓冲器(ROB)(未示出)是处理器10中的单元,它缓冲已完成的微操作、按照顺序更新体系结构状态,并管理异常的排序。
引出部分20也跟踪分支并将已更新的分支目标信息发送到BTB 28,以更新分支历史。如此,不再需要的轨迹可从轨迹高速缓存26中清除,并且可读取新的分支路径,这是基于已更新的分支历史信息的。
参考图2,示出执行环境50。给予处理器10上运行的任何程序或任务(图1中的)一组资源,用于执行指令并用于保存代码、数据和状态信息。这些资源组成处理器10的执行环境50。在处理器10上运行的应用程序和操作系统或者可执行文件共同使用执行环境50。执行环境50包括基本程序执行寄存器52、地址空间54、浮点单元(FPU)寄存器56、多媒体扩展寄存器(MMX)58,以及SIMD扩展(SSE和SSE2)寄存器60。
在处理器10上运行的任何任务或程序可寻址直到4G字节(232字节)的线性地址基54以及直到64G字节(236字节)的物理地址空间。地址空间54可为平坦的或为分段的。使用物理地址扩展机制,可寻址236-1的物理地址空间。
基本程序执行寄存器52包括8个通用寄存器62、6个段寄存器64、EFLAGS寄存器66,以及EIP(指令指针)寄存器68。基本程序执行寄存器52提供基本执行环境,在其中执行一组通用指令。这些指令对字节、字和双字整数执行基本整数算术,处理程序流控制,操作位和字节强度,并寻址存储器。
FPU寄存器56包括8个FPU数据寄存器70、FPU控制寄存器72、状态寄存器74、FPU指令指针寄存器76、FPU操作数(数据)指针寄存器78、FPU标签寄存器80以及FPU操作码寄存器82。FPU寄存器56提供执行环境,用于操作单精度、双精度,以及双扩展精度浮点值,字、双字,以及四字整数,还有二进制编码的十进制(BCD)值。
8个多媒体扩展寄存器58支持64位封包字节、字和双字整数上的单指令、多数据(SIMD)操作的执行。
SIMD扩展(SSE和SSE2)寄存器60包括8个扩展多媒体(XMM)数据寄存器84和MXCSR寄存器86。SIMD扩展(SSE和SSE2)寄存器60支持128位封包单精度和双精度浮点值以及128位封包字节、字、双字以及四字整数上的SIMD操作的执行。
栈(未示出)支持过程或子例程调用以及过程或子例程之间的参数传递。
通用寄存器62可用于保存操作数和指针。段寄存器64保存的段选择器可达6个。EFLAGS(程序状态和控制)寄存器66报告正被执行的程序状态,并允许处理器的有限(应用程序级)控制。EIP(指令指针)寄存器68包含指向下一条要执行的指令的32位指针。
32位通用寄存器62被提供用于保存逻辑和算术操作的操作数、地址计算的操作数,以及存储器指针。段寄存器64保存64位段选择器。段选择器是识别存储器中段的特别指针。为访问存储器中的特定段,该段的段选择器必须出现在适当的段寄存器64中。
当编写应用代码时,程序员通常用汇编命令和符号生成段选择器。然后,汇编程序和其它的工具产生与这些命令和符号相关联的实际段选择器值。若写系统代码,则程序设计员可能需要直接产生段选择器。
如何使用段寄存器64取决于操作系统或可执行文件正使用的存储器管理模式的类型。当使用平坦(未分段)存储器模式时,段寄存器64被装入指向重叠段的段选择器,它们每个开始于线性地址空间上的地址零。然后,这些重叠的段包括该程序的线性地址空间。通常,两个重叠段被定义:一个用于代码,而另一个用于数据和栈。段寄存器64的CS段寄存器(未示出)指向代码段,且所有其它的段寄存器指向数据和栈段。
当使用分段存储器模式时,每个段寄存器64一般被装入不同的段选择器,以使每个段寄存器64指向线性地址空间内的不同段。在任何时间,程序可这样访问直到线性地址空间中的6个段。为访问没有被其中一个段寄存器64指到的段,程序首先装入要被访问的段选择器到段寄存器64中。
32位EFLAGS寄存器66包含一组状态标记、控制标记,以及一组系统标记。可使用专用指令来直接修改EFLAGS寄存器66中的某些标记。没有指令允许整个寄存器66被直接检查或修改。然而,下面的指令可被用来将移动标记组移入或移出过程栈或通用寄存器:LAHF、SAHF、push-F、push-FD、pop-F,以及pop-FD。在EFLAGS寄存器66的内容已经被传递到过程栈或通用寄存器之后,可使用处理器10位操作指令来检查和修改该标记。
当暂停任务时,处理器10自动保存正被暂停任务的任务状态段(TSS)(未示出)中的EFLAGS寄存器66的状态。当将其自身绑定到新的任务时,处理器10将来自新的任务程序状态寄存器(PSS,未示出)的数据装入EFLAGS寄存器66。
当调用中断或异常处理程序过程时,处理器10自动保存过程栈上的EFLAGS寄存器66的状态。当用任务开关来处理中断或异常时,EFLAGS寄存器66的状态被保存在正被暂停任务的TSS上。
用在处理器10中的基本数据类型是字节、字、双字、四字和双四字。字节是8位,字是两个字节(16位),双字是4个字节(32位),四字是8个字节(64位),以及双四字是16个字节(128位)。
参考图3,它示出每个基本数据类型在作为存储器中的操作数引用时的字节顺序。每个数据类型的低字节(位0~7)占用存储器中的最低地址,且该地址也是该操作数的地址。
字、双字和四字不必在存储器中在自然边界上对齐。字、双字、四字的自然边界分别是已编号为偶数的地址、可被4整除的地址,以及被8整除的地址。然而,为改善程序的性能,数据结构(尤其是栈)每逢可能的时候就应在自然边界上对齐。关于这个的原因是处理器10需要两个存储器访问来进行不对齐的存储器访问,然而已经对齐的访问需要一个存储器访问。跨越4字节边界的字或双字操作数或者跨越8字节边界的四字操作数被认为是未对齐,且需要两个单独的存储器总线周期来访问。开始于奇地址但不跨越字边界的字被认为是已经对齐的,且其仍旧能够在一个总线周期内被访问。
对双四字操作的某些指令需要存储器操作数在自然边界上对齐。若未对齐的操作数被指定的话,则这些指令产生普通保护异常(#GP)。双四字的自然边界是任何可被16整除的地址。其它对双四字操作的指令允许未对齐的访问,而不产生普通保护异常,然而,我们需要附加的存储器总线周期来从存储器访问未对齐数据。
尽管字节、字和双字是处理器10的基本数据类型,但是某些指令支持这些数据类型的附加解释,以允许对数字数据类型执行操作。例如,处理器10定义两种类型的整数:无符号的和有符号的。无符号的整数是范围从零到最大正数的普通二进制数值,可在选择的操作数大小内对其进行编码。有符号的整数是二的补码二进制数值,其既可被用来代表正整数值,也可以被用来代表负整数值。
处理器10定义并操作3种浮点数据类型:单精度浮点、双精度浮点,以及双扩展精度浮点。这些数据类型的数据格式直接对应于二进制浮点算术如在IEEE标准754中指定的格式。
指针是存储器中位置的地址。处理器10定义两种类型的指针:近指针(32位)和远指针(48位)。近指针是段内32位偏移量(也称作有效地址)。当隐含地确定了被访问的段的身份时,近指针被用于平坦存储器模型中的所有存储器参考或分段模型中的参考。远指针是48位逻辑地址,其包含16位段选择器和32位偏移量。远指针被用于存储器参考和已分段的存储器模型,那里正被访问段的身份必须被显式指定。
位字段是连续的位序列。它可开始于存储器中任何字节的任何比特位置,且其包含的位可达32位。串可为位、字节、字或双字的连续序列。位串可开始于任何字节的任何比特位置,且其包含的位可达232-1位。字节串可包含字节、字或双字,其范围可从零到232-1字节(4G字节)。
二进制编码的十进制整数(BCD整数)是具有范围从0到9的有效值的无符号4位整数。处理器10定义对位于一个或多个通用寄存器62或在一个或多个FPU寄存器56中的BCD整数的操作。
参考图4,实数被表达为FPU 56浮点寄存器70中的浮点格式100。该浮点格式包括3部分,即,符号102、有效数104和指数106。符号102是表明该数是正(0)或负(1)的二进制数值。有效数104有两个部分:1位二进制整数(也称为J位)108和二进制分数110。整数位108通常没有被表达,而是隐含的值。指数106是表达与有效数104相乘的以2为底的幂的二进制整数。
处理器10定义一组64位和128位封包数据类型并对其操作,这用于SIMD操作中。这些数据类型包括基本数据类型(封包字节、字、双字和四字)以及用于封包整数和封包浮点操作中的基本数据类型的数字解释。
主要在64位多媒体扩展寄存器58中操作64位SIMD数据类型。基本的64位封包数据类型是封包字节、封包字和封包双字。当在多媒体扩展寄存器58中的这些数据类型上执行数字SIMD操作时,这些数据类型被解释为包含字节、字,或双字整数值。
主要在128位扩展多媒体(MMX)寄存器84和存储器54中操作128位封包SIMD数据类型。基本的128位封包数据类型是封包字节、封包字、封包双字和封包四字。当在扩展多媒体(MMX)寄存器84中的这些基本数据类型上执行SIMD操作时,这些数据类型被解释为包含封包的或定标器单精度浮点或双精度浮点值,或者被解释为包含封包的字节、字、双字、四字整数值。
参考图5,表120示出这样的概要,它包含各种SIMD扩展、被操作的数据类型,以及这些数据类型如何被封包到多媒体扩展寄存器58和扩展多媒体(XMM)寄存器84中。
如上所述,多媒体扩展指令操作包含于存储器54、多媒体扩展寄存器58,和/或通用寄存器62内的封包字节、字、双字或四字整数操作数。这些多媒体扩展指令包括数据传递指令、转换指令、封包算术指令、比较指令、逻辑指令、移位和旋转指令以及状态管理指令。
SIMD扩展(SSE和SSE2)指令被分为一些组,如4组:SIMD单精度浮点指令,它在扩展多媒体(XMM)寄存器84上操作,MXSCR指令,它在MXCSR寄存器86上操作,64位SIMD整数指令,它在MMX寄存器58上操作,以及可高速缓存性控制、预取还有对指令进行排序的指令。
一类指令是移动/装入以及复制类型指令。这些指令被称为“组合的”指令,这是因为它们不需要在被装入的数值上进行显式操作来获得例如位的复制。本体系结构包括MOVDDUP指令、MOVSHDUP指令和MOVSLDUP指令。提供这些指令以支持具有封包单精度和封包双精度浮点数据类型的复杂算术。这些指令可被用在不同的应用中。例如,这些指令可改善信号处理应用和包括处理自然数据类型的应用的效率。
MOVDDUP指令是装入/移动64位(若源是寄存器的话,就是位[63-0])的移动一个双浮点并复制的SSE2指令。MOVDDUP指令的执行返回和同一结果寄存器的较低和较高的一半两者中的相同的64位,也就是说,从该源复制64位。这样,若该源具有条目1/0,则该目的文件将具有条目1/0/1/0。MOVEDDUP指令具有下面的格式:
MOVEDDUP目的,源
其中源操作数是存储器位置54或第二个扩展多媒体(XMM)寄存器84,且该目的操作数是第一个扩展多媒体(XMM)寄存器84。该源包含双浮点数据类型。
在操作中,若源操作数是存储器地址,则第一个扩展多媒体(XMM)寄存器的位[63-0]用该存储器地址的位[63-0]来装入,且第一个扩展多媒体(XMM)寄存器的位[127-64]用存储器位置的位[63-0]来装入。若源操作数是第二个扩展多媒体(XMM)寄存器,则第一个扩展多媒体(XMM)寄存器的位[63-0]被设置为与第二个扩展多媒体(XMM)寄存器的位[63-0]相等,且第一个扩展多媒体(XMM)寄存器的位[127-64]被设置为与第二个扩展多媒体(XMM)寄存器的位[63-0]相等。
线性地址对应于参考存储器数据的最低有效字节的地址。当指出存储器地址时,位于存储器位置数据的16字节被装入或被保存。当使用寄存器-寄存器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。
MOVSHDUP指令是装入/移动128位并复制作为结果的寄存器中的条目1和3的移动封包单浮点高并复制的SSE2指令。在128位源寄存器带宽的例子中,每个条目是32位。特别地,具有为3/2/1/0条目的源(0是低的单精度条目,3是高的单精度条目),在MOVSHDUP指令执行之后的结果寄存器将保存被复制以提供条目3/3/1/1的条目3和1。MOVSHDUP具有下面的格式:
MOVSHDUP目的,源
其中源操作数代表存储器位置54或第二个扩展多媒体(XMM)寄存器84,且该目的操作数是第一个扩展多媒体(XMM)寄存器84。该源操作数具有封包单浮点数据类型。
在操作中,若该源操作数是存储器地址,则第一个扩展多媒体(XMM)寄存器的位[31-0]用该存储器地址的位[63-32]来装入,第一个扩展多媒体(XMM)寄存器的位63-32用存储器地址的位[63-32]来装入,第一个扩展多媒体(XMM)寄存器的位95-64用存储器地址的位[127-96]来装入,且第一个扩展多媒体(XMM)寄存器的位127-96用存储器地址的位[127-96]来装入。
若源操作数是第二个扩展多媒体(XMM)寄存器,则第一个扩展多媒体(XMM)寄存器的位[31-0]被设置为与第二个扩展多媒体(XMM)寄存器的为[63-32]相等,第一个扩展多媒体(XMM)寄存器的位[63-32]被设置为与第二个扩展多媒体(XMM)寄存器的位[83-32]相等,第一个扩展多媒体(XMM)寄存器的位[95-64]被设置为与第二个扩展多媒体(XMM)寄存器的位[127-96]相等,且第一个扩展多媒体(XMM)寄存器的位[127-96]被设置为与第二个扩展多媒体(XMM)寄存器的位[127-96]相等。
线性地址对应于参考存储器数据的最低有效字节的地址。当指示存储器地址时,位于存储器位置数据的16字节被装入或被保存。当使用寄存器-寄存器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。
MOVSHDUP指令是复制装入/移动128位并复制条目0和2的移动封包单浮点低并复制的SSE2指令。特别地,具有为3/2/1/0的源(0是较低的单精度条目),结果寄存器将保存条目2/2/0/0。MOVSLDUP指令具有下面的格式:
MOVSLDUP目的,源
其中该源操作数是存储器位置54或第二个扩展多媒体(XMM)寄存器84,且该目的操作数是第一个扩展多媒体(XMM)寄存器84。该源操作数包含封包单浮点数据类型。
在操作中,若该源操作数是存储器地址,则第一个扩展多媒体(XMM)寄存器的位[31-0]用该存储器地址的位[31-0]来装入,第一个扩展多媒体(XMM)寄存器的位[63-32]用存储器地址的位[31-0]来装入,第一个扩展多媒体(XMM)寄存器的位[95-64]用存储器地址的位[95-64]来装入,且第一个扩展多媒体(XMM)寄存器的位[127-96]用存储器地址的位[95-64]来装入。若源操作数是寄存器,则第一个扩展多媒体(XMM)寄存器的位[31-0]被设置为与第二个扩展多媒体(XMM)寄存器的位[31-0]相等,第一个扩展多媒体(XMM)寄存器的位[63-32]被设置为与第二个扩展多媒体(XMM)寄存器的位[31-0]相等,第一个扩展多媒体(XMM)寄存器的位[95-64]被设置为与第二个扩展多媒体(XMM)寄存器的位[95-64]相等,且第一个扩展多媒体(XMM)寄存器的位[127-96]被设置为与第二个扩展多媒体(XMM)寄存器的位[95-64]相等。
线性地址对应于参考存储器数据的最低有效字节的地址。当指示存储器地址时,位于存储器位置数据的16字节被装入或被保存。当使用寄存器-寄存器形式的操作时,128位源寄存器的内容被复制到128位目的寄存器中。
因此,其它的实施例在下面权利要求书的范围内。

Claims (20)

1.一种处理器,包括:
一级数据缓存;
二级缓存;
分支预测单元;
通用寄存器组;
解码单元,以解码包括移动和复制指令的多个封包的数据指令;以及
执行单元,以响应于指令执行功能,其中一个指令包括移动和复制指令,使得所述处理器将源的多个位组装入目的寄存器的多个不连续的位组,并把所述多个不连续的位组中的每个组复制到该目的寄存器的后续位组中。
2.如权利要求1所述的处理器,其特征在于,所述源的所述多个位组是代表存储器位置中的双封包双浮点数据的128位。
3.如权利要求1所述的处理器,其特征在于,所述源的所述多个位组是代表源寄存器中的双封包双浮点的128位。
4.如权利要求1所述的处理器,其特征在于,所述目的寄存器的多个位组被装入所述源的第一组的位[63-0]。
5.如权利要求1所述的处理器,其特征在于,所述源是第一寄存器,用于存储128位的封包数据,也用作存储浮点数据的浮点寄存器。
6.如权利要求1所述的处理器,还包括引出单元。
7.一种处理器,包括:
一级数据缓存;
二级缓存;
分支预测单元;
控制器逻辑单元;
通用寄存器组;
解码单元,以解码包括移动和复制指令的多个封包的数据指令;以及
执行单元,以响应于指令执行功能,其中一个指令包括移动封包单浮点高和复制指令,以使得处理器把源的位[63-32]装入128位的目的寄存器的位[31-0]中,将目的寄存器的位[31-0]复制到该目的寄存器的位[63-32]中,把源的位[127-96]装入目的寄存器的位[95-64]中,以及将所述目的寄存器的位[95-64]复制到该目的寄存器的位[127-96]中。
8.如权利要求7所述的处理器,其特征在于,所述移动和复制指令还包括:
源操作数字段;以及
目的操作数字段。
9.如权利要求7所述的处理器,其特征在于,所述源是128位源寄存器。
10.如权利要求7所述的处理器,其特征在于,所述源的所述多个位组是代表存储器位置中的四封包单浮点数据的128位。
11.如权利要求7所述的处理器,其特征在于,所述源的所述多个位组是代表源寄存器中的四封包双浮点的128位。
12.如权利要求7所述的处理器,其特征在于,所述源是第一寄存器,用于存储128位的封包数据,也用作存储浮点数据的浮点寄存器。
13.如权利要求7所述的处理器,还包括引出单元。
14.一种处理器,包括:
一级数据缓存;
二级缓存;
分支预测单元;
通用寄存器组;
解码单元,以解码包括移动和复制指令的多个封包的数据指令;以及
执行单元,以响应于指令执行功能,其中一个指令包括移动封包单浮点低和复制指令,以使得处理器把源的位[31-0]装入到128位的目的寄存器的位[31-0]中,将所述目的寄存器的位[31-0]复制到该目的寄存器的位[63-32]中,把所述源的位[95-64]装入到所述目的寄存器的位[95-64]中,以及将所述目的寄存器的位[95-64]复制到该目的寄存器的位[127-96]中。
15.如权利要求14所述的处理器,其特征在于,所述移动和复制指令还包括:
源操作数字段;以及
目的操作数字段。
16.如权利要求14所述的处理器,其特征在于,所述源是128位源寄存器。
17.如权利要求14所述的处理器,其特征在于,所述源的所述多个位组是代表存储器位置中的四封包单浮点数据的128位。
18.如权利要求14所述的处理器,其特征在于,所述源的所述多个位组是代表源寄存器中的四封包双浮点的128位。
19.如权利要求14所述的处理器,其特征在于,所述源是第一寄存器,用于存储128位的封包数据,也用作存储浮点数据的浮点寄存器。
20.如权利要求14所述的处理器,还包括引出单元。
CN2009101331655A 2001-12-20 2002-12-12 用于装入/移动以及复制指令的处理器、系统和方法 Expired - Fee Related CN101520723B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/032,144 US7853778B2 (en) 2001-12-20 2001-12-20 Load/move and duplicate instructions for a processor
US10/032,144 2001-12-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB028253272A Division CN100492281C (zh) 2001-12-20 2002-12-12 用于装入/移动以及复制指令的处理器、系统和方法

Publications (2)

Publication Number Publication Date
CN101520723A CN101520723A (zh) 2009-09-02
CN101520723B true CN101520723B (zh) 2011-01-12

Family

ID=21863332

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2009101331655A Expired - Fee Related CN101520723B (zh) 2001-12-20 2002-12-12 用于装入/移动以及复制指令的处理器、系统和方法
CNB028253272A Expired - Fee Related CN100492281C (zh) 2001-12-20 2002-12-12 用于装入/移动以及复制指令的处理器、系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB028253272A Expired - Fee Related CN100492281C (zh) 2001-12-20 2002-12-12 用于装入/移动以及复制指令的处理器、系统和方法

Country Status (9)

Country Link
US (6) US7853778B2 (zh)
JP (3) JP2006502464A (zh)
KR (1) KR100806408B1 (zh)
CN (2) CN101520723B (zh)
AU (1) AU2002357263A1 (zh)
DE (1) DE10297581T5 (zh)
RU (1) RU2292581C2 (zh)
TW (1) TW594569B (zh)
WO (1) WO2003054692A1 (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
AU2003256870A1 (en) * 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
EP1508853A1 (en) * 2003-08-19 2005-02-23 STMicroelectronics Limited Computer system and method for loading non-aligned words
WO2006018822A1 (en) * 2004-08-20 2006-02-23 Koninklijke Philips Electronics, N.V. Combined load and computation execution unit
US8321872B2 (en) * 2006-06-28 2012-11-27 Nvidia Corporation Reusable, operating system aware hardware mutex
US8996152B2 (en) * 2006-06-28 2015-03-31 Nvidia Corporation Operating system aware hardware mutex
US20080077772A1 (en) * 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US8112675B2 (en) * 2006-09-28 2012-02-07 Nvidia Corporation Filesystem directory debug log
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8656139B2 (en) * 2011-03-11 2014-02-18 Telefonaktiebolaget L M Ericsson (Publ) Digital processor for processing long and short pointers and converting each between a common format
CN104126168B (zh) * 2011-12-22 2019-01-08 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
US10866807B2 (en) 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
US9904547B2 (en) 2011-12-22 2018-02-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems and instructions
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
WO2013101119A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Method and apparatus for controlling a mxcsr
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US10540179B2 (en) 2013-03-07 2020-01-21 MIPS Tech, LLC Apparatus and method for bonding branch instruction with architectural delay slot
US20140258667A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
CN103186363B (zh) * 2013-03-26 2015-09-30 北京经纬恒润科技有限公司 一种数值编辑方法及系统
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US10423413B2 (en) 2013-07-09 2019-09-24 Texas Instruments Incorporated Vector load and duplicate operations
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9600286B2 (en) 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9348643B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Prefetching of discontiguous storage locations as part of transactional execution
US9529653B2 (en) * 2014-10-09 2016-12-27 International Business Machines Corporation Processor register error correction management
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160224252A1 (en) * 2015-01-30 2016-08-04 Intel Corporation Hybrid memory architecture
EP3336692B1 (en) * 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
EP3336691B1 (en) 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
JP6995059B2 (ja) 2017-03-14 2022-01-14 株式会社トクヤマ フライアッシュの使用方法
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
RU2713709C1 (ru) * 2019-06-20 2020-02-06 Федеральное государственное унитарное предприятие "Научно-производственный центр автоматики и приборостроения имени академика Н.А. Пилюгина" (ФГУП "НПЦАП") Устройство преобразования информации
US10915421B1 (en) 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features
KR102307691B1 (ko) 2020-11-19 2021-10-05 주식회사 우드메탈 원적외선 및 음이온 방출 기능을 갖는 가구용 엣지마감재

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734880A (en) * 1993-11-30 1998-03-31 Texas Instruments Incorporated Hardware branching employing loop control registers loaded according to status of sections of an arithmetic logic unit divided into a plurality of sections
US5875355A (en) * 1995-05-17 1999-02-23 Sgs-Thomson Microelectronics Limited Method for transposing multi-bit matrix wherein first and last sub-string remains unchanged while intermediate sub-strings are interchanged
CN1275734C (zh) * 2002-10-31 2006-09-20 株式会社东芝 无铅接合材料及使用该材料的接合方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141005A (en) * 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
JPS61294550A (ja) 1985-06-21 1986-12-25 Nec Corp 電子計算機におけるデ−タ読取書込制御方式
US5522082A (en) 1986-01-23 1996-05-28 Texas Instruments Incorporated Graphics display processor, a graphics display system and a method of processing graphics data with control signals connected to a central processing unit and graphics circuits
US5268995A (en) * 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
US5613121A (en) 1994-10-19 1997-03-18 International Business Machines Corporation Method and system of generating combined storage references
US5673321A (en) * 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
US7085795B2 (en) 2001-10-29 2006-08-01 Intel Corporation Apparatus and method for efficient filtering and convolution of content data
US5983253A (en) 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US5936872A (en) 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
JP3735438B2 (ja) * 1997-02-21 2006-01-18 株式会社東芝 Risc計算機
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6820190B1 (en) 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
US7155601B2 (en) 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7631025B2 (en) 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
JP2009016397A (ja) 2007-06-29 2009-01-22 Toshiba Corp プリント配線板
JP5229819B2 (ja) 2009-04-01 2013-07-03 株式会社レヨーン工業 除塵装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734880A (en) * 1993-11-30 1998-03-31 Texas Instruments Incorporated Hardware branching employing loop control registers loaded according to status of sections of an arithmetic logic unit divided into a plurality of sections
US5875355A (en) * 1995-05-17 1999-02-23 Sgs-Thomson Microelectronics Limited Method for transposing multi-bit matrix wherein first and last sub-string remains unchanged while intermediate sub-strings are interchanged
CN1275734C (zh) * 2002-10-31 2006-09-20 株式会社东芝 无铅接合材料及使用该材料的接合方法

Also Published As

Publication number Publication date
KR100806408B1 (ko) 2008-02-21
CN101520723A (zh) 2009-09-02
TW200304091A (en) 2003-09-16
US20030120903A1 (en) 2003-06-26
RU2004122101A (ru) 2005-03-27
US8539202B2 (en) 2013-09-17
US20130013896A1 (en) 2013-01-10
US8200941B2 (en) 2012-06-12
RU2292581C2 (ru) 2007-01-27
CN1605062A (zh) 2005-04-06
US20110047361A1 (en) 2011-02-24
US20130219153A1 (en) 2013-08-22
US8650382B2 (en) 2014-02-11
US8032735B2 (en) 2011-10-04
WO2003054692A1 (en) 2003-07-03
US9043583B2 (en) 2015-05-26
JP2006502464A (ja) 2006-01-19
US20120317401A1 (en) 2012-12-13
CN100492281C (zh) 2009-05-27
TW594569B (en) 2004-06-21
JP2010152919A (ja) 2010-07-08
JP5960115B2 (ja) 2016-08-02
JP2014089730A (ja) 2014-05-15
KR20040068333A (ko) 2004-07-30
US20110258418A1 (en) 2011-10-20
DE10297581T5 (de) 2004-11-11
US7853778B2 (en) 2010-12-14
AU2002357263A1 (en) 2003-07-09

Similar Documents

Publication Publication Date Title
CN101520723B (zh) 用于装入/移动以及复制指令的处理器、系统和方法
KR101581177B1 (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
CN117349584A (zh) 实行16位浮点矩阵点积指令的系统和方法
CN109716290B (zh) 用于经融合的乘加的系统、装置和方法
US5729724A (en) Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
KR102478874B1 (ko) 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치
JP6711480B2 (ja) ベクトルインデックスロードおよびストアのための方法および装置
JP2019197531A (ja) 連鎖タイル演算を実施するためのシステムおよび方法
US5740093A (en) 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
CN105993000B (zh) 用于浮点寄存器混叠的处理器和方法
CN112148251A (zh) 跳过无意义的矩阵运算的系统和方法
US5764959A (en) Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
CN114675883A (zh) 用于对齐矩阵操作加速器瓦片的指令的装置、方法和系统
CN114675888A (zh) 用于加载矩阵操作加速器瓦片的指令的装置、方法和系统
US20220206854A1 (en) Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US20190138308A1 (en) Unaligned memory accesses
CN117083595A (zh) 用于对片行进行下转换并与寄存器进行交织的指令的装置、方法和系统
Lewin et al. Computer organization and programming
CN116339615A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110112

Termination date: 20201212

CF01 Termination of patent right due to non-payment of annual fee