CN117093272A - 指令发送方法及处理器 - Google Patents

指令发送方法及处理器 Download PDF

Info

Publication number
CN117093272A
CN117093272A CN202311278761.9A CN202311278761A CN117093272A CN 117093272 A CN117093272 A CN 117093272A CN 202311278761 A CN202311278761 A CN 202311278761A CN 117093272 A CN117093272 A CN 117093272A
Authority
CN
China
Prior art keywords
instruction
register
instruction information
pipeline
information
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.)
Granted
Application number
CN202311278761.9A
Other languages
English (en)
Other versions
CN117093272B (zh
Inventor
高军
赵天磊
冯明鹤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phytium Technology Co Ltd
Original Assignee
Phytium Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202311278761.9A priority Critical patent/CN117093272B/zh
Publication of CN117093272A publication Critical patent/CN117093272A/zh
Application granted granted Critical
Publication of CN117093272B publication Critical patent/CN117093272B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements

Landscapes

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

Abstract

本申请提出一种指令发送方法及处理器,该指令发送方法应用于处理器核,所述处理器核的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述方法包括:所述取指单元在检测到设定时长内没有从所述第一寄存器中读取指令信息的情况下,将预测得到的指令信息存储至所述第二寄存器。采用上述方案能够提高处理器内部的取指令速度,从而提升处理器性能。

Description

指令发送方法及处理器
技术领域
本申请涉及计算机技术领域,尤其涉及一种指令发送方法及处理器。
背景技术
指令流水线(Instruction pipeline)是一种计算机处理器设计技术,通过将指令的执行过程分为多个阶段,使得多个指令可以同时在不同的阶段并行执行,从而提高处理器的吞吐量和效率。
常见的指令流水线包括取指令、指令译码、指令执行、存储结果、写回这几个阶段。在指令流水线中,每个阶段都尽可能并行地执行,使得处理器可以同时处理多条指令。
其中,在取指令阶段又包括指令预测和取指令两部分。指令预测是指在指令流水线中用于预测分支指令(如条件分支或无条件分支)的执行路径的一种技术。然后,再按照指令预测的结果来继续取指令阶段的执行。
现阶段,如何提高取指令速度,从而提升处理器性能,成为了业内的热点研究方向。
发明内容
针对上述技术现状,本申请提出一种指令发送方法及处理器,能够提高处理器内部的取指令速度,从而提升处理器性能。
为了达到上述技术目的,本申请具体提出如下技术方案:
本申请第一方面提出一种指令发送方法,应用于处理器核,所述处理器核的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述方法包括:所述取指单元在检测到设定时长内没有从所述第一寄存器中读取指令信息的情况下,将预测得到的指令信息存储至所述第二寄存器。
在一些实现方式中,所述取指单元中运行有指令预测流水线和取指令流水线,所述方法还包括:所述取指单元将所述第二寄存器中存储的指令信息发送至所述取指令流水线。
在一些实现方式中,所述方法还包括:所述取指单元在检测到所述第二寄存器为空并且所述取指令流水线空闲的情况下,从所述第一寄存器中获取指令信息并发送到所述取指令流水线。
在一些实现方式中,所述指令预测流水线包括多级指令预测流水线,每一级指令预测流水线分别对应一个第一寄存器;所述取指单元从所述第一寄存器中获取指令信息并发送到所述取指令流水线,包括:所述取指单元从所述多级指令预测流水线的任意一级指令预测流水线对应的第一寄存器中获取指令信息并发送到所述取指令流水线。
在一些实现方式中,所述指令预测流水线包括多级指令预测流水线,每一级指令预测流水线分别对应一个第一寄存器;所述取指单元从所述第一寄存器中获取指令信息并发送到所述取指令流水线,包括:所述取指单元按照第一优先级顺序,从所述多级指令预测流水线对应的第一寄存器中获取指令信息并发送到所述取指令流水线;其中,所述第一优先级顺序,表示从后级指令预测流水线对应的第一寄存器中获取指令信息的优先级,高于从前级指令预测流水线对应的第一寄存器中获取指令信息的优先级。
在一些实现方式中,所述取指单元将所述第二寄存器中存储的指令信息发送至所述取指令流水线,包括:所述取指单元在检测到所述第二寄存器中存储多条指令信息的情况下,对所述多条指令信息进行合并后发送到所述取指令流水线。
在一些实现方式中,所述取指单元对所述多条指令信息进行合并后发送到所述取指令流水线,包括:所述取指单元从所述多条指令信息中选出N条指令信息,并且对选出的N条指令信息进行合并后发送到所述取指令流水线;其中,N为大于1的整数,所述N的取指由所述取指单元与译码单元之间的指令发送带宽确定。
在一些实现方式中,所述取指单元从所述多条指令信息中选出N条指令信息,包括:所述取指单元按照指令信息在所述第二寄存器中存储的时长由长到短的顺序,对所述多条指令信息进行排序,得到指令信息序列;所述取指单元从所述指令信息序列中,选出排列位置位于所述指令信息序列的前N位的指令信息。
在一些实现方式中,所述指令信息包括多条指令构成的指令组的信息。
本申请第二方面提出一种处理器,所述处理器的处理器核的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述处理器核被配置为执行上述的指令发送方法。
本申请提出的上述方案能够在第一寄存器中的指令信息不能被及时读取的情况下,将指令信息存储到第二寄存器,因此不会因为第一寄存器被占用而导致预测得到的指令信息无法存储,从而也就避免了由于预测得到的指令信息无法存储造成指令预测进程暂停的情况。由此可见,本申请实施例提出的指令发送方法,能够避免由于对预测的指令信息的读取不及时而导致指令预测暂停,从而可以保证指令预测进程的流畅执行,有利于保障和提高指令执行速度,以及有利于提升处理器处理速度。
在某些实现方式中,本方案不仅能够避免在指令预测速度大于取指速度时导致取指速度对指令预测速度形成反压,取指单元还能够在取指速度大于指令预测速度的情况下,直接将指令预测结果发送到取指令流水线,省去对预测的指令信息进行缓存的处理步骤,从而提高取指令速度和工作效率,能够提高处理器处理速度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种处理器核的结构示意图。
图2为本申请实施例提供的一种指令发送方法的流程示意图。
图3为本申请实施例提供的一种指令流水线的示意图。
图4为本申请实施例提供的指令合并示意图。
图5为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
指令流水线(Instruction pipeline)是一种计算机处理器设计技术,通过将指令的执行过程分为多个阶段,使得多个指令可以同时在不同的阶段并行执行,从而提高处理器的吞吐量和效率。
常见的指令流水线包括以下几个阶段:
取指令(Instruction Fetch):从指令存储器中读取下一条指令。
指令译码(Instruction Decode):解析指令的操作码和操作数,并为执行阶段做准备。
执行指令(Execute):根据指令的操作码和操作数进行具体的计算或操作。
存储结果(Memory Access):将执行结果存储到寄存器或内存中。
写回(Write Back):将执行结果写回寄存器。
在指令流水线中,每个阶段都尽可能并行地执行,使得处理器可以同时处理多条指令。当一个指令进入流水线后,后续的指令可以在不同的阶段同时执行,从而实现指令级并行。这种并行执行的方式可以提高处理器的效率和性能。
其中,在取指令阶段又包括指令预测和取指令两部分。
在传统的指令流水线设计中,取指令阶段负责从指令存储器中获取下一条要执行的指令。然而,在面对分支指令时,取指令阶段会遇到一个问题:由于分支指令可能改变程序的执行路径,取指令阶段必须等待分支指令执行完毕并根据其结果来决定下一条要执行的指令是从哪个地址获取。
这种等待分支指令结果的情况会导致指令流水线的停顿(pipeline stall),即处理器的各个阶段无法充分并行执行,降低了处理器的效率。为了解决这个问题,引入了指令预测机制。
指令预测(Instruction Prediction)是指在指令流水线中用于预测分支指令(如条件分支或无条件分支)的执行路径的一种技术。它试图在分支指令被执行前预测分支的结果,以便提前执行分支指令后面的指令。
通过使用分支预测技术,处理器可以在分支指令的目标地址和执行路径尚未确定时,预测分支的结果并继续执行后续指令,以提高指令流水线的吞吐量和效率。然而,分支预测并不总是准确的,如果预测错误,处理器需要通过流水线暂停(Pipeline Stalling)等机制来清理错误执行的指令并重新开始执行。因此,指令预测和取指令是紧密相关的,指令预测机制的准确性对于取指令阶段的性能至关重要。准确的指令预测可以最大程度地减少流水线停顿,并提高处理器的指令级并行性和整体性能。
多级指令预测(Multiple-Level Instruction Prediction)是一种更高级的指令预测技术,它尝试预测多个连续的分支指令的执行路径,并且可以对一条指令进行多级预测,每级预测都给出一个预测结果,层级越靠后的预测结果越准确。比如,假设指令预测流水线为3级预测流水线,每级预测流水线可以预测8条指令,前一级预测结果会进入后一级进行进一步的预测,若第一级预测流水线预测第3条指令跳转,第二级预测流水线预测第3条指令不跳转并且第5条指令跳转,第三级预测流水线预测第3条指令和第5条指令都不跳转且第7条指令跳转,则最终以第三级预测流水线的预测结果为准。
正常情况下,最后一级指令预测流水线线的预测结果更准确,因此处理器按照最后一级指令预测流水线的输出获取指令并执行。但是在某些情况下,多级指令预测流水线会预测得到相同的预测结果,在这种情况下,处理器可以从第一级指令预测流水线获取预测结果并按照该预测结果获取指令并执行,这样可以更快地获取及执行指令,进一步提高处理器处理速度。
可见,通过使用多级指令预测技术,处理器可以在一定程度上提前预测分支指令的执行路径,并根据这些预测结果继续执行后续指令。这样可以减少流水线的停顿,并进一步提高指令级并行性和处理器的性能。
指令预测技术的提出,是为了更进一步提高处理器的处理速度,此外,业内也有其他方面的用于提升指令预测速度的研究。
但是,本申请的发明人在研究中发现,提升指令预测速度只是提升处理器处理速度的一种途径,单纯地提高指令预测速度也是存在瓶颈的。基于现有的指令流水线工作模式,当指令预测流水线生成预测结果时,将预测结果存储到寄存器中,然后取指令流水线再从该寄存器中读取指令预测结果并进行取指。具体而言,指令预测流水线是按照设定的时钟周期进行预测的,每当一个时钟周期结束时,指令预测流水线将指令预测结果存储到寄存器,相应的,在下一个时钟周期到来时,取指令流水线读取该寄存器中存储的指令预测结果,指令预测流水线可以向该寄存器存储新的指令预测结果。
在上述的工作过程中,如果取指令流水线的取指速度慢,将不能及时从寄存器中读取指令预测结果,这样指令预测流水线就无法向寄存器中存储新的指令预测结果,从而对指令预测流水线形成反压,使得指令预测流水线停顿,此时,即便是多级指令预测流水线,也无法发挥作用。
对此,本申请提出通过另一方面更进一步提高处理器的处理速度,即,通过将指令预测与取指令解耦,避免取指令对指令预测造成反压,并且提高根据指令预测结果进行取指的速度,来提升处理器的处理速度。对此,本申请提出一种新的指令发送方案,能够显著提升指令处理速度,从而提升处理器性能。
下面对本申请实施例提出的指令发送方案进行介绍。
首先,对本申请实施例的应用场景进行介绍。
参见图1所示,为本申请实施例提出的指令发送方法所适用的一种应用场景的示意图。该应用场景展示了一处理器核,该处理器核采用指令流水线的方式执行指令。
在该处理器核中,包括取指单元,取指单元用于实现取指令功能,取指单元从内存中获取指令后,可以发送给指令译码单元进行指令译码处理,进而可以继续后的指令执行等处理。
如图1所示,在取指单元中设置有第一寄存器和第二寄存器,取指单元能够预测指令信息,并将预测的指令信息存储到第一寄存器,以及,取指单元能够从第一寄存器读取指令信息并根据读取的指令信息获取指令。
在另一些实施例中,取指单元中运行有指令预测流水线和取指令流水线。其中,指令预测流水线用于实现上述的指令预测功能,预测得到指令信息并存储到第一寄存器。该指令预测流水线,可以是多级指令预测流水线,也可以是单级指令预测流水线,本实施例不做限定。
取指令流水线,用于从第一寄存器中读取指令信息,根据读取的指令信息,从指令存储器中获取指令。该取指令流水线可以采用多级取指令流水线,比如可以是3级的取指令流水线、4级的取指令流水线等,或者,在取指令流水线的取指效率允许的情况下,也可以采用单级取指令流水线,本申请实施例不做严格限定。
第一寄存器用于对指令预测流水线预测的指令信息进行缓存,即,指令预测流水线生成指令信息预测结果时,将指令信息存储至第一寄存器。取指令流水线再从第一寄存器中读取指令信息,并按照指令信息获取指令。
上述的第一寄存器的数量,可以与指令预测流水线的层级数量相一致,即,当指令预测流水线为多级指令预测流水线时,每一级指令预测流水线均可以对应设置一个第一寄存器。或者,多级指令预测流水线也可以共用同一个第一寄存器,并且各级指令预测流水线可以分别占用第一寄存器中的不同存储地址。
上述的第二寄存器,也用于对指令预测流水线预测的指令信息进行缓存。其中,指令预测流水线预测的指令信息,具体是指令预测流水线预测的指令的目标地址和执行路径。
上述的第一寄存器和第二寄存器,可以采用相同类型的寄存器,也可以采用不同类型的寄存器,本实施例不做限定。同时,第一寄存器和第二寄存器的存储空间大小可以相同也可以不同,只要能够实现对指令信息的存储的寄存器,都可以被本实施例所采用。
基于上述的处理器核硬件结构,本申请实施例提出一种指令发送方法,参见图2所示,该方法包括:
S101、取指单元在检测到设定时长内没有从所述第一寄存器中读取指令信息的情况下,将预测得到的指令信息存储至所述第二寄存器。
其中,上述的设定时长,是指设定的时间段,在本申请实施例中,该设定时长可以为指令预测周期,或不大于指令预测周期的时长。
通常情况下,取指单元预测的指令信息在被存储到第一寄存器后,在下一个预测周期内,该第一寄存器中的指令信息会被取指令流水线读取,从而腾空第一寄存器使得下一个预测周期预测得到的指令信息可以存储到第一寄存器。因此,正常工作过程中,取指单元会周期性地从第一寄存器中读取指令信息,也就是说,取指单元会每隔设定时长就从第一寄存器中读取一次指令信息。
取指单元在工作过程中,对指令预测过程以及对第一寄存器的读取情况进行监测,若在设定时长内没有从第一寄存器中读取指令信息,则可以确定取指令流水线的工作进度较慢,不能及时地对第一寄存器中的指令信息进行读取。在这种情况下,第一寄存器已经被占用,新预测出的指令信息无法继续存储到第一寄存器中,如果指令信息无法存储,则会导致指令预测暂停。
为了使得指令预测进程的流畅进行,本申请实施例提出,当取指单元检测到在设定时长内没有从第一寄存器中读取指令信息时,取指单元将预测得到的指令信息存储到第二寄存器,也就是将新预测到的指令信息存储到第二寄存器,而并非等待存储到第一寄存器。
在实施本实施例的技术方案时,取指单元可以在每个预测周期内检测是否在设定时长内没有从第一寄存器中读取指令信息,或者,取指单元可以在每次预测得到指令信息时,检测是否在设定时长内没有从第一寄存器中读取指令信息。这样,每当取指单元预测得到新的指令信息时,都可以及时地通过检测是否在设定时长内没有从第一寄存器中读取指令信息,来确定是将预测得到的指令信息存储到第一寄存器还是存储到第二寄存器。
如果在设定时长内,从第一寄存器中读取了指令信息,则新的指令信息可以存储到第一寄存器,如果在设定时长内没有从第一寄存器读取指令信息,则将新的指令信息存储到第二寄存器。
上述方案能够在第一寄存器中的指令信息不能被及时读取的情况下,将指令信息存储到第二寄存器,因此不会因为第一寄存器被占用而导致预测得到的指令信息无法存储,从而也就避免了由于预测得到的指令信息无法存储造成指令预测进程暂停的情况。由此可见,本申请实施例提出的指令发送方法,能够避免由于对预测的指令信息的读取不及时而导致指令预测暂停,从而可以保证指令预测进程的流畅执行,有利于保障和提高指令执行速度。
另一实施例提出,在本申请提出的指令发送方法中,取指单元还能够将第二寄存器中存储的指令信息发送到取指令流水线。
具体的,取指单元可以在检测到第二寄存器中存储有指令信息,并且检测到取指令流水线空闲或取指令流水线的取指能力允许的情况下,将第二寄存器中存储的部分或全部指令信息发送给取指令流水线,使得取指令流水线可以按照接收的指令信息从指令存储器中获取指令,从而达到取指令的目的。
需要说明的是,取指单元向取指令流水线发送的指令信息的数量,可以根据取指令流水线的工作能力而灵活调整。当取指令流水线的取指速率较高时可以向取指令流水线发送较多的指令信息,当取指令流水线的取指速率较低时,可以向取指令流水线发送少量的指令信息。
通过上述介绍可知,本申请实施例在处理器核内部设置了第二寄存器,使得处理器核中的取指单元能够在第一寄存器无法存储更多指令信息的情况下,将指令预测流水线预测的指令信息缓存至第二寄存器,然后再将第二寄存器中缓存的指令信息发送给取指令流水线进行取指操作。上述方案使得指令预测与取指令相互解耦,从而可以使得指令预测的速度提升不会受到取指令速度的影响,能够避免由于取指速度慢而影响指令预测速度,整体上能够提升取指速度,提升处理器处理速度。
在另一实施例中,上述的指令发送方法还包括:
取指单元在检测到第二寄存器为空,并且取指令流水线空闲的情况下,从第一寄存器中获取指令并发送到取指令流水线。
具体的,取指单元实时地对第二寄存器的存储状态,以及对取指令流水线的工作状态进行监测。当监测到第二寄存器为空,并且取指令流水线空闲的状态时,取指单元能够确定,取指流水线的取指速度较快,已经没有指令信息积压。
在这种情况下,为了提高取指速度,在本申请实施例中设定,当取指单元检测到第二寄存器为空并且取指令流水线空闲的情况时,取指单元直接从指令预测流水线对应的第一寄存器中获取指令信息,并且发送到取指令流水线。该处理使得第一寄存器中的指令信息不再等待取指令流水线来读取,而是由取指单元主动、及时地将指令信息发送到取指令流水线,能够更进一步提高对指令预测流水线预测的指令信息的处理速度,即能够提高取指速度。
基于上述处理,本方案不仅能够避免在指令预测速度大于取指速度时导致取指速度对指令预测速度形成反压,取指单元还能够在取指速度大于指令预测速度的情况下,直接将指令预测结果发送到取指令流水线,省去对预测的指令信息进行缓存和读取的处理步骤,从而提高取指令速度和工作效率,能够提高处理器处理速度。
在一些实施例中,参见图3所示,本实施例中的指令预测流水线采用多级指令预测流水线,比如可以是2级指令预测流水线、3级指令预测流水线、4级指令预测流水线等,具体的流水线层级数量不做严格限定。并且,每一级指令预测流水线分别对应一个第一寄存器用于存储预测得到的指令信息。
图3中以3级预测流水线(P1、P2、P3)为例,每一级流水线都可以生成预测的指令信息,并且存储到相应的第一寄存器(该第一寄存器在图中未标出)中。在正常情况下,前一级预测的指令信息会进入下一级进行进一步预测,最后一级预测的指令信息,作为整个指令预测流水线最终输出的指令信息。
同时,该取指单元的取指令流水线也采用多级取指令流水线的形式,例如图3中所示的F1、F2、F3三级取指令流水线。与上述的3级预测流水线类似的,三级取指令流水线也采用顺序执行的方式,前级的处理结果进入后级进行更进一步的处理,最终在末级得出最后的取指结果。
基于上述的多级预测流水线,取指单元从第一寄存器中获取指令信息并发送到取指令流水线,具体是,取指单元从多级指令预测流水线的任意一级指令预测流水线对应的第一寄存器中获取指令信息并发送到取指令流水线。
具体而言,在上述场景中,取指单元对多级指令预测流水线的各级进行监测,每当有一级指令预测流水线输出预测的指令信息时,取指单元即可从该级指令预测流水线对应的第一寄存器中获取该指令信息,并将其发送给取指令流水线,使取指令流水线可以根据该指令信息获取指令。
由于前级的指令预测流水线的指令预测准确度比后级的指令预测流水线的指令预测准确度低,因此,实际执行本申请实施例技术方案时可能发生前级的指令预测流水线预测错误,导致取指令流水线根据该错误的指令信息获取指令造成处理器执行错误指令的情况,此时可以通过处理器暂停并清除错误指令,或者对指令进行纠正的操作,更新处理器的指令执行过程。
在一些实现方式中,取指单元从第一寄存器中获取指令信息并发送到取指令流水线,可以是按照第一优先级顺序,从多级指令预测流水线对应的第一寄存器中获取指令信息并发送到取指令流水线。
上述的第一优先级顺序,表示从多级指令预测流水线对应的第一寄存器中获取指令信息时,对各级指令预测流水线对应的第一寄存器中的指令信息的获取优先级。
在本申请实施例中,上述的第一优先级顺序,表示从后级指令预测流水线对应的第一寄存器中获取指令信息的优先级,高于从前级指令预测流水线对应的第一寄存器中获取指令信息的优先级,也就是说,越靠后的指令预测流水线预测的指令信息被读取的优先级越高。
比如在图3中,当取指单元从该3级指令预测流水线对应的第一寄存器中获取指令信息并发送到取指令流水线时,先检测第3级指令预测流水线是否输出指令信息,若第3级指令预测流水线输出指令信息,则将第3级指令预测流水线对应的第一寄存器中的指令信息发送给取指令流水线;若第3级指令预测流水线未输出指令信息,则检测第2级指令预测流水线是否输出指令信息,若第2级指令预测流水线输出指令信息,则将第2级指令预测流水线对应的第一寄存器中的指令信息发送给取指令流水线;若第2级指令预测流水线未输出指令信息,则检测第1级指令预测流水线是否输出指令信息,若第1级指令预测流水线输出指令信息,则将第1级指令预测流水线对应的第一寄存器中的指令信息发送给取指令流水线。
通过上述处理,可以使得更加准确的指令信息优先被发送到取指令流水线,从而有利于提高取指令准确度,以及有利于提高处理器处理效率。
在另一实施例中,上述的指令发送方法还包括:
取指单元在检测到第二寄存器中存储多条指令信息的情况下,对所述多条指令信息进行合并后发送到所述取指令流水线。
具体的,取指单元对第二寄存器中存储的指令信息的数量进行检测和统计,当检测到第二寄存器中存储多条指令信息时,取指单元对多条指令信息进行合并,然后将合并的多条指令信息整体发送给取指令流水线。
其中,取指单元对第二寄存器中存储的指令信息进行合并,可以是对指令信息进行拼接,或者对指令信息进行打包,从而将多条不同的指令信息融合为一条指令信息。
取指单元将多条指令信息合并发送给取指令单元,实现了指令信息的合并发送,提高了指令发送效率。同时,取指令流水线一次接收到多条指令信息,可以在一次取指过程中同时获取多条指令,提高了取指令效率。
在一些实现方式中,取指单元对多条指令信息进行合并后发送到取指令流水线,具体包括:
取指单元从多条指令信息中选出N条指令信息,并且对选出的N条指令信息进行合并后发送到取指令流水线。
其中,N为大于1的正整数,N的取指由取指单元与译码单元之间的指令发送带宽确定。
取指单元与译码单元之间的指令发送带宽,用于表示取指单元一次性向译码单元发送的最大指令数量。该指令发送带宽由处理器架构的硬件特性而确定。
上述的N的取值,不大于取指单元与译码单元之间的指令发送带宽,也就是不大于取指单元一次性向译码单元发送的最大指令数量。
基于上述的取指单元与译码单元之间的指令发送带宽的限制,当取指单元对第二寄存器中的多条指令信息进行合并发送时,首先从多条指令信息中,选出N条指令信息,然后对选出的N条指令信息进行合并后发送到取指令流水线。该处理方式可以避免由于合并的指令信息的数量过多而导致指令信息发送失败,从而在保证最大指令发送效率的前提下确保发送成功率。
在一些实现方式中,取指单元从第二寄存器中存储的多条指令信息中选出N条指令信息时,优先从第二寄存器中选择存储时间最长的指令信息,从而使得最早被预测出的指令信息被更早地发送至取指令流水线。
首先,取指单元按照指令信息在第二寄存器中存储的时长由长到短的顺序,对第二寄存器中的多条指令信息进行排序,得到指令信息序列。
然后,取指单元从该指令信息序列中,选出排列位置位于指令信息序列前N位的指令信息,作为选出的N条待合并的指令信息。
通过上述处理,越早存入第二寄存器的指令信息,会优先参与合并被发送到取指令流水线,从而可以避免指令信息长期得不到应用而失效,提高了指令执行效率。
在一些实现方式中,上述任意实施例中所述的指令信息,是多条指令构成的指令组的信息,也就是多条指令的信息的集合。
在指令预测过程中,为了提高指令预测效率,指令预测流水线可以以指令组的形式进行指令信息预测,即一次针对一个指令组进行预测,尤其是在多个指令预测流水线中,采用指令组的形式进行指令信息预测,可以显著提高指令预测效率和指令执行效率。上述的指令组,是指由多个连续指令构成的指令集合。
以指令组的方式进行指令预测和取指令,可以提高指令执行效率,以及提高处理器处理速度。
当取指单元对第二寄存器中的指令信息进行合并时,也按照指令组的形式进行指令信息合并,在合并时满足合并的指令数量不超过取指单元与译码单元之间的指令发送带宽。
例如图4所示,假设第二寄存器中存储有M+1个指令组的指令信息,即ID0~IDM所示的指令组,每个指令组最多包括8条指令的信息,取指单元与译码单元之间的指令发送带宽N=8,其中灰度单元格所示为预测得到的指令信息。
取指单元第一次可以对ID为0-2的这三个指令组的指令信息进行合并,具体为对指令1/2/3/15/16/17/18/19的信息进行合并;第二次可以对ID为2和3的2个指令组的指令信息进行合并,具体为对指令20/21/22/28/29/30/31/32的信息进行合并; 第三次可以对ID为4的指令组进行指令信息合并(由于ID4的指令组的指令信息数等于8,不需要多个指令组合并),具体是对指令33/34/35/36/37/38/39/40的信息进行合并。
上述处理方式对指令组的指令信息进行合并发送,能够更进一步地提高指令发送效率。
基于上述的指令发送方法,本申请实施例还提出一种处理器,该处理器的处理器核中的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述处理器核被配置为执行上述任意实施例所述的指令发送方法。
本实施例提供的处理器,与本申请上述实施例所提供的指令发送方法属于同一申请构思,可执行本申请上述任意实施例所提供的指令发送方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的指令发送方法的具体处理内容,此处不再加以赘述。
在本申请实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如CPU、微处理器、GPU、或DSP等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为ASIC或PLD实现的硬件电路,例如FPGA等。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种ASIC,例如NPU、TPU、DPU等。
本申请另一实施例还提出一种计算机设备,该计算机设备包括上述的处理器,或者,该计算机设备的处理器被配置为执行上述的任意方法实施例介绍的指令发送方法。
作为一种示例,参见图5所示,该计算机设备包括:
存储器200和处理器210;
其中,所述存储器200与所述处理器210连接,用于存储程序;
所述处理器210的处理器核中的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,该处理器核用于通过运行所述存储器200中存储的程序,实现上述任一实施例公开的指令发送方法。
具体的,上述计算机设备还可以包括:总线、通信接口220、输入设备230和输出设备240。
处理器210、存储器200、通信接口220、输入设备230和输出设备240通过总线相互连接。其中:
总线可包括一通路,在计算机系统各个部件之间传送信息。
处理器210可以是通用处理器,例如通用中央处理器(CPU)、微处理器等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
处理器210可包括主处理器,还可包括基带芯片、调制解调器等。
存储器200中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器200可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
输入设备230可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备240可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口220可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
处理器210执行存储器200中所存放的程序,以及调用其他设备,可用于实现本申请上述实施例所提供的任意一种指令发送方法的各个步骤。
本申请实施例还提出一种芯片,该芯片包括处理器和数据接口,所述处理器的处理器核中的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述处理器核通过所述数据接口读取并运行存储器上存储的程序,以执行上述任意实施例所介绍的指令发送方法,具体处理过程及其有益效果可参见上述的指令发送方法的实施例介绍。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述任意实施例中描述的指令发送方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是存储介质,其上存储有计算机程序,计算机程序被处理器执行本说明书上述任意实施例中描述的指令发送方法中的步骤。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种指令发送方法,其特征在于,应用于处理器核,所述处理器核的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述方法包括:
所述取指单元在检测到设定时长内没有从所述第一寄存器中读取指令信息的情况下,将预测得到的指令信息存储至所述第二寄存器。
2.根据权利要求1所述的方法,其特征在于,所述取指单元中运行有指令预测流水线和取指令流水线,所述方法还包括:
所述取指单元将所述第二寄存器中存储的指令信息发送至所述取指令流水线。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述取指单元在检测到所述第二寄存器为空并且所述取指令流水线空闲的情况下,从所述第一寄存器中获取指令信息并发送到所述取指令流水线。
4.根据权利要求3所述的方法,其特征在于,所述指令预测流水线包括多级指令预测流水线,每一级指令预测流水线分别对应一个第一寄存器;
所述取指单元从所述第一寄存器中获取指令信息并发送到所述取指令流水线,包括:
所述取指单元从所述多级指令预测流水线的任意一级指令预测流水线对应的第一寄存器中获取指令信息并发送到所述取指令流水线。
5.根据权利要求3所述的方法,其特征在于,所述指令预测流水线包括多级指令预测流水线,每一级指令预测流水线分别对应一个第一寄存器;
所述取指单元从所述第一寄存器中获取指令信息并发送到所述取指令流水线,包括:
所述取指单元按照第一优先级顺序,从所述多级指令预测流水线对应的第一寄存器中获取指令信息并发送到所述取指令流水线;
其中,所述第一优先级顺序,表示从后级指令预测流水线对应的第一寄存器中获取指令信息的优先级,高于从前级指令预测流水线对应的第一寄存器中获取指令信息的优先级。
6.根据权利要求2所述的方法,其特征在于,所述取指单元将所述第二寄存器中存储的指令信息发送至所述取指令流水线,包括:
所述取指单元在检测到所述第二寄存器中存储多条指令信息的情况下,对所述多条指令信息进行合并后发送到所述取指令流水线。
7.根据权利要求6所述的方法,其特征在于,所述取指单元对所述多条指令信息进行合并后发送到所述取指令流水线,包括:
所述取指单元从所述多条指令信息中选出N条指令信息,并且对选出的N条指令信息进行合并后发送到所述取指令流水线;
其中,N为大于1的整数,所述N的取指由所述取指单元与译码单元之间的指令发送带宽确定。
8.根据权利要求7所述的方法,其特征在于,所述取指单元从所述多条指令信息中选出N条指令信息,包括:
所述取指单元按照指令信息在所述第二寄存器中存储的时长由长到短的顺序,对所述多条指令信息进行排序,得到指令信息序列;
所述取指单元从所述指令信息序列中,选出排列位置位于所述指令信息序列的前N位的指令信息。
9.根据权利要求1至8中任意一项所述的方法,其特征在于,所述指令信息包括多条指令构成的指令组的信息。
10.一种处理器,其特征在于,所述处理器的处理器核的取指单元包括第一寄存器和第二寄存器,所述取指单元用于预测指令信息并将预测的指令信息存储至所述第一寄存器,以及从所述第一寄存器读取指令信息并根据读取的指令信息获取指令,所述处理器核被配置为执行如权利要求1至9中任意一项所述的指令发送方法。
CN202311278761.9A 2023-10-07 2023-10-07 指令发送方法及处理器 Active CN117093272B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311278761.9A CN117093272B (zh) 2023-10-07 2023-10-07 指令发送方法及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311278761.9A CN117093272B (zh) 2023-10-07 2023-10-07 指令发送方法及处理器

Publications (2)

Publication Number Publication Date
CN117093272A true CN117093272A (zh) 2023-11-21
CN117093272B CN117093272B (zh) 2024-01-16

Family

ID=88783135

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311278761.9A Active CN117093272B (zh) 2023-10-07 2023-10-07 指令发送方法及处理器

Country Status (1)

Country Link
CN (1) CN117093272B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658558B1 (en) * 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
CN102566974A (zh) * 2012-01-14 2012-07-11 哈尔滨工程大学 基于同时多线程的取指控制方法
GB201417926D0 (en) * 2014-10-10 2014-11-26 Aptcore Ltd Signal processing apparatus
WO2015024452A1 (zh) * 2013-08-21 2015-02-26 华为技术有限公司 一种分支预测方法及相关装置
EP3232321A1 (en) * 2016-04-12 2017-10-18 AptCore Ltd Signal processing apparatus with register file having dual two-dimensional register banks
WO2022111733A1 (zh) * 2020-11-30 2022-06-02 百果园技术(新加坡)有限公司 消息处理方法、装置及电子设备
CN116501475A (zh) * 2023-06-21 2023-07-28 杭州炬华科技股份有限公司 线程调度方法、系统以及介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658558B1 (en) * 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
CN102566974A (zh) * 2012-01-14 2012-07-11 哈尔滨工程大学 基于同时多线程的取指控制方法
WO2015024452A1 (zh) * 2013-08-21 2015-02-26 华为技术有限公司 一种分支预测方法及相关装置
GB201417926D0 (en) * 2014-10-10 2014-11-26 Aptcore Ltd Signal processing apparatus
EP3232321A1 (en) * 2016-04-12 2017-10-18 AptCore Ltd Signal processing apparatus with register file having dual two-dimensional register banks
WO2022111733A1 (zh) * 2020-11-30 2022-06-02 百果园技术(新加坡)有限公司 消息处理方法、装置及电子设备
CN116501475A (zh) * 2023-06-21 2023-07-28 杭州炬华科技股份有限公司 线程调度方法、系统以及介质

Also Published As

Publication number Publication date
CN117093272B (zh) 2024-01-16

Similar Documents

Publication Publication Date Title
US20210406027A1 (en) Advanced processor architecture
RU2419836C2 (ru) Способ и устройство для выполнения инструкций процессора на основе динамически изменяемой задержки
CN104731719B (zh) 一种缓存系统和方法
US6857060B2 (en) System, apparatus and method for prioritizing instructions and eliminating useless instructions
US20160291982A1 (en) Parallelized execution of instruction sequences based on pre-monitoring
US7937573B2 (en) Metric for selective branch target buffer (BTB) allocation
CN1282024A (zh) 具有静态转移预测支持的去耦取指令-执行引擎
US20130297912A1 (en) Apparatus and method for dynamic allocation of execution queues
CN103257849A (zh) 程序执行控制装置
JP2007515715A (ja) 命令キャッシュからラベル境界上のトレースキャッシュに遷移させる方法
US9110683B2 (en) Predicting branches for vector partitioning loops when processing vector instructions
CN101884025B (zh) 用于使过程返回序列加速的方法和系统
US7895422B2 (en) Selective postponement of branch target buffer (BTB) allocation
KR20070106783A (ko) 리턴 스택을 운용하는 방법 및 장치
KR100986375B1 (ko) 피연산자의 빠른 조건부 선택
CN107870780B (zh) 数据处理装置和方法
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US20200073670A1 (en) Infinite processor thread balancing
CN117008979B (zh) 一种分支预测器
CN116048627B (zh) 指令缓冲方法、装置、处理器、电子设备及可读存储介质
CN117093272B (zh) 指令发送方法及处理器
US20190163487A1 (en) Priority instruction handling with optimized issue queue design
US9417882B2 (en) Load synchronization with streaming thread cohorts
US20080222392A1 (en) Method and arrangements for pipeline processing of instructions
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant