CN101482812A - 处理器装置及条件分支处理方法 - Google Patents

处理器装置及条件分支处理方法 Download PDF

Info

Publication number
CN101482812A
CN101482812A CNA2009100026161A CN200910002616A CN101482812A CN 101482812 A CN101482812 A CN 101482812A CN A2009100026161 A CNA2009100026161 A CN A2009100026161A CN 200910002616 A CN200910002616 A CN 200910002616A CN 101482812 A CN101482812 A CN 101482812A
Authority
CN
China
Prior art keywords
branch
condition
instruction
storage part
target address
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.)
Pending
Application number
CNA2009100026161A
Other languages
English (en)
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.)
NEC Electronics Corp
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of CN101482812A publication Critical patent/CN101482812A/zh
Pending legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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
    • 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/30094Condition code generation, e.g. Carry, Zero flag

Abstract

提供一种使在循环处理中反复进行的条件分支快速化的处理器装置和条件分支处理方法。包括:分支条件存储部(1),其具有多个存储利用条件设定指令(SETCMP)设定的分支条件的存储区域;保存并分析指令代码的指令解码器(2);存储指令代码的指令存储器(3);处理器在运算时使用的运算用寄存器(寄存器文件)(4);对分支条件的各个条件进行比较运算的分支条件比较部(5);条件分支判定部(6),判定是否在条件分支指令(XBRA)中进行程序的分支;选择器(7),根据来自条件分支判定部(6)的输出值,选择分支目标地址或下一个指令的地址;和表示处理器的指令执行位置的程序计数器(PC)(8)。

Description

