CN111930428A - 一种条件分支指令的融合方法、装置及计算机存储介质 - Google Patents

一种条件分支指令的融合方法、装置及计算机存储介质 Download PDF

Info

Publication number
CN111930428A
CN111930428A CN202011034670.7A CN202011034670A CN111930428A CN 111930428 A CN111930428 A CN 111930428A CN 202011034670 A CN202011034670 A CN 202011034670A CN 111930428 A CN111930428 A CN 111930428A
Authority
CN
China
Prior art keywords
instruction
fusion
code block
execution
branch
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
CN202011034670.7A
Other languages
English (en)
Other versions
CN111930428B (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.)
Nanjing Sietium Semiconductor Co ltd
Original Assignee
Nanjing Xintong Semiconductor Technology Co ltd
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 Nanjing Xintong Semiconductor Technology Co ltd filed Critical Nanjing Xintong Semiconductor Technology Co ltd
Priority to CN202011034670.7A priority Critical patent/CN111930428B/zh
Publication of CN111930428A publication Critical patent/CN111930428A/zh
Application granted granted Critical
Publication of CN111930428B publication Critical patent/CN111930428B/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/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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明实施例公开了一种条件分支指令的融合方法、装置及计算机存储介质;该方法可以包括:在编译阶段,相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器;其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;在执行阶段,将从所述指令存储器中读取的融合指令进行译码,获得所述融合指令中所包含的代码块;根据经由执行所述条件判断语句所得到执行结果,将译码所得到的代码块并行调度至对应的执行单元;通过所述执行单元执行调度的代码块。

Description

