CN102289363A - 控制数据流的方法以及计算机系统 - Google Patents

控制数据流的方法以及计算机系统 Download PDF

Info

Publication number
CN102289363A
CN102289363A CN2011102615492A CN201110261549A CN102289363A CN 102289363 A CN102289363 A CN 102289363A CN 2011102615492 A CN2011102615492 A CN 2011102615492A CN 201110261549 A CN201110261549 A CN 201110261549A CN 102289363 A CN102289363 A CN 102289363A
Authority
CN
China
Prior art keywords
branch
instruction
condition
stacks
control
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
CN2011102615492A
Other languages
English (en)
Other versions
CN102289363B (zh
Inventor
查德.胡珊
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 CN102289363A publication Critical patent/CN102289363A/zh
Application granted granted Critical
Publication of CN102289363B publication Critical patent/CN102289363B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Image Generation (AREA)

Abstract

本发明提供在图形处理器架构下的控制数据流的方法以及计算机系统。例如,在至少一实施例中,一计算机系统包括储存多个指令的存储器以及图形处理单元。图形处理单元包括分支控制堆迭器,而分支控制堆迭器包括一组条件寄存器。图形处理单元根据具有多个处理阶段的一管线来处理多个指令且将多个条件码数值储存在该分支控制堆迭器。图形处理单元还使用储存在分支控制堆迭器上方的条件寄存器的条件码数值来处理多个分支指令。

Description

控制数据流的方法以及计算机系统
技术领域
本发明涉及一种计算机系统,特别是涉及一种在图形处理器结构内数据流的执行控制。
背景技术
计算机系统通常使用处理器来执行程序所包含的指令。随着时间推移,处理器已受到改善,且能操作在高频率的环境下,因此能更快速地执行指令。然而,程序所包含的指令数量也随的增加,使得在高频率环境下的操作需要较高的操作电压以及功率。
发明内容
本发明实施例提供控制数据流的方法以及在图形处理器架构下使用其的计算机系统。举例来说,在至少一实施例中,一控制数据流的方法包括使用图形处理单元在管线中第一处理阶段上执行第一指令,以产生第一条件码数值。此第一指令包括第一堆迭器操作指示符。此控制数据流的方法还包括根据堆迭器操作指示符而在分支控制堆迭器执行堆迭器操作,且对分支指令进行解码。此控制数据流的方法也包括根据分支指令以及储存在分支控制堆迭器的至少一条件码数值来判断是否执行分支转移至目标指令。此外,此控制数据流的方法包括:根据判断是否执行分支转移至目标指令更新程序计数数值以包含该目标指令的指令地址。
如另一例子,在至少一实施例中,一控制数据流的方法包括使用图形处理单元在具有多个处理阶段的管线中执行多个指令。这些指令中的一个产生一条件码数值。此控制数据流的方法还包括将条件码数值存入分支控制堆迭器。在管线中执行多个指令其中一个的多个处理阶段中的一者期间,条件码数值产生。此外,此控制数据流的方法使用图形处理单元且根据读出自分支控制堆迭器的条件码数值的至少一部份来处理分支指令。
又如同另一例子,在至少一实施例中,一计算机系统包括储存多个指令的存储器以及图形处理单元。图形处理单元包括分支控制堆迭器,而分支控制堆迭器包括一组条件寄存器。图形处理单元根据具有多个处理阶段的一管线来处理多个指令且将多个条件码数值储存在该分支控制堆迭器。图形处理单元还使用储存在分支控制堆迭器上方的条件寄存器的条件码数值来处理多个分支指令。
本发明的其他系统、方法、特征、以及优点可通过下文所述并结合附图详细说明而使本领域的技术人员能了解。期望使额外的系统、方法、特征、以及优点能包含于本说明书、本发明的范围、以及受到本发明的权利要求的保护。
附图说明
图1表示根据本发明实施例的计算机系统;
图2表示在一例子中,图1的计算机系统中的分支控制堆迭器;
图3表示在一例子中,图1的计算机系统中的管线;
图4表示根据本发明实施例,对于图1的计算机系统的指令的控制数据流的方法流程图;
图5表示在一例子中,由图1的计算机系统中管线所处理的程序;
图6表示在一例子中,对于图5的时间下堆迭器的内容:
图7表示在一例子中,图4的控制数据流的方法中步骤方块435的流程图;
图8表示在另一例子中,图4的控制数据流的方法中步骤方块435的流程图;
图9表示在一例子中,由图1的计算机系统中管线所处理且包含一复合条件分支指令的程序;
图10表示在一例子中,对于图9的时间下堆迭器的内容:
图11表示在一例子中,由图1的计算机系统中管线所处理且包含一POPAND PUSH操作的程序;
图12表示在一例子中,对于图11的时间下堆迭器的内容:以及
图13表示根据本发明实施例,图1的计算机系统中的数据流控制器。
附图符号说明
图1:
100~计算机系统;
110~图形处理单元(GPU);
112~管线;
113~处理阶段;
114~指令快取存储器;
116~数据流控制器;
118~分支控制堆迭器;
119~管线寄存器;
140~总线;
120~存储器;
122~通用寄存器;
126~程序;
128~指令;
130~分支指令;
131~复合条件分支指令;
132~分支延迟指令;
图2:
118~分支控制堆迭器;
205~条件码数值;
215~指标;
图3:
112~管线;
113~处理阶段;
119~管线寄存器;
DE~解码处理阶段;
EX0、EX1、EX2~执行处理阶段;
IA~指令地址处理阶段;
IF~指令提取处理阶段;
WB~写回处理阶段;
图4:
400~方法;
410、415、420、425、430、435、440、445、450、455~步骤方块;
图5:
126~程序;
128~指令;
130~分支指令;
205~条件码数值;
510~堆迭器操作指示符;
图6:
118~分支控制堆迭器;
图7:
435、705、710~步骤方块;
图8:
435、805、810、815~步骤方块;
图9:
126~程序;
128~指令;
131~复合条件分支指令;
205~条件码数值;
510~堆迭器操作指示符;
图10:
118~分支控制堆迭器;
图11:
126~程序;
128~指令;
130~分支指令;
205~条件码数值;
510~堆迭器操作指示符;
图12:
118~分支控制堆迭器;
图13:
1302~多工器;
1304~程序计数寄存器;
1306~加法器;
1312~程序计数数值;
1314~增量;
116~数据流控制器;
119~管线寄存器;
BRANCH_T0~第一分支指示符;
BRANCH_T1~第二分支指示符;
DE~解码处理阶段;
EX0、EX1~执行处理阶段;
IA~指令地址处理阶段;
IF~指令提取处理阶段;
T0PC~第一目标指令地址;
T1PC~第二目标指令地址;
NPC~下一指令地址。
具体实施方式
本说明书大体是关于计算机系统的处理器所执行的指令数据流的控制。举例来说,此处理器根据多处理阶段管线来执行一程序的多个指令。此处理器依序执行这些指令,但是指令的顺序可由专用指令来改变,该专用指令称为分支指令。分支指令可藉由进行分支转移(跳跃)至目标指令来改变数据流,这不同于程序中依序的下一指令。处理器根据分支指令所指示的某些条件是否为真来判断是否进行分支转移至目标指令。处理器藉由对多个条件码数值执行分支指令所指示的布林运算来求出获得这些条件,其中,这些条件码数值储存于一分支控制堆迭器中。
这些条件码数值是在该程序的先前指令的执行期间所产生的,且由产生每一条件码数值的指令所指示,每一条件码数值被存入或弹出分支控制堆迭器的最上方。将一条件码数值存入分支控制堆迭器涉及到将先前储存在分支控制堆迭器的每一数值一定至较低位置且将此条件码数值存在分支控制堆迭器的最上方位置。类似地,使一条件码数值弹出分支控制堆迭器涉及到读取并移除储存在分支控制堆迭器最上方的条件码数值且将储存在分支控制堆迭器其他数值移动至较高位置。储存在分支控制堆迭器最上方的条件码数值藉由一指标而可存取,且当一分支指令被处理时,储存在分支控制堆迭器上方的一个或多个条件码数值弹出且用来判断是否进行分支转移至目标指令。
藉由一指标而存取条件码数值并藉由堆迭器操作来运用,可避免根据一寄存器地址来存取条件码数值。对于包括分支指令且必须计算许多条件的程序而言,由于使用分支控制堆迭器可以不需要经由通用寄存器以获得每一条件码数值且不需要进行通用寄存器所需的地址解码操作,因此可减少功率消耗、降低电压和/或频率需求。此实施例以及其他实施例将通过下文并伴随参阅图示来说明。
图1表示根据本发明一实施例的计算机系统100。在图1的实施例中,计算机系统100包括图形处理单元(graphics processing unit,GPU)110,其通过总线140而与存储器120联系。一般而言,图1的计算机系统100可包括多种有线和/或无线计算机系统中任一个,例如,桌上型计算机、携带型计算机、专属伺服器计算机、多处理器计算装置等等。
除了GPU 110以及存储器120之外,计算机系统100还包括一些输入/输出接口、网络接口、显示器、以及大量储存装置,其中,这些装置每一个通过总线140连接。GPU 110可包括任何客制或商业用处理器、与计算机系统100连接的多个处理器中的辅助处理器、半导体微处理器、一个或多个特殊应用集成电路(application specific integrated circuit,ASIC)、多个配置适当的数字逻辑门、以及其他已知的电子配置,而已知电子配置包括离散元件,其分别地且以各种组合来协调计算机系统100的整体操作。
存储器120可包括易失性存储器元件(例如随机存取存储器元件(RAM,例如DRAM、SRAM等等))以及非易失性存储器元件(例如ROM、硬驱动器、CDROM等等)中任一个或是两个的组合。存储器120一般包括本地操作系统、一个或多个本地应用、仿真系统、或者是关于各种操作系统、和/或仿真硬件平台、仿真操作系统等等中任一个的仿真应用。本领域的技术人员将能了解存储器120可以及一般将包括其他元件,而这些元件为了简洁说明而在此省略。前述的输入/输出接口提供任何数量的接口给数据的输入及输出。举例来说,计算机系统100包括一个人计算机,而这些元件与一使用者输入装置接合,此使用者输入装置例如为键盘或鼠标。
上述的元件中的一个包括软件,而这些元件可能包含于实体媒体(例如计算机可读媒体)内且由计算机系统100内的GPU100或其他处理器来执行。在本说明书的上下文中,计算机可读媒体可包括任何实体媒体,其可包含、储存或维持软件或编码以供指令执行系统使用或与指令执行系统连接。例如,计算机可读媒体可能储存一个或多个程序,以由前述GPU 110来执行。举例来说,计算机可读媒体可以是电子、磁性、光学、电磁、红外线、或半导体系统或装置,但非以此为限。尤其是,计算机可读媒体例如可能包括以下元件:具有一个或多个导线的电性连接、便携式计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、可抹写式只读存储器(EPROM、EEPROM、或快闪存储器)、以及便携式只读存储光盘(CDROM)。此外,计算机系统100可能包括网络接口,其包含可与输入及书连接的装置,例如调制器/解调器(如数据机)、无线(例如射频(RF))收发器、电话通信接口、桥接器、路由器、网络卡等等。
如图1所示,存储器120包括通用寄存器122以及一个或多个程序126。程序126包括多个指令128、多个分支指令130复合条件分支指令131、以及分支延迟指令132(例如不操作指令(no-operation(NOP)instruction)。此外,GPU 110包括管线(pipeline)112、指令快取存储器114、数据流控制器116、以及分支控制堆迭器(之后称为堆迭器)118。指令快取存储器114储存一个或多个指令128,用以暂时地使该一个或多个指令128可快速地存取至管线112。
管线操作(pipelining)使得GPU 110增加每一时间单位可执行的指令数量。管线操作需要将一指令128的处理划分成一系列独立的处理阶段113,并伴随着在每一处理阶段113的末端上在管线寄存器119中结果与状态的储存。所以,取代了每一次执行一指令128,多个指令可同时地但是于相异的处理阶段113中执行。
图2表示图1的计算机系统100中的堆迭器118。堆迭器118储存多个条件码数值205,每一条件码数值包括四个位以及一分支条件的状态。储存在堆迭器118上方的条件码数值205藉由指标215而可存取。此外,堆迭器118可由堆迭器操作(例如POP、PUSH、POP与PUSH操作)来控制。再者,堆迭器118依据后进先出(last in fast out,LIFO)来操作,使得第一个弹出堆迭器118的条件码数值205是最后存入堆迭器118的条件码数值205。
图3表示在图1的计算机系统100中,管线112的范例,但非以此为限。图3的管线112包括多个个处理阶段113:指令提取处理阶段IF、指令地址处理阶段IA、解码处理阶段DE、执行处理阶段EX0、执行处理阶段EX1、执行处理阶段EX2、以及写回处理阶段WB。在其他实施例中,管线112包括更多或较少的处理阶段113。在一些实施例中,利用锁定与暂停机制以实施管线112。在执行处理阶段EX0、EX1或EX2后,由指令128产生一条件码数值205。在一些实施例中,不同的指令128在管线112中不同的处理阶段113产生条件码数值。在另一些实施例中,例如图3所示的一个,管线寄存器119储存指令128的执行所产生的结果。
图4表示在图1的计算机系统100中,控制指令128的数据流的方法。此外,图5表示由图1的计算机系统100的管线112所执行的程序126,但非以此为限。图6表示在对于图5的时间下堆迭器118的内容的例子,但非以此为限。图5及图6的内容将藉由相关的图4来讨论说明,以进一步说明方法400。
在图4的步骤方块410中,藉由GPU 110在管线112中执行第一指令128,以产生第一条件码数值205,其值表示一分支条件的状态。例如,在图5中,在时间T-2,指令128中的指令I2于执行处理阶段EX0中并产生条件码数值205,其值等于“1”。在此例子中,指令I1已完成执行处理阶段EX0并进行执行处理阶段EX1,且指令I1所产生条件码数值205的值等于“0”并已储存于堆迭器118中。每一条件码数值205四个位(例如CNVZ)。然而,为了简洁说明此例子,条件码数值205是以数值来表示(例如“0”、“1”、“2”等等)。
回来参阅图4,在步骤方块415中,根据堆迭器操作指示符510而在堆迭器118执行一堆迭器操作。如图5所示,每一指令128包括一堆迭器操作指示符510,其具有两个位以指示是否将使用指令128所产生的条件码数值205而在堆迭器115执行堆迭器操作以及指示将执行哪一种堆迭器操作。下面表1说明了堆迭器操作指示符的位数值以及对应的堆迭器操作。
Figure BDA0000089219460000091
表1:堆迭器操作指示符以及对应的堆迭器操作。
因此,在步骤方块415中,藉由使用第一指令128所产生的第一条件码数值205并根据第一指令128的堆迭器操作指令符510而在堆迭器118执行堆迭器操作。如图6所示,在时间T-2,根据指令I2的堆迭器指令符510来将等于“1”的第一条件码数值205存入堆迭器118的最上方。在一些实施例中,于任一周期中,最多两个条件码数值205可由堆迭器118弹出,且一个条件码数值被存入堆迭器118。
在步骤方块420中,执行第二指令128以产生第二条件码数值。举例来说,在图5中,在时间T-1,指令I3于执行处理阶段EX0,产生条件码数值205,其值等于“2”。接着,在步骤方块425中,根据第二堆迭器操作指示符510,即根据指令I3的堆迭器操作指示符510,而在堆迭器执行一堆迭器操作。因此,在图6中,在时间T-1,根据指令I3的堆迭器指令符510来将等于“2”的第二条件码数值205存入堆迭器118的最上方,且等于“1”的第一条件码数值被存入至堆迭器118中由上面第二个位置。
在步骤方块430中,在解码处理阶段DE中对分支指令130进行解码。此外,储存在堆迭器118上方的两个条件码数值205被读出作为分支指令130的解码的一部份。在图5的例子中,指令I5(例如BEZ)在时间T-0于解码处理阶段DE中被解码。一般而言,如图5所示,在正设定的条件编码数值与分支指令之间至少具有一个周期。在一些实施例中,分支指令130包括布林运算(Boolean operation)。此外,在一些实施例中,分支指令130是一复合条件分支指令131,将于下文来详细说明。
在步骤方块435中,GPU 110判断是否根据解码的分支指令130以及储存在分支控制堆迭器118中至少一条件编码数值205来判断是否进行分支转移至目标指令。因此,在步骤方块430中对分支指令130进行解码期间所读出的条件编码数值205将用来判断是否进行分支转移至目标指令。如图5所示的例子,是否根据指令I5来进行分支转移(即BEZ(假使等于0时进行分支转移))的判断做成,是关于在指令I5的解码期间所读取的至少一条件码数值205(例如“1”或“2”)。
在步骤方块440中,当在步骤方块435的判断是进行分支转移至目标指令时,更新一程序计数数值以包含目标指令的指令地址。在步骤方跨450中,执行第三指令128,且当在步骤方块435的判断是进行分支转移至目标指令时,此第三指令就是该目标指令128。
在步骤方块445中,当在步骤方块435中的判断是不进行分支转移至目标指令时,增加程序计数数值。在步骤方块450中,执行第三指令128,且当在步骤方块435中的判断是不进行分支转移至目标指令时,第三指令是在程序126的序列中的下一个指令128。
在步骤方块455中,执行一分支延迟指令132或者执行独立于分支指令130的一指令128。在至少一部份发生方块步骤435中的判断和/或发生步骤方块445与440中程序计数数值改变的期间中,GPU 110也执行分支延迟指令(不操作(no-operation,NOP)指令)132,以使管线112持续处理指令128。在一些实施例中,以执行独立于分支指令130的一指令来取代分支延迟指令132,以增加指令128通过管线112的通量(throughput)。
由于在管线中多个指令是在不同的处理阶段113中执行,因此在分支获得结果之前,分支指令130可通过数个处理阶段(因此花费数个周期)。为了当一分支搁置待决时避免执行下一指令,分支延迟指令可能被包含作为在这些周期期间于管线112中执行的不操作指令132。
图7表示图4的方法中步骤方块435的一例子的流程图,以进一步详细说明步骤方块435。具体而言,在步骤方块705中,储存在堆迭器118最上方的第二条件码数值205弹出堆迭器118最上方。因此,在图5及图6的例子中,于时间T,该值等于“2”的条件码指令205从堆迭器118最上方弹出,留下具有内容[1,0,X,X]的堆迭器118。而该值等于“2”的条件码指令是在时间T-1由指令I3所产生。
在步骤方块710中,使用弹出的第二条件码数值205来求出分支指令130的布林运算的数值。参阅图5及图6的例子,所显示的分支指令130为BEZ指令,其指示假使条件码数值等于零时执行分支转移。由于弹出的第二条件码数值为“2”,其不等于零,因此,如同图4的步骤方块445所说明,程序计数数值将增加。
图8表示图4的方法中步骤方块435的另一例子的流程图,以进一步详细说明步骤方块435。具体而言,图8所说明的例子表示根据作为复合条件分支指令131的分支指令130来判断是否进行分支转移。复合条件分支指令131可根据二个或多个条件判断是否引起跳跃(jump)至目标指令128。复合条件分支指令131包括至少一布林运算来以计算出两条件码数值205,以判断一个或多个条件是否为真。
在步骤方块805中,储存在堆迭器118最上方的第二条件码数值205弹出堆迭器118的最上方。因此,第一条件码数值205移动至堆迭器118的最上方。接着,在步骤方块810中,第一条件码数值弹出堆迭器118的最上方。在步骤方块815中,分支指令130的布林运算使用弹出的第二条件码数值205以及弹出的第一条件码数值205。
在一些实施例中,复合条件分支指令131以形式“CBfg.op”来呈现,其中“fg”是指示复合条件分支指令131自储存在堆迭器118最上方的两条件码数值205所选择的位。每一条件码数值205包括四个位(例如,CNVZ),且在一些实施例中,只有N与Z位是被复合条件分支指令131选择。
下文的表单2说明复合条件分支指令131的变化以及字条件码数值205所选择的对应位。在表2中,“R”是对应在堆迭器118最上方的条件码数值205,且“S”是对应在堆迭器118中由上方数下来第二个的条件编码数值205。需注意,在图5及图6的例子中,”R”对应第二条件码数值205,而”S”对应第一条件码数值。
  复合条件分支指令   选自条件码数值的位
  CBNN   选择位N给R且位N给S
  CBNZ   选择位N给R且位Z给S
  CBZN   选择位Z给R且位N给S
  CBZZ   选择位Z给R且位Z给S
表2:关于复合条件分支指令的位选择
布林运算也由以形式“CBfg.op”呈现的复合条件分支指令来指示。下面表3列出这些运算,其叙述布林运算与对应的位编码的例子。在表3中,数值“F”是选择自在堆迭器118中第二条件码数值的运算元(位),而数值“G”是选择自自在堆迭器118中第一条件码数值的运算元。
  较低编码   运算   F   0   0   1   1
  G   0   1   0   1
  0000   AND   F&G   0   0   0   1
  0001   FANDNG   F&~G   0   0   1   0
  0010   NFANDG   ~F&G   0   1   0   0
  0011   NOE   NOR(F,G)   1   0   0   0
  0100   OR   F|G   0   1   1   1
  0101   FORNG   F|~G   1   0   1   1
  0110   NFORG   ~F|G   1   1   0   1
  0111   NAND   NAND(F,G)   1   1   1   0
  1000   XOR   XOR()F,G   0   1   1   0
  1001   XNOR   XNOR(F,G)   1   0   0   1
表3:布林运算以及对应的位编码
图9表示根据图4的方法400由管线112所执行的程序126。程序126包括一复和条件分支指令131。图10表示对应图9而于不同时间下堆迭器118的内容。图9所说明的例子包括一复和条件分支指令131,那就是指令I5(CBFG.AND)。在此例子中,在指令I5的逻辑运算为:
(if OUTPUT(BARD)==1 && val<CONST)then operation
回头来看上述的方法400,与步骤方块410一致,执行第一指令128(指令I1),这产生等于“0”的条件码数值205,如图9的例子所示,但非以此为限。不同于前述在第一执行处理阶段EX0中产生一条件码数值205的其他指令128,在此例子中,指令I1(BARD.PU)在时间T-1上于执行处理阶段EX2中产生等于“0”的第一条件码数值205。如图10所示,第一条件码数值205于时间T-1上根据图4的步骤方块415而被存入堆迭器115(由指令I1所包含的堆迭器操作指示符510所指示)。
此外,如图4的步骤方块420所述,执行一第二指令128(指令I2),这产生了等于“1”的第二条件码数值205。然而,在时间T-2上于执行处理阶段EX0物中,指令I2(例如SUB.PU)产生一条件码数值205。换句话说,在此例子中,指令I2在程序126中出现于指令I1之后,但是指令I2产生等于“1”的条件码指令205在指令I1产生等于“0”的条件码指令205之前。因此,根据图4的步骤方块425,指令I2使等于“1”的条件码指令205于时间T-2上被存入堆迭器118;而根据图4的步骤方块415,指令I1使等于“0”的条件码指令205于时间T-1上被存入堆迭器118。
在执行指令I2之后,执行指令I3(例如SUB)以及(例如ADD)。由于指令I3级I4没有包含堆迭器操作指示符510,因此预设的堆迭器操作是不执行任何操作(DN)。因此,当执行指令I3及I4时,没有条件码数值205被存入推跌器115。
根据方法400的步骤方块430,于时间T在解码处理阶段DE上对复合条件分支指令131(例如CBZN.AND)进行解码。与图8的步骤方块850与810一致,在堆迭器118中由上方数下来第一个与第二个的条件编码数值205弹出堆迭器115,如图10所示。此外,如图8的步骤方块810所述,弹出的条件码数值205被使用来判断使否进行分支转移至目标指令。因此,在图10中,于时间T,堆迭器118显示出“0”与“1”已弹出堆迭器118。
将堆迭器操作POP与PUSH的讨论与上述图5、6、9、10的讨论合并,堆迭器118的堆迭器操作POP AND PUSH将根据图11及图12来说明。图11表示由图1的计算机系统110的管线112所处理且包含POP AND PUSH操作的程序126,但不以此为限。图12表示在对于图5的时间下堆迭器118的内容的例子,但非以此为限。
在图11中,指令I3(例如SUB.PP)包括一POP AND PUSH操作。如图12所示,等于“0”与“1”的条件码数值205已根据指令I1与I2而被存入堆迭器118。当执行指令I3时,产生等于“2”的条件码数值205,且在时间T-1,依据堆迭器操作指示符(例如PP),等于“1”的条件码数值弹出堆迭器118,而所产生的等于“2”的条件码数值205被存入堆迭器118。在时间T,分支指令130(例如指令I5)根据图4的步骤430而被解码。由于指令I5并非一复合条件分支指令131,因此,关于在步骤方块435中是否执行分支转移的判断是使用位于堆迭器118最上方等于“2”的条件码数值来做成,其中,位于堆迭器118最上方等于“2”的条件码数值根据图7的步骤方块705来弹出。此外,指令I4(例如ADD.PU)也于时间T上产生等于“3”的条件码数值,且等于“3”的条件码数值根据堆迭器操作指示符510而被存入堆迭器118。
上述的实施例是说明分支指令130的条件是在分支指令130的解码处理阶段DE中求得。然而,在一些实施例中,分支指令130的条件是在当分支指令130处于执行处理阶段EX0、EX1、EX2时所求得。
图13表示图1的计算机系统100的数据流控制器116,但非以此为限。数据流控制器116判断在一特定处理阶段113后是否应该发生分支。图13的实施例说明一数据流控制器116,其根据一第一分的指示符BRANCH_T0与一第二分支指示符BRANCH_T1来判断是否在一解码处理机断DE或在一执行处理阶段EX0之后执行分支转移。数据流控制器116接收第一分的指示符BRANCH_T0与第二分支指示符BRANCH_T1,也接收来自管线寄存器119的对应第一目标指令128的第一目标指令地址T0PC以及对应第二目标指令128的第二目标指令地址T1PC。此外,数据流控制器116也接收增量1314以及当前指令128、130的程序计数数值1312。
数据流控制器116将当前指令128、130的程序计数数值1312储存在程序计数寄存器1304,且当前指令128、130的程序计数数值1312由程序计数寄存器1304传送至加法器1306。加法器1306将增量1314(例如4)加入程序计数数值1312,以计算在程序126中下一指令128的下一指令地址NPC。
多工器1302接收第一目标指令地址T0PC、第二目标指令地址T1PC、以及下一指令地址NPC,且根据第一分支指示符BRANCH_T0与第二分支指示符BRANCH_T1而在第一目标指令地址T0PC、第二目标指令地址T1PC、以及下一指令地址NPC之间作选择。在一非限制的例子中,假使在解码处理阶段DE之后将执行一分支,BRANCH_T0会具有等于“1”的逻辑数值而BRANCH_T1会具有等于“0”的逻辑数值。程序126被写入,使得BRANCH_T0与BRANCH_T1不会都具有等于“1”的逻辑数值,这是因为此两分支不会都被执行。
然而,当将利用GPU 110内一堆迭器118而将包含分支指令130的一程序126写入时,本领域的技术人员可能会考虑到其他编程问题。例如,程序126将以避免堆迭器118发生下溢(underflowing)或溢出(overflowing)的方式写入。在溢出的情况下,储存在堆迭器118下方的条件码数值205将会遗失;而在下溢的情况下,取自堆迭器118的条件码数值205将会不受定义。简单来说,当写入每一指令128、130、132时,应考虑到堆迭器118的当前容量。
如另一例子,程序126将以另一方式写入,在此方式下,避免二个或多个指令128在相同周期期间产生条件码数值,而这些条件码数值也将在相同周期内被存入堆迭器118。此问题可藉由将在相同周期期间产生的一个或多个条件码数值205储存在一专用寄存器来应付。
在一些实施例中,控制数据流指令可由以下虚拟码来表示:
Figure BDA0000089219460000151
Figure BDA0000089219460000161
本领域的技术人员能了解,在流程图中的任何方法叙述或步骤方块应可理解来表示模块、数据区段、或部分编码,其包括一个或多个可执行指令以实施在处理程序中的特定逻辑功能运算或步骤,而交替的实施被包含在本说明书的较佳实施例的范围内,其中,根据所牵涉的功能,可脱离上文显示或讨论的顺序来执行功能,包括实质上同时发称或相反顺序。
本发明虽以较佳实施例揭示如上,然其并非用以限定本发明的范围,本领域的技术人员,在不脱离本发明的精神和范围的前提下,可做些许的更动与润饰,因此本发明的保护范围是以本发明的权利要求为准。

Claims (13)

1.一种控制数据流的方法,包括:
使用一图形处理单元在一管线中一第一处理阶段上执行一第一指令,以产生一第一条件码数值,该第一指令包括一第一堆迭器操作指示符;
根据该堆迭器操作指示符而在一分支控制堆迭器执行一堆迭器操作;
对一分支指令进行解码;
根据该分支指令以及储存在该分支控制堆迭器的至少一条件码数值来判断是否执行分支转移至一目标指令;以及
若该判断是否执行分支转移至该目标指令的结果为真为是,更新一程序计数数值以包含该目标指令的指令地址。
2.如权利要求1所述的控制数据流的方法,还包括:
执行一第二指令以产生一第二条件码数值,该第二指令包括一第二堆迭器操作指示符;以及
根据该第二堆迭器操作指示符而在该分支控制堆迭器执行另一堆迭器操作。
3.如权利要求1所述的控制数据流的方法,还包括:
若该判断是否执行分支转移至该目标指令的结果为否,则增加该程序计数数值。
4.如权利要求1所述的控制数据流的方法,还包括:
弹出储存在该分支控制堆迭器上方的该第二条件码数值;
弹出储存在该分支控制堆迭器上方的该第一条件码数值,其中,该第一条件码数值是在该第二条件码数值之后弹出;以及
使用该第二条件码数值以及该第一条件码数值来求出该分支指令的布林运算的数值。
5.如权利要求1所述的控制数据流的方法,还包括:
当该图形处理单元以一增量来增加该程序计数数值时,执行一分支延迟指令或一独立指令。
6.如权利要求1所述的控制数据流的方法,其中,该第二条件码数值是在该第一条件码数值产生之前所产生的,且该控制数据流的方法还包括:
将该第二条件码数值储存在一寄存器;
其中,该第二条件码数值被存入该分支控制堆迭器的最上方位置,而该第一条件码数值移动至该分支控制堆迭器中由上方数下来的第二个位置。
7.如权利要求6所述的控制数据流的方法,其中,该第一条件码数值是在该管线的一处理阶段中产生,而该阶段不同于该第二条件码数值所产生的处理阶段。
8.如权利要求1所述的控制数据流的方法,其中,该堆迭器操作指令符指示出选自一堆迭器操作群组,该堆迭器操作群组包括:弹出操作、存入操作、以及弹出并存入操作。
9.如权利要求1所述的控制数据流的方法,还包括:
计算该目标指令的一增量;以及
其中,更新该程序计数数值以包括该目标指令的指令地址的步骤还包括将该增量加入该程序计数数值。
10.一种计算机系统,包括:
一存储器,储存多个指令;以及
一图形处理单元包括一分支控制堆迭器,该分支控制堆迭器包括一组条件寄存器;
其中,该图形处理单元根据具有多个处理阶段的一管线来处理这些指令且将多个条件码数值储存在该分支控制堆迭器;以及
其中,该图形处理单元还使用储存在该分支控制堆迭器上方的该条件寄存器的该条件码数值来处理多个分支指令。
11.如权利要求10所述的计算机系统,其中,储存在分支控制堆迭器上方的该条件寄存器的该条件码数值藉由一指标而可存取。
12.如权利要求10所述的计算机系统,其中,该存储器还包括在该管线的这些处理阶段的每一个之后的一管线寄存器,且该计算机系统还包括:
一数据流控制器,用以在关于在一解码处理阶段之后对一目标指令进行分支转移的一目标指令地址、关于在一执行处理阶段之后对一目标指令执行分支转移的一目标指令地址、以及一程序计数数值增量之间作选择。
13.如权利要求10所述的控制数据流的方法,其中,该数据流控制器的选择是依据储存在一第一管线寄存器的一第一分支指示符以及储存在一第二管线寄存器的一第二分支指示符来执行。
CN201110261549.2A 2010-10-14 2011-09-06 控制数据流的方法以及计算机系统 Active CN102289363B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/904,199 US8595473B2 (en) 2010-10-14 2010-10-14 Method and apparatus for performing control of flow in a graphics processor architecture
US12/904,199 2010-10-14

Publications (2)

Publication Number Publication Date
CN102289363A true CN102289363A (zh) 2011-12-21
CN102289363B CN102289363B (zh) 2014-05-21

Family

ID=45335822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110261549.2A Active CN102289363B (zh) 2010-10-14 2011-09-06 控制数据流的方法以及计算机系统

Country Status (3)

Country Link
US (1) US8595473B2 (zh)
CN (1) CN102289363B (zh)
TW (1) TWI451332B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013081596A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Efficient implementation of rsa using gpu/cpu architecture
US10691455B2 (en) 2017-05-23 2020-06-23 Samsung Electronics Co., Ltd Power saving branch modes in hardware
US11360774B2 (en) * 2020-10-23 2022-06-14 Centaur Technology, Inc. Dual branch format

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542989B2 (en) * 1999-06-15 2003-04-01 Koninklijke Philips Electronics N.V. Single instruction having op code and stack control field
US6574728B1 (en) * 1999-08-10 2003-06-03 Cirrus Logic, Inc. Condition code stack architecture systems and methods
CN101221653A (zh) * 2005-12-21 2008-07-16 威盛电子股份有限公司 用于图形处理单元的性能监测方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US7085917B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Multi-pipe dispatch and execution of complex instructions in a superscalar processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542989B2 (en) * 1999-06-15 2003-04-01 Koninklijke Philips Electronics N.V. Single instruction having op code and stack control field
US6574728B1 (en) * 1999-08-10 2003-06-03 Cirrus Logic, Inc. Condition code stack architecture systems and methods
CN101221653A (zh) * 2005-12-21 2008-07-16 威盛电子股份有限公司 用于图形处理单元的性能监测方法和系统

Also Published As

Publication number Publication date
TW201216153A (en) 2012-04-16
US20120096242A1 (en) 2012-04-19
US8595473B2 (en) 2013-11-26
TWI451332B (zh) 2014-09-01
CN102289363B (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
CN101373427B (zh) 程序执行控制装置
CN103513964B (zh) 循环缓冲器打包
US9639371B2 (en) Solution to divergent branches in a SIMD core using hardware pointers
US5450556A (en) VLIW processor which uses path information generated by a branch control unit to inhibit operations which are not on a correct path
US7594102B2 (en) Method and apparatus for vector execution on a scalar machine
US11977600B2 (en) Machine learning architecture support for block sparsity
CN102298514A (zh) 用于有效动态二进制变换的寄存器映射技术
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
US9182992B2 (en) Method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers
CN101884025B (zh) 用于使过程返回序列加速的方法和系统
CN102262611B (zh) 一种16位的risc cpu系统结构
CN100451951C (zh) Risc cpu中的5+3级流水线设计方法
CN104346132A (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
CN102289363B (zh) 控制数据流的方法以及计算机系统
JPH08221273A (ja) 命令レベルの並列処理制御方法およびプロセッサ
US8631173B2 (en) Semiconductor device
US7353343B2 (en) Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory
CN113270126A (zh) 流访问存储器设备、系统和方法
US8700887B2 (en) Register, processor, and method of controlling a processor using data type information
WO2020246598A1 (ja) 演算装置、演算方法、および演算プログラム
Wu et al. Instruction buffering for nested loops in low-power design
CN101615114A (zh) 完成两次乘法两次加法两次位移的微处理器实现方法
CN103262029B (zh) 可编程控制器
US11275712B2 (en) SIMD controller and SIMD predication scheme

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