处理器装置及条件分支处理方法
技术领域
本发明涉及一种处理器装置及条件分支处理方法。
背景技术
在普通的通用CPU等中使用的条件分支指令例如进行图10所示的动作,在执行条件分支指令之前,执行用于进行作为分支条件判定基础的运算的指令(例如地址N的条件A判别指令),然后根据该指令(条件A判别指令)的运算结果,在分支条件成立时,分支到由该条件分支指令的操作数(Operand)指定的分支目标地址(例如分支目标L1),在不成立时,直接转入下一个地址(在图10中例如为N+2的条件B判别指令)的指令。
作为一例,如图10所示,在处理4个分支条件时,条件判别用指令(地址N、N+2、N+4、N+6的条件A判别指令、条件B判别指令、条件C判别指令、条件D判别指令)及与各自对应的地址N+1、N+3、N+5、N+7的条件分支指令构成1组并连续4次,结果需要8步骤量的执行时间和指令存储区域。
作为条件分支的相关技术,说明专利文献1的条件分支。图11是表示专利文献1的处理器的结构的图。在图11中,按照条件成立与否寄存器选择信号424,从条件成立与否寄存器403~406选择并存储把从运算器401输出的运算结果422和分支条件431作为输入的条件判别电路402的输出即条件成立与否信息429。在进行多分支处理时,预先根据应处理的多个条件分别向不同的条件成立与否寄存器写入条件成立与否信息。在分支目标地址寄存器408~411中存储有与各个分支条件对应的分支地址,在执行多分支指令时,排序器(Prioritizer)407输入所述条件成立与否寄存器403~406的值,生成分支目标地址选择信号427,并控制选择器412。选择器412通过选择分支目标地址寄存器408~411中的一个,得到程序计数器413的值而执行分支处理。
并且,专利文献2公开的结构设有:分支指令判断单元,其判断基于指令代码的指令是否是分支指令;存储多个分支目标地址的分支目标存储单元;分支条件判断单元,对所有多个分支条件判断是否满足分支条件;和分支目标选择单元,在所述分支指令判断单元判断是分支指令时,从存储在所述分支目标存储单元中的多个分支目标地址中,选择与所述分支条件判断单元判断为满足分支条件的分支条件对应的一个分支目标地址。该结构根据前面刚刚执行的指令的运算结果,按照一个条件分支指令进行处理,实质上仅通过两步骤量的执行时间和指令存储区域即可完成。
另外,专利文献3公开了一种处理器(数字信号处理器),与运算器动作并行地选择算术运算器输出、逻辑移位器输出、乘法器输出中的任一个,对所选择的数据同时与预先设定的n个阈值比较大小关系,判定根据n个阈值而区分的n+1个数据区域、输出数据存在于哪个区域,将判定结果依次与预先设定的指定数据区域的m个区域限定条件比较,在条件一致时,从与m个区域限定条件对应的m个分支目标地址中输出与所述一致的区域限定条件对应的分支目标地址,将程序计数器更新为分支目标地址,在m个条件全部不一致时,输出表示全部条件不一致的信号,将程序计数器增加1。在执行需要每次对运算结果进行条件判定的处理时,不需逐一地执行条件判定的指令即可完成,所以能够实现快速处理。
专利文献4公开一种数据处理系统,其执行具有包括被排序的序列多个指令在内的指令序列的程序,所述被排序的序列包括开端和多个分支指令,在所述各分支指令满足所指定的条件时,执行由分支目标地址指定的指令,所述数据处理系统具有分支处理装置,该分支处理装置具有:存储单元,其存储包括指定多个所述分支指令并与各个分支指令对应的分支目标地址、和所述分支指令自所述被排序的序列的所述开端开始的相对位置在内的信息;比较结果单元,其接收表示满足与所述分支指令中的一个相关的所述条件的信息;接收分支执行指令的单元,该指令用于识别具有存储在所述存储单元中的信息的所述分支指令中的一个;和控制单元,在满足与所述识别的分支指令相关的所述条件、不满足比所述识别的分支指令更靠近所述被排序的序列的开端的分支指令所相关的所述条件时,接收所述分支执行指令并做出反应,使所述数据处理系统执行由与所述识别的分支指令对应的分支目标地址指定的所述指令。
专利文献1:日本专利特开平9-282160号公报
专利文献2:日本专利特开平2004-118669号公报
专利文献3:日本专利特开平2-187824号公报
专利文献4:日本专利特开平8-106386号公报
以下进行本发明涉及的相关技术的分析。
如图12所示,专利文献1记载的发明,在执行4次地址N~N+3个分支条件判别指令(条件A判别指令、条件B判别指令、条件C判别指令、条件D判别指令)后,可以根据一个多分支指令(地址N+4)处理条件分支,所以仅需要5步骤量的执行时间和指令存储区域,即可实现快速化及指令存储区域的削减。
但是,如图12所示,需要在多分支指令之前执行条件分支判别指令,其执行次数为进行分支判定所需要的次数。因此,在反复执行相同分支条件的循环处理中,需要执行条件分支判别指令。
专利文献2记载的发明与专利文献1相同,根据分支指令之前的运算结果进行分支判定,而且只有之前的一个指令的运算结果提供于分支判定,所以与专利文献1等相比只能是非常简单的分支条件。在想要采取较大的分支目标地址的值时,通过包括多个分支目标地址,使条件分支指令的指令长度变长并跨越指令存储器的两个字。该情况下,产生将第2个字的值读入指令解码器的步骤,所以一般情况下指令的执行周期数相应地变长。
专利文献3预先存储多个分支目标地址,在运算处理的同时进行条件判定处理。即,如图13所示,在运算指令中还包括条件分支指令(运算+条件判定指令),根据运算结果,如果条件成立,则分支到与该条件对应的分支目标地址。该处理把运算指令的结果作为比较对象来进行条件判定,只能设定简单的分支条件。
发明内容
为了解决上述问题,本发明大致采取以下结构。
根据本发明的一个方面,提供一种处理器装置,指令集中包括指定分支条件和所述分支条件的优先顺序的条件设定指令,该处理器装置包括分支条件存储部,具有多个用于存储利用所述条件设定指令设定的分支条件的存储区域,在由指令解码器解码的指令是所述条件设定指令时,所述分支条件存储部将利用所述条件设定指令指定的分支条件存储在与所述优先顺序对应的存储区域中。
在本发明涉及的一种处理器装置中,包括分支目标地址存储部,能够存储多个在分支条件成立时分支的分支目标地址。利用所述条件设定指令指定在利用所述条件设定指令指定的分支条件成立时的分支目标地址。在由所述指令解码器解码的指令是所述条件设定指令时,在所述分支目标地址存储部中,与利用所述条件设定指令指定的优先顺序相关联地存储利用所述条件设定指令指定的分支目标地址。
在本发明涉及的一种处理器装置中,所述指令集包括条件分支指令,用于判定分支条件且在分支条件成立时向分支目标地址分支。所述处理器装置包括:分支条件比较部,其具有一个或多个条件比较部,在执行一个或多个所述条件设定指令而在所述分支条件存储部设定有分支条件、而且所述分支目标地址存储部中存储有分支目标地址的状态下,在执行所述条件分支指令时,对存储在所述分支条件存储部中的一个或多个分支条件分别独立地进行判定;和条件分支判定部,在多个所述条件比较部的比较运算结果中同时存在分支条件成立的多个比较运算结果时,按照预先设定的优先方式,从所述分支目标地址存储部中选择与在所述分支条件存储部的预定存储区域中存储的分支条件相应的分支目标地址,所述处理器装置向由所述条件分支判定部选择的所述分支目标地址进行分支。
在本发明涉及的一种处理器装置中,所述条件分支判定部从所述分支目标地址存储部中,选择与同时成立的多个分支条件中、在所述分支条件存储部的优先顺序最高的存储区域中存储的分支条件相应的分支目标地址,并向所述分支地址进行分支。
在本发明涉及的一种处理器装置中,在一个分支条件成立时,所述条件分支判定部从所述分支目标地址存储部中选择与所述分支条件相应的分支目标地址,并向所述分支地址进行分支。
在本发明涉及的一种处理器装置中,在分支条件一个也不成立时,所述条件分支判定部输出分支条件不成立的信息,不进行分支,使程序计数器增加1。
在本发明涉及的一种处理器装置中,存储在所述分支条件存储部的各个存储区域中的分支条件包括:比较对象即两个运算用寄存器的第1和第2寄存器地址;即时数据;标志,存储运算用寄存器的数据之间的比较运算、或者运算用寄存器的数据和即时数据的比较运算的类别;和比较器的运算类别。
在本发明涉及的一种处理器装置中,所述条件设定指令在操作数中包括:发挥优先顺序信息的作用、且指定所述分支条件存储部中分支条件的存储区域的信息;比较运算的类别;比较运算对象即运算用寄存器的第1寄存器地址和所述运算用寄存器的第2寄存器地址或即时数据;和分支目标地址。
在本发明涉及的一种处理器装置中,所述分支条件存储部具有多个条件存储部作为所述多个存储区域,所述分支条件存储部还包括选择器,根据由所述指令解码器解码的所述条件设定指令所指定的分支条件的优先顺序信息,选择用于存储所述条件设定指令的分支条件的条件存储部。
在本发明涉及的一种处理器装置中,包括多个所述分支条件存储部,还包括选择所述多个分支条件存储部中的一个的其他选择器。
在本发明涉及的一种处理器装置中,所述条件设定指令在操作数中包括:指定所述多个分支条件存储部中的一个的信息;发挥优先顺序信息的作用、且指定所述分支条件存储部中分支条件的存储区域的信息;比较运算的类别;比较运算对象即运算用寄存器的第1寄存器地址和所述运算用寄存器的第2寄存器地址或即时数据;和分支目标地址。
在本发明涉及的一种处理器装置中,所述分支条件存储部具有多个条件存储部,该条件存储部把包括以下内容的条件存储为一个集:比较对象即两个运算用寄存器的第1和第2寄存器地址;即时数据;标志,存储运算用寄存器的数据之间的比较运算、或者运算用寄存器的数据和即时数据的比较运算的类别;和比较器的运算类别,所述多个条件存储部形成存储多个分支条件的所述多个存储区域,所述分支条件存储部包括选择所述多个条件存储部的选择器。
在本发明涉及的一种处理器装置中,所述分支条件比较部与所述多个条件存储部分别对应地具有条件比较部的组,该条件比较部包括:第1和第2解码器,分别解码存储在对应的所述条件存储部中的所述第1和第2寄存器地址,分别向所述运算用寄存器输出第1、第2寄存器地址,并且分别保存从所述运算用寄存器读出的数据;第3选择器,其接收存储在所述条件存储部中的即时数据和所述第2解码器的值,并根据所述标志的输出选择所述即时数据和所述第2解码器的值中的一个;和比较器,接收所述第3选择器的输出和所述第1解码器的输出作为输入,进行与存储在所述条件存储部中的运算类别对应的运算。
在本发明涉及的一种处理器装置中,在所述分支条件存储部中保存通过执行所述条件设定指令而存储的分支条件,直到在执行所述条件设定指令之后执行其他条件设定指令而根据所述其他条件设定指令改写为其他条件。
在本发明涉及的一种处理器装置中,在所述分支目标地址存储部中保存通过执行所述条件设定指令而存储的分支目标地址,直到在执行所述条件设定指令之后执行其他条件设定指令而根据所述其他条件设定指令改写为其他分支目标地址。
在本发明涉及的一种处理器装置中,所述条件分支判定部包括:第2选择器,其按照利用由所述指令解码器解码的所述条件设定指令指定的优先顺序,在所述分支目标地址存储部的相应存储区域中存储利用所述条件设定指令指定的分支目标地址;优先编码器,其接收来自多个所述条件比较部的比较运算结果,在多个比较运算结果表示分支条件成立时,输出按照预先设定的优先方式选择一个分支目标地址的信号,在一个分支条件成立时,输出选择与该分支条件对应的分支目标地址的信号;第3选择器,选择在所述分支目标地址存储部中存储的多个分支目标地址中、由优先编码器选择的分支目标地址;和逻辑电路,在来自多个所述条件比较部的比较运算结果为全部分支条件不成立时,输出第1值,对来自多个所述条件比较部的比较运算结果的其他组合,输出第2值,所述处理器装置包括第4选择器,接收程序计数器的输出和所述第3选择器的输出,根据所述逻辑电路的输出是第1值还是第2值,对程序计数器设定所述程序计数器的输出、所述第3选择器的输出。
在本发明涉及的一种处理器装置中,所述条件分支判定部包括:第2选择器,其按照利用由所述指令解码器解码的所述条件设定指令指定分支条件的存储区域的信息、分支目标地址,在分支目标地址存储部的相应存储区域中存储分支目标地址;和计数器,其根据输出计数值选择所述分支目标地址存储部内的分支目标地址和所述分支条件存储部内的分支条件,所述条件分支判定部执行根据所述计数器的计数输出而选择的分支条件的条件比较,所述条件分支判定部包括第3选择器,选择在所述分支目标地址存储部中存储的多个分支目标地址中、由所述计数器选择的分支目标地址,所述处理器装置包括第4选择器,接收程序计数器的输出和所述第3选择器的输出,根据所述条件比较部的输出是分支条件不成立还是成立,对程序计数器设定所述程序计数器的输出、所述第3选择器的输出。
在本发明涉及的一种处理器装置中,所述分支条件比较部具有一个条件比较部,该一个条件比较部在执行一个或多个所述条件设定指令而在所述分支条件存储部设定有分支条件、而且所述分支目标地址存储部中存储有分支目标地址的状态下,在执行所述条件分支指令时,对存储在所述分支条件存储部中的一个或多个分支条件分别独立地进行判定,在由所述指令解码器分析了条件分支指令时,所述计数器从所述指令解码器获取复位信号,并复位为优先顺序最高的序号,从所述分支条件存储部读出与所述计数器的计数值相应的优先顺序的分支条件,并存储在所述条件比较部中,从优先顺序高的分支条件开始依次进行条件分支判定,在分支条件成立时,向在该时间点选择的分支目标地址进行分支。
在本发明涉及的一种处理器装置中,指令集包括:条件设定指令,用于与所指定的优先顺序对应地设定分支条件和所述分支条件成立时的分支目标地址;和条件分支指令,用于判定有无根据所述条件设定指令设定的一个或多个分支条件的条件成立,在分支条件成立时向分支目标地址进行分支,所述处理器装置包括:分支条件存储部,其与所述条件设定指令的优先顺序对应地分别存储利用一个或多个所述条件设定指令分别指定的一个或多个分支条件;和分支目标地址存储部,其与所述条件设定指令的优先顺序对应地分别存储利用一个或多个所述条件设定指令指定的一个或多个分支目标地址,通过执行一个或多个所述条件设定指令而在所述分支条件存储部设定有一个或多个分支条件、而且所述分支目标地址存储部中存储有一个或多个分支目标地址的状态下,在执行一个或多个所述条件设定指令之后,在执行所述条件分支指令的期间,能够执行一个或多个其他指令,还包括以下单元:在执行所述条件分支指令时,对已经存储在所述分支条件存储部中的一个或多个分支条件分别独立地进行判定,在多个分支条件同时成立时,按照预先设定的优先方式,从所述分支目标地址存储部中选择与在所述分支条件存储部的预定存储区域中存储的分支条件相应的分支目标地址。
根据本发明提供一种处理器的分支处理方法,在进行了指令解码后的指令是条件设定指令时,在存储多个分支条件的分支条件存储部中、与利用所述条件设定指令指定的优先顺序对应的存储区域中,存储利用所述条件设定指令指定的分支条件。
在本发明涉及的方法中,利用所述条件设定指令指定在利用所述条件设定指令指定的分支条件成立时的分支目标地址,在所述进行了指令解码后的指令是条件设定指令时,与所述分支条件的优先顺序对应地存储利用所述条件设定指令指定的分支目标地址。
在本发明涉及的方法中,在执行一个或多个所述条件设定指令、存储分支条件和分支目标地址后,在执行条件分支指令时,对所存储的多个分支条件分别独立地进行判定,在多个分支条件同时成立时,向与按照预先设定的优先方式选择的分支条件相应的分支目标地址进行分支。
根据本发明,通过执行多次条件设定指令,能够存储多个分支条件,所以在适用于反复执行分支条件的循环处理等时,在循环处理中仅执行一个条件分支指令即可处理条件分支,能够使处理快速化。
附图说明
图1是表示本发明一个实施例的结构的图。
图2是表示本发明一个实施例中分支条件存储部的结构的一例的图。
图3是表示本发明一个实施例中分支条件比较部及其相关部分的一例的图。
图4是表示本发明一个实施例中条件分支判定部及其相关部分的一例的图。
图5是表示本发明一个实施例的变形例的图。
图6是表示使用本发明一个实施例中的条件设定指令和条件分支指令的程序的一例的图。
图7是表示本发明其他实施例的条件分支判定部的结构的图。
图8是表示本发明其他实施例的条件分支存储部的结构的图。
图9是表示本发明其他实施例的条件设定指令的一例的图。
图10是表示使用一般的条件分支指令的程序的一例的图。
图11是表示专利文献1的结构的图。
图12是表示使用专利文献1的条件分支指令的程序的一例的图。
图13是表示专利文献3的条件分支处理程序的示例的图。
具体实施方式
在本发明中包括:分支条件存储部(1),其具有用于分别存储多个分支条件的多个存储区域(条件存储部);保存并分析指令代码的指令解码器(2);对分支条件的各个条件进行比较运算的分支条件比较部(5);条件分支判定部(6),判定是否在条件分支指令中进行程序的分支;选择器(7),根据来自条件分支判定部(6)的输出值,选择分支目标地址或下一个指令的地址;和表示处理器的指令执行位置的程序计数器(8),利用条件设定指令(SETCMP)指定的分支条件被存储在分支条件存储部(1)的存储区域中的利用所述条件设定指令指定的存储区域中。在执行条件分支指令(XBRA)时,在分支条件比较部(5)中分别进行存储在分支条件存储部(1)中的多个分支条件的判定。在条件分支判定部(6)接收来自分支条件比较部(5)的比较结果,从分支目标地址存储部(6c)选择与同时成立的分支条件中在预先设定的预定存储区域中存储的分支条件相应的分支地址,并向分支地址进行分支。
本发明的指令集包括:条件设定指令(分支条件设定指令),能够指定在判定分支条件时需要的信息(作为比较对象的第1寄存器地址、第2寄存器地址或即时值等);和条件分支指令,能够利用预先执行了多次的条件设定指令的信息进行分支条件的判定,并向与同时成立的条件中优先级最高的分支条件对应的分支目标地址进行分支,本发明仅利用1步骤量的执行时间和指令存储区域执行多个分支条件。
条件设定指令能够按优先顺序设定分支条件和分支目标地址。
条件分支指令利用一个指令判定预先根据条件设定指令设定的多个分支条件成立/不成立,如果有同时成立的条件,则选择与其中优先级最高的分支条件对应的分支目标地址,作为下一个指令执行地址。
由于能够通过预先执行多个条件设定指令来存储多个分支条件,所以在适用于反复执行相同分支条件的循环处理等时,在循环处理中仅执行一个条件分支指令即可处理条件分支,能够快速进行处理。
即使在分支条件和分支目标地址的信息量增加,指令长度达2个字以上时,仅增加条件设定指令的指令长度和执行步骤数量,条件分支指令的指令长度和执行步骤数量不增加。以下根据实施例进行说明。
(实施例1)
图1是表示本发明一个实施例的结构的图。参照图1,本实施例的处理器装置包括:能够存储多个分支条件的分支条件存储部1;指令解码器2,保存并分析指令代码,控制与该指令相关的块(Block);存储指令代码的指令存储器3;处理器在运算时使用的运算用寄存器(寄存器文件)4;对分支条件的各个条件进行比较运算的分支条件比较部5;条件分支判定部6,判定是否在条件分支指令中进行程序的分支;选择器7,根据来自条件分支判定部6的输出值,选择分支目标地址或下一个指令的地址;和表示处理器的指令执行位置的程序计数器(PC)8。
在本实施例中,条件设定指令(助记符(Mnemonic)为SETCMP,语法(Syntax)将在后面叙述)是在分支条件存储部1设定分支条件用比较运算所需要的信息(包括在分支条件成立时跳过的分支目标地址)的指令。条件设定指令指定优先顺序,将分支条件用比较运算所需要的信息存储在分支条件存储部1的指定存储区域(与优先顺序对应的存储区域)中。
条件分支指令(助记符为XBRA)用于对通过预先执行多个分别指定了分支条件、分支目标地址、优先顺序的条件设定指令而设定的多个分支条件判定成立/不成立,在存在同时成立的多个分支条件时,选择与同时成立的多个分支条件中优先级最高的分支条件对应的分支目标地址,作为下一个指令执行地址。另外,关于程序,通过在循环之前执行条件设定指令,利用一个条件分支指令执行循环的结束判定,由此有助于缩短反复执行的循环运算的处理时间。
图2是用于说明图1所示分支条件存储部1的结构的一例的图。分支条件存储部1存储根据利用指令解码器2解码的条件设定指令指定的分支条件。即,通过执行一个条件设定指令,根据条件设定指令指定的一个分支条件被存储在分支条件存储部1中被指定的存储区域中。通过执行多个条件设定指令,由各个条件设定指令指定的多个分支条件被存储在分支条件存储部1的多个存储区域中。另外,在本实施例中,通过执行一个条件分支指令,评价存储在分支条件存储部1的多个存储区域中的多个分支条件,在分支条件成立时进行分支。
在本实施例中,为了对由条件设定指令指定的分支条件赋予由条件设定指令指定的优先顺序,并存储在分支条件存储部1中,预先对分支条件存储部1中分支条件的各个存储位置确定优先顺序。
参照图2,分支条件存储部1具有分别存储一个的分支条件的条件存储部101~104作为多个存储区域,还具有在条件存储部101~104中进行选择以使其有效的选择器105。
条件存储部101包括:寄存器r101a,存储进行分支设定指令的分支判定条件运算(两项运算)的两个寄存器中第1寄存器地址;存储第2寄存器地址的寄存器r101b;存储即时值的寄存器r101c;寄存器r101d,存储表示在两项比较运算中使用两个寄存器还是使用即时值的R/I标志(R=Register:寄存器地址,I=Immediate:即时值);和存储进行运算的比较器的类别的寄存器r101e。条件存储部102~104也是相同的结构。
在此,说明条件设定指令的汇编程序的指令语法。
条件设定指令是在分支条件存储部设定分支条件用比较运算所需要的信息的指令,操作码(Operation code)的助记符为SETCMP,例如具有如下操作数形式。
SETCMP p0,r1,NE,r11,L1     ……(1)
“p0”指第1个优先顺序的分支条件,表示条件存储部101。同样,“p1”、“p2”、“p3”分别对应于条件存储部102、103、104。另外,虽然没有特别限制,但在本实施例中,具有4个分支条件存储部1中的条件存储部,最多可以同时存储4个分支条件。优先顺序p0、p1、p2、p3例如对应于00b(b表示二进位制)、01b、10b、11b。
“r1”和“r11”表示运算用寄存器4中的寄存器地址为1和11的寄存器。
“NE”表示在比较r1和r11的值时使用的比较运算器的类别“!=”。
“L1”表示在该分支条件成立时跳过的分支目标地址。
在下面的表1中,作为由条件设定指令指定的比较运算器的类别示例,表示助记符、意思、C语言表示法、选择值(与比较运算器的类别对应的二进位码)。
(表1)比较运算器的类别
 
