CN104182204A - 融合if-then指令的微处理器 - Google Patents

融合if-then指令的微处理器 Download PDF

Info

Publication number
CN104182204A
CN104182204A CN201410198641.2A CN201410198641A CN104182204A CN 104182204 A CN104182204 A CN 104182204A CN 201410198641 A CN201410198641 A CN 201410198641A CN 104182204 A CN104182204 A CN 104182204A
Authority
CN
China
Prior art keywords
instruction
order
block
micro
condition
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.)
Granted
Application number
CN201410198641.2A
Other languages
English (en)
Other versions
CN104182204B (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 CN104182204A publication Critical patent/CN104182204A/zh
Application granted granted Critical
Publication of CN104182204B publication Critical patent/CN104182204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/30058Conditional branch 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

Abstract

本发明公开了一种融合IF-THEN指令的微处理器,包含一指令转译单元,用以由IT指令抽取条件资讯以及将IT指令融合于第一IT区块指令。对于IT区块的每个指令,此指令转译单元使用由IT指令所抽取的条件资讯来确认IT区块指令的相对应条件,以及将IT区块指令转译为微指令,此微指令包含此相对应条件。微处理器并包含多个执行单元,用以依据此相对应条件以执行微指令。对于各个IT区块指令,指令转译单元利用所抽取的条件资讯确认一相对应状态值。此状态值包含IT指令的低位八个位元,且其中低位五个位元左移N-1位元,其中,N是指此IT区块指令在IT区块内的位置。

Description

融合IF-THEN指令的微处理器
技术领域
本申请案主张2013年5月21日提出申请的美国临时申请案第61/825,699号“融合IF-THEN指令的微处理器”的优先权,此案件系整体引用为本案的公开公开内容。
本发明关于微处理器的技术领域,特别是关于非循序执行(out-of-orderexecution)微处理器。
背景技术
条件指令的执行是处理器指令集的一个重要议题。举例来说,条件分支指令几乎存在于每个指令集且经常被程序使用。除了分支指令,指令集亦会包含其他种类有条件执行的指令。
对于提升处理器效能的要求持续存在。相较于只能依序执行指令的处理器,具有微架构能使处理器不依照程序顺序执行指令(非循序执行),通常可以获得显著的效能提升。因此,对于指令集内具有条件指令的处理器而言,寻找一个方法改善处理器非循序执行的效能,是一个亟待解决的问题。
发明内容
本发明的一实施例提供一微处理器。此微处理器包含一指令转译单元,用以由该IT指令抽取条件资讯以及将该IT指令融合于一IT区块指令。对于该IT区块的每个指令,此指令转译单元使用由该IT指令所抽取的该条件资讯以确认该IT区块指令的一相对应条件,以及将该IT区块指令转译为一微指令,而此微指令包含该相对应条件。此微处理器并包含多个执行单元,用以依据该相对应条件,以条件地执行该微指令。
本发明的另一实施例提供一种利用一微处理器执行一If-Then(IT)指令与一相关IT区块的方法,此方法包含由该IT指令抽取条件资讯的步骤。对于该IT区块的每个指令,此方法包含:使用由该IT指令所抽取的该条件资讯以确认该IT区块指令的一相对应条件;将该IT区块指令转译为一微指令,而此微指令包含该相对应条件;以及依据该相对应条件,条件地执行该微指令。对于该IT区块的该第一指令,前述将该第一IT区块指令转译为一微指令的步骤系包含将该IT指令融合于该IT区块指令。
本发明的又一实施例提供一个微处理器。此微处理器包含一指令转译单元,透过将一IF-Then(IT)指令与一邻近程序指令的融合,以将该IT指令与一相关联IT区块转译出M个微指令。此IT区块包含M个指令,其中,M为一大于零的整数。此微处理器并包含多个执行单元,用以执行由该IT指令与该相关联IT区块转译出的该M个微指令。
本发明的又一实施例提供一种利用一微处理器执行的方法。此方法包含:利用该微处理器的一指令转译单元,将一IF-Then(IT)指令与一邻近程序指令融合,以将该IT指令与一相关联IT区块转译出M个微指令。此IT区块包含M个指令,其中M为一大于零的整数。此方法并包含利用该微处理器的多个执行单元,执行由该IT指令与该相关联IT区块转译出的该M个微指令。
本发明的又一实施例提供一种微处理器。此微处理器包含一指令转译单元,用以将N个指令的指令序列转译为M个微指令的第一指令序列,其中,该N个指令的指令序列为一IF-Then(IT)指令与跟随该IT指令的一相关联的IT指令区块,其中各该IT区块指令为一非条件指令,该非条件指令会透过IT指令所指定条件的暗示而变为条件指令,其中,N为一大于一的整数,M为一大于零的整数。此指令转译单元亦将N-1个指令的指令序列转译为M个微指令的第二指令序列,其中,该N-1个指令的指令序列对应于该IT区块指令,其中该N-1个指令的每一个指定与其相对应的IT区块指令相同的操作,但对该相对应的IT指令区块所暗示的指定条件予以明确指定,其中,该第二指令序列与该第一指令序列相同。此微处理器亦包含多个执行单元,用以执行由该指令转译单元所产生的该些微指令。
本发明的又一实施例提供一种利用一微处理器执行的方法。此方法包含:利用一指令转译单元,将N个指令的指令序列转译为M个微指令的第一指令序列,其中,该N个指令的指令序列为一IF-Then(IT)指令与跟随该IT指令的一相关联的IT指令区块,其中各该IT区块指令为一非条件指令,该非条件指令会透过IT指令所指定条件的暗示而变为条件指令,其中,N为一大于一的整数,M为一大于零的整数。此方法亦包含:利用该指令转译单元,将N-1个指令的指令序列转译为M个微指令的第二指令序列,其中,该N-1个指令的指令序列对应于该IT区块指令,其中该N-1个指令的每一个指定与其相对应的IT区块指令相同的操作,但对该相对应的IT指令区块所暗示的指定条件予以明确指定,其中,该第二指令序列与该第一指令序列相同;此方法亦包含:利用多个执行单元,用以执行由该指令转译单元所产生的该些微指令。
关于本发明的优点与精神可以藉由以下的发明详述及附图得到进一步的了解。
附图说明
图1为本发明一微处理器的方块示意图。
图2为图1的指令格式化单元为各个IT区块指令所产生的ITSTATE 的一实施例的方块示意图。
图3为图1的FSTATE的一实施例的方块示意图。
图4为图1的格式化指令队列(FIQ)的项目的一实施例的方块示意图。
图5为图1的指令间接暂存器(IIR)的项目的一实施例的方块示意图。
图6为图1的重排缓冲器(ROB)的项目一实施例的方块示意图。
图7为图1的微处理器执行IT指令与IT区块的一实施例的流程图。
图8为图1的微处理器所执行的操作一实施例的流程图。
图9为图1的微处理器执行图8的操作的一实施例的方块示意图。
图10为图1的微处理器执行图8的操作的另一实施例的方块示意图。
其中,附图标记:
微处理器100                        指令快取102
指令转译单元104                    暂存器别名表(RAT)112
保留站114                          执行单元116
引退单元118                        格式化单元状态(FSTATE)126
储存处理器状态暂存器(SPSR)128      指令间接暂存器(IIR)122
重排缓冲器(ROB)124
指令格式化单元132
格式化指令队列(FIQ)134
指令转译器 136
微指令 154
格式化单元状态(formatter state, FSTATE)储存空间 126
程序指令 152
延伸指令队列(XIQ) 138
ITSTATE值 202
执行前位元 206
全部条件 208
罩遮位元 212
ITSTATE栏位 304
计数栏 306
格式化指令队列134的项目 402
栏位 406
ITSTATE栏位 404
指令间接暂存器(IIR)的项目 502
罩遮栏位 504
重排缓冲器的项目 602
融合旗标 604
完成旗标 606
例外旗标 608
后续指令指标(NSIP)栏位 612
结果栏位 614
Thumb指令 902
格式化指令 904
微指令 906
程序指令 1002
格式化指令 1004
微指令 1006
具体实施方式
名词定义
IF-Then(IT)指令,系赋予紧接在IT指令后方的N个指令条件,N大于零。本文将此N个指令称为“IT区块”或“IT区块指令”。IT指令所包含的条件资讯可透过:(1)N,以及(2)IT区块各个指令的条件,加以确定。举例来说,进阶精简指令集机器(Advanced RISC Machines,ARM)架构的IT指令即是本文所定义的IT指令。
IT区块,系紧接在前方的指令后并被此指令赋予条件的N个指令,N大于零。此在前方的指令称为“IT指令”。IT区块内的N个指令中的每一个的相对应条件,可透过IT指令的条件资讯加以确定。举例来说,ARM架构的IT区块即是本文所定义的IT区块。
将一第二指令融合(Fusing)于一第一指令,指将第一指令与第二指令集体地转译为C个微指令。C小于A与B的加总,其中,A是第一指令在不与其他指令融合的情况下,透过转译通常会产生的微指令的数量,B是第二指令在不与其他指令融合的情况下,透过转译通常会产生的微指令的数量。在许多事例中,A、B与C都是一。亦即,将一第二指令融合于一第一指令系指将第一与第二指令转译出单一个微指令。
指令转译单元,系处理器内将第一指令集的指令转译为第二指令集的指令的硬件。第一指令集系撰写程序的程序人员可由外部看见并由微处理器加以执行。亦即,第一指令集具有架构,其系遵守一指令集架构(ISA)。本文的第一指令集的指令是指,指令、巨集指令、程序指令、架构指令、或是ISA指令。本文的第二指令集的指令是指微指令,执行一个或多个微指令的执行结果系由程序指令所定义。因此,多个执行单元对于一个或多个微指令的集体执行可由程序指令所实现(implement);亦即,多个执行单元对于由指令转译单元所产生的实现微指令的集体执行,系执行由程序指令所指定的操作于程序指令所指定的输入上,以产生程序指令所定义的结果。被融合的程序指令所转译出的微指令系实现此被融合的程序指令。
指令集,定义二进位制编码值的集合(即机器语言指令)与微处理器所执行操作间的对应关系。机器语言指令指示微处理器执行的操作如:将暂存器1内的运算元与暂存器2内的运算元相加并将结果写入暂存器3、将记忆体地址0x12345678的运算元减掉指令所指定的立即运算元并将结果写入暂存器5、依据暂存器7所指定的位元数对暂存器6内的数值进行位移、若是零旗标被设定时分支到指令后方的36个位元组、将记忆体地址0xABCD0000的数值载入暂存器8。因此,指令集系定义各个机器语言指令使微处理器执行所欲执行的操作的二进位编码值。须了解的是,指令集定义二进位值与微处理器操作间的对应关系,并不意味着单一个二进位值就会对应至单一个微处理器操作。具体来说,在部分指令集中,多个二进位值可能会对应至同一个微处理器操作。
指令集架构(ISA),从微处理器家族的脉络来看,包含:(1)指令集;(2)指令集的指令所能存取资源(例如:暂存器与记忆体定址模式)的集合;以及(3)微处理器回应指令集的指令执行所产生的例外事件集(例如:除以零、分页错误、记忆体保护违反等)。因为程序撰写者,如组译器与编译器的撰写者,想要作出可在一微处理器家族执行的机器语言程序时,就需要此微处理器家族的ISA定义,所以微处理器家族的制造者通常会将ISA定义于操作者操作手册中。举例来说,2009年3月公布的Intel64与IA-32架构软件开发者手册(Intel64and IA-32Architectures Software Developer’s Manual)即定义Intel64与IA-32处理器架构的ISA。此软件开发者手册包含有五个章节,第一章是基本架构;第二A章是指令集参考A至M;第二B章是指令集参考N至Z;第三A章是系统编程指南;第三B章是系统编程指南第二部分,此手册系列为本案的参考文件。此种处理器架构通常被称为x86架构,本文中则是以x86、x86ISA、x86ISA家族、x86家族或是相似用语来说明。在另一个例子中,2010年公布的ARM架构参考手册,ARM v7-A与ARM v7-R版本Erratamarkup,定义ARM处理器架构的ISA,此参考手册整体系引用为本说明书的公开内容。此ARM处理器架构的ISA在此亦被称为ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用语。其他众所周知的ISA家族还有IBMSystem/360/370/390与z/Architecture、DEC VAX、Motorola68k、MIPS、SPARC、PowerPC与DEC Alpha等等。ISA的定义会涵盖处理器家族,因为处理器家族的发展中,制造者会透过在指令集中增加新指令、以及/或在暂存器组中增加新的暂存器等方式来改进原始处理器的ISA。举例来说,随着x86程序集架构的发展,其于Intel Pentium III处理器家族导入一组128位元的多媒体扩展指令集(MMX)暂存器作为单指令多重数据流扩展(SSE)指令集的一部分,而x86ISA机器语言程序已经开发来利用XMM暂存器以提升效能,虽然现存的x86ISA机器语言程序并不使用单指令多重数据流扩展指令集的XMM暂存器。此外,其他制造商亦设计且制造出可执行x86ISA机器语言程序的微处理器。例如,超微半导体(AMD)与威盛电子(VIA Technologies)即在x86ISA增加新技术特征,如超微半导体的3DNOW!单指令多重数据流(SIMD)向量处理指令,以及威盛电子的Padlock安全引擎随机数产生器(random number generator)与先进译码引擎(advanced cryptography engine)的技术,前述技术都是采用x86ISA的机器语言程序,但却非由现有的Intel微处理器实现。以另一个实例来说明,ARM ISA原本定义ARM指令集状态具有4位元组的指令。然而,随着ARM ISA的发展而增加其他指令集状态,如具有2位元组指令以提升编码密度的Thumb指令集状态以及用以加速Java位元组码程序的Jazelle指令集状态,ARM ISA机器语言程序已被发展来使用部分或所有其他ARM ISA指令集状态,即使现存的ARM ISA机器语言程序并非采用这些其他的ARM ISA指令集状态。
ARM架构系指定一ARM指令集与一Thumb指令集,ARM指令集系一32位元指令集。Thumb指令集原本系开发为具有ARM指令集功能的子集的16位元指令集,ARM ISA的后续版本导入Thumb-2的技术,使原本Thumb指令集能够延伸出许多32位元指令。当32位元指令字的高位(upper)四个位元被设定时,在ARM指令集中的大部分指令都可被条件执行。然而,此四个位元通常无法在16位元的Thumb指令中找到对应(例如,例外系一条件分支指令)。
因应此不足之处,ARM架构具有一个称为If-Then(IT)的指令。如ARM架构参考手册第A8-104页所称,“If Then指令可对其后续至多四个指令(即IT区块)赋予条件。IT区块内的指令的条件可与其相同,或部分与其相反”。2010年公布的ARM架构参考手册,ARM v7-A与ARM v7-R版本Errata markup,整体系引用为本说明书的公开内容。此ARM IT指令指定一第一条件(位元[7:4])与一罩遮(位元[3:0])。此第一条件可以是表1所示的十五个可能条件的其中之一(条件值‘1111’为无法预期(UNPREDICTABLE))。
表1
此ARM架构指定一应用程序状态暂存器(Application Program StatusRegister,APSR),此应用程序状态暂存器包含四个条件旗标:N(负数)、Z(零)、C(进位)、与V(溢位)。在表1中每一行(row)的最右侧栏(column)即显示条件旗标的数值,此旗标数值亦适用于其他行的相应栏所指定的条件。换言之,对于表1中每一给定行的条件而言,例如由一IT指令赋予条件的一IT区块指令,在相对应的条件指令的执行时间内,应用程序状态暂存器的条件旗标的当前值不是满足此条件,就是不满足此条件。
IT指令的第一条件位元指定IT区块内第一指令的条件。IT指令的罩遮位元对于IT区块内的指令数量的值进行编码,易言之,IT区块内的指令数量也就是紧接着IT指令且被IT指令赋予条件的指令的数量。无论指令是一“Then”(T)或是一“Else”(E),对于IT区块的各个指令,罩遮位元也会进行编码。“T”是指赋予IT区块指令的条件将会是第一条件(亦即IT指令的[7:4]位元所指定的条件);不过,“E”则是指赋予IT区块指令的条件将会是第一条件的相反条件。举例来说,对于一给定IT区块指令而言,若是第一条件是EQ而E被指定于罩遮内,赋予此IT区块指令的条件就会是NE。对于IT指令而言,E会触发第一条件的低位(lower)位元(除非E无法为AL条件所指定)此ARM架构指定一当前程序状态暂存器(Current Program Status Register,CPSR)。
依据ARM架构,应用程序状态暂存器是当前程序状态暂存器在应用层的别名。当前程序状态暂存器包含提供给Thumb IT指令的执行状态位元,这些位元称为ITSTATE位元。一共有八个ITSTATE位元。ITSTATE的高位三个位元([7:5])指定赋予IT区块指令的基础条件(base condition),而其低位五个位元则是对于各IT指令区块的IT区块的大小(亦即IT区块内的指令的数量值)以及各IT区块指令的条件的最低有效位元(least significant bit)的值加以编码。在传统的ARM处理器中,ITSTATE位元是透过IT指令与IT指令区块的执行来进行更新,往后将对此做更多的描述。
在传统的ARM处理器中,IT指令的执行会让当前程序状态暂存器的ITSTATE位元随着IT指令的低位八位元(亦即第一条件位元[7:4]与罩遮位元[3:0])被载入。对于IT区块内的各个指令而言,指令系依据应用程序状态暂存器的条件旗标值有条件地执行。换言之,处理器只有在应用程序状态暂存器内的条件旗标满足ITSTATE的位元[7:4]内所指定的条件的情况下,才会执行由IT区块指令所指定的操作。也就是说,在IT区块指令的执行时间内,各个IT区块指令的条件系指定于ITSTATE的位元[7:4]的当前值。在第一IT区块指令的执行时间内,其条件系由IT指令执行后的ITSTATE的[7:4]位元来确认。若是第一IT区块指令正常地完成其执行,ITSTATE的位元[4:0]就会左移一位元(其中包含在最低有效位元内移入一零值)。在第二IT区块指令的执行时间内,其条件系由更新后的ITSTATE的[7:4]位元来确认。若是第二IT区块指令正常地完成其执行,ITSTATE的位元[4:0]会再度左移一位元。此程序会重复执行于各个IT区块指令,直到最后一个IT区块指令正常地完成其执行。此时,各个ITSTATE位元都会被更新为零值。不过,若是过程中有一个IT区块指令发生例外,当前程序状态暂存器的ITSTATE位元的未更新值(亦即,执行导致例外的IT区块指令前的当前程序状态暂存器的ITSTATE位元的值)会被储存在相关例外处理程序(exception handler)的例外模式(exception mode)下的ARM架构储存处理器状态暂存器(Saved Processor Status Register,SPSR)中。
如前文所述,由于IT区块指令的内部并不包含条件,传统的ARM处理器是从当前程序状态暂存器的ITSTATE位元取得赋予IT指令的条件,这会造成IT区块指令的非循序执行的困难。
本发明的实施例的优点在于,对于各个程序的多样IT指令,透过将IT指令与其邻近指令的融合,可避免IT指令不必要地浪费机器资源,例如:重排序缓冲器项目、保留站项目、暂存器配置表项目、指令间接暂存器项目、执行单元配置储位、指令退出储位等等。这有助于增加具有IT指令(例如ARM ISA的IT指令)的编码中,单位时脉率的指令数(instruction per clock,IPC)。本发明所提供的实施例具有可接受IT区块指令的非循序执行的优点。
图1为一微处理器100的方块图。此微处理器100系一非循序执行微处理器100,亦即,此微处理器100会发布与程序顺序不相关的指令以供执行,只要此执行有利于整体效能。不过,此微处理器100依照程序顺序引退指令。此微处理器100具有一功能单元管线,其具有一指令快取102连接至一指令转译单元104,指令转译单元104连接至一暂存器别名表(register alias table,RAT)112,暂存器别名表112连接至一保留站114,保留站114连接至执行单元116,执行单元116连接至一引退单元118,引退单元118连接至储存处理器状态暂存器(SPSR)128。就一实施例而言,每个储存处理器状态暂存器128对应一个例外模式。微处理器100并具有一指令间接暂存器(IIR)122与一重排缓冲器(ROB)124,指令间接暂存器122连接至指令转译单元104,而重排缓冲器124则是连接至执行单元116。指令转译单元104包含一指令格式化单元132,指令格式化单元132连接至一格式化指令队列(FIQ)134,格式化指令队列134连接至一指令转译器136,指令转译器136连接至暂存器别名表112。在一实施例中,在指令转译器136与暂存器别名表112间连接有一微指令队列,以缓冲由指令转译器136产生并由暂存器别名表112接收的微指令154。指令格式化单元132具有定义为格式化单元状态(FSTATE)126的储存空间。
指令快取102暂存(cache)由系统记忆体取得的程序指令152。在一实施例中,此指令快取102每一个时钟周期提供十六个程序指令的位元组至指令转译单元104。此程序指令152可以是ISA指令152、架构指令、巨集指令152、或简单指令152。在一实施例中,此程序指令系ARM ISA指令,其包含Thumb指令,如Thumb IT指令与紧跟在此Thumb IT指令后方的IT区块内的Thumb指令。
指令转译单元104将由指令快取102所取得的程序指令转译为微指令154,程序指令包含IT指令与IT区块指令,微指令154由一微指令集所定义,并由执行单元116所执行的指令集合。微指令集不同于程序指令152所属的ISA。在一实施例中,一个微指令154的宽度约为200位元。本发明的优点在于,指令转译单元104将IT指令与邻近于IT指令的程序指令152相融合以提升微处理器100的效率,此指令转译单元152在本文后续内容会有更详细的说明。
暂存器别名表112执行暂存器重命名的工作。保留站114保留微指令154,直到这些微指令已完成发布至执行单元116以供执行的准备,亦即,直到所有由微指令154指定的来源运算元都可被取得且执行单元116可被利用以执行微指令154为止。执行单元116所执行的微指令154包含由IT区块指令152转译来的微指令154。举例来说,执行单元116可包含整数单元、浮点单元、单指令多数据流(SIMD)单元、载入/储存单元、与/或分支单元。在一实施例中,此微处理器100以超纯量(superscalar)、非循序的方式,在每一个时钟周期内,对于各个执行单元116发布一个微指令154。
在一实施例中,此暂存器别名表112将由程序指令152指定的微处理器100架构暂存器重新命名为接收微指令154结果的实体暂存器。在一实施例中,此实体暂存器的名称对应于分配给微指令154的重排缓冲器124的项目索引。就一实施例而言,此重排缓冲器124以环型队列的方式组织起来。暂存器别名表112依据程序顺序由指令转译单元104接收微指令154,并以先入先出(FIFO)的方式对各个微指令154分别分配一个重排缓冲器项目124。因此,此重排缓冲器124会使微指令154的顺序维持其由程序指令154转译出来的程序顺序,此特征可以使引退单元118依照程序顺序引退微指令154与其相对应的程序指令152。进一步来说,若是所有由程序指令152转译出来的微指令154都由执行单元116完成执行,且这些微指令154是微处理器100中最旧的微指令154(可由其位于重排缓冲器124中相对应于后续引退指令指标(next-to-retirepointer)的位置来确认),引退单元118会引退此微指令154与程序指令152,假如这些微指令154中没有任何一个微指令导致例外发生的话。进一步来说,引退单元118会将微指令154的执行结果写入微处理器100的架构状态、更新架构程序计数器、并释放对应于这些微指令154的重排缓冲器项目124。此外,若是完成引退准备的微指令154导致例外条件的发生,引退单元118会更新相对应例外模式的储存处理器状态暂存器128。
程序指令152可具有不同长度。举例来说,ARM ISA程序会包含32位元与16位元长度的指令152。指令格式化单元132对指令快取102所取得的指令串位元组进行解码,并确认这些不同长度的程序指令152的边界。就一实施例而言,此指令格式化单元132在格式化指令队列134的每一个项目都放置一个程序指令152。格式化指令队列134的项目在图4会有更详细的说明。当遇到一个IT指令152时,指令格式化单元132会将资讯储存至FSTATE126,指令格式化单元132的状态机需要此资讯来对各个IT方块指令152产生相对应的ITSTATE。就一实施例而言,格式化指令队列134的项目用以保留由指令格式化单元132所接收的相对应ITSTATE。FSTATE126在图3会有更详细的说明。就一实施例而言,指令格式化单元132在一时钟周期内可以格式化至多三个程序指令152,并将其连同相对应的ITSTATE提供至格式化指令队列134。
格式化指令队列134提供格式化后的程序指令与相关的ITSTATE至指令转译器136。指令转译器136将其转译为微指令154,并在提供微指令154时一并提供相应的ITSTATE,此ITSTATE系由指令格式化单元132产生给转译出此微指令154的程序指令152。在一实施例中,格式化指令队列134在一个时钟周期内,提供至多三个格式化后的程序指令给指令转译器136。当重排缓冲器的项目124可用来放置这些微指令154时,暂存器别名表112会从延伸指令队列(XIQ)138依据程序顺序依序取得这些微指令154。在一实施例中,此指令格式化单元132将IT指令指示为一空操作(no-op)指令,而指令转译器136将空操作指令与一邻近指令相融合。
图2为图1的指令格式化单元132为各个IT区块指令所产生的ITSTATE202的方块示意图。在一实施例中,指令格式化单元132为各个IT区块指令所产生的ITSTATE202具有八个位元。指令格式化单元132产生一ITSTATE202位元的“执行前”数值,以供IT区块指令来模拟当前程序状态暂存器被ARM架构所指定时,其ITSTATE位元的操作状态。在概念上,ITSTATE202的数值在IT区块指令执行前,于传统ARM处理器的当前程序状态暂存器中的ITSTATE位元值。如图2所示,ITSTATE202的位元[7:5]保留基础条件204,位元[4:0]保留“执行前”位元206给IT区块指令。执行前位元206对IT区块指令条件的最低有效位元与执行前IT区块的大小进行编码。执行前IT区块的大小指IT区块指令的数量,其包含即时IT区块指令但排除任何IT区块内,早于此即时IT区块指令的指令。换言之,IT区块指令的ITSTATE202的数值是相关联的IT指令152的位元[7:0],此IT指令152的位元[4:0]系左移N-1位元,其中N是IT区块内的指令位置,换言之,对于第一指令而言,N就是1,对于第二指令而言,N就是2,对于第三指令而言,N就是3,对于第四指令而言,N就是4。举例来说,假定IT指令的低位八个位元的数值是二进位数00100101,此数值指进位设置(Carry Set,CS)的第一条件0010与一罩遮0101,其指定IT区块的大小为四个指令且“T”赋予IT区块的第二指令、“E”赋予IT区块的第三指令且“T”赋予IT区块的第四指令。在此范例中,指令格式化单元132为第一IT区块指令所产生的ITSTATE202是00100101,为第二IT区块指令所产生的是00101010,为第三IT区块指令所产生的是00110100,为第四IT区块指令所产生的是00101000。在此情况下,IT区块指令的全部条件208保留于ITSTATE202的位元[7:4],即CS(二进位数0101)赋予第一、第二与第四IT区块,而进位清除(Carry Clear(CC),其为二进位数0011)则赋予第三IT区块指令。ITSTATE202的位元[3:0]指罩遮位元212。就一实施例而言,对于任何非IT区块指令而言,指令格式化单元132所产生的ITSTATE数值为二进位数00000000。此ITSTATE202有利于微指令154的执行与例外的处理,这在后续段落会有更详细的说明。简言之,ITSTATE202的全部条件208会成为IT区块指令转译出的各个微指令154的条件,而全部的ITSTATE202会转变为储存处理器状态暂存器128的ITSTATE202并提供给例外处理程序。
就一实施例而言,指令转译单元104可透过将一IT指令与其邻近程序指令152的融合,以有效地将此IT指令152转译为零微指令154。换言之,IT指令152与IT区块指令152所转译出的微指令缺少一对应于IT指令的微指令。亦即,指令转译单元104将IT指令152与邻近于IT指令的程序指令152转译出C个微指令,其中,C等于A与B之加总减一,其中,A是邻近的程序指令152在不与其他指令融合的情况下,透过转译通常会产生的微指令的数量,B是IT指令152在不与其他指令融合的情况下,透过转译通常会产生的微指令的数量。B通常为一,即一空操作微指令154。在许多情况下,A、B与C均为一,亦即,将一IT指令152与邻近的程序指令152相融合,就是将此二个指令转译为单一个微指令154。此融合操作是可能实现的,因为指令转译单元104会产生适当的ITSTATE给各个由IT区块指令152转译而来的微指令154。如此,可省略传统处理器因应IT指令应为IT区块指令152取得条件时,需为微指令154可能被执行的情况而填写当前程序状态暂存器的ITSTATE位元的需求。因此,IT指令152的功能会分布于IT区块指令152转译所产生的微指令154中,本文对此会有详细说明。
图3为图1的FSTATE126一实施例的方块示意图。此FSTATE126包含一ITSTATE栏304与一计数栏306。在指令格式化单元132遇到一IT指令152时,指令格式化单元132会对IT指令152进行解码以确认IT区块内的指令数量,并以IT区块的指令数量的数值填入此计数栏306以及以IT指令152的位元[7:0]填入ITSTATE304,两者的调整可基于在IT指令于同一个时钟周期内被处理的IT区块指令152的数量来进行,这部分在下文会有更详细的说明。指令格式化单元132使用ITSTATE304与计数栏306的数值在后续时钟周期内产生ITSTATE202,以在IT指令被格式化的时钟周期内提供ITSTATE202给未在此时钟周期内格式化的IT区块指令。如前述,就一ARM架构的实施例而言,IT区块内的指令数量由IT指令152的罩遮位元(位元[3:0])所确定。尤其是,若是位元0是一,指令数量即为四;若是位元0是零且位元1是一,数量就是三;若是位元0与1都是零而位元2是一,数量就是二;若是位元0、1与2都是零而位元3是一,数量就是一。在一实施例中,指令格式化单元132可以在一个时钟周期内格式化多个指令152以储存至格式化指令队列134。当指令格式化单元132格式化IT区块指令152时,指令格式化单元132利用给定时钟周期内格式化的数量来减少计数栏306的数值,并依此更新ITSTATE304。进一步来说,指令格式化单元132系依据给定时钟周期内IT区块指令被格式化的数量,来将ITSTATE304的低位五个位元向左移动。若是指令格式化单元132在一给定时钟周期内格式化IT指令与一个以上的IT区块指令,计数栏306与ITSTATE304的起始值就会反映在此时钟周期内IT区块指令被格式化的数量。举例来说,若是IT区块包含四个指令而指令格式化单元132在第一时钟周期内格式化IT指令与前两个IT区块指令,计数栏306就会被写入数值二,而ITSTATE就会具有IT指令的低位八个位元的数值,但其中低位五个位元系左移二位元。此指令格式化单元132亦可适用于在单一时钟周期内格式化三个以上指令的实施例,因此可能遭遇两个IT指令。在此实施例中,指令格式化单元132会具有储存两个FSTATE126的储存空间。
图4为图1的格式化指令队列134的一项目402的实施例方块示意图。此格式化指令队列项目402具有一栏位406,由指令格式化单元132接收一被格式化程序指令,例如一IT指令152、一IT区块指令或是其他程序指令。此格式化指令队列项目402并具有一ITSTATE栏位404,用以接收指令格式化单元132为此格式化程序指令406所产生的ITSTATE202。
图5为图1的指令间接暂存器122的项目502的实施例方块示意图。指令间接暂存器122的项目502配置给各个由指令转译单元104产生的微指令154,各个指令间接暂存器项目502保留微指令154的部分状态。如图2所示,各个指令间接暂存器项目502在微指令154的其他状态(未图示)中具有一罩遮栏位504。当指令转译单元104产生由IT区块指令转译而来的微指令154时,由指令格式化单元132对转译出微指令的IT区块指令所产生的ITSTATE202的罩遮位元212,储存至指令间接暂存器项目502中分配给微指令154的罩遮栏位504。若是微指令154造成一例外事件,微处理器100会由相对应的指令间接暂存器项目502读取罩遮504的数值,并填入相关联例外模式的储存处理器状态暂存器128的ITSTATE[3:0]位元,以供给例外处理程序。在此情况下,当前程序状态暂存器的ITSTATE会被概念化为虚拟的或是分布于各个微指令154,而非位于单一架构状态中。此特征有利于微指令154(包含由IT区块指令转译而来的微指令154)的非循序执行。就一实施例而言,若是指令转译单元104将IT区块指令152转译为多个微指令154,各个微指令154的相关联的指令间接暂存器项目502被填入由指令格式化单元132为转译出微指令154的IT区块指令所产生的ITSTATE202的罩遮位元212。在另一实施例中,罩遮212储存于关联于此微指令154的重排缓冲器项目602(请参照图6),而非被储存于指令间接暂存器122内,并且由重排缓冲器项目602提供至引退单元118。
图6为图1的重排缓冲器124的项目602的实施例方块示意图。暂存器别名表112依程序顺序配置重排缓冲器项目602给各个微指令154。重排缓冲器项目602具有一融合旗标604、一完成旗标606、一例外旗标608、一后续指令指标(next sequential instruction pointer,NSIP)栏位612、与关联于配置此项目602的微指令154的一结果栏位614。此结果栏位614由执行此微指令154的执行单元116接收微指令154的执行结果。融合旗标604在指令转译器136将转译出此微指令154的程序指令152与其邻近程序指令152相融合时被设定为一真值;否则,此融合旗标604被设定为一假值。其优点在于,若是指令转译单元104将邻近IT指令152的程序指令152融合至IT指令152时,微处理器100就会设定由IT指令152与其邻近程序指令152转译出的微指令154的融合旗标604。后续指令指标栏位612仍正常地填入紧跟在转译出微指令154的程序指令152后方的程序指令152的记忆体地址。不过,在两个程序指令152相融合的情况下,后续指令指标栏位612则是填入紧跟在此二个相融合的程序指令中,第二个程序指令152后方的程序指令152的记忆体地址。就重排缓冲器项目602的配置而言,完成旗标606起初为假,而执行单元116在完成微指令154的执行后就会将完成旗标606设定为真,同时也包含填写项目602的结果614与例外旗标608。
例外旗标608起初在重排缓冲器项目602的配置中设定为假,若是微指令造成一例外条件,执行单元116就会将例外旗标608设定为真。若是一微指令154指出一例外且其融合旗标604指出相对应的程序指令152已被融合,例如一融合IT指令152,引退单元118就会指示指令转译单元104暂时不去融合程序指令152。引退单元118会使微处理器100开始去重新取得与重新转译前一个导致例外发生的融合程序指令的程序,而此时,指令转译单元104不会去融合邻近的程序指令152。因此,若是一IT指令152与其相邻的程序指令152相融合而其中任一个指令导致例外,此IT指令152与其相邻的程序指令152就会被重新转译,但是指令转译单元104在此重新转译的过程中不会将此二指令相融合。就一实施例而言,当一IT指令152被重新转译而不进行指令融合时,指令转译单元104会将IT指令152转译为一空操作微指令154,因为没有任何需要微指令154执行的操作,这是因为没有CPSR的单一架构ITSTATE位元需要载入,且ITSTATE202已经由指令转译单元104产生给每个由相关联的IT区块指令152转译出的微指令154,此处将予以阐述。本文所称的例外条件可包含,但不限于,中断点、未定义指令、管理程序呼叫、软件中断、记忆系统中止(memory system abort)、页面错误、机器检查(machine check)、记忆体保护错误、与各种算术例外,如除以零、溢位与不足位(underflow)。
图7为图1的微处理器100执行一IT指令152与IT区块一实施例的流程图。此流程始于步骤702。
在步骤702,指令格式化单元132由指令快取102接收程序指令152位元组串流,并在其中遇到一IT指令152并对此IT指令152进行解码。此指令格式化单元132由IT指令152抽取要产生ITSTATE202给后续IT区块指令152的数据。以ARM架构为实施例,抽取出的资讯是第一条件与IT指令152的罩遮栏位(即低位八个位元)。指令格式化单元132亦将IT指令152连同作为ITSTATE202的二进位数00000000写入格式化指令队列134。在一实施例中,指令格式化单元132在将IT指令写入格式化指令队列134前会将IT指令标示为空操作指令,且指令转译器136将一空操作程序指令的邻近程序指令152融合于此空操作程序指令152。指令格式化单元132亦基于所抽取的资讯更新FSTATE126。进一步来说,指令格式化单元将IT区块指令中留待指令格式化单元132处理的数量填入计数栏306内。举例来说,若是指令格式化单元132在其处理IT指令152的同一个时钟周期内处理完所有IT区块指令152时,指令格式化单元132就会在计数栏306内填入零值。再举一例,若是指令格式化单元132在其处理IT指令152的同一个时钟周期内未处理任何IT区块指令152时,指令格式化单元132在计数栏306内填入的数值就会是IT区块的大小。再举一例,假定IT区块的大小为三,而指令格式化单元132在其处理IT指令152的同一个时钟周期内处理了一个IT区块指令152时,指令格式化单元就会在计数栏306内填入二。此外,指令格式化单元132会以IT指令152的位元[7:5]填入ITSTATE304的位元[7:5]。最后,指令格式化单元132还会以IT指令152的位元[4:0]依据IT指令152在同一个时钟周期内处理的IT区块指令152的数量左移后产生的数值,填入ITSTATE304的位元[4:0]。接下来前进至步骤704。
在步骤704中,指令格式化单元132将IT区块指令152解码。值得注意的是,步骤704可对于部分或全部IT区块指令152进行处理,而此处理与步骤702对于IT指令152的处理在同一个时钟周期内。指令格式化单元132确认各个IT区块指令的ITSTATE202。若是此IT区块指令与IT指令152在同一个时钟周期内被处理,指令格式化单元132就会产生ITSTATE202,其数值为IT指令152的低位八个位元且其低位五个位元平移N-1,其中N是IT区块内该指令的位置。若是IT区块指令在IT指令152之后续时钟周期内进行处理,指令格式化单元132就会产生ITSTATE202,而其数值为FSTATE126ITSTATE304且其低位五个位元系平移M-1,其中M是指该指令在指令格式化单元132在该时钟周期内处理的指令群中的位置。举例来说,假定:(1)指令格式化单元132可以在单一个时钟周期内格式化三个指令,(2)IT指令152的低位八个位元的数值是00001111(亦即,IT区块的大小为四个指令,第一条件为EQ,且其他三个指令都是“E”),以及(3)IT区块指令152的其中之一系在处理IT指令152的时钟周期内被处理。在此情况下,在第一时钟周期(即处理IT指令152的时钟周期)内,指令格式化单元132会产生数值为00001111的ITSTATE202给第一IT区块指令,此数值将IT指令152的低位八个位元中的低位五个位元平移距离零(N-1=1-1=0)所产生;将二进位数00011110填入FSTATE206ITSTATE304,此数值将IT指令152的低位八个位元左移一位所产生,此左移数值即在第一时钟周期内被处理的指令数量;以及在计数栏306内填入三,此数值系尚待处理的IT区块指令152的数量。在第二时钟周期内,指令格式化单元132会为三个尚待处理的IT区块指令152的每一个产生ITSTATE202的数值,如表2所示;将计数栏306更新为零,此数值为先前的计数栏306数值(即三)减去在第二时钟周期内被处理的指令数量(即三);以及将数值00010000填入ITSTATE304,此数值为先前的ITSTATE304的低位五个位元左移三位的数值,此左移数值即为第二时钟周期内被处理的IT区块指令152的数量。接下来前进至步骤708。
表2
在步骤708中,指令转译器136接收来自格式化指令队列134的IT指令152,并将其转译为微指令154。一般而言,指令转译器136转译IT指令152时,指令转译器136会将邻近于IT指令152的程序指令152融合于IT指令152。不过,若是如前述因为例外或某些使融合无法进行的原因而导致IT指令被重新转译,指令转译器136会将IT指令转译为空操作微指令154。就一实施例而言,指令转译器会将IT指令152邻近的程序指令152融合于IT指令152的任一侧,端视格式化指令队列134提供给指令转译器136的格式化指令列中,IT指令的方向而定。亦即,此邻近的程序指令152可能是在IT指令前,或在IT指令后(即IT区块的第一程序指令152)。举例来说,假定指令转译器136能够在一个时钟周期内转译三个格式化指令。若是IT指令152是指令转译器136在一给定时钟周期内所接收的三个指令中的最后一个,指令转译器136就会将此IT指令136与其在前的指令融合;反之,若是IT指令152是指令转译器136在一给定时钟周期内所接收的三个指令中的第一或第二个,指令转译器136就会将此IT指令152与其后的指令融合,也就是将IT区块的第一指令融合于IT指令152。值得注意的是,在IT指令152与第一IT区块指令融合的情况下,步骤708中IT指令152与其邻近程序指令152的融合处理,将会与步骤712中第一IT区块指令的转译处理同时进行,其中的IT指令152与第一IT区块指令相融合。接下来前进的步骤712。
在步骤712中,指令转译器136由格式化指令队列134接收格式化IT区块指令406与相对应的ITSTATE404,并将IT区块指令406转译为微指令154。亦即,指令转译器136会将各个IT区块指令406转译为一个或多个微指令154以实现IT区块指令406。各个微指令154包含一条件栏位,供指令转译器136填入由格式化指令队列134所接收的相对应的ITSTATE404的全部条件(即位元[7:4])。随后指令转译器136输出各个微指令154并提供给暂存器别名表112。如前述,在一实施例中,一微指令队列连接于指令转译器136与暂存器别名表112间,以缓冲其间的微指令154传递。此外,指令转译器136也提供相对应的ITSTATE404的罩遮位元212(即位元[3:0]),供载入配置给微指令154的指令间接暂存器项目502的罩遮栏位504。在另一实施例中,提供给各个微指令154的罩遮212伴随着微指令154,由微处理器100的管道向下传输至引退单元118,而非先储存于指令间接暂存器122,然后在引退时提供给引退单元118。在另一实施例中,罩遮212储存于关联于微指令154的重排缓冲器项目602,而非储存于指令间接暂存器122,然后在引退时提供给引退单元118。值得注意的是,步骤712对于IT区块指令406的转译处理,可以与步骤708对于IT指令的融合处理同时进行。接下来前进至步骤714。
在步骤714中,IT指令152与IT区块指令152所转译融合的微指令154被提供至暂存器别名表112,然后到保留站114,接下来再逐步提供至执行单元116。执行单元116透过确认应用程序状态暂存器的条件旗标是否满足微指令154的条件以条件执行微指令154,而微指令154的条件来自ITSTATE202的全部条件位元208。若是条件满足,执行单元116就会执行微指令154;反之,执行单元116就会将微指令154视为一空操作微指令154。接下来前进至步骤716。
在步骤716中,引退单元118确认程序指令152所转译的微指令154已经成为重排缓冲器124内最旧的微指令154。相对应地,引退单元118透过检视配置给微指令154的重排缓冲器项目602的例外旗标608,来确认此微指令154是否导致例外产生。若是,流程前进至步骤722;反之前进至步骤718。
在步骤718中,引退单元118引退微指令154与转译出此微指令154的程序指令152。此流程终止于此。
在步骤722中,引退单元118将微指令154的条件位元与来自配置给微指令154的指令间接暂存器项目502的罩遮位元504,填入关联于此例外模式的储存处理器状态暂存器128的ITSTATE位元,进而提供予处理此例外状况的例外处理程序。此流程终止于此。
图8为图1的微处理器100的操作一实施例的流程图。此流程始于步骤802。
在步骤802中,指令转译单元104由指令快取102接收N个程序指令152的序列,其中N是一个大于零的整数。此N个程序指令152的序列系一IT指令与其后跟随的一个具有N-1个非条件指令的IT区块。这些非条件指令由IT指令152暗示而变为条件指令。举例来说,此N-1个非条件指令可以是16位元的非条件Thumb指令。接下来前进至步骤804。
在步骤804中,指令转译单元104将步骤802所接收的N个程序指令152的序列,转译为M个微指令154的序列,其中M是一个大于零的整数。转译此N个程序指令152的序列的步骤包含将IT指令152的一邻近程序指令152融合于此IT指令152。接下来前进至步骤806。
在步骤806中,指令转译单元104接收一N-1个程序指令152的序列,此序列与步骤802所接收的N个程序指令152的序列不同,其中,此步骤的N相同于步骤802中的整数N。步骤806的N-1个程序指令152的序列不包含一IT指令152,且与步骤802中位于IT区块的N-1个程序指令的序列相同。步骤806中每个程序指令所指定的操作与其于步骤802中的相对应程序指令相同;不过,步骤806中明确指定给IT指令152的程序指令152的条件,但在步骤802中则是暗示由相关联的程序指令152所指定。举例来说,步骤806的程序指令152可以是32位元的条件ARM指令。接下来前进至步骤808。
在步骤808中,指令转译单元104将步骤806所接收的N-1个程序指令152的序列转译为M个微指令154的序列,此序列与指令转译单元104于步骤804所产生的M个微指令154的序列相同。透过步骤804对于IT指令152的融合处理,可以减少一个微指令154的产生,并带来节省微处理器100的资源,如重排缓冲器124的项目、保留站114的项目、暂存器别名表112的项目、指令间接暂存器122的项目、执行单元116配置储位、指令引退单元118储位等等的优点。此流程终止于此。
图9为图1的微处理器100执行图8的操作的一实施例的方块示意图。图9包含由指令格式化单元132所接收的四个Thumb指令902的序列,以例示图8的步骤802所接收的N个程序指令152的序列,其中N为四。此四个指令902的序列包含一IT指令(标示为ITTE EQ)与其后跟随由三个指令构成的IT区块,此IT指令指定IT区块的大小为三且其条件分别为EQ、EQ与NE。此IT区块包含一Thumb非条件加法指令(ADD R1,R2,R3)、跟随其后的Thumb非条件减法指令(SUB R4,R5,R6)与跟随其后的Thumb非条件乘法指令(NULR7,R8,R9),上述的加法指令由IT指令赋予条件EQ,减法指令由IT指令赋予条件EQ,乘法指令由IT指令赋予条件NE。
指令格式化单元132将此四个Thumb指令902的序列转变为四个格式化指令904的序列,即一个被转变为空操作指令(或单纯以旗标标示为空操作指令)的IT指令152及其后方跟随的三个IT区块指令。如前述,尤其是图7的步骤702与704,此指令格式化单元132并为此三个IT区块指令分别产生ITSTATE202,即00000110,00001100,与00011000,提供给指令转译器136。
指令转译器136将格式化指令904转译为三个微指令906的序列,此转译步骤包含将一邻近程序指令152融合于此空操作指令。此转译产生的序列系例示图8的步骤804所产生的M个微指令154的序列,又如前述,尤其是图7的步骤708与712,其中M为三。此三个微指令906的序列包含一具有一条件EQ的条件加法微指令(ADDEQ R1,R2,R3),其后跟随一具有一条件EQ的条件减法微指令(SUBEQ R4,R5,R6),其后再跟随一具有一条件NE的条件乘法微指令(MULNE R7,R8,R9)。
图10为图1的微处理器执行图8的操作的另一实施例的方块示意图。图10包含由指令格式化单元132所接收的三个ARM指令的序列,以例示图8的步骤806所接收的N-1个程序指令152的序列,其中N为四。此三个指令1002的序列包含具有条件EQ的一ARM条件加法指令(ADD EQ R1,R2,R3),其后跟随的具有条件EQ的一ARM条件减法指令(SUB EQ R4,R5,R6),与其后跟随的具有条件NE的一ARM条件乘法指令(MUL NE R7,R8,R9)。
指令格式化单元132将此三个ARM指令1002的序列转变为三个格式化指令1004的序列,且各个格式化指令的ITSTATE202为00000000,以提供给指令转译器136。
指令转译器136将格式化指令1004转译为三个微指令1006的序列,以例示图8的步骤808所产生的M个微指令154的序列,其中M为三。此三个微指令1006的序列相同于图9的三个微指令906的序列。
透过比较图9与图10可以发现,微处理器100对于IT指令的融合处理,可以减少一个微指令154的产生,这样可节省微处理器100的资源,如重排缓冲器124的项目、保留站114的项目、暂存器别名表112的项目、指令间接暂存器122的项目、执行单元116配置储位、指令引退单元118储位等等。
前述各实施例以ARM ISA IT指令为例进行说明,不过本发明并不限于此,本发明可用以对于其他指令集架构的IT指令进行融合处理。此外,前述各实施例的指令转译器每个时钟周期所能转译的指令数量具有一给定上限,不过,其他具有不同转译指令数量上限的指令转译器亦可适用于本发明。
以上所述,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求保护范围及发明说明内容所作的简单的等效变化与修改,皆仍属本发明专利涵盖的范围内。举例来说,软件可以执行本发明所述的装置与方法的功能、制造、形塑、模拟、描述以及/或测试等。这可由一般的程序语言(如C、C++)、硬件描述语言(HDL)包含Verilog HDL,VHDL等,或是其他既有程序来达成。此软件可以设置于任何已知的电脑可利用媒介,如磁带、半导体、磁盘、光盘(如CD-ROM、DVD-ROM等)、网络接线、无线或是其他通讯媒介。此处描述的装置与方法的实施例可被包含于一半导体智财核心,例如一微处理核心(如以硬件描述语言的实施方式)并且透过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包含硬件与软件的结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一般通用电脑的微处理器装置。最后,所属技术领域的技术人员利用本发明所公开的观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明的范围。

Claims (30)

1.一个微处理器,其特征在于,包含:
一指令转译单元,用以:
由一IT指令抽取条件资讯;
将该IT指令与一IT区块指令融合;以及
对于该IT区块的每个指令:
使用由该IT指令抽取的该条件资讯确认该IT区块指令的一相对应条件;以及
将该IT区块指令转译为一微指令,该微指令包含该相对应条件;以及
多个执行单元,用以依据该相对应条件,条件地执行该微指令。
2.如权利要求1所述的微处理器,其特征在于,该IT指令包含一ARM架构IT指令。
3.如权利要求1所述的微处理器,其特征在于,该指令转译单元还用以:
对于该IT区块的每个指令,使用所抽取的该条件资讯确认一相对应状态值,其中该状态值包含该IT指令的低位8位元,该IT指令的低位5位元左移N-1位元,N指该IT区块指令在该IT区块内的位置。
4.如权利要求3所述的微处理器,其特征在于,该微处理器还用以:
检测该IT区块的所转译出的微指令是否有导致一例外条件的一微指令;以及
将关联于该例外的一ARM架构储存程序状态暂存器的低位八位元,填入转译出且导致该例外条件的该微指令的该相对应状态值。
5.如权利要求3所述的微处理器,其特征在于,对于该IT区块的每个指令:
该IT区块指令转译出的该微指令内的该相对应条件包含该相对应状态值的[7:4]位元。
6.如权利要求1所述的微处理器,其特征在于,该IT区块指令与该IT指令所融合的该微指令仅执行该IT区块指令指定的操作,而不为该IT指令执行任何操作。
7.如权利要求1所述的微处理器,其特征在于,该微处理器还用以发布由该指令转译单元产生的该些微指令以供非循序执行。
8.如权利要求1所述的微处理器,其特征在于,在至少一事例中,该指令转译单元用以:
在一第一时钟周期内,由该IT指令抽取该条件资讯;
对于一部分的该IT区块指令,在该第一时钟周期内,使用所抽取的该条件资讯确认该IT区块指令的该相对应条件;以及
对于剩余的该IT区块指令,在该微处理器接续该第一时钟周期的一个或多个时钟周期内,使用所抽取的该条件资讯确认该IT区块指令的该相对应条件。
9.一种利用一微处理器执行一If-Then指令与一相关IT区块的方法,其特征在于,该方法包括:
由该IT指令抽取条件资讯;
对于该IT区块的每个指令:
使用由该IT指令抽取的该条件资讯确认该IT区块指令的一相对应条件;
将该IT区块指令转译为一微指令,该微指令包含该相对应条件;以及
依据该相对应条件,条件执行该微指令;以及
其中对于该IT区块的该第一指令,将该IT区块指令转译为一微指令的步骤包含将该IT指令与该IT区块指令融合。
10.如权利要求9所述的方法,其特征在于,该IT指令包含一ARM架构IT指令。
11.如权利要求9所述的方法,其特征在于,该方法还包含:
在将该IT区块指令转译为该微指令的步骤前,对于该IT区块的每个指令,使用所抽取的该条件资讯确认一相对应状态值,其中该状态值包含该IT指令的低位8位元,该IT指令的低位5位元左移N-1位元,N指该IT区块指令在该IT区块内的位置。
12.如权利要求11所述的方法,其特征在于,该方法还包含:
检测该IT区块转译出的微指令中是否有导致一例外条件的一微指令,以因应条件执行该微指令的步骤;以及
将关联于该例外的一ARM架构储存程序状态暂存器的低位八位元,填入转译出导致该例外条件的该微指令的该指令的该相对应状态值,以因应该检测步骤。
13.如权利要求11所述的方法,其特征在于,对于该IT区块的每个指令:
该IT区块指令转译出的该微指令内的该相对应条件包含该相对应状态值的[7:4]位元。
14.如权利要求9所述的方法,其特征在于,该IT区块指令与该IT指令融合出的该微指令仅执行该IT区块指令指定的操作,而不为该IT指令执行任何操作。
15.如权利要求9所述的方法,其特征在于,还包含:
其中,条件执行由该IT区块的各个指令所转译产生的该微指令的步骤包含发布该些微指令用以依据非循序方式来执行。
16.如权利要求9所述的方法,其特征在于,在至少一事例中,由该IT指令抽取该条件资讯的步骤在一第一时钟周期内执行,对于一部分的该IT区块指令,使用所抽取的该条件资讯确认该IT区块指令的该相对应条件的步骤,在该第一时钟周期内执行,对于剩余的该IT区块指令,使用所抽取的该条件资讯确认该IT区块指令的该相对应条件,是在该微处理器接续该第一时钟周期的一个或多个时钟周期内执行。
17.一个微处理器,其特征在于,包含:
一指令转译单元,将一IF-Then指令与一邻近程序指令融合,以将该IT指令与一相关联IT区块转译出M个微指令,其中,该IT区块包含M个指令,其中,M为一大于零的整数;以及
多个执行单元,用以执行由该IT指令与该相关联IT区块转译出的该M个微指令。
18.如权利要求17所述的微处理器,其特征在于,该M个微指令所执行的操作大致相对应于该IT区块的该M个指令所指定的操作,其中,该M个微指令内不包含一对应于该IT指令的微指令。
19.如权利要求17所述的微处理器,其特征在于,该指令转译单元用以:
对于该IT区块的每个指令,使用由该IT指令所抽取的资讯确认一相对应状态值,其中该状态值包含该IT指令的低位8位元,该IT指令的低位5位元左移N-1位元,N指该IT区块指令在该IT区块内的位置。
20.如权利要求19所述的微处理器,其特征在于,该微处理器还用以:
检测该IT区块的转译出的该M个微指令的其中之一是否导致一例外条件;以及
将关联于该例外的一ARM架构储存程序状态暂存器的低位八位元,填入转译出该M个微指令中导致该例外条件的该微指令的该相对应状态值。
21.如权利要求19所述的微处理器,其特征在于,该指令转译单元还用以:
对于该IT区块的每个指令,将该IT区块指令转译出该M个微指令的至少其中之一,并且转译出的该微指令具有一条件系包含该相对应状态值的[7:4]位元。
22.一种利用一微处理器执行的方法,其特征在于,该方法包括:
利用该微处理器的一指令转译单元,将一IF-Then指令与一邻近程序指令融合,以将该IT指令与一相关联IT区块转译出M个微指令,其中,该IT区块包含M个指令,其中,M系一大于零的整数;以及
利用该微处理器的多个执行单元,执行由该IT指令与该相关联IT区块转译出的该M个微指令。
23.如权利要求22所述的方法,其特征在于,该M个微指令所执行的操作大致相对应于该IT区块的该M个指令所指定的操作,其中,该M个微指令内不包含一对应于该IT指令的微指令。
24.如权利要求22所述的方法,其特征在于,还包含:
对于该IT区块的每个指令,使用由该IT指令所抽取的资讯确认一相对应状态值,其中该状态值包含该IT指令的低位8位元,该IT指令的低位5位元左移N-1位元,N指该IT区块指令在该IT区块内的位置。
25.如权利要求24所述的方法,其特征在于,还包含:
检测该IT区块转译出的该M个微指令的其中之一是否导致一例外条件;以及
将关联于该例外的一ARM架构储存程序状态暂存器的低位八位元,填入转译出该M个微指令中导致该例外条件的该微指令的该相对应状态值。
26.如权利要求24所述的方法,其特征在于,还包含:对于该IT区块的每个指令,将该IT区块指令转译出该M个微指令的至少其中之一,并且转译出的该微指令具有一条件系包含该相对应状态值的[7:4]位元。
27.一种微处理器,其特征在于,包含:
一指令转译单元,用以:
将N个指令的指令序列转译为M个微指令的第一指令序列,其中,该N个指令的指令序列系一IF-Then指令与跟随该IT指令的一相关联的IT指令区块,其中各该IT区块指令为一非条件指令,该非条件指令暗示会透过IT指令所指定的条件变为条件指令,其中,N为一大于一的整数,M为一大于零的整数;以及
将N-1个指令的指令序列转译为M个微指令的第二指令序列,其中,该N-1个指令的指令序列对应于该IT区块指令,其中该N-1个指令的每一个系指定与其相对应的IT区块指令相同的操作,但明确指定该相对应的IT指令区块所暗示的该指定条件,其中,该第二指令序列与该第一指令序列相同;以及
多个执行单元,用以执行由该指令转译单元所产生的该些微指令。
28.如权利要求27所述的微处理器,其特征在于,该指令转译单元用以将该IT指令与一邻近指令融合。
29.一种利用一微处理器执行的方法,其特征在于,包含:
利用一指令转译单元,将N个指令的指令序列转译为M个微指令的第一指令序列,其中,该N个指令的指令序列系一IF-Then指令与跟随该IT指令的一相关联的IT指令区块,其中各该IT区块指令为一非条件指令,该非条件指令暗示会透过IT指令所指定的条件变为条件指令,其中,N为一大于一的整数,M为一大于零的整数;
利用该指令转译单元,将N-1个指令的指令序列转译为M个微指令的第二指令序列,其中,该N-1个指令的指令序列对应于该IT区块指令,其中该N-1个指令的每一个系指定与其相对应的IT区块指令相同的操作,但明确指定该相对应的IT指令区块所暗示的该指定条件,其中,该第二指令序列与该第一指令序列相同;以及
利用多个执行单元,用以执行由该指令转译单元所产生的该些微指令。
30.如权利要求29所述的方法,其特征在于,将该N个指令的指令序列转译为该M个微指令的第一指令序列的步骤包含将该IT指令与一邻近指令融合。
CN201410198641.2A 2013-05-21 2014-05-12 融合if‑then指令的微处理器 Active CN104182204B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361825699P 2013-05-21 2013-05-21
US61/825,699 2013-05-21
US14/066,520 US9792121B2 (en) 2013-05-21 2013-10-29 Microprocessor that fuses if-then instructions
US14/066,520 2013-10-29

Publications (2)

Publication Number Publication Date
CN104182204A true CN104182204A (zh) 2014-12-03
CN104182204B CN104182204B (zh) 2017-06-06

Family

ID=49882829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410198641.2A Active CN104182204B (zh) 2013-05-21 2014-05-12 融合if‑then指令的微处理器

Country Status (4)

Country Link
US (2) US9792121B2 (zh)
EP (1) EP2806354B1 (zh)
CN (1) CN104182204B (zh)
TW (1) TWI514272B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598545A (zh) * 2015-10-08 2017-04-26 上海兆芯集成电路有限公司 执行于处理器的架构程序与执行于处理器执行单元的非架构程序间关于共享资源的沟通机制

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324724B2 (en) * 2015-12-16 2019-06-18 Intel Corporation Hardware apparatuses and methods to fuse instructions
GB2548600B (en) 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
US10831496B2 (en) 2019-02-28 2020-11-10 International Business Machines Corporation Method to execute successive dependent instructions from an instruction stream in a processor
US11748104B2 (en) 2020-07-29 2023-09-05 International Business Machines Corporation Microprocessor that fuses load and compare instructions
US11249757B1 (en) 2020-08-14 2022-02-15 International Business Machines Corporation Handling and fusing load instructions in a processor
CN113254083B (zh) * 2021-06-28 2021-11-02 北京智芯微电子科技有限公司 指令处理方法、指令处理系统及处理器、芯片
US20230315454A1 (en) * 2022-03-30 2023-10-05 Advanced Micro Devices, Inc. Fusing no-op (nop) instructions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524222A (en) * 1992-03-27 1996-06-04 Cyrix Corporation Microsequencer allowing a sequence of conditional jumps without requiring the insertion of NOP or other instructions
CA2356805A1 (en) * 2001-09-07 2003-03-07 International Business Machines Corporation Converting short branches to predicated instructions
CN1414466A (zh) * 2002-05-09 2003-04-30 智慧第一公司 执行条件指令的装置及方法
CN101377733A (zh) * 2008-04-10 2009-03-04 威盛电子股份有限公司 最佳化微处理器执行x87浮点加法指令的装置及方法
US20100262813A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
EP0942357A3 (en) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
US6456891B1 (en) 1999-10-27 2002-09-24 Advanced Micro Devices, Inc. System and method for transparent handling of extended register states
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7185180B2 (en) 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
US7155598B2 (en) 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
JP3982353B2 (ja) * 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
GB2402510A (en) * 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system
US7209405B2 (en) * 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
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
KR101642556B1 (ko) * 2012-09-21 2016-07-25 인텔 코포레이션 이진 번역을 수행하기 위한 방법 및 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524222A (en) * 1992-03-27 1996-06-04 Cyrix Corporation Microsequencer allowing a sequence of conditional jumps without requiring the insertion of NOP or other instructions
CA2356805A1 (en) * 2001-09-07 2003-03-07 International Business Machines Corporation Converting short branches to predicated instructions
CN1414466A (zh) * 2002-05-09 2003-04-30 智慧第一公司 执行条件指令的装置及方法
CN101377733A (zh) * 2008-04-10 2009-03-04 威盛电子股份有限公司 最佳化微处理器执行x87浮点加法指令的装置及方法
US20100262813A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598545A (zh) * 2015-10-08 2017-04-26 上海兆芯集成电路有限公司 执行于处理器的架构程序与执行于处理器执行单元的非架构程序间关于共享资源的沟通机制
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体

Also Published As

Publication number Publication date
US20140351561A1 (en) 2014-11-27
CN104182204B (zh) 2017-06-06
US9792121B2 (en) 2017-10-17
US20180032341A1 (en) 2018-02-01
TWI514272B (zh) 2015-12-21
US10394562B2 (en) 2019-08-27
EP2806354A1 (en) 2014-11-26
EP2806354B1 (en) 2019-06-12
TW201445441A (zh) 2014-12-01

Similar Documents

Publication Publication Date Title
CN104182204A (zh) 融合if-then指令的微处理器
KR101754462B1 (ko) 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치
US8090931B2 (en) Microprocessor with fused store address/store data microinstruction
CN101377736B (zh) 乱序执行微处理器以及宏指令处理方法
US11379234B2 (en) Store-to-load forwarding
CN107810483B (zh) 验证处理器中的跳转目标的装置、存储设备和方法
TWI439930B (zh) 具選擇性啟動早期引退功能之失序執行微處理器
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
US20140136822A1 (en) Execution of instruction loops using an instruction buffer
CN101281460B (zh) 处理多个线程的方法和设备
CN104011705A (zh) 多形异构性多核架构
CN101901132B (zh) 微处理器以及相关储存方法
WO2014090091A1 (en) Tracking multiple conditions in a general purpose register and instruction therefor
CN111221575A (zh) 一种乱序高性能处理器的寄存器重命名方法及系统
CN101907984B (zh) 指令处理方法以及其所适用的超纯量管线微处理器
CN104536914B (zh) 基于寄存器访问标记的相关处理装置和方法
CN110692039A (zh) 在块提交之前的微处理器指令预分派
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
US9959122B2 (en) Single cycle instruction pipeline scheduling
CN101944012B (zh) 指令处理方法以及其所适用的超纯量管线微处理器
CN102023841B (zh) 微处理器以及相关指令执行方法
US20030182538A1 (en) Method and system for managing registers
CN111857830B (zh) 一种提前转发指令数据的通路设计方法、系统及存储介质
CN102193775B (zh) 微处理器融合搬运/算术逻辑运算/条件跳跃指令
Richardson et al. Precise exception handling for a self-timed processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant