CN101739234B - 指令模式识别装置 - Google Patents
指令模式识别装置 Download PDFInfo
- Publication number
- CN101739234B CN101739234B CN 200810176824 CN200810176824A CN101739234B CN 101739234 B CN101739234 B CN 101739234B CN 200810176824 CN200810176824 CN 200810176824 CN 200810176824 A CN200810176824 A CN 200810176824A CN 101739234 B CN101739234 B CN 101739234B
- Authority
- CN
- China
- Prior art keywords
- instruction
- mode
- instruction mode
- address
- recognition device
- 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
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
一种指令模式识别装置及指令模式识别方法。该指令模式识别装置,包含:一用以储存一包括多个位的指令地址的程序计数器,且其中至少一位是一冗余位;及一依据该冗余位以识别目前指令的指令模式的处理器。因此,处理器可以根据不同的指令模式而将冗余位设定为对应的数值,以作为判断不同指令模式的依据。
Description
技术领域
本发明涉及一种指令模式识别装置及指令模式识别方法,特别是涉及适用于一处理器的指令模式的识别装置与方法。
背景技术
典型的处理器可以根据不同的指令集架构(Instruction Set Architecture,ISA)而执行不同指令模式的指令,一般最常见的就是一16位处理器(如:Intel8086、80286、Motorola M6800)可以处理并执行16位指令集中的所有指令,而一32位处理器(如:Intel Pentium Pro)可以处理并执行32位指令集的所有指令。
然而,在现今的应用中,一处理器往往不再仅局限于处理单一指令集架构,如:ARM-9TDMI(http://www.arm.com)处理器是一32位处理器,同时亦可处理并执行一16位的拇指指令集(Thumb Instruction Set),也就是说,一ARM-9TDMI处理器,可以同时支持32位及16位的指令模式。
上述这种可支持二种不同指令集模式的处理器,一般是根据一内建于该处理器中的指令集模式寄存器(Instruction Set Mode Register)或是指令集模式位(Instruction Set Mode Bit)作为判断目前处理中的指令是属于哪一种指令模式的依据。
参阅图1,举例来说,以MIPS处理器(http://www.mips.com/)为例,一般可以分为指令撷取(Instruction Fetch,IF)级11、指令解码(Instruction Decode,ID)级12、指令执行(Instruction Execution,IE)级13、存储器存取(MemoryAccess,MA)级14,及写回(Write-back,WB)级15等五个部分,并且依照指令撷取、指令解码、指令执行、存储器存取,及写回的操作顺序,将所述级11~15串接成一个具有五级管线(5-stage Pipeline)架构的管线式处理器(Pipeline Processor)。
对于同一个时间点,在不考虑到数据危障(Data Hazard)的前提下,上述处理器可以同时处理五个指令,但是,因为每一级管线都是共用一指令模式寄存器16,所以每一级管线内的指令一定都是相同的指令模式,也就是说,同一个时间点内,在五级管线内不可能处理二种以上的指令模式。
假设,当MIPS处理器要将其指令模式由MIPS32切换到MIPS16时,藉由执行跳跃指令(在MIPS16指令集中为JALX或JR),指令执行级13会先改变一程序计数器(Program Counter)17中储存的地址(Address),使得MIPS处理器可以根据程序计数器,跳至另一地址以撷取下一个指令,然后,写回级15会写入一表示为MIPS16指令架构的数值于指令模式寄存器16内,使得每一级管线由下一个指令开始,以MIPS16的模式执行。
参阅图2,由指令执行周期来看,当跳跃指令JALX被执行之后,须等待一延迟周期(指令A)以使下一个指令仍然以原本的指令模式而被执行,然而,因为需要等到写回级15设定指令模式寄存器16之后,指令解码级12才可以判断正确的指令模式以进行指令解码操作,因此,必须等到三个指令周期之后(指令D)才能完成正确切换到MIPS16模式的操作,因此,在不计入该延迟周期的情况下,这样的切换操作仍需要浪费二个指令周期(指令B、指令C),以完成指令模式的切换,若是以更高阶的处理器来说,为了要提供更高的效能,往往会把增加管线的级数,或是使用超纯量(Super-scalar)架构,因此,当指令执行级13与写回级15间的管线级数增加时,更会大幅增加浪费的指令周期数。
根据上述习知的设计方法,可以归纳出以下缺点:
一.在同一个时间点,管线内无法同时处理二种以上的指令模式;及
二.当处理器切换指令模式时,需要浪费二个以上的指令周期以完成切换操作,进而影响指令执行的效能。
发明内容
因此,本发明的目的,即在提供一种指令模式识别装置,包含:
一程序计数器,储存一指令地址,该指令地址包括多个位,用以表示正在执行或将要执行的指令所在地址,这些位当中至少有一位是一冗余位;及
一处理器,依据该冗余位识别一指令模式,该指令模式代表目前指令所执行的模式,
其中,该处理器适用N级管线,该N级管线包括一指令解码级、一指令执行级和一指令撷取级,当该处理器由一第一指令模式切换至一第二指令模式时,该指令执行级会设定该冗余位为对应的数值,并且在下一个指令周期会将更新后的程序计数器所储存的地址回传至该指令撷取级中,
其中N为大于等于3的正整数。
此外,本发明的另一目的为,提供一种指令模式识别方法,包含:
提供一程序计数器,该程序计数器储存一指令地址,该指令地址包含多个位,用以表示正在执行或将要执行的指令所在地址,这些位当中至少有一位是一冗余位;及
提供一处理器,该处理器依据该冗余位识别一指令模式,该指令模式代表目前指令所执行的模式。
于是,本发明可以利用既有程序计数器中的冗余位纪录不同的指令模式以供后续进行指令模式的识别,不但不会增加硬件成本,还可使得处理器同时可以处理二种以上不同指令模式的指令,进而有效降低指令模式转换时所浪费的时间。
附图说明
图1是已知的指令模式识别装置的方块图;
图2是已知于指令模式切换时,指令周期示意图;
图3是本发明的指令模式识别装置的示意图;
图4是本发明的一实施例的方块图;
图5是本实施例于指令模式切换时,指令周期示意图;及
图6是本发明的指令模式识别方法的流程图。
附图符号说明
8..............程序计数器
91.............指令撷取级
92............指令解码级
93............指令执行级
94............存储器存取级
95............写回级
901~904..管线寄存器
具体实施方式
有关本发明的前述及其他技术内容、特点与功效,以下结合参考附图的一个实施例的详细说明可清楚的呈现。
参阅图3,本发明指令模式识别装置的一个实施例,包含:一程序计数器8,且该程序计数器8用于储存一具有多个位的地址,且所述位中至少有一冗余位(Redundant Bit)81,也就是说,程序计数器8所储存的地址中至少有一个位是不会改变或是没有被定义的,例如:对于一32位处理器而言,因为其存储器存取的最小单位为一字元(Word),因此,要撷取下一个指令时,该程序计数器内储存的地址会自动加四(如:第一个指令的二进位地址为0000b,则第二个指令的二进位地址为0100b,同理,第三个指令的二进位地址为1000b,其余类推),因此,对于该程序计数器8而言,其最后二位将会固定为00b,因此在此范例,最后二位是冗余位。
根据这样的特性,本实施例将程序计数器8中固定不变的位,视为冗余位81,因此,当一处理器要改变指令模式时,可以藉由设定该程序计数器8的冗余位,以作为判断不同指令模式的依据。
举例来说,参阅图4,当本发明的指令模式识别装置应用于一具有五级管线的MIPS处理器中,其包含:一指令撷取级91、一指令解码级92、一指令执行级93、一存储器存取级94、一写回级95,及一程序计数器8,其中,在每二级管线之间具有一管线寄存器901~904,用以暂时储存每一级管线处理完的结果,并于下一指令周期时送入下一级管线中。且为了方便说明,下文在描述时将省略管线寄存器901~904的操作。
指令撷取级91根据程序计数器8中储存的地址,由一存储器中取出对应地址上的指令,然后,将所取出的指令与程序计数器8的地址一起传送至指令解码级92中;指令解码级92根据程序计数器8的地址上的冗余位81判断目前要进行解码操作的指令属于何种指令模式,并进行对应的解码操作,当解码完成后,将产生对应的控制讯号与该程序计数器8的地址传送至指令执行级93中,指令执行级93依据程序计数器8的地址上的冗余位81判断目前要执行的指令属于何种指令模式,并根据所述控制讯号以执行指令,且一并更新程序计数器8的地址,当执行完成后,将执行指令的结果传送至存储器存取级94,且将该更新后程序计数器8的地址传回至指令撷取级91,以撷取下一个指令。
存储器存取级94依据对应的指令,将执行结果储存于存储器中,或是从存储器中读取出来,最后,写回级95将重新设定指令解码级92以供执行后续的指令。
在本范例中,因为该MIPS处理器为32位处理器,当要撷取下一个指令时,程序计数器8内储存的地址会加四或加二,所以,程序计数器8的最后一位,将固定为0,且该位符合上面所述固定不变的位可以视为冗余位的定义。
因此,在本范例中,当指令模式要切换至MIPS16时,该程序执行级会将该程序计数器8的最后一位设定为1也就是说,当目前指令的指令模式为MIPS32时,对应的程序计数器所储存的指令地址的最后一个位(LSB)一定是0,而当目前指令的指令模式为MIPS16时,对应的程序计数器所储存的指令地址的最后一个位一定是1。
值得注意的是,处理器可以依据指令模式数量的需求,以冗余位81的位数量M,而定义出2M种不同的指令模式。如上述例子:该程序计数器8具有二冗余位81,因此可以定义冗余位81等于00时,代表MIPS32指令模式、冗余位81等于01时,代表MIPS16指令模式、冗余位81等于10时,代表第三指令模式,及冗余位81等于11时,代表第四指令模式等四种指令模式。
参阅图5,由指令执行周期来看,当跳跃指令JALX被执行之后,须等待一延迟周期(指令A’)以使下一个指令仍然以原本的指令模式而被执行,然而,不同于现有的方法的是,因为指令执行级93在下一个指令周期(指令B’)会将更新后的程序计数器8所储存的地址回传至该指令撷取级91中,因此,该指令解码级92可以在次一个指令周期(指令C’)读取到正确的程序计数器8的地址,所以,根据程序计数器8的最后一位以判断,目前指令模式为MIPS16或是MIPS32。
因为,更新程序计数器8地址的操作(包括设定程序计数器8的最后一位的操作)是在指令执行级完成,因此,若是应用于更高阶、或是管线级数更多的处理器中,其浪费的指令周期数皆为一个,不会因为指令执行级13与写回级15间的管线级数增加而随的增加,因此,藉由本发明的指令模式识别装置,可以将指令模式转切换时所浪费的指令周期数目降到最少。
此外,同一时间点上,每一级管线所依据的程序计数器8的地址皆有所差异(为前一指令周期储存于对应的管线寄存器内的地址),举例来说,指令撷取级91所依据的程序计数器8的地址为最新或是更新后的地址,而指令解码级92所依据的程序计数器8的地址,为前一指令周期时,指令撷取级91所依据的程序计数器8的地址,同理,指令执行级93所依据的程序计数器的地址与指令撷取级的地址,相差二个指令周期;因此,指令撷取级91、指令解码级92、指令执行级93可以在同一个时间点分别执行不同指令模式的指令,一方面可以更有效的混合使用MIPS16与MIPS32的指令集,另一方面当处理到需要呼叫外部数据库的程序码时,可能因为外部数据库的指令模式与主程序码的指令模式不同而造成频繁的指令模式切换,藉由本发明可以将频繁指令模式切换所造成浪费的指令周期数目降到最少,进而大幅提升程序码的执行效率。
值得注意的是,程序计数器8的冗余位81不一定如上述范例为该程序计数器8的最后一位,只要是符合该程序计数器8中没有被定义的位,或是即使有被定义但是其值固定不变的位,即可作为表示不同指令模式的冗余位。
本发明所揭示的指令模式识别有着多种的应用。以分支预测(BranchPrediction)的应用为例,由于分支预测本来就是在处理程序计数器的运算,因此在同样带有冗余位的情况下,亦可在执行上展现如上述实施例所述及的各项优点。
参阅下列表1,是本发明应用于一MIPS处理器上的相关效能数据,其中第一栏表示针对一段程序码全部以MIPS32指令模式执行的相关数据,第二栏为依照每段子程序码对于执行效能的要求高或低,分别以MIPS32及MIPS16两种模式分开进行处理,而其中MIPS32/MIPS16的模式切换是根据一内建的指令模式寄存器(或指令模式位)来判断,即采用习知的设计方法,最后,第三栏是以本发明的指令模式识别装置来实施,并依照每段子程序码对于执行效能的要求高或低,分别以MIPS32及MIPS16两种模式进行处理的相关数据。值得注意的是,该程序码大小与执行时间的数据是经过正规化(Normalized)处理之后的数据。
表1
观察表1的数据可以发现,藉由本发明的指令模式识别装置,可以维持原本使用MIPS16指令模式以压缩程序码大小的优点,同时,因为可以将浪费的指令周期数降到最少(一个)的情况下,因此,在程序码执行时间上可以比已知的方法更快,并且,因为不需要使用额外的指令模式寄存器或是指令模式位,所以并没有额外的硬件成本。本发明的指令模式识别装置与方法在任何具有冗余位的程序计数器上皆适用,因此并不以上述针对MIPS处理器的应用为限。
参阅图6,本发明的指令模式识别方法,适用于一N级管线式处理器,其包括以下步骤:
步骤61是该处理器利用一程序计数器用以储存一指令地址,该指令地址包含多个位,用以表示正在执行或将要执行的指令所在地址,这些位当中至少有一位是一冗余位;及
步骤62是该处理器依据该冗余位识别一指令模式,该指令模式代表目前指令所执行的模式。
综上所述,本发明的指令模式识别装置具有以下优点:
一.同一时间点内,管线内可以处理二种或二种以上的指令模式;
二.不论处理器的管线的架构为何,只需要消耗一个指令周期,就可以完成指令模式的切换操作;及
三.采用程序计数器中既有的冗余位来识别不同的指令模式,因此,没有额外的硬件成本。
所以确实能实现本发明的目的。
以上所述者,仅为本发明的较佳实施例而已,而不能以此限定本发明实施的范围,凡依本发明的权利要求及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。
Claims (9)
1.一种指令模式识别装置,包含:
一程序计数器,储存一指令地址,该指令地址包括多个位,用以表示正在执行或将要执行的指令所在地址,这些位当中至少有一位是一冗余位;及
一处理器,依据该冗余位识别一指令模式,该指令模式代表目前指令所执行的模式,
其中,该处理器适用N级管线,该N级管线包括一指令解码级、一指令执行级和一指令撷取级,当该处理器由一第一指令模式切换至一第二指令模式时,该指令执行级会设定该冗余位为对应的数值,并且在下一个指令周期会将更新后的程序计数器所储存的地址回传至该指令撷取级中,
其中N为大于等于3的正整数。
2.依据权利要求1所述的指令模式识别装置,其中,该冗余位仅以一位表示,且该冗余位可分别被设定为0或1,以代表二种指令模式。
3.依据权利要求1所述的指令模式识别装置,其中,该冗余位以M个位表示,用以代表2的M次方个指令模式,其中M为正整数。
4.依据权利要求1所述的指令模式识别装置,其中,该冗余位是该指令地址当中没有被定义的位或数值固定不变的位。
5.依据权利要求1所述的指令模式识别装置,其中,当该处理器由一第一指令模式切换至一第二指令模式时,该处理器至多消耗一个指令周期。
6.依据权利要求1所述的指令模式识别装置,其中,该指令解码级根据该冗余位产生该指令模式,再由该指令执行级根据该指令模式执行指令。
7.依据权利要求6所述的指令模式识别装置,其中,该指令撷取级用以撷取所将执行的指令。
8.依据权利要求7所述的指令模式识别装置,其中,该指令撷取级、该指令解码级以及该指令执行级分别依据该程序计数器的该指令地址撷取、解码以及执行指令。
9.依据权利要求1所述的指令模式识别装置,其中,该程序计数器是以一分支预测的方式处理其计数内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810176824 CN101739234B (zh) | 2008-11-25 | 2008-11-25 | 指令模式识别装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810176824 CN101739234B (zh) | 2008-11-25 | 2008-11-25 | 指令模式识别装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101739234A CN101739234A (zh) | 2010-06-16 |
CN101739234B true CN101739234B (zh) | 2013-09-11 |
Family
ID=42462762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810176824 Active CN101739234B (zh) | 2008-11-25 | 2008-11-25 | 指令模式识别装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101739234B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740484B2 (en) | 2011-12-22 | 2017-08-22 | Intel Corporation | Processor-based apparatus and method for processing bit streams using bit-oriented instructions through byte-oriented storage |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834940A (zh) * | 2005-12-22 | 2006-09-20 | 苏州超锐微电子有限公司 | 一种通过在指令中嵌入计数器实现断点调试功能的方法 |
-
2008
- 2008-11-25 CN CN 200810176824 patent/CN101739234B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834940A (zh) * | 2005-12-22 | 2006-09-20 | 苏州超锐微电子有限公司 | 一种通过在指令中嵌入计数器实现断点调试功能的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101739234A (zh) | 2010-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101764187B1 (ko) | 가속기들의 낮은-레이턴시 인보크를 위한 장치 및 방법 | |
WO2018174932A1 (en) | Systems, methods, and apparatuses for tile store | |
CN101467135A (zh) | 预取数据的设备及方法 | |
US7162617B2 (en) | Data processor with changeable architecture | |
CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
CN101156131A (zh) | 使用本机指令将操作数堆栈作为寄存器堆的微处理器存取 | |
CN104981771A (zh) | 基于标量寄存器数据值的向量寄存器寻址和功能 | |
CN104049944A (zh) | 将有条件短前向分支转换成计算等效的所断言指令 | |
CN104050415A (zh) | 用于系统调用的稳健且高性能的指令 | |
CN110909882A (zh) | 用于执行水平铺块操作的系统和方法 | |
JP2001005675A (ja) | プログラム変換装置及びプロセッサ | |
CN101739234B (zh) | 指令模式识别装置 | |
CN102622243A (zh) | 支持多种nand闪存的固化代码的执行方法 | |
CN101253480B (zh) | 具有实时动态可变指令集的计算机 | |
US20190197017A1 (en) | Methods and devices for reducing array size and complexity in automata processors | |
TWI379195B (en) | Method and device for accessing memory and central processing unit using the same | |
JP2009093513A (ja) | 命令ビット長削減方法 | |
CN105630530A (zh) | 数字信号处理器多级启动方法及系统 | |
CN102841775A (zh) | 使用铁电随机存取存储器且具有优化指令集的堆栈处理器 | |
CN102841867B (zh) | 使用用于代码和数据空间的铁电随机存储器的堆栈处理器 | |
US20080172546A1 (en) | Digital signal processor | |
CN102841774B (zh) | 使用铁电随机存取存储器的堆栈处理器 | |
CN1146785C (zh) | 并行数据处理 | |
US7124261B2 (en) | Access to bit values within data words stored in a memory | |
TWI379230B (en) | Instruction mode identification apparatus and instruction mode identification method |
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 |