类别(助记符表示法) 意思 C语言表示法 选择值
EQ 等于(Equal) ‘==’ 0(000b)
NE 不等于(Not Equal) ‘!=’ 1(001b)
L 小于(Less) ‘<’ 2(010b)
LE 小于或等于(Less or Equal) ‘<=’ 3(011b)
G 大于(Greater) ‘>’ 4(100b)
GE 大于或等于(Greater or Equal) ‘>=’ 5(101b)
在图2中,指令解码器2分析条件设定指令的指令代码,表示被分解为位串的状态。“p0”(00b)输入到选择器105,选择条件存储部101。“r1”(0001b)输入到寄存器r101a并存储于此。“r11”(1011b)输入到寄存器r101b并存储于此。R/I标志(0b)输入到寄存器r101d并存储于此。比较器的类别“NE”(001b)输入到寄存器r101e并存储于此。
并且,由指令解码器2分析的“p0”、“L1”的值输入到条件分支判定部6。“L1”的值输入到与条件分支判定部6中的“p0”(00b)对应的分支目标地址存储部(图4中的6c),并存储该值。
只要下一次没有执行针对相同位置的分支条件存储部和分支目标地址存储部的条件设定指令,就一直保存分别存储在分支条件存储部1、分支目标地址存储部中的值。
条件分支指令进行由条件设定指令设定的各个分支条件的比较运算,并根据其结果进行分支条件的判定。利用汇编程序的助记符如下进行表示。
XBRA            ……(2)
“XBRA”表示条件分支指令的名称。不特别需要操作数等其他参数。即,在本实施例中,条件分支指令为仅是操作码的指令。
分支条件比较部5在条件分支指令被指令解码器2解码时,通过执行条件设定指令,同时执行预先在分支条件存储部1设定的多个分支条件的比较运算。
图3是表示图1中分支条件比较部5的结构的一例的图。参照图3,分支条件比较部5与多个条件存储部101、102、103、104分别对应地具有进行分支条件的比较运算的多个条件比较部51、52、53、54。
条件比较部51包括:解码器51a,其使用分支条件存储部1中的条件存储部101中寄存器r101a的第1寄存器地址,从运算用寄存器4中获取相应的寄存器的值;解码器51b,其使用寄存器r101b的第2寄存器地址,从运算用寄存器4中获取相应的寄存器的值;选择器51c,其根据条件存储部101中寄存器r101d的R/I标志的值,选择条件存储部101的寄存器r101d的即时值和由解码器51b选择的运算用寄存器4中的寄存器的值中的任一个;和比较器51d,其比较运算由解码器51a选择的运算用寄存器4中的寄存器的值和从选择器51a输出的值,向条件分支判定部6输出比较运算结果c0。
条件比较部51根据条件存储部101的寄存器(r101a、r101b、r101c、r101d、r101e)的设定值进行比较运算,向条件分支判定部6输出比较运算结果c0。
条件比较部52、53、54的各自结构也与条件比较部51相同。
条件比较部52、53、54分别输入分支条件存储部1中条件存储部102、103、104的各个寄存器(r102a、r102b、r102c、r102d、r102e)、(r103a、r103b、r103c、r103d、r103e)、(r104a、r104b、r104c、r104d、r104e)的输出,向条件分支判定部6输出比较运算结果c1、c2、c3。
在本实施例中表示最多可以处理4个分支条件的情况,分支条件比较部5的条件比较部51、52、53、54和条件存储部101、102、103、104成对构成。
在条件分支指令被指令解码器2解码的情况下,执行两个处理。
第1处理如参照图3说明的那样,使用存储在分支条件存储部1中的分支条件的信息,在分支条件比较部5中对各个分支条件同时进行比较运算,将其结果c0~c3输出给条件分支判定部6。
如图4(A)所示,第2处理将比较运算结果c0~c3输入优先编码器6b(Priority encoder),即使在比较运算结果c0~c3中条件同时成立的情况下,也选择其中优先级最高的条件(例如c0)。
图4(A)是表示图1中条件分支判定部6的结构的一例的图。参照图4(A),包括:选择器(解码器)6a,其输入指令解码器2对SETCMP指令进行解码的结果即优先顺序和分支目标地址;分支目标地址存储部6c,其在由选择器6a选择的选择地址中存储分支目标地址;优先编码器6b,其输入来自分支条件比较部5的比较结果c0、c1、c2、c3,在比较运算结果c0~c3中条件同时成立的情况下,选择进行了优先顺序高的分支条件比较的条件比较部;选择器6d,其从存储在分支目标地址存储部6c中的多个分支目标地址中,选择一个与由优先编码器6b选择的分支条件对应的分支目标地址;以及逻辑和电路6e,其输入来自分支条件比较部5的比较结果c0、c1、c2、c3。
逻辑和电路6e在来自分支条件比较部5的比较运算结果c0、c1、c2、c3全部为0时,输出F作为选择器7的选择控制信号,选择器7对程序计数器8设定PC+1(不分支)。
逻辑和电路6e在来自分支条件比较部5的比较运算结果c0、c1、c2、c3中至少1个为1时,输出T作为选择器7的选择控制信号,选择器7对程序计数器8设定来自选择器6d的分支目标地址。
如图4(B)所示,作为选择器6a的选择值,赋予根据条件设定指令提取的“p0”(00b)的值,在相应的存储区域(条件A的位置)中存储分支目标地址的值。即,存储在分支目标地址存储部6c中的分支目标地址按照优先级顺序排序。
关于选择值的00b一侧和11b一侧哪一个的优先顺序较高,根据图4(A)中优先编码器6b的优先方式而不同。
分支目标地址存储部6c向选择器6d输出所存储的分支目标地址,选择器6d根据优先编码器6b的选择结果,选择分支目标地址存储部6c中相应的分支目标地址,并输出给选择器7。
虽然没有特别限制,但在本实施例中,优先编码器6b按照c3→c2→c1→c0的顺序提高优先顺序。即,在c0为1时,在c1~c3中至少一个同时为1的情况下,选择c0,输出00b。在c0为0、c1为1时,在c2~c3中至少一个同时为1的情况下,选择c1,输出01b。在c0、c1为0、c2为1时,在c3同时为1的情况下,选择c2,输出10b。在c0、c1、c2为0、c3为1时,选择c3,输出11b。在比较运算结果c0、c1、c2、c3中一个ci(i为0~3中的一个)为1、其他为0时,输出与ci的I对应的2位码。优先编码器6b控制选择器6d的选择,以选择比较运算结果为1的分支目标地址。
表示优先编码器6b的动作的真值表如下面的表2所示。b0、b1为输出值,表示选择器6d的选择控制信号。
在(b0、b1)=(0,0)、(0,1)、(1,0)、(1,1)时,分别选择存储在图4(B)的分支目标地址存储部6c中的分支目标地址1、2、3、4。
(表2)优先编码器的真值表的示例
 
c3 c2 c1 c0 b1 b0
0 0 0 0 0 0
0 0 0 1 0 0
0 0 1 0 0 1
0 0 1 1 0 0
0 1 0 0 1 0
0 1 0 1 0 0
0 1 1 0 0 1
0 1 1 1 0 0
1 0 0 0 1 1
1 0 0 1 0 0
1 0 1 0 0 1
1 0 1 1 0 0
1 1 0 0 1 0
1 1 0 1 0 0
1 1 1 0 0 1
1 1 1 1 0 0
在本实施例中,通过根据条件设定指令预先进行条件设定,在条件分支的阶段中只需要执行一个条件分支指令所需的步骤数量,所以能够更加快速地进行分支处理,尤其适用于反复执行相同条件的循环处理,从而能够发挥缩短循环运算时间、提高快速性的作用效果。
图6是说明在本实施例中包括多个条件分支的循环处理示例的说明图。利用指令存储器的地址N~N+3这4个指令,由条件设定指令设定分支条件A~D这4个分支条件(分支条件A~D的分支目标地址分别为L1~L4)。该设定处理在循环处理之外仅进行一次即可。
然后,在执行对分支条件A~D产生任何影响的处理后,执行地址X的条件分支指令。此时,如果分支条件A~D中任一个满足条件,则返回相应的分支目标地址,反复一系列处理。
并且,在分支条件A~D中两个以上的条件成立时,选择其中优先顺序最高的分支条件,并返回与其相应的分支地址。例如,在分支目标A~D的分支条件同时成立时,选择与向嵌套级最深的分支目标L4进行的分支对应的分支条件D,并向L4分支。
另外,在全部条件不成立时,不进行分支,退出循环处理,执行下一个指令(地址X+1)。
另外,在本实施例中,在分支条件存储部1的条件存储部101、102、103、104中,也可以执行1次条件设定指令而对一个条件存储部101设定分支条件,在执行条件分支指令时,仅在分支条件比较部51中进行分支条件的比较而进行分支判定。即,作为复合分支条件,不限于如下结构:在执行4次条件设定指令后分别对条件存储部101~104设定分支条件,然后执行条件分支指令并判定4个分支条件,当然也可以是1个分支条件、或者作为复合条件的2个分支条件、3个分支条件、4个分支条件的复合条件。在仅执行一次条件设定指令就进行分支判定的情况下,也可以在条件设定指令中指定优先顺序最高的条件存储部101而设定分支条件,并在分支目标地址存储部6c中存储分支目标地址。并且,分支条件比较部5在仅使用与条件存储部101、102对应的条件比较部51、52时,也可以把不使用的条件比较部53、54的比较运算结果c2、c3的值屏蔽(Mask)为0。图5是表示实现上述功能的结构的图。
对条件分支指令的操作数设定屏蔽位(Mask bit)。
XBRA          屏蔽位                 ……(3)
利用指令解码器2解码条件分支指令,获取屏蔽位(在本实施例中为4位)的各个位与条件比较部51、52、53、54的比较结果的AND运算,把其结果作为c0、c1、c2、c3输入到优先编码器6b。在图5的示例中,条件分支指令把条件比较部51、52的比较运算结果作为c0、c1传递给优先编码器6b,把条件比较部53、54的比较运算结果设定为0并提供给优先编码器6b。
在上述第1实施例中,能够存储在分支条件存储部1中的分支条件数量与条件比较部的数量一一对应,但本发明当然不限于这种结构。也可以只有1个条件比较部51。
(实施例2)
在本发明的第2实施例中,分支条件比较部5具有1个条件比较部51。图7是表示本发明第2实施例中条件分支判定部6的结构的图。
本实施例包括计数器6f(计数值为2位),以取代图4、图5中的优先编码器6b。
计数器6f发挥选择分支目标地址存储部6c中的分支目标地址和分支条件存储部1中的分支条件的作用。即,计数器6f发挥地址计数器的作用,该地址计数器的计数值对应于优先顺序,按照优先顺序选择分支条件存储部1的存储区域(条件存储部)、分支目标地址存储部6c的存储区域。
说明计数器6f的动作。首先,在指令解码器2分析条件分支指令的时间点,从指令解码器2获取复位信号,被复位为最高优先顺序的序号(例如0)。复位信号可以使用在指令解码器2解码条件分支指令的时间点被激活的任意信号。
计数器6f的计数值作为选择控制信号输入到分支条件存储部1的选择器105。另外,在本实施例中,在图2所示的分支条件存储部1的选择器105设置用于选择来自指令解码器2的条件设定指令的优先顺序信息(2位)和计数器6f的输出(2位)的选择器(未图示),在执行条件设定指令时,来自指令解码器2的条件设定指令的优先顺序信息(2位)被提供给选择器105,在执行条件分支指令时,选择计数器6f的输出,并提供给选择器105。
从分支条件存储部1中被选择的条件存储部读出与计数器6f的计数值相应的优先顺序的分支条件,并对条件比较部51的解码器51a、51b、选择器51c、比较器51d设定该分支条件。并且,计数器6f的输出(2位)作为选择控制信号输入到选择器6d。
在条件比较部51中进行与所设定的分支条件相关的比较运算,比较运算结果c0输入到条件分支判定部6的控制电路6g,在比较运算结果c0是表示分支条件成立的值(c0=1)时,控制电路6g输出T(逻辑1)作为选择器7的选择控制信号。由选择器6d选择存储在分支目标地址存储部6c中的分支目标地址中、与计数器6f的计数值对应的存储区域的分支目标地址,并输出给选择器7,对程序计数器8设定该分支目标地址。
在分支条件不成立时(c0=0),控制电路6g向计数器6f输出计数时钟(例如增1),使计数器6f的计数值增加1。计数器6f使计数值增加1,对条件比较部51设定在分支条件存储部1的第2个优先顺序的条件存储部中设定的分支条件。并且,计数器6f的输出(2位)作为选择控制信号输入到选择器6d。在来自与第2个优先顺序的分支条件相关的条件比较部51的比较运算结果c0是表示分支成立的值(c0=1)时,控制电路6g输出T(逻辑1)作为选择器7的选择控制信号。另一方面,在比较运算结果c0=0时,控制电路6g输出计数时钟(例如增1),使计数器6f的计数值增加1。这样,控制电路6g控制计数器6f,从优先顺序高的分支条件开始依次进行条件分支判定,在分支条件成立时,控制为分支到在该时间点选择的分支目标地址。当存储在分支条件存储部1的条件存储部101~104中的4个分支条件全部不成立时,控制电路6g输出不成立(F)作为选择器7的选择控制信号,选择器7向程序计数器8输出将程序计数器的当前值增加1后的值PC+1。
在本实施例中,条件分支指令的执行周期除了优先顺序最高的分支条件成立时以外,跨越多个循环。因此,控制电路6g向程序计数器8提供计数控制信号,在条件比较部51从优先顺序高的分支条件开始依次比较判定有无分支条件成立的期间,把程序计数器8的增加动作设定为禁止(Disable)状态。控制电路6g根据在指令解码器2中解码条件分支指令的时间点输出的复位信号,把提供给程序计数器8的计数控制信号设为禁止状态,在确定有无分支后,把计数控制信号设为允许(Enable)状态。程序计数器8仅在计数控制信号为允许状态时,进行增加动作(PC+1)或分支目标地址的锁存动作。另外,控制电路6g包括:4个锁存电路,分别临时保存由一个条件比较部51依次执行分支条件存储部1的4个条件存储部101~104中存储的分支条件而得到的比较运算结果;逻辑和电路,获取4个锁存电路的输出的逻辑和;以及在逻辑和(OR)电路的输出表示0、且计数器6f不产生溢出时输出用于使计数器6f增加1(或者减小1)的计数时钟的电路,在逻辑和电路的输出表示1的阶段,也可以视为分支成立,提供T(1)作为选择器7的选择控制信号。
在本实施例中,在分支条件存储部1具有条件存储部101~104时,控制电路6g也可以在利用一个条件比较部51依次全部判定完有无对4个条件存储部101~104分别设定的分支条件成立之后,向选择器7输出选择控制信号。或者,控制电路6g也可以在对4个条件存储部101~104分别设定的分支条件中、按照优先顺序选择的任一个分支条件成立的阶段,不利用条件比较部51进行其他分支条件成立的判定,即向选择器7输出选择控制信号(T)。
另外,在本实施例中,与上述实施例相同,也可以对条件分支指令的操作数设置屏蔽位,仅把在分支条件存储部1从条件存储部101~104中选择的条件存储部中存储的分支条件设为有效。该情况下,向控制电路6g内的逻辑和(OR)电路提供由指令解码器2解码的条件分支指令的操作数中屏蔽位的各个位、和控制电路6g中未图示的4个锁存电路的输出的AND运算结果,在逻辑和(OR)电路的输出表示0、且计数器6f中没有产生溢出时,输出用于使计数器6f增加1(或者减小1)的计数时钟,在逻辑和电路的输出表示1的阶段,也可以视为分支成立,提供T(1)作为选择器7的选择控制信号。
在本实施例中,条件分支指令的执行周期数量增加与分支条件数量相应的数量,与上述实施例1相比,虽然执行速度下降,但是条件比较部5和条件分支判定部6的结构变简单,具有能够减小电路规模的优点。
图8是表示本发明的其他实施例的结构的图。作为分支条件存储部1,也可以在增加能够在该分支条件存储部1中存储的分支条件数量时,单纯地增加选择器105能够选择的数量,但是如图8所示,还可以设置其他选择器500,能够以分层结构进行选择。
参照图8,分支条件存储部1具有各条件存储部100、200、300、400和在条件存储部100~400中进行选择以使其有效的选择器500。
条件存储部100具有条件存储部101、102、103、104和在条件存储部100~104中进行选择以使其有效的选择器105。另外,在图8中,为了简化起见,没有图示条件存储部200、300、400的内部结构,但它们的结构均与条件存储部100相同。
在条件存储部101中,r101a表示存储运算用寄存器4的第1寄存器地址的寄存器,r101b表示存储运算用寄存器4的第2寄存器地址的寄存器,r101c表示存储即时数据的寄存器,r101d表示存储R/I标志的寄存器(R=Register:寄存器地址,I=Immediate:即时值的意思),r101e表示存储比较器的运算类别的寄存器。
在本实施例中,例如可以对条件设定指令的操作数指定用于选择条件存储部100~400中的一个的值“p0”~“p3”。并且,也可以对条件分支指令进行相同的指定。
(条件设定指令的示例)
SETCMP      s0,p0,r1,NE,r11,L1     ……(4)
利用“s0”选择条件存储部100,利用“p0”选择条件存储部100中的条件存储部101。同样,利用“s1”、“s2”、“s3”分别选择条件存储部200、300、400。
在本实施例中,条件分支指令如下所示,
XBRA   s0          ……(5)
利用“s0”选择条件存储部100的一系列分支条件。
另外,在图8中,在执行条件分支指令(XBRAs0)时,来自指令解码器2的信号s0提供给选择器500,选择条件存储部100。在条件分支指令为XBRAs1时,选择器500选择条件存储部200。同样,利用“s2”、“s3”分别选择条件存储部300、400。
根据这种结构,能够在条件存储部101~104中存储多个所构成的一系列分支条件,尤其在适用于多重循环处理时,不需再次设定一系列分支条件即可处理,所以能够实现条件分支处理的快速化。
(实施例3)
图9是说明本发明的其他实施例的图。在上述第1实施例中,条件设定指令的指令长度控制为1个字(参照图6)。
在如图8所示上述实施例的条件设定指令那样增加指定的分支条件的信息时,指令长度变长,如图9(A)所示,有时不能控制为指令存储器的1个字。在图9(A)所示的示例中,利用操作码和分支条件的一部分构成1个字。
在本实施例中,如图9(B)所示,也可以使条件设定指令的指令长度跨越2个字以上。该情况下,在执行条件设定指令时,与2个字以上的指令长度对应地例如需要2步骤以上。但是,在本实施例中,条件分支指令的执行周期仍为1步骤。因此,分支处理所需的执行时间不变,可以在不降低执行速度的情况下进行处理。这尤其在反复进行相同条件的循环处理时,在不降低条件分支的执行速度方面讲非常有效。
利用专利文献1的结构假设相同的情况,条件判别指令的指令长度为2个字,如果在执行指令时需要2步骤,则处理4个分支条件需要2×4=8步骤,另外再加上多分支指令的1步骤,合计9步骤量需要在每次反复循环处理时执行。
(2×4+1)×循环次数         ……(6)
与此相对,在本实施例中,在循环处理之外进行条件设定指令,所以即使条件设定指令的执行为2步骤,循环处理所需的分支处理的步骤数仅为条件分支指令的量。
2×4+1×循环次数           ……(7)
并且,在指令存储器的地址空间扩大时,利用条件设定指令指定的分支目标地址的位数增多,该情况下指令长度也变长,有时不能控制为1个字。
如专利文献2所述,在利用条件分支指令指定多个分支目标地址时,条件分支指令的指令长度变得非常长,指令的执行步骤数量也相应增加。
例如,在由于包括4个分支目标地址而条件分支指令的指令长度达4个字时,为了执行1次条件分支指令,需要4步骤,所以循环处理所需的分支处理的步骤数量如下所述。
4×循环次数              ……(8)
相对于此,在本实施例中,采取分支目标地址不包含于条件分支指令中的结构,所以指令长度可以仍然是1个字,处理时间仅需要1步骤。因此所需步骤数量如下。
1×循环次数              ……(9)
(实施例4)
下面说明本发明的其他实施例。图5中的优先编码器6b也可以构成为与表2所示的优先顺序相反。
根据本实施例,在条件设定指令中,可以进行优先顺序的指定,所以优先编码器6b的逻辑也可以与表2所示的优先顺序相反。与表2所示的优先顺序相反时的真值表如下所示。
(表3)优先编码器的真值表的示例
 
