CN111258649B - 处理器、芯片和电子设备 - Google Patents

处理器、芯片和电子设备 Download PDF

Info

Publication number
CN111258649B
CN111258649B CN202010071858.2A CN202010071858A CN111258649B CN 111258649 B CN111258649 B CN 111258649B CN 202010071858 A CN202010071858 A CN 202010071858A CN 111258649 B CN111258649 B CN 111258649B
Authority
CN
China
Prior art keywords
instruction
information
target buffer
jump
loop
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
Application number
CN202010071858.2A
Other languages
English (en)
Other versions
CN111258649A (zh
Inventor
张建中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010071858.2A priority Critical patent/CN111258649B/zh
Publication of CN111258649A publication Critical patent/CN111258649A/zh
Application granted granted Critical
Publication of CN111258649B publication Critical patent/CN111258649B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本申请实施例提供一种处理器、芯片和电子设备,处理器包括指令提取模块和分支预测模块,指令提取模块用于提取指令;所述分支预测模块与所述指令提取模块连接,所述分支预测模块包括用于存储循环指令的信息的第一目标缓冲区和用于存储判断指令的信息的第二目标缓冲区,所述分支预测模块被配置为:基于所述第一目标缓冲区所存储的循环指令的信息或所述第二目标缓冲区所存储的判断指令的信息,利用所述指令提取模块所提取的跳转指令进行分支预测。本申请实施例防止分支目标缓冲器中所存储的循环指令的信息被其它指令信息替换而被刷掉。

Description

处理器、芯片和电子设备
技术领域
本申请涉及处理器技术领域,特别涉及一种处理器、芯片和电子设备。
背景技术
在处理器领域中,通常在处理流水线中提早预测分支指令的信息以便于提升处理器性能。分支指令的信息通常存储在分支目标缓冲器(Branch Target Buffer,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可以将跳转指令的信息存储在其分支目标缓存器(Branch Target Buffer,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,Personal DigitalAssistant)等,还可以是游戏设备、AR(Augmented Reality,增强现实)设备、车载装置、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备等。
可以理解的是,该电子设备10还可以包括其他元件,诸如电子设备10还可以包括神经网络处理器,神经网络处理器可以应用于各种需要对输入图像进行图像处理以得到相应地输出图像的场景,本申请实施例对此并不限定。诸如,本申请实施例提供的技术方案可以应用于计算机视觉等领域的各种场景,比如:人脸识别、图像分类、目标检测及语义分割等。
以上对本申请实施例提供的处理器、芯片和电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请。同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (11)

1.一种处理器,其特征在于,包括:
指令提取模块,用于提取指令;和
分支预测模块,所述分支预测模块与所述指令提取模块连接,所述分支预测模块包括用于存储循环指令的信息的第一目标缓冲区和用于存储判断指令的信息的第二目标缓冲区,所述分支预测模块被配置为:
基于所述第一目标缓冲区所存储的循环指令的信息或所述第二目标缓冲区所存储的判断指令的信息,利用所述指令提取模块所提取的跳转指令进行分支预测。
2.根据权利要求1所述的处理器,其特征在于,所述分支预测模块还包括与所述第一目标缓冲区和所述第二目标缓冲区连接的判断单元,所述分支预测模块还被配置为:
从所述指令提取模块获取第一跳转指令的信息;
所述判断单元被配置为:
根据所述第一跳转指令的信息判断所述第一跳转指令是判断指令和循环指令中的哪一种类型;
若所述第一跳转指令被判断为循环指令,则将所述第一跳转指令的信息存储到所述第一目标缓冲区;
若所述第一跳转指令被判断为判断指令,则将所述第一跳转指令的信息存储到所述第二目标缓冲区。
3.根据权利要求1所述的处理器,其特征在于,所述分支预测模块还包括判断单元,所述分支预测模块还被配置为:
从所述指令提取模块获取第一跳转指令的信息;
所述判断单元被配置为:
根据所述第一跳转指令的信息判断所述第一跳转指令是判断指令和循环指令中的哪一种类型;
若所述第一跳转指令被判断为循环指令,则进一步判断所述第一目标缓冲区是否存储有与所述第一跳转指令的信息相同的信息;
若所述第一目标缓冲区未存储与所述第一跳转指令的信息相同的信息,则将所述第一跳转指令的信息存储到所述第一目标缓冲区;
若所述第一目标缓冲区存储有与所述第一跳转指令的信息相同的信息,则不将所述第一跳转指令的信息存储到所述第一目标缓冲区;
若所述第一跳转指令被判断为判断指令,则进一步判断所述第二目标缓冲区是否存储有与所述第一跳转指令的信息相同的信息;
若所述第二目标缓冲区未存储与所述第一跳转指令的信息相同的信息,则将所述第一跳转指令的信息存储到所述第二目标缓冲区;
若所述第二目标缓冲区存储有与所述第一跳转指令的信息相同的信息,则不将所述第一跳转指令的信息存储到所述第二目标缓冲区。
4.根据权利要求1所述的处理器,其特征在于,所述分支预测模块还包括判断单元,所述分支预测模块还被配置为:
从所述指令提取模块获取第一跳转指令的信息;
所述判断单元被配置为:
根据所述第一跳转指令的信息判断所述第一跳转指令是判断指令和循环指令中的哪一种类型;
若所述第一跳转指令被判断为循环指令,则进一步判断所述第一目标缓冲区是否已存满循环指令的信息;
若所述第一目标缓冲区存满循环指令的信息,则根据第一预设规则将所述第一跳转指令的信息替换已存储在所述第一目标缓冲区的其中一个循环指令的信息;
若所述第一跳转指令被判断为判断指令,则进一步判断所述第二目标缓冲区是否已存满判断指令的信息;
若所述第二目标缓冲区存满判断指令的信息,则根据第一预设规则将所述第一跳转指令的信息替换已存储在所述第二目标缓冲区的其中一个判断指令的信息。
5.根据权利要求2至4任一项所述的处理器,其特征在于,所述第一跳转指令的信息包括当前地址和目标地址,所述判断单元还被配置为:
比较所述当前地址和目标地址;
若所述目标地址小于所述当前地址,则判断所述第一跳转指令为循环指令;
若所述目标地址大于所述当前地址,则判断所述第一跳转指令为判断指令。
6.根据权利要求1至4任一项所述的处理器,其特征在于,所述第一目标缓冲区所存储循环指令的信息的最多个数等于所述第二目标缓冲区所存储判断指令的信息的最多个数。
7.根据权利要求6所述的处理器,其特征在于,所述第一目标缓冲区的存储空间等于所述第二目标缓冲区的空间。
8.根据权利要求1至4任一项所述的处理器,其特征在于,所述第一目标缓冲区所存储循环指令的信息的个数大于所述第二目标缓冲区所存储判断指令的信息的个数。
9.根据权利要求8所述的处理器,其特征在于,所述第一目标缓冲区的存储空间大于所述第二目标缓冲区的空间。
10.一种芯片,其特征在于,包括如权利要求1至9任一项所述的处理器。
11.一种电子设备,其特征在于,所述电子设备包括:
系统总线;
处理器,所述处理器为如权利要求1至9任一项所述的处理器,所述指令提取模块与所述系统总线连接;和
存储器,所述存储器与所述系统总线连接。
CN202010071858.2A 2020-01-21 2020-01-21 处理器、芯片和电子设备 Active CN111258649B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010071858.2A CN111258649B (zh) 2020-01-21 2020-01-21 处理器、芯片和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010071858.2A CN111258649B (zh) 2020-01-21 2020-01-21 处理器、芯片和电子设备

Publications (2)

Publication Number Publication Date
CN111258649A CN111258649A (zh) 2020-06-09
CN111258649B true CN111258649B (zh) 2022-03-01

Family

ID=70948130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010071858.2A Active CN111258649B (zh) 2020-01-21 2020-01-21 处理器、芯片和电子设备

Country Status (1)

Country Link
CN (1) CN111258649B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905242B (zh) 2021-03-23 2022-12-06 浙江大华技术股份有限公司 分支路径跳转方法、装置、存储介质及电子装置
CN116737240B (zh) * 2022-03-02 2024-08-06 腾讯科技(深圳)有限公司 分支预测方法、装置、处理器、介质及设备
CN114756287B (zh) * 2022-06-14 2022-09-02 飞腾信息技术有限公司 一种重排序缓冲区的数据处理方法、装置及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732260B1 (en) * 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
CN102662640A (zh) * 2012-04-12 2012-09-12 苏州睿云智芯微电子有限公司 双重分支目标缓冲器和分支目标处理系统及处理方法
CN102855121A (zh) * 2011-06-29 2013-01-02 上海芯豪微电子有限公司 分支处理方法与系统
CN103927149A (zh) * 2013-01-14 2014-07-16 想象力科技有限公司 间接分支预测
CN105718241A (zh) * 2016-01-18 2016-06-29 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统
CN107783785A (zh) * 2016-08-24 2018-03-09 上海芯豪微电子有限公司 一种没有分支预测损失的分支处理方法与系统
CN110442537A (zh) * 2018-05-02 2019-11-12 美光科技公司 用于不同等级的调用的单独分支目标缓冲区

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2445965B (en) * 2007-01-26 2011-05-04 Advanced Risc Mach Ltd Entry replacement within a data store
CN104423929B (zh) * 2013-08-21 2017-07-14 华为技术有限公司 一种分支预测方法及相关装置
CN106293642B (zh) * 2016-08-08 2018-10-02 合肥工业大学 一种用于粗粒度多核计算系统的分支处理模块及其分支处理机制

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732260B1 (en) * 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
CN102855121A (zh) * 2011-06-29 2013-01-02 上海芯豪微电子有限公司 分支处理方法与系统
CN102662640A (zh) * 2012-04-12 2012-09-12 苏州睿云智芯微电子有限公司 双重分支目标缓冲器和分支目标处理系统及处理方法
CN103927149A (zh) * 2013-01-14 2014-07-16 想象力科技有限公司 间接分支预测
CN105718241A (zh) * 2016-01-18 2016-06-29 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统
CN107783785A (zh) * 2016-08-24 2018-03-09 上海芯豪微电子有限公司 一种没有分支预测损失的分支处理方法与系统
CN110442537A (zh) * 2018-05-02 2019-11-12 美光科技公司 用于不同等级的调用的单独分支目标缓冲区

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HIP:一种基于提示值索引的间接转移预测技术;谢子超等;《电子学报》;20120831;第40卷(第8期);第1523-1531页 *
Improving the accuracy of history-based branch prediction;D.R. Kaeli .etc;《 IEEE Transactions on Computers 》;19970430;第46卷(第4期);第1-4页 *
嵌入式处理器动态分支预测机制研究与设计;黄伟等;《计算机工程》;20081130;第163-165页 *

Also Published As

Publication number Publication date
CN111258649A (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
CN111258649B (zh) 处理器、芯片和电子设备
US10083041B2 (en) Instruction sequence buffer to enhance branch prediction efficiency
US20170322811A1 (en) Instruction sequence buffer to store branches having reliably predictable instruction sequences
CN102272713B (zh) 用于型式辨识处理器的电力消耗管理的方法及系统
CN111310910A (zh) 一种计算装置及方法
EP3217406B1 (en) Memory management method and device, and memory controller
US7447883B2 (en) Allocation of branch target cache resources in dependence upon program instructions within an instruction queue
CN109165307B (zh) 一种特征检索方法、装置和存储介质
US8788887B2 (en) Data processing apparatus, trace unit and diagnostic apparatus
US11436146B2 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
EP3685260B1 (en) Slice construction for pre-executing data dependent loads
US8656133B2 (en) Managing storage extents and the obtaining of storage blocks within the extents
US7346737B2 (en) Cache system having branch target address cache
US11360773B2 (en) Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
US11336294B2 (en) Hybrid, adaptive virtual memory compression
CN110737678B (zh) 一种数据查找方法、装置、设备和存储介质
CN112328630B (zh) 数据查询方法、装置、设备及存储介质
CN115509611A (zh) 基于精简指令集的指令获取方法、装置及计算机设备
US20050132174A1 (en) Predicting instruction branches with independent checking predictions
CN112070144A (zh) 图像聚类方法、装置、电子设备以及存储介质
US20220014705A1 (en) Data processing method and related product
US11899586B1 (en) Energy efficient tag partitioning in cache memory
US20240296153A1 (en) Metadata updating
CN114299423A (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