CN117742796A - 指令唤醒方法、装置以及设备 - Google Patents

指令唤醒方法、装置以及设备 Download PDF

Info

Publication number
CN117742796A
CN117742796A CN202311700751.XA CN202311700751A CN117742796A CN 117742796 A CN117742796 A CN 117742796A CN 202311700751 A CN202311700751 A CN 202311700751A CN 117742796 A CN117742796 A CN 117742796A
Authority
CN
China
Prior art keywords
instruction
queue
transmitting
time length
executed
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
Application number
CN202311700751.XA
Other languages
English (en)
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.)
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Original Assignee
Hexin Technology Co ltd
Shanghai Hexin Digital 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 Hexin Technology Co ltd, Shanghai Hexin Digital Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202311700751.XA priority Critical patent/CN117742796A/zh
Publication of CN117742796A publication Critical patent/CN117742796A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

本申请提供了一种指令唤醒方法、装置以及设备,涉及计算机技术领域,方法包括:在指令发射队列发射指令后,确定指令发射队列中依赖该指令的执行结果的待执行指令;确定上述指令的执行延迟时长是否小于或等于预设时长阈值;若是,则获取上述待执行指令对应的指令队列编号,根据上述待执行指令对应的指令队列编号,唤醒上述待执行指令;其中,上述指令发射队列中的各个指令均对应一个指令队列编号。本申请中,对于满足预设条件的指令,通过获取待执行指令对应的指令队列编号,可以快速的追踪到上述待执行指令,并对其进行唤醒,从而能够有效的降低唤醒延迟,提升处理器的性能。

Description

指令唤醒方法、装置以及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种指令唤醒方法、装置以及设备。
背景技术
在现代高性能处理器中,指令发射队列(Instruction Issue Queue,IQ)不仅被用来追踪指令的操作数准备状态,监控执行单元的运行状态和指令流水线所需资源的状态,还负责在发射指令之后依据发射指令产生执行结果的延迟,唤醒依赖其执行结果的指令。
对于执行延迟时长小于或等于1个指令周期的指令,其可以在1个周期内产生执行结果并在下一个周期将执行结果旁路给其它依赖该执行结果的指令。IQ需要在选中并发射该指令的当周期唤醒那些依赖于它结果的指令,这样便可以背靠背地执行后续指令,从而节省延迟。
然而传统的基于寄存器重命名标签(rename tag,rtag)的唤醒方式存在较大的唤醒延迟,当决定选中并发射某条指令的时候,并不能及时获得其目的(结果)寄存器的rtag。基于此,IQ在选中并发射指令后,如何快速唤醒那些依赖于该指令的执行结果的指令,是目前亟需解决的技术问题。
发明内容
本申请提供了一种指令唤醒方法、装置以及设备,可以使IQ在选中并发射指令后,快速唤醒那些依赖于该指令的执行结果的指令,从而提升处理器的性能。
第一方面,本申请提供了一种指令唤醒方法,该方法包括:
在指令发射队列发射指令后,确定所述指令发射队列中依赖所述指令的执行结果的待执行指令;
确定所述指令的执行延迟时长是否小于或等于预设时长阈值;
当所述指令的执行延迟时长小于或等于所述预设时长阈值时,获取所述待执行指令对应的指令队列编号;其中,所述指令发射队列中的各个指令均对应一个指令队列编号;
根据所述待执行指令对应的指令队列编号,唤醒所述待执行指令。
在一些实施例中,所述确定所述指令的执行延迟时长是否小于或等于预设时长阈值,包括:
获取所述指令发射队列发射所述指令时采用的发射端口生成的所述指令对应的周期选择信号;其中,所述发射端口为第一发射端口或第二发射端口,所述第一发射端口用于发送执行延迟时长小于或等于所述预设时长阈值的指令,所述第二发射端口用于发送执行延迟时长为任意时长的指令,且所述第一发射端口在发射执行延迟时长小于或等于所述预设时长阈值的指令时生成第一周期选择信号;所述第二发射端口在发射执行延迟时长大于所述预设时长阈值的指令时生成第二周期选择信号;
在所述周期选择信号为所述第一周期选择信号时,确定所述指令的执行延迟时长小于或等于所述预设时长阈值;在所述周期选择信号为所述第二周期选择信号时,确定所述指令的执行延迟时长大于所述预设时长阈值。
在一些实施例中,所述方法还包括:
当所述指令的执行延迟时长大于所述预设时长阈值时,获取所述待执行指令对应的寄存器重命名标签;
根据所述寄存器重命名标签,唤醒所述待执行指令。
在一些实施例中,所述预设时长阈值为一个指令周期。
在一些实施例中,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的ID信息;或者,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的位置信息。
第二方面,本申请提供了一种指令唤醒装置,该装置包括:
确定模块,用于在指令发射队列发射指令后,确定所述指令发射队列中依赖所述指令的执行结果的待执行指令;
判断模块,用于确定所述指令的执行延迟时长是否小于或等于预设时长阈值;
获取模块,用于当所述指令的执行延迟时长小于或等于预设时长阈值时,获取所述待执行指令对应的指令队列编号;其中,所述指令发射队列中的各个指令均对应一个指令队列编号;
唤醒模块,用于根据所述待执行指令对应的指令队列编号,唤醒所述待执行指令。
在一些实施例中,所述判断模块用于:
获取所述指令发射队列发射所述指令时采用的发射端口生成的所述指令对应的周期选择信号;其中,所述发射端口为第一发射端口或第二发射端口,所述第一发射端口用于发送执行延迟时长小于或等于所述预设时长阈值的指令,所述第二发射端口用于发送执行延迟时长为任意时长的指令,且所述第一发射端口在发射执行延迟时长小于或等于所述预设时长阈值的指令时生成第一周期选择信号;所述第二发射端口在发射执行延迟时长大于所述预设时长阈值的指令时生成第二周期选择信号;
在所述周期选择信号为所述第一周期选择信号时,确定所述指令的执行延迟时长小于或等于所述预设时长阈值;在所述周期选择信号为所述第二周期选择信号时,确定所述指令的执行延迟时长大于所述预设时长阈值。
在一些实施例中,所述获取模块,还用于:
当所述指令的执行延迟时长大于所述预设时长阈值时,获取所述待执行指令对应的寄存器重命名标签。
在一些实施例中,所述唤醒模块,还用于:
根据所述寄存器重命名标签,唤醒所述待执行指令。
在一些实施例中,所述预设时长阈值为一个指令周期。
在一些实施例中,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的ID信息;或者,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的位置信息。
第三方面,本申请提供了一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器用于存储计算机执行指令;
所述处理器用于执行所述存储器存储的计算机执行指令,以实现如第一方面提供的指令唤醒方法。
第四方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面提供的指令唤醒方法。
本申请实施例中所提供的指令唤醒方法、装置以及设备,对于满足预设条件的指令,通过获取依赖该指令的执行结果的待执行指令对应的指令队列编号,可以快速的追踪到上述待执行指令,并对其进行唤醒,从而能够有效的降低唤醒延迟,提升处理器的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例中提供的一种指令处理系统的架构示意图;
图2为本申请实施例中所提供的一种指令唤醒方法的步骤流程示意图;
图3为本申请实施例中所提供的一种重命名映射表示意图;
图4为本申请实施例中所提供的一种指令唤醒逻辑示意图;
图5为本申请实施例中所提供的一种指令发射队列和load队列的组织方式示意图;
图6为本申请实施例中提供的一种指令唤醒装置的程序模块示意图;
图7为本申请实施例提供的一种电子设备的硬件结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请各实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,虽然本申请中的公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
应该理解,当本申请实施例中称某个元件与其它元件“连接”或“通信连接”时,该元件可以直接连接或电连接到其它元件;或者也可以存在若干个中间元件,该元件通过该若干个中间元件连接或电连接到其它元件。
本申请实施例中使用的术语“单元”,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
本申请实施例中提供的指令唤醒方法、装置以及设备可应用于计算机技术领域,也可用于除计算机技术领域之外的任意领域,本申请对提供的指令唤醒方法、装置以及设备的应用领域不做限定。
以下对本申请实施例中涉及的部分术语进行解释:
写后写(Write-After-Write,WAW):一种常见的并发控制协议,用于确保多个事务在并发执行时不会产生冲突,其一般发生在程序中写相同目的寄存器的指令之间,假设指令A在指令B之前,两者都写了相同的目的寄存器,则称指令A和B的目的寄存器之间存在WAW的关系。
读后写(Write-After-Read,WAR):是一种数据相关性,也称为先读后写相关性,其一般发生在程序中写和读相同目的寄存器的指令之间,当两个指令对同一地址进行操作时,如果第二个指令在第一个指令之前执行,那么第二个指令可能会覆盖第一个指令的结果,从而产生错误的结果。为了避免这种情况,WAR规定第二个指令必须等待第一个指令完成后再执行。假设指令A在指令B之前,A要读寄存器C,而B要写目的寄存器C。就寄存器C而言,称指令A和指令B之间存在WAR的关系。
内部操作(Internal Operation,IOP):通常指在计算机内部执行的一些基本操作,例如加法、减法、乘法、除法等。
寄存器重命名(register renaming):通常用来消除指令/IOP之间的假依赖性(例如WAW、WAR),这样可以避免指令的串行执行。具体实现中,寄存器重命名单元可以将逻辑(指令集架构层面的)目标寄存器编号映射到物理寄存器空间中的编号,在映射过程中可以消除假相关(如WAW、WAR)。寄存器重命名避免了机器指令或者微操作不必要的顺序化执行,从而提高了处理器的指令级并行的能力。
指令调度队列((Issue Queue,IQ):负责存储重命名之后的IOP,追踪指令的操作数准备状态,追踪执行单元的运行状态和指令流水线所需资源的状态;唤醒队列中依赖于某些操作数的指令,仲裁选出最老的或者最关键的操作数和执行资源已经就绪的指令。
重命名标签(rename tag,rtag):CPU中用于消除寄存器假相关而将架构目的寄存器编号映射到了物理寄存器编号上,物理寄存器编号也称为重命名编号。
寄存器重命名映射表(Register Renaming Table):负责存储目的架构寄存器逻辑地址到物理寄存器地址的映射,有时每项还可以存储除rtag以外的其它信息,比如指令tag(简称itag),或者指令队列的id。
唤醒(wake up):当指令因为操作数或者执行资源没有准备就绪时,会在IQ中等待相关事件的唤醒,一旦操作数准备就绪,需要利用结果寄存器dest rtag将IQ中的指令对应的源操作数src rtag唤醒,即通过广播dest rtag到src rtag,将匹配的src rtag标记为ready。有时指令操作数来源于某个事件的完成,例如load miss完成,该指令可能需要额外的tag来标记依赖于哪个未完成事件,比如load miss事件都会附带一个load miss队列ID,IQ中可以存储此类ID表示某条指令依赖于该ID相关事件的完成,此类事件完成之后通知给IQ中的指令,也可以称之为唤醒。其中,“dest rtag”(destination rename tag)是指用于指示目标寄存器重命名的数据结构,用于记录目标寄存器的重命名状态,以便在指令执行时正确地访问寄存器。“src rtag”(source rename tag)则是用于指示源寄存器重命名的数据结构。在指令执行过程中,如果源操作数需要进行重命名,“src rtag”用于记录源寄存器的重命名状态。这样,在指令执行时可以正确地访问重命名的源操作数。
参照图1,图1为本申请实施例中提供的一种指令处理系统的架构示意图。在本申请一些实施例中,上述指令处理系统包括:
指令缓存(Instruction-Cache,I-cache),用于从外部内存条获得并存储近期正在使用的指令以及后面将用到的指令以及指令的辅助信息(比如预译码信息等)。
取指单元(Instruction fetch Unit,IFU),用于每时钟周期负责从指令缓存中索引一到多条指令。
分支预测单元(Branch Prediction Unit,BPU),可以紧耦合到IFU,或者和IFU解耦。用于为IFU预测后续指令取指的轨迹,即预测当前指令流的跳转方向以及跳转地址,IFU从BPU提供的地址处获取对应的指令。
指令译码单元(Instruction Decode Unit,IDU),用于接收来自取指单元的指令,并对该指令进行译码,通常将指令集规定的指令字译码为适用于硬件执行的微指令序列。根据指令的复杂程度,译码为一至多条微指令或者IOP。IOP可以被后续流水线处理和乱序执行,但往往需要等待同属于相同指令的所有IOP都正确地执行完成之后才能提交。
寄存器重命名单元,通常用来消除各指令的IOP之间的假依赖性(例如WAW、WAR等),以避免指令的串行执行。具体实现中,寄存器重命名单元可以将逻辑(指令集架构层面的)目标寄存器编号映射到物理寄存器空间中的编号,在映射过程中可以消除假相关(WAW,WAR)。一旦进行了译码和重命名,在分派(dispatch)阶段IOP可以被分配流水线后端资源,例如指令重排序缓冲(Instruction ReOrder Buffer,ROB)、IQ、Load/Store队列(LoadReorder Queue、Store Reorder Queue)等。根据IOP信息的分类,分别存入相关资源准备执行指令。
指令重排序缓冲,用于存储指令完成状态、指令异常种类、指令寄存器映射历史、以及指令地址等相关信息,从而能够支持指令正常提交,或者在处理指令推测错误(异常,分支预测错误,存储顺序违例等)时,恢复处理器内核相关微架构状态,重新取指令执行。
其中,指令重排序缓冲中的存储的内容是在分派阶段进入ROB的指令信息,直至指令从ROB中完成提交,在更新架构态寄存器映射后,才会释放相应的ROB表项。
完成单元(completion logic),用于检查指令完成情况,并判断是否发生异常,如果没有异常,则根据指令类型更新对应的架构寄存器映射表(arch-state renamemapper)。
架构寄存器映射表,用于存储已提交指令的目的寄存器逻辑地址到物理地址的映射,即logical GPR index→physical GPR index。如果有异常,则根据ROB中的异常信息跳转到对应的异常处理例程中执行异常处理程序。其中,logical GPR index是指一种用于指示通用寄存器(General Purpose Register,GPR)的逻辑索引或编号;physical GPR index是指一种用于指示GPR的物理索引或编号。
指令发射队列(Instruction Issue Queue),用于存储重命名之后的IOP,追踪指令的操作数准备状态、执行单元的运行状态和指令流水线所需资源的状态,唤醒队列中依赖于某些操作数的指令,这些操作数可能是即将由发射出去的IOP产生。
上述指令发射队列还用于为下游执行单元选择对应IOP,仲裁出最老的或者最关键的指令发射出去执行。当指令发射队列发射IOP出去之后会经过物理寄存器文件,读出源操作数或者从旁路通路拿到数据,然后送至对应的执行单元,比如分支执行单元(BranchExecution Unit),整数执行单元(integer Unit),浮点/向量执行单元(Floating Point/Vector Unit),访存执行单元(Load-Store Unit,LSU)等。
访存执行单元,包括加载重排序队列(Load Reorder Queue,LRQ)和存储重排序队列(Store ReOrder Queue,SRQ)。
LRQ用于检测加载指令(load)的乱序执行是否违反了存储顺序语义,每个load指令在分派阶段或者发射阶段分配到一个LRQ表项,LRQ表项中包括多种参数对应的数据,各参数包括ltag(逻辑寄存器标签,logic tag)、itag、vld、RA、snooped(snped)等信息。
SRQ用于追踪乱序执行窗口中的Store指令,加速Load指令的执行(提供可以旁路的Store data给相同线程中顺序靠后且访问同地址的load,而不需要等待Store提交),负责store类型指令的提交操作(更新存储器系统或者对访存操作进行排序)。
数据缓存单元,用于提供旁路数据的存储。
在一些解决方案中,现代处理器基本上借助指令的乱序执行来开发程序中的指令级并行,从而提升处理器性能。乱序执行允许不相干的指令越过长延迟的事件,从而提升指令吞吐。然而即使指令可以以各种顺序执行,但是它们必须以程序顺序更新机器状态,从而实现精确异常。
在现代高性能处理器中,IQ被用来追踪指令的操作数准备状态,监控执行单元的运行状态和指令流水线所需资源的状态。IQ负责在发射指令之后依据发射指令产生结果的延迟唤醒依赖其结果的指令。对于执行延迟时长为1个周期的指令,其可以在1个周期内产生结果并在下一个周期将执行结果旁路给其它依赖该执行结果的指令。IQ使得那些依赖于选中指令执行结果的指令可以在这个指令执行的同时被唤醒并执行,这样便可以背靠背地执行后续指令,从而节省延迟。
然而传统的基于rtag的唤醒方式存在较大的唤醒延迟。当决定选中并发射某条执行延迟小于或等于1个指令周期的指令(以下或称为1周期指令)的时候,并不能及时获得其目的(结果)寄存器的rtag,因为此类rtag作为指令信息存储在指令队列中,当指令队列容量较大时,无法快速地根据队列编号选出目的rtag,并将其发送到整个指令队列的所有指令src rtag,以及完成rtag比较,并标记为ready状态。
在一些解决方案中,一些处理器在重命名时将指令之间的寄存器依赖重新映射到了指令队列的空间中,即每个有目的寄存器的指令会被分配一个指令队列ID,即IQ的ID,从而可以将指令对应的IQ-ID连同dest rtag更新到重命名映射表中。此后,依赖于某个目标寄存器的指令,会将自身的源寄存器依赖性标记到对应的IQ-ID上,这样便可以将指令的寄存器依赖关系映射到的IQ-ID的依赖性上。那么当IQ发射1周期指令的时候,该指令所在的IQ-ID是可以及时得到的,并可以发送到依赖追踪逻辑中,在发射当拍唤醒依赖其结果的指令。依赖追踪逻辑可以实现为一个关联矩阵(Dependency Matrix)(该矩阵的行代表每个IQ-ID中的指令依赖性,每行中的每列代表改行指令是否依赖某一列对应的指令的结果)的方式,也可以实现成基于IQ-ID为唤醒标签的依赖性追踪逻辑。
然而,基于关联矩阵的依赖性追踪逻辑有一个显著的缺点,其可扩展性很差,其使用的寄存器数量随着IQ的规模呈现平方增长,在物理实现上的面积,时序和功耗表现较差。
而基于IQ-ID的依赖性追踪逻辑也有一个缺点,当load指令操作数准备就绪离开IQ之后,但是load因为某些原因(load miss,或者页表缺失)并没有执行完成且返回数据,而是被放在了另一个单独的队列中,假设该队列可以是维护load miss的load missqueue,也可以是load replay queue(负责追踪未完成load的信息,该类load因为某些原因(load miss,或页表缺失)未完成执行)。一旦load从IQ中离开之后,需要修改IQ中的依赖性,即需要将其修改为IQ-ID之外的load miss Queue ID或者load replay queue的ID,而且不能和IQ-ID冲突。例如可以将IQ最大的ID之后的ID空间依次分配给load队列。该实现方式硬件比较复杂,在物理实现上的面积,时序和功耗表现仍旧较差。
面对上述技术问题,本申请实施例中提供了一种指令唤醒方法,对于满足预设条件的指令,通过获取依赖该指令的执行结果的待执行指令对应的指令队列编号,可以快速的追踪到上述待执行指令,并对其进行唤醒,从而能够有效的降低唤醒延迟,提升处理器的性能。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
参照图2,图2为本申请实施例中所提供的一种指令唤醒方法的步骤流程示意图。在一些实施方式中,上述指令唤醒方法包括:
S201、在指令发射队列发射指令后,确定指令发射队列中依赖该指令的执行结果的待执行指令。
在一些实施方式中,在指令发射队列中发射指令后,处理器会跟踪该指令的执行结果,并确定指令发射队列中依赖该执行结果的待执行指令。具体可以包括以下步骤:
指令执行:当指令被发射到指令发射队列中后,处理器会开始执行该指令。其中,指令的执行可能会产生结果,例如对寄存器或内存进行读写操作。
结果跟踪:在指令执行期间,处理器会跟踪指令的执行结果。这通常涉及到将结果存储在指定的寄存器或内存地址中。
依赖检查:在指令执行完毕后,处理器会检查指令发射队列中待执行的指令,以确定是否存在依赖于该指令执行结果的指令。这通常是通过检查指令的操作数和条件码来实现的。
通过确定指令发射队列中依赖该指令的执行结果的待执行指令,处理器可以有效地管理指令的执行顺序,并确保程序的正确性和性能。这种机制可以提高处理器的并行度和效率,并减少不必要的延迟和等待时间。
S202、确定上述指令的执行延迟时长是否小于或等于预设时长阈值。
在一些实施方式中,上述预设时长阈值可以是一个指令周期。
例如,在一些实施方式中,可以确定上述指令的执行延迟时长是否小于或等于一个指令周期;当上述指令的执行延迟时长小于或等于一个指令周期时,确定上述指令的执行延迟时长小于或等于上述预设时长阈值。
其中,指令的执行延迟时长通常指的是指令从开始执行到完成所需的时间。这个时间取决于多种因素,包括处理器的架构、指令的类型、操作数的类型和存储位置,以及处理器的繁忙程度等。
在某些处理器中,指令的执行延迟时长是固定的,例如一个指令周期。这种处理器通常具有固定的指令执行速度,并且指令的执行顺序是严格按顺序进行的。在这种情况下,指令的执行延迟时长是固定的,例如一个指令周期。但是,在其他的处理器中,例如乱序执行的处理器中,指令的执行顺序不按照程序中的顺序进行,而是根据各种因素进行动态调度。因此,指令的执行延迟可能会受到其他指令的执行情况、处理器的繁忙程度等因素的影响,无法满足预设条件。
可以理解的是,不同于其它执行延迟的指令,只有执行延迟时长为一个指令周期的算术逻辑单元(Arithmetic and Logic Unit,ALU)(以下称为1-cycle ALU)有当拍唤醒依赖指令的需求。
其中,当拍唤醒是一种计算机处理器中的机制,用于在指令执行时动态唤醒依赖于前面指令结果的后续指令。当一个指令执行时,它会检查其操作数是否已准备好(即是否已计算出结果)。如果操作数尚未准备好,那么该指令就会被“唤醒”,并在下一个时钟周期继续执行。这样,指令就不需要等待前面的指令执行完毕,而是可以随时开始执行。
1-cycle ALU是一种特殊的ALU设计,它可以在一个时钟周期内完成一次运算。在乱序执行的处理器中,1-cycle ALU也有当拍唤醒依赖指令的需求。如果一个指令需要使用前面指令的结果,而该结果尚未计算出来,那么该指令就会被唤醒并在下一个时钟周期继续执行。这样,它可以及时获得所需的结果并继续执行后续的指令,从而提高了处理器的并行度和效率。
在一些实施方式中,当上述指令的执行延迟时长满足预设条件时,执行S203、S204;当上述指令的执行延迟时长不满足预设条件时,执行S205、S206。
S203、获取待执行指令对应的指令队列编号。
其中,指令发射队列中的各个指令均对应一个指令队列编号,用于标记各个指令在指令发射队列中的位置。
在一些实施方式中,在指令发射队列中,每个指令都可以被分配一个唯一的指令队列编号,用于标记该指令在指令发射队列中的位置。可选的,这个编号通常可以由处理器根据指令进入指令发射队列的顺序自动分配。
S204、根据待执行指令对应的指令队列编号,唤醒待执行指令。
在一些实施方式中,可以根据指令队列编号,在指令发射队列中找到对应的指令。在找到待执行指令后,检查该指令的状态,如果该指令已经被执行或者处于其他不可执行的状态,那么需要相应地更新指令的状态或者进行错误处理;如果待执行指令处于等待执行的状态,那么可以通过更新指令的状态并将其移动到指令发射队列的前部来唤醒它。
S205、获取待执行指令对应的寄存器重命名标签。
S206、根据上述寄存器重命名标签,唤醒待执行指令。
在一些实施方式中,根据寄存器重命名标签唤醒待执行指令的过程可以涉及以下步骤:
定位待执行指令:在指令发射队列中找到待执行指令的位置。这通常涉及到检查指令发射队列的头部或尾部,或者根据特定的调度策略来确定待执行指令。
检查指令寄存器重命名标签:在找到待执行指令后,需要检查该指令的寄存器重命名标签。这通常涉及到查询指令发射队列或重命名映射表以获取正确的物理寄存器编号。
唤醒待执行指令:如果待执行指令的寄存器重命名标签对应正确的物理寄存器编号,那么可以更新该指令的状态并将其移动到指令发射队列的前部以唤醒它。
本申请实施例中提供了一种指令唤醒方法,对于满足预设条件的指令,通过获取依赖该指令的执行结果的待执行指令对应的指令队列编号,可以快速的追踪到上述待执行指令,并对其进行唤醒,从而能够有效的降低唤醒延迟,提升处理器的性能。
基于上述实施例中描述的内容,在本申请一些实施例中,上述指令队列编号为可以指令发射队列中的各个指令在指令发射队列中的ID信息(以下简称IQ-ID);或者,上述指令队列编号也可以为指令发射队列中的各个指令在指令发射队列中的位置信息(QueuePosition,QPos)。
在一些实施方式中,当一个指令被取入队列时,它会被赋予一个QPos值,该值指示该指令在队列中的位置。这个QPos值可以用于控制指令的执行顺序,例如,当需要按照特定的顺序执行一组指令时,QPos值可以被用来确定哪个指令应该先执行。另外,QPos还可以用于解决指令之间的数据依赖关系。如果一个指令需要使用前面指令的结果作为操作数,那么该指令就需要等待前面的指令执行完毕并产生所需的结果。通过使用QPos,处理器可以跟踪每个指令在队列中的位置,以便正确地唤醒依赖于前面指令结果的后续指令。
在本申请一些实施例中,可以根据指令发射队列发射指令时采用的发射端口生成的该指令对应的周期选择信号,来确定该指令的执行延迟时长是否小于或等于上述预设时长阈值。其中,上述发射端口为第一发射端口或第二发射端口,第一发射端口用于发送执行延迟时长小于或等于上述预设时长阈值的指令,第二发射端口用于发送执行延迟时长为任意时长的指令;并且,第一发射端口在发射执行延迟时长小于或等于上述预设时长阈值的指令时均生成第一周期选择信号;第二发射端口在发射执行延迟时长小于或等于预设时长阈值的指令时生成第一周期选择信号,在发射执行延迟时长大于预设时长阈值的指令时生成第二周期选择信号。
其中,在上述周期选择信号为第一周期选择信号时,可以确定上述指令的执行延迟时长小于或等于上述预设时长阈值;在上述周期选择信号为第二周期选择信号时,确定上述指令的执行延迟时长大于上述预设时长阈值。
参照图3,图3为本申请实施例中所提供的一种重命名映射表示意图。
在图3中,lreg 0、…、lreg n-2、lreg n-1为n个逻辑寄存器的编号,每个逻辑寄存器对应有寄存器重命名标签(rtag)、QPos、周期选择信号、指令标签等。
在一些实施方式中,需要在产生Qpos信号的同时产生周期选择信号,该周期选择信号用于在唤醒阵列端口处对Qpos和rtag进行2选1。当1-cycle指令只能从专用的1-cycle指令发射端口(如上述第一发射端口)发射时,该周期选择信号是现成的;当1-cycle指令来自于一个复杂发射端口(如上述第二发射端口)时,需要在发射指令时就产生该周期选择信号。
在一些实施方式中,可以在每个指令周期同时产生2种周期选择信号:1)oldestready IQ-ID;2)1-cycle oldest ready IQ-ID;假设两者相同,那么代表本指令周期发射了一个1-cycle指令,则将周期选择信号驱动为1,并发送到唤醒阵列端口处,选择Qpos送入标签比较阵列中。否则将周期选择信号驱动为0,本指令周期不会唤醒指令,而是等待之后的指令周期,依据指令延迟在合适的时间唤醒其它指令。其中,上述1-cycle指令表示执行延迟时长小于或等于一个指令周期的指令。
参照图4,图4为本申请实施例中所提供的一种指令唤醒逻辑示意图。
在图4中,包括了两个选择器,该选择器的两个输入分别为Qpos信号与rtag信号,控制端输入的是周期选择信号。当周期选择信号为1时,选择器输出Qpos信号,可以表示基于Qpos信号来进行指令的追踪唤醒;当周期选择信号为0时,选择器输出rtag信号,可以表示基于rtag信号来进行指令的追踪唤醒。
在一些实施方式中,可以将上述选择器的输出作为唤醒标签信号输入到每个唤醒逻辑中的比较单元(CAM cell),将上述周期选择信号输入到每个唤醒逻辑的标签类型部分。其中,只有当外部输入的唤醒标签信号和内部每条指令的src标签(Qpos/rtag)匹配,并且src标签类型(0/1)和外部输入的周期选择信号相同的情况下,才能将对应的src唤醒。
参照图5,图5为本申请实施例中所提供的一种指令发射队列和load队列的组织方式示意图。
在图5中,指令发射队列(Instruction Issue Queues)包括4个发射队列(IssueQueues),每个发射队列都对应有Qpos信息。
另外,Load重加载队列(Load Replay Queue)包括n个入口点(entry),每个entry包括rtag、ltag、itag、ea(effective address,虚拟地址)/ra(register address,寄存器地址);Load未命中队列(Load Miss Queue)包括n个entry,每个entry包括itag、ea/ra。
可以理解的是,当load指令发射到LSU之后发生了load miss或者TLB(Translation Lookaside Buffer,翻译后援缓冲器)miss之后,往往会进入另一个队列进行等待,有时候是Load Replay Queue、Load miss Queue,或者load buffer(包含reissue功能)。如果指令的src依赖于原来某些load指令在指令发射队列中的位置,则一旦load指令从发射队列离开之后,会释放发射队列,而在LSU里面的队列中重新分配一个entry,这会提升发射队列的复杂性,也会增加电路面积和延迟。本申请实施例中,通过只对1-cycleALU使用Qpos信号进行指令的追踪唤醒,对于那些离开了指令队列,但却无法完成的load指令,不需要再修改所有依赖该load指令的源操作数标签,由此降低了硬件复杂度。
基于上述实施例中描述的内容,本申请实施例中还提供一种指令唤醒装置,参照图6,图6为本申请实施例中提供的一种指令唤醒装置的程序模块示意图,在一些实施方式中,上述指令唤醒装置60包括:
确定模块601,用于在指令发射队列发射指令后,确定所述指令发射队列中依赖所述指令的执行结果的待执行指令。
判断模块602,用于确定所述指令的执行延迟时长是否小于或等于预设时长阈值。
获取模块603,用于当所述指令的执行延迟时长小于或等于预设时长阈值时,获取所述待执行指令对应的指令队列编号;其中,所述指令发射队列中的各个指令均对应一个指令队列编号。
唤醒模块604,用于根据所述待执行指令对应的指令队列编号,唤醒所述待执行指令。
本申请实施例中所提供的指令唤醒装置,对于满足预设条件的指令,通过获取依赖该指令的执行结果的待执行指令对应的指令队列编号,可以快速的追踪到上述待执行指令,并对其进行唤醒,从而能够有效的降低唤醒延迟,提升处理器的性能。
在一些实施例中,判断模块602用于:
获取所述指令发射队列发射所述指令时采用的发射端口生成的所述指令对应的周期选择信号;其中,所述发射端口为第一发射端口或第二发射端口,所述第一发射端口用于发送执行延迟时长小于或等于所述预设时长阈值的指令,所述第二发射端口用于发送执行延迟时长为任意时长的指令,且所述第一发射端口在发射执行延迟时长小于或等于所述预设时长阈值的指令时生成第一周期选择信号;所述第二发射端口在发射执行延迟时长小于或等于所述预设时长阈值的指令时生成所述第一周期选择信号,所述第二发射端口在发射执行延迟时长大于所述预设时长阈值的指令时生成第二周期选择信号;
在所述周期选择信号为所述第一周期选择信号时,确定所述指令的执行延迟时长小于或等于所述预设时长阈值;在所述周期选择信号为所述第二周期选择信号时,确定所述指令的执行延迟时长大于所述预设时长阈值。
在一些实施例中,获取模块603,还用于:
当所述指令的执行延迟时长不满足所述预设条件时,获取所述待执行指令对应的寄存器重命名标签。
唤醒模块604,还用于:
根据所述寄存器重命名标签,唤醒所述待执行指令。
在一些实施例中,所述预设时长阈值为一个指令周期。
在一些实施例中,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的ID信息;或者,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的位置信息。
需要说明的是,本申请实施例中确定模块601、判断模块602、获取模块603以及唤醒模块604具体执行的内容可以参阅上述实施例中描述的指令唤醒方法中的各个步骤,此处不做赘述。
进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种电子设备,该电子设备包括至少一个处理器和存储器;其中,存储器存储计算机执行指令;上述至少一个处理器执行存储器存储的计算机执行指令,以实现如上述实施例中描述的指令唤醒方法中的各个步骤。
为了更好的理解本申请实施例,参照图7,图7为本申请实施例提供的一种电子设备的硬件结构示意图。
如图7所示,本实施例的电子设备70包括:处理器701以及存储器702;其中:
存储器702,用于存储计算机执行指令;
处理器701,用于执行存储器存储的计算机执行指令,以实现上述实施例中描述的指令唤醒方法中的各个步骤。
可选地,存储器702既可以是独立的,也可以跟处理器701集成在一起。
当存储器702独立设置时,该设备还包括总线703,用于连接所述存储器702和处理器701。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上实施例中描述的指令唤醒方法中的各个步骤。
本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速存储器,也可能还包括非易失性存储,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种指令唤醒方法,其特征在于,所述方法包括:
在指令发射队列发射指令后,确定所述指令发射队列中依赖所述指令的执行结果的待执行指令;
确定所述指令的执行延迟时长是否小于或等于预设时长阈值;
当所述指令的执行延迟时长小于或等于所述预设时长阈值时,获取所述待执行指令对应的指令队列编号;其中,所述指令发射队列中的各个指令均对应一个指令队列编号;
根据所述待执行指令对应的指令队列编号,唤醒所述待执行指令。
2.根据权利要求1所述的方法,其特征在于,所述确定所述指令的执行延迟时长是否小于或等于预设时长阈值,包括:
获取所述指令发射队列发射所述指令时采用的发射端口生成的所述指令对应的周期选择信号;其中,所述发射端口为第一发射端口或第二发射端口,所述第一发射端口用于发送执行延迟时长小于或等于所述预设时长阈值的指令,所述第二发射端口用于发送执行延迟时长为任意时长的指令,且所述第一发射端口在发射执行延迟时长小于或等于所述预设时长阈值的指令时生成第一周期选择信号;所述第二发射端口在发射执行延迟时长大于所述预设时长阈值的指令时生成第二周期选择信号;
在所述周期选择信号为所述第一周期选择信号时,确定所述指令的执行延迟时长小于或等于所述预设时长阈值;在所述周期选择信号为所述第二周期选择信号时,确定所述指令的执行延迟时长大于所述预设时长阈值。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述指令的执行延迟时长大于所述预设时长阈值时,获取所述待执行指令对应的寄存器重命名标签;
根据所述寄存器重命名标签,唤醒所述待执行指令。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述预设时长阈值为一个指令周期。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的ID信息;或者,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的位置信息。
6.一种指令唤醒装置,其特征在于,所述装置包括:
确定模块,用于在指令发射队列发射指令后,确定所述指令发射队列中依赖所述指令的执行结果的待执行指令;
判断模块,用于确定所述指令的执行延迟时长是否小于或等于预设时长阈值;
获取模块,用于当所述指令的执行延迟时长小于或等于所述预设时长阈值时,获取所述待执行指令对应的指令队列编号;其中,所述指令发射队列中的各个指令均对应一个指令队列编号;
唤醒模块,用于根据所述待执行指令对应的指令队列编号,唤醒所述待执行指令。
7.根据权利要求6所述的装置,其特征在于,所述判断模块用于:
获取所述指令发射队列发射所述指令时采用的发射端口生成的所述指令对应的周期选择信号;其中,所述发射端口为第一发射端口或第二发射端口,所述第一发射端口用于发送执行延迟时长小于或等于所述预设时长阈值的指令,所述第二发射端口用于发送执行延迟时长为任意时长的指令,且所述第一发射端口在发射执行延迟时长小于或等于所述预设时长阈值的指令时生成第一周期选择信号;所述第二发射端口在发射执行延迟时长大于所述预设时长阈值的指令时生成第二周期选择信号;
在所述周期选择信号为所述第一周期选择信号时,确定所述指令的执行延迟时长小于或等于所述预设时长阈值;在所述周期选择信号为所述第二周期选择信号时,确定所述指令的执行延迟时长大于所述预设时长阈值。
8.根据权利要求6或7所述的装置,其特征在于,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的ID信息;或者,所述指令队列编号为所述指令发射队列中的各个指令在所述指令发射队列中的位置信息。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器用于存储计算机执行指令;
所述处理器用于执行所述存储器存储的计算机执行指令,以实现如权利要求1至5任一项所述的指令唤醒方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至5任一项所述的指令唤醒方法。
CN202311700751.XA 2023-12-11 2023-12-11 指令唤醒方法、装置以及设备 Pending CN117742796A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311700751.XA CN117742796A (zh) 2023-12-11 2023-12-11 指令唤醒方法、装置以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311700751.XA CN117742796A (zh) 2023-12-11 2023-12-11 指令唤醒方法、装置以及设备

