本申请涉及处理器技术领域,特别涉及一种处理器、芯片和电子设备。
背景技术:
在处理器领域中,通常在处理流水线中提早预测分支指令的信息以便于提升处理器性能。分支指令的信息通常存储在分支目标缓冲器(branchtargetbuffer,btb)中。分支预测功能模块会根据当前pc,实时查询btb中的内容,当在btb中查询到当前pc的指令指针时,对下一条指令指针进行预测,预测成功则继续执行,预测失败,则清流水线,并恢复到正确的跳转指针。
btb所存储的信息有限,诸如btb可存储8条分支指令的信息。由于分支预测是对所有的分支指令作统一处理,当不同跳转指令诸如for循环指令和if/else跳转指令嵌套频繁发生时,会将其中一种类型的分支指令的信息从btb中替换而被刷掉,诸如将循环指令的信息替换而将循环指令的信息刷掉。
技术实现要素:
本申请实施例提供一种处理器、芯片和电子设备,防止分支预测模块中所存储的循环指令的信息被其它类型指令的信息替换而被刷掉。
本申请实施例公开一种处理器,包括:
指令提取模块,用于提取指令;和
分支预测模块,所述分支预测模块与所述指令提取模块连接,所述分支预测模块包括用于存储循环指令的信息的第一目标缓冲区和用于存储判断指令的信息的第二目标缓冲区,所述分支预测模块被配置为:
基于所述第一目标缓冲区所存储的循环指令的信息或所述第二目标缓冲区所存储的判断指令的信息,利用所述指令提取模块所提取的跳转指令进行分支预测。
本申请实施例还公开一种芯片,包括如上所述的处理器。
本申请实施例还公开一种电子设备,包括:
系统总线;
处理器,所述处理器为如上所述的处理器,所述取指模块与所述系统总线连接;和
存储器,所述存储器与所述系统总线连接。
本申请实施例中,分支预测模块分区存储循环指令和判断指令,确保分支预测模块中有空余的空间存储循环指令的信息,避免循环指令的信息被其它指令诸如判断指令的信息替换而被刷掉。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的处理器的第一种结构示意图。
图2为本申请实施例提供的处理器的第二种结构示意图。
图3为本申请实施例提供的处理器的第三种结构示意图。
图4为本申请实施例提供的芯片的结构示意图。
图5为本申请实施例提供的电子设备的结构示意图。
具体实施方式
请参阅图1,图1为本申请实施例提供的处理器的第一种结构示意图。处理器200可包括指令提取模块220和分支预测模块240。指令提取模块220和分支预测模块240连接,分支预测模块240可基于指令提取模块220所提取的跳转指令进行分支预测。
需要说明的是,指令提取模块220所提取的指令往往需要通过译码处理,或者说解析处理以便于其他模块进行处理。
请继续参阅图1,处理器200还可以包括指令译码模块260,也可以称为指令解析模块。该指令译码模块260连接指令提取模块220和分支预测模块240,指令译码模块260可以从指令提取模块220获取指令,也可以理解为指令提取模块220将指令发送给指令译码模块260。指令译码模块260接收到指令后对指令进行译码等一系列处理,或者说解析等一系列处理,以得到指令的信息。当指令译码模块260译码等处理得到指令的信息后,指令译码模块260可以根据指令的类型进行分配,诸如指令译码模块260可以将跳转指令的信息传输给分支预测模块240。
其中,跳转指令可以包括for循环指令和if/else跳转指令。为了便于区分for循环指令和if/else跳转指令,本申请实施例将for循环指令简称为循环指令,且本申请实施例将if/else跳转指令简称为判断指令。
指令携带有多种信息,或者说指令包括有多种信息。诸如跳转指令的信息包括当前地址和目标地址。该当前地址可以理解为该跳转指令所在的地址,该目标地址可以理解为分支预测模块240所要进行预测的地址。需要说明的是,跳转指令的信息并不限于此,诸如跳转指令的信息还可以包括预测的位。
指令译码模块260对跳转指令译码等处理后可以得到该跳转指令的相关信息,诸如得到该跳转指令的当前地址和目标地址。指令译码模块260可以将该当前地址和目标地址传输给分支预测模块220,分支预测模块220可以将该当前地址和目标地址进行存储。分支预测模块220可以将跳转指令的信息存储在其分支目标缓存器(branchtargetbuffer,btb)中。
本申请实施例分支预测模块240的btb所存储的跳转指令的信息可以包括当前地址和目标地址。若btb存储有循环指令的信息,则循环指令的信息至少包括当前地址和目标地址。若btb存储有判断指令的信息,则判断指令的信息至少包括当前地址和目标地址。可以理解的是,btb所存储的跳转指令的信息可以称为记录历史中发生过的跳转指令的当前地址,和其跳转的目标地址。需要说明的是,btb所存储的跳转指令的信息还可以包括预测的位。
需要说明的是,相关技术中,btb的大小有限,btb往往仅存储几条跳转指令的信息,诸如btb存储8条跳转指令的信息。由于跳转指令可具有不同的类型,诸如跳转指令包括for循环和if/else跳转指令。当for循环指令和if/else跳转指令嵌套频繁发生时,会导致for循环指令对应的分支预测缓存空间中if/else跳转指令替换而被刷掉,由于for循环次数一般较大,总体指令的流水效率不理想,频繁发生预测失败,清流水线。
基于此,本申请实施例将分支预测模块240的btb进行分区处理,使得分区后的btb可以同时存储循环指令和判断指令,防止循环指令被判断指令替换而被刷掉。当然,也可以保留判断指令。
在一些实施例中,分支预测模块240的btb可包括第一目标缓冲区242和第二目标缓冲区244。第一目标缓冲区242可存储循环指令的信息,诸如for循环指令的信息,第一目标缓冲区242可存储循环指令的当前地址、预测的目标地址。当然,第一目标缓冲区242还可存储循环指令的预测的位。第二目标缓冲区244可存储判断指令的信息,诸如if/else跳转指令的信息,第二目标缓冲区244可存储判断指令的地址、预测的目标地址。当然,第二目标缓冲区244还可存储判断指令的预测的位。
其中,第一目标缓冲区242可存储多条循环指令的信息,诸如第一目标缓冲区242可存储4条循环指令的信息。第二目标缓冲区244可存储多条判断指令的信息,诸如第二目标缓冲区244可存储4条判断指令的信息。在一些实施例中,第一目标缓冲区242所存储循环指令的信息的最多个数等于第二目标缓冲区244所存储判断指令的信息的最多个数。本申请实施例可以将第一目标缓冲区242的空间与第二目标缓冲区244的空间设置相同,即第一目标缓冲区242的空间等于第二目标缓冲区244的空间。需要说明的是,第一目标缓冲区242的空间与第二目标缓冲区244的空间设置不同也是可以的,在实际应用中,可以根据实际需要设置第一目标缓冲区242的空间与第二目标缓冲区244的空间,以尽可能的节省空间。
需要说明的是,第一目标缓冲区242所存储循环指令的信息的最多个数也可以不等于第二目标缓冲区244所存储判断指令的信息的最多个数,诸如第一目标缓冲区242所存储循环指令的信息的最多个数大于第二目标缓冲区244所存储判断指令的信息的最多个数。本申请实施例可以将第一目标缓冲区242的空间与第二目标缓冲区244的空间设置不相同,诸如第一目标缓冲区242的空间大于第二目标缓冲区244的空间。当然,第一目标缓冲区242的空间等于第二目标缓冲区244的空间也是可以的,在实际应用中,同样可以根据实际需要设置第一目标缓冲区242的空间与第二目标缓冲区244的空间,以尽可能的节省空间。
可以理解的是,分支预测模块240的btb的分区方式并不限于第一目标缓冲区242和第二目标缓冲区244,其还可以分成3个区、4个区或更多个区,以存储不同类型的分支指令。
分支预测模块240可通过使用btb的第一目标缓冲区242或第二目标缓冲区244来执行分支预测处理。分支预测模块240从指令译码模块260获取跳转指令的信息诸如跳转指令的当前地址,基于对第一目标缓冲区242中所存储的循环指令的信息或第二目标缓冲区244所存储的判断指令的信息的搜索结果而进行分支预测。
若分支预测模块240的btb中未存储跳转指令时,当处理器200执行跳转指令诸如循环指令、判断指令并成功跳转时,分支预测模块240可以将该跳转指令存储到btb中。实际刷新btb的过程中,根据不同类型的跳转指令进行分区存储。当btb中记录有执行的分支指令后分支预测模块240可以基于该btb所记录的指令进行分支预测。
当处理器200执行跳转pc时,分支预测模块240可以根据当前pc,实时查询btb中的内容,诸如分别查询第一目标缓冲区242所存储的循环指令及第二目标缓冲区244所存储的判断指令。当在btb中查询到有效pc时,或者说当在btb中查询到当前pc的指令指针时,对下一条指令指针进行预测,若预测成功则将下一条pc确定为目标pc,并继续执行该预测的指令,执行完成后刷新btb。若预测失败,则清流水线,并恢复到正确的跳转指针。
请参阅图2,图2为本申请实施例提供的处理器的第二种结构示意图。处理器200中的分支预测模块240还可以包括判断单元246。判断单元246与第一目标缓冲区242和第二目标缓冲区244连接。判断单元246可以将分支预测模块240所接收到的跳转指令的信息存储到btb中,诸如判断单元246可以将分支预测模块240所接收到的循环指令的信息存储到第一目标缓冲区242中,判断单元246可以将分支预测模块240所接收到的判断指令的信息存储到第二目标缓冲区244中。
判断单元246可以根据跳转指令的信息判断出分支预测模块240所接收到的跳转指令是循环指令和判断指令中的哪一种类型,或者说判断单元246可以根据跳转指令的信息确定出分支预测模块240所接收到的跳转指令是循环指令和判断指令中的哪一种类型。从而就便于判断单元246进一步将相应类型的指令的信息存储到相应的btb的分区中。
判断单元246可以比较分支预测模块240所接收到的跳转指令诸如第一跳转指令的当前地址和目的地址。若目标地址大于当前地址,则判断单元246判断第一跳转指令为循环指令,进而判断单元246可以将该第一跳转指令的信息存储到第一目标缓冲区242。若目标地址小于当前地址,则判断判断单元246判断第一跳转指令为判断指令,进而判断单元246可以将该第一跳转指令的信息存储到第二目标缓冲区244。
判断单元246可以包括比较器,实现目标地址与当前地址进行比较,以得到比较结果。
需要说明的是,判断单元246在将循环指令诸如第一循环指令的信息存储到第一目标缓冲区242之前可以先确定第一目标缓冲区242是否已经存储有与该第一循环指令的信息相同的信息。如果第一目标缓冲区242已经存储有与第一循环指令的信息相同的信息,则可以不更新第一目标缓冲区242,或者说不刷新第一目标缓冲区242。而如果第一目标缓冲区242未存储与第一循环指令的信息相同的信息,则可以将该第一循环指令的信息存储到第一目标缓冲区242。
还需要说明的是,判断单元246在将循环指令诸如第一循环指令的信息存储到第一目标缓冲区242之前还可以先确定第一目标缓冲区242是否已经存满信息。若第一目标缓冲区242中所存储的循环指令的信息未存满,则可以将该第一循环指令的信息存储到第一目标缓冲区242中。而若第一目标缓冲区242中所存储的循环指令的信息已经存满,则根据预设规则将该第一循环指令的信息存储在第一目标缓冲区242中。该预设规则比如为将该第一循环指令的信息替换掉已经存储在第一目标缓冲区242中预设位置的循环指令的信息,以实现更新,或者说刷新。
可以理解的是,本身实施例可以在指令跳转成功的时,判断单元246才会将循环指令诸如第一循环指令的信息存储到第一目标缓冲区242。即本申请实施例可以在指令跳转成功时进行更新第一目标缓冲区242所存储的信息的动作。
本申请实施例判断单元246在存储第一循环指令的信息到第一目缓冲区242的整个过程,可以先判断第一目标缓冲区242是否已经存储有与第一循环指令的信息相同的信息。然后再判断第一目标缓冲区242的存储空间是否被填满,即第一目标缓冲区242是否已经存满循环指令的信息。
需要说明的是,判断单元246在将判断指令诸如第一判断指令的信息存储到第二目标缓冲区244之前可以先确定第二目标缓冲区244是否已经存储有与该第一判断指令的信息相同的信息。如果第二目标缓冲区244已经存储有与第一判断指令的信息相同的信息,则可以不更新第二目标缓冲区244,或者说不刷新第二目标缓冲区244。而如果第二目标缓冲区244未存储与第一判断指令的信息相同的信息,则可以将该第一判断指令的信息存储到第二目标缓冲区244。
还需要说明的是,判断单元246在将判断指令诸如第一判断指令的信息存储到第二目标缓冲区244之前还可以先确定第二目标缓冲区244是否已经存满信息。若第二目标缓冲区244中所存储的判断指令的信息未存满,则可以将该第一判断指令的信息存储到第而目标缓冲区244中。而若第而目标缓冲区244中所存储的判断指令的信息已经存满,则根据预设规则将该第一判断指令的信息存储在第而目标缓冲区244中。该预设规则比如为将该第一判断指令的信息替换掉已经存储在第而目标缓冲区244中预设位置的判断指令的信息,以实现更新,或者说刷新。
可以理解的是,本身实施例可以在指令跳转成功的时,判断单元246才会将循环指令诸如第一判断指令的信息存储到第二目标缓冲区244。即本申请实施例可以在指令跳转成功时进行更新第二目标缓冲区244所存储的信息的动作。
本申请实施例判断单元246在存储第一判断指令的信息到第二目缓冲区244的整个过程,可以先判断第二目标缓冲区244是否已经存储有与第一判断指令的信息相同的信息。然后再判断第二目标缓冲区244的存储空间是否被填满,即第二目标缓冲区244是否已经存满判断指令的信息。
本申请实施例分支预测模块240还与指令提取模块220连接,分支预测模块240完成分支预测后可反馈结果。诸如分支预测模块240预测成功,分支预测模块240将目标地址反馈给指令提取模块220,以便于指令提取模块220基于该目标地址从外界的存储器中提取与该目标地址对应的指令。
请参阅图3,图3为本申请实施例提供的处理器的第三种结构示意图。处理器200还可以包括执行模块280,执行模块280与指令译码模块260连接,执行模块280可以接收指令译码模块260发送的指令,以执行该指令。
本申请实施例所提供的处理器可以集成为一个芯片。
请参阅图4,图4为本申请实施例提供的芯片的结构示意图。芯片20包括处理器200,该处理器200具有可以参阅以上内容,在此不再赘述。该芯片20可以应用到电子设备中。
需要说明的是,本申请实施例的处理器200也可以与其他处理器、存储器等集成在一个芯片中。
请参阅图5,图5为本申请实施例提供的电子设备的结构示意图。电子设备10可以包括处理器200、系统总线400和存储器600。处理器200及存储器600均与系统总线400连接,处理器200和存储器600可通过系统总线400实现数据、指令的传输。诸如处理器200的指令提取模块220通过系统总线400可以从存储器600中提取指令。
该电子设备10可以是智能手机、平板电脑、掌上电脑(pda,personaldigitalassistant)等,还可以是游戏设备、ar(augmentedreality,增强现实)设备、车载装置、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备等。
可以理解的是,该电子设备10还可以包括其他元件,诸如电子设备10还可以包括神经网络处理器,神经网络处理器可以应用于各种需要对输入图像进行图像处理以得到相应地输出图像的场景,本申请实施例对此并不限定。诸如,本申请实施例提供的技术方案可以应用于计算机视觉等领域的各种场景,比如:人脸识别、图像分类、目标检测及语义分割等。
以上对本申请实施例提供的处理器、芯片和电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请。同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
1.一种处理器,其特征在于,包括:
指令提取模块,用于提取指令;和
分支预测模块,所述分支预测模块与所述指令提取模块连接,所述分支预测模块包括用于存储循环指令的信息的第一目标缓冲区和用于存储判断指令的信息的第二目标缓冲区,所述分支预测模块被配置为:
基于所述第一目标缓冲区所存储的循环指令的信息或所述第二目标缓冲区所存储的判断指令的信息,利用所述指令提取模块所提取的跳转指令进行分支预测。
2.根据权利要求1所述的处理器,其特征在于,所述分支预测模块还包括与所述第一目标缓冲区和所述第二目标缓冲区连接的判断单元,所述分支预测模块还被配置为:
从所述指令提取模块获取第一跳转指令的信息;
所述判断单元被配置为:
根据所述第一跳转指令的信息判断所述第一跳转指令是判断指令和循环指令中的哪一种类型;
若所述第一跳转指令被判断为循环指令,则将所述第一跳转指令的信息存储到所述第一目标缓冲区;
若所述第二跳转指令被判断为判断指令,则将所述第一跳转指令的信息存储到所述第二目标缓冲区。
3.根据权利要求1所述的处理器,其特征在于,所述分支预测模块还包括判断单元,所述分支预测模块还被配置为:
从所述指令提取模块获取第一跳转指令的信息;
所述判断单元被配置为:
根据所述第一跳转指令的信息判断所述第一跳转指令是判断指令和循环指令中的哪一种类型;
若所述第一跳转指令被判断为循环指令,则进一步判断所述第一目标缓冲区是否存储有与所述第一跳转指令的信息相同的信息;
若所述第一目标缓冲区未存储与所述第一跳转指令的信息相同的信息,则将所述第一跳转指令的信息存储到所述第一目标缓冲区;
若所述第一目标缓冲区存储有与所述第一跳转指令的信息相同的信息,则不将所述第一跳转指令的信息存储到所述第一目标缓冲区;
若所述第一跳转指令被判断为判断指令,则进一步判断所述第二目标缓冲区是否存储有与所述第一跳转指令的信息相同的信息;
若所述第二目标缓冲区未存储与所述第一跳转指令的信息相同的信息,则将所述第一跳转指令的信息存储到所述第二目标缓冲区;
若所述第二目标缓冲区存储有与所述第一跳转指令的信息相同的信息,则不将所述第一跳转指令的信息存储到所述第二目标缓冲区。
4.根据权利要求1所述的处理器,其特征在于,所述分支预测模块还包括判断单元,所述分支预测模块还被配置为:
从所述指令提取模块获取第一跳转指令的信息;
所述判断单元被配置为:
根据所述第一跳转指令的信息判断所述第一跳转指令是判断指令和循环指令中的哪一种类型;
若所述第一跳转指令被判断为循环指令,则进一步判断所述第一目标缓冲区是否已存满循环指令的信息;
若所述第一目标缓冲区存满循环指令的信息,则根据第一预设规则将所述第一跳转指令的信息替换已存储在所述第一目标缓冲区的其中一个循环指令的信息;
若所述第一跳转指令被判断为判断指令,则进一步判断所述第二目标缓冲区是否已存满判断指令的信息;
若所述第二目标缓冲区存满判断指令的信息,则根据第一预设规则将所述第一跳转指令的信息替换已存储在所述第二目标缓冲区的其中一个判断指令的信息。
5.根据权利要求2至4任一项所述的处理器,其特征在于,所述第一跳转指令的信息包括当前地址和目标地址,所述判断单元还被配置为:
比较所述当前地址和目的地址;
若所述目标地址大于所述当前地址,则判断所述第一跳转指令为循环指令;
若所述目标地址小于所述当前地址,则判断所述第一跳转指令为判断指令。
6.根据权利要求1至5任一项所述的处理器,其特征在于,所述第一目标缓冲区所存储循环指令的信息的最多个数等于所述第二目标缓冲区所存储判断指令的信息的最多个数。
7.根据权利要求6所述的处理器,其特征在于,所述第一目标缓冲区的存储空间等于所述第二目标缓冲区的空间。
8.根据权利要求1至5任一项所述的处理器,其特征在于,所述第一目标缓冲区所存储循环指令的信息的个数大于所述第二目标缓冲区所存储判断指令的信息的个数。
9.根据权利要求8所述的处理器,其特征在于,所述第一目标缓冲区的存储空间大于所述第二目标缓冲区的空间。
10.一种芯片,其特征在于,包括如权利要求1至9任一项所述的处理器。
11.一种电子设备,其特征在于,所述电子设备包括:
系统总线;
处理器,所述处理器为如权利要求1至9任一项所述的处理器,所述取指模块与所述系统总线连接;和
存储器,所述存储器与所述系统总线连接。
技术总结