WO2014206222A1 - 分支目标地址获取方法和装置 - Google Patents
分支目标地址获取方法和装置 Download PDFInfo
- Publication number
- WO2014206222A1 WO2014206222A1 PCT/CN2014/080090 CN2014080090W WO2014206222A1 WO 2014206222 A1 WO2014206222 A1 WO 2014206222A1 CN 2014080090 W CN2014080090 W CN 2014080090W WO 2014206222 A1 WO2014206222 A1 WO 2014206222A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- entry
- branch instruction
- btac
- field
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 410
- 238000010586 diagram Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Definitions
- the embodiments of the present invention relate to computer technologies, and in particular, to a branch target address acquisition method and apparatus.
- a Branch Target Address Cache (hereinafter referred to as BTAC) stores a branch target address of a branch instruction, and the BTAC includes a plurality of entries, each of which contains three fields, which are labels ( Tag ) field, Program Counter (PC) field, valid (valid) field.
- Each branch instruction in the same process corresponds to a unique PC value.
- the PC value is represented by N bits. The first N1 bits are defined as the upper bits of the PC value, and the middle N2 bits are the median of the PC value. The remaining N3 The bits are the lower bits of the PC value, and the sum of Nl, N2, and N3 is N.
- the BTAC entry passes the median index of the PC value.
- the tag field of each entry stores the high bit of the PC value of the branch instruction, and the target PC field stores the branch target address of the branch instruction.
- the field identifies if the information in the entry is valid. In the process of instruction processing, after the instruction is decoded, it can be determined whether the instruction is a branch instruction. If it is a branch instruction, the entry corresponding to the instruction in the BTAC is determined by the median of the PC value corresponding to the instruction, and the entry is determined.
- the high bit of the PC value is matched with the tag field in the determined entry, and it is determined whether the valid field is valid, if the upper bit of the PC is the same as the high value of the PC value of the branch instruction stored in the tag field in the entry, and the valid field is If it is valid, the PC value in the target PC field in the entry is obtained as the branch target address of the branch instruction, thereby completing the branch target address acquisition of the branch instruction.
- Embodiments of the present invention provide a method and apparatus for acquiring a branch target address to avoid inter-process interference.
- a first aspect of the embodiments of the present invention provides a branch target address obtaining method, including: determining, according to a median of a program branch PC value of a current branch instruction, a first strip corresponding to the current branch instruction in a first branch target address cache BTAC Project
- the first BTAC includes at least one first entry, and each first entry corresponds to a median of PC values of one branch instruction, and each first entry includes a label field and a target PC field, where the label Storing a process number of the branch instruction and a high bit of a PC value of the branch instruction in a field, the target PC field storing a branch target address of the branch instruction; determining a process number of the current branch instruction and the current branch Whether the high bit of the PC value of the instruction is the same as the high bit of the PC value of the branch instruction stored in the tag field in the first entry corresponding to the current branch instruction;
- the branch target address in the target PC field in the first entry corresponding to the current branch instruction is obtained as the branch target address of the current branch instruction.
- the first bit of the first BTAC corresponding to the current branch instruction is determined according to a median of the PC value of the current branch instruction
- the objectives include:
- the determining, by the median of the PC value of the current branch instruction, the first one of the first BTAC corresponding to the current branch instruction Before the entry also includes:
- the information of the branch instruction in the second process is written in the process of executing the second process In the first BTAC.
- the The information of the branch instruction in the second process is written into the first BTAC in the process of executing the second process, including:
- the branch target address of the branch instruction is written into the target PC field of the first entry corresponding to the median of the PC value of the branch instruction.
- the second BTAC includes at least one second entry, and each second entry includes a first a field and a second field, where the first field is used to store a high bit, a middle bit, and a process number of a PC value of the branch instruction, and the second field is used to store a branch n-label address of the branch instruction;
- the recovering the second entry that is the same as the process ID of the second process to the corresponding location in the first BTAC includes:
- the first entry in the first BTAC further includes a valid field, The valid field is used to identify whether the content in the first entry in which it is located is valid.
- a second aspect of the embodiments of the present invention provides a branch target address obtaining apparatus, including: a determining module, configured to determine, according to a median of a program count PC value of a current branch instruction, a first branch target address cache BTAC and the current branch instruction Corresponding first entry; wherein, the first BTAC includes at least one first entry, each first entry corresponding to a median of a PC value of a branch instruction, each first entry includes a label field and a target PC field, where the label field stores a process number of the branch instruction and a high bit of a PC value of the branch instruction, the target PC field stores a branch target address of the branch instruction; and a first processing module, configured to: Determining whether a process number of the current branch instruction and a high bit of the PC value of the current branch instruction are a process number of the branch instruction and a branch instruction stored in a tag field in a first entry corresponding to the current branch instruction The upper bits of the PC value are the same; if they are the same, the
- the determining module is specifically configured to determine, in the first BTAC, a content of a label field and a target PC field in a first entry corresponding to a median of a current branch instruction PC value. Whether it is empty; if not empty, determining that the first entry is a first entry corresponding to the current branch instruction; if empty, executing the current branch instruction to acquire a branch of the current branch instruction a target address, and writing the process number, the PC value, and the branch target address of the current branch instruction into the first entry in the first BTAC corresponding to the median of the current branch instruction PC value.
- the apparatus further includes: a second processing module, configured to use the PC value according to the current branch instruction Determining whether to switch from the first process to the second process before determining the first entry in the first BTAC corresponding to the current branch instruction; if not switching from the first process to the second process, performing the current according to the current The median of the PC value of the branch instruction determines a first entry in the first BTAC corresponding to the current branch instruction; if switching from the first process to the second process, the tag field stored in the first BTAC is The content of the first entry whose process number is the same as the process ID of the first process is stored in the second BTAC, and clears the process ID in the tag field stored in the first BTAC and the first process Process number a content of the same first entry; determining whether the second BTAC has a second entry that is the same as the process ID of the second process; if the second BTAC has a process number
- the second processing module is specifically configured to: if one of the instructions in the second process is determined to be a branch instruction; After the branch instruction, the process ID of the second process and the high bit of the PC value of the branch instruction are written in a tag field of the first entry in the first BTAC corresponding to the median of the PC value of the branch instruction, And writing the branch target address of the branch instruction to the target PC field of the first entry corresponding to the median of the PC value of the branch instruction.
- the second BTAC includes at least one second entry, and each second entry includes a first a field and a second field, where the first field is used to store a high bit, a middle bit, and a process number of a PC value of the branch instruction, and the second field is used to store a branch n-label address of the branch instruction;
- the second processing module is configured to: in a median, a label field of a PC value corresponding to a first entry in which the process number in the label field stored in the first BTAC is the same as the process ID of the first process
- the high bit of the PC value and the process number are stored in the first field of the second BTAC, and the branch target address of the target PC field in the first entry is stored in the second field of the second BTAC.
- the second processing module is specifically configured to use, according to the first one of the second entries that are the same as the process ID of the second process
- the content of the field is determined to be restored to the corresponding first entry in the first BTAC and the content of the tag field in the first entry, according to the second entry in the same entry as the process ID of the second process
- the content of the second field determines the content of the target PC field restored to the first entry.
- the first entry in the first BTAC further includes a valid field, The valid field is used to identify whether the content in the first entry in which it is located is valid.
- the branch target address obtaining method and apparatus determines a first entry corresponding to the current branch instruction in the first branch target address cache BTAC according to a median of the PC value of the current branch instruction;
- the first BTAC includes at least one first entry, each first entry corresponding to a median of PC values of a branch instruction, and each first entry includes a label field and a target PC field, where the label field is stored a process ID of the branch instruction and a high bit of a PC value of the branch instruction, the target PC field storing a branch target address of the branch instruction; determining a process number of the current branch instruction and a PC of the current branch instruction Whether the high bit of the value is the same as the process number of the branch instruction stored in the tag field in the first entry corresponding to the current branch instruction and the high bit of the PC of the branch instruction; if the same, acquiring the current branch instruction
- the branch target address in the target PC field in the corresponding first entry is used as the branch target address of the current branch instruction.
- FIG. 1 is a schematic flowchart of Embodiment 1 of a method for acquiring a branch target address according to the present invention
- FIG. 2 is a schematic structural diagram of a first BTAC according to Embodiment 1 of a method for acquiring a branch target address according to the present invention
- 3 is a schematic flowchart of a method for obtaining a branch target address according to a second embodiment of the present invention
- FIG. 4 is a second BTAC structure of a method for obtaining a branch target address according to a second embodiment of the present invention
- FIG. 6 is a schematic structural diagram of Embodiment 1 of a branch target address obtaining apparatus according to the present invention.
- FIG. 8 is a schematic structural diagram of Embodiment 2 of a branch target address obtaining apparatus according to the present invention.
- each instruction corresponds to a unique PC value.
- the PC value is generally represented by N bits.
- the first N1 bits are defined as the upper bits of the PC value, and the middle N2 bits are the median of the PC value.
- the remaining N3 The bits are the lower bits of the PC value, and the sum of Nl, N2, and N3 is N.
- there may be instructions with the same high and middle bits of the PC value Therefore, there may be branch instructions with the same high and middle bits of the PC value, if the information of the branch instruction in the BTAC is not processed. If there is a distinction, there will be a problem of inter-process interference.
- the present invention is to avoid the process interference problem between the information of the branch instructions of different processes in the BTAC, and the process number is added to the label field in the first entry of the BTAC. To distinguish which process the information of the above branch instruction belongs to, so as to avoid the problem of inter-process interference.
- Embodiment 1 is a schematic flowchart of Embodiment 1 of a method for acquiring a branch target address according to the present invention.
- the execution body of this embodiment may be a mobile phone, a personal computer (hereinafter referred to as PC), a tablet computer (PAD), a wireless handheld device, and an MP3.
- Various types of terminal devices such as a player and an MP4 player, may specifically be modules having program processing functions among various terminal devices, for example:
- S101 Determine a first entry in the first BTAC corresponding to the current branch instruction according to a median value of a PC value of the current branch instruction.
- the first BTAC includes at least one first entry, and each first entry corresponds to a median of PC values of a branch instruction, and each first entry includes a label field and a target PC field, where the label field is stored.
- the process number of the branch instruction and the upper bit of the PC value of the branch instruction, and the target PC field stores the branch target address of the branch instruction.
- the branch target address is the PC value of the next instruction to be executed by the processor.
- FIG. 2 is a schematic structural diagram of the first BTAC according to the first embodiment of the branch target address obtaining method.
- the current branch instruction refers to an instruction to be processed by the processor, and the processor first fetches the instruction, and then decodes the instruction, and after decoding, determines whether the instruction is a branch instruction, and if the instruction is a branch instruction, according to the branch instruction (current branch)
- the median of the PC value of the instruction determines a first entry corresponding to the instruction from the first BTAC.
- the content of the label field and the target PC field in the first entry corresponding to the median of the current branch instruction PC value in the first BTAC is null; if not, determining the foregoing
- the first entry is a first entry corresponding to the current branch instruction; if it is empty, executing the current branch instruction to acquire a branch target address of the current branch instruction, and the process number and the PC value of the current branch instruction And the branch target address is written into the first entry in the first BTAC corresponding to the median of the current branch instruction PC value.
- S102 determining whether the process number of the current branch instruction and the high bit of the PC value of the current branch instruction are the process number of the branch instruction stored in the tag field in the first entry corresponding to the current branch instruction, and the PC of the branch instruction. The upper bits of the value are the same; if yes, S103 is executed, and if not, S104 is executed.
- the process ID of the current branch instruction is the process ID of the process to which the branch instruction belongs.
- the process number is also generally called the process ID. Different processes have different process numbers, and different processes can be distinguished by the process number.
- the current branch instruction is executed to acquire a branch target address.
- the content in the first entry is cleared, and the current branch instruction is executed to acquire the branch target address, and then the information of the current branch instruction is written into the first entry, specifically
- the writing method may be: writing the high bit and the process number of the PC value of the current branch instruction into the tag field of the first entry, and writing the branch target address of the current branch instruction into the target PC field of the first entry.
- the first entry corresponding to the current branch instruction in the first BTAC is determined according to a median of the PC value of the current branch instruction; wherein the first BTAC includes at least one first entry, each of the first An entry corresponds to a median of a PC value of a branch instruction, each first entry includes a tag field and a target PC field, wherein the tag field stores a process number of the branch instruction and a high value of a PC value of the branch instruction, The target PC field stores a branch target address of the branch instruction, and determines whether a process number of the current branch instruction and a high value of a PC value of the current branch instruction are stored in a label field in a first entry corresponding to the current branch instruction.
- the process number of the branch instruction is the same as the high bit of the PC value of the branch instruction; if the same, the branch target address in the target PC field in the first entry corresponding to the current branch instruction is acquired as the branch target of the current branch instruction address. Since the process number of the branch instruction and the high value of the PC value of the branch instruction are stored in the tag field of the first BTAC, the method of the present invention is equivalent to the process number of the first BTAC and the current branch instruction, and the high value of the PC value.
- the branch target address of the branch instruction having the same median is the branch target address of the current branch instruction, and therefore, the problem of inter-process interference is avoided.
- FIG. 3 is a schematic flowchart of Embodiment 2 of a method for acquiring a branch target address according to the present invention. As shown in FIG. 3, FIG. 3 is a diagram of the embodiment shown in FIG. Also includes:
- process switching there are many reasons for causing process switching, such as clock interrupts, output outputs (IN/OUT, hereinafter referred to as I/O), and memory failures.
- clock interrupts are the most common cause of process switching.
- the frequency of process switching is also very high, generally the average lms order, which is equivalent to the process switching in the lGhz processor, which is equivalent to every 100,0000 rpm.
- the first process and the second process mentioned here are only for distinguishing between the process before the handover and the process after the handover, that is, the process before the handover is referred to as the first process, and the process after the handover is referred to as the second process.
- S302 Determine a first entry in the first BTAC corresponding to the current branch instruction according to a median value of a PC value of the current branch instruction.
- the first address corresponding to the current branch instruction in the first BTAC may be determined according to the median of the PC value of the current branch instruction.
- S303 Store the content of the first entry in the label field stored in the label field stored in the first BTAC and the process ID of the first process in the second BTAC, and clear the label field stored in the first BTAC.
- the first process stored in the first BTAC and the first process may be The content of the first entry with the same process number is stored in the second BTAC, where the second BTAC includes at least one second entry, and each of the second entries includes a first field and a second field, where The field is used to store the upper, middle and process numbers of the PC value of the branch instruction, and the second field is used to store the branch target address of the branch instruction.
- FIG. 4 is a schematic diagram of the method for acquiring the branch target address according to the present invention.
- a schematic diagram of the second BTAC structure A schematic diagram of the second BTAC structure.
- the content of the first entry in the label field stored in the label field stored in the label field stored in the first BTAC and the process ID of the first process is stored in the second BTAC, specifically:
- the median value of the PC value corresponding to the first entry in the tag field stored in the tag field stored in the first BTAC and the process ID of the first process, the high value of the PC value in the tag field, and the process number are stored in the first In the first field of the BTAC
- the branch target address of the target PC field in the first entry is stored in the second field of the second BTAC.
- This step can be done by sending instructions to the hardware, such as sending a "BTAC invalidate BY ASID" command to instruct the hardware to complete.
- the second BTAC has the same second entry as the process ID of the second process, it indicates that the second process is not the first execution. In the previous execution process, the branch instructions in the second process have been acquired. Information, therefore, the information of each branch instruction of the second process can be restored by executing S305 without performing one more time, thereby improving the processing efficiency of the processor. If the second BTAC does not have the second entry with the same process ID as the second process, it indicates that the second process is the first execution, or the previously executed but the stored branch instruction information has been deleted, and needs to be restarted. Get information about each branch instruction in the second process.
- S305 Restore the second entry with the same process ID as the second process to the corresponding location in the first BTAC.
- the content restored to the target PC field in the first entry is determined according to the content of the second field in the second entry that is the same as the process ID of the second process.
- the information of each branch instruction of the second process may also be considered as the context information of the second process. Therefore, restoring the second entry with the same process ID of the second process to the corresponding position in the first BTAC may also be considered as The process of restoring the context information of the second process.
- the process can also be done by sending instructions to the hardware, such as sending "BTAC recovery from the second BTAC based on ASID".
- S306 Write information of the branch instruction in the second process to the first BTAC in the process of executing the second process.
- one of the instructions in the second process is a branch instruction
- writing the process number of the second process and the high bit of the PC value of the branch instruction Inserting into the tag field of the first entry corresponding to the median of the PC value of the branch instruction in the first BTAC, and writing the branch target address of the branch instruction to the first corresponding to the median of the PC value of the branch instruction The entry in the target PC field.
- each first entry in the first BTAC further includes a valid field, and the valid field is used to identify whether the content in the first entry is valid.
- the content of the valid field can be represented by one bit. For example, " ⁇ , it means valid, "0" means invalid.
- valid is initialized. By setting the contents of the valid field to 0, you can also set one.
- the content of the valid field in the first entry is set to 0 to indicate that the content of the first entry is invalid, and the valid field in the first entry corresponding to a certain process may be set to 0 to indicate that the process corresponds to The content of the first entry is invalid.
- the peripheral logic of the first BTAC of the present invention needs to support multiple operations: For example, the comparison logic circuit of the first BTAC receives " The BTAC Invalidate By ASID" command, the control invalidates the first entry based on the ASID in the first BTAC by the comparison logic circuit, and if the instruction further invalidates the first BTAC based on the ASID entry by a bit indication, If the content that is invalid in a BTAC is stored in the second BTAC, the first BTAC saves the invalidated content to the second BTAC through the control logic of the second BTAC.
- the first BTAC receives the "BTAC Invalidate all” command, and invalidates all the first entries in the first BTAC, if the content of all the first entries that are invalidated by one bit in the instruction is saved in the second BTAC. Then, the first entry that is invalidated is saved in the second BTAC by the control logic of the second BTAC.
- the first BTAC receives the "BTAC recovery from the second BTAC based on ASID", and then restores the ASID-based content of the second BTAC to the first BATC through the control logic of the second BTAC.
- the method of the present invention is equivalent to the process number of the first BTAC and the current branch instruction,
- the branch destination address of the branch instruction with the same high and middle bits of the PC value is For the branch target address of the current branch instruction, the problem of inter-process interference is avoided.
- the second BTAC Further determining whether the second BTAC has the same second entry as the process ID of the second process, and if yes, restoring the second entry with the same process ID of the second process to the corresponding one in the first BTAC Position, if no, the information of the branch instruction in the second process is written into the first BTAC during the execution of the second process.
- only information of each branch instruction of the switched BTAC is stored in the first BTAC, that is, information of each branch instruction of only one process is stored in the first BTAC, and therefore, the first BTAC
- the size is only related to the size of the branch instruction in a process. It is not necessary to set a large BTAC, thus improving the utilization of the BTAC space.
- FIG. 6 is a schematic structural diagram of Embodiment 1 of a branch destination address obtaining apparatus according to the present invention.
- the apparatus in this embodiment includes a determining module 61 and a first processing module 62, where the determining module 61 is configured to use the current branch instruction according to the current branch instruction.
- the median of the program count PC value determines a first entry in the first branch target address cache BTAC corresponding to the current branch instruction; wherein the first BTAC includes at least one first entry, and each first entry corresponds to a branch
- the median of the PC value of the instruction, each first entry contains a tag field and a target PC field, the tag field stores the process number of the branch instruction and the high bit of the PC value of the branch instruction, and the target PC field stores the branch target of the branch instruction
- the first processing module 62 is configured to determine whether the process number of the current branch instruction and the high bit of the PC value of the current branch instruction are the process number and the branch of the branch instruction stored in the label field in the first entry corresponding to the current branch instruction.
- the upper bits of the PC value of the instruction are the same; if they are the same, the target PC in the first entry corresponding to the current branch instruction is obtained.
- the branch destination address in the field is the branch destination address of the current branch instruction.
- the determining module 61 is specifically configured to determine whether the content of the label field and the target PC field in the first entry corresponding to the median of the current branch instruction PC value in the first BTAC is null; if not empty , determining that the first entry is the first entry corresponding to the current branch instruction; if empty, executing the current branch instruction to obtain the branch target address of the current branch instruction, and the current branch instruction
- the process number, the PC value, and the branch target address are written in the first entry in the first BTAC corresponding to the median of the current branch instruction PC value.
- the device in this embodiment can be used to implement the technical solution of the method embodiment shown in FIG. 1 , and the implementation principle and the technical effect are similar, and details are not described herein again.
- FIG. 7 is a schematic structural diagram of Embodiment 2 of a branch target address obtaining apparatus according to the present invention.
- FIG. 7 is based on the embodiment shown in FIG. 6, and further includes a second processing module 63, as shown in FIG.
- the processing module 63 is configured to determine whether to switch from the first process to the second process before determining the first entry in the first BTAC corresponding to the current branch instruction according to the median value of the PC value of the current branch instruction; if not from the first process Switching to the second process, performing a first entry corresponding to the current branch instruction in the first BTAC according to the median of the PC value of the current branch instruction; if switching from the first process to the second process, the first BTAC is The content of the first entry in the tag field stored in the tag field is the same as the process ID of the first process, and is stored in the second BTAC, and clears the process number in the tag field stored in the first BTAC and the process of the first process.
- the content of the same first entry determining whether the second BTAC has the same second entry as the process ID of the second process; if the second BTAC has the same process number as the second process The second entry restores the second entry with the same process ID of the second process to the corresponding location in the first BTAC; if the second BTAC does not have the second entry with the same process ID as the second process And writing information of the branch instruction in the second process to the first BTAC in the process of executing the second process.
- the second processing module 63 is specifically configured to: if it is determined that one of the instructions in the second process is a branch instruction; after processing the branch instruction, the process number of the second process and the PC value of the branch instruction The upper bit is written in the tag field of the first entry corresponding to the median of the PC value of the branch instruction in the first BTAC, and the branch target address of the branch instruction is written to the first block corresponding to the median of the PC value of the branch instruction Destination in the target PC field.
- the second BTAC includes at least one second entry, each of the second entries includes a first field and a second field, where the first field is used to store the high value of the PC value of the branch instruction, Bit and process number, the second field is used to store the branch target address of the branch instruction;
- the second processing module 63 is specifically configured to use the median value of the PC value corresponding to the first entry in the tag field stored in the tag field stored in the first BTAC and the process ID of the first process, and the PC value in the tag field.
- the high bit and the process number are stored in the first field of the second BTAC, and the branch target address of the target PC field in the first entry is stored in the second field of the second BTAC.
- the second processing module 63 is specifically configured to determine, according to the content of the first field in the second entry that is the same as the process ID of the second process, to restore the corresponding first entry in the first BTAC and the first
- the content of the tag field in an entry determines the content of the target PC field restored to the first entry based on the content of the second field in the second entry that is the same as the process ID of the second process.
- each of the first entries in the first BTAC further includes a valid field, and the valid field is used to identify whether the content in the first entry is valid.
- the device in this embodiment can be used to implement the technical solution of the method embodiment shown in FIG. 3, and the implementation principle and the technical effect are similar, and details are not described herein again.
- FIG. 8 is a schematic structural diagram of Embodiment 3 of a branch target address obtaining apparatus according to the present invention.
- the apparatus of this embodiment includes a determiner 81 and a processor 82, wherein the determiner 81 is configured to use a program according to a current branch instruction.
- the median of the count PC value determines a first entry in the first branch target address cache BTAC corresponding to the current branch instruction; wherein the first BTAC includes at least one first entry, each first entry corresponding to a branch instruction
- the median of the PC value, each of the first entries includes a tag field and a target PC field, the tag field stores the process number of the branch instruction and the high bit of the PC value of the branch instruction, and the target PC field stores the branch target address of the branch instruction;
- the processor 82 is configured to determine whether the process number of the current branch instruction and the high bit of the PC value of the current branch instruction are the process number of the branch instruction and the PC value of the branch instruction stored in the tag field in the first entry corresponding to the current branch instruction.
- the high bits are the same; if they are the same, the branch targets in the target PC field in the first entry corresponding to the current branch instruction are obtained. Address as the current branch instruction branch target address.
- the determiner 81 is specifically configured to determine whether the content of the label field and the target PC field in the first entry corresponding to the median of the current branch instruction PC value in the first BTAC is null; if not empty , determining that the first entry is the first entry corresponding to the current branch instruction; if empty, executing the current branch instruction to obtain the branch target address of the current branch instruction, and the process number, PC value, and branch of the current branch instruction The target address is written in the first entry in the first BTAC corresponding to the median of the current branch instruction PC value.
- the device in this embodiment can be used to implement the technical solution of the method embodiment shown in FIG.
- the technical and technical effects are similar and will not be described here.
- the processor 82 is further configured to determine whether to switch from the first process to the first process before determining the first entry in the first BTAC corresponding to the current branch instruction according to the median value of the PC value of the current branch instruction. If the process is not switched from the first process to the second process, the first entry corresponding to the current branch instruction in the first BTAC is determined according to the median of the PC value of the current branch instruction; if the process is switched from the first process to The second process stores the content of the first entry in the label field stored in the first BTAC with the same process ID as the process ID of the first process in the second BTAC, and clears the label field stored in the first BTAC.
- the processor 82 is specifically configured to: if it is determined that one of the instructions in the second process is a branch instruction; after processing the branch instruction, write the process number of the second process and the high value of the PC value of the branch instruction Entering into the tag field of the first entry corresponding to the median of the PC value of the branch instruction in the first BTAC, and writing the branch target address of the branch instruction to the target of the first entry corresponding to the median of the PC value of the branch instruction In the PC field.
- the second BTAC includes at least one second entry, each of the second entries includes a first field and a second field, where the first field is used to store the high value of the PC value of the branch instruction, Bit and process number, the second field is used to store the branch target address of the branch instruction;
- the processor 82 is specifically configured to use a median value of the PC value corresponding to the first entry in which the process number in the tag field stored in the first BTAC is the same as the process ID of the first process, a high value of the PC value in the tag field, and a process.
- the number is stored in the first field of the second BTAC, and the branch target address of the target PC field in the first entry is stored in the second field of the second BTAC.
- the processor 82 is specifically configured to determine, according to the content of the first field in the second entry that is the same as the process ID of the second process, to restore the corresponding first entry in the first BTAC and the first The content of the label field in the destination, according to the second entry in the same process as the process number of the second process The content of the second field determines the content of the target PC field restored to the first entry.
- each of the first entries in the first BTAC further includes a valid field, and the valid field is used to identify whether the content in the first entry is valid.
- the device in this embodiment can be used to implement the technical solution of the method embodiment shown in FIG. 3, and the implementation principle and the technical effect are similar, and details are not described herein again.
- the aforementioned program can be stored in a computer readable storage medium.
- the program when executed, performs the steps including the foregoing method embodiments; and the foregoing storage medium includes: a medium that can store program codes, such as a ROM, a RAM, a magnetic disk, or an optical disk.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种分支目标地址获取方法和装置,通过根据当前分支指令的PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目;判断当前分支指令的进程号和当前分支指令的PC值的高位是否与当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和分支指令的PC的高位相同;若相同,则获取与当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为当前分支指令的分支目标地址。本发明相当于将第一BTAC中与当前分支指令的进程号、PC 值的高位和中位都相同的分支指令的分支目标地址作为了当前分支指令的分支目标地址,因此,避免了进程间干扰的问题。
Description
分支目标地址获取方法和装置 本申请要求于 2013 年 6 月 29 日提交中国专利局、 申请号为 201310270207.6、发明名称为 "分支目标地址获取方法和装置" 的中国专利申 请的优先权, 上述专利申请的全部内容通过引用结合在本申请中。
技术领域
本发明实施例涉及计算机技术, 尤其涉及一种分支目标地址获取方 法和装置。
背景技术
目前的处理器多釆用流水线的结构, 使得顺序执行的指令流可以并 行地执行, 从而提高处理器的执行效率。 然而, 进程中往往会包含分支 指令, 分支指令会打断流水线中指令的处理, 因为处理器无法确定该分 支指令的下一条指令的地址, 直到分支指令处理完毕, 才能获得该分支 的分支目标地址 (下一条指令的地址) , 这样, 会影响处理器的执行效 率。 因此, 现有技术中通过对分支目标地址预测的方法, 获取分支目标 地址, 从而提高处理器的执行效率。
现有技术中, 通过分支目标地址緩存 ( Branch Target Address Cache, 以下简称: BTAC )存储分支指令的分支目标地址, BTAC包含多个条目 ( entry ) , 每一个条目包含 3个字段, 分别为标签 ( tag ) 字段, 目标程 序计数 (Program Counter, 以下简称: PC ) 字段, 有效 (valid ) 字段。 同一个进程中的每条分支指令对应一个唯一的 PC值, PC值由 N个比特 表示, 定义前 N1个比特为 PC值的高位, 中间 N2个比特为 PC值的中 位, 剩下的 N3个比特为 PC值的低位, Nl、 N2、 N3的和为 N。 BTAC 的条目通过 PC值的中位索引,每一个条目的 tag字段存储的为分支指令 的 PC值的高位, 目标 PC字段存储的为分支指令的分支目标地址, valid
字段标识该条目中的信息是否有效。 在指令处理过程中, 指令经过译码 之后, 即可确定该指令是否为分支指令, 若为分支指令, 则通过该指令 对应的 PC值的中位确定 BTAC中与该指令对应的条目, 确定条目之后, 利用 PC值的高位与确定的条目中的 tag字段进行匹配, 并判断 valid字 段是否为有效, 若 PC的高位与条目中的 tag字段存储的分支指令的 PC 值的高位相同且 valid字段为有效, 则获取该条目中的目标 PC字段中的 PC值作为该分支指令的分支目标地址,从而完成分支指令的分支目标地 址获取。
然而, 由于不同的进程中可能存在 PC值的高位和中位都相同指令, 因此, 釆用现有技术的方法, 会存在进程间干扰的问题。
发明内容
本发明实施例提供一种分支目标地址获取方法和装置, 以避免进程 间干扰的问题。
本发明实施例第一方面提供一种分支目标地址获取方法, 包括: 根据当前分支指令的程序计数 PC 值的中位确定第一分支目标地址 緩存 BTAC中与所述当前分支指令对应的第一条目;
其中, 所述第一 BTAC包含至少一个第一条目, 每一个第一条目对 应一个分支指令的 PC 值的中位, 每个第一条目中包含标签字段和目标 PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的 PC值的高位, 所述目标 PC字段存储所述分支指令的分支目标地址; 判断所述当前分支指令的进程号和所述当前分支指令的 PC 值的高 位是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支 指令的进程号和所述分支指令的 PC值的高位相同;
若相同, 则获取与所述当前分支指令对应的第一条目中的目标 PC 字段中的分支目标地址作为所述当前分支指令的分支目标地址。
结合第一方面, 在第一种可能的实现方式中, 所述根据当前分支指 令的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一条
目包括:
判断第一 BTAC中与当前分支指令 PC值的中位对应的第一条目中 的标签字段和目标 PC字段的内容是否为空;
若不为空, 则确定所述第一条目为与所述当前分支指令对应的第一 条目;
若为空, 则执行所述当前分支指令获取所述当前分支指令的分支目 标地址, 并将所述当前分支指令的进程号、 PC值和所述分支目标地址写 入所述第一 BTAC中与所述当前分支指令 PC值的中位对应的第一条目 中。
结合第一方面或第一种可能的实现方式, 在第二种可能的实现方式 中, 所述根据当前分支指令的 PC值的中位确定第一 BTAC 中与所述当 前分支指令对应的第一条目之前, 还包括:
判断是否从第一进程切换到第二进程;
若不从第一进程切换到第二进程, 则执行所述根据当前分支指令的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一条目; 若从第一进程切换到第二进程, 则将所述第一 BTAC中存储的标签 字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于 第二 BTAC中, 并清空所述第一 BTAC中存储的所述标签字段中的进程 号与所述第一进程的进程号相同的第一条目的内容;
判断所述第二 BTAC中是否具有与所述第二进程的进程号相同的第 二条目;
若所述第二 BTAC 中具有与所述第二进程的进程号相同的第二条 目 , 则将所述与所述第二进程的进程号相同的第二条目恢复到第一 BTAC中相应的位置;
若所述第二 BTAC中不具有与所述第二进程的进程号相同的第二条 目, 则在执行所述第二进程的过程中将所述第二进程中的分支指令的信 息写入第一 BTAC中。
结合第二种可能的实现方式, 在第三种可能的实现方式中, 所述在
执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第 一 BTAC中, 包括:
若确定所述第二进程中的其中一条指令为分支指令;
则在处理完所述分支指令后, 将所述第二进程的进程号和所述分支 指令的 PC值的高位写入第一 BTAC中与所述分支指令的 PC值的中位对 应的第一条目的标签字段中, 并将所述分支指令的分支目标地址写入与 所述分支指令的 PC值的中位对应的第一条目的目标 PC字段中。
结合第二种可能的实现方式或第三种可能的实现方式, 在第四种可 能的实现方式中, 所述第二 BTAC包括至少一个第二条目, 每一个第二 条目中包含第一字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高位、 中位以及进程号, 第二字段用于存储所述分支指令的分支 n标地址;
将所述第一 BTAC中存储的标签字段中的进程号与所述第一进程的 进程号相同的第一条目的内容存储于第二 BTAC中包括:
将所述第一 BTAC中存储的标签字段中的进程号与所述第一进程的 进程号相同的第一条目对应的 PC值的中位、标签字段中的 PC值的高位 以及进程号存储于第二 BTAC的第一字段中, 将所述第一条目中的目标 PC字段的分支目标地址存储于第二 BTAC的第二字段中。
结合第四种可能的实现方式, 在第五种可能的实现方式中, 所述将 所述与所述第二进程的进程号相同的第二条目恢复到第一 BTAC中相应 的位置包括:
根据所述与所述第二进程的进程号相同的第二条目中的第一字段的 内容确定恢复到第一 BTAC中对应的第一条目以及所述第一条目中的标 签字段的内容, 根据所述与所述第二进程的进程号相同的第二条目中的 第二字段的内容确定恢复到所述第一条目中的目标 PC字段的内容。
结合第一方面或第一方面的第一种至第五种可能的实现方式, 在第 六种可能的实现方式中, 所述第一 BTAC中的每个第一条目中还包括有 效字段, 所述有效字段用于标识其所在第一条目中的内容是否有效。
本发明实施例第二方面提供一种分支目标地址获取装置, 包括: 确定模块, 用于根据当前分支指令的程序计数 PC 值的中位确定第 一分支目标地址緩存 BTAC中与所述当前分支指令对应的第一条目; 其中, 所述第一 BTAC包含至少一个第一条目, 每一个第一条目对 应一个分支指令的 PC 值的中位, 每个第一条目中包含标签字段和目标 PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的 PC值的高位, 所述目标 PC字段存储所述分支指令的分支目标地址; 第一处理模块, 用于判断所述当前分支指令的进程号和所述当前分 支指令的 PC 值的高位是否与所述当前分支指令对应的第一条目中的标 签字段中存储的分支指令的进程号和所述分支指令的 PC值的高位相同; 若相同, 则获取与所述当前分支指令对应的第一条目中的目标 PC 字段 中的分支目标地址作为所述当前分支指令的分支目标地址。
结合第二方面, 在第一种可能的实现方式中, 确定模块具体用于判 断第一 BTAC中与当前分支指令 PC值的中位对应的第一条目中的标签 字段和目标 PC 字段的内容是否为空; 若不为空, 则确定所述第一条目 为与所述当前分支指令对应的第一条目; 若为空, 则执行所述当前分支 指令获取所述当前分支指令的分支目标地址, 并将所述当前分支指令的 进程号、 PC值和所述分支目标地址写入所述第一 BTAC中与所述当前分 支指令 PC值的中位对应的第一条目中。
结合第二方面, 或第二方面的第一种可能的实现方式, 在第二种可 能的实现方式中, 所述装置还包括: 第二处理模块, 用于根据当前分支 指令的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一 条目之前, 判断是否从第一进程切换到第二进程; 若不从第一进程切换 到第二进程, 则执行所述根据当前分支指令的 PC 值的中位确定第一 BTAC 中与所述当前分支指令对应的第一条目; 若从第一进程切换到第 二进程, 则将所述第一 BTAC中存储的标签字段中的进程号与所述第一 进程的进程号相同的第一条目的内容存储于第二 BTAC中, 并清空所述 第一 BTAC中存储的所述标签字段中的进程号与所述第一进程的进程号
相同的第一条目的内容; 判断所述第二 BTAC中是否具有与所述第二进 程的进程号相同的第二条目; 若所述第二 BTAC中具有与所述第二进程 的进程号相同的第二条目, 则将所述与所述第二进程的进程号相同的第 二条目恢复到第一 BTAC中相应的位置; 若所述第二 BTAC中不具有与 所述第二进程的进程号相同的第二条目, 则在执行所述第二进程的过程 中将所述第二进程中的分支指令的信息写入第一 BTAC中。
结合第二种可能的实现方式, 在第三种可能的实现方式中, 所述第 二处理模块具体用于若确定所述第二进程中的其中一条指令为分支指 令; 则在处理完所述分支指令后, 将所述第二进程的进程号和所述分支 指令的 PC值的高位写入第一 BTAC中与所述分支指令的 PC值的中位对 应的第一条目的标签字段中, 并将所述分支指令的分支目标地址写入与 所述分支指令的 PC值的中位对应的第一条目的目标 PC字段中。
结合第二种可能的实现方式或第三种可能的实现方式, 在第四种可 能的实现方式中, 所述第二 BTAC包括至少一个第二条目, 每一个第二 条目中包含第一字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高位、 中位以及进程号, 第二字段用于存储所述分支指令的分支 n标地址;
所述第二处理模块具体用于将所述第一 BTAC中存储的标签字段中 的进程号与所述第一进程的进程号相同的第一条目对应的 PC值的中位、 标签字段中的 PC值的高位以及进程号存储于第二 BTAC的第一字段中 , 将所述第一条目中的目标 PC字段的分支目标地址存储于第二 BTAC的 第二字段中。
结合第四种可能的实现方式, 在第五种可能的实现方式中, 所述第 二处理模块具体用于根据所述与所述第二进程的进程号相同的第二条目 中的第一字段的内容确定恢复到第一 BTAC中对应的第一条目以及所述 第一条目中的标签字段的内容, 根据所述与所述第二进程的进程号相同 的第二条目中的第二字段的内容确定恢复到所述第一条目中的目标 PC 字段的内容。
结合第二方面或第二方面的第一种至第五种可能的实现方式, 在第 六种可能的实现方式中, 所述第一 BTAC中的每个第一条目中还包括有 效字段, 所述有效字段用于标识其所在第一条目中的内容是否有效。
本发明实施例提供的分支目标地址获取方法和装置, 通过根据当前 分支指令的 PC值的中位确定第一分支目标地址緩存 BTAC 中与所述当 前分支指令对应的第一条目; 其中, 所述第一 BTAC包含至少一个第一 条目, 每一个第一条目对应一个分支指令的 PC 值的中位, 每个第一条 目中包含标签字段和目标 PC 字段, 所述标签字段中存储所述分支指令 的进程号和所述分支指令的 PC值的高位, 所述目标 PC字段存储所述分 支指令的分支目标地址; 判断所述当前分支指令的进程号和所述当前分 支指令的 PC 值的高位是否与所述当前分支指令对应的第一条目中的标 签字段中存储的分支指令的进程号和所述分支指令的 PC 的高位相同; 若相同, 则获取与所述当前分支指令对应的第一条目中的目标 PC 字段 中的分支目标地址作为所述当前分支指令的分支目标地址。 由于第一 BTAC 的标签字段中存储了分支指令的进程号和分支指令的 PC值的高 位, 因此, 本发明的方法相当于将第一 BTAC中与当前分支指令的进程 号、 PC值的高位和中位都相同的分支指令的分支目标地址作为了当前分 支指令的分支目标地址, 因此, 避免了进程间干扰的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将 对实施例或现有技术描述中所需要使用的附图作简单地介绍, 显而易见 地, 下面描述中的附图是本发明的一些实施例, 对于本领域普通技术人 员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其他 的附图。
图 1为本发明分支目标地址获取方法实施例一的流程示意图; 图 2为本发明分支目标地址获取方法实施例一的第一 BTAC结构示 意图;
图 3为本发明分支目标地址获取方法实施例二的流程示意图; 图 4为本发明分支目标地址获取方法实施例二的第二 BTAC结构示 图 5为本发明分支目标地址获取方法实施例二的应用场景图 图 6为本发明分支目标地址获取装置实施例一的结构示意图 图 7为本发明分支目标地址获取装置实施例二的结构示意图 图 8为本发明分支目标地址获取装置实施例三的结构示意图
具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发 明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获 得的所有其他实施例, 都属于本发明保护的范围。
在同一个进程中, 每条指令对应唯一的 PC值, PC值一般由 N个比特表 示, 定义前 N1个比特为 PC值的高位, 中间 N2个比特为 PC值的中位, 剩下 的 N3个比特为 PC值的低位, Nl、 N2、 N3的和为 N。 在不同的进程中, 可 能存在 PC值的高位和中位都相同的指令, 因此, 也就可能存在 PC值的高位 和中位都相同的分支指令, 如果不对 BTAC中的分支指令的信息进行进程的 区分的话, 则会存在进程间干扰的问题, 本发明正是为了避免 BTAC中不同 进程的分支指令的信息之间的进程干扰问题, 在 BTAC的第一条目中的标签 字段增加了进程号, 以区分上述分支指令的信息属于哪个进程, 从而避免进 程间干扰的问题。
下面以几个具体的实施例对本发明的技术方案进行详细的描述。
图 1 为本发明分支目标地址获取方法实施例一的流程示意图, 本实施例 的执行主体可以是手机、 个人计算机(Personal computer, 以下简称: PC ) 、 平板电脑(PAD ) 、 无线手持设备、 MP3播放器、 MP4播放器等各种类型的 终端设备, 具体可以是各种终端设备中具有程序处理功能的模块, 例如: 中
央处理器( Central Processing Unit, 以下简称: CPU )等, 如图 1所示, 本实 施例的方法包括:
S101 : 根据当前分支指令的 PC值的中位确定第一 BTAC中与上述当前 分支指令对应的第一条目。
其中, 第一 BTAC包含至少一个第一条目, 每一个第一条目对应一个分 支指令的 PC值的中位, 每个第一条目中包含标签字段和目标 PC字段, 上述 标签字段中存储上述分支指令的进程号和上述分支指令的 PC值的高位,上述 目标 PC字段存储所述分支指令的分支目标地址。分支目标地址是处理器要执 行的下一条指令的 PC值; 如图 2所示, 图 2为本发明分支目标地址获取方法 实施例一的第一 BTAC的结构示意图。
当前分支指令是指处理器将要处理的指令, 处理器先取指令, 然后, 对 对指令解码, 解码之后即可确定该指令是否为分支指令, 若该指令为分支指 令则根据该分支指令(当前分支指令)的 PC值的中位从第一 BTAC中确定与 该指令对应对应的第一条目。
作为一种可行的实现方式:判断第一 BTAC中与当前分支指令 PC值的中 位对应的第一条目中的标签字段和目标 PC字段的内容是否为空; 若不为空, 则确定上述第一条目为与所述当前分支指令对应的第一条目; 若为空, 则执 行上述当前分支指令获取上述当前分支指令的分支目标地址, 并将上述当前 分支指令的进程号、 PC值和所述分支目标地址写入所述第一 BTAC中与所述 当前分支指令 PC值的中位对应的第一条目中。
S102:判断上述当前分支指令的进程号和上述当前分支指令的 PC值的高 位是否与上述当前分支指令对应的第一条目中的标签字段中存储的分支指令 的进程号和上述分支指令的 PC值的高位相同; 若是, 则执行 S103 , 若否, 则执行 S104。
当前分支指令的进程号即为上述分支指令所属的进程的进程号, 进程号 一般也称为进程 ID, 不同的进程具有不同的进程号, 可以通过进程号区分不 同的进程。 在 S101确定了当前分支指令对应的第一条目之后, 判断当前分支 指令的进程号和 PC值的高位是否与所确定的第一条目中的标签字段中的分
支指令的进程号和分支指令的 PC值的高位相同, 若相同, 则说明该第一条目 中存储的为上述当前分支指令的信息, 则执行 S103。 若不相同, 则说明该第 一条目中存储的不为上述当前分支指令的信息, 也说明, 第一 BTAC中未存 储上述当前分支指令的信息, 则执行 S104。
S103:获取与上述当前分支指令对应的第一条目中的目标 PC字段中的分
S104: 其他操作。
作为一种可行的实现方式, 执行上述当前分支指令获取分支目标地址。 作为另一种可行的实现方式, 清空上述第一条目中的内容, 并执行上述 当前分支指令获取分支目标地址, 然后将上述当前分支指令的信息写入到上 述第一条目中, 具体地写入方法可以是, 将当前分支指令的 PC值的高位和进 程号写入上述第一条目的标签字段中, 将当前分支指令的分支目标地址写入 上述第一条目的目标 PC字段中。
本实施例中,通过根据当前分支指令的 PC值的中位确定第一 BTAC中与 上述当前分支指令对应的第一条目; 其中, 上述第一 BTAC包含至少一个第 一条目, 每一个第一条目对应一个分支指令的 PC值的中位, 每个第一条目中 包含标签字段和目标 PC字段,上述标签字段中存储上述分支指令的进程号和 上述分支指令的 PC值的高位, 上述目标 PC字段存储上述分支指令的分支目 标地址;判断上述当前分支指令的进程号和上述当前分支指令的 PC值的高位 是否与上述当前分支指令对应的第一条目中的标签字段中存储的分支指令的 进程号和上述分支指令的 PC值的高位相同; 若相同, 则获取与上述当前分支 指令对应的第一条目中的目标 PC 字段中的分支目标地址作为上述当前分支 指令的分支目标地址。 由于第一 BTAC的标签字段中存储了分支指令的进程 号和分支指令的 PC值的高位, 因此,本发明的方法相当于将第一 BTAC中与 当前分支指令的进程号、 PC值的高位和中位都相同的分支指令的分支目标地 址作为了当前分支指令的分支目标地址, 因此, 避免了进程间干扰的问题。
图 3为本发明分支目标地址获取方法实施例二的流程示意图, 如图 3所 示, 图 3是在图 1所示实施例的基础上, 在执行图 1所示实施例的步骤之前,
还包括:
S301 : 判断是否从第一进程切换到第二进程; 若否, 则执行 S302, 若是, 则执行 S303。
引起进程切换的原因很多, 例如时钟中断、 输出输出 (IN/OUT, 以下简 称: I/O ) 中断和内存失效等, 其中, 时钟中断是引起进程切换的最常见的原 因。 进程切换的频率也很高, 一般为平均 lms依次, 相当于在 lGhz的处理器 当中, 折合大约每 100,0000转就发生依次进程切换。 这里所说的第一进程和 第二进程只是为区分切换前的进程和切换后的进程, 也就是切换前的进程称 作第一进程, 切换后的进程称作第二进程。
S302: 根据当前分支指令的 PC值的中位确定第一 BTAC中与上述当前 分支指令对应的第一条目。
若不进行进程切换, 则在确定当前指令为分支指令之后, 即可根据当前 分支指令的 PC值的中位确定第一 BTAC中与上述当前分支指令对应地第一条 址。
S303: 将上述第一 BTAC中存储的标签字段中的进程号与上述第一进程 的进程号相同的第一条目的内容存储于第二 BTAC中,并清空上述第一 BTAC 中存储的上述标签字段中的进程号与上述第一进程的进程号相同的第一条目 的内容。
若要进行进程切换, 则第一 BTAC中存储的切换前的第一进程的分支指 令的信息对于切换后的第二进程没有任何意义, 因此, 可以将第一 BTAC中 存储的与上述第一进程的进程号相同的第一条目的内容存储于第二 BTAC 中, 其中, 第二 BTAC包括至少一个第二条目, 每一个第二条目中包含第一 字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高位、 中位以 及进程号, 第二字段用于存储上述分支指令的分支目标地址; 如图 4所示, 图 4为本发明分支目标地址获取方法实施例二的第二 BTAC结构示意图。
将上述第一 BTAC中存储的标签字段中的进程号与上述第一进程的进程 号相同的第一条目的内容存储于第二 BTAC中具体为:
将上述第一 BTAC中存储的标签字段中的进程号与上述第一进程的进程 号相同的第一条目对应的 PC值的中位、 标签字段中的 PC值的高位以及进程 号存储于第二 BTAC的第一字段中,将上述第一条目中的目标 PC字段的分支 目标地址存储于第二 BTAC的第二字段中。
本步骤可通过发送指令指导硬件完成, 例如发送" BTAC invalidate BY ASID"指令指导硬件完成。
S304: 判断上述第二 BTAC中是否具有与上述第二进程的进程号相同的 第二条目; 若是, 则执行 S305, 若否, 则执行 S306。
若第二 BTAC中具有与第二进程的进程号相同的第二条目, 则说明第二 进程不是第一次执行, 在之前的执行过程中, 已经获取了第二进程中的各分 支指令的信息, 因此, 可通过执行 S305恢复第二进程的各分支指令的信息, 而无需再执行一遍, 提高处理器的处理效率。 若第二 BTAC中不具有与第二 进程的进程号相同的第二条目, 则说明第二进程是第一次执行, 或者, 之前 执行过但是存储的分支指令的信息已被删除, 需要重新获取第二进程中各分 支指令的信息。
S305: 将与第二进程的进程号相同的第二条目恢复到第一 BTAC中相应 的位置。
具体地, 根据与第二进程的进程号相同的第二条目中的第一字段的内容 确定恢复到第一 BTAC中对应的第一条目以及上述第一条目中的标签字段的 内容, 根据与第二进程的进程号相同的第二条目中的第二字段的内容确定恢 复到上述第一条目中的目标 PC字段的内容。
也可以认为第二进程的各分支指令的信息为第二进程的上下文信息, 因 此,将与第二进程的进程号相同的第二条目恢复到第一 BTAC中相应的位置, 也可以认为是恢复第二进程的上下文信息的过程。
该过程也可以通过发送指令指导硬件完成, 例如发送" BTAC recovery from the second BTAC based on ASID"。
S306: 执行上述第二进程的过程中将上述第二进程中的分支指令的信息 写入第一 BTAC中。
作为一种可行的实现方式: 若确定上述第二进程中的其中一条指令为分 支指令; 则在处理完上述分支指令后, 将上述第二进程的进程号和上述分支 指令的 PC值的高位写入第一 BTAC中与上述分支指令的 PC值的中位对应的 第一条目的标签字段中, 并将上述分支指令的分支目标地址写入与上述分支 指令的 PC值的中位对应的第一条目的目标 PC字段中。
在本实施例中, 第一 BTAC中的每个第一条目中还包括有效字段, 上述 有效字段用于标识其所在第一条目中的内容是否有效。 例如: 有效字段的内 容可用一个比特表示,例如 "Γ,表示有效, "0"表示无效,一般在 BTAC中 valid 在初始化时, 通过将有效字段的内容全部置为 0 实现, 也可以将某一个第一 条目中的有效字段的内容置为 0来表示该第一条目的内容的无效, 也可以将 某一进程对应的第一条目中的有效字段都置为 0 来表示该进程对应的第一条 目的内容都是无效的。
图 5为本发明分支目标地址获取方法实施例二的应用场景图, 如图 5所 示, 本发明的第一 BTAC的外围逻辑需要支持多种操作: 例如, 第一 BTAC 的比较逻辑电路接收" BTAC Invalidate By ASID"指令,则控制通过比较逻辑电 路将第一 BTAC中基于 ASID的第一条目无效掉, 若该指令还通过一个比特 指示将第一 BTAC基于 ASID的条目无效掉之后, 将第一 BTAC中无效掉的 的内容保存在第二 BTAC当中, 则第一 BTAC通过第二 BTAC的控制逻辑电 路将无效掉的内容保存到第二 BTAC中。第一 BTAC接收" BTAC Invalidate all" 指令, 则将第一 BTAC中所有的第一条目无效掉, 若该指令中还通过一个比 特指示无效掉的所有第一条目的内容保存在第二 BTAC 当中, 则通过第二 BTAC的控制逻辑电路将无效掉的第一条目保存在第二 BTAC中。第一 BTAC 接收" BTAC recovery from the second BTAC based on ASID", 则通过第二 BTAC的控制逻辑电路将第二 BTAC中基于 ASID的内容恢复到第一 BATC 中。
本实施例中, 由于第一 BTAC的标签字段中存储了分支指令的进程号和 分支指令的 PC值的高位, 因此,本发明的方法相当于将第一 BTAC中与当前 分支指令的进程号、 PC值的高位和中位都相同的分支指令的分支目标地址作
为了当前分支指令的分支目标地址, 因此, 避免了进程间干扰的问题。 并且, 通过判断是否从第一进程切换到第二进程, 若否, 则根据当前分支指令的 PC 值的中位确定第一 BTAC中与上述当前指令对应的第一条目; 若是, 则将第 一 BTAC中存储的标签字段中的进程号与上述第一进程的进程号相同的第一 条目的内容存储于第二 BTAC中, 并清空上述第一 BTAC中存储的上述标签 字段中的进程号与上述第一进程的进程号相同的第一条目的内容。 进一步地 判断上述第二 BTAC中是否具有与上述第二进程的进程号相同的第二条目, 若是, 则将与第二进程的进程号相同的第二条目恢复到第一 BTAC中相应的 位置, 若否, 则执行第二进程的过程中将上述第二进程中的分支指令的信息 写入第一 BTAC中。 可见釆用本发明的技术方案, 第一 BTAC中只存储于切 换后的 BTAC的各分支指令的信息, 也就是第一 BTAC中只存储一个进程的 各分支指令的信息, 因此, 第一 BTAC的大小只跟一个进程中的分支指令的 大小有关, 不必设置较大的 BTAC, 从而提高 BTAC空间的利用率。
图 6为本发明分支目标地址获取装置实施例一的结构示意图, 如图 6所 示, 本实施例的装置包括确定模块 61 和第一处理模块 62, 其中, 确定模块 61用于根据当前分支指令的程序计数 PC值的中位确定第一分支目标地址緩 存 BTAC中与当前分支指令对应的第一条目; 其中, 第一 BTAC包含至少一 个第一条目, 每一个第一条目对应一个分支指令的 PC值的中位, 每个第一条 目中包含标签字段和目标 PC字段,标签字段中存储分支指令的进程号和分支 指令的 PC值的高位, 目标 PC字段存储分支指令的分支目标地址; 第一处理 模块 62用于判断当前分支指令的进程号和当前分支指令的 PC值的高位是否 与当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和 分支指令的 PC值的高位相同; 若相同, 则获取与当前分支指令对应的第一条 目中的目标 PC字段中的分支目标地址作为当前分支指令的分支目标地址。
在上述实施例中,确定模块 61具体用于判断第一 BTAC中与当前分支指 令 PC值的中位对应的第一条目中的标签字段和目标 PC 字段的内容是否为 空; 若不为空, 则确定第一条目为与当前分支指令对应的第一条目; 若为空, 则执行当前分支指令获取当前分支指令的分支目标地址, 并将当前分支指令
的进程号、 PC值和分支目标地址写入第一 BTAC中与当前分支指令 PC值的 中位对应的第一条目中。
本实施例的装置可用于执行图 1 所示方法实施例的技术方案, 其实现原 理和技术效果类似, 此处不再赘述。
图 7为本发明分支目标地址获取装置实施例二的结构示意图, 图 7是在 图 6所示实施例的基础上, 进一步地, 还包括第二处理模块 63 , 如图 7所示, 第二处理模块 63用于根据当前分支指令的 PC值的中位确定第一 BTAC中与 当前分支指令对应的第一条目之前, 判断是否从第一进程切换到第二进程; 若不从第一进程切换到第二进程,则执行根据当前分支指令的 PC值的中位确 定第一 BTAC中与当前分支指令对应的第一条目; 若从第一进程切换到第二 进程, 则将第一 BTAC中存储的标签字段中的进程号与第一进程的进程号相 同的第一条目的内容存储于第二 BTAC中, 并清空第一 BTAC中存储的标签 字段中的进程号与第一进程的进程号相同的第一条目的内容;判断第二 BTAC 中是否具有与第二进程的进程号相同的第二条目; 若第二 BTAC中具有与第 二进程的进程号相同的第二条目, 则将与第二进程的进程号相同的第二条目 恢复到第一 BTAC中相应的位置; 若第二 BTAC中不具有与第二进程的进程 号相同的第二条目, 则在执行第二进程的过程中将第二进程中的分支指令的 信息写入第一 BTAC中。
在上述实施例中, 第二处理模块 63具体用于若确定第二进程中的其中一 条指令为分支指令; 则在处理完分支指令后, 将第二进程的进程号和分支指 令的 PC值的高位写入第一 BTAC中与分支指令的 PC值的中位对应的第一条 目的标签字段中,并将分支指令的分支目标地址写入与分支指令的 PC值的中 位对应的第一条目的目标 PC字段中。
在上述实施例中, 第二 BTAC包括至少一个第二条目, 每一个第二条目 中包含第一字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高 位、 中位以及进程号, 第二字段用于存储分支指令的分支目标地址;
第二处理模块 63具体用于将第一 BTAC中存储的标签字段中的进程号与 第一进程的进程号相同的第一条目对应的 PC值的中位、 标签字段中的 PC值
的高位以及进程号存储于第二 BTAC的第一字段中,将第一条目中的目标 PC 字段的分支目标地址存储于第二 BTAC的第二字段中。
在上述实施例中, 第二处理模块 63具体用于根据与第二进程的进程号相 同的第二条目中的第一字段的内容确定恢复到第一 BTAC中对应的第一条目 以及第一条目中的标签字段的内容, 根据与第二进程的进程号相同的第二条 目中的第二字段的内容确定恢复到第一条目中的目标 PC字段的内容。
在上述实施例中, 第一 BTAC中的每个第一条目中还包括有效字段, 有 效字段用于标识其所在第一条目中的内容是否有效。
本实施例的装置可用于执行图 3 所示方法实施例的技术方案, 其实现原 理和技术效果类似, 此处不再赘述。
图 8为本发明分支目标地址获取装置实施例三的结构示意图, 如图 8所 示, 本实施例的装置包括确定器 81和处理器 82, 其中, 确定器 81用于根据 当前分支指令的程序计数 PC值的中位确定第一分支目标地址緩存 BTAC中与 当前分支指令对应的第一条目; 其中, 第一 BTAC包含至少一个第一条目, 每一个第一条目对应一个分支指令的 PC值的中位,每个第一条目中包含标签 字段和目标 PC字段, 标签字段中存储分支指令的进程号和分支指令的 PC值 的高位, 目标 PC字段存储分支指令的分支目标地址; 处理器 82用于判断当 前分支指令的进程号和当前分支指令的 PC值的高位是否与当前分支指令对 应的第一条目中的标签字段中存储的分支指令的进程号和分支指令的 PC值 的高位相同; 若相同, 则获取与当前分支指令对应的第一条目中的目标 PC字 段中的分支目标地址作为当前分支指令的分支目标地址。
在上述实施例中,确定器 81具体用于判断第一 BTAC中与当前分支指令 PC值的中位对应的第一条目中的标签字段和目标 PC字段的内容是否为空; 若不为空, 则确定第一条目为与当前分支指令对应的第一条目; 若为空, 则 执行当前分支指令获取当前分支指令的分支目标地址, 并将当前分支指令的 进程号、 PC值和分支目标地址写入第一 BTAC中与当前分支指令 PC值的中 位对应的第一条目中。
本实施例的装置可用于执行图 1 所示方法实施例的技术方案, 其实现原
理和技术效果类似, 此处不再赘述。
在上述实施例中, 处理器 82还用于用于根据当前分支指令的 PC值的中 位确定第一 BTAC中与当前分支指令对应的第一条目之前, 判断是否从第一 进程切换到第二进程; 若不从第一进程切换到第二进程, 则执行根据当前分 支指令的 PC值的中位确定第一 BTAC中与当前分支指令对应的第一条目;若 从第一进程切换到第二进程, 则将第一 BTAC中存储的标签字段中的进程号 与第一进程的进程号相同的第一条目的内容存储于第二 BTAC中, 并清空第 一 BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目 的内容; 判断第二 BTAC中是否具有与第二进程的进程号相同的第二条目; 若第二 BTAC中具有与第二进程的进程号相同的第二条目, 则将与第二进程 的进程号相同的第二条目恢复到第一 BTAC中相应的位置; 若第二 BTAC中 不具有与第二进程的进程号相同的第二条目, 则在执行第二进程的过程中将 第二进程中的分支指令的信息写入第一 BTAC中。
在上述实施例中, 处理器 82具体用于若确定第二进程中的其中一条指令 为分支指令; 则在处理完分支指令后, 将第二进程的进程号和分支指令的 PC 值的高位写入第一 BTAC中与分支指令的 PC值的中位对应的第一条目的标签 字段中,并将分支指令的分支目标地址写入与分支指令的 PC值的中位对应的 第一条目的目标 PC字段中。
在上述实施例中, 第二 BTAC包括至少一个第二条目, 每一个第二条目 中包含第一字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高 位、 中位以及进程号, 第二字段用于存储分支指令的分支目标地址;
处理器 82具体用于将第一 BTAC中存储的标签字段中的进程号与第一进 程的进程号相同的第一条目对应的 PC值的中位、 标签字段中的 PC值的高位 以及进程号存储于第二 BTAC的第一字段中,将第一条目中的目标 PC字段的 分支目标地址存储于第二 BTAC的第二字段中。
在上述实施例中, 处理器 82具体用于根据与第二进程的进程号相同的第 二条目中的第一字段的内容确定恢复到第一 BTAC中对应的第一条目以及第 一条目中的标签字段的内容, 根据与第二进程的进程号相同的第二条目中的
第二字段的内容确定恢复到第一条目中的目标 PC字段的内容。
在上述实施例中, 第一 BTAC中的每个第一条目中还包括有效字段, 有 效字段用于标识其所在第一条目中的内容是否有效。
本实施例的装置可用于执行图 3 所示方法实施例的技术方案, 其实现原 理和技术效果类似, 此处不再赘述。
本领域普通技术人员可以理解: 实现上述各方法实施例的全部或部分步 骤可以通过程序指令相关的硬件来完成。 前述的程序可以存储于一计算机可 读取存储介质中。 该程序在执行时, 执行包括上述各方法实施例的步骤; 而 前述的存储介质包括: ROM、 RAM, 磁碟或者光盘等各种可以存储程序代码 的介质。
最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的说明, 本领域的普通 技术人员应当理解: 其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims
1、 一种分支目标地址获取方法, 其特征在于, 包括:
根据当前分支指令的程序计数 PC值的中位确定第一分支目标地址緩 存 BTAC中与所述当前分支指令对应的第一条目;
其中, 所述第一 BTAC 包含至少一个第一条目, 每一个第一条目对 应一个分支指令的 PC 值的中位, 每个第一条目中包含标签字段和目标 PC字段, 所述标签字段中存储所述分支指令的进程号和所述分支指令的 PC值的高位, 所述目标 PC字段存储所述分支指令的分支目标地址; 判断所述当前分支指令的进程号和所述当前分支指令的 PC值的高位 是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支指 令的进程号和所述分支指令的 PC值的高位相同;
若相同, 则获取与所述当前分支指令对应的第一条目中的目标 PC字 段中的分支目标地址作为所述当前分支指令的分支目标地址。
2、 根据权利要求 1所述的方法, 其特征在于, 所述根据当前分支指 令的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一条目 包括:
判断第一 BTAC中与当前分支指令 PC值的中位对应的第一条目中的 标签字段和目标 PC字段的内容是否为空;
若不为空, 则确定所述第一条目为与所述当前分支指令对应的第一 条目;
若为空, 则执行所述当前分支指令获取所述当前分支指令的分支目 标地址, 并将所述当前分支指令的进程号、 PC值和所述分支目标地址写 入所述第一 BTAC 中与所述当前分支指令 PC值的中位对应的第一条目 中。
3、 根据权利要求 1或 2所述的方法, 其特征在于, 所述根据当前分 支指令的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一 条目之前, 还包括:
判断是否从第一进程切换到第二进程;
若不从第一进程切换到第二进程, 则执行所述根据当前分支指令的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一条目; 若从第一进程切换到第二进程, 则将所述第一 BTAC 中存储的标签 字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于
第二 BTAC中, 并清空所述第一 BTAC中存储的所述标签字段中的进程 号与所述第一进程的进程号相同的第一条目的内容;
判断所述第二 BTAC 中是否具有与所述第二进程的进程号相同的第 二条目;
若所述第二 BTAC中具有与所述第二进程的进程号相同的第二条目, 则将所述与所述第二进程的进程号相同的笫二条目恢复到第一 BTAC 中 相应的位置;
若所述第二 BTAC 中不具有与所述第二进程的进程号相同的第二条 目, 则在执行所述第二进程的过程中将所述第二进程中的分支指令的信 息写入第一 BTAC中。
4、 根据权利要求 3所述的方法, 其特征在于, 所述在执行所述第二 进程的过程中将所述第二进程中的分支指令的信息写入第一 BTAC 中, 包括:
若确定所述第二进程中的其中一条指令为分支指令;
则在处理完所述分支指令后, 将所述第二进程的进程号和所述分支 指令的 PC值的高位写入第一 BTAC中与所述分支指令的 PC值的中位对 应的第一条目的标签字段中, 并将所述分支指令的分支目标地址写入与 所述分支指令的 PC值的中位对应的第一条目的目标 PC字段中。
5、 根据权利要求 3或 4所述的方法, 其特征在于, 所述第二 BTAC 包括至少一个第二条目, 每一个第二条目中包含第一字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高位、 中位以及进程号, 第 二字段用于存储所述分支指令的分支目标地址;
将所述第一 BTAC 中存储的标签字段中的进程号与所述第一进程的 进程号相同的第一条目的内容存储于第二 BTAC中包括:
将所述第一 BTAC 中存储的标签字段中的进程号与所述第一进程的 进程号相同的第一条目对应的 PC值的中位、 标签字段中的 PC值的高位 以及进程号存储于第二 BTAC 的第一字段中, 将所述第一条目中的目标 PC字段的分支目标地址存储于第二 BTAC的第二字段中。
6、 根据权利要求 5所述的方法, 其特征在于, 所述将所述与所述第 二进程的进程号相同的第二条目恢复到第一 BTAC中相应的位置包括: 根据所述与所述第二进程的进程号相同的第二条目中的第一字段的 内容确定恢复到第一 BTAC 中对应的第一条目以及所述第一条目中的标
签字段的内容, 根据所述与所述第二进程的进程号相同的第二条目中的 第二字段的内容确定恢复到所述第一条目中的目标 PC字段的内容。
7、 根据权利要求 1-6中任一项所述的方法, 其特征在于, 所述第一 BTAC中的每个第一条目中还包括有效字段,所述有效字段用于标识其所 在第一条目中的内容是否有效。
8、 一种分支目标地址获取装置, 其特征在于, 包括:
确定模块, 用于根据当前分支指令的程序计数 PC值的中位确定第一 分支目标地址緩存 BTAC中与所述当前分支指令对应的第一条目;
其中, 所述第一 BTAC 包含至少一个第一条目, 每一个第一条目对 应一个分支指令的 PC 值的中位, 每个第一条目中包含标签字段和目标 PC字段, 所述标签字段中存储所述分支指令的进程号和所述分支指令的 PC值的高位, 所述目标 PC字段存储所述分支指令的分支目标地址; 第一处理模块, 用于判断所述当前分支指令的进程号和所述当前分 支指令的 PC值的高位是否与所述当前分支指令对应的第一条目中的标签 字段中存储的分支指令的进程号和所述分支指令的 PC值的高位相同; 若 相同, 则获取与所述当前分支指令对应的第一条目中的目标 PC字段中的 分支目标地址作为所述当前分支指令的分支目标地址。
9、 根据权利要求 8所述的装置, 其特征在于, 确定模块具体用于判 断第一 BTAC中与当前分支指令 PC值的中位对应的第一条目中的标签字 段和目标 PC字段的内容是否为空; 若不为空, 则确定所述第一条目为与 所述当前分支指令对应的第一条目; 若为空, 则执行所述当前分支指令 获取所述当前分支指令的分支目标地址, 并将所述当前分支指令的进程 号、 PC值和所述分支目标地址写入所述第一 BTAC中与所述当前分支指 令 PC值的中位对应的第一条目中。
10、 根据权利要求 8或 9所述的装置, 其特征在于, 还包括: 第二 处理模块,用于根据当前分支指令的 PC值的中位确定第一 BTAC中与所 述当前分支指令对应的第一条目之前, 判断是否从第一进程切换到第二 进程; 若不从第一进程切换到第二进程, 则执行所述根据当前分支指令 的 PC值的中位确定第一 BTAC中与所述当前分支指令对应的第一条目; 若从第一进程切换到第二进程, 则将所述笫一 BTAC 中存储的标签字段 中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二 BTAC 中, 并清空所述第一 BTAC 中存储的所述标签字段中的进程号与
所述第一进程的进程号相同的第一条目的内容; 判断所述第二 BTAC 中 是否具有与所述第二进程的进程号相同的第二条目; 若所述第二 BTAC 中具有与所述第二进程的进程号相同的第二条目, 则将所述与所述第二 进程的进程号相同的第二条目恢复到第一 BTAC 中相应的位置; 若所述 第二 BTAC 中不具有与所述第二进程的进程号相同的第二条目, 则在执 行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一 BTAC中。
11、 根据权利要求 10所述的装置, 其特征在于, 所述第二处理模块 具体用于若确定所述第二进程中的其中一条指令为分支指令; 则在处理 完所述分支指令后,将所述第二进程的进程号和所述分支指令的 PC值的 高位写入第一 BTAC中与所述分支指令的 PC值的中位对应的第一条目的 标签字段中, 并将所述分支指令的分支目标地址写入与所述分支指令的 PC值的中位对应的第一条目的目标 PC字段中。
12、根据权利要求 10或 11所述的装置,其特征在于,所述第二 BTAC 包括至少一个第二条目, 每一个第二条目中包含第一字段和第二字段, 其中, 第一字段用于存储分支指令的 PC值的高位、 中位以及进程号, 第 二字段用于存储所述分支指令的分支目标地址;
所述第二处理模块具体用于将所述第一 BTAC 中存储的标签字段中 的进程号与所述第一进程的进程号相同的笫一条目对应的 PC值的中位、 标签字段中的 PC值的高位以及进程号存储于第二 BTAC的第一字段中, 将所述第一条目中的目标 PC字段的分支目标地址存储于第二 BTAC的第 二字段中。
13、 根据权利要求 12所述的装置, 其特征在于, 所述第二处理模块 具体用于根据所述与所述第二进程的进程号相同的第二条目中的第一字 段的内容确定恢复到第一 BTAC 中对应的第一条目以及所述第一条目中 的标签字段的内容, 根据所述与所述第二进程的进程号相同的第二条目 中的第二字段的内容确定恢复到所述第一条目中的目标 PC字段的内容。
14、 根据权利要求 8-13 中任一项所述的装置, 其特征在于, 所述第 一 BTAC 中的每个第一条目中还包括有效字段, 所述有效字段用于标识 其所在第一条目中的内容是否有效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310270207.6 | 2013-06-29 | ||
CN201310270207.6A CN104252334B (zh) | 2013-06-29 | 2013-06-29 | 分支目标地址获取方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014206222A1 true WO2014206222A1 (zh) | 2014-12-31 |
Family
ID=52141032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2014/080090 WO2014206222A1 (zh) | 2013-06-29 | 2014-06-17 | 分支目标地址获取方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104252334B (zh) |
WO (1) | WO2014206222A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005737A (zh) * | 2015-07-31 | 2015-10-28 | 天津大学 | 一种面向分支预测攻击的微体系结构级安全防护方法 |
CN111898119B (zh) * | 2020-06-28 | 2024-08-09 | 中国科学院信息工程研究所 | 控制流完整性保护方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095680A1 (en) * | 2004-11-02 | 2006-05-04 | Gi-Ho Park | Processor with cache way prediction and method thereof |
CN101187863A (zh) * | 2006-11-17 | 2008-05-28 | 国际商业机器公司 | 数据处理系统、处理器和进行数据处理的方法 |
CN101501635A (zh) * | 2006-08-16 | 2009-08-05 | 高通股份有限公司 | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721876B1 (en) * | 2000-05-25 | 2004-04-13 | Advanced Micro Devices, Inc. | Branch predictor index generation using varied bit positions or bit order reversal |
CN1291312C (zh) * | 2002-03-22 | 2006-12-20 | 中国科学院计算技术研究所 | 分支转移预测方法 |
CN101916184B (zh) * | 2009-08-28 | 2014-02-12 | 威盛电子股份有限公司 | 更新微处理器中的分支目标地址快取的方法及其微处理器 |
CN102662631B (zh) * | 2012-03-15 | 2014-09-10 | 龙芯中科技术有限公司 | 间接分支指令处理方法和装置 |
-
2013
- 2013-06-29 CN CN201310270207.6A patent/CN104252334B/zh active Active
-
2014
- 2014-06-17 WO PCT/CN2014/080090 patent/WO2014206222A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095680A1 (en) * | 2004-11-02 | 2006-05-04 | Gi-Ho Park | Processor with cache way prediction and method thereof |
CN101501635A (zh) * | 2006-08-16 | 2009-08-05 | 高通股份有限公司 | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 |
CN101187863A (zh) * | 2006-11-17 | 2008-05-28 | 国际商业机器公司 | 数据处理系统、处理器和进行数据处理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104252334B (zh) | 2017-07-07 |
CN104252334A (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6006248B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US9477476B2 (en) | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
TWI552070B (zh) | 於確認時執行狀態更新指令、裝置、方法與系統 | |
EP2972787B1 (en) | Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
JP6508851B2 (ja) | 例外からの復帰時のマスク不可割り込みの早期有効化の回避 | |
EP2972898B1 (en) | Externally programmable memory management unit | |
EP3373105A1 (en) | Apparatus and method for accelerating operations in a processor which uses shared virtual memory | |
JP2015079542A (ja) | 割り込み分配スキーム | |
GB2514882A (en) | Instruction emulation processors, methods, and systems | |
US9207940B2 (en) | Robust and high performance instructions for system call | |
US9804896B2 (en) | Thread migration across cores of a multi-core processor | |
KR20170013882A (ko) | 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc) | |
US20160062770A1 (en) | Multiple clustered very long instruction word processing core | |
WO2021061269A1 (en) | Storage control apparatus, processing apparatus, computer system, and storage control method | |
US20070260754A1 (en) | Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss | |
US10474596B2 (en) | Providing dedicated resources for a system management mode of a processor | |
CN107924442B (zh) | 用于轻量级虚拟化上下文的方法和设备 | |
WO2014206222A1 (zh) | 分支目标地址获取方法和装置 | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
EP2856304B1 (en) | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media | |
US9715432B2 (en) | Memory fault suppression via re-execution and hardware FSM | |
US7584328B2 (en) | Method, apparatus, and a system for efficient context switch | |
JP2018523241A (ja) | パント回避テーブル(pat)を使用したコンピュータプロセッサ内のメモリ命令パントの予測 | |
US20140201505A1 (en) | Prediction-based thread selection in a multithreading processor | |
US20140143526A1 (en) | Branch Prediction Gating |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14817373 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14817373 Country of ref document: EP Kind code of ref document: A1 |