CN112540792A - 指令处理方法及装置 - Google Patents
指令处理方法及装置 Download PDFInfo
- Publication number
- CN112540792A CN112540792A CN201910900984.1A CN201910900984A CN112540792A CN 112540792 A CN112540792 A CN 112540792A CN 201910900984 A CN201910900984 A CN 201910900984A CN 112540792 A CN112540792 A CN 112540792A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- information
- jump
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 239000000872 buffer Substances 0.000 claims abstract description 147
- 238000012545 processing Methods 0.000 claims abstract description 94
- 238000000034 method Methods 0.000 claims description 40
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 239000012634 fragment Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 206010063385 Intellectualisation Diseases 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种指令处理装置,包括:取指令单元、指令执行单元和计数缓冲器,计数缓冲器分别与取指令单元、指令执行单元耦接,取指令单元适于在读取到跳转指令时,将跳转指令的地址相关信息存储至计数缓冲器,并将地址相关信息对应的信息标识传递至指令执行单元,其中,地址相关信息包括跳转指令在存储设备中的地址信息;指令执行单元适于根据信息标识从计数缓冲器获取跳转指令的地址相关信息,并根据地址相关信息来执行该跳转指令。本发明一并公开了相应的指令处理方法、片上系统和智能设备。
Description
技术领域
本发明涉及处理器技术领域,尤其涉及一种能够减少在处理器流水线中存储及传递指令的地址信息所占用的资源的指令处理方法及装置。
背景技术
现代处理器通常采用流水线(Pipeline)技术来提高处理器的运算速度。流水线由处理器中多个不同功能的处理单元(例如取指令单元、指令译码单元、指令执行单元、指令退休单元等)组成,一条指令的处理过程被分解为多个步骤,每个步骤由相应的处理单元来执行。当某一指令的某一步骤由某一处理单元完成后,该指令将进入流水线中的下一个处理单元进行下一步骤的处理,该处理单元则继续处理下一条指令。
程序计数器(Program Counter,PC)用于存放指令在内存中的地址信息。处理器根据程序计数器中存储的地址信息从内存中读取指令。处理器根据程序计数器中的地址信息获取指令后,该指令的地址信息会随着指令一起,在流水线的各个处理单元中进行存放、传递,直至指令退休,用于维护退休阶段的指令。在流水线上传递以及在流水线的每一个处理单元中存储指令的地址信息会占用大量的硬件资源,增加了处理器的硬件成本。
发明内容
为此,本发明提供一种指令处理方法及装置,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种指令处理装置,包括:取指令单元、指令执行单元和计数缓冲器,计数缓冲器分别与取指令单元、指令执行单元耦接,取指令单元适于在读取到跳转指令时,将跳转指令的地址相关信息存储至计数缓冲器,并将该地址相关信息对应的信息标识传递至指令执行单元,其中,地址相关信息包括跳转指令在存储设备中的地址信息;指令执行单元适于根据信息标识从计数缓冲器获取跳转指令的地址相关信息,并根据地址相关信息来执行该跳转指令。
可选地,在根据本发明的指令处理装置中,还包括:指令退休单元,分别与指令执行单元和计数缓冲器耦接,适于接收指令执行单元发来的信息标识,根据信息标识从计数缓冲器获取跳转指令的地址相关信息,以便退休该跳转指令。
可选地,在根据本发明的指令处理装置中,取指令单元适于:对读取到的指令进行预译码以确定该指令的操作码;根据操作码来判断该指令是否为跳转指令。
可选地,在根据本发明的指令处理装置中,跳转指令包括条件跳转指令和无条件跳转指令。
可选地,在根据本发明的指令处理装置中,取指令单元还适于:在读取到条件跳转指令时,预测条件跳转指令是否发生跳转,将预测结果与条件跳转指令的地址信息作为该条件跳转指令的地址相关信息,存储至计数缓冲器。
可选地,在根据本发明的指令处理装置中,取指令单元还适于:根据预测结果来确定待读取的下一条指令的地址信息。
可选地,在根据本发明的指令处理装置中,指令执行单元适于:执行条件跳转指令,以得出是否发生跳转的执行结果;根据信息标识从计数缓冲器中获取该条件跳转指令的预测结果;判断预测结果与条件跳转指令的执行结果是否一致,将判断结果和信息标识发送至指令退休单元,以便指令退休单元根据判断结果和信息标识来确定待退休的下一条指令的地址信息。
可选地,在根据本发明的指令处理装置中,指令退休单元适于:接收指令执行单元发来的判断结果和信息标识;根据信息标识从计数缓冲器中获取条件跳转指令的地址相关信息,将条件跳转指令的地址相关信息从计数缓冲器中删除;以及根据判断结果以及条件跳转指令的地址信息和预测结果,来确定待退休的下一条指令的地址信息。
可选地,在根据本发明的指令处理装置中,指令退休单元还适于:在判断结果为不一致时,根据判断结果以及条件跳转指令的地址信息,重新确定待读取的下一条指令的地址信息。
可选地,在根据本发明的指令处理装置中,取指令单元还适于:在读取到无条件跳转指令时,确定无条件跳转指令的跳转目标地址,将跳转目标地址作为待读取的下一条指令的地址信息。
可选地,在根据本发明的指令处理装置中,指令执行单元还适于:执行无条件跳转指令,以得出确定跳转的执行结果,并将执行结果和信息标识发送至指令退休单元。
可选地,在根据本发明的指令处理装置中,指令退休单元还适于:接收指令执行单元发来的无条件跳转指令的执行结果和信息标识;根据信息标识从计数缓冲器中获取无条件跳转指令的地址相关信息,将无条件跳转指令的地址相关信息从计数缓冲器中删除;以及根据无条件跳转指令的地址信息和执行结果来确定无条件跳转指令的跳转目标地址,将该跳转目标地址作为待退休的下一条指令的地址信息。
可选地,在根据本发明的指令处理装置中,信息标识根据跳转指令的地址相关信息在计数缓冲器中的存储位置来确定。
可选地,在根据本发明的指令处理装置中,计数缓冲器采用队列数据结构。
根据本发明的第二个方面,提供一种指令处理方法,在指令处理装置中执行,指令处理装置包括取指令单元、指令执行单元和计数缓冲器,该方法包括步骤:在取指令单元读取到跳转指令时,将跳转指令的地址相关信息存储至计数缓冲器,并将地址相关信息对应的信息标识传递至指令执行单元,其中,地址相关信息包括跳转指令在存储设备中的地址信息;指令执行单元根据信息标识从计数缓冲器获取跳转指令的地址相关信息,并根据地址相关信息来执行该跳转指令。
根据本发明的第三个方面,提供一种片上系统,包括如上任一项所述的指令处理装置。
根据本发明的第四个方面,提供一种智能设备,包括如上所述的片上系统。根据本发明的技术方案,采用计数缓冲器来集中存储跳转指令的地址相关信息。当取指令单元读取到跳转指令后,将跳转指令的地址相关信息存储至计数缓冲器,并确定该地址相关信息所对应的信息标识。地址相关信息包括但不限于跳转指令在存储设备中的地址信息。在流水线后续处理该跳转指令的过程中,不再在各个处理单元之间传递该指令的地址相关信息,而仅仅传递信息标识。若流水线上的某一处理单元在进行指令处理时需要用到该跳转指令的地址相关信息,则根据信息标识从计数缓冲器中获取。
根据本发明的技术方案,采用计数缓冲器集中存储跳转指令的地址相关信息,避免了在流水线上的每一个处理单元中存储指令的地址信息,并且避免了指令的地址信息在各处理单元间传递,从而节省了各处理单元的硬件成本。
此外,本发明的计数缓冲器仅存储跳转指令的地址相关信息,不存储顺序指令的地址相关信息。流水线内通常只有少部分指令为跳转指令,因此,计数缓冲器中的表项总数通常小于流水线上的指令总数,计数缓冲器本身占用的资源少于流水线中传递指令地址信息的总和,从而降低了整个指令处理装置的硬件成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的指令处理装置100的示意图;
图2示出了根据本发明一个实施例的包括顺序指令、跳转指令的指令片段的示意图;
图3示出了根据本发明一个实施例的指令处理方法300的流程图;
图4示出了根据本发明一个实施例的处理器400的示意图;
图5示出了根据本发明一个实施例的片上系统500的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的指令处理装置100的示意图。在一些实施例中,指令处理装置100可以是单核处理器、多核处理器中的处理器核、或者电子系统中的处理元件,但不限于此。
此外,需要说明的是,图1中的各个部件的划分是功能性的,并且为了物理实现可以进行重新布置和组合而没有脱离本发明的保护范围。
如图1所示,指令处理装置100包括依次耦接的取指令单元110、指令译码单元120、指令执行单元130和指令退休单元140,这四个处理单元是流水线的组成部分,分别用于进行指令的读取(Fetch)、译码(Decode)、执行(Execute)和写回运行结果(Write-back)。
寄存器组170中包括多个寄存器。寄存器是存储容量有限的高速存储部件,它们可以用来暂存指令、数据和地址等信息。寄存器组170中包括多种寄存器,例如通用寄存器(General Purpose Register,GPS)、专用寄存器(Special Function Register,SFR)、控制寄存器等,但不限于此。寄存器组170中包括程序计数器(Program Counter,PC),程序计数器也可以被称为指令指针寄存器(Instruction Pointer,IP),其是一种专用寄存器,用于存储待执行的下一条指令的地址信息。
根据一种实施例,如图1所示,寄存器组170中的程序计数器包括取指计数器172和退休计数器174。取指计数器172中存储待读取的下一条指令的地址信息,退休计数器174中存储待退休的下一条指令的地址信息。在另外一些实施例中,取指计数器172、退休计数器174可以是某些处理单元内部的电路模块。例如,取指计数器172可以是取指令单元110内部的电路模块,退休计数器174可以是指令退休单元140内部的一个电路模块。
存储设备180与指令处理装置100耦接,用于存储指令和数据。存储设备180例如可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)等,但不限于此。
取指令单元110根据取指计数器172中存储的地址信息,从高速缓存160、存储设备180或其他源获取要处理的指令,并将取指计数器172的值更新为下一条待执行的指令的地址。
取指令单元110取出的指令可以包括顺序指令、跳转指令。顺序指令为顺序执行的指令,即,对于一条指令,如果该指令执行完毕后,下一条要执行的指令为存储设备180中紧邻于该条指令之后的指令,则该指令为顺序指令。跳转指令为跳转执行的指令,即,对于一条指令,如果该指令执行完毕后,下一条要执行的指令不是存储设备180中紧邻于该条指令之后的指令,而是位于存储设备180的其他位置的指令,则该指令为跳转指令。
跳转指令进一步包括条件跳转指令和无条件跳转指令。条件跳转指令又称为分支指令,其中包含判断条件,判断条件成立与否会导致程序执行不同的分支,换言之,判断条件的判断结果不同,要执行的下一条指令的地址不同。无条件跳转指令不包含判断条件,当无条件跳转指令执行完毕后,总是无条件地执行某一条特定的指令。
图2示出了根据本发明一个实施例的包括顺序指令、跳转指令的指令片段的示意图。如图2所示,存储设备180的某一区域连续存储有指令1~指令6六条指令。指令1、3、5、6为顺序指令,在这些指令执行完毕后,顺序执行位于这些指令之后的下一条指令。指令2是一个条件跳转指令,当条件满足时,执行分支1,即跳转至指令5处,执行指令5;当条件不满足时,执行分支2,即顺序执行指令3。指令4是一个无条件跳转指令,在指令4执行完毕后,总是跳转至指令6处,执行指令6。
指令译码单元120接收从取指令单元110传入的指令,译码这些指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了所接收的指令或者从所接收的指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现指令译码单元120。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)。本发明不受限于实现指令译码单元120的各种机制,任何可以实现指令译码单元120的机制都在本发明的保护范围之内。
随后,指令译码单元120将译码后的指令送到指令执行单元130,并由指令执行单元130执行。指令执行单元130包括可操作用于执行指令的电路。指令执行单元130在执行这些指令时,可以从寄存器组170、高速缓存160和/或存储设备180接收数据输入并向它们生成数据输出。
随后,指令执行单元130将指令的执行结果发送至指令退休单元140。在指令退休阶段,指令退休单元140向相应存储部件(例如通用寄存器、控制寄存器以及存储设备180等)中写回指令的运行结果,将退休计数器174的值更新为下一条待执行的指令的地址,从而更新指令处理装置100的状态。
为了便于指令退休单元140退休指令,指令退休单元140需要获知当前待退休的指令的地址信息。在现有技术中,取指令单元110根据取指计数器172中的地址信息获取指令后,会将指令的地址信息随着该指令一起在流水线的各个处理单元进行暂存、传递,最终到达指令退休单元140。对于指令乱序执行的指令处理装置100,则需要在取指令单元110、指令译码单元120和重排序缓存(Re-Order Buffer,ROB)中存放和传递指令的地址信息。在流水线上传递以及在流水线的每一个处理单元中存储指令的地址信息会占用大量的硬件资源,增加了处理器的硬件成本。为了解决该问题,本发明在指令处理装置100中设置了计数缓冲器150,计数缓冲器150分别与取指令单元110、指令执行单元130、指令退休单元140以及流水线上的其他处理单元耦接,用于集中存储跳转指令的地址相关信息,以避免在流水线上的每一个处理单元中存储指令的地址信息,并且避免指令的地址信息在各处理单元间传递,从而节省了各处理单元的硬件成本。
当取指令单元110当前读取的指令为跳转指令时,取指令单元110将跳转指令的地址相关信息存储至计数缓冲器150,并确定该地址相关信息的信息标识,地址相关信息包括但不限于跳转指令在存储设备180中的地址信息。随后,取指令单元110将地址相关信息对应的信息标识经由指令译码单元120传递至指令执行单元130、指令退休单元140等后续处理单元。指令执行单元130、指令退休单元140等后续处理单元根据信息标识从计数缓冲器150获取跳转指令的地址相关信息,并根据地址相关信息来执行、退休该跳转指令。基于本发明的计数缓冲器150,在流水线处理跳转指令的过程中,无需在流水线的各个处理单元之间传递该跳转指令的地址相关信息,而仅仅传递信息标识。若某一处理单元在进行指令处理时需要用到该指令的地址相关信息,该处理单元可以根据信息标识从计数缓冲器150中获取地址相关信息,从而避免指令的地址信息在各处理单元间传递、存储,节省了各处理单元的硬件成本。
本发明的计数缓冲器150用于集中存储跳转指令的地址相关信息,流水线上仅传递已存储的地址相关信息所对应的信息标识。流水线上的相关处理单元(例如指令执行单元130、指令退休单元140等)可以根据信息标识,从计数缓冲器150中获取跳转指令的地址相关信息。至于顺序指令,由于下一条要执行的指令为位于顺序指令之后的指令,根据顺序指令的长度即可推算出下一条指令的地址信息,没必要额外存储及传递顺序指令的地址信息。因此,计数缓冲器150中不存储顺序指令的地址相关信息,并且,流水线上的各个处理单元也不会存储、传递顺序指令的地址相关信息。流水线内通常只有少部分指令为跳转指令,因此,计数缓冲器150中缓存的表项总数通常小于流水线上的指令总数,计数缓冲器150本身占用的资源少于流水线中传递指令地址信息的总和,从而降低了整个指令处理装置的硬件成本。
需要说明的是,图1的指令处理装置100中仅示例性地示出了一个计数缓冲器150。在其他的实施例中,指令处理装置100中也可以设置多个计数缓冲器150,本发明对指令处理装置100所包括的计数缓冲器150的数量不做限制。本领域技术人员可以理解,在指令处理装置100中设置多个计数缓冲器150可以达到增加存储容量、提高信息容错性等技术效果,但也会增加指令处理装置100的硬件成本。本领域技术人员可以综合考虑各种因素,根据实际情况自行设置计数缓冲器150的数量。
当指令处理装置100中设置有多个计数缓冲器150时,这多个计数缓冲器150可以存储相同的地址相关信息,即,将地址相关信息进行冗余存储,从而提高信息的容错性,即使某个计数缓冲器150发生故障,其他计数缓冲器150中存储的信息也可以保障指令处理过程的正常进行。或者,这多个计数缓冲器150可以存储不同的地址相关信息,从而实现了存储空间的扩容,使其能够存储更多跳转指令的地址相关信息。又或者,可以将这多个计数缓冲器150划分为多组,不同组的计数缓冲器150存储不同的地址相关信息,同一组内的计数缓冲器150存储相同的地址相关信息,从而可以在提高信息容错性的同时实现了扩容。
此外,需要说明的是,图1中的各个部件的划分仅是功能性的,在指令处理装置的具体物理实现中,图1所示的各个部件可以进行重新布置和组合而没有脱离本发明的保护范围。
例如,尽管在图1的指令处理装置100中,计数缓冲器150作为一个单独的部件示出,但本领域计数人员可以理解,在其他实施例中,计数缓冲器150也可以集成于某些部件内部(例如集成于取指计数器172内部),本发明对计数缓冲器150在指令处理装置100中的具体实现方式不做限制。
又例如,图1所示的指令退休单元140也可以是集成于指令执行单元130内部的一个电路模块;高速缓存160进一步可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC);等等。
以上概括地描述了计数缓冲器150的功能和处理逻辑,以下将对指令处理过程中,计数缓冲器150与取指令单元110、指令执行单元130、指令退休单元140之间的交互做详细描述。
取指令单元110根据取指计数器172中的地址信息,从高速缓存160、存储设备180或其他源中读取指令。取指令单元110适于对读取到的指令进行预译码以确定该指令的操作码,然后根据操作码来判断该指令的操作类型,即判断该指令是否为跳转指令。
操作码是用于指示指令的操作类型的简短的编码。操作码例如包括传送(mov)、加法(add)、减法(sub)、停机(hlt)、条件转移(jz)等,但不限于此。每一个操作码都对应于一个特定的操作类型,因此,在识别出指令的操作码后,即可判断该指令是否对应于跳转操作,即,判断该指令是否为跳转指令,并且,能够判断出跳转指令具体为哪一种类型的跳转指令(判断是条件跳转指令还是无条件跳转指令)。常见的跳转指令的操作码包括j、jz、jnz、je、jmp等,但不限于此。
当取指令单元110读取的指令为跳转指令时,取指令单元110将该跳转指令的地址相关信息存储至计数缓冲器150,并确定该地址相关信息的信息标识。地址相关信息包括跳转指令在存储设备180中的地址信息,但不限于此。
根据一种实施例,跳转指令的地址相关信息的信息标识可以根据该地址信息在计数缓冲器150中的存储位置来确定。例如,计数缓冲器150包含N个表项,每个表项用于存储一条跳转指令的地址相关信息,那么,计数缓冲器150最多可以存储N条跳转指令的地址相关信息。若某一跳转指令的地址相关信息被存储至计数缓冲器150的第5个表项,那么该跳转指令的地址相关信息的信息标识相应地可以设置为5。
以上根据存储位置来确定信息标识的方法仅为一个示例。本领域技术人员可以理解,除了上述方法之外,还可以采用其他方法来确定地址相关信息的信息标识。本发明对信息标识的确定方法不做限制,只要使得信息标识与跳转指令的地址相关信息具有唯一对应关系即可。
跳转指令的地址相关信息包括但不限于跳转指令在存储设备中的地址信息。根据一种实施例,地址相关信息除了包括跳转指令的地址信息之外,还可以包括诸如跳转指令的类型(条件跳转指令、无条件跳转指令或者按照其他分类标准所划分的类型)、分支指令的预测结果等信息。地址相关信息所包括的具体信息项目可以根据跳转指令类型的不同而有所区别。
根据一种实施例,当取指令单元110读取到条件跳转指令时,会预测条件跳转指令是否发生跳转(即进行分支预测),将预测结果与该条件跳转指令的地址信息作为该条件跳转指令的地址相关信息,存储至计数缓冲器150。除此之外,还可以将该跳转指令的类型(即条件跳转指令)一并存储至计数缓冲器150,即,条件跳转指令的地址相关信息还可以包括跳转指令的类型标识。
进一步地,当取指令单元110读取到条件跳转指令时,取指令单元110还根据预测结果来确定待执行的下一条指令(待执行的下一条指令即为待读取的下一条指令)的地址信息,并将待执行的下一条指令的地址信息更新至取指计数器172。需要说明的是,取指令单元110例如可以采用静态分支预测方法,总是预测命中条件跳转指令中的第一个分支或第二个分支;或者,采用动态分支预测方法,根据历史的分支命中情况来预测当前的条件跳转指令是否发生跳转;等等。本发明不限制取指令单元110所采用的具体分支预测策略,任意分支预测策略均在本发明的保护范围之内。
当取指令单元110读取到无条件跳转指令时,由于无条件跳转指令中指明了跳转目标地址(即待执行的下一条指令的地址),取指令单元110可以通过预译码来确定该无条件跳转指令的跳转目标地址,将跳转目标地址作为待读取的下一条指令的地址信息,更新至取指计数器172。在一些实施例中,无条件跳转指令的地址相关信息可以仅包括该无条件跳转指令的地址信息。在另一些实施例中,无条件跳转指令的地址相关信息除了该无条件跳转指令的地址信息之外,还可以包括该无条件跳转指令的类型标识、跳转目标地址等信息。
在将跳转指令的地址相关信息存储至计数缓冲器150、并确定该地址相关信息对应的信息标识之后,取指令单元110将跳转指令及信息标识发送至指令译码单元120。指令译码单元120对指令进行译码以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了所接收的指令或者从所接收的指令导出。具体地,指令译码单元120译码得出指令执行所需要的信息,例如指令的操作类型(例如加减乘除等操作)、操作数地址(源操作数地址、目标寄存器地址等)、指令长度(例如32位)等信息,但不限于此。随后,指令译码单元120将译码后的指令信息和该指令对应的信息标识发送至指令执行单元130。
指令执行单元130根据指令译码单元120发来的指令信息来执行跳转指令,将跳转指令的执行结果和信息标识发送至指令退休单元140。指令退休单元140接收指令执行单元130发来的信息标识,根据信息标识从计数缓冲器150获取跳转指令的地址相关信息,以便退休该跳转指令。根据跳转指令类型的不同,指令执行单元130、指令退休单元140所执行的处理步骤有所区别。
当跳转指令为条件跳转指令时,指令执行单元130执行该条件跳转指令,判断跳转条件是否成立,以得出是否发生跳转的执行结果。并且,指令执行单元130根据接收到的信息标识,从计数缓冲器150中获取条件跳转指令的预测结果。指令执行单元130判断获取到的预测结果与该条件跳转指令的实际执行结果是否一致,将判断结果以及信息标识发送至指令退休单元140,以便指令退休单元140根据该判断结果和信息标识来确定待退休的下一条指令的地址信息,并将待退休的下一条指令的地址信息更新至退休计数器174。
指令退休单元140接收指令执行单元130发来的判断结果和信息标识,根据信息标识从计数缓冲器150中获取该条件跳转指令的地址相关信息,随后,将计数缓冲器150中存储的该条件跳转指令的地址相关信息删除。随后,指令退休单元140根据指令执行单元130发来的判断结果,以及从计数缓冲器150中获取到的条件跳转指令的地址信息和预测结果,来确定待退休的下一条指令的地址信息,并将待退休的下一条指令的地址信息更新至退休计数器174。
具体地,当指令执行单元130发来的判断结果指示条件跳转指令的预测结果与实际执行结果一致时,表明预测正确。指令退休单元140根据条件跳转指令的地址信息和预测结果(即实际执行结果),可以确定待执行的下一条指令的地址信息,待执行的下一条指令即为待退休的下一条指令,并将待执行的下一条指令的地址信息更新至退休计数器174。另外,由于预测正确,因此当前取指计数器172中存储的下一条指令的地址信息也是正确的,无需进行修正。
当指令执行单元130发来的判断结果指示条件跳转指令的预测结果与实际执行结果不一致时,表明预测错误。在这种情况下,指令退休单元140根据条件跳转指令的地址信息和实际执行结果(实际执行结果与预测结果相反),确定待执行的下一条指令的地址信息,将待执行的下一条指令的地址信息更新至退休计数器174。
此外,取指计数器172中当前存储的下一条指令的地址信息是根据预测结果来确定的,由于预测错误,取指计数器172中存储的地址信息也是错误的,需要进行修正。因此,根据一种实施例,当判断结果指示条件跳转指令的预测结果与实际执行结果不一致时,指令退休单元140在根据接收到的判断结果以及条件跳转指令的地址信息,重新确定待读取的下一条指令的地址信息,并将该待执行的下一条指令的地址信息更新至取指计数器172。
当跳转指令为无条件跳转指令时,指令执行单元130执行该无条件跳转指令,以得出确定跳转的执行结果。并且,指令执行单元130可以根据信息标识从计数缓冲器150中获取地址相关信息,进一步确定跳转的执行结果。随后,指令执行单元130将确定跳转的执行结果以及信息标识发送至指令退休单元140,以便指令退休单元140确定待执行的下一条指令的地址信息,并将待执行的下一条指令的地址信息更新至退休计数器174。
指令退休单元140接收指令执行单元130发来的确定跳转的执行结果和信息标识,根据信息标识从计数缓冲器150中获取该无条件跳转指令的地址相关信息,随后,将计数缓冲器150中存储的该无条件跳转指令的地址相关信息删除。随后,指令退休单元140根据无条件跳转指令的地址信息和指令执行单元130发来的确定跳转的执行结果来确定该无条件跳转指令的跳转目标地址(跳转目标地址即为待执行、也是待退休的下一条指令的地址),将跳转目标地址作为待退休的下一条指令的地址信息,更新至退休计数器174。
在本发明的实施例中,计数缓冲器150包括多个表项,每个表项对应于一条跳转指令的地址相关信息。计数缓冲器150的每个表项由一个信息标识来进行标识和区分。
根据一种实施例,计数缓冲器150采用队列数据结构来实现,计数缓冲器150中的各个表项遵循先进先出(First In First Out,FIFO)的存储原则,即,表项的创建(存储)和弹出(删除)的顺序相同,先创建的表项会先于后创建的表项弹出。
当取指令单元110预译码出一条跳转指令时,取指令单元110会将该跳转指令的地址相关信息作为一个表项存储至计数缓冲器150,并确定该表项的信息标识。随后,取指令单元110将该表项的信息标识伴随着跳转指令依次传递至指令译码单元120、指令执行单元130、指令退休单元140等后级流水线。计数缓冲器150中各表项的创建是按照指令的执行顺序来进行的。
计数缓冲器150至少包括创建指针和退休指针两个指针,其中,创建指针指向计数缓冲器150中即将创建的空表项,创建指针所指向的表项的标识即为接下来的一条跳转指令的信息标识。退休指针指向计数缓冲器150中最老的表项,即下一条将要退休的跳转指令对应的表项。计数缓冲器150通过创建指针和退休指针来判断空满状态。当计数缓冲器150已存满时,取指令单元110无法向计数缓冲器150中创建新的跳转指令表项,因此取指令单元110会暂停执行,以等待有表项从计数缓冲器150中弹出。
根据一种实施例,当指令执行单元130乱序执行该跳转指令时,可以根据跳转指令的信息标识,从计数缓冲器150中获取该跳转指令的地址相关信息。在该跳转指令执行完毕后,指令执行单元130可以将部分执行结果存放于计数缓冲器150的对应表项中。在指令退休阶段,指令退休单元140根据信息标识从计数缓冲器150中获取该跳转指令的地址相关信息(包括部分执行结果),并根据获取到的地址相关信息来更新、维护退休计数器174。跳转指令退休后,该指令对应的表项从计数缓冲器150中弹出。
由于指令是按执行顺序来退休的,因此,计数缓冲器150中表项的弹出也是按照指令的执行顺序来进行的。
以下以一个具体实施例来说明本发明的指令处理方案。
参见上表,存储设备180的0x4~0x18的存储区域存储有一个指令片段,该指令片段包括指令1~指令6共六条指令。该指令片段所实现的功能是求变量x的绝对值,即
在上表中的指令片段执行之前,取指计数器172、退休计数器174中存储的地址均为0x4,表示待读取的、待退休的下一条指令均为指令1。
指令1的执行过程如下:
取指令单元110根据取指计数器172中的地址0x4,读取指令1。取指令单元110对指令1进行预译码,确定指令1为顺序指令,不是跳转指令,因此,待读取的下一条指令为位于指令1之后的指令2,将取指计数器172的值更新为指令2的地址,即0x8。随后,将指令1发送至指令译码单元120。
指令译码单元120对指令1进行译码,确定指令1的操作类型为内存加载操作1w(load word),操作数的地址为寄存器x7中所存储的内容(对应于间接寻址方式),目标寄存器为寄存器x5,以及指令的长度为32位等指令信息,将这些指令信息发送至指令执行单元130。
指令执行单元130接收指令译码单元120发来的指令信息,根据操作数的地址0(x7)来从内存中取出变量x的值,然后将指令的执行结果(取出的x的值)和目标寄存器x5、指令长度为32位等信息发送至指令退休单元140。
指令退休单元140将x的值写入寄存器x5,将退休计数器174的值更新为0x8(即在原值0x4的基础上加上指令长度32位)。
指令2的执行过程如下:
取指令单元110根据取指计数器172中的地址0x8,读取指令2。取指令单元110对指令2进行预译码,基于指令2的操作码bltz(branch less than zero),确定指令2为分支指令(即条件跳转指令)。随后,取指令单元110对该分支指令进行预测,并将预测结果(例如“不跳转”)、指令2的地址0x8以及其他相关信息作为指令2的地址相关信息,创建至计数缓冲器150,并根据地址相关信息在计数缓冲器150中的存储位置,确定该地址相关信息所对应的信息标识。例如,指令2的地址相关信息被创建至计数缓冲器150的表项5,那么指令2的信息标识就是5。
由于预测不跳转,那么待执行的下一条指令应当是位于0xc处的指令3。因此,取指令单元110将取指计数器172的值更新为0xc。
随后,取指令单元110将指令2和指令2的信息标识发送至指令译码单元120。
指令译码单元120对指令2进行译码,确定指令2的操作类型为bltz,操作数地址为寄存器x5,指令长度为32位等指令信息,将这些指令信息和指令2的信息标识发送至指令执行单元130。
指令执行单元130根据信息标识,从计数缓冲器150中获取指令2的预测结果“不跳转”。并且,指令执行单元130会执行指令2,从寄存器x5中获取x的值,判断x的值是否小于0。若x<0,则指令2应该发生跳转,指令2的实际执行结果与取指令单元110的预测结果不一致,即预测错误;否则(即x≥0),指令2不发生跳转,指令2的实际执行结果与取指令单元110的预测结果一致,即预测正确。
指令执行单元130将预测是否正确的判断结果和指令2的信息标识发送至指令退休单元140。
假设预测正确,指令执行单元130会将预测正确的结果和指令2的信息标识发送至指令退休单元140。指令退休单元140根据指令2的信息标识,从计数缓冲器150中获取指令2的地址信息0x8和预测结果“不跳转”,然后从计数缓冲器150中弹出指令2所对应的表项,即,删除计数缓冲器150中缓存的指令2的地址相关信息。指令退休单元140根据指令2的地址信息0x8和预测正确的预测结果“不跳转”,计算出不跳转时,待执行的下一条指令的地址为0xc,随后,将退休计数器174的值更新为0xc。接下来执行指令3。
假设预测错误,指令执行单元130会将预测错误的结果和指令2的信息标识发送至指令退休单元140。指令退休单元140根据指令2的信息标识,从计数缓冲器150中获取指令2的地址信息0x8和预测结果“不跳转”,然后从计数缓冲器150中弹出指令2所对应的表项,即,删除计数缓冲器150中缓存的指令2的地址相关信息。指令退休单元140根据指令2的地址信息0x8和预测错误的预测结果“不跳转”,计算出跳转时,待执行的下一条指令的地址为0x14,随后,将退休计数器174的值更新为0x14。并且,由于当前取指计数器172中的地址为取指令单元110根据错误的预测结果而得出,因此当前取指计数器172中存储的地址信息也是错误的,需要进行修正。指令退休单元将正确的待执行的下一条指令的地址信息0x14更新至取指计数器172。接下来执行指令5。
指令3的执行过程如下:
取指令单元110根据取指计数器172中的地址0xc,读取指令3。取指令单元110对指令3进行预译码,确定指令3为顺序指令,不是跳转指令,因此,待读取的下一条指令为位于指令3之后的指令4,将取指计数器172的值更新为指令4的地址,即0x10。随后,将指令3发送至指令译码单元120。
指令译码单元120对指令3进行译码,确定指令3的操作类型为数据传送操作mv(move),数据传送操作的源地址为寄存器x5,目标地址为寄存器x6,以及指令长度为32位等指令信息,将这些指令信息发送至指令执行单元130。
指令执行单元130接收指令译码单元120发来的指令信息,从源地址(寄存器x5)处取出x的值,然后将指令的执行结果(取出的x的值)和目标地址寄存器x6、以及指令长度为32位等信息发送至指令退休单元140。
指令退休单元140将x的值写入寄存器x6,将退休计数器174的值更新为指令4的地址0x10(即在原值0xc的基础上加上指令长度32位)。
指令4的执行过程:
取指令单元110根据取指计数器172中的地址0x10,读取指令4。取指令单元110对指令4进行预译码,基于指令4的操作码j(jump)确定指令4为无条件跳转指令。随后,取指令单元110将指令4的地址0x10以及其他相关信息作为指令4的地址相关信息,创建至计数缓冲器150,并根据地址相关信息在计数缓冲器150中的存储位置,确定该地址相关信息所对应的信息标识。例如,指令4的地址相关信息被创建至计数缓冲器150的表项6,那么指令4的信息标识就是6。
由于指令4为无条件跳转指令,指令4执行完毕后将无条件跳转至目标地址0x18,因此,取指令单元110将取指计数器172的值更新为0x18。
随后,取指令单元110将指令4和指令4的信息标识发送至指令译码单元120。指令译码单元120对指令4进行译码,确定指令4的操作类型为j,指令长度为32位等指令信息,将这些指令信息和指令4的信息标识发送至指令执行单元130。
指令执行单元130根据指令4的信息标识,从计数缓冲器150中获取指令4的地址信息0x10,确定指令4的执行结果为“跳转”,并将执行结果“跳转”和指令4的信息标识发送至指令退休单元140。
指令退休单元140根据信息标识,从计数缓冲器150中获取指令4的地址信息0x10,然后从计数缓冲器150中弹出指令4所对应的表项,即,删除计数缓冲器150中缓存的指令4的地址信息。指令退休单元根据指令4的执行结果(跳转)和地址信息0x10,计算出下一条指令的地址为0x18,将退休计数器174的值更新为0x18。
指令5的执行过程:
若在执行指令2时,得出取指令单元110预测错误,则指令退休单元140会将取指计数器172和退休计数器174的值更新为0x14。
取指令单元110根据取指计数器172中的地址0x14,读取指令5。取指令单元110对指令5进行预译码,确定指令5为顺序指令,不是跳转指令,因此,待读取的下一条指令为位于指令5之后的指令6,将取指计数器172的值更新为指令6的地址,即0x18。随后,将指令5发送至指令译码单元120。
指令译码单元120对指令5进行译码,确定指令5的操作类型为取反数据传送操作neg(negtive),数据传送操作的源地址为寄存器x5,目标地址为寄存器x6,以及指令长度为32位等指令信息,将这些指令信息发送至指令执行单元130。
指令执行单元130接收指令译码单元120发来的指令信息,从源地址(寄存器x5)处取出x的值,然后将x进行取反操作,将指令的执行结果(-x的值)和目标地址寄存器x6、以及指令长度为32位等信息发送至指令退休单元140。
指令退休单元140将-x的值写入寄存器x6,将退休计数器174的值更新为指令6的地址0x18(即在原值0x14的基础上加上指令长度32位)。
指令6的执行过程:
取指令单元110根据取指计数器172中的地址0x18,读取指令6。取指令单元110对指令6进行预译码,确定指令6为顺序指令,不是跳转指令,并且指令6位指令片段中的最后一条指令,此时不再更新取指计数器172的值。随后,将指令6发送至指令译码单元120。
指令译码单元120对指令6进行译码,确定指令6的操作类型为内存写入操作sw(save word),写入操作的源地址为寄存器x6,目标内存地址为寄存器x8中所存储的内容,以及指令的长度为32位等指令信息,将这些指令信息发送至指令执行单元130。
指令执行单元130接收指令译码单元120发来的指令信息,从源地址(寄存器x6)处取出y的值,然后将指令的执行结果(取出的y的值)和目标内存地址0(x8)、以及指令长度为32位等信息发送至指令退休单元140。
指令退休单元140将y的值写入寄存器x8所指示的地址中。整个指令片段执行完毕。
需要说明的是,虽然在上述实施例分别描述了各个指令的处理过程,但本领域技术人员可以理解,基于流水线技术,各个指令的处理过程在时间上可能发生重叠,换言之,在某一时刻可能有多个指令在流水线上进行处理(例如在某一时刻,取指令单元读取指令2,同时指令译码单元在译码指令1),而不是待前一条指令退出流水线后再执行下一条指令。
图3示出了根据本发明一个实施例的指令处理方法300的流程图。指令处理方法300在本发明的指令处理装置100中执行,用于避免指令的地址信息在流水线上存储及传递。如图3所示,方法300始于步骤S310。
在步骤S310中,在取指令单元读取到跳转指令时,将跳转指令的地址相关信息存储至计数缓冲器,并将地址相关信息对应的信息标识传递至指令执行单元,其中,地址相关信息包括跳转指令在存储设备中的地址信息。
根据一种实施例,在步骤S310之前,取指令单元按照以下步骤来判断读取到的指令是否为跳转指令:取指令单元对读取到的指令进行预译码以确定该指令的操作码,根据操作码来判断该指令是否为跳转指令。进一步地,跳转指令包括条件跳转指令和无条件跳转指令,取指令单元根据指令的操作码,判断该指令是否为条件跳转指令或无条件跳转指令。
在步骤S310中,跳转指令的地址相关信息包括但不限于跳转指令在存储设备中的地址信息。根据一种实施例,地址相关信息除了包括跳转指令的地址信息之外,还可以包括诸如跳转指令的类型(条件跳转指令、无条件跳转指令或者按照其他分类标准所划分的类型)、分支指令的预测结果等信息。地址相关信息所包括的具体信息项目可以根据跳转指令类型的不同而有所区别。
根据一种实施例,当取指令单元读取到条件跳转指令时,预测该条件跳转指令是否发生跳转,并且,将预测结果与条件跳转指令的地址信息作为该条件跳转指令的地址相关信息,存储至计数缓冲器。此外,取指令单元还根据预测结果来确定待读取的下一条指令的地址信息,将读取的下一条指令的地址信息更新至取指计数器。
根据一种实施例,当取指令单元读取到无条件跳转指令时,确定该无条件跳转指令的跳转目标地址,将跳转目标地址作为待读取的下一条指令的地址信息,更新至取指计数器。
根据一种实施例,跳转指令的地址相关信息的信息标识根据跳转指令的地址相关信息在计数缓冲器中的存储位置来确定。例如,计数缓冲器包含N个表项,每个表项用于存储一条跳转指令的地址相关信息,那么,计数缓冲器最多可以存储N条跳转指令的地址相关信息。若某一跳转指令的地址相关信息被存储至计数缓冲器的第5个表项,那么该跳转指令的地址相关信息的信息标识相应地可以设置为5。
在将跳转指令的地址相关信息存储至计数缓冲器、并确定该地址相关信息对应的信息标识之后,取指令单元将跳转指令及信息标识发送至指令译码单元。指令译码单元对跳转指令进行译码,将译码结果连同信息标识一起发送至指令执行单元。
随后,在步骤S320中,指令执行单元根据信息标识从计数缓冲器获取跳转指令的地址相关信息,并根据地址相关信息来执行该跳转指令。
根据一种实施例,方法300还包括步骤S330(步骤S330在图3中未示出),步骤S330在步骤S320之后执行。
在步骤S330中,指令退休单元接收指令执行单元发来的信息标识,根据信息标识从计数缓冲器获取跳转指令的地址相关信息,根据地址相关信息来退休该跳转指令。例如,指令退休单元根据地址相关信息来更新退休计数器174中的地址信息,以及向寄存器、存储设备中写回指令的运行结果,等。
步骤S320执行跳转指令以及步骤S330退休跳转指令的具体过程根据跳转指令类型的不同而有所区别。
当跳转指令为条件跳转指令时,在步骤S320中,指令执行单元执行该条件跳转指令,判断跳转条件是否成立,以得出是否发生跳转的执行结果。并且,根据信息标识,从计数缓冲器中获取条件跳转指令的预测结果。指令执行单元判断获取到的预测结果与该条件跳转指令的实际执行结果是否一致,将判断结果以及信息标识发送至指令退休单元,以便指令退休单元执行后续步骤S330来退休该条件跳转指令。
在步骤S330中,指令退休单元接收指令执行单元发来的判断结果和信息标识,根据信息标识从计数缓冲器中获取该条件跳转指令的地址相关信息,随后,将计数缓冲器中存储的该条件跳转指令的地址相关信息删除。随后,指令退休单元根据指令执行单元发来的判断结果,以及从计数缓冲器中获取到的条件跳转指令的地址信息和预测结果,来确定待退休的下一条指令(即待执行的下一条指令)的地址信息,并将待退休的下一条指令的地址信息更新至退休计数器。
具体地,当指令执行单元发来的判断结果指示条件跳转指令的预测结果与实际执行结果一致时,表明预测正确。指令退休单元根据条件跳转指令的地址信息和预测结果(即实际执行结果),可以确定待执行的下一条指令的地址信息,待执行的下一条指令即为待退休的下一条指令,并将待执行的下一条指令的地址信息更新至退休计数器。另外,由于预测正确,因此当前取指计数器中存储的下一条指令的地址信息也是正确的,无需进行修正。
当指令执行单元发来的判断结果指示条件跳转指令的预测结果与实际执行结果不一致时,表明预测错误。在这种情况下,指令退休单元根据条件跳转指令的地址信息和实际执行结果(实际执行结果与预测结果相反),确定待执行的下一条指令的地址信息,将待执行的下一条指令的地址信息更新至退休计数器。此外,取指计数器中当前存储的下一条指令的地址信息是根据预测结果来确定的,由于预测错误,取指计数器中存储的地址信息也是错误的,需要进行修正。因此,根据一种实施例,当判断结果指示条件跳转指令的预测结果与实际执行结果不一致时,指令退休单元根据判断结果以及条件跳转指令的地址信息重新确定真实的待读取(即待执行)的下一条指令的地址信息,并将该待读取的下一条指令的地址信息更新至取指计数器。
当跳转指令为无条件跳转指令时,在步骤S320中,指令执行单元执行该无条件跳转指令,以得出确定跳转的执行结果。并且,指令执行单元可以根据信息标识从计数缓冲器中获取地址相关信息,进一步确定跳转的执行结果。随后,指令执行单元将确定跳转的执行结果以及信息标识发送至指令退休单元,以便指令退休单元执行后续步骤S330来退休该跳转指令,即,根据执行结果和信息标识来确定待退休(即待执行)的下一条指令的地址信息,并将待退休的下一条指令的地址信息更新至退休计数器。
在步骤S330中,指令退休单元接收指令执行单元发来的确定跳转的执行结果和信息标识,根据信息标识从计数缓冲器中获取该无条件跳转指令的地址相关信息,随后,将计数缓冲器中存储的该无条件跳转指令的地址相关信息删除。随后,指令退休单元根据无条件跳转指令的地址信息和指令执行单元发来的确定跳转的执行结果来确定该无条件跳转指令的跳转目标地址(跳转目标地址即为待执行、也是待退休的下一条指令的地址),将跳转目标地址作为待退休的下一条指令的地址信息,更新至退休计数器。
如上所述,根据本发明的指令处理装置可以实现为处理器核,且指令处理方法可以在处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和/或科学(吞吐量)计算的专用核。而处理器可以实现为CPU(中央处理器)和/或协处理器,其中CPU可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一种计算机系统架构中,协处理器在与CPU分开的芯片上。在另一种计算机系统架构中,协处理器在与CPU相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与CPU在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。
图4示出了根据本发明一个实施例的处理器400的示意图。如图4中的实线框所示,根据一种实施方式,处理器40包括单个核410-1、系统代理单元420、总线控制器单元430。如图4中的虚线框所示,根据本发明的另一个实施方式,处理器400还可以包括多个核410-N、处于系统代理单元420中的集成存储器控制器单元422以及专用逻辑440。
根据一种实施方式,处理器400可以实现为中央处理器(CPU),其中专用逻辑440是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),且核410-1~410-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合)。根据另一种实施方式,处理器400可以实现为协处理器,其中核410-1~410-N是用于图形和/或科学(吞吐量)的多个专用核。根据还有一种实施方式,处理器400可以实现为协处理器,其中核410-1~410-N是多个通用有序核。因此,处理器400可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器400可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元450、以及耦接到集成存储器控制器单元422的外部存储器(未示出)。该共享高速缓存单元450可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元452将集成图形逻辑440、共享高速缓存单元450以及系统代理单元420/集成存储器控制器单元422互连,本发明不受限于此,并且可使用任何数量的公知技术来将这些单元互连。
系统代理单元420包括协调和操作核410-1~410-N的那些组件。系统代理单元420可包括例如功率控制单元(PCU)和显示单元。PCU可以包括调整核410-1~410-N和集成图形逻辑440的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核410-1~410-N可以具有上面参考图1描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核410-1~410-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图5示出了根据本发明的一个实施例的片上系统(System on Chip,SoC)500的示意图。图5所示的片上系统包含了图4所示的处理器400,因此与图4中相似的部件具有同样的附图标记。如图5所示,互连单元520耦接到应用处理器510、系统代理单元420、总线控制器单元430、集成存储器控制器单元422、一个或多个协处理器530、静态随机存取存储器(SRAM)单元540、直接存储器存取(DMA)单元550以及用于耦合至一个或多个外部显示器的显示单元560。应用处理器510包括一个或多个核410-1~410-N的集合以及共享高速缓存单元450。协处理器530包括集成图形逻辑、图像处理器、音频处理器和视频处理器。在一个实施例中,协处理器530包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
另外,上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、IoT设备,AIoT设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (29)
1.一种指令处理装置,包括:取指令单元、指令执行单元和计数缓冲器,所述计数缓冲器分别与所述取指令单元、指令执行单元耦接,
所述取指令单元适于在读取到跳转指令时,将所述跳转指令的地址相关信息存储至所述计数缓冲器,并将所述地址相关信息对应的信息标识传递至所述指令执行单元,其中,所述地址相关信息包括所述跳转指令在存储设备中的地址信息;
所述指令执行单元适于根据所述信息标识从所述计数缓冲器获取所述跳转指令的地址相关信息,并根据所述地址相关信息来执行所述跳转指令。
2.如权利要求1所述的装置,还包括:
指令退休单元,分别与所述指令执行单元和所述计数缓冲器耦接,适于接收所述指令执行单元发来的所述信息标识,根据所述信息标识从所述计数缓冲器获取所述跳转指令的地址相关信息,以便退休所述跳转指令。
3.如权利要求1或2所述的装置,其中,所述取指令单元适于:
对读取到的指令进行预译码以确定该指令的操作码;
根据所述操作码来判断该指令是否为跳转指令。
4.如权利要求1-3中任一项所述的装置,其中,所述跳转指令包括条件跳转指令和无条件跳转指令。
5.如权利要求4所述的装置,其中,所述取指令单元还适于:
在读取到条件跳转指令时,预测所述条件跳转指令是否发生跳转,将预测结果与所述条件跳转指令的地址信息作为该条件跳转指令的地址相关信息,存储至所述计数缓冲器。
6.如权利要求5所述的装置,所述取指令单元还适于:
根据所述预测结果来确定待读取的下一条指令的地址信息。
7.如权利要求5或6所述的装置,所述指令执行单元适于:
执行所述条件跳转指令,以得出是否发生跳转的执行结果;
根据信息标识从所述计数缓冲器中获取所述条件跳转指令的预测结果;
判断所述预测结果与所述条件跳转指令的执行结果是否一致,将判断结果和所述信息标识发送至指令退休单元,以便所述指令退休单元根据所述判断结果和所述信息标识来确定待退休的下一条指令的地址信息。
8.如权利要求7所述的装置,其中,所述指令退休单元适于:
接收所述指令执行单元发来的判断结果和所述信息标识;
根据所述信息标识从所述计数缓冲器中获取所述条件跳转指令的地址相关信息,将所述条件跳转指令的地址相关信息从所述计数缓冲器中删除;以及
根据所述判断结果以及条件跳转指令的地址信息和预测结果,来确定待退休的下一条指令的地址信息。
9.如权利要求8所述的装置,其中,所述指令退休单元还适于:
在所述判断结果为不一致时,根据所述判断结果以及条件跳转指令的地址信息,重新确定待读取的下一条指令的地址信息。
10.如权利要求4所述的装置,其中,所述取指令单元还适于:
在读取到无条件跳转指令时,确定所述无条件跳转指令的跳转目标地址,将所述跳转目标地址作为待读取的下一条指令的地址信息。
11.如权利要求10所述的装置,其中,所述指令执行单元还适于:
执行所述无条件跳转指令,以得出确定跳转的执行结果,并将所述执行结果和所述信息标识发送至指令退休单元。
12.如权利要求11所述的装置,其中,所述指令退休单元还适于:
接收所述指令执行单元发来的无条件跳转指令的执行结果和信息标识;
根据所述信息标识从所述计数缓冲器中获取所述无条件跳转指令的地址相关信息,将所述无条件跳转指令的地址相关信息从所述计数缓冲器中删除;以及
根据所述无条件跳转指令的地址信息和所述执行结果来确定所述无条件跳转指令的跳转目标地址,将所述跳转目标地址作为待退休的下一条指令的地址信息。
13.如权利要求1所述的装置,其中,所述信息标识根据所述跳转指令的地址相关信息在所述计数缓冲器中的存储位置来确定。
14.如权利要求1所述的装置,其中,所述计数缓冲器采用队列数据结构。
15.一种指令处理方法,在指令处理装置中执行,所述指令处理装置包括取指令单元、指令执行单元和计数缓冲器,所述方法包括步骤:
在取指令单元读取到跳转指令时,将跳转指令的地址相关信息存储至计数缓冲器,并将所述地址相关信息对应的信息标识传递至所述指令执行单元,其中,所述地址相关信息包括所述跳转指令在存储设备中的地址信息;
所述指令执行单元根据所述信息标识从所述计数缓冲器获取所述跳转指令的地址相关信息,并根据所述地址相关信息来执行所述跳转指令。
16.如权利要求15所述的方法,其中,所述指令处理装置还包括指令退休单元,所述方法还包括步骤:
所述指令退休单元接收所述指令执行单元发来的信息标识,根据所述信息标识从所述计数缓冲器获取所述跳转指令的地址相关信息,根据所述地址相关信息来退休所述跳转指令。
17.如权利要求15或16所述的方法,在所述将跳转指令的地址相关信息存储至计数缓冲器的步骤之前,还包括步骤:
对读取到的指令进行预译码以确定该指令的操作码;
根据所述操作码来判断该指令是否为跳转指令。
18.如权利要求15-17中任一项所述的方法,其中,所述跳转指令包括条件跳转指令和无条件跳转指令。
19.如权利要求18所述的方法,还包括步骤:
在读取到条件跳转指令时,预测所述条件跳转指令是否发生跳转;
将预测结果与所述条件跳转指令的地址信息作为该条件跳转指令的地址相关信息,存储至所述计数缓冲器。
20.如权利要求19所述的方法,在所述预测所述条件跳转指令是否发生跳转的步骤之后,还包括步骤:
根据所述预测结果来确定待读取的下一条指令的地址信息。
21.如权利要求19或20所述的方法,其中,所述根据所述地址相关信息来执行所述跳转指令的步骤包括:
执行所述条件跳转指令,以得出是否发生跳转的执行结果;
根据信息标识从所述计数缓冲器中获取所述条件跳转指令的预测结果;
判断所述预测结果与所述条件跳转指令的执行结果是否一致,以便根据所述判断结果和所述信息标识来确定待退休的下一条指令的地址信息。
22.如权利要求21所述的方法,其中,所述根据所述判断结果和所述信息标识来确定待退休的下一条指令的地址信息的步骤包括:
根据所述信息标识从所述计数缓冲器中获取所述条件跳转指令的地址相关信息,将所述条件跳转指令的地址相关信息从所述计数缓冲器中删除;以及
根据所述判断结果以及条件跳转指令的地址信息和预测结果,来确定待退休的下一条指令的地址信息。
23.如权利要求22所述的方法,还包括步骤:
在所述判断结果为不一致时,根据所述判断结果以及条件跳转指令的地址信息,重新确定待读取的下一条指令的地址信息。
24.如权利要求18所述的方法,还包括步骤:
在读取到无条件跳转指令时,确定所述无条件跳转指令的跳转目标地址,将所述跳转目标地址作为待读取的下一条指令的地址信息。
25.如权利要求24所述的方法,其中,所述根据所述地址相关信息来执行所述跳转指令的步骤包括:
执行所述无条件跳转指令,得出确定跳转的执行结果,以便根据所述执行结果和所述信息标识来确定待退休的下一条指令的地址信息。
26.如权利要求25所述的方法,其中,所述根据所述执行结果和所述信息标识来确定待退休的下一条指令的地址信息的步骤包括:
根据所述信息标识从所述计数缓冲器中获取所述无条件跳转指令的地址相关信息,将所述无条件跳转指令的地址相关信息从所述计数缓冲器中删除;以及
根据所述无条件跳转指令的地址信息和所述执行结果来确定所述无条件跳转指令的跳转目标地址,将所述跳转目标地址作为待退休的下一条指令的地址信息。
27.如权利要求18所述的方法,其中,所述信息标识根据所述跳转指令的地址相关信息在所述计数缓冲器中的存储位置来确定。
28.一种片上系统,包括如权利要求1-14中任一项所述的指令处理装置。
29.一种智能设备,包括如权利要求28所述的片上系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900984.1A CN112540792A (zh) | 2019-09-23 | 2019-09-23 | 指令处理方法及装置 |
US17/029,595 US20210089306A1 (en) | 2019-09-23 | 2020-09-23 | Instruction processing method and apparatus |
PCT/US2020/052204 WO2021061762A1 (en) | 2019-09-23 | 2020-09-23 | Instruction processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900984.1A CN112540792A (zh) | 2019-09-23 | 2019-09-23 | 指令处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540792A true CN112540792A (zh) | 2021-03-23 |
Family
ID=74881865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910900984.1A Pending CN112540792A (zh) | 2019-09-23 | 2019-09-23 | 指令处理方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210089306A1 (zh) |
CN (1) | CN112540792A (zh) |
WO (1) | WO2021061762A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719561A (zh) * | 2023-08-09 | 2023-09-08 | 芯砺智能科技(上海)有限公司 | 一种条件分支指令的处理系统和方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3122747B1 (fr) * | 2021-05-07 | 2023-03-31 | Commissariat Energie Atomique | Procede d’execution d’une fonction, securise par desynchronisation temporelle |
CN113760366B (zh) * | 2021-07-30 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 一种条件跳转指令的处理方法、系统及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5485587A (en) * | 1992-02-07 | 1996-01-16 | Mitsubishi Denki Kabushiki Kaisha | Data processor calculating branch target address of a branch instruction in parallel with decoding of the instruction |
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
US6101577A (en) * | 1997-09-15 | 2000-08-08 | Advanced Micro Devices, Inc. | Pipelined instruction cache and branch prediction mechanism therefor |
US20020099910A1 (en) * | 2001-01-23 | 2002-07-25 | Shah Emanuel E. | High speed low power cacheless computer system |
CN104020981A (zh) * | 2014-06-19 | 2014-09-03 | 大唐微电子技术有限公司 | 一种中央处理器及其指令处理方法 |
US20170060579A1 (en) * | 2015-08-26 | 2017-03-02 | Huawei Technologies Co., Ltd. | Device and processing architecture for instruction memory efficiency |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2363812B1 (en) * | 2010-03-04 | 2018-02-28 | Karlsruher Institut für Technologie | Reconfigurable processor architecture |
-
2019
- 2019-09-23 CN CN201910900984.1A patent/CN112540792A/zh active Pending
-
2020
- 2020-09-23 WO PCT/US2020/052204 patent/WO2021061762A1/en active Application Filing
- 2020-09-23 US US17/029,595 patent/US20210089306A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5485587A (en) * | 1992-02-07 | 1996-01-16 | Mitsubishi Denki Kabushiki Kaisha | Data processor calculating branch target address of a branch instruction in parallel with decoding of the instruction |
US6101577A (en) * | 1997-09-15 | 2000-08-08 | Advanced Micro Devices, Inc. | Pipelined instruction cache and branch prediction mechanism therefor |
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
US20020099910A1 (en) * | 2001-01-23 | 2002-07-25 | Shah Emanuel E. | High speed low power cacheless computer system |
CN104020981A (zh) * | 2014-06-19 | 2014-09-03 | 大唐微电子技术有限公司 | 一种中央处理器及其指令处理方法 |
US20170060579A1 (en) * | 2015-08-26 | 2017-03-02 | Huawei Technologies Co., Ltd. | Device and processing architecture for instruction memory efficiency |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719561A (zh) * | 2023-08-09 | 2023-09-08 | 芯砺智能科技(上海)有限公司 | 一种条件分支指令的处理系统和方法 |
CN116719561B (zh) * | 2023-08-09 | 2023-10-31 | 芯砺智能科技(上海)有限公司 | 一种条件分支指令的处理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021061762A1 (en) | 2021-04-01 |
US20210089306A1 (en) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6968444B1 (en) | Microprocessor employing a fixed position dispatch unit | |
US7861066B2 (en) | Mechanism for predicting and suppressing instruction replay in a processor | |
US9367471B2 (en) | Fetch width predictor | |
US20120204008A1 (en) | Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections | |
US20210089306A1 (en) | Instruction processing method and apparatus | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
US20210389979A1 (en) | Microprocessor with functional unit having an execution queue with priority scheduling | |
EP1974254B1 (en) | Early conditional selection of an operand | |
US7725690B2 (en) | Distributed dispatch with concurrent, out-of-order dispatch | |
US11675595B2 (en) | Starting reading of instructions from a correct speculative condition prior to fully flushing an instruction pipeline after an incorrect instruction speculation determination | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US7908463B2 (en) | Immediate and displacement extraction and decode mechanism | |
CN112540789B (zh) | 一种指令处理装置、处理器及其处理方法 | |
US11210091B2 (en) | Method and apparatus for processing data splicing instruction | |
US11150979B2 (en) | Accelerating memory fault resolution by performing fast re-fetching | |
CN112395000B (zh) | 一种数据预加载方法和指令处理装置 | |
CN113568663A (zh) | 代码预取指令 | |
CN117348936A (zh) | 处理器、取指方法和计算机系统 | |
JPH11306019A (ja) | 情報処理装置及びプロセッサ |
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 |