Publications (1)

Publication Number Publication Date
CN117742796A true CN117742796A (zh) 2024-03-22

Family

ID=90253690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311700751.XA Pending CN117742796A (zh) 2023-12-11 2023-12-11 指令唤醒方法、装置以及设备

Country Status (1)

Country Link
CN (1) CN117742796A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339679A1 (en) * 2012-06-15 2013-12-19 Intel Corporation Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor
CN111538534A (zh) * 2020-04-07 2020-08-14 江南大学 一种基于指令凋零的多指令乱序发射方法及处理器
CN111552366A (zh) * 2020-04-07 2020-08-18 江南大学 一种动态延迟唤醒电路及乱序指令发射架构
CN115398394A (zh) * 2020-04-08 2022-11-25 微软技术许可有限责任公司 处理器中调度器电路中的操作数池指令预留集群
CN117112031A (zh) * 2023-07-19 2023-11-24 龙芯中科技术股份有限公司 一种指令发射方法、装置、电子设备及储存介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339679A1 (en) * 2012-06-15 2013-12-19 Intel Corporation Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor
CN111538534A (zh) * 2020-04-07 2020-08-14 江南大学 一种基于指令凋零的多指令乱序发射方法及处理器
CN111552366A (zh) * 2020-04-07 2020-08-18 江南大学 一种动态延迟唤醒电路及乱序指令发射架构
CN115398394A (zh) * 2020-04-08 2022-11-25 微软技术许可有限责任公司 处理器中调度器电路中的操作数池指令预留集群
CN117112031A (zh) * 2023-07-19 2023-11-24 龙芯中科技术股份有限公司 一种指令发射方法、装置、电子设备及储存介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
K.-S. HSIAO ETC.: "Wake-Up Logic Optimizations Through Selective Match and Wakeup Range Limitation", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 14, no. 10, 23 October 2006 (2006-10-23), XP011142363, DOI: 10.1109/TVLSI.2006.884150 *
夏天一: "处理器高性能发射队列设计与优化", 中国优秀硕士论文电子期刊网, 15 May 2021 (2021-05-15) *
李伟;沈绪榜;: "一种面向嵌入式处理器的昏睡子块唤醒方法", 计算机测量与控制, no. 02, 25 February 2015 (2015-02-25) *