C3 c2 c1 c0 b1 b0
0 0 0 0 0 0
0 0 0 1 0 0
0 0 1 0 0 1
0 0 1 1 0 1
0 1 0 0 1 0
0 1 0 1 1 0
0 1 1 0 1 0
0 1 1 1 1 0
1 0 0 0 1 1
1 0 0 1 1 1
1 0 1 0 1 1
1 0 1 1 1 1
1 1 0 0 1 1
1 1 0 1 1 1
1 1 1 0 1 1
1 1 1 1 1 1
图4或图5中的优先编码器6b按照c3→c2→c1→c0的顺序降低优先顺序(按照c0→c1→c2→c3的顺序提高优先顺序)。即,在c3为1时,在c2~c0中至少一个同时为1的情况下,选择c3,输出11b。在c3为0、c2为1时,在c1~c0中至少一个同时为1的情况下,选择c2,输出10b。在c3、c2为0、c1为1时,在c0同时为1的情况下,选择c1,输出01b。在c3、c2、c1为0、c0为1时,选择c0,输出00b。在比较运算结果c0、c1、c2、c3中一个ci(i为0~3中的一个)为1、其他为0时,输出与ci的i对应的2位码。优先编码器6b控制选择器6d的选择,以选择比较运算结果为1的分支目标地址。
在本实施例中,可以准备正反两种优先顺序的优先编码器,并根据条件分支指令的指定切换或者选择优先编码器。该情况下,用于正反切换的指定仅需1位即可。对条件分支指令的操作码或操作数增加用于指定正反的位(0为正序、1为反序)即可。
条件分支处理一定通过两个指令的组合来进行,即在比较或运算指令之后,将其运算结果的标志保存在标志寄存器中,在下一个分支指令中评价该标志并执行分支处理。与此相对,通过利用条件设定指令预先进行分支条件的设定,在进行条件分支处理的阶段仅需要1个条件分支指令的处理时间,所以能够更加快速地进行分支处理。尤其通过适用于反复执行相同条件的循环处理,能够提高快速性。
设置可以存储多个分支条件的信息和分支目标地址的条件设定存储部和分支目标地址存储部,设置条件比较部,其预先利用条件设定指令赋予优先顺序并存储该信息,从条件设定存储部读出一系列分支条件而进行比较运算,还设置条件分支判定部,其根据条件比较部的输出结果,可以选择与成立的分支条件相应的分支目标地址,从而能够利用1个条件分支指令执行该处理。另外,条件分支判定部即使在多个分支条件同时成立时,也选择与优先顺序最高的分支条件相应的分支地址。
通过具有条件设定存储部,能够存储多个分支条件,所以能够适用于更加复杂条件的组合及多重循环处理,能够提高快速性。
并且,即使由于分支条件和分支目标地址的信息增多而导致的指令长度增大,由于利用预先执行的条件设定指令设定上述信息,所以对条件分支指令的指令长度也几乎没有影响。因此,在不使用本发明时,由于指令长度的增大而产生执行速度下降的情况,但是根据本发明具有以下效果:不会增加分支处理时的执行步骤数量,尤其循环处理时的条件分支指令的执行速度不会下降,能够实现快速处理。
以下,对比说明上述本实施例与上述相关技术的作用效果的差异。
在专利文献1中,在执行条件分支指令之前,分支条件判定的指令需要执行分支条件所需的次数,所以即使是反复执行相同分支条件的循环处理,也需要执行其一系列的分支条件判定的指令。根据本实施例,只要没有再次进行设定变更,则一直保存曾设定一次的分支条件,所以不需要再次执行条件设定指令,仅需执行条件分支指令即可处理,分支处理更加快速。
专利文献2与专利文献1相同,根据分支指令之前的运算结果判定分支,而且只有之前的一个指令的运算结果提供到分支判定,所以与专利文献1和本发明相比,只能对应非常简单的分支条件。但是,由于仅需要相当于一个条件分支指令的步骤,所以分支处理的速度与本发明的第1实施例(图1)相同。
另外,专利文献2的第2实施例在分支目标地址的值增大时,包含多个分支目标地址,所以条件分支指令的指令长度变长,并跨越指令存储器的2个字。该情况下,产生将第2个字的值读入到指令解码器的步骤,所以一般情况下指令的执行周期数相应增大。与此相对,在本发明中,如在上述实施例中说明的那样,分支目标地址不包含于条件分支指令中,所以不会产生上述问题。另外,在本发明中,在分支目标地址的值增大时,仅条件设定指令的指令长度变长,分支处理本身不会变慢。
在专利文献3记载的数字信号处理器中,把运算指令的结果(在权利要求中记载为选择算术运算器、逻辑移位器、乘法器中任一个)作为比较对象来进行条件判定,只能设定简单的分支条件。
另外,通过进行引用将上述专利文献1~4各自公开的内容写入本说明书中。在本发明的全部公开内容(包括权利要求书)的框架范围内,可以进一步根据其基本技术思想变更和调整实施方式及实施例。并且,可以在本发明权利要求书的框架范围内实现各种公开要素的多种组合及选择。即,本发明当然包括本领域技术人员根据包括权利要求书在内的全部公开内容及技术思想可以得到的各种变形及修改。

