CN111522586B - 信息处理装置、非暂态计算机可读介质和信息处理方法 - Google Patents
信息处理装置、非暂态计算机可读介质和信息处理方法 Download PDFInfo
- Publication number
- CN111522586B CN111522586B CN202010078653.7A CN202010078653A CN111522586B CN 111522586 B CN111522586 B CN 111522586B CN 202010078653 A CN202010078653 A CN 202010078653A CN 111522586 B CN111522586 B CN 111522586B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- wait
- candidates
- instruction sequence
- 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
- 230000010365 information processing Effects 0.000 title claims abstract description 45
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000012217 deletion Methods 0.000 claims abstract description 23
- 230000037430 deletion Effects 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 30
- 230000000052 comparative effect Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4451—Avoiding pipeline stalls
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/312—List processing, e.g. LISP programming language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/66—Updates of program code stored in read-only memory [ROM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/328—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
Abstract
涉及信息处理装置、非暂态计算机可读介质和信息处理方法。信息处理装置包括:获取单元,获取包括多个指令的指令序列;生成单元,通过用等待所有先前指令完成的等待指令替换包括在指令序列中的多个无操作指令的至少一部分来生成能够获得与指令序列的执行结果相同的执行结果的新指令序列的多个候选;删除单元,在从候选中的新指令序列中删除无操作指令和等待指令中的任何一个的情况下执行结果没有改变时,从新指令序列中的每一个中删除无操作指令和等待指令中的任何一个;以及选择单元,从经受了删除的多个候选中选择一个候选,该一个候选具有等于或小于特定数目的指令数目并且在多个候选当中包括最小数目的执行周期。
Description
技术领域
本发明涉及信息处理装置、非暂态计算机可读介质和信息处理方法。
背景技术
存在作为用于增加处理器中的指令的吞吐量的系统的流水线系统。在流水线系统中,指令的执行级被划分为各个级,例如指令取出、指令解码、指令执行、存储器引用以及写回寄存器。然后,多个指令被顺序地输入至各个级,使得在处理器中并行地执行多个指令,并且减少了程序的执行时间。
在流水线系统中,可能会出现引起不能获得正确执行结果的原因的各种冒险。冒险之一是数据冒险。数据冒险是指即使先前指令尚未将结果写入寄存器但使用先前指令的结果的后续指令仍会读取寄存器的冒险。
避免数据冒险的一种方法称为转发(forwarding)。转发是一种用于在先前指令将结果写入寄存器之前将先前指令的结果提供给后续指令的技术。尽管在这种技术中消除了数据冒险,但是需要在处理器中提供布线以执行转发,这又使处理器的硬件结构复杂化。
还存在一种通过在不执行转发的情况下使流水线停顿(stalling)来避免数据冒险的方法。停顿是一种在先前指令与后续指令之间插入nop(无操作)指令的技术,使得直到先前指令将结果写入寄存器后,后续指令才被输入至流水线中。注意,与本公开内容有关的技术也在日本公开特许公报第11-073327号和第2001-350632号中公开。
发明内容
然而,在通过停顿来避免数据冒险的方法中,存在改善程序的执行时间的空间。
本公开内容的目的是减少程序的执行时间。
根据本公开内容的一方面,提供一种信息处理装置,包括:获取单元,其获取包括多个指令的指令序列;生成单元,其通过用等待所有先前指令完成的等待指令(waitinstruction)替换包括在指令序列中的多个无操作(nop instruction)指令的至少一部分来生成能够获得与所述指令序列的执行结果相同的执行结果的新指令序列的多个候选;删除单元,其在即使从候选中的新指令序列中删除了无操作指令和等待指令中的任何一个的情况下执行结果没有改变时,从新指令序列中的每一个中删除无操作指令和等待指令中的任何一个;以及选择单元,其从经受了删除的多个候选中选择一个候选,该一个候选具有等于或小于特定数目的指令数目,并且在所述多个候选当中具有最小数目的执行周期。
效果
根据本公开内容,可以减少程序的执行时间。
附图说明
图1A和图1B是示意性示出指令序列的执行周期的数目的图;
图2是示出图1A和图1B中的指令序列中的每一个指令序列的指令的数目和执行周期的数目的表;
图3是示出根据本实施方式的目标处理器的硬件结构的图;
图4是示出根据本实施方式的信息处理装置的硬件结构的图;
图5是示出根据本实施方式的信息处理装置的功能配置的图;
图6是示出通过根据本实施方式的获取单元获取的指令序列的示例的图;
图7A至图7C是示出其中根据本实施方式的生成单元生成指令序列的候选的生成方法的图;
图8A至图8C是示出其中根据本实施方式的删除单元从候选的指令序列中删除nop(无操作)指令和wait(等待)指令的方法的图;
图9A至图9C是示意性示出根据本实施方式的候选中的指令序列的执行周期的数目的图;
图10是示出针对本实施方式中的每个候选获得的执行周期的数目和指令的数目的图;
图11是示出根据本实施方式的信息处理方法的流程图(部分1);
图12是示出根据本实施方式的信息处理方法的流程图(部分2);
图13A是示出根据本实施方式的指令序列的示例的图;
图13B是示出指令序列中包括的各个指令的依赖性的图;
图14A是示出了其中通过将本实施方式应用于图13A的指令序列来减少指令的数目的指令序列的图;
图14B是示出根据第一比较例的指令序列的图;
图14C是示出根据第二比较例的指令序列的图;以及
图15是示出根据本实施方式、第一比较例和第二比较例的指令序列中的每一个中包括的指令的数目以及当指令序列的每一个被执行一次时的执行周期的数目的图。
具体实施方式
在描述本实施方式之前,将描述发明人研究的内容。
为了在不使用致使硬件结构复杂化的转发的情况下避免数据冒险,可以使流水线停顿。停顿(stall)是一种用于临时停止流水线的技术,并且可以通过在先前指令与后续指令之间插入无操作指令(下文称为“nop指令”)来实现。nop指令是一种不改变流水线寄存器、寄存器文件、主存储器等的内容的指令。在nop指令所存在于的级中,上面描述的寄存器和主存储器中的每一个的内容不会改变,因此可以执行使流水线停止的停顿。
然而,nop指令在nop指令发出后的一个时钟周期内完成。因此,要求nop指令的数目与待停顿的时钟周期的数目一样多,因此整个程序中的指令的数目增加。
特别地,一些指令集包括针对后续指令的数目提供上限数目的指令。在这种指令集中,后续指令的数目通过nop指令可能会超过上限数目。具有上限数目的这样的指令的示例包括DLU(深度学习单元)架构中的rep(重复)指令以及X86体系结构中的loop(循环)指令和loopcc指令。
在这些指令中,rep指令是指示后续指令的重复的指令,并以“rep n,m”的格式描述。第一参数“n”是表示要重复的指令的数目的整数值。第二参数“m”是表示重复次数的整数值。在DLU中,第一参数“n”的上限值是12。因此,rep指令不能重复执行超过12条指令的后续指令。
为了减少指令序列中的nop指令的数目,可以用wait指令来替换nop指令。wait指令是等待直到完成所有先前指令的指令,并且可以如nop指令一样使流水线停顿。此外,wait指令可以使流水线停顿一个发布(issuance)。因此,与使用nop指令的情况相比,可以减少指令的数目。
但是,根据本申请的发明人进行的研究的结果,明确了在简单地用wait指令替代nop指令时,整个指令序列中的执行周期的数目增加而不是减少。这将参照图1A和图1B进行描述。
图1A和图1B是示意性地示出指令序列的执行周期的数目的图。
图1A示出了通过nop指令使流水线停顿的指令序列1。
指令序列1具有三个指令A、B和C,并且随着时钟周期的前进而按照从顶部到底部的顺序执行。
假设指令A和指令B中的每一个从每个指令的发布到完成需要4个时钟周期。还假设指令C依赖于指令A,并且指令C读取其中指令A将一些数据写入其中的寄存器。因此,当流水线在指令A与指令C之间未停顿时,发生数据冒险。对于图1B中的指令序列2也是这种情况。
为了使流水线停顿,在指令序列1中的指令B与指令C之间连续插入两个nop指令。这里,假设nop指令在一个时钟周期内完成。
因此,在完成指令A之后开始指令C,并且因此可以避免数据冒险。但是,由于插入了两个nop指令,所以指令序列1中包括的指令的数目变长,多达五个。
另一方面,图1B示出了通过wait指令来使流水线停顿的指令序列2。
wait指令是等待后续指令的开始直到完成所有先前指令为止的指令。通过仅发布一次wait指令,可以实现wait指令的功能。在该示例中,wait指令的先前指令是指令A和指令B。因此,指令C在指令A和指令B都完成之后开始,使得可以避免数据冒险。
以这样的方式,由于wait指令可以使流水线仅停顿一个发布,所以与使用nop指令的指令序列1(图1A)中的指令的数目相比,可以减少指令序列2中的指令的数目。
然而,当使用wait指令时,从指令A的开始到指令C的完成需要6个时钟周期,因此与使用nop指令的指令序列1(图1A)相比,整个程序中的执行周期的数目增加了。
图2是示出图1A的指令序列1和图1B中的指令序列2中的每一个中的指令的数目和执行周期的数目的表。
如图2所示,仅利用nop指令使流水线停顿的指令序列1具有比利用wait指令使流水线停顿的指令序列2更多数目的指令。因此,在具有比该示例更多数目的指令的程序中,指令的数目可能超过rep指令能够重复执行的后续指令的数目的上限,并且存在不能使用rep指令执行循环处理的可能性。
此外,即使在不使用rep指令时,由于指令的总数目的增加,存储器的使用量也会增加。因此,存在用于诸如嵌入式设备之类的具有小存储器大小的设备的应用程序不能被存储在存储器中的可能性。
另一方面,在利用wait指令使流水线停顿的指令序列2中,与指令序列1相比,指令的数目可以减少。
然而,执行周期的数目相反地增加,并且程序的执行时间变长。
下文中,将给出对能够减少指令的数目并且抑制程序的执行时间的增加的本实施方式的描述。
[本实施方式]
[目标处理器]
图3是示出根据本实施方式的目标处理器的硬件结构的图。
目标处理器11是例如能够对上面提及的DLU架构的指令集执行流水线处理的处理器。此外,目标处理器11是通过依序执行来处理指令序列的处理器,并且从指令序列的顶部开始按顺序执行指令。
在该示例中,目标处理器11包括指令取出单元12、指令解码单元13、执行单元14和写回单元15。这些单元是形成在半导体衬底上的寄存器和运算电路,并且分别对应于流水线处理中的IF(指令取出)级、ID(指令解码)级、EX(执行)级和WB(写回)级。
IF级是其中指令取出单元12顺序取出包括在指令序列中的指令的级。ID级是其中指令解码单元13从指令取出单元12接收指令并解码所接收的指令的级。
EX级是其中执行单元14根据由指令解码单元13解码的指令执行算术运算或逻辑运算的级。这里,将在这些操作中使用的数据预先被写入未示出的寄存器中。
WB级是其中写回单元15将从EX级中的执行单元14输出的操作结果写回到寄存器文件的级。
在目标处理器11中,不存在用于避免数据冒险的转发线路16。转发线路16是在将数据输入WB级之前将数据提供给EX级的布线。通过以这种方式省略布线,可以防止目标处理器11的硬件结构变得复杂。
除了前面提及的DLU以外,其他处理器例如由Texas Instruments制造的MIPSR2000、MIPS R3000和C6000 VLIW系列是不具有转发线路16的处理器的示例,并且这些处理器可以用作目标处理器11。
注意,在下文,为了简化说明,不使用诸如存储指令之类的存储器引用指令。然而,当使用存储器引用指令时,可以在EX级与WR级之间提供用于执行存储器引用的MEM(存储器)级。
[硬件结构]
图4是示出根据本实施方式的信息处理装置的硬件结构的图。
信息处理装置21是诸如PC或服务器之类的计算机,其输出由上面描述的目标处理器1执行的程序的中间代码。
在该示例中,信息处理装置21包括存储单元22、主存储器23、处理器24、输入单元25和显示单元26。这些元件通过总线27彼此连接。
存储单元22是诸如硬盘驱动器(HDD)或固态驱动器(SSD)之类的二级存储设备,并且存储根据本实施方式的信息处理程序30。信息处理程序30是用于减少如稍后所描述的输入指令序列中的指令的数目的程序。
这里,信息处理程序30可以记录在非暂态计算机可读记录介质28上,并且处理器24可以读取记录介质28上的信息处理程序30。
这样的记录介质28的示例包括物理便携式记录介质例如压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)和通用串行总线(USB)存储器。诸如闪存或硬盘驱动器的半导体存储器可以用作记录介质28。记录介质28不是诸如不具有物理实体的载波的暂时介质。
此外,信息处理程序30可以被存储在连接至公共线路、因特网、LAN(局域网)等的设备中,并且处理器24可以从该设备读取信息处理程序30以执行信息处理程序30。
另一方面,主存储器23是临时存储数据的硬件例如DRAM,并且信息处理程序30被加载到主存储器23上。
处理器24是诸如中央处理单元(CPU)的硬件,其控制信息处理装置21的每个单元并且与主存储器23协作执行信息处理程序30。
在本实施方式中,假设不同于目标处理器11(见图3)的处理器24执行信息处理程序30,但是本实施方式不限于此。例如,包括目标处理器11的机器可以执行信息处理程序30。
输入单元25是诸如键盘或鼠标之类的输入设备。当用户操作输入设备时,指定要由信息处理程序30处理的指令序列,并且指定经处理的指令序列的输出目的地。
显示单元26是诸如液晶显示器的显示设备,其显示当执行信息处理程序30时用户使用的各种命令。
[功能配置]
图5是示出根据本实施方式的信息处理装置21的功能配置的图。
如图5所示,信息处理装置21包括获取单元41、生成单元42、删除单元43、选择单元44和输出单元45。处理器24和主存储器23一起工作以执行信息处理程序30,由此实现这些单元中的每一个单元。
获取单元41是获取指令序列的功能单元。例如,获取单元41获取图6中所示的指令序列50。
图6是示出由获取单元41获取的指令序列50的示例的图。
指令序列50是用于生成要由目标处理器11执行的二进制文件的中间代码,并且是其中指令A、指令B、指令C、指令D和nop指令按照执行顺序从顶部开始排列的序列。指令A、B、C和D的示例包括算术运算指令、逻辑运算指令、跳转指令、存储器引用指令等。
nop指令是用于通过不改变流水线寄存器、寄存器文件、主存储器等的内容来使流水线停顿的指令,如上面所描述的。在MIPS(每秒百万条指令)中,nop指令通过具有与nop指令等同的功能的“sll$0,$0,0”来实现。
假设所有这些指令在一个时钟周期中发布。从指令发布开始完成指令所需的周期的数目如下;
指令A:8个时钟周期,
指令B:4个时钟周期,
指令C:1个时钟周期,
指令D:1时钟周期,以及
nop指令:1个时钟周期。
此外,假设指令D依赖于指令A并且读取指令A向其中写入一些数据的寄存器。还假设指令C依赖于指令B并且读取指令B向其中写入一些数据的寄存器。
nop指令被插入到指令序列50中,以便防止由于指令中的这种依赖性而发生数据冒险。下文中,作为示例,描述获取单元41获取包括nop指令的指令序列50的情况。然而,信息处理程序30本身可以编译源代码以生成指令序列50。如上面所描述的,由于通过nop指令增加了指令序列50中的指令的数目,因此在本实施方式中减少了指令的数目,如后面所描述的。
再次参照图5,生成单元42生成具有与上面提及的指令序列50的执行结果相同的执行结果的新指令序列的多个候选。图7A至图7C是示出生成指令序列的候选的生成方法的图。
如图7A至图7C所示,在该示例中生成三个候选P1至P3。
这些候选P1至P3是通过用wait指令替换原始指令序列50中的多个nop指令的至少一部分而生成的。如上面所描述的,wait指令是通过一次发布而等待直到完成所有先前指令的指令。
例如,候选P1是通过用单个wait指令替换指令序列50中的三个连续的nop指令而生成的。在这种情况下,由于指令C在指令A和指令B完成之后开始,因此不会发生由于指令B与指令C之间的依赖性而引起的数据冒险。类似地,不会发生由于指令A与指令D之间的依赖性而引起的数据冒险。
此外,候选P2是通过用单个wait指令替换指令序列50中的两个连续的nop指令而生成的。在这种情况下,指令D在所有先前指令完成之后开始。因此,不会发生由于指令A与指令D之间的依赖性而引起的数据冒险。
另一方面,候选P3是通过用单个wait指令替换指令序列50中的三个连续nop指令并且用另一单个wait指令替换指令序列50中的另外两个连续nop指令而生成的。在这种情况下,如候选P1和候选P2中那样,不会发生数据冒险。
注意,在候选P1至候选P3中的任何一个中,当多个nop指令连续出现时,用单个wait指令来替换多个连续的nop指令。
因此,与用wait指令替换多个nop指令中的仅一个nop指令的情况相比,能够减少候选P1至候选P3中的每一个候选中的指令的数目。此外,当使得其中nop指令中的仅一个nop指令能够被替换为wait指令的候选时,候选的数目不必要地增加。但是,如该示例那样,在将连续的nop指令作为集体替换为wait指令的情况下,能够抑制候选的数目的增加。
注意,候选P1至候选P3是通过在原始指令序列50中简单地用wait指令替换连续的nop指令而获得的。因此,这些候选P1至候选P3有减少指令的数目的空间。
因此,删除单元43(见图5)从候选P1至候选P3中的每一个中删除不必要的nop指令和不必要的wait指令。
图8A到图8C是示出删除不必要的nop指令和不必要的wait指令的方法的图。根据即使当nop指令和wait指令被删除时指令序列的执行结果是否没有改变的观点来确定nop指令或wait指令是否是不必要的。
例如,即使当候选P1的两个连续nop指令被删除时,由于指令A在指令D开始之前完成,所以不会发生由于指令A与指令D之间的依赖性而引起的数据冒险,并且因此执行结果在删除之前和删除之后不会改变。因此,删除单元43删除候选P1中的两个连续nop指令。
另一方面,当删除候选P1的wait指令时,指令C在指令B完成之前开始。由于指令B和指令C具有如上面所描述的依赖性,所以当以这种方式删除wait指令时,不成功地获得具有与原始指令序列的执行结果不同的执行结果的指令序列。因此,删除单元43不删除候选P1中的wait指令。
以与候选P1相同的方式,删除单元43确定候选P2和候选P3中的nop指令和wait指令是否可以被删除。然后,当删除单元43确定可以删除这些指令时,删除单元43删除这些指令。
例如,候选P2的执行结果在删除nop指令或wait指令之前以及在删除nop指令或wait指令之后改变,因此这些指令不从候选P2中删除。相比之下,由于即使当第二wait指令被删除时候选P3的执行结果也不改变,因此删除单元43删除候选P3中的第二wait指令。
选择单元44(见图5)在如图8A至图8C中那样经受删除的候选P1至候选P3中选择具有等于或小于预定数目N0的指令数目并且具有最小数目的执行周期的一个候选。
当使用相对于后续指令的数目具有上限数目的指令例如rep指令时,将预定数目N0设置为上限数目。即使当不使用rep指令时,也可以预先将上限数目设置为指令的数目,以便减少存储器使用量,并且可以采用这样的上限数目作为预定数目N0。将参照图9A至图9C描述候选的选择方法。
图9A至图9C是示意性地示出候选P1至候选P3中的指令序列的执行周期的数目的图。
选择单元44通过使用从指令A、B、C、D的发布到指令A、B、C、D的完成的周期的数目来计算各个候选P1至P3的执行周期的数目。以这种方式计算出的候选P1的执行周期的数目为10。另外,候选P2的执行周期的数目为9,候选P3的执行周期的数目为10。
另外,选择单元44计算候选P1至候选P3的各指令序列中包括的指令的数目。
图10是示出针对候选P1至候选P3中的每一个获得的执行周期的数目和指令的数目的图。
在该示例中,假定指令的数目的预定数目N0为8。在这种情况下,选择单元44在指令的数目等于或小于预定数目N0(=8)的候选P1至候选P3中选择具有最小数目的执行周期的候选P2。
这样选择的候选P2是在其中不发生数据冒险的指令序列当中具有最小数目的执行周期的指令序列。因此,当在目标处理器11(见图3)中执行通过编译候选P2的指令序列而获得的二进制文件时,可以防止数据冒险的发生并且可以提高程序的执行速度。
然后,输出单元45(见图5)将候选P2的指令序列作为最终的输出结果输出。
[流程图]
接下来,将给出根据本实施方式的信息处理方法的描述。图11是示出根据本实施方式的信息处理方法的流程图。
首先,在步骤S1中,获取单元41获取图6的指令序列50。
接着,处理进行至步骤S2,获取单元41对指令序列50中包括的指令的数目N进行计数。
然后,在步骤S3中,获取单元41确定指令的数目N是否等于或小于预定数目N0。这里,在确定指令的数目N等于或小于预定数目N0的情况下(是),则不需要减少指令序列50中的指令。因此,在这种情况下,该处理成功地结束。
另一方面,在步骤S3中确定指令的数目N并非等于或小于预定数目N0的情况下(否),在步骤S4中执行指令的数目的删除处理。
图12是示出指令的数目的删除处理的流程图。
首先,在步骤S10中,生成单元42生成具有与指令序列50的执行结果相同的执行结果的新指令序列的多个候选P1至候选P3(见图7A至图7C)。
接着,在步骤S11中,删除单元43删除候选P1至候选P3中的每一个中的不必要的nop指令和不必要的wait指令,如图8A至图8C所示。
接着,在步骤S12中,选择单元44为候选P1至候选P3的每一个计算执行周期的数目和指令序列的指令的数目N,如图10所示。
接着,在步骤S13中,选择单元44确定候选P1至候选P3中是否存在其中指令的数目N等于或小于预定数目N0的候选。在确定不存在其中指令的数目N等于或小于预定数目N0的候选的情况下(否),输出单元45在步骤S14中输出错误并且结束处理。
另一方面,在步骤S13中确定存在其中指令的数目N等于或小于预定数目N0的候选的情况下(是),处理进行至步骤S15。
在步骤S15中,选择单元44从候选P1至候选P3中选择具有等于或小于预定数目N0的指令数目N并且具有最小数目的执行周期的一个候选。在如图10所示的预定数目N0为8的示例中,选择执行周期的数目小于任何其它候选的候选P2。
然后,处理进行至步骤S16,输出单元45输出在步骤S15中选择的候选P2。
因此,完成了根据本实施方式的信息处理方法的基本步骤。
根据本实施方式,在步骤S10中,生成单元42生成其中多个nop指令的一部分被替换为wait指令的新指令序列的候选P1至候选P3。然后,在步骤S11中,删除单元43从候选P1至候选P3中的每一个中的指令序列中删除不必要的nop指令和不必要的wait指令。在步骤S15中,选择单元44从经受了删除不必要的nop指令和不必要的wait指令的候选P1至候选P3中选择具有等于或小于预定数目N0的指令数目N并且具有最小数目的执行周期的候选。
以这种方式选择的指令序列具有与原始指令序列50的执行结果相同的执行结果,但是具有比原始指令序列50更小的指令数目。因此,可以使用相对于后续指令具有上限数目的指令,例如rep指令。此外,即使在不使用rep指令的情况下,也可以通过减少指令的数目来减少存储器使用量。
另外,选择单元44从具有等于或小于预定数目N0的指令数目N的多个候选中选择具有最小数目的执行周期的候选。因此,可以实现减少程序的执行时间的技术改进。
接下来,将给出对本实施方式的更具体示例的描述。图13A是示出根据该示例的指令序列60的图。在该示例中,将描述在8SIMD(Single Instruction Multiple Data,单指令多数据)的DLU中使用的指令序列60。
指令序列60是形成循环处理内的基本块的指令序列。这里,考虑计算两个向量的各个元素的平均值的循环处理。注意,每个向量的元素是32位无符号整数,并且每个向量的元素的数目是8×128。指令序列60中的每个指令的含义如下。
%xor_xy=ixors%x,%y…将寄存器“x”和寄存器“y”的内容的逻辑“异或”写入寄存器"xor_xy"。
%and_xy=iands%x,%y…将寄存器“x”和寄存器“y”的内容的逻辑“与”写入寄存器“and_xy”。
%srl_xor_xy=isrls%xor_xy,1…将寄存器“xor_xy”的内容向右逻辑移位1比特,并将结果写入寄存器“srl_xor_xy”。
%res=iadds%and_xy,%srl_xor_xy…将寄存器“and_xy”和寄存器“srl_xor_xy”的内容的算术和写入寄存器“res”。
在该示例中,如上面所描述的,考虑8SIMD,并且每次执行指令序列60时,所有寄存器的数目自动移位8。通过重复执行指令序列60达128次,在寄存器“res”的数目移位8时,8×128个元素的平均值被写入寄存器“res”中。
图13B是示出了指令序列60中包括的各个指令的依赖性的图。
在该示例中,在具有依赖性的指令之间提供箭头。每个箭头的方向指示每个指令在指令序列60中出现的顺序。例如,iadds指令在iands指令出现之后出现在指令序列中。
除了nop指令以外,图13A中出现的所有指令在8个时钟周期内完成。
因此,当在iands指令与isrls指令之间插入6个nop指令时,如图13A所示,在从第一ixors指令开始起经过8个时钟周期之后,isrls指令开始。因此,可以避免由于ixors和isrls的依赖性而引起的数据冒险。
类似地,由于在isrls指令与iadds指令之间插入7个nop指令,因此iadds指令在从isrls指令开始起经过8个时钟周期之后开始。结果,可以避免由于isrls和iadds指令的依赖性而引起的数据冒险。
如上面所描述的,存在rep指令作为用于重复执行指令序列60的指令。然而,虽然rep指令可以重复执行的后续指令的数目的上限是12,但指令序列60中的指令的数目是17。因此,在这种状态下,指令序列60不能由rep指令重复执行。
在这种情况下,可以将根据图11和图12所示的本实施方式的信息处理方法应用于指令序列60以减少指令的数目。
图14A是示出其中通过将本实施方式应用于指令序列60来减少指令的数目的指令序列71的图。
指令序列71中的指令的数目是11,其小于rep指令可以执行的后续指令的数目的上限(=12)。因此,指令序列71可以由rep指令重复执行。在这种情况下,例如,输出单元45将rep指令添加至指令序列71,并输出添加有rep指令的指令序列71。因此,可以获得具有循环处理的中间代码,在该循环处理中,指令序列71被重复由rep指令的第二参数分配的次数。在该示例中,由于重复的次数为128,如上面所描述的,所以rep指令的第二参数是128。此外,rep指令的第一参数是11,其指示指令序列71中要重复的指令的数目。
图14B是示出根据第一比较例的指令序列72的图。
根据第一比较例的指令序列72是通过用单个wait指令替换原始指令序列60中的所有连续nop指令而获得的指令序列。由于指令序列72中的指令的数目是6,所以指令序列72可以由rep指令重复执行。当以这种方式使用rep指令时,rep指令的第一参数是6,其是指令序列72中的指令的数目,并且第二参数是128,其是重复的次数。
图14C是示出根据第二比较例的指令序列73的图。
根据第二比较例的指令序列73是在不减少原始指令序列60中的指令的数目的情况下利用跳转指令来实现循环处理的指令序列。
在第二比较例中,为了实现循环处理,使用其中写入循环的次数的寄存器“loop_cnt”和其中写入所有寄存器共用的基地址的寄存器“baseadr”。此外,还使用其中写入基地址的增量值的寄存器“inc”。由于在该示例中考虑8SIMD,如上面所描述的,因此增量值为8。
使用这些寄存器的每个指令的含义如下。
%loop_cnt=sub%loop_cnt,1…将写入寄存器“loop_cnt”中的循环的次数减少1。
%baseadr=add%baseadr,%inc…将写入寄存器“baseadr”中的基地址增加写入寄存器“inc”中的增量值(=8)。
bnzr%loop_cnt,LoopBegin…在写入寄存器“loop_cnt”中的循环的次数不为0的情况下,跳转至标签“LoopBegin”(循环开始),在循环的次数为0的情况下,执行后续指令。
图15是示出根据本实施方式的指令序列71、根据第一比较例的指令序列72和根据第二比较例的指令序列73中的每一个中包括的指令的数目的图。图15还示出了在这些指令序列中的每一个执行一次的情况下的执行周期的数目。
如图15所示,在该实施方式中指令的数目小于rep指令可以执行的后续指令的数目的上限值(=12)。此外,在第一比较例中,指令的数目小于上限值。然而,第一比较例中的执行周期的数目是22,其大于本实施方式中的执行周期的数目。
此外,在第二比较例中,指令的数目和执行周期的数目都变得比本实施方式中的指令的数目和执行周期的数目大。
该结果表明,本实施方式在减少指令的数目和执行周期的数目方面是有效的。
在图14A的示例中,指令的数目小于分配给rep指令的预定数目N0(=12)。然而,取决于原始指令序列,可能存在即使在应用本实施方式时也不存在具有等于或小于预定数目N0的指令数目的候选的情况。在这种情况下,代替如图12的步骤S14中那样显示错误,输出单元45(见图5)可以输出如图14C所示的利用跳转指令实现循环处理的指令序列73。指令序列73是其中如上面所描述的将子指令、加法指令和bnzr指令添加至原始指令序列60(图13A)的指令序列,并且指令序列73可以获得与使用rep指令的情况(图14A)相同的执行结果。
尽管详细描述了本发明的实施方式,但是本发明不限于具体描述的实施方式和变型,并且可以在不脱离要求保护的本发明的范围的情况下做出其它实施方式和变型。
Claims (7)
1.一种信息处理装置(21),包括:
获取单元(41),其获取要由处理器执行的包括多个指令的指令序列;
生成单元(42),其通过用等待指令替换包括在所述指令序列中的多个无操作指令的至少一部分来生成能够获得与所述指令序列的执行结果相同的执行结果的新指令序列的多个候选,其中,在所述处理器执行后续指令之前执行所述等待指令时,所述等待指令使所述处理器等待所有先前指令完成;
删除单元(43),其在从所述候选中的所述新指令序列中删除所述无操作指令和所述等待指令中的任何一个的情况下所述执行结果没有改变时,从所述新指令序列中的每一个中删除所述无操作指令和所述等待指令中的任何一个;以及
选择单元(44),其从经受了删除的所述多个候选中选择一个候选,所述一个候选具有等于或小于特定数目的指令数目,并且在所述处理器上被执行时在所述多个候选当中具有最小数目的执行周期。
2.根据权利要求1所述的信息处理装置,其中
所述生成单元被配置成在所述无操作指令连续出现在所述指令序列中的情况下用单个等待指令替换连续的无操作指令。
3.根据权利要求1所述的信息处理装置,其中
所述特定数目是指示后续指令的重复的重复指令所允许的后续指令的上限数目。
4.根据权利要求3所述的信息处理装置,还包括:
输出单元,其将所述重复指令添加至所选择的候选的指令序列,其中,所述重复指令指示所述指令序列的重复,并且所述输出单元被配置成输出添加有所述重复指令的指令序列。
5.根据权利要求3所述的信息处理装置,还包括:
输出单元,其在不存在具有等于或小于所述特定数目的指令数目的候选的情况下输出添加有能够获得与所述重复指令的执行结果相同的执行结果的指令的指令序列。
6.一种非暂态计算机可读记录介质,其存储使包括在信息处理装置中的处理器执行处理的程序,所述处理包括:
获取要由所述处理器执行的包括多个指令的指令序列;
通过用等待指令替换包括在所述指令序列中的多个无操作指令的至少一部分来生成能够获得与所述指令序列的执行结果相同的执行结果的新指令序列的多个候选,其中,在所述处理器执行后续指令之前执行所述等待指令时,所述等待指令使所述处理器等待所有先前指令完成;
在从所述候选中的所述新指令序列中删除所述无操作指令和所述等待指令中的任何一个的情况下所述执行结果没有改变时,从所述新指令序列中的每一个中删除所述无操作指令和所述等待指令中的任何一个;以及
从经受了删除的所述多个候选中选择一个候选,所述一个候选具有等于或小于特定数目的指令数目,并且在所述处理器上被执行时在所述多个候选当中包括最小数目的执行周期。
7.一种使计算机执行处理的信息处理方法,所述处理包括:
获取要由处理器执行的包括多个指令的指令序列;
通过用等待指令替换包括在所述指令序列中的多个无操作指令的至少一部分来生成能够获得与所述指令序列的执行结果相同的执行结果的新指令序列的多个候选,其中,在所述处理器执行后续指令之前执行所述等待指令时,所述等待指令使所述处理器等待所有先前指令完成;
在从所述候选中的所述新指令序列中删除所述无操作指令和所述等待指令中的任何一个的情况下所述执行结果没有改变时,从所述新指令序列中的每一个中删除所述无操作指令和所述等待指令中的任何一个;以及
从经受了删除的所述多个候选中选择一个候选,所述一个候选具有等于或小于特定数目的指令数目,并且在所述处理器上被执行时在所述多个候选当中具有最小数目的执行周期。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019-016819 | 2019-02-01 | ||
JP2019016819A JP7208448B2 (ja) | 2019-02-01 | 2019-02-01 | 情報処理装置、情報処理プログラム、及び情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522586A CN111522586A (zh) | 2020-08-11 |
CN111522586B true CN111522586B (zh) | 2023-10-03 |
Family
ID=69167714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010078653.7A Active CN111522586B (zh) | 2019-02-01 | 2020-02-03 | 信息处理装置、非暂态计算机可读介质和信息处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11163570B2 (zh) |
EP (1) | EP3690639B1 (zh) |
JP (1) | JP7208448B2 (zh) |
CN (1) | CN111522586B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327643B (zh) * | 2022-03-11 | 2022-06-21 | 上海聪链信息科技有限公司 | 机器指令预处理方法、电子设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440750A (en) * | 1990-01-23 | 1995-08-08 | Hitachi, Ltd. | Information processing system capable of executing a single instruction for watching and waiting for writing of information for synchronization by another processor |
US5680568A (en) * | 1987-09-30 | 1997-10-21 | Mitsubishi Denki Kabushiki Kaisha | Instruction format with sequentially performable operand address extension modification |
CN1211005A (zh) * | 1997-03-04 | 1999-03-17 | 松下电器产业株式会社 | 多异步运行任务中也能高效率地执行异步事件任务的处理器 |
CN102053819A (zh) * | 2009-10-26 | 2011-05-11 | 索尼公司 | 信息处理设备和信息处理设备的指令解码器 |
CN107851020A (zh) * | 2015-08-26 | 2018-03-27 | 华为技术有限公司 | 用于指令存储器效率的设备和处理架构 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4887235A (en) * | 1982-12-17 | 1989-12-12 | Symbolics, Inc. | Symbolic language data processing system |
US4922414A (en) * | 1982-12-17 | 1990-05-01 | Symbolics Inc. | Symbolic language data processing system |
US4539684A (en) * | 1983-01-07 | 1985-09-03 | Motorola, Inc. | Automatic frame synchronization recovery utilizing a sequential decoder |
JP3616981B2 (ja) * | 1997-06-18 | 2005-02-02 | 株式会社ルネサステクノロジ | 同期化装置 |
JP3419268B2 (ja) * | 1997-08-29 | 2003-06-23 | 松下電器産業株式会社 | プロセッサ |
US6351822B1 (en) * | 1999-03-05 | 2002-02-26 | Seagate Technology Llc | Method and apparatus for remapping read only memory locations |
US7225445B1 (en) * | 1999-09-02 | 2007-05-29 | Fuji Xerox Co., Ltd. | Execution control apparatus with key pad that enables selection of jobs to be run |
JP2001350632A (ja) | 2000-06-06 | 2001-12-21 | Toshiba Corp | 命令配置方法、および、コンパイラを記憶した記憶媒体 |
JP2002099348A (ja) | 2000-09-21 | 2002-04-05 | Matsushita Electric Ind Co Ltd | クロック制御方法およびクロック制御装置 |
US20030093256A1 (en) * | 2001-11-09 | 2003-05-15 | Carl Cavanagh | Verification simulator agnosticity |
US7231338B2 (en) * | 2001-11-09 | 2007-06-12 | Sun Microsystems, Inc. | Distributed simulation system having phases of a timestep |
US7020722B2 (en) * | 2001-11-09 | 2006-03-28 | Sun Microsystems, Inc. | Synchronization of distributed simulation nodes by keeping timestep schedulers in lockstep |
CN100541421C (zh) | 2001-11-26 | 2009-09-16 | Nxp股份有限公司 | 由专用指令配置的处理器和用于这种处理器的分配方法 |
US6988218B2 (en) * | 2002-02-11 | 2006-01-17 | Micron Technology, Inc. | System and method for power saving delay locked loop control by selectively locking delay interval |
US7000095B2 (en) | 2002-09-06 | 2006-02-14 | Mips Technologies, Inc. | Method and apparatus for clearing hazards using jump instructions |
US7162403B2 (en) * | 2003-02-14 | 2007-01-09 | Sun Microsystems, Inc. | System and method for efficiently tracing simulation data in hardware acceleration simulation systems |
JP2005050124A (ja) * | 2003-07-29 | 2005-02-24 | Matsushita Electric Ind Co Ltd | 特定周波数帯域のノイズを低減できるコンパイラ、およびコンピュータ装置 |
DE102004038590A1 (de) * | 2004-08-06 | 2006-03-16 | Robert Bosch Gmbh | Verfahren zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Zweirechnersystems sowie entsprechende Verzögerungseinheit |
US7603604B2 (en) * | 2007-04-09 | 2009-10-13 | Advantest Corporation | Test apparatus and electronic device |
EP2372490A1 (en) * | 2010-03-31 | 2011-10-05 | Robert Bosch GmbH | Circuit arrangement for a data processing system and method for data processing |
KR101711388B1 (ko) | 2013-01-28 | 2017-03-02 | 삼성전자주식회사 | 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치 |
KR20150113700A (ko) * | 2014-03-31 | 2015-10-08 | 삼성전자주식회사 | 진단 시스템 및 방법 |
FR3021432B1 (fr) * | 2014-05-20 | 2017-11-10 | Bull Sas | Processeur a instructions conditionnelles |
US9875106B2 (en) * | 2014-11-12 | 2018-01-23 | Mill Computing, Inc. | Computer processor employing instruction block exit prediction |
US20180107510A1 (en) * | 2016-10-19 | 2018-04-19 | International Business Machines Corporation | Operation of a multi-slice processor implementing instruction fusion |
US10564980B2 (en) * | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
-
2019
- 2019-02-01 JP JP2019016819A patent/JP7208448B2/ja active Active
-
2020
- 2020-01-14 EP EP20151710.9A patent/EP3690639B1/en active Active
- 2020-01-24 US US16/751,223 patent/US11163570B2/en active Active
- 2020-02-03 CN CN202010078653.7A patent/CN111522586B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680568A (en) * | 1987-09-30 | 1997-10-21 | Mitsubishi Denki Kabushiki Kaisha | Instruction format with sequentially performable operand address extension modification |
US5440750A (en) * | 1990-01-23 | 1995-08-08 | Hitachi, Ltd. | Information processing system capable of executing a single instruction for watching and waiting for writing of information for synchronization by another processor |
CN1211005A (zh) * | 1997-03-04 | 1999-03-17 | 松下电器产业株式会社 | 多异步运行任务中也能高效率地执行异步事件任务的处理器 |
US6470376B1 (en) * | 1997-03-04 | 2002-10-22 | Matsushita Electric Industrial Co., Ltd | Processor capable of efficiently executing many asynchronous event tasks |
CN102053819A (zh) * | 2009-10-26 | 2011-05-11 | 索尼公司 | 信息处理设备和信息处理设备的指令解码器 |
CN107851020A (zh) * | 2015-08-26 | 2018-03-27 | 华为技术有限公司 | 用于指令存储器效率的设备和处理架构 |
Also Published As
Publication number | Publication date |
---|---|
EP3690639B1 (en) | 2021-12-29 |
EP3690639A1 (en) | 2020-08-05 |
JP7208448B2 (ja) | 2023-01-19 |
JP2020126303A (ja) | 2020-08-20 |
US11163570B2 (en) | 2021-11-02 |
CN111522586A (zh) | 2020-08-11 |
US20200249945A1 (en) | 2020-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5646737B2 (ja) | 条件付き比較命令 | |
JP5512803B2 (ja) | ベクトル命令を取り扱うためのデータ処理装置および方法 | |
JP5309636B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP5882950B2 (ja) | ステージド・ループ命令 | |
JP6971220B2 (ja) | スプライス演算を行うための装置および方法 | |
KR20180039645A (ko) | 메모리와 복수의 벡터 레지스터와의 사이에서 복수의 데이터 구조체를 전송하는 장치 및 방법 | |
US7979637B2 (en) | Processor and method for executing data transfer process | |
US20180107510A1 (en) | Operation of a multi-slice processor implementing instruction fusion | |
JP2000112758A (ja) | 投機的実行中に発生する例外を遅延させるシステム及び方法 | |
US20160371067A1 (en) | Determination of branch convergence in a sequence of program instruction | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
US8095775B1 (en) | Instruction pointers in very long instruction words | |
CN111522586B (zh) | 信息处理装置、非暂态计算机可读介质和信息处理方法 | |
US10467008B2 (en) | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor | |
US10241905B2 (en) | Managing an effective address table in a multi-slice processor | |
US10528353B2 (en) | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor | |
US9628109B1 (en) | Operation of a multi-slice processor implementing priority encoding of data pattern matches | |
US11321094B2 (en) | Non-transitory computer-readable medium, assembly instruction conversion method and information processing apparatus | |
US10678551B2 (en) | Operation of a multi-slice processor implementing tagged geometric history length (TAGE) branch prediction | |
US10048963B2 (en) | Executing system call vectored instructions in a multi-slice processor | |
US9983879B2 (en) | Operation of a multi-slice processor implementing dynamic switching of instruction issuance order | |
JP2019067117A (ja) | コード生成装置、コード生成方法及びコード生成プログラム | |
US10120683B2 (en) | Supporting even instruction tag (‘ITAG’) requirements in a multi-slice processor using null internal operations (IOPs) | |
JP2021149807A (ja) | 情報処理装置及びコンパイラプログラム | |
CN115617401A (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 |