一种条件分支指令的融合方法、装置及计算机存储介质
技术领域
本发明实施例涉及芯片技术领域,尤其涉及一种条件分支指令的融合方法、装置及计算机存储介质。
背景技术
单指令多线程(SIMT,Single-Instruction-Multiple-Thread)是目前图形处理单元(GPU,Graphics Processing Unit)或CPU实现并行执行的常规模式。在SIMT模式下,线程组或线程束(warp)则是GPU中的一个基本调度单位。在并行执行过程中,对于一段程序代码,当出现条件分支的情况下,对于分支指令,通常会根据条件判断的结果来决定程序运行方向;具体以条件分支指令来说,当处理器中的一个warp在处理条件分支指令的过程中,基于条件判断结果会得出两个分支代码,其中,该warp中所包括的部分线程(比如M个线程)会由于遵循“if”判断结果为真而被执行,从而处于活动状态;该warp中所包括的其他部分线程(比如K-M个线程,K表示一个warp所包含的所有线程数量)则会由于遵循“if”判断结果为假的“else”路径而被暂时禁用或屏蔽(等待中),从而处于空闲状态。此时,处于空闲状态的K-M个线程所对应的计算资源就会由于其所处的空闲状态而没有被使用,直至等待执行“else”路径时才会因为K-M个线程由空闲状态变更为活动状态而被使用。上述现象造成了计算资源的浪费。
发明内容
有鉴于此,本发明实施例期望提供一种条件分支指令的融合方法、装置及计算机存储介质;能够提高代码执行效率,通过降低计算资源的浪费以提高计算资源的使用率。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种条件分支指令的融合装置,所述装置包括:编译器、指令存储器、取指单元、译码单元、调度单元以及执行单元;其中,
所述编译器经配置为:相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于所述指令存储器;其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;
所述取指单元,经配置为从所述指令存储器中读取所述融合指令;
所述译码单元,经配置为将所述融合指令进行译码,获得所述融合指令中所包含的代码块;
所述调度单元,经配置为根据所述执行单元经由执行所述条件判断语句所得到执行结果,将所述译码单元译码所得到的代码块并行调度至对应的执行单元;
所述执行单元,经配置为执行由所述调度单元调度的代码块。
第二方面,本发明实施例提供了一种条件分支指令的融合方法,所述方法包括:
在编译阶段,相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器;其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;
在执行阶段,将从所述指令存储器中读取的融合指令进行译码,获得所述融合指令中所包含的代码块;
根据经由执行所述条件判断语句所得到执行结果,将译码所得到的代码块并行调度至对应的执行单元;
通过所述执行单元执行调度的代码块。
第三方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有条件分支指令的融合程序,所述条件分支指令的融合程序被至少一个处理器执行时实现第二方面所述的条件分支指令的融合方法的步骤。
本发明实施例提供了一种条件分支指令的融合方法、装置及计算机存储介质;通过将对应于不同判断结果的分支语句的代码块进行融合之后,经由译码单元通过译码同时获得对应于不同判断结果的代码块,并根据执行单元执行条件判断语句所得到的判断结果,将各代码块并行调度至获得对应判断结果的执行单元以执行,从而实现对融合指令中的代码块A与代码块B的并行执行。可以使得执行单元在执行条件分支语句序列的过程中,避免出现空闲状态,提高了计算资源的利用率,此外,由于执行单元并行执行了各分支语句对应的代码块,同样避免了时间上的浪费。
附图说明
图1为本发明实施例提供的一种计算系统的组成示意图。
图2为本发明实施例提GPU中所包含的一个处理器的架构示意图。
图3为本发明实施例提供的一种条件分支语句序列的示意图。
图4为本发明实施例提供的一种warp执行并行处理方案的示意图。
图5为本发明实施例提供的一种基于处理器架构的流水线结构示意图。
图6为本发明实施例提供的一种代码块并行执行的示意图。
图7为本发明实施例提供的另一种条件分支语句序列的示意图。
图8为本发明实施例提供的又一种条件分支语句序列的示意图。
图9为本发明实施例提供的一种补齐代码块的示意图。
图10为本发明实施例提供的包含嵌套分支的条件分支语句序列的示意图。
图11为本发明实施例提供的一种条件分支指令的融合方法流程示意图。
附图标记说明:
计算系统2;CPU 6;系统内存 10;GPU 12;显示处理器 14;
收发器模块 3;用户接口 4;显示器 8;软件应用程序 18;
图形API 20;GPU驱动程序 22;处理器 200;warp 204-1到204-J;
核心 206-1到206K;线程块 202;管线控制器 208;
本地存储器 212-1到212-J;存储器总线 216;
本地总线 218-1到218-J;共享存储器 220;
代码 I0、I1、I2、I3、I4、I5、I6、I7、I8、I9、I10、I11;
线程 T0至T7;处理周期 cycle-n至cycle-n+7;
取值单元 301;译码单元 302;调度单元 303;执行单元 304;
空指令 nop;条件判断语句 C、C0、C00、C1、C2、C3;
代码块 A、A00、A01、B、D、E。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本发明实施例技术方案的计算系统2,该计算系统2的实例包括但不限于:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器,等。在图1的实例中,该计算系统2可以包括:CPU 6、系统内存10和GPU 12。计算系统2还可包含显示处理器14、收发器模块3、用户接口4和显示器8。收发器模块3和显示处理器14两者可为与CPU 6和/或GPU 12相同的集成电路(IC)的部分,两者可在包含CPU 6和/或GPU 12的一或多个IC的外部,或可形成于在包含CPU 6和/或GPU 12的IC外部的IC中。
为清楚起见,计算系统2可包含图1中未图示的额外模块或单元。举例来说,计算系统2可在其为移动无线电话的实例中包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算系统2为媒体播放器的情况下包含扬声器。计算系统2还可包含摄像机。此外,计算系统2中所示的各种模块和单元可能不是在计算系统2的每个实例中都是必需的。举例来说,在计算系统2为桌上型计算机或经装备以与外部用户接口或显示器连接的其它装置的实例中,用户接口4和显示器8可在计算系统2外部。
用户接口4的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可为触摸屏,并且可作为显示器8的部分并入。收发器模块3可包含电路以允许计算系统2与另一装置或网络之间的无线或有线通信。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
CPU 6其经配置以处理供执行的计算机程序的指令。CPU 6可包括控制计算系统2的运算的通用或专用处理器。用户可将输入提供到计算系统2,以致使CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU 6可执行用于控制GPU 12的运算的GPU驱动程序22。用户可经由一或多个输入装置(未图示) (例如,键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算系统2的另一输入装置)将输入提供到计算系统2。
在一些情况下,可将GPU 12集成到计算系统2的母板中,从而形成集成显卡。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算系统2的母板中的端口中,或可以其它方式并入在经配置以与计算系统2互操作的外围装置内,该图形卡也可称为独立显卡。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,使得GPU 12可被称作多核处理器。
在一些实例中,GPU 12可将完全形成的图像存储在系统内存10中。显示处理器14可从系统内存10检索图像,且输出致使显示器8的像素照亮以显示所述图像的值。显示器8可为计算系统2的显示器,其显示由GPU 12产生的图像内容。显示器8可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
结合图1,图2示出了GPU 12所包含的多个处理器中的一个示例性的处理器200架构示意,如图2所示,CPU 6可执行至少一个软件应用程序18、图形API 20和GPU 驱动程序22,其中的每一者可为一或多个软件应用程序或服务。在一些实例中,图形API 20和GPU驱动程序22可实施为CPU 6的硬件单元。
软件应用程序18可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序18可为图形应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
软件应用程序18可经由图形API 20调用GPU驱动程序22,以向GPU 12发出一或多个指令,以用于将一或多个图形图元渲染到可显示的图形图像中。
基于软件应用程序18对于GPU驱动程序22的调动,GPU驱动程序22可利用其所包含的编译器221将软件应用程序18编译为GPU 12能够执行的指令代码。
在一些示例中,处理器200能够作为GPU 12实现高度并行计算的处理器集群阵列中的通用处理集群的一个,以执行GPU驱动程序22编译完成的指令代码来实现并行执行大量的线程,其中每个线程是程序的实例(instance)。在另一些示例中,该处理器200可以被实现为GPU 12中的流多处理器(SM,Streaming Multiprocessors)。在该处理器200中,可以包括被组织成warp的多个线程处理器或被称之为核心,每个核心同一个时刻对应一个线程的执行。在一些示例中,相应于处理器200被实现为SM,核心可以被实现为流处理器(SP,Streaming Processor)。该处理器200可以包含J个warp 204-1到204-J,每个warp具有K个核心206-1到206K。在一些示例中,warp 204-1到204-J可以进一步地被组织成一个或多个线程块(block)202。在一些示例中,每个warp可具有32个核心;在其他示例中,每个warp可具有4个核心、8个核心、16个核心、或者多如数万个核心;如图2所示,本发明实施例以设定每个warp具有8个核心(即K=8)为例进行技术方案阐述,可以理解地,上述设定仅用于技术方案说明,并非对技术方案的保护范围进行限制,本领域技术人员可以很容易地将基于上述设定所阐述的技术方案适用于其他情况,在此不作赘述。在某些可替代的示例中,该处理器200可将核心仅组织成warp,省略线程块block的组织级别。
进一步来说,处理器200还可以包括管线控制器208、共享存储器220、以及与warp204-1到204-J相关联的本地存储器212-1到212-J的阵列。管线控制器208通过数据总线114将任务分布到各个warp 204-1到204-J 。管线控制器208创建、管理、调度、执行并提供机制以将warp 204-1 到204-J同步。继续参见图2所示的处理器200,warp 内的核心相互并行地执行。warp 204-1到204-J通过存储器总线216与共享存储器220进行通信。warp 204-1到204-J通过本地总线218-1到218-J分别与本地存储器212-1到212-J进行通信。例如图2中所示,warp 204-J 以通过本地总线218-J进行通信来利用本地存储器212-J。处理器200 的某些实施例将共享存储器220的共享部分分配到每个线程块202,并允许由线程块202内的所有warp访问共享存储器220的共享部分。某些实施例包括仅使用本地存储器的warp。许多其他实施例包括平衡本地存储器和共享存储器220的使用的warp。
对于图2所示的处理器200,在实际执行并行处理的过程中,单个warp的宽度(也可被称为warp所包含的线程数或核心的数目)通常是固定的。以K=8为例,目前并行处理方案执行如图3所示的条件分支语句序列的示意如图4所示,在图4中,纵向以顺序的处理周期表征时间顺序,各相邻的时刻点之间均相差一个处理周期cycle。由图4中可以看出,I0至I7表示程序代码中的一段代码,具体来说,I0至I3对应着图3中的代码块A;I4至I7对应着图3中的代码块B。warp中所包括的8个线程分别标识为T0至T7,依次可以表示线程0至线程7。在执行图3所示的语句的过程中,代码块A和代码块B会按照顺序进行取指、译码,代码块A和代码块B中的指令在对应的线程中的执行情况由条件判断结果C决定。在上述的执行过程中,若当前warp中的线程执行的不是同一个分支,如图4所示,在cycle-n至cycle-n+3的第一时间段内,线程T0、T1、T3、T7执行代码块A,此时其他线程空闲;在cycle-n+4至cycle-n+7的第二时间段内,线程T2、T4、T5、T6执行代码块B,此时其他线程空闲。如此,在整个执行过程中,空闲的线程就会造成了计算资源的浪费。此外,如图4所示,warp完成整个执行过程需要8个时钟,但是对于warp中的单个线程而言,其在整个执行过程中仅需要执行了4个时钟,因此,目前对于并行处理方案,在面临分支语句代码的情况下,还造成了运行时间上的浪费。
参见图5,其示出了利用图2所示的处理器200架构所实现的一种流水线示意,该流水线属于一种通过级联形成的逻辑结构,可以包括:取指单元301、译码单元302、调度单元303和多个执行单元304;其中,取指单元301、译码单元302和调度单元303具体可以由管线控制器208以实现,每个warp均可对应一个取指单元301、译码单元302和调度单元303;而每个warp均可对应多个执行单元304,具体来说,每个执行单元304均由其所对应的warp204所包含的每个核心或线程来对应实现;图5以单个warp的宽度等于8为例,也就是每个warp对应8个执行单元。此外,流水线还包括指令存储器,用于存储由编译器221对软件应用程序18进行编译所获得的能够被GPU 12执行的指令。需要说明的是,在图5所示的流水线中,为了清楚阐释流水线的逻辑结构,关于处理器200中的本地存储器和共享存储器220没有明示在图中,但没有明示并不否认其在处理器200架构中的必需性。
通常情况下,对于图5所示流水线的执行过程,主要包括:编译器221顺序地对程序中语句序列进行编译得到指令,然后将指令存储于处理器200中的指令存储器中,取值单元301读取指令存储器中的指令,传输至译码单元302进行译码,随后,调度单元303将译码单元所得到的代码块交由执行单元304进行执行。基于上述通常情况下的执行过程,当执行图3所示的条件分支语句序列时,设定程序中的“if C”可以被称为条件分支语句序列中的条件判断语句,A以及B可以被称之为条件分支语句序列中的分支语句。执行单元304会由于编译器221的顺序编译,依次执行C、A、B;而在执行A和B之前执行单元304会根据执行C所获得的判断结果,执行对应于判断结果的A或者B。在整个执行过程中,类似于图4所示的情况,顺序执行A和B会出现空闲的执行单元304,从而造成计算资源的浪费。此外,顺序执行A和B使得完成分支语句的执行过程需要8个时钟,但是对于单个执行单元304而言,其在整个分支语句的执行过程中仅执行了4个时钟,同样造成了时间上的浪费。
基于上述阐述,本发明实施例期望提供一种条件分支指令的融合方案,能够在执行条件分支指令过程中,充分利用warp中的线程资源,降低并行执行过程中所出现的计算资源浪费和时间浪费现象,提高执行效率和计算资源使用率。基于此,结合图5所示的流水线架构示意图,在一些示例中,所述编译器221经配置为:相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器;其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;
所述取指单元301,经配置为从指令存储器中读取所述融合指令;
所述译码单元302,经配置为将所述融合指令进行译码,获得所述融合指令中所包含的代码块;
调度单元303,经配置为根据执行单元304经由执行所述条件判断语句所得到执行结果,将所述译码单元302译码所得到的代码块并行调度至对应的执行单元304;
所述执行单元304,经配置为执行由所述调度单元303调度的代码块。
需要说明的是,通过上述示例,通过将对应于不同判断结果的分支语句的代码块进行融合之后,将得到的融合指令传输至图5所示的流水线架构进行处理,在处理过程中,经由译码单元302通过译码同时获得对应于不同判断结果的代码块,并根据执行单元304执行条件判断语句所得到的判断结果,将各代码块并行调度至获得对应判断结果的执行单元304以执行,仍然以图4中所示的I0至I7为例,仍旧设定I0至I3对应着图3中的代码块A;I4至I7对应着图3中的代码块B,此时,参见图6,尽管代码块A与代码块B的内部仍旧顺序执行,并且融合指令与常规方案中顺序执行时所涉及的指令相比,增加了指令长度;但是可以实现对融合指令中的代码块A与代码块B的并行执行。可以使得执行单元304在执行条件分支语句序列的过程中,避免出现空闲状态,提高了计算资源的利用率,此外,由于执行单元304并行执行了各分支语句对应的代码块,同样避免了时间上的浪费。
需要说明的是,对于上述示例是为了能够避免顺序执行条件分支语句序列中的分支语句所造成的计算资源和时间资源的浪费现象,因此,上述示例所阐述的技术方案不适用于仅存在单一分支语句的情况,如图7所示的语句序列,尽管包括条件判断语句C,但仅针对判断结果存在单一的分支语句A;语句B并非是分支语句,而是在前述条件分支语句执行之后才能够执行的语句,所以对于图7所示的语句序列中,并不存在其他的分支语句代码块,因此,无法将图7中的A与B进行融合以适用上述示例。
对于上述示例,在一些可能的实现方式中,编译器221在将各代码块按照设定的指令融合策略进行融合的过程中,可以在各分支语句所对应的代码块前端设置标志位,用于指示该标志位后的代码块所对应的条件判断结果,并且该标志位能够使得后续调度单元303进行调度时,能够依照该标志位将各代码块调度至与判断结果对应的执行单元304;仍然以图3所示的条件分支语句序列为例,条件判断语句C的判断结果只包括真或假两个结果,那么对于代码块A以及代码块B,可以通过1Bit的标志位来进行判断结果的表征;相应地,当条件分支语句中除了条件判断的情况以外,当出现多种分支时,可以按照可能出现的分支数量通过多bit的标志位进行表征,本发明实施例对此不做赘述。
对于上述示例,在一些可能的实现方式中,当条件分支语句序列中的分支语句数目超过两个时,编译器221可以将各分支语句对应的代码块按照分支语句的顺序以及每组两个代码块的设置进行分组;将各分组内的代码块进行融合,获得各分组的融合指令,并存储于指令存储器。基于本实现方式,对于图5所示的流水线架构,可以按照分组顺序依次对各分组的融合指令进行读取、译码、调度以及执行操作,具体操作配置与前述内容相似,本发明实施例对此不做赘述。举例来说,如图8所示的语句序列,其中,C0、C1、C2、C3为顺序的判断语句,在执行过程中也会顺序执行。基于该执行顺序,编译器可以将分支语句A和分支语句B分为第一组,分支语句C和分支语句D分为第二组,随后分别对第一组和第二组内的代码块进行融合,也就是说,先将分支语句A和分支语句B对应的代码块进行融合生成第一融合指令,再将分支语句C和分支语句D对应的代码块进行融合生成第二融合指令;当图5所示的流水线执行过程中,首先针对第一融合指令进行取指、译码、调度以及执行操作,然后才针对第二融合指令进行取指、译码、调度以及执行操作。
通过上述示例可以看出,融合指令长度是常规方案中顺序指令长度的两倍,为了能够适应于融合指令的长度,译码单元302的数目可以设置为所述融合指令中所包括的代码块的数目。如此,以融合指令中包括两个代码块为例,在非条件分支代码块,取指单元301每次从指令存储器中读取两条顺序指令,每次按照顺序向译码单元302发送指令,两个译码单元302按照顺序分别译码指令并发送给调度单元303和执行单元304以执行,此时,由于针对的常规方案中的顺序指令,因此,可以将该情况下流水线的执行状态定义为标准状态。当遇到条件分支语句时,则可以按照本示例中所阐述的方案进行实现,在本实施例中也将此情况下流水线的执行状态定义为非标准状态,此时取指单元301将从指令存储器中读取的融合指令仅为一条指令,该融合指令也可被称之为宏指令;接着,两个译码单元302对宏指令进行译码并将译码后的代码块发送给调度单元303和执行单元304以并行执行。
对于上述示例,在一些可能的实现方式中,当融合指令内的代码块长度不一致时,调度单元303还应当将代码块进行补齐,也就是说,调度单元303针对较短的代码块调度执行N个空指令nop的执行单元304,以使得所述较短的代码块所对应的执行单元304数目与较长的代码块所对应的执行单元304一致;其中,N为所述较长的代码块与所述较短的代码块之间的长度差值。举例来说,如图9所述,I0至I3对应着代码块A;I4至I11对应着代码块B,两者长度不一致,需要针对两个代码块进行对齐;此时,调度单元303针对代码块A再调度4个执行nop指令的执行单元304,从而使得代码块A所对应的执行单元数目与代码块B对应的执行单元数目一致。
对于以上的示例阐述,均是针对没有嵌套分支的条件分支语句进行的指令融合过程,在一些可能的实现方式中,相应于所述条件分支语句序列中包括嵌套分支的情况,由于低层级嵌套的条件分支语句,不仅基于本层级条件分支语句中的条件判断语句,而且还依赖于上一层级的条件分支语句中的条件判断语句,所以,编译器221应当按照嵌套层级进行指令融合,不进行跨层级的指令融合。举例来说,如图10所示的条件分支语句序列,在执行过程中,C00的条件判断基于C00本身以及C0的条件语句判断的结果,所以编译器221应当将代码块A00与代码块A01进行指令融合;并且将代码块A与代码块B进行指令融合。在执行代码段过程中,计算单元将根据条件语句C0和C00的共同判断结果来决定是否执行A00与A01。可以理解地,如果出现更加深层次的嵌套分支,所执行的方式与上述描述相一致,本发明实施例对此不作赘述。
基于前述示例及其实现方式的阐述,参见图11,其示出了本发明实施例提供的一种条件分支指令的融合方法,该方法可以应用于前述技术方案中所阐述的装置、设备或系统中,该方法可以包括:
S1101:在编译阶段,相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器;
其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;
S1102:在执行阶段,将从所述指令存储器中读取的融合指令进行译码,获得所述融合指令中所包含的代码块;
S1103:根据经由执行所述条件判断语句所得到执行结果,将译码所得到的代码块并行调度至对应的执行单元;
S1104:通过所述执行单元执行调度的代码块。
对于图11所示的技术方案,在一些示例中,所述方法还包括:
在将各代码块按照设定的指令融合策略进行融合的过程中,在各分支语句所对应的代码块前端设置标志位,用于指示所述标志位后的代码块所对应的条件判断结果,并且所述标志位能够使得所述调度单元依照所述标志位将各代码块调度至与判断结果对应的所述执行单元。
对于图11所示的技术方案,在一些示例中,当所述条件分支语句序列中的分支语句数目超过两个时,所述将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器,包括:
将各分支语句对应的代码块按照所述分支语句的顺序以及每组两个代码块的设置进行分组;
将各分组内的代码块进行融合,获得各分组的融合指令,并存储于所述指令存储器。
对于图11所示的技术方案,在一些示例中,所述方法还包括:
当所述融合指令内的代码块长度不一致时,针对较短的代码块调度用于执行N个空指令nop的执行单元,以使得所述较短的代码块所对应的执行单元数目与较长的代码块所对应的执行单元一致;其中,N为所述较长的代码块与所述较短的代码块之间的长度差值。
需要说明的是,上述图11所示的技术方案及其示例均可以结合前述技术方案中的相应部分的阐述以实现,本发明实施例不多做赘述。
可以理解地,图11所示的技术方案及其示例既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,图4所示的技术方案及其示例本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM, ReadOnly Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有条件分支指令的融合程序,所述条件分支指令的融合程序被至少一个处理器执行时实现上述技术方案中所述的条件分支指令的融合方法的步骤。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种条件分支指令的融合装置,其特征在于,所述装置包括:编译器、指令存储器、取指单元、译码单元、调度单元以及执行单元;其中,
所述编译器经配置为:相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于所述指令存储器;其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;
所述取指单元,经配置为从所述指令存储器中读取所述融合指令;
所述译码单元,经配置为将所述融合指令进行译码,获得所述融合指令中所包含的代码块;
所述调度单元,经配置为根据所述执行单元经由执行所述条件判断语句所得到执行结果,将所述译码单元译码所得到的代码块并行调度至对应的执行单元;
所述执行单元,经配置为执行由所述调度单元调度的代码块。
2.根据权利要求1所述的装置,其特征在于,所述编译器,经配置为:
在将各代码块按照设定的指令融合策略进行融合的过程中,在各分支语句所对应的代码块前端设置标志位,用于指示所述标志位后的代码块所对应的条件判断结果,并且所述标志位能够使得所述调度单元依照所述标志位将各代码块调度至与判断结果对应的所述执行单元。
3.根据权利要求1所述的装置,其特征在于,所述编译器,经配置为:当所述条件分支语句序列中的分支语句数目超过两个时,将各分支语句对应的代码块按照所述分支语句的顺序以及每组两个代码块的设置进行分组;以及,将各分组内的代码块进行融合,获得各分组的融合指令,并存储于所述指令存储器。
4.根据权利要求1所述的装置,其特征在于,所述调度单元,还经配置为:
当所述融合指令内的代码块长度不一致时,针对较短的代码块调度用于执行N个空指令nop的执行单元,以使得所述较短的代码块所对应的执行单元数目与较长的代码块所对应的执行单元一致;其中,N为所述较长的代码块与所述较短的代码块之间的长度差值。
5.根据权利要求1所述的装置,其特征在于,所述编译器,经配置为:
相应于所述条件分支语句序列中包括嵌套分支,基于嵌套层级按照设定的顺序进行指令融合,以避免针对跨越层级的指令进行融合。
6.根据权利要求1至5任一项所述的装置,其特征在于,所述译码单元的数目与所述融合指令中所包含的代码块数目一致。
7.一种条件分支指令的融合方法,其特征在于,所述方法包括:
在编译阶段,相应于检测到程序中出现条件分支语句序列,将所述条件分支语句序列中的分支语句分别生成对应的代码块;将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器;其中,所述分支语句对应于所述条件分支语句序列中条件判断语句对应的判断结果;
在执行阶段,将从所述指令存储器中读取的融合指令进行译码,获得所述融合指令中所包含的代码块;
根据经由执行所述条件判断语句所得到执行结果,将译码所得到的代码块并行调度至对应的执行单元;
通过所述执行单元执行调度的代码块。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在将各代码块按照设定的指令融合策略进行融合的过程中,在各分支语句所对应的代码块前端设置标志位,用于指示所述标志位后的代码块所对应的条件判断结果,并且所述标志位能够使得所述调度单元依照所述标志位将各代码块调度至与判断结果对应的所述执行单元。
9.根据权利要求7所述的方法,其特征在于,当所述条件分支语句序列中的分支语句数目超过两个时,所述将各代码块按照设定的指令融合策略进行融合后,获得融合指令,并存储于指令存储器,包括:
将各分支语句对应的代码块按照所述分支语句的顺序以及每组两个代码块的设置进行分组;
将各分组内的代码块进行融合,获得各分组的融合指令,并存储于所述指令存储器。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述融合指令内的代码块长度不一致时,针对较短的代码块调度用于执行N个空指令nop的执行单元,以使得所述较短的代码块所对应的执行单元数目与较长的代码块所对应的执行单元一致;其中,N为所述较长的代码块与所述较短的代码块之间的长度差值。
11.根据权利要求7所述的方法,其特征在于,相应于所述条件分支语句序列中包括嵌套分支,素数将各代码块按照设定的指令融合策略进行融合后,获得融合指令,包括:基于嵌套层级按照设定的顺序进行指令融合,以避免针对跨越层级的指令进行融合。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有条件分支指令的融合程序,所述条件分支指令的融合程序被至少一个处理器执行时实现权利要求7至11任一项所述的条件分支指令的融合方法的步骤。
CN202011034670.7A 2020-09-27 2020-09-27 一种条件分支指令的融合方法、装置及计算机存储介质 Active CN111930428B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011034670.7A CN111930428B (zh) 2020-09-27 2020-09-27 一种条件分支指令的融合方法、装置及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011034670.7A CN111930428B (zh) 2020-09-27 2020-09-27 一种条件分支指令的融合方法、装置及计算机存储介质

Publications (2)

Publication Number Publication Date
CN111930428A true CN111930428A (zh) 2020-11-13
CN111930428B CN111930428B (zh) 2021-01-15

Family

ID=73334828

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011034670.7A Active CN111930428B (zh) 2020-09-27 2020-09-27 一种条件分支指令的融合方法、装置及计算机存储介质

Country Status (1)

Country Link
CN (1) CN111930428B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612476A (zh) * 2020-12-28 2021-04-06 吉林大学 基于gpu的slam控制方法、设备及存储介质
CN114116533A (zh) * 2021-11-29 2022-03-01 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN116302114A (zh) * 2023-02-24 2023-06-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法
CN116643698A (zh) * 2023-05-26 2023-08-25 摩尔线程智能科技(北京)有限责任公司 数据写入方法及装置、电子设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030236966A1 (en) * 2002-06-25 2003-12-25 Samra Nicholas G. Fusing load and alu operations
CN103197968A (zh) * 2013-03-18 2013-07-10 焦点科技股份有限公司 一种融合同步异步特点的线程池处理方法及系统
CN103970511A (zh) * 2013-01-28 2014-08-06 三星电子株式会社 能够支持多模式的处理器及其多模式支持方法
CN104272252A (zh) * 2012-05-16 2015-01-07 高通股份有限公司 在指令处理电路中融合具有相反条件的有条件写入指令,以及相关处理器系统、方法和计算机可读媒体
CN105389158B (zh) * 2014-08-28 2020-04-10 想象技术有限公司 数据处理系统、编译器、处理器的方法和机器可读介质
CN111033467A (zh) * 2017-08-18 2020-04-17 国际商业机器公司 同时进行分支地址的预测和寄存器内容的更新
CN107491288B (zh) * 2016-06-12 2020-05-08 合肥君正科技有限公司 一种基于单指令多数据流结构的数据处理方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030236966A1 (en) * 2002-06-25 2003-12-25 Samra Nicholas G. Fusing load and alu operations
CN104272252A (zh) * 2012-05-16 2015-01-07 高通股份有限公司 在指令处理电路中融合具有相反条件的有条件写入指令,以及相关处理器系统、方法和计算机可读媒体
CN103970511A (zh) * 2013-01-28 2014-08-06 三星电子株式会社 能够支持多模式的处理器及其多模式支持方法
CN103197968A (zh) * 2013-03-18 2013-07-10 焦点科技股份有限公司 一种融合同步异步特点的线程池处理方法及系统
CN105389158B (zh) * 2014-08-28 2020-04-10 想象技术有限公司 数据处理系统、编译器、处理器的方法和机器可读介质
CN107491288B (zh) * 2016-06-12 2020-05-08 合肥君正科技有限公司 一种基于单指令多数据流结构的数据处理方法及装置
CN111033467A (zh) * 2017-08-18 2020-04-17 国际商业机器公司 同时进行分支地址的预测和寄存器内容的更新

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡伟武: "龙芯指令系统融合技术", 《中国科学:信息科学》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612476A (zh) * 2020-12-28 2021-04-06 吉林大学 基于gpu的slam控制方法、设备及存储介质
CN114116533A (zh) * 2021-11-29 2022-03-01 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN114116533B (zh) * 2021-11-29 2023-03-10 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN116302114A (zh) * 2023-02-24 2023-06-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法
CN116302114B (zh) * 2023-02-24 2024-01-23 进迭时空(珠海)科技有限公司 一种针对支持指令宏融合cpu的编译器指令调度优化方法
CN116643698A (zh) * 2023-05-26 2023-08-25 摩尔线程智能科技(北京)有限责任公司 数据写入方法及装置、电子设备和存储介质
CN116643698B (zh) * 2023-05-26 2024-03-29 摩尔线程智能科技(北京)有限责任公司 数据写入方法及装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN111930428B (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
CN111930428B (zh) 一种条件分支指令的融合方法、装置及计算机存储介质
US9430807B2 (en) Execution model for heterogeneous computing
US9218223B2 (en) Barrier synchronization with dynamic width calculation
US9727341B2 (en) Control flow in a thread-based environment without branching
US9250956B2 (en) Application interface on multiple processors
US9250697B2 (en) Application programming interfaces for data parallel computing on multiple processors
US9436526B2 (en) Parallel runtime execution on multiple processors
US8438370B1 (en) Processing of loops with internal data dependencies using a parallel processor
CN104081449A (zh) 用于图形并行处理单元的缓冲器管理
CN110308982B (zh) 一种共享内存复用方法及装置
US10235220B2 (en) Multithreaded computing
JP2018517986A (ja) 階層的サブルーチン情報を含む中間コードからのオブジェクトコードの生成
TW201439914A (zh) 最佳化管理執行緒堆疊記憶體的系統、方法,及電腦程式產品
US8769244B2 (en) SIMD parallel computer system, SIMD parallel computing method, and control program
KR20160148673A (ko) Simd 프로세싱 시스템에 있어서의 직렬화된 실행을 위한 기법들
CN114972607A (zh) 加速图像显示的数据传输方法、装置及介质
EP2988268B1 (en) Rendergraph compilation and use thereof for low-latency execution
EP3591518B1 (en) Processor and instruction scheduling method
CN102016803B (zh) 操作系统快速运行命令
KR20230007377A (ko) Gpr 릴리스 메커니즘에 기초한 gpu 의 gpr 최적화
US20220004438A1 (en) Gpu program multi-versioning for hardware resource utilization
US20230185583A1 (en) Parallel runtime execution on multiple processors
CN116610367A (zh) 数据处理方法、数据处理装置和电子设备
JP2020071746A (ja) コンパイラ、コンパイル方法、及びコンピュータシステム
CN118035618A (zh) 数据处理器、数据处理方法、电子设备、存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 265503 No. 402, No. 7, No. 300, Changjiang Road, economic and Technological Development Zone, Yantai City, Shandong Province

Patentee after: Yantai Xintong Semiconductor Technology Co.,Ltd.

Address before: 211800 b403, No. 320, pubin Road, Jiangpu street, Pukou District, Nanjing City, Jiangsu Province

Patentee before: Nanjing Xintong Semiconductor Technology Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room T1 301, Taiwei Smart Chain Center, No. 8 Tangyan South Road, Shaanxi High tech Zone, Xi'an City, Shaanxi Province, 710065

Patentee after: Nanjing Sietium Semiconductor Co.,Ltd.

Address before: 265503 No. 402, No. 7, No. 300, Changjiang Road, economic and Technological Development Zone, Yantai City, Shandong Province

Patentee before: Yantai Xintong Semiconductor Technology Co.,Ltd.