采用小规模硬件作高命中率 分支预测的信息处理装置 本发明是关于微处理器等的信息处理装置,特别是关于分支预测的完善技术。
在采用流水线结构的微处理器等的信息处理装置中,为防止因执行分支命令而在控制流程分支时产生的流水线扰乱的措施之一是作分支预测。进行高命令中率的分支预测时,必须预测每一分支命令中分支是否成立。作为此时采用的方法,是考虑设置汇集对应于程序中各分支命令的分支预测信息的分支预测表。
但要在信息处理装置内部保持分支预测表使得硬件增加。
为此提出了不在信息处理装置内部固定地保持分支预测信息,而依靠分支命令自身设置,将信息处理装置中必须的硬件限制到最小限度的分支预测措施(例如日本专利申请公开昭63-75934中所公开的信息处理装置)。
图1表示上述历来的信息处理装置用的分支命令的格式。
在此历来的信息处理装置中,分支命令40中具有1位的分支预测信息40b,在作分支命令40解码时,按照此分枝预测信息40b由存贮器提前取得下一应执行的命令。而后在分支命令40执行结束时,将该执行结果与分支预测信息40b对照,在预测失败时即更新存贮器中所存贮地该分支命令40的分枝预测信息40b。
由此来避免在信息处理装置内部设置分枝预测表。
但是,上述历来的信息处理装置,由于抑制信息处理装置中所需的硬件规模、而分枝预测的命中率很低,所以存在有频繁地发生伴随分支预测失败而来的损失的问题。
亦即,上述历来的信息处理装置,由于根据表示紧接前面的执行结果的1位的分支预测信息40b提前取出下一命令,例如在分支的成立与不成立相互重复时全部预测都不符合。因此,每次执行这样的分支命令时就必须使提前取的命令无效化,而有碍于信息处理装置执行的高速化。
为此,本发明就是针对上述的问题而研制的,目的在于提供能以小规模硬件实现,且能进行高命中率的分支预测的信息处理装置。
本发明的第二目的是提供记录含有为以软件实现上述信息处理装置的程序和用于上述信息处理装置的特定的分支命令的命令群的记录媒体。
为达到上述目的,有关本发明的信息处理装置是顺序执行命令的信息处理装置,其特征在于设置有:预先存贮包含具有预测分支是否成立的分支预测信息和表示有关过去的分支结果的信息的分支历史信息的分支命令的命令群的存贮手段;由前述存贮手段读出下一应执行命令的命令读取手段;解码所读出命令是否为前述分支命令的命令解码手段;在解码前述命令为分支命令时控制前述命令读取手段使之根据该分支命令的分支预测信息读出下一应执行命令的命令读取控制手段;执行已解码的前述分支命令的执行手段;根据执行前述分支命令时的分支结果和该分支命令中所含的分支历史信息生成新的分支预测信息的分支预测信息生成手段;根据前述分支命令执行时的分支结果和该分支命令中所含分支历史信息生成新的分支历史信息的分枝历史信息生成手段;和将前述存贮手段中存贮的前述分支命令的分支预测信息和分支历史信息更新成为由前述分支预测信息生成手段生成的分支预测信息和由前述分支历史信息生成手段生成的分支历史信息的分支命令更新手段。
就是说,在关于本发明的信息处理装置中,分支命令中不仅有分支预测信息还包含有表示过去的分支结果的分支历史信息。而在执行了分支命令时,不仅考虑其执行结果还要考虑该分支命令中所含的分支历史信息来更新该分支命令的分支预测信息和分支历史信息。
因而,由于不仅根据紧接前面的一次的执行结果还根据更前面的执行结果来进行提前读取命令,所以能实现较历来高的命中率的分支预测。
这些分支预测信息和分支历史信息不是作为分支预测表固定地被设置于信息处理装置内部而是设置在存贮手段所存贮的分支命令本身中,所以用于实现此分支预测的信息处理装置中所需的硬件能以较小规模完成。
对此,前述分支历史信息也可以是针对具有其分支历史信息的分支命令的关于过去的多个分支结果的要点。
由此,分支历史信息就能以很少的位数来反映更过去的分支结果,同时防止因紧接前面的例外的分支结果的影响而引起的分支预测的紊乱(命中率的降低),而进行还考虑到更过去的分支结果的全面的分析预测。
例如,前述分析历吏信息,对前述分支命令表示过去分支成立的频率为“极多”、“多”、“少”、“极少”中的一个,前述分支历史信息生成手段在前述分支命令中所含的分支历史信息表示“极少”、“少”、“多”中的一个且前述分支结果“成立”时生成分别表示“少”、“多”、“极多”的新的分支历史信息;而在前述分支命令中所含的分支历史信息表示“极多”、“多”、“少”中之一且前述分支结果“不成立”时生成分别表示“多”、“少”、“极少”的新的分支历史信息。
由此,例如仅利用2位的分支历史信息就能表示有关3次以上的分支结果的统计要点。
前且,前述预测信息更新手段仅在前述分支历史信息表示“多”且前述分支结果为“成立”时生成表示“成立”的新的分支预测信息;仅在前述分支历史信息表示“少”且前述分支结果为“不成立”时生成表示“不成立”的新的分支于测信息。
据此,由于在分支结果的历史与分支预测信息的关系上进行具有滞后的分支预测,比起仅基于1位的分支预测信息的分支预测的情况,不仅使预测的命中率提高,而且还防止因短周期内反复分支的成立与不成立所引起的分枝预测的混乱。
前述分支命令更新手段生成包含有由前述分支预测信息生成手段生成的分支预测信息和由前述分支历史信息生成手段生成的分支历史信息的新的分支命令,将该分支命令写到所述存贮手段的适当地点上,作为前述的适当地点可以是存贮构成生成前述新的分支命令的起源的分支命令的位置。
由此,分支命令的分支预测信息和分支历史信息连同该分支命令(与除这些分支预测信息和分支历史信息之外的分支命令的其他位同时)被加以更新,所以与由存贮手段读出作为对象的转移命令加以变更后再写回的步骤相比,能以较短的步骤更新分支预测信息和分支历史信息。
前述存贮手段包含有存贮前述命令群的主存贮单元、存贮前述主存贮单元所存放的命令群的一部分的复制件的高速缓冲存贮单元、和在前述高速缓冲存贮单元的内容被改写时使前述主存贮单的内容也反映该变更的高速缓冲控制手段,前述命令读取手段从前述高速缓冲存贮单元读出前述命令,前述分支命令更新手段能更新前述高速缓冲存贮单元所存贮的分支命令的分支预测信息和分支历史信息。
由此,关于本发明的信息处理装置由于只要更新能高速访问的超高速缓冲存贮器上的分枝命令即可完成,所以执行速度加快。
而前述预测信息更新手段能仅在前述历史信息表示“极多”且前述分支结果为“成立”时生成表示“成立”的新的分支预测信息,仅在前述分支历史信息表示“极少”且前述分支结果为“不成立”时生成表示“不成立”的新的分支预测信息。
由此,因为上述滞后的程度成为较强,所以能实现适用于希望有力地抑制分支预测紊乱的系统程序的信息处理装置。
而前述分支历史信息对前述分支命令表示过去分支成立的频率为“多”或“少”;
前述分支历吏信息生成手段仅在前述分支命令所含的分支历史信息表示“少”且前述分支结果为“成立”时才生成表示“多”的新的分支历史信息,而仅在前述分支命令所含的分支历史信息表示“多”而前述分支结果为“不成立”时生成表示“少”的新的分支历史信息;
前述预测信息更新手段仅在前述分支历史信息表示“多”而前述分支结果为“成立”时生成表示“成立”的新分支预测信息,仅在前述分支历史信息表示“少”而前述分支结果为“不成立”时生成表示“不成立”的新分支预测信息。
由此,因为上述滞后的程度成为较弱,所以可能成为对程序的执行结果敏感的分支预测、即动态的分支预测,同时因为分支历史信息以很少的位数完成,而使定义命令组时的自由度增加。
而前述分支历史信息对具有该分支历史信息的分支命令能表示包括过去的分支的分支结果。
例如,前述分支历史信息为表示紧接前面的和先前二次的分支结果的2位,前述分支历史信息生成手段能利用执行前述分支命令时的分支结果生成新的分支历史信息。
由此,因为不是过去的多个分支结果的要点而是根据最新的各个的连续的分支结果进行分支预测,所以能实现进行也考虑到例外的分支结果的周密的分支预测的信息处理装置。
而且本发明不仅由硬件实现,也可由软件实现。
即就是,作为记录有模拟进行分枝预测提前读出命令的微处器操作的程序的记录媒体的特点在于,前述程序在计算机中执行由预先存贮包含具有预测分支是否成立的分支预测信息和表示关于过去的分支结果的信息的分支历史信息的分支命令的命令群的存贮手段读出下一应执行命令的命令读取步骤,对读出的命令解码确定是否为前述分支命令的命令解码步聚,在经解码为前述命令是分支命令时根据该分支命令的分支预测信息读出下一应执行命令的分支预测步聚,执行被解码的前述分支命令的执行步骤,根据执行前述分支命令时的分支结果和该分支命令中所含的分支历史信息生成新的分支预测信息的分支预测信息生成步骤,根据执行前述分支命令时的分支结果和该分支命令中所含的分支历史信息生成新的分支历史信息的分支历史信息生成步骤,和将前述存贮手段中存放的前述分支命令的分支预测信息和分支历史信息更新成由前述分支预测信息生成步骤生成的分支预测信息和由前述分支历史信息生成步骤生成的分支历史信息的分支命令更新步骤。
而作为记录由计算机执行的命令群的记录媒体的特点还在于,前述命令群中包含具有预测分支是否成立的分支预测信息和表示有关过去的分支结果的信息的分支历史信息的分支命令,前述分支预测信息为根据具有该分支预测信息的分支命令被前述计算机作最后执行时的分支结果和分支历史信息所生成的值,前述分支历史信息为根据具有该分支历史信息的分支命令被前述计算机最后执行时的分支结果和分支历史信息所生成的值,是对于该分支命令的有关过去的多个分支结果的要点。
作为记录计算机执行的命令群的记录媒体的特点还可能是,前述命令群中包含具有预测分支是否成立的分支预测信息和表示关于过去的分支结果的信息的分支历史信息的分支命令,前述分支预测信息为根据具有该分支预测信息的分支命令被前述计算机最后执行时的分支结果和分支历史信息生成的值,前述分支历史信息为根据具有该分支历史信息的分支命令被前述计算机最后执行时的分支结果和分支历史信息生成的值,表示对该分支命令的每个过去分支的分支结果。
由此而达到上述第二目的。
如以上所述,按照本发明能以小规模的硬件或软件来实现、并能使高性能微处理器和虚拟机等进行高命中率的分支预测,它们的实用效果很高。
由下面结合附图描述本发明具体实施方案的说明将更清楚理解本发明的这些以及其他的目的、优点和特征。所列附图为:
图1表示历来的分支命令格式;
图2为表示关于本发明的信息处理装置的结构的方框图;
图3表示有关本发明的分支命令格式;
图4为表明该信息处理装置的分支历史信息生成器16和分支预测信息生成器17的输入/输出关系的真值表;
图5为该分支历史信息生成器16的详细电路图;
图6为该分支预测信息生成器17的详细电路图;
图7为表示该分支命令的分支历史信息和分支预测信息的更新算法的状态跃迁图;
图8为表示该信息处理装置的分支命令更新器18的详细结构的方框图;
图9表示该分支命令的分支预测信息、分支历史信息和分支结果的关系;
图10为该信息处理装置中的流水线处理的流程图;
图11为表明关于该信息处理装置的变型例1的分支命令的分支历史信息和分支预测信息的更新算法的状态跃迁图;
图12为表明关于该信息处理装置的变型例2的分支命令的分支历史信息和分支预测信息的更新算法的状态跃迁图;
图13为表明关于该信息处理装置的变型例3的分支命令的分支历史信息和分支预测信息的更新算法的真值表;和
图14为表明关于该变型例3的分支命令的分支历史信息和分支预测信息的更新算法的状态跃迁图。
下面参照附图对关于本发明的信息处理装置的实施形态加以说明。
图2为表示关于本发明的信息处理装置100的方框图。
本装置100为顺序对预先准备的32位固定长的命令进行读取、解码、执行的处理系统,由主存贮器9、高速缓存单元11、命令读取器12、命令寄存器13、命令解码器14、命令执行器15、地址控制器8、程序计数器群10、地址生成器19、分支历史信息生成器16、分支预测信息生成器17和分支命令更新器18组成。
这些结构要素8~19均与图中未表示出的时钟信号作同步操作。
而结构要素12~18构成4级的流水线。即命令读取器12构成流水线的读取(IF)阶段,命令寄存器13和命令解码器14构成流水线的解码(DEC)阶段,命令执行器15、分支历史信息生成器16、分支预测信息生成器17和分支命令更新器18构成流水线的执行(EX)阶段,而命令执行器15和分支命令更新器18构成流水线的存贮器存取(MEM)阶段,各阶段中的处理在一时钟周期内独立且并行地进行。
主存贮器9为DRAM等,存放作为本装置100的执行对象的命令序列(程序)。此程序中包含本装置100中所特有的分支命令。
图3表示该分支命令的格式。
分支命令20由13位的操作码20a、1位的分支预测信息20b、2位的分支历史信息20c和16位的分支目的地地址20d构成。
操作码20a表示用于识别此命令的操作代码和分支条件等。
分支预测信息20b预测随后此分支命令执行时的分支是否成立。具体的说,此分支预测信息20b与预测内容之间的关系如以下这样:
分支预测信息20b为“0”时预测分支不成立;
分支预测信息20b为“1”时预测分支成立。
分支历史信息20c相当于归纳此分支命令的过去的多个分支结果的信息(统计汇总的信息)。具体地说,此分支历史信息20c与过去分支成立的频率(与不成立时相比较的频率)之间有上列这样的关系:
分支历史信息20c为“00”、“01”、“10”和“11”时分别表示“极少”、“少”、“多”和“极多”。
分支目的地地址20d表示分支成立时应分支的地址、即后面应执行命令被放置的主存贮器9上的地址。而在分支不成立时,下面应执行的命令为被置于紧接此分支命令之后的命令。
高速缓存单元11用于加速命令读取器12向主存贮器9的访问,由高速缓冲存贮器11a、标记存贮器11b和高速缓存控制器11c构成。
高速缓冲存贮器11a为SRM等,是以被叫做高速缓存块的单位存放被置于主存贮器9中的程序的一部分的高速存贮器。标记存贮器11b存贮由该高速缓存块的地址等组成的标记目录。
高速缓存控制器11c通过将由命令读取器12输出的地址与标记存贮器11b的内容进行比较来检测高速缓存的有未命中,在命中时使命令读取器12对高速缓冲存贮器11a的访问成为有效。另一方面,在未命中时则由LRU(Least RacentlyUsed最近应用的)算法来更换高速缓存块。而在改写高速缓存块时,以写回方式将该高速缓存块写入主存贮器9,以保持高速缓冲存贮器11a与主存贮器9内容的一贯性。
命令读取器12提前读取随后应解码、实行的命令,将从读取用命令计数器10a送出的读取地址输出给高速缓存单元11,从高速缓冲存贮器11a读出对应于该地址的命令并暂时保存于内部命令缓冲器12a中。命令缓冲器12a为保存提前取出的一个命令的寄存器。
命令寄存器13为保存作为解码对象的一个命令的寄存器,在下一时钟周期读出命令缓冲器12a中提前取得的命令,在解码期间保持该命令。图2中表示命令寄存器13中保持分支命令时的存贮内容。
命令解码器14由存贮微程序的ROM等构成,对命令寄存器13中所保持的命令的操作码13a进行解码,将其结果作为控制信号141输出剂命令执行器15。当解码对象是分支命令时,通过信号线142将该分支命令的分支预测信息13b通知命令执行器15和地址控制器8。
地址控制器8根据来自命令解码器14和命令执行器15的通知控制地址生成器19和程序计数器群10,由此来更新构成程序计数数器群10的3个计数器(读取用命令计数器10a、解码用命令计数器10b、执行用命令计数器10c)的值。
结果,在读取用命令计数器10a中就保持有存放在命令缓存器12a中的命令被安置在存贮器9上的地址(检索地址),在解码用命令计数器10b中保持有保存在命令寄存器13中的命令被安置在存贮器9上的地址(解码地址),在执行用命令计数器10c中保持有命令执行器15中实行的命令被安置在存贮器9上的地址(执行地址)。
地址生成器19由ALU和选择器等构成,在地址控制器8的控制下,对程序计数器群10的各计数器10a~10c进行增量,将分支目的地地址13d写入读取用命令计数器10a,并使之无效。
命令执行器15根据来自命令解码器14的控制信号141对内部包含的通用寄存器和包含运算器等的各结构要素进行控制,执行对应于各命令的运算和数据传送等。
并且,命令执行器15在执行的命令为分支命令时通过信号线151将该执行结果(分支是否成立)通知分支历史信息生成器16和分支预测信息生成器17,同时为进行与分支预测不符时的补偿处理(传送到命令寄存器13的命令的无效化和根据实行结果对原来的分支目的地命令的检取)将该执行结果与分支预测信息13b相比较,并将其结果(预测命中/不符)通过信号线152通知命令解码器14和地址控制器8。
分支历史信息生成器16在命令执行器15执行分支命令时,根据该分支命令中所含的分支历史信息13c及其执行结果(分支是否成立)判断是否应变更该分支历史信息,在应变更时生成新的分支历史信息,将该判断结果(“应维持原样”还是“作更新”)和新的分支历史信息输出到分支命令更新器18。
分支预测信息生成器17在命令执行器15执行分支命令时根据该分支命令中所含的分支历史信息13c及其执行结果(分支是否成立)判断是否应变更此分支预测信息,在应变更时生成新的分支预测信息,将此判断结果(“应维持原样”还是“作更新”)和新的分支预测信息输出到分支命令更新器18。
图4为表明分支历史信息生成器16和分支预测信息生成器17的输入输出的关系的真值表。亦即,输入值栏表示各自输入到分支历史信息生成器16和分支预测信息生成器17的分支历史信息H1H0和执行结果X的所有组合,输出值的分支历史信息N1N0栏表示针对左栏的各输入值的组合分支历史信息生成器16输出的新的分支历史信息,输出的分支预测信息F栏表示针对左栏的各输入值的组合分支预测信息生成器17输出的新的分支预测信息,图中的符号“-”表示其值没有意义,即分支信息生成器16(或分支预测信息生成器17)利用另外的信号线将分支历史信息(或分支预测信息)“应维持原样”的意思通知分支命令更新器18。
图5表示分支历史信息生成器16的详细电路。
分支历史信息生成器16是作为针对3位的输入信号(分支历史信息H1H0和执行结果)将3位的信号(分支历史信息N1N0和表示“应维持原样”意思的信息M1)输出到分支命令更新器18的组合逻辑电路而实现的。
图6表示分支预测信息生成器17的详细电路。
分支预测信息生成器17是作为针对3位的输入信号(分支历史信息H1H0和执行结果X)将2位的信号(分支预测信息F和表示“应原样维持”此信息的意思的信息M0)输出给分支预测更新器18的组合逻辑电路实现。而上述信息M1和M0在为“应原样维持”上述各信息时成为逻辑作“1”。
图7是以分支历史信息20c的值作为状态的分支命令20的状态跃迁图,同时也是表示图4中所示的分支历史信息和分支预测信息的更新算法的图形。
图中的4个椭园相当于取2位的分支历史信息所得的值(状态),实线跃迁箭头线表示执行结果为分支成立“1”时的跃迁方向,虚线跃迁箭头表示执行结果为分支不成立“0”时的跃迁方向。为明确表示分支预测信息被输出(变更)的情况在跃迁箭头线30a、30b的旁边附加说明。
例如,当执行前分支历史信息为“10”(过去分支成立的频率“多”)而该分支命令的执行结果为成立“1”时,分支历史信息生成器16将新的分支历史信息“11”(过去分支成立的频度“极多”)输出到分支命令更新器18,同时分支预测信息生成器17将新的分支预测信息“1”(成立)输出给分支命令更新器18。
分支命令更新器18根据来自分支历史信息生成器16的信号(N1、N0、M1)、来自分支预测信息生成器17的信息(F、MO)和执行用命令计数器10c的值,更新被置于该实用命令计数器10c的值所指明的超高速缓冲存贮器11a(或主存贮器9)上的地址上的分支命令的高位16毕特(操作码20a、分支预测信息20b和分支历史信息20c)。但在接收到“应照原样维持”来自分支历史信息生成器16和分支预测信息生成器17双方的各信息的意思的通知和接收到由命令执行器15执行的命令不是分支命令的意思的通知时,分支命令更新器18对上述主存贮器9(或高速缓冲存贮器11a)不发生任何动作。
图8为表示分支命令更新器18详细结构的方框图。
分支命令更新器18由分支命令存贮单元18a、更新判断单元18b、命令生成单元18c和地址门单元18d构成。
分支命令存贮单元18a是在每次命令寄存器13中存入新的命令时取得该命令的高位16毕特(如该命令为分支命令时即为由操作码13a、分支预测信息13b和分支历史信息13c组成的16毕特)进行存贮的排队缓存器,保存解码级和执行级中二个命令的各自的高位16毕特。
更新判断单元18b从分支历史信息生成器16取得关于分支历史信息有无更新的信号M1、从分支预测信息生成器17取得关于分支预测信息存无更新的信号M0,根据各自的信号控制命令生成单元18c中新所分支命令的生成,并控制是否允许由地址门单元18d输出地址。
命令生成单元18c对分支命令存贮单元18a中存贮的二个16毕特命令中以前存放的(这相当于紧前面执行的分支命令的高位16毕特部分)写上从分支历史信息生成器16和分支预测信息生成器输出的新分支历史信息N1N0和分析予预测信息F,由此来生成超高速缓冲存贮单元11(或主存贮器9)上的应更新的分支命令的高位16毕特部分。但是,在从更新判断单元18b接收到“应照原样维持”意思的信号(M1和M0)时,不更新对应于该信号的分支历史信息和(或)分支预测信息。
地址门单元18d在输入到更新判断单元18b的二个信号M1、M0中至少一个表示“更新了”的意思时将执行用命令计数器10c的值输出进超高速缓冲存贮单元11。
由此,分支更新器18在有必要改变由命令执行器15执行的分支命令的分支预测信息20b和分支历史信息20c的至少一方时,以在被置于超高速缓冲存贮器11a(或主存贮器9)的该分支命令的高位16毕特部分上写以新的16毕特来更新分支命令20自身。
这里,对由上述分支历史信息生成器16、分支预测信息生成器17和分支命令更新器18取得的分支历史信息和分支预测信息的具体变化,按照图7的状态跃迁图作如下例示。
现在假定重复执行分支历史信息20c为“00”分支预测信息20b为“0”的分支命令20。这样,
在第一次的执行结果为分支成立时,分支历史信息20c被更新为“01”,分支预测信息20b不变。
在第二次的执行结果为分支成立时,分支历史信息20c被更新为“10”,分支预测信息20b不变。
在第三次的执行结果为分支成立时,分支历吏信息20c被更新为“11”,分支预测信息20b被更新为“1”。
在第四次执行结果为分支不成立时,分支历史信息20c被更新为“10”,分支预测信息20不变化。
在第五次执行结果为分支不成立时,分支历史信息20c为更新为“01”,分测预测信息20b不变化。
在第六次的执行结果为分支不成立时,分支历史信息20c被更新为“00”,分支预测信息20b被更新为“0”。
如在将纵轴取分支预测信息20b的值、横轴取分支历史信息20c的值的座标系统中对以上例示进行图示,即成为图9中所示图形。
如按此图形判断那样,在分支成立连续时分支预测信息20b从“0”变化到“1”时的分支历史信息20c的跃迁地点与在分支不成立连续时分支预测信息20b由“1”变到“0”时的分支历史信息20c的跃迁地点不一致。亦即,因分支历史信息20c变化的方向使分支预测信息20b反向的阀值不同。这可看作是,将分支结果的历史作为输入时确定分支预测信息20b的映象中存在着滞后。亦即意味着,只要过去分支成立的频率与不成立的频率中没有显著差别,就尊重(保持)当前的分支预测。
由于这种滞后能避免因例外地发生的分支而引起的分支预测信息20b的被打乱的不正常情况和在分支成立与不成立重复时的分支预测的全部不适应的不正常,特别是使控制系统的程序中的分支预测命中率增高。
下面对以上这样构成的信息处理装置100的操作以执行具体的分支命令的情况为例加以说明。
图10表示信息处理装置100中流水线处理的流程图。
现在,假定存放在主存贮器9中的分支命令的分支预测信息20b和分支历史信息20c的初始值分别为“0”和“01”。这些初始值是依靠对源程序的静态解析得的编译程序所生成的。由主存贮器9读出含有该分支命令的高速缓存程序块并保存进高速缓冲存贮器11a中。
(1)IF级
命令读取器12在时钟周期1的后半(1b)中从高速缓冲存贮器11a读出该分支命令并存入命令缓存器12a读出该分支命令并存入命令缓存器12a。
(2)DEC级
在时钟周期2的前半部(2a)中,先前被读入命令缓存器12a的分支命令被传送进寄存器13,由命令解码器14解码。
具体说,命令解码器14通过对保存在命令寄存器13中的操作码13a进行解码来判断解码对象为分支命令,将为进行分支条件的判断的控制信号输出到命令执行器15,同时向地址控制器8通知保存在命令寄存器13中的分支预测信息13b。
地址控制器8,由于所通知的分支预测信息13b为“0”,此命令的执行结果预测分支不成立,由控制地址生成器19使检取用命令计数器10a的值增量。其值(检索地址)径命令渎取器12被输出到高速缓存单元11。
其结果,在此时钟周期2的后半部(2b)中的IF级此分支命令后续的命令被命令读取器12读出并被存入命令缓存器12a中。这样,尽管是在分支命令被执行之前,也根据分支命令所具有的分支预测信息来提前读出下一命令。
(3)EX级
在接续的时钟周期3的前半部(3a)中,命令执行器15根据来自命令解码器14的控制信号进行该分支命令的条件判断,将其执行结果(分支成立与否)通知分支历史信息生成器16和分支预测信息生成器17,同时将其预测结果(有未命中)通知命令解码器14和地址控制器8。
而后在此时钟周期3的后半部(3b)中,分支历史信息生成器16和分支预测信息生成器17在接受上述通知的同时获取命令寄存器13中所存放的分支历史信息13c,根据图7中所示的跃迁分别生成新的分支历史信息和分支预测信息(或照原样),将其结果通知分支命令更新器18。接收到新的分支历史信息和(或)分支预测信息的通知的分支命令更新器18生成具有这些信息的新分支命令的高位16毕特。
而在上述预测未命中时,在此时钟周期3的后半部(3a)由命令执行器15和命令读取器12进行补救处理(传送到命令寄存器13的命令的无效化和根据执行结果对原来的分支命令的读取)。
(4)MEM级
在时钟周期4,分支命令更新器18在从分支历史信息生成器16和分支预测信息生成器17接收到将分支预测信息20b和分支历史信息20c的至少一个“更新的”的通知时,将紧接前面的时钟周期3b中生成的分支命令(的高位16毕特部分)写在表示存贮在执行用命令计数器10c中的执行地址的高速缓冲存贮器11a(或主存贮器9)上的分支命令上。
这样就使得含有被更新的高速缓冲存贮器11a上的分支命令的高速缓存程序块在从高速缓冲存贮器11a被消去以前由高速缓存控制器11c写入在对应的主存贮器9上的位置上。由此,即使在此分支命令再次从存贮器9读出加以执行时,此分支命令中所含的分支预测信息20b和分支历史信息20c也被保证是基于过去的分支结果的有效信息。
如以上所述,在本装置100中,各分支命令的分支历史信息和分支预测信息不是专用的存贮表而是保持在其分支命令自身中。因而与将多个分支命令的分支历史信息和分支预测信息固定地设置在信息处理装置100内部的情况相比,信息处理装置100中所需的硬件规模很少即可。
而在本装置100中,分支命令不仅是1位的分支预测信息,还具有表示多次分支结果的要点的2位的分支历史信息,根据此分支历史信息和紧接前面的分支结果进行具有滞后的分支预测。从而,与仅基于1位的分支预测信息的分支预测情况相比,不仅仅预测命中率提高,而能够进行不易于受到例外发生的分支的不良影响的可靠的分支预测。
在本实施形态中,主存贮器9为DRAM等,而高速缓冲存贮器11a为由SRAM等构成,但本发明并不限于此。
例如主存贮器9亦可以是硬盘等非易失性存贮装置。因此,即使在装置电源被切断时,由于基于至今的执行结果的分支预测信息20b和分支历史信息20c被保存在硬盘等之中,在其后再次执行时,开始已经没有积累的分支历史信息的有效的分支预测。
下面表示上述实施形态的信息处理装置100的变型示例。
在上述实施形态中,如图7中所示,预测分支信息被设定为仅在分支历史信息从“多”跃迁到“极多”时才为“成立”,而在分支历史信息从“少”跃迁到“极少”时为“不成立”。
这如同在图11的状态跃迁图中的跃迁箭头线31a、31b上所增加注明的那样,可作成为分支预测信息仅在分支历史信息成为滞留在“极多”的情况时(即,分支历史信息为“极多”的分支命令的执行结果为“成立”的情况)被设定为“成立”,而在分支历史信息成为滞留于“极少”的情况(即,在分支历史信息为“极少”的分支命令的执行结果为“不成立”的情况)时被设定为“不成立”,其他的跃迁情况则无变化,变形成为更新算法。这通过变更构成分支预测信息生成器17的组合逻辑电路中的连接线能很容易实现。
此变型例1,如比较图7和图11就可判断那样,相当于上述滞缓的程度较之上述实施形态的情况更增强的情况。亦即,对于实际所产生的分支结果成立与否的偏离,分支预测信息很难变化。
由此来实现适用于希望加强抑制分支预测信息的紊乱的系统和不希望分支预测信息的变化的系统、例如希望维持能由静态信息而不是执行时的动态现象确定的初始值那样的系统的信息处理装置。
上述实施形态中分支历史信息为2位,但也容易将其变型为1位。
图12为表示将分支历史信息作成1位时的分支历史信息的更新算法的状态跃迁图。分支历史信息属于“多”和“少”中之一的状态;各状态表示此分支命令的紧接前面的执行结果分别为“成立”、“不成立”。分支预测信息,如跃迁箭头线32a上所付加的注明那样,仅在分支历史信息成为滞留于“多”的情况(即分支历史信息为“多”的分支命令的执行结果为“成立”的情况)被设定为“成立”,而如跃迁箭头线32b上付加标注的那样,仅在分支历史信息成为滞留于“少”的情况(即,分支历史信息为“少”的分支命令的执行结果成为“不成立”的情况)被设定为“不成立”,其他的跃迁情况下不变化。从而,分支预测信息虽然在分支命令的执行结果为重复成立与不成立时不变化,但在同一结果连续时则被设定为与其结果相对应的值。
这样的变型例2,不用说能减少实施形态的分支历史信息生成器16和分支预测信息生成器17中的逻辑电路,而容易地以变更连接线来实线。
此变型例2如与图7与图12相比较所作判断那样,相当于减弱上述的滞后程度的情况。亦即,与上述实施形态的情况相比,分支预测信息的变化成为对分支历史信息的变化敏感。因而,比起上述实施形态的信息处理装置100,能实现更适应于对程序的执行结果敏感的、即例外处理发生多的实时性强的系统的信息处理装置。
而由于此变型例2中分支历吏信息只要1位就够了,所以减小了编码规模和增大了定义命令组(操作码的映象)情况的自由度。
上述实施形态及二个变型例为执行具有对于过去的分支结果的统计要点即分支历史信息的分支命令的信息处理装置,但也易于将之变型成执行具有由对应于各个过去的分支的位的集合组成的分支历史信息的分支命令的信息处理装置。
亦即,通过改变上述实施形态的信息处理装置100中的分支历史信息生成器16和分支预测信息生成器17的功能(输入/输出变换算法),就能实现执行将按原样表示该分支命令的过去多次的执行结果的位的集合作为分支历史信息而保存的分支命令的信息处理装置。
图13为表示由关于变型例3的信息处理装置的分支历史信息生成器和分支预测信息生成器进行的更新算法的真值表,与上述实施形态中图4相对应。
在此变型例3中,与上述实施形态不同,分支命令具有2位的分支历史信息20c,低位毕特H0作为该分支命令的紧接前面的执行结果(“1”表示“成立”,“0”表示“不成立”),高位毕特H1表示该分支命令二次前的执行结果。
此变型例3的分支历吏信息生成器为2位的排队缓存器,当从命令执行器15通知新的执行结果X时,即将目前保存的2位H1H0向高位方向位移,将此新的执行结果X输入到低位N0,由此生成新的分支历史信息N1N0。
而变型例3的分支预测信息生成器在原则上是将分支命令执行紧前面的2位的分支历史信息H1H0与从命令执行器15通知的执行结果X组合成的合计3位的值中多的逻辑值(例如,H1H0=01而X=1时的“1”)作为新的分支预测信息F而生成,作为例外的是,仅在取此3位的H1H0X相互反相的逻辑值时将该反相继续那样的逻辑值(在H1H0X=010时的“1”,H1HOX=101时的“0”)生成作为新的分支预测信息F。这就意味着,原则上虽然是采用过去3次执行结果中的多的那种结果(“成立”或“不成立”)作为后面的分支预测,但仅限于过去3次的执行结果为交替地重复“成立”和“不成立”的情况,作为例外,作为继续该重复并进行分支预测。
图14为表示变型例3的分支历史信息和分支预测信息的更新算法的状态跃迁图。本图对应于上述实施形态的图7,但在跃迁箭头线上付加表明的数值表示引起该跃迁的原因(即,该分支命令的执行结果X的值)和伴随该跃迁从分支预测信息生成器输出的新分支预测信息的值。
例如,现在假定重复执行分支历史信息20c为“00”、分支预测信息20b为“0”的分支命令20。
这样,在第一次的执行结果为分支成立(未命中)时分支历史信息20c被更新为“01”,分支预测信息20b被设定为“0”(不变化);
在第二次的执行结果为分支不成立(命中)时分支历史信息20c被更新为“10”,分支预测信息20b变更为“1”;
在第三次的执行结果为分支成立(命中)时分支历史信息20c被更新为“01”,分支预测信息20b变更为“0”;
在第四次的执行结果为分支不成立(命中)时分支历史信息20c被更新为“10”,分支预测信息20b被变更为“1”。
由此,利用关于变型例3的信息处理装置,原则上是根据过去的分支结果进行分支预测,但在分支的成立与不成立交替地重复的情况,与上述实施形态不同,由于以作为重复这种翻转现象来进行分支预测,所以即使在这样的特殊程序的流程中分支预测也能命中。
上面对关于本发明的信息处理装置是表示为一个实施形态和三个变型例,但本发明并不限定于这些。
对于为确定分支预测信息的条件(分支历史信息的值与分支结果的组合)、更新分支历史信息的算法、分支历史信息的位数等,不用说能很容易地以组合所取得的值作成其他的变型例。
例如也可以分配以8级表示的更深的分支历史的要点的三位来作为分支历史信息。由此就能进行命中率更高的规定更细小的分支预测。
但是在用于一个分支命令所占的分支预测的位数很多时,由于在定义命令组中的自由度等上面必须付出牺牲,这些位数必须由预测的命中率与应设置的命令的种类的折衷选择来确定。
而上述实施形态和变型例的构成要素虽然是全部由逻辑电路实现作为前提说明的,但本发明不仅仅由硬件来实现也能由软件来实现,这是不言而喻的。
具体说,在上述实施形态的信息处理装置100的构成要素中,可以将存放命令和数值的存贮手段9、11a、11b、12a、13、10a~10c等分配成变数和数据领域,也可以采用编程语言描述其余的控制手段8、11c、12、14~19等的功能。由此,关于本发明的信息装置即作为通用计算机系统执行的模拟程序和虚拟机来实现。为实现关于这样的本发明的信息处理装置的程序可存放在CD-ROM等的记录媒体中加以分配、流通。
而上述实施形态和变型例中的分支命令,与图1中所示的历来的命令格式不同,具有例如如图3中所示的命令格式那样的称为分支历史信息的本发明因有的信息。具有这样的特征的结构的分支命令是本发明中固有的,而含有这样的分支命令的命令群(程序),不用说也能与上述程序同样地通过软盘等的记录媒体和通信线路进行分配、流通。