Similar Documents

Publication Publication Date Title
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US5721855A (en) Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
US5778210A (en) Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US6119223A (en) Map unit having rapid misprediction recovery
CN113535423A (zh) 具有在预置未来时间执行指令的流水线控制的微处理器
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
JP2004145485A (ja) 命令の投機的実行制御装置およびその方法
US6643767B1 (en) Instruction scheduling system of a processor
US5689674A (en) Method and apparatus for binding instructions to dispatch ports of a reservation station
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6230262B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
CN108415730B (zh) 微指令调度方法及使用此方法的装置
CN117270971B (zh) 加载队列控制方法、装置及处理器
US20240020120A1 (en) Vector processor with vector data buffer
JP7064273B2 (ja) 単一のcamポートを使用する分割された順序変更キューを備える読み込み/格納ユニット
CN108279928B (zh) 微指令调度方法及使用此方法的装置
US11467841B1 (en) Microprocessor with shared functional unit for executing multi-type instructions
US5841998A (en) System and method of processing instructions for a processor
CN117742796A (zh) 指令唤醒方法、装置以及设备
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
US7783692B1 (en) Fast flag generation
US20230342153A1 (en) Microprocessor with a time counter for statically dispatching extended instructions
US11829767B2 (en) Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US6490653B1 (en) Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system

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