Claims (25)

1.一种处理器装置,其特征在于,
指定分支条件和所述分支条件的优先顺序的条件设定指令包含于指令集中,
该处理器装置包括分支条件存储部,该分支条件存储部具有用于存储利用所述条件设定指令设定的分支条件的多个存储区域,
在由指令解码器解码的指令是所述条件设定指令时,所述分支条件存储部将利用所述条件设定指令指定的分支条件存储在与所述优先顺序对应的存储区域中。
2.根据权利要求1所述的处理器装置,其特征在于,
包括分支目标地址存储部,能够存储在分支条件成立时分支的多个分支目标地址,
利用所述条件设定指令除了指定所述分支条件和所述分支条件的优先顺序以外,还指定在利用所述条件设定指令指定的分支条件成立时的分支目标地址,
在由所述指令解码器解码的指令是所述条件设定指令时,
在所述分支目标地址存储部中,与利用所述条件设定指令指定的优先顺序相关联地存储利用所述条件设定指令指定的分支目标地址。
3.根据权利要求1或2所述的处理器装置,其特征在于,
所述指令集包括条件分支指令,用于判定分支条件且在分支条件成立时向分支目标地址分支,
所述处理器装置包括:
分支条件比较部,其具有一个或多个条件比较部,在执行一个或多个所述条件设定指令,而在所述分支条件存储部设定有分支条件而且所述分支目标地址存储部中存储有分支目标地址的状态下,在执行所述条件分支指令时,对存储在所述分支条件存储部中的一个或多个分支条件分别独立地进行判定;和
条件分支判定部,在多个所述条件比较部的比较运算结果中同时成立的分支条件有多个时,按照预先设定的优先方式,从所述分支目标地址存储部中选择与在所述分支条件存储部的预定存储区域中存储的分支条件相应的分支目标地址,
向由所述条件分支判定部选择的所述分支目标地址进行分支。
4.根据权利要求3所述的处理器装置,其特征在于,
所述条件分支判定部从所述分支目标地址存储部中,选择同时成立的多个分支条件中、与在所述分支条件存储部的优先顺序最高的存储区域中存储的分支条件相应的分支目标地址,并向所述分支地址进行分支。
5.根据权利要求3或4所述的处理器装置,其特征在于,
在一个分支条件成立时,所述条件分支判定部从所述分支目标地址存储部中选择与所述分支条件相应的分支目标地址,并向所述分支地址进行分支。
6.根据权利要求3或4所述的处理器装置,其特征在于,
在分支条件一个也不成立时,所述条件分支判定部输出分支条件不成立的信息,不进行分支,使程序计数器增加1。
7.根据权利要求1~6中任一项所述的处理器装置,其特征在于,
存储在所述分支条件存储部的各个存储区域中的分支条件包括:
比较对象即两个运算用寄存器的第1和第2寄存器地址;
即时数据;
标志,存储运算用寄存器的数据之间的比较运算或者运算用寄存器的数据和即时数据的比较运算的类别;和
比较器的运算类别。
8.根据权利要求1~7中任一项所述的处理器装置,其特征在于,
所述条件设定指令在操作数中包括:
发挥优先顺序信息的作用、且指定所述分支条件存储部中分支条件的存储区域的信息;
比较运算的类别;
比较运算对象即运算用寄存器的第1寄存器地址和所述运算用寄存器的第2寄存器地址或即时数据;和
分支目标地址。
9.根据权利要求1~8中任一项所述的处理器装置,其特征在于,
所述分支条件存储部具有多个条件存储部作为所述多个存储区域,
还包括选择器,根据由所述指令解码器解码的所述条件设定指令所指定的分支条件的优先顺序信息,选择用于存储所述条件设定指令的分支条件的条件存储部。
10.根据权利要求1~9中任一项所述的处理器装置,其特征在于,
包括多个所述分支条件存储部,还包括选择所述多个分支条件存储部中的一个的其他选择器。
11.根据权利要求10所述的处理器装置,其特征在于,
所述条件设定指令在操作数中包括:
指定所述多个分支条件存储部中的一个的信息;
发挥优先顺序信息的作用、且指定所述分支条件存储部中分支条件的存储区域的信息;
比较运算的类别;
比较运算对象即运算用寄存器的第1寄存器地址和所述运算用寄存器的第2寄存器地址或即时数据;和
分支目标地址。
12.根据权利要求11所述的处理器装置,其特征在于,
所述条件分支指令在操作数中包括指定所述多个分支条件存储部中的一个的信息。
13.根据权利要求3~6中任一项所述的处理器装置,其特征在于,
所述条件分支指令在操作数中包括屏蔽位,指定是否屏蔽所述多个条件比较部的比较运算结果。
14.根据权利要求1~13中任一项所述的处理器装置,其特征在
于,
所述分支条件存储部具有多个条件存储部,该条件存储部把包括以下内容的条件存储为一个集:
比较对象即两个运算用寄存器的第1和第2寄存器地址;
即时数据;
标志,存储运算用寄存器的数据之间的比较运算或者运算用寄存器的数据和即时数据的比较运算的类别;和
比较器的运算类别,
所述多个条件存储部形成存储多个分支条件的所述多个存储区域,
所述分支条件存储部包括选择所述多个条件存储部的选择器。
15.根据权利要求14所述的处理器装置,其特征在于,
所述分支条件比较部与所述多个条件存储部分别对应地具有条件比较部的组,该条件比较部包括:
第1和第2解码器,分别解码存储在对应的所述条件存储部中的所述第1和第2寄存器地址,分别向所述运算用寄存器输出第1、第2寄存器地址,并且分别保存从所述运算用寄存器读出的数据;
第3选择器,其接收存储在所述条件存储部中的即时数据和所述第2解码器的值,并根据所述标志的输出选择所述即时数据和所述第2解码器的值中的一个;和
比较器,接收所述第3选择器的输出和所述第1解码器的输出作为输入,进行与存储在所述条件存储部中的运算类别对应的运算。
16.根据权利要求1~15中任一项所述的处理器装置,其特征在于,
在所述分支条件存储部中保存通过执行所述条件设定指令而存储的分支条件,直到在执行所述条件设定指令之后执行其他条件设定指令而根据所述其他条件设定指令改写为其他条件。
17.根据权利要求1~16中任一项所述的处理器装置,其特征在于,
在所述分支目标地址存储部中保存通过执行所述条件设定指令而存储的分支目标地址,直到在执行所述条件设定指令之后执行其他条件设定指令而根据所述其他条件设定指令改写为其他分支目标地址。
18.根据权利要求3所述的处理器装置,其特征在于,
所述条件分支判定部包括:
第2选择器,其按照利用由所述指令解码器解码的所述条件设定指令指定的优先顺序,在所述分支目标地址存储部的相应存储区域中存储利用所述条件设定指令指定的分支目标地址;
优先编码器,其接收来自多个所述条件比较部的比较运算结果,在多个比较运算结果表示分支条件成立时,输出按照预先设定的优先方式选择一个分支目标地址的信号,在一个分支条件成立时,输出选择与该分支条件对应的分支目标地址的信号;
第3选择器,选择在所述分支目标地址存储部中存储的多个分支目标地址中、由优先编码器选择的分支目标地址;和
逻辑电路,在来自多个所述条件比较部的比较运算结果为全部分支条件不成立时,输出第1值,对来自多个所述条件比较部的比较运算结果的其他组合,输出第2值,
所述处理器装置包括第4选择器,接收程序计数器的输出和所述第3选择器的输出,根据所述逻辑电路的输出是第1值还是第2值,对程序计数器设定所述程序计数器的输出、所述第3选择器的输出。
19.根据权利要求18所述的处理器装置,其特征在于,
将利用所述条件分支指令指定的屏蔽位与来自多个所述条件比较部的比较运算结果的逻辑运算结果提供给所述优先编码器。
20.根据权利要求3所述的处理器装置,其特征在于,
所述条件分支判定部包括:
第2选择器,其按照利用由所述指令解码器解码的所述条件设定指令指定分支条件的存储区域的信息、分支目标地址,在分支目标地址存储部的相应存储区域中存储分支目标地址;和
计数器,其根据输出计数值选择所述分支目标地址存储部内的分支目标地址和所述分支条件存储部内的分支条件,
所述条件分支判定部执行根据所述计数器的计数输出而选择的分支条件的条件比较,
所述条件分支判定部包括第3选择器,选择在所述分支目标地址存储部中存储的多个分支目标地址中、由所述计数器选择的分支目标地址,
所述处理器装置包括第4选择器,接收程序计数器的输出和所述第3选择器的输出,根据所述条件比较部的输出是分支条件不成立还是成立,对程序计数器设定所述程序计数器的输出、所述第3选择器的输出。
21.根据权利要求20所述的处理器装置,其特征在于,
所述分支条件比较部具有一个条件比较部,该一个条件比较部在执行一个或多个所述条件设定指令,而在所述分支条件存储部设定有分支条件而且所述分支目标地址存储部中存储有分支目标地址的状态下,在执行所述条件分支指令时,对存储在所述分支条件存储部中的一个或多个分支条件分别独立地进行判定,
在由所述指令解码器解析了条件分支指令时,所述计数器从所述指令解码器获取复位信号,并复位为优先顺序最高的序号,
从所述分支条件存储部读出与所述计数器的计数值相应的优先顺序的分支条件,并存储在所述条件比较部中,
从优先顺序高的分支条件开始依次进行条件分支判定,在分支条件成立时,向在该时间点选择的分支目标地址进行分支。
22.一种处理器装置,其特征在于,
指令集包括:
条件设定指令,用于与所指定的优先顺序对应地设定分支条件和所述分支条件成立时的分支目标地址;和
条件分支指令,用于判定根据所述条件设定指令设定的一个或多个分支条件的条件是否成立,在分支条件成立时向分支目标地址进行分支,
所述处理器装置包括:
分支条件存储部,其与所述条件设定指令的优先顺序对应地分别存储利用一个或多个所述条件设定指令分别指定的一个或多个分支条件;和
分支目标地址存储部,其与所述条件设定指令的优先顺序对应地分别存储利用一个或多个所述条件设定指令指定的一个或多个分支目标地址,
通过执行一个或多个所述条件设定指令,而在所述分支条件存储部设定有一个或多个分支条件而且所述分支目标地址存储部中存储有一个或多个分支目标地址的状态下,在执行一个或多个所述条件设定指令之后,在执行所述条件分支指令的期间,能够执行一个或多个其他指令,
还包括以下单元:在执行所述条件分支指令时,对已经存储在所述分支条件存储部中的一个或多个分支条件分别独立地进行判定,在同时成立的分支条件有多个时,按照预先设定的优先方式,从所述分支目标地址存储部中选择与在所述分支条件存储部的预定存储区域中存储的分支条件相应的分支目标地址。
23.一种处理器的条件分支处理方法,其特征在于,
在进行了指令解码后的指令是条件设定指令时,在存储多个分支条件的分支条件存储部中的与利用所述条件设定指令指定的优先顺序对应的存储区域中,存储利用所述条件设定指令指定的分支条件。
24.根据权利要求23所述的处理器的条件分支处理方法,其特征在于,
利用所述条件设定指令除了指定所述分支条件和所述分支条件的优先顺序以外,还指定在利用所述条件设定指令指定的分支条件成立时的分支目标地址,
在所述进行了指令解码后的指令是条件设定指令时,与所述分支条件的优先顺序对应地存储利用所述条件设定指令指定的分支目标地址。
25.根据权利要求23或24所述的处理器的条件分支处理方法,其特征在于,
在执行一个或多个所述条件设定指令并存储分支条件和分支目标地址后,
在执行条件分支指令时,对所存储的多个分支条件分别独立地进行判定,
在同时成立的分支条件有多个时,向与按照预先设定的优先方式选择的分支条件相应的分支目标地址进行分支。
CNA2009100026161A 2008-01-09 2009-01-09 处理器装置及条件分支处理方法 Pending CN101482812A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008002344 2008-01-09
JP2008002344A JP2009163624A (ja) 2008-01-09 2008-01-09 プロセッサ装置及び条件分岐処理方法

Publications (1)

Publication Number Publication Date
CN101482812A true CN101482812A (zh) 2009-07-15

Family

ID=40845526

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2009100026161A Pending CN101482812A (zh) 2008-01-09 2009-01-09 处理器装置及条件分支处理方法

Country Status (5)

Country Link
US (1) US20090177874A1 (zh)
JP (1) JP2009163624A (zh)
KR (1) KR20090076848A (zh)
CN (1) CN101482812A (zh)
TW (1) TW200937283A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011079824A1 (en) * 2009-12-31 2011-07-07 Shanghai Xin Hao Micro Electronics Co., Ltd. Branching processing method and system
CN103282876A (zh) * 2010-10-12 2013-09-04 Arm有限公司 数据元素的条件选择
WO2014090085A1 (en) * 2012-12-11 2014-06-19 International Business Machines Corporation Branch-free condition evaluation
CN104699454A (zh) * 2013-12-06 2015-06-10 联想(北京)有限公司 一种信息处理方法及电子设备
CN104699454B (zh) * 2013-12-06 2018-08-31 联想(北京)有限公司 一种信息处理方法及电子设备
CN111258643A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008305185A (ja) * 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
US8429635B2 (en) * 2009-10-28 2013-04-23 International Buisness Machines Corporation Controlling compiler optimizations
US9652242B2 (en) * 2012-05-02 2017-05-16 Apple Inc. Apparatus for predicate calculation in processor instruction set
US9747331B2 (en) * 2014-10-06 2017-08-29 International Business Machines Corporation Limiting scans of loosely ordered and/or grouped relations in a database
US10713048B2 (en) 2017-01-19 2020-07-14 International Business Machines Corporation Conditional branch to an indirectly specified location
TWI709046B (zh) * 2019-09-09 2020-11-01 英業達股份有限公司 多地址響應的複雜可程式邏輯裝置及運作方法
JP7410085B2 (ja) * 2021-06-11 2024-01-09 矢崎総業株式会社 通信システム及び上位制御装置
JP7421850B1 (ja) 2022-10-21 2024-01-25 たけおかラボ株式会社 間接アドレス指定方式の条件ジャンプ命令を実行するプロセッサ、プログラム及び方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260138B1 (en) * 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
CN1303044A (zh) * 2000-01-06 2001-07-11 国际商业机器公司 使用基本块高速缓存的微处理器
JP2004118669A (ja) * 2002-09-27 2004-04-15 Sony Corp 制御装置及び制御方法並びに制御ソフトウェア

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260138B1 (en) * 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
CN1303044A (zh) * 2000-01-06 2001-07-11 国际商业机器公司 使用基本块高速缓存的微处理器
JP2004118669A (ja) * 2002-09-27 2004-04-15 Sony Corp 制御装置及び制御方法並びに制御ソフトウェア

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011079824A1 (en) * 2009-12-31 2011-07-07 Shanghai Xin Hao Micro Electronics Co., Ltd. Branching processing method and system
CN103282876A (zh) * 2010-10-12 2013-09-04 Arm有限公司 数据元素的条件选择
CN103282876B (zh) * 2010-10-12 2016-02-03 Arm有限公司 数据元素的条件选择
US9753724B2 (en) 2010-10-12 2017-09-05 Arm Limited Conditional selection of data elements
US9983872B2 (en) 2010-10-12 2018-05-29 Arm Limited Conditional selection of data elements
WO2014090085A1 (en) * 2012-12-11 2014-06-19 International Business Machines Corporation Branch-free condition evaluation
US9411589B2 (en) 2012-12-11 2016-08-09 International Business Machines Corporation Branch-free condition evaluation
US9424037B2 (en) 2012-12-11 2016-08-23 International Business Machines Corporation Instructions and functions for evaluating program defined conditions
CN104699454A (zh) * 2013-12-06 2015-06-10 联想(北京)有限公司 一种信息处理方法及电子设备
CN104699454B (zh) * 2013-12-06 2018-08-31 联想(北京)有限公司 一种信息处理方法及电子设备
CN111258643A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质

Also Published As

Publication number Publication date
KR20090076848A (ko) 2009-07-13
US20090177874A1 (en) 2009-07-09
JP2009163624A (ja) 2009-07-23
TW200937283A (en) 2009-09-01

Similar Documents

Publication Publication Date Title
CN101482812A (zh) 处理器装置及条件分支处理方法
US9697004B2 (en) Very-long instruction word (VLIW) processor and compiler for executing instructions in parallel
US10001997B2 (en) Prioritizing instructions based on type
CN101373427B (zh) 程序执行控制装置
CN100392596C (zh) 编译装置及编译方法
US10162635B2 (en) Confidence-driven selective predication of processor instructions
US20070234019A1 (en) Processor apparatus and complex condition processing method
US6035122A (en) Compiler for converting source program into object program having instruction with commit condition
EP0206276B1 (en) Method and computer device for handling data conditionally
US5274777A (en) Digital data processor executing a conditional instruction within a single machine cycle
CN101320324A (zh) 处理机装置及复合条件处理方法
JP3725547B2 (ja) 限定ラン分岐予測
CN101361039A (zh) 处理器
EP0497579A2 (en) Circuit for executing conditional branch instructions in a pipelined processor
US7010670B2 (en) Data processing device that controls an overriding of a subsequent instruction in accordance with a conditional execution status updated by a sequencer
US10180841B2 (en) Early termination of segment monitoring in run-time code parallelization
US20130007424A1 (en) Cascading indirect branch instructions
US20080034188A1 (en) Information processing apparatus and method for accelerating information processing
Najjar et al. Pipeline Hazards Resolution for a New Programmable Instruction Set RISC Processor
US20040162965A1 (en) Information processing unit
Sinha et al. 8 Bit Single Cycle Processor
CN103970510A (zh) 用于对流水线中的块进行调度的编译方法和设备
JPS6116334A (ja) デ−タ処理装置
KR100246327B1 (ko) 중앙 처리 장치의 데이터 액세스 회로
KR20010002479A (ko) 고속 명령 수행을 위한 명령어 프리디코더

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20090715