CN1547113A - 用于存取处理器中的暂存器的装置与方法 - Google Patents
用于存取处理器中的暂存器的装置与方法 Download PDFInfo
- Publication number
- CN1547113A CN1547113A CNA200410045963XA CN200410045963A CN1547113A CN 1547113 A CN1547113 A CN 1547113A CN A200410045963X A CNA200410045963X A CN A200410045963XA CN 200410045963 A CN200410045963 A CN 200410045963A CN 1547113 A CN1547113 A CN 1547113A
- Authority
- CN
- China
- Prior art keywords
- working storage
- processor
- value
- respective value
- produced
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 claims description 287
- 230000014759 maintenance of location Effects 0.000 claims description 30
- 230000009471 action Effects 0.000 claims description 24
- 230000007547 defect Effects 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000003909 pattern recognition Methods 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 14
- 238000010276 construction Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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
-
- 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
-
- 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/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30138—Extension of register space, e.g. register cache
-
- 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
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)
- Advance Control (AREA)
Abstract
本发明揭示了一种存取处理器中的暂存器的装置与方法,在一实施例中,本发明提供用于一处理器的装置与方法,其中,此处理器具有至少两个不同的索引值(例如暂存器选择线路、暂存器排识引位元或处理器操作模式识别位元等)以唯一识别与存取某一暂存器。实施例中,上述的不同的索引位元线路可被编码而对应到一组信号线路,且此编码后的信号线路可用以存取暂存器。
Description
技术领域
本发明是有关于一种与处理器相关的装置与方法,特别是有关于一种识别与存取处理器中的暂存器的装置与方法。
背景技术
从桌上型电脑到可携式电子装置如行动电话与个人数字助理(PDA,Personal Digital Assistant),处理器(或称微处理器)已被广泛地运用在许多产品及相关应用上。有些处理器性能强大(例如某些高阶工作站级电脑上的处理器),有些处理器则具有较简单的设计以用于低阶、较便宜的应用与产品上。
目前大多数处理器的架构是以暂存器为基础,其中,所谓以暂存器为基础的处理器架构是指运用一组暂存器来执行不同的运算,亦即先自存储器搬移资料至暂存器中,以便于暂存器上执行运算。例如,一数值8可由执行下列的指令而被加入至储存于存储器位置A238内的资料值中;
LOAD A,8;(注解:将数值8置入暂存器A中)
LOAD B,[A238];(注解:将存储器位置A238中的资料值置入暂存器B中)
ADD C,A,B;(注释:将暂存器A与暂存器B的内容相加并将结果置入暂存器C中)
这类以暂存器为基础的处理器,其结构及运算已广为人如,故不尽赘述。
现行许多处理器的暂存器的维护工作是于一个称为暂存器档案(register file)的位置中进行,其中,在暂存器档案中所存放的暂存器数目经常是较在任一时间(或针对任一合法指令)所执行的存取动作所牵涉者为多。亦即,在许多处理器架构中,只有部分的暂存器能够被欲执行指令所使用。执行指令对于暂存器的可存取性是决定于几个不同的变因,例如,当时处理器的作业模式等。因此在某些处理器中,个别暂存器的识别工作是由暂存器选择位元(比特)(register-select bits)与模式识别位元(mode-identifying bits)的组合而执行。现行的处理器多由管线作业架构以增加指令运算量。理论上,在执行一个排序良好的循序(in-order)指令串列时,一个纯量化管线作业处理器能够在每个时脉(cycle)中执行一个指令(超纯量架构能执行更多指令),且即使在欲执行的指令需要额外执行其他微指令的情况下,此理论值亦能够被达到。管线作业处理器运作时是将指令拆解至数个不同阶段中,其中,每个阶段的执行工作皆需要一个时脉来完成。因此,在一典型系统中,执行一个指令可能需要多个时脉(例如撷取指令、解码指令、数学及逻辑运算等等)。
参阅图1所示,其是为一个能在复数个操作模式下运作的管线作业处理器的组织与资讯流的示意方块图。在图1的管线作业架构中有一解码阶段10、一读取阶段20、一执行阶段30、一存储器存取阶段40、一离退(retire)阶段50,以及一暂存器写入阶段60。这些管线作业阶段的结构与运作方式已广为已知该技术者所了解,故在此不再赘述。如所已知者,在解码阶段10中,一解码器中的电路或解码逻辑可解算一已编码的指令并产生控制信号以令处理器执行上述的已编码指令。如图中所示,此管线作业处理器中有六组信号线路11自解码阶段10连接至各下游阶段。每一群信号线可唯一识别某一位于此处理器内的暂存器。虽然图中并无特别示出,但熟悉此领域者应可理解,一包含复数个暂存器的处理器可将存储器内的资料引入该复数个暂存器内(或是将处理器计算后的资料或结果写回存储器中)。通常在任一时间内,处理器内的复数个实体暂存器中仅有一部份能被存取,因此常于实作时将上述的复数个实体暂存器编派成排(banked)以便于某特定时间内存取属于某特定排的暂存器。另一种方法是为设定处理器成在复数个不同操作模式下运行,且在某特定操作模式下仅能存取某些特定的实体暂存器。
如图1所示,解码阶段10包含具有复数个位元的两组电路,其中,具有复数个位元的第一电路(以暂存器或其它的形式组成)可用于识别某一暂存器;具有复数个位元的第二电路则用于识别某个操作模式。另外,虽然图1中没有特别描绘,然而当处理器的暂存器被编派成群(Grouped)或排(Banked)时,上述的具有复数个位元的第二电路也可用以识别某暂存器排(而非操作模式)。于此实施例中,暂存器是以四条信号线路14当我在做选择时所属的信号线,且以五条信号线15用于识别操作模式。综上研述,系统中共有九条信号线(编号为12)可唯一地识别某一暂存器。图1的实施例描绘出一个拥有三十二个实体暂存器的处理器,但其同时仅有十六个暂存器可供存取。
在图1的实施例中,解码阶段10产生六组信号线11。当然,系统中类似的信号线还可增减。每组此类信号线(元件符号12与13)皆能被用于唯一识别某特定的暂存器。在此实施例中,四组信号线(元件符号12)是用于识别来源暂存器,而二组信号线(元件符号13)则用于识别目的地暂存器,或称为目标暂存器。信号线的多寡与处理器的设计相关,因此于图1的实施例中,特定指令最多可能指涉到四个来源暂存器与两个目的地暂存器。当然,其他指令也可能指涉少于六个暂存器;对指涉少于六个暂存器的指令而言,某些组信号线将被管线作业的下游阶段所忽略。
在解码阶段10中所执行的是为对指令的解码工作。指令解码的运算需要运用复数个信号线以唯一识别来源暂存器与目的地暂存器。如图所示,在此实施例中,九条信号线可唯一识别每个暂存器;此外,连接管线作业中的各阶段的类似信号线亦可用以在各阶段中识别暂存器。相似的信号线70自各个下游阶段回馈到管线作业的读取阶段20,此一动作则称为资料前移(data forwarding);已知资料前移是为一种用以确保放置于暂存器中的资料皆为最适当者的既有技术,例如,若有一欲执行指令的内容是将某一暂存器的值储存在某一存储器地址内,而此暂存器值在被写回至暂存器档案之前刚好被前一个指令所更动,则此时读取阶段20会搜寻各下游阶段并读取具有最新值的阶段中所含的暂存器内容,而非从暂存器档案中读取较旧的值。因此,暂存器档案(registerfile,无特别示于图1中)须等到暂存器写入阶段60才会被更新。在更新暂存器档案之前,若读取阶段20需要一个来自中间管线作业阶段(亦即管线作业阶段30,40,50,或60)的最新暂存器值,则此最新暂存器值可透过信号线70进行资料前移而到达读取阶段20。
如图所示,读取阶段20包含一比较逻辑22,此比较逻辑22是用以比对解码阶段10所送出的九条信号线与资料前移信号线70的内容。若两者相同(亦即欲执行指令所指涉到的暂存器其现有最新值是位于管线作业的下游阶段),则将来自资料前移讯号线70中的资料输入工上述的位于读取阶段20中的暂存器内;若两者不同,则将来自于暂存器档案的资料输入至上述的位于读取阶段20中的暂存器内。
依某些方面来看,如图1所示,其是为一极端复杂的管线作业架构,因此须要大量的逻辑运算程序。尤其,执行资料前移的比较逻辑更为复杂;例如,在一个同时具有十六个暂存器存取能力的处理器中,用以比较九条信号线的比较逻辑将会过度增加资料前移的复杂性。在此种处理器中;比较运算动作25可用许多方式实作,其中一种简单方法是同时比对九个位元,当所比对的九个位元完全吻合时,即可识别出相关的暂存器,且其暂存器值于下游管线作业阶段中是为最新值。然而,执行九个位元的比较工作所需的逻辑电路显然相当庞大;因此另一种作法是先比对四条信号线14中所含的四个位元(此四条信号线14是用以识别暂存器排或操作模式),若此四个位元吻合,再行比对另外五条信号线15中所含的位元(此五条信号线是用以识别暂存器排或操作模式)。然而,此种方法也须耗用相当多的逻辑电路与复杂度来执行比较运算。
因此,一较佳的暂存器存取与资料前送架构与方法是目前产业所追求的目标。
发明内容
鉴于上述的发明背景中,为了符合产业上的要求,本发明提供一种存取处理器中的暂存器的装置与方法以克服上述亟欲解决的问题。
本发明提供了一种存取处理器中的暂存器的装置与方法。在一实施例中,上述的本发胆所提供的装置与方法可使用于一处理器,其中,此处理器具有至少两个不同的索引值(诸如暂存器选择线路、暂存器排识别位元、或处理器操作模式识别位元等)以唯一识别与存取某一暂存器。此实施例中,上述的不同的索引位元线路可被编码而对应到一组信号线路,且此编码后的信号线路可用以存取暂存器。
在另一实施例中,本发明提供了一种可单独地任意存取w个暂存器的方法。此方法是针对n个位元的操作模式值与m个位元的暂存器选择值进行编码并产生出p个位元,其中,p的数值是小于n与m的数值的总合。本发明所提供的方法可针对复数个位元进行编码,据此以使得此复数个位元能够任意存取w个暂存器之一。
本发明一具有复数个操作模式的处理器,其特征在于,该具有复数个操作模式的处理器包含:
复数w个暂存器,其中,当处在任一该操作模式下,可供程序存取的该暂存器个数少于w个;
一带有一操作模式值的n位元电路,其中该操作模式值是用以识别该处理器的一现行操作模式;
一带有一暂存器值的m位元电路,其中该暂存器值是用以识别该复数个暂存器之一;以及
一编码器逻辑电路以将该操作模式值与该暂存器值编码成一具有p个位元的对应值,其中p是小于m与n的总和,且该对应值可同时识别出一个该暂存器与该处理器的操作模式。
其中还包含一传输电路,该传输电路是用以将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段。
其中还包含一资料前移电路以比较该编码器逻辑电路所产生的该对应值与至少一个下一管线作业阶段所产生的对应值。
其中该该资料前移电路包含一读取逻辑,当该比较该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,该读取逻辑可自一暂存器档案中读取前者所对应的该暂存器的资料值。
其中该资料前移电路包含一读取逻辑,当该比较该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,该读取逻辑可自下一管线作业阶段读取其所产生的对应值所对应的该暂存器的资料值。
本发明一处理器,其特征在于,该处理器包含:
复数w暂存器,其中,该暂存器被编派成排,在任一指令操作下可供程序存取的该暂存器个数少于w个;
一带有一暂存器选择值的m位元逻辑;
一带有一暂存器排选择值的n位元逻辑;以及
一编码器逻辑电路以将该暂存器排选择值与该暂存器选择值编码成一具有p个位元的对应值,其中,p是小于m与n的总和,且该对应值可识别出该复数w个暂存器中的任一个。
其中还包含一传输电路;该传输电路是用以将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段。
其中还包含一资料前移电路以比较该编码器逻辑电路所产生的该对应值与至少一个下一管线作业阶段所产生的对应值。
其中该资料前移电路包含一读取逻辑,当该比较从该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,该读取逻辑可自一暂存器档案中读取前者所对应的该暂存器的资料值。
其中该资料前移电路包含一读取逻辑,当该比较从该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,该读取逻辑可自下一管线作业阶段读取其所产生的对应值所对应的该暂存器的资料值。
本发明一种适用于一具有复数个操作模式与w个暂存器的处理器的方法,其中,该处理器的任一个指令所能存取的该暂存器个数少于w个,其特征在于,该方法包含:
对由n个模式识别位元所表示的操作模式值与由m个暂存器选择位元所表示的暂存器值进行编码,并产生由p个复数字元所表示的一对应值,其中,p是小于n与m的总和,且以p个位元所表示的该对应值同时表示了现行的操作模式与暂存器的选择;以及
使用编码后的复数个位元以唯一存取该w个暂存器中的任一个。
其中还包含将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段的步骤。
其中还包含比较该编码步骤所产生的该对应值与至少一个下一管线作业阶段所产生的对应值的步骤。
其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,读取前者所对应的一资料值。
其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,自下一管线作业阶段读取其所产生的该对应值所对应的一资料值。
本发明一种适用于一具有编派成排的w个暂存器的定理器的方法,其中,该处理器的任一个指令所能取存的该暂存器个数少于w个,其特征在于,该方法包含:
对由n个排识别位元所表示的排选择值与由m个暂存器选择位元所表示的暂存器值进行编码,并产生由p个位元所表示的一对应值,且p小于n与m的总和;以及
使用该编码后的复数个位元以唯一存取该w个暂存器中的任一个。
其中还包含将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段的步骤。
其中还包含比较该编码步骤所产生的该对应值与至少一个下一管线作业阶段所产生的对应值的步骤。
其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,读取前者所对应的一资料值。
其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,自下一管线作业阶段读取其所产生的该对应值所对应的一资料值。
附图说明
图1是为一个能在复数个操作模式下运作的管线作业处理器的组织与资讯流的示意方块图;
图2是为一具有五个处理阶段的管线作业处理器架构的区块示意图;
图3是为一根据本发明的一实施例所建构的与图1类似的管线作业处理器的组织与资讯流的示意方块图;
图4是为一暂存器对应与编码方法的示意图;
图5是为一与图4类似的暂存器对应与编码方法的示意图;
图6是为一根据本发明所建构的编码器580的方块示意图:以及
图7是为一根据本发明一实施例所建构的方法的流程图。
具体实施方式
本发明在此所探讨的方向为一种用于存取处理器中的暂存器的装置与方法。为了能彻底地了解本发明,将在下列的描述中提出详尽的制程步骤及其组成。显然地,本发明的施行并未限定于处理器的技术者所熟悉的特殊细节。另一方面,众所周知的组成或制程步骤并未描述于细节中,以避免造成本发明不必要的限制。本发明的较佳实施例会详细描述如下,然而除了这些详细描述之外,本发明还可以广泛地拖行在其他的实施例中,且本发明的范围不受限定,其以之后的专利范围为准。
参考图2所示,其是为一具有五个处理阶段的管线作业处理器架构的区块示意图。应注意的是为,本发明亦可用于其它采用较多或较少个管线作业阶段的管线作业架构中。于图2的架构中,有一指令撷取(fetch)阶段110、一解码(decode)阶段120、一执行(execute)阶段130、一存储器存取(memory access)阶段140、以及一暂存器写回(write back)阶段150。除在此所描述者外,已是为已知技术的其他阶段(或是逻辑电路区块)于此则不再详述。
指令撷取阶段110是用以执行指令撷取的动作,此阶段是于循序(in-order)执行时用以决定程序计数器(program counter,位于一暂存器档案160中)的值或内容;此外,此阶段亦可用于决定例外向量(exception vectors)、分支(branch)与返回(return)。指令撷取阶段110同时也用于决定所有例外与分支指令的返回地址,并将此返回地址写入或储存至暂存器档案160内某个适当的暂存器中。与本发明宣告范围一致的是,上述的指令撷取动作可能直接自实体地址中存取存储器,或者透过实体或虚拟地址存取指令快取(cache,图中并无示出)。虽然暂存器档案160的内部结构并无示于图中,然如已知此领域者所可了解,暂存器档案160是包含处理器上的各种暂存器,包括通用(general purpose)暂存器或的特殊(special-purpose)暂存器(诸如状态暂存器与程式计数器)。除此之外,在暂存器档案160内的某些暂存器可能被编派成排(banked),而其他未被编派成排的暂存器则可于处理器的各种操作模式下被用作为实体暂存器。上述的未被编派成排的暂存器是完全通用的,并无特殊用途。当然,在操作模式改变(或是当处理器遇到分支常式(branch routine)或其他常式)时,程序设计师可以决定是否要保留上述的未被编派成排的暂存器的内容(例如将其内容推入一堆叠结构);以及在操作模式回复后,是否要回复上述的未编派成排的暂存器的内容。相反地,在暂存器档案160中被编派成排的暂存器基本上是各自平行运作,例如在某个操作模式下只有某一排中的某一暂存器会被使用。一个使用暂存器排的通用例子是为快速中断例外处理模式(Fast Interrupt Mode)。于此情况中,使用暂存器排可避免浪费时间于保存与回复暂存器的内容;在呼叫快速中断处理常式后,于快速中断处理模式下可马上被运用的暂存器排与在呼叫快速中断处理常式前所使用的暂存器排并不相同,据此则原本(呼叫中断处理常式前)所使用的暂存器排的内容使得以保存。
解码阶段120是用以解码自指令撷取阶段110所传来的指令并产生必要的控制信号以供执行阶段130执行指令之用。一般来说,解码阶段(如解码阶段120)的架构与处理器的设计相关,且解码阶段的运作功能与结构已是为已知技术。如同解码阶段120,执行阶段130运泎功能与结构亦已是为已知技术;一执行阶段通常包含一执行电路,其中,此执行电路的运作是由上述的解码阶段120所发出的控制信号所控制。如图2所示,此实施例可另包含一产生中断信号的逻辑电路132,其可产生一个或一个以上的中断信号134(interruptsignal),或此实施例可更包含一产生分支信号的逻辑电路136,其产生一个或一个以上的分支信号138(branch signal)。上述的中断信号134是用以表示某种中断状况(例如lRQ或FIRQ等等);相似地,上述的分支信号138是用以表示某种分支状况(或者也可能用以表示从分支中返回)。中断信号138与分支信号134亦表示指令的执行是乱序(out-of-order)进行。
存储器存取阶段140是与外部资料存储器相连接以支援执行阶段130在执行指令时可能需要的存储器存取动作。当然,并非所有指令皆需存取存储器,但对于需要存取存储器的指令而言,存储器存取阶段140即是用以协助该指令执行对外部存储器的存取动作。与本发明宣告范围一致的是,上述的存储器存取动作可能是为直接存取外部存储器,也可能是为透过实体地址或虚拟地址对资料快取进行存取。
最后,暂存器写回阶段150负责将指令执行成果写回暂存器档案160内适当的暂存器中,例如某个指令的内容是将两个通用暂存器的内容相加,并将加总所得之和存入第三个通用暂存器,则此时当处理器执行该指令后,暂存器写回阶段150会将上述的相加所得之和写入第三个通用暂存器中。
于本发明提到的各项元件,可能被实做于各种不同管线作业处理器架构中,图2所示的架构只是为一典型的架构,因此图2并不限制本发明所适用的架构与环境。
参阅图3所示,其是为根据本发明的一实施例所建构的与图1类似的管线作业处理器的组织与资讯流的示意方块图。本实施例中加入一编码器280,此编码器280可将复数个暂存器识别位元编码成较短的位元组。如图中所示,九个位元是由某一编码方法被组成五个位元。本实施例亦能够以不同程度的编码方法与不同数目个位元的编码方法替代。在此实施例中,处理器总共具有三十二个内部暂存器。于任意时间,一程序可存取其中十六个上述的内部暂存器(例如于任一个操作模式下或定于执行任一个指令时)。如同图1所示的先前技术,此实施例是利用四个暂存器选择位元214以识别任一操作模式下的特定暂存器,并利用五个操作模式位元215以识别操作模式;由于三十二个暂存器能够以五个位元作唯一表示(因二的五次方为三十二),因此编码后的五个位元组216可将每一个上述的三十二个处理器内部暂存器对应至暂存器档案中,并据以唯一识别该每一个处理器内合暂存器。图3仅示出一编码器280,然而在实作中,系统可能需要为六组信号线路各自提供编码器以供六个管线作业阶段识别来源暂存器与目的暂存器。
此外,应注意者是为:本发明亦可应用于其他使用较多或较少组信号线路的处理器架构中。综上所述,信号线路组的数目与处理器所实作的指令集是息息相关的。图3所示实施例的架构最多可支援四个来源暂存器与两个目标暂存器(或称为目的暂存器)。信号线路组经编码器280编码后,每个暂存器皆可被各处理器管线作业阶段220、230、240、250、以及260唯一识别,因此,加入编码器280可实现数个先前技术所不具有的独特且显著的技术优势。首先,由减少识别暂存器所需的位元数目可使得暂存器的存取工作变得较为容易,亦即,此实施例简化了原本需要比较九个位元的逻辑或两阶段比较的逻辑(第一阶段是比较暂存器选择位元,第二阶段是比较暂存器排或是比较操作模式)。其次,本发明可减少资料前移的复杂性、所需时脉、以及所须的电力损耗;如前所述,先前技术须执行九个位元的比较,或两阶段比较,而在此实施例中,读取阶段中的比较逻辑222大幅度简化了逻辑,从比较九个位元缩减成比较五个,大幅简化了资料前移与比较逻辑。最后,由于编码后的暂存器识别信号减少此资料前移路径270所需的位元组数目与通过管线作业的信号线路,因此减少处理器所需的逻辑电路与电力损耗。本发明中所改良的部分是将上述的编码器280(或是相当其功能的电路)加入解码阶段210中,其余资料前移或其他部分的逻辑皆为已知,故不再详述。
参考图4所示,其是为一根据本发明一实施例所建构的暂存器对应与编码方法的示意图。在此实施例中,一程序在任一时刻最多可存取十六个可透过暂存器选择位元加以识别的暂存器。如图4所示,在各操作模式下共有四个暂存器选择位元用于决定哪些暂存器可供存取。另外,如图4的表格所示,此实施例共有六种操作模式,此六种操作模式包括系统模式310、监督(supervisory)模式312、放弃(abort)模式314、未定义(undefined)模式316、中断(interrupt)模式318、以及一快速中断(fast interrupt)模式320。
已知有具有类似图4的暂存器组态的处理器存在,例如,本发明可加以施作的已知处理器架构为ARM架构,此架构是一个16/32位元的嵌入式精简指令集(RISC)处理器。关于ARM架构的结构与作业型态有相当多的公开资料,例如David Seal的ARM Reference Manual第二二版,由Addison-Wesley于1996年至2000年出版。已知ARM处理器总共有3了个暂存器,31个为通用暂存器;其中,上述的通用暂存器尚包含一程序计数器。此外,ARM处理器尚包含六个状态暂存器,且ARM处理器可设定于不同模式下操作。图4左方所示的暂存器表格与模式表格中所示者即是为类似ARM处理器的结构。参考ARM处理器的公开资讯将有助于进一步了解图4实施例的架构。
在图4左方表格中,每个暂存器是各自标以一独有的暂存器名称(label)。如图4所示,在各操作模式下系统可存取暂存器R1到R8。此外,在快速中断模式320下系统亦可选择存取由FIQ9到FIQ15所组成的暂存器集合,然而如表中所示,由FIQ9到FIQ15所组成的暂存器集合在其他模式下则是无法为系统所使用的。当处理器遇到一快速中断时,系统立即可使用上述的暂存器集合而不必先储存此暂存器集合中的各暂存器状态(例如将暂存器值推入堆叠)。另外,于各种模式下系统皆可使用程序计数器。由图4表列的暂存器名称可得知,此实施例所提供的处理器共具有三十二个暂存器。
图4实施例说明了处理器的操作模式可由模式选择位元加以识别。此实施例中,系统使用五个位元以识别操作模式,例如,系统模式310可用模式选择位元00001表示,而监督模式312可用模式选择位元00010表示。其余操作模式的表示方式可参见图4中的表格,如表中所示,上述的各操作模式是以模式选择位元表示的。根据先前技术,若暂存器选择位元为1000且模式选择位元为11111,系统可识别出暂存器FIQ9;同理,若系统在监督模式下要识别出暂存器13,则暂存器选择位元须为1100,且模式选择位元须为00010。而于此实施例中,个别的暂存器可用上述此实施例所提供的方法被唯一对应或重新排序至暂存器档案360中。此实施例的处理器具有三十二个独立的暂存器,此三十二个暂存器的编号可用五个位元表示(因二的五次方为三十二),在发明亦可使用任何将定理器内所有暂存器作唯一对应或重新排序到暂存器档案的方法加以实作,且图4所示的暂存器组织或对应关系的方法仅是本发明众多实施例之一。如先前技术,暂存器选择位元1000与模式选择位元1111可以识别暂存器FIQ9,而如图4中所示,对应后的暂存器FIQ9是利用一编码后的位元组11001表示。因在不同操作模式下系统皆可使用某些暂存器,则当处理器改变操作模式时,程序设计师就必须决定上述可在不同操作模式下被共用的暂存器内容是否需要储存或回复;因此,如前述图3中所示的管线作业架构中,系统须在各作业阶段间传递上述的编码后的暂存器识别位元组,若系统能在各作业阶段间传递模式选择位元则更佳。然而,本发明所提供的概念并不局限于有多重操作模式的处理器,相反地,本发明亦可使用在任意时仅有一部分暂存器子集可供使用的处理器中,或是使用在某些指令仅能运用一部分暂存器子集的处理器中。上述的可被使用的暂存器子集可能会被处理器操作模式,或其他原因所限制。将处理器内的暂存器子集编派成排或分成不同群亦能用于识别可被使用的暂存器子集。
参阅图5所示,其是为一与图4类似的根据本发明另一实施例所建构的暂存器对应与编码方法的示意图,图中的暂存器被编派成五个排:第一排410、第二排412、第三排414、第四排416、以及第五排418。同图4的实施例,此实施例是使用暂存器选择位元识别任一暂存器排内的任一个别暂存器。如图5中的表格所示,暂存器R25可能被分派至第三排或第四排,其中,当以第三排暂存器子集的身分被存取时,此暂存器R25是由暂存器选择位元1000与排选择位元00100而被识别;当以第四排暂存器子集的身分被存取时,此暂存器R25是由暂存器选择位元1000与排选择位元01000而被识别。暂存器档案460是使用一编码后的位元组11001识别暂存器R25。此外,应注意的是为,本发明亦可应用于针对不同设计需求与设计目标而具有不同暂存器组织与编排的处理器架构中。
参考图6所示,其是为根据本发明所建构的编码器580的方块示意图。此编码器580是针对复数个(n个)排选择位元(或模式选择位元,或群组选择位元)与复数个(m个)暂存器选择位元进行编码并产生出复数个(p个)位元;其中,p的数值小于n+m的数值。经由减少识别暂存器所需的位元总数,本实施例中包括资料前移逻辑在内的处理器内部逻辑都可被简化。
图7是为一根据本发明另一实施例所建构的方法的流程图。如图所示,此方法是将复数个暂存器对应至一暂存器档案(步骤610)。如前述有关于图4与图5的讨论,上述的暂存器档案包含了其所在的处理器中的每一个暂存器。此方法接着针对复数个(m个)暂存器选择位元与复数个(n个)位元(可能是排选择位元、或群组选择位元、或操作模式选择位元)进行编码并产生出复数个(p个)位元(步骤612),其中,p是小于n+m的总合。最后,此方法在处理器中各阶段内部使用编码后的位元组,此编码后的位元组可用以唯一识别暂存器档案内部的各个暂存器(步骤614)。
显然地,依照上面实施例中的描述,本发明可能有许多的修正与差异。因此需要在其附加的权利要求项的范围内加以理解,除了上述详细的描述外,本发明还可以广泛地在其他的实施例中施行。上述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述申请专利范围内。
Claims (20)
1.一具有复数个操作模式的处理器,其特征在于,该具有复数个操作模式的处理器包含:
复数w个暂存器,其中,当处在任一该操作模式下,可供程序存取的该暂存器个数少于w个;
一带有一操作模式值的n位元电路,其中该操作模式值是用以识别该处理器的一现行操作模式;
一带有一暂存器值的m位元电路,其中该暂存器值是用以识别该复数个暂存器之一;以及
一编码器逻辑电路以将该操作模式值与该暂存器值编码成一具有p个位元的对应值,其中p是小于m与n的总和,且该对应值可同时识别出一个该暂存器与该处理器的操作模式。
2.如权利要求1所述的具有复数个操作模式的处理器,其特征在于,其中还包含一传输电路,该传输电路是用以将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段。
3.如权利要求1所述的具有复数个操作模式的处理器,其特征在于,其中还包含一资料前移电路以比较该编码器逻辑电路所产生的该对应值与至少一个下一管线作业阶段所产生的对应值。
4.如权利要求2所述的具有复数个操作模式妁处理器,其特征在于,其中该该资料前移电路包含一读取逻辑,当该比较该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,该读取逻辑可自一暂存器档案中读取前者所对应的该暂存器的资料值。
5.如权利要求3所述的具有复数个操作模式的处理器,其特征在于,其中该资料前移电路包含一读取逻辑,当该比较该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,该读取逻辑可自下一管线作业阶段读取其所产生的对应值所对应的该暂存器的资料值。
6.一处理器,其特征在于,该处理器包含:
复数w暂存器,其中,该暂存器被编派成排,在任一指令操作下可供程序存取的该暂存器个数少于w个;
一带有一暂存器选择值的m位元逻辑;
一带有一暂存器排选择值的n位元逻辑;以及
一编码器逻辑电路以将该暂存器排选择值与该暂存器选择值编码成一具有p个位元的对应值,其中,p是小于m与n的总和,且该对应值可识别出该复数w个暂存器中的任一个。
7.如权利要求6所述的处理器,其特征在于,其中还包含一传输电路;该传输电路是用以将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段。
8.如权利要求6所述的处理器,其特征在于,其中还包含一资料前移电路以比较该编码器逻辑电路所产生的该对应值与至少一个下一管线作业阶段所产生的对应值。
9.如权利要求8所述的处理器,其特征在于,其中该资料前移电路包含一读取逻辑,当该比较从该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,该读取逻辑可自一暂存器档案中读取前者所对应的该暂存器的资料值。
10.如权利要求8所述的处理器,其特征在于,其中该资料前移电路包含一读取逻辑,当该比较从该编码器逻辑电路所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,该读取逻辑可自下一管线作业阶段读取其所产生的对应值所对应的该暂存器的资料值。
11.一种适用于一具有复数个操作模式与w个暂存器的处理器的方法,其中,该处理器的任一个指令所能存取的该暂存器个数少于w个,其特征在于,该方法包含:
对由n个模式识别位元所表示的操作模式值与由m个暂存器选择位元所表示的暂存器值进行编码,并产生由p个复数字元所表示的一对应值,其中,p是小于n与m的总和,且以p个位元所表示的该对应值同时表示了现行的操作模式与暂存器的选择;以及
使用编码后的复数个位元以唯一存取该w个暂存器中的任一个。
12.如权利要求11所述的适用于一具有复数个操作模式与w个暂存器的处理器的方法,其特征在于,其中还包含将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段的步骤。
13.如权利要求11所述的适用于一具有复数个操作模式与w个暂存器的处理器的方法,其特征在于,其中还包含比较该编码步骤所产生的该对应值与至少一个下一管线作业阶段所产生的对应值的步骤。
14.如权利要求13所述的适用于一具有复数个操作模式与w个暂存器的处理器的方法,其特征在于,其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,读取前者所对应的一资料值。
15.如权利要求13所述的适用于一具有复数个操作模式与w个暂存器的处理器的方法,其特征在于,其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,自下一管线作业阶段读取其所产生的该对应值所对应的一资料值。
16.一种适用于一具有编派成排的w个暂存器的定理器的方法,其中,该处理器的任一个指令所能取存的该暂存器个数少于w个,其特征在于,该方法包含:
对由n个排识别位元所表示的排选择值与由m个暂存器选择位元所表示的暂存器值进行编码,并产生由p个位元所表示的一对应值,且p小于n与m的总和;以及
使用该编码后的复数个位元以唯一存取该w个暂存器中的任一个。
17.如权利要求16所述的适用于一具有编派成排的w个暂存器的定理器的方法,其特征在于,其中还包含将该对应值与其识别的暂存器的资料一并传送到该处理器的各管线作业阶段的步骤。
18.如权利要求16所述的适用于一具有编派成排的w个暂存器的定理器的方法,其特征在于,其中还包含比较该编码步骤所产生的该对应值与至少一个下一管线作业阶段所产生的对应值的步骤。
19.如权利要求18所述的适用于一具有编派成排的w个暂存器的定理器的方法,其特征在于,其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果不相符时,读取前者所对应的一资料值。
20.如权利要求18所述的适用于一具有编派成排的w个暂存器的定理器的方法,其特征在于,其中该比较步骤还包含,当该编码步骤所产生的该对应值是与至少一个下一管线作业阶段所产生的该对应值的动作的结果相符时,自下一管线作业阶段读取其所产生的该对应值所对应的一资料值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/602,813 US7024544B2 (en) | 2003-06-24 | 2003-06-24 | Apparatus and method for accessing registers in a processor |
US10/602,813 | 2003-06-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1547113A true CN1547113A (zh) | 2004-11-17 |
Family
ID=33539613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200410045963XA Pending CN1547113A (zh) | 2003-06-24 | 2004-05-26 | 用于存取处理器中的暂存器的装置与方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7024544B2 (zh) |
CN (1) | CN1547113A (zh) |
TW (1) | TWI296773B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437532B1 (en) * | 2003-05-07 | 2008-10-14 | Marvell International Ltd. | Memory mapped register file |
TWI223756B (en) * | 2003-10-09 | 2004-11-11 | Univ Nat Sun Yat Sen | Automatic register backup/restore system and method |
TWI259398B (en) * | 2004-02-04 | 2006-08-01 | Sunplus Technology Co Ltd | Device and method using operation mode in processor to switch register |
US7882307B1 (en) | 2006-04-14 | 2011-02-01 | Tilera Corporation | Managing cache memory in a parallel processing environment |
US7895028B2 (en) * | 2007-07-10 | 2011-02-22 | International Business Machines Corporation | Structure for increasing fuse programming yield |
US9690591B2 (en) | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
US8578117B2 (en) * | 2010-02-10 | 2013-11-05 | Qualcomm Incorporated | Write-through-read (WTR) comparator circuits, systems, and methods use of same with a multiple-port file |
GB2482700A (en) * | 2010-08-11 | 2012-02-15 | Advanced Risc Mach Ltd | Memory access control |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
EP2631786B1 (en) * | 2011-04-07 | 2018-06-06 | VIA Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
KR20160103205A (ko) * | 2015-02-23 | 2016-09-01 | 주식회사 에이디칩스 | 다중 인터럽트 제어기를 구비하는 프로세서 시스템 |
KR20170079368A (ko) * | 2015-12-30 | 2017-07-10 | 삼성전자주식회사 | 디버그 정보를 수집하기 위한 디버그 로직을 포함하는 cpu 시스템, 이를 포함하는 컴퓨팅 시스템 및 이의 디버깅 방법 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210836A (en) * | 1989-10-13 | 1993-05-11 | Texas Instruments Incorporated | Instruction generator architecture for a video signal processor controller |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5784076A (en) * | 1995-06-07 | 1998-07-21 | International Business Machines Corporation | Video processor implementing various data translations using control registers |
US5860107A (en) * | 1996-10-07 | 1999-01-12 | International Business Machines Corporation | Processor and method for store gathering through merged store operations |
US6347354B1 (en) * | 1997-10-10 | 2002-02-12 | Rambus Incorporated | Apparatus and method for maximizing information transfers over limited interconnect resources |
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6425086B1 (en) * | 1999-04-30 | 2002-07-23 | Intel Corporation | Method and apparatus for dynamic power control of a low power processor |
US6397324B1 (en) * | 1999-06-18 | 2002-05-28 | Bops, Inc. | Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file |
US6711170B1 (en) * | 1999-08-31 | 2004-03-23 | Mosaid Technologies, Inc. | Method and apparatus for an interleaved non-blocking packet buffer |
US6351803B2 (en) * | 1999-10-01 | 2002-02-26 | Hitachi Ltd. | Mechanism for power efficient processing in a pipeline processor |
US6408381B1 (en) * | 1999-10-01 | 2002-06-18 | Hitachi, Ltd. | Mechanism for fast access to control space in a pipeline processor |
US6446195B1 (en) * | 2000-01-31 | 2002-09-03 | Intel Corporation | Dyadic operations instruction processor with configurable functional blocks |
US6357016B1 (en) * | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
-
2003
- 2003-06-24 US US10/602,813 patent/US7024544B2/en active Active
-
2004
- 2004-05-14 TW TW93113599A patent/TWI296773B/zh active
- 2004-05-26 CN CNA200410045963XA patent/CN1547113A/zh active Pending
-
2005
- 2005-12-20 US US11/314,396 patent/US20060136699A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US7024544B2 (en) | 2006-04-04 |
TWI296773B (en) | 2008-05-11 |
TW200424933A (en) | 2004-11-16 |
US20040268089A1 (en) | 2004-12-30 |
US20060136699A1 (en) | 2006-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1547113A (zh) | 用于存取处理器中的暂存器的装置与方法 | |
CN1230735C (zh) | 在一个周期内处理乘累加运算 | |
CN100480997C (zh) | 选择可实质同时处理的多重线程的系统与方法 | |
CN1029048C (zh) | 分布处理系统中处理数据用的方法与装置 | |
CN1991768A (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CN1708747A (zh) | 用于多线程处理器中基于线程的存储器存取的方法和装置 | |
CN1142484C (zh) | 微处理器向量处理方法 | |
CN1716185A (zh) | 用于单指令、多数据执行引擎的条件指令 | |
CN1316074A (zh) | 中断/软件控制的线程处理 | |
CN101925877A (zh) | 对数据执行排列运算的装置与方法 | |
CN101055644A (zh) | 绘图处理装置及其处理指令、数据和逻辑单元操作的方法 | |
CN1717654A (zh) | 数据处理器的循环控制电路 | |
CN1806225A (zh) | 在具有多指令集的数据处理设备内的指令编码 | |
CN1379872A (zh) | 用于在执行被转换指令时维持环境的方法和装置 | |
CN1390329A (zh) | 控制使用动态反馈的指令转换 | |
CN1278931A (zh) | 特别适于译码数字音频信号的数字信号处理器 | |
US7403944B2 (en) | Reduced comparison coordinate-value sorting process | |
CN101783719B (zh) | 一种速率匹配和解速率匹配方法、装置和通信系统 | |
CN1168505A (zh) | 具有自对准堆栈指针的数据处理系统及其方法 | |
CN1243581A (zh) | Fft计算的方法和装置 | |
CN101131719A (zh) | 一种用于密码学运算的微处理器内核 | |
CN101076778A (zh) | 可编程信号处理电路和交织方法 | |
CN103150196B (zh) | 动态二进制翻译中代码Cache管理方法 | |
CN200941211Y (zh) | 用于密码学运算的微处理器内核 | |
CN1199183C (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 | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |