指令转移预测系统、方法、装置、计算机设备及存储介质
文献发布时间:2023-06-19 19:38:38
技术领域
本发明涉及集成电路设计技术领域,尤其涉及一种指令转移预测系统、方法、装置、计算机设备及存储介质。
背景技术
在现代高性能处理器中,流水线可以被划分为前端处理单元和后端处理单元。前端处理单元用于向后端处理单元提供需要执行的指令,因此,前端处理单元的效率直接影响后端处理单元的执行速度。
相关技术中,将前端处理单元中的预测单元和取指单元进行解耦合,以提升前端处理单元的性能。然而,对于具有多级分支预测结构的预测单元的解耦合效果有待提升。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种指令转移预测系统,重新设计利用预测单元产生的预测结果对用于取指的指令地址进行定向的逻辑,将预测单元从原来的耦合结构中分离出来,以提升预测单元的解耦合效果。
本发明的第二个目的在于提出一种指令转移预测方法。
本发明的第三个目的在于提出一种指令转移预测装置。
本发明的第四个目的在于提出一种计算机设备。
本发明的第五个目的在于提出一种计算机可读存储介质。
为达到上述目的,本发明第一方面实施方式提出了一种指令转移预测方法,所述指令转移预测系统包括预测单元、预测目标地址队列和取指单元,所述预测目标地址队列的输入端连接所述预测单元的输出端,所述预测目标地址队列的输出端连接所述取指单元的输入端;其中:所述预测单元,用于对转移指令进行多级分支预测;所述多级分支预测包括第一级分支预测和第二级分支预测;通过所述第一级分支预测对所述转移指令进行分支预测,得到第一级预测结果并输出,通过所述第二级分支预测对所述转移指令进行分支预测,得到第二级预测结果并输出;其中,所述第一级预测结果和所述第二级预测结果分别包括所述转移指令对应的预测地址;所述预测目标地址队列,用于在接收到所述第一级预测结果的情况下记录对应的所述转移指令的指令地址以及所述第一级预测结果,并在接收到所述转移指令对应的所述第二级预测结果的情况下,利用所述第二级预测结果覆盖对应的所述第一级预测结果;所述取指单元,用于从所述预测目标地址队列获取目标指令地址对应的目标预测地址,并根据获取的所述目标预测地址进行相应的取指操作。
根据本发明的一个实施方式,所述预测目标地址队列,还用于在所述取指单元根据获取的所述目标预测地址进行取指操作并从第一指令缓存空间中获取到相应的目标指令块的情况下,将对应的所述目标指令地址以及所述目标预测地址所处的目标表项从所述预测目标地址队列中删除。
根据本发明的一个实施方式,所述预测目标地址队列,还用于对所述预测目标地址队列中的任一指令地址对应的预测地址进行过滤,得到满足预取条件的预测地址,作为预取地址;其中,满足所述预取条件的预测地址为与其对应的指令地址分别位于不同的缓存行的预测地址;所述预取地址用于从第二指令缓存空间中获取所述预取地址对应的预取指令块。
根据本发明的一个实施方式,所述预测目标地址队列,还用于在记录对应的所述转移指令的指令地址以及所述第一级预测结果至所述预测目标地址队列的对应表项时,返回该表项的表项索引至所述预测单元,以使所述预测单元根据对应的所述表项索引将对应的所述第二级预测结果写至对应表项中。
根据本发明的一个实施方式,所述预测目标地址队列具有出队指针;所述预测目标地址队列,还用于在所述取指单元根据所述出队指针当前指向的表项中包括的预测地址进行取指操作并从所述第一指令缓存空间中获取到相应的指令块的情况下,将所述出队指针当前指向的表项从所述预测目标地址队列中删除,并更新所述出队指针。
根据本发明的一个实施方式,所述预测目标地址队列具有预取指针;所述预测目标地址队列,还用于在接收到处理器前端发送的预取请求的情况下,返回所述预取指针当前指向的表项中包括的预测地址和该预测地址对应的预取有效性信号至所述处理器前端,并更新所述预取指针,以使所述处理器前端在接收到的所述预取有效性信号为预取有效信号的情况下,以所述预取有效信号对应的预测地址为预取地址,并从所述第二指令缓存空间中获取所述预取地址对应的预取指令块;其中,所述预取有效信号用于表明所述预取有效信号对应的预测地址为满足所述预取条件的预测地址。
根据本发明的一个实施方式,所述预测目标地址队列具有入队指针和读取指针;所述预测目标地址队列,还用于在接收到所述第一级预测结果的情况下,记录对应的所述转移指令的指令地址以及所述第一级预测结果至所述入队指针当前指向的表项并更新所述入队指针,以及在接收到所述取指单元的读取请求的情况下,返回所述读取指针当前指向的表项中包括的预测地址至所述取指单元并更新所述读取指针。
为达到上述目的,本发明第二方面实施方式提出了一种指令转移预测方法,应用于指令转移预测系统,所述指令转移预测系统包括预测单元、预测目标地址队列和取指单元,所述预测目标地址队列的输入端连接所述预测单元的输出端,所述预测目标地址队列的输出端连接所述取指单元的输入端;所述预测单元用于对转移指令进行多级分支预测;所述多级分支预测包括第一级分支预测和第二级分支预测;所述方法包括:所述预测单元通过所述第一级分支预测对所述转移指令进行分支预测,得到第一级预测结果并输出,通过所述第二级分支预测对所述转移指令进行分支预测,得到第二级预测结果并输出;其中,所述第一级预测结果和所述第二级预测结果分别包括所述转移指令对应的预测地址;所述预测目标地址队列在接收到所述第一级预测结果的情况下记录对应的所述转移指令的指令地址以及所述第一级预测结果,并在接收到所述转移指令对应的所述第二级预测结果的情况下,利用所述第二级预测结果覆盖对应的所述第一级预测结果;所述取指单元从所述预测目标地址队列获取目标指令地址对应的目标预测地址,并根据获取的所述目标预测地址进行相应的取指操作。
为达到上述目的,本发明第三方面实施方式提出了一种指令转移预测装置,应用于指令转移预测系统,所述指令转移预测系统包括预测单元、预测目标地址队列和取指单元,所述预测目标地址队列的输入端连接所述预测单元的输出端,所述预测目标地址队列的输出端连接所述取指单元的输入端;所述预测单元用于对转移指令进行多级分支预测;所述多级分支预测包括第一级分支预测和第二级分支预测;所述装置包括:分支预测模块,用于所述预测单元通过所述第一级分支预测对所述转移指令进行分支预测,得到第一级预测结果并输出,通过所述第二级分支预测对所述转移指令进行分支预测,得到第二级预测结果并输出;其中,所述第一级预测结果和所述第二级预测结果分别包括所述转移指令对应的预测地址;记录模块,用于所述预测目标地址队列在接收到所述第一级预测结果的情况下记录对应的所述转移指令的指令地址以及所述第一级预测结果,并在接收到所述转移指令对应的所述第二级预测结果的情况下,利用所述第二级预测结果覆盖对应的所述第一级预测结果;预测地址获取模块,用于所述取指单元从所述预测目标地址队列获取目标指令地址对应的目标预测地址,并根据获取的所述目标预测地址进行相应的取指操作。
为达到上述目的,本发明第四方面实施方式提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现前述任一项实施方式所述的指令转移预测方法的步骤。
为达到上述目的,本发明第五方面实施方式提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一项实施方式所述的指令转移预测方法的步骤。
根据本发明提供的多个实施方式,重新设计了指令流的定向逻辑,使用高级预测结果直接对取指需要用的程序计数器地址进行定向,取消了预译码结果的参与,从而将整个具有多级预测覆盖结构的预测单元从原有的结构中分离出来,提高了预测单元的解耦合效果。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1a为根据本说明书提供的前端处理单元和后端处理单元的结构示意图。
图1b为根据本说明书提供的流水线前端处理单元的结构示意图。
图1c为根据本说明书提供的流水线前端处理单元解耦式结构的结构示意图。
图1d为根据本说明书提供的缓存预取方案的结构示意图。
图1e为根据本说明书一个实施方式提供的指令转移预测系统的应用场景示意图
图2a为根据本说明书一个实施方式提供的指令转移预测系统的结构示意图。
图2b为根据本说明书一个实施方式提供的预测结果写入的流程示意图。
图3为根据本说明书一个实施方式提供的指令转移预测方法的流程示意图。
图4为根据本说明书一个实施方式提供的指令转移预测装置的结构框图。
图5为根据本说明书一个实施方式提供的计算机设备的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在现代高性能处理器中,流水线可以被划分为前端处理单元和后端处理单元。参考图1a所示,前端处理单元和后端处理单元通过一个指令缓冲区或指令队列连接在一起,形成一种生产者-消费者的工作模型,即前端处理单元向指令缓冲区填充需要执行的指令,后端处理单元从指令缓冲区取出指令并执行。可以理解的是,前端处理单元向指令缓冲区填充指令的速度直接影响后端处理单元的执行速度,从而影响整个流水线的效率。因此,必须提高前端处理单元的效率,为流水线后端丰富的功能部件提供足够的指令。
在传统的流水线前端处理单元的结构中,参考图1b所示,分支转移预测单元以当前程序计数器(PC)的内容作为输入,对后续的指令地址进行预测,预测完成后同时更新PC。同时,取指单元根据PC地址访问指令缓存,并将取出的新指令放入指令发射队列,以发送给译码阶段。预测单元和取指单元紧耦合在一起,两者紧密配合、协同工作。当取指单元因为缓存缺失等原因产生停顿时,预测单元也必须停止预测;而当预测单元发生预测错误时,取指单元需要发出新的访存地址并重新取指。二者的紧耦合关系严重限制了流水线前端结构的性能的提升。同时,分别针对取指单元和预测单元的不同的优化技术可能会互相干扰,导致难以对前端处理单元的设计方案的有效性进行测评分析,给处理器前端设计人员带来了巨大的挑战。因此,将预测单元和取指单元进行解耦合,以消除两者工作时的强相关,以及增大各自的设计空间,对于提升前端处理单元的性能具有重要的意义。
相关技术中,提出了一种流水线前端处理单元解耦式结构的设计方案。通过类比处理器前后端解耦的设计思路,在预测单元和取指单元之间引入一个先入先出的队列结构——取指目标队列(Fetch Target Queue,FTQ),并对其他结构做了相应的调整。
参考图1c所示,FTQ队列位于预测单元和取指单元之间。预测单元以当前程序计数器(Program Counter,PC)中的内容作为输入,对后续的指令地址进行预测。预测完成后同时更新PC并将预测的目标地址写入到FTQ队列的尾部;同时,取指单元从FTQ队列的首部取出指令地址,并根据取出的指令地址访问指令缓存,以取出对应的指令发送给译码阶段。当流水线的后续阶段发现转移预测出现错误或者需要对程序控制流进行重定向时,及时清空FTQ队列中的表项内容,同时取指单元使用正确的PC内容重新取指,预测单元使用正确的PC内容进行预测。
一方面,当发生转移预测错误时,需要快速更新前端处理单元,将其恢复到正确的状态,其中,主要需要更新预测单元中的全局转移历史信息和发送给指令存储的地址等。相关技术中提出一种用于记录推测路径上历史信息的处理结构——推测式历史队列(Speculative History Queue,SHQ)。SHQ队列保存了处理器运行过程中所有推测式更新的全局转移历史信息。在预测时,推测式更新的全局历史会被写入到SHQ队列中,若此时SHQ队列中有更新后的全局历史信息,预测单元会用新的全局历史信息代替历史寄存器中的内容,以保证全局历史信息的及时有效性。当一条指令在流水线后端完成提交时,该指令的实际转移结果会被用于更新全局历史寄存器,同时SHQ队列中对应的表项会被移除;而当发生预测错误时,错误预测的转移指令对应的历史信息以及之后所有分配的SHQ队列中的表项都需要从SHQ队列中移除。
另一方面,由于FTQ队列保存了预测单元产生的预测目标地址,而这些预测目标地址同时会作为取指单元的取指地址,因此可以借助预取技术,使用FTQ队列中的预测目标地址提前访问二级缓存,从而降低指令缓存的缺失率。参考图1d所示,相关技术中通过添加一个预取指令队列(Prefetch Instruction Queue,PIQ)来实现基于FTQ队列的缓存预取方案设计。PIQ队列被用于保存FTQ队列中所有等待被预取的预测目标地址。为了进一步保证预取的有效性,还可以结合缓存探针过滤、基于FTQ表项数的过滤、缓存缺失过滤、指令块驱逐过滤等一系列预取策略进行预取。
然而,相对于上述处理器结构,当代高性能处理器在微结构上已经发生了明显的变化。其中,预测单元不再使用单一预测技术,而是采用多级覆盖的分支预测结构,即多个分支预测器共同完成预测过程,每一级分支预测的结果在不同周期给出。并且分支预测与取指共同进行,一旦发现预测错误马上对指令流进行重新定向,在所有预测阶段结束之后会将得到的指令放入指令缓冲区中,并将转移预测相关的信息保存下来。
针对上述特点,在预测单元和取指单元的解耦设计中,需要将处理器中的具有多级覆盖预测结构的分支预测器从之前的结构中分离出来,形成一个可以单独工作的预测单元。难点在于高级的分支预测会结合从取指单元得到的指令进行扩展、预译码处理后的类型信息和转移目标地址信息,决定是否需要纠正之前的预测结果。解耦后的预测单元处于取指单元之前,获取不到指令块的内容,就无法进行指令扩展和预译码,所以这个阶段的重定向逻辑需要重新设计。
其次,相关技术中使用FTQ队列作为全局数据结构保存分支预测信息。多级覆盖的分支预测结构中,分支预测信息不断变化,而预测器状态的更新需要用到指令之前的预测结果,队列中不仅需要记录取指用的指令地址序列,还需要将每个指令块的分支预测的结果保存下来,并发送给后续的取指部件,传递到对应的流水级阶段进行处理。为使用方便,不少信息会被重复记录,相互传递,导致硬件资源浪费。
因此,针对当代高性能处理器,需要重新设计前端处理单元的解耦合结构。具体地,需要针对具有多级覆盖预测结构的分支预测器做出相应结构的改进,以及设计新的高效的全局数据结构以记录不断更新的分支预测信息,并使得需要保存的信息尽可能少,以充分利用硬件资源。
为了将处理器中已有的具有多级覆盖预测结构的分支预测器从之前的结构中分离出来,有必要提出一种指令转移预测系统、方法、装置、计算机设备及存储介质。通过在处理器的前端处理单元中引入类似于FTQ队列的结构——预测目标地址队列PTQ,负责记录分支预测产生的指令执行序列。预测单元会将产生的每一级预测结果写入PTQ队列的尾部,取指单元则从PTQ队列的队首读出取指需要用到的指令地址。只有当取指单元从指令缓存中成功读出相应的指令块时,PTQ队列中相应的指令地址才可以完成出队操作,以保证指令缓存的正常流水化,解决取指单元的重定向问题。在预测单元设计一种针对多级覆盖预测结构的快速恢复机制,直接利用高级预测结果对低级预测结果进行覆盖以实现PC地址的重定向,而不需要结合从取指单元得到的指令进行扩展、预译码处理后的类型信息和转移目标地址信息等,决定是否需要纠正低级的预测结果。进一步地,在PTQ队列中引入一个预取指针,用来判断对应的指令块是否需要预取。如果需要预取的话,则用预取指针读出发往二级指令缓存的指令地址,从而对指令缓存的预取机制进行优化。由此,使预测单元可以在不受取指单元影响的情况下,提前产生流水线后续阶段需要用到的指令流序列,从而有效提升前端处理单元的整体工作效率。
图1e为本说明书提供的指令转移预测系统、方法、装置、计算机设备及存储介质的应用场景示意图。以具有三级覆盖预测结构的预测单元为例,预测单元的输出端与预测目标地址队列PTQ的输入端连接,PTQ队列的输出端与取指单元的输入端连接。预测单元会在每一级分支预测产生的对应的分支预测结果产生后,将其写入到PTQ队列,取指单元则会从PTQ队列的队首读取出指令地址,以根据取出的指令地址进行相应的取指操作。
在本场景示例中,预测单元不需要在三级分支预测结果产生后才将预测结果写入PTQ队列,而是在每一级分支预测结果产生之后,都会将对应的分支预测结果写入PTQ队列,并以覆盖写入的方式对PTQ队列中的预测结果进行实时更新。具体地,对转移指令进行第一级分支预测产生第一级预测结果后,预测单元会向PTQ队列的尾部写入该第一级预测结果和该转移指令对应的指令地址;对该转移指令进行第二级分支预测产生第二级预测结果后,会改写PTQ队列中对应表项的第一级预测结果;对该转移指令进行第三级分支预测产生第三级预测结果后,会重新改写PTQ队列中对应表项的第二级预测结果。由此,针对多级覆盖的预测结构,预测单元对PTQ队列的写入操作也形成了一种覆盖结构,后续阶段的准确率更高的预测结果会覆盖掉对应的前一级的预测结果,但每次写入的指令地址是保持不变的。通过重新设计利用预测单元产生的预测结果对用于取指的指令地址进行定向的逻辑,将预测单元从原来的耦合结构中分离出来,可以提升预测单元的解耦合效果。进一步地,利用覆盖写入的方式,可以在流水线执行了更少的错误指令的情况下,实现流水线的快速重定向,使流水线能够快速恢复执行。
PTQ队列的每个表项不仅保存了指令地址,还记录了对应指令块的转移预测信息,并且该信息会一直保存。由此,在预译码阶段时就可以直接比较分支预测出来的转移目标地址与译码得到的目标地址是否一致,从而确定无条件直接转移指令是否成功改变了处理器的指令执行路径。
在一些实施例中,预测单元向PTQ队列的尾部的目标表项写入转移指令对应的第一级预测结果和对应的指令地址时,PTQ队列返回该目标表项的表项索引给预测单元,以使预测单元对该转移指令进行第二级分支预测产生对应的第二级预测结果时,可以根据该表项索引将第二级预测结果写到相对应的表项中覆盖对应的第一级预测结果;同理,在预测单元对该转移指令进行第三级分支预测产生对应的第三级预测结果时,可以根据该表项索引将第三级预测结果写到相对应的表项中覆盖对应的第二级预测结果。
在本场景示例中,只有当取指单元根据从PTQ队列的队首读出的指令地址,将该指令地址随取指请求发送给指令缓存空间并从指令缓存空间中成功读出相应的指令块时,PTQ队首的指令地址才可以完成出队操作,以使PTQ队列的出队操作和发送给指令缓存空间的取指请求被区分开来。取指单元根据读取指针从PTQ队列中读取指令地址并发送给指令缓存空间。
在一些实施例中,当分支预测的准确率维持在一个较高的水平时,借助PTQ队列中的指令地址可以对指令缓存的预取机制进行优化。以取指单元根据PTQ队列中的指令地址未从一级指令缓存中获取到相应的指令块,需要从二级指令缓存中预取为例,具体地,在PTQ中引入一个额外的预取指针,用来判断预取指针指向的指令地址对应的指令块是否需要预取。如果需要预取的话,用预取指针读出需要发往二级指令缓存的指令地址。PTQ队列初始化时,预取指针和队首指针重合,此时不会发送预取请求到二级指令缓存;随着PTQ队列的出入队,预取指针会在二级指令缓存空闲时不断向队尾方向移动,并在移动的过程中检查每一个PTQ表项中的指令地址和对应的预测结果中的预测地址是否在一级指令缓存的同一个缓存行中。如果发现两者不在同一缓存行中,则可以将预测地址对齐后发给二级指令缓存,以进行预取。
在本场景示例中,通过对PTQ队列的空满情况进行评测,结果表明PTQ队列为空队列时的占比较小,说明PTQ队列中大部分时间都会存在分支预测产生的指令执行序列,从侧面证明了PTQ队列在基于PTQ队列的前端解耦式结构中发挥了其应有的作用,使预测单元可以不受取指部件的影响,提前产生流水线后续阶段需要用到的指令流序列。进一步地,对每周期发射进入取指缓冲区的指令数来衡量基于PTQ队列的前端解耦式结构的整体工作效率。从评测结果来看,解耦后程序运行时的取指效率都有了一定的提升。由于PTQ队列的存在,转移预测的结果会一直记录在PTQ队列中,同时伴随着PTQ队列内表项数的增多,第三级预测结果也会不断地更新到队列中,保证了PTQ队列中的指令地址序列与程序实际运行时的指令序列大多数是相同的,因此,可以相应地减少流水线后端的转移预测错误。
本说明书实施方式提供一种指令转移预测系统,参考图2a所示,指令转移预测系统200包括预测单元210、预测目标地址队列220和取指单元230,预测目标地址队列220的输入端连接预测单元210的输出端,预测目标地址队列220的输出端连接取指单元230的输入端。
其中,预测单元210,用于对转移指令进行多级分支预测;多级分支预测包括第一级分支预测和第二级分支预测;通过第一级分支预测对转移指令进行分支预测,得到第一级预测结果并输出,通过第二级分支预测对转移指令进行分支预测,得到第二级预测结果并输出;其中,第一级预测结果和第二级预测结果分别包括转移指令对应的预测地址。
预测目标地址队列220,用于在接收到第一级预测结果的情况下记录对应的转移指令的指令地址以及第一级预测结果,并在接收到转移指令对应的第二级预测结果的情况下,利用第二级预测结果覆盖对应的第一级预测结果。
取指单元230,用于从预测目标地址队列获取目标指令地址对应的目标预测地址,并根据获取的目标预测地址进行相应的取指操作。
其中,转移指令可以包括分支指令、无条件直接转移指令等。预测单元为具有多级覆盖预测结构的分支预测器。预测地址为对应的指令地址的下一个目标地址,可以为预测对应的转移指令发生转移时的转移目标地址。目标指令地址为取指单元当前读取的预测目标地址队列的对应表项中包括的指令地址。目标预测地址为取指单元当前读取的预测目标地址队列的对应表项中的当前预测结果中包括的预测地址,可以是第一级预测结果中包括的预测地址,也可以是第二级预测结果中包括的预测地址。
可以理解的是,预测单元可以包括多个分支预测器,第一级预测结果可以是通过第一级预测器得到的,第二级预测结果可以是通过第二级预测器得到的。第一级预测结果和第二级预测结果中均包括预测转移指令是否发生转移的信息,以及预测该转移指令发生转移时的转移目标地址。第二级预测结果的准确率高于第一级预测结果的准确率。
在一些情况中,预测单元与取指单元解耦后,由于预测单元位于取指单元之前,高级的分支预测无法得到取指单元获取的指令,因此无法结合指令扩展、预译码信息等对低级的分支预测结果进行纠正,以对指令流进行定向以及确定最终的转移目标地址。综合考虑下,由于高级的分支预测的预测结果的准确率在没有指令扩展、预译码信息等的指导下,也可以保证在一个较高的水平,因此,可以直接利用高级的预测结果覆盖低级的预测结果,以解决指令流的重定向问题,并可以将处理器中已有的具有多级覆盖预测结构的分支预测器从之前的结构中分离出来,形成一个可以单独工作的预测单元。进一步地,由于多级覆盖预测结构的预测结果有多级,如果等待预测单元给出最终的预测结果之后,更新预测目标地址队列,会丢失之前的预测结果。因此,可以在每一级的预测结果产生后,都对预测目标地址队列进行更新操作。
具体地,参考图2b所示,在预测单元对当前转移指令进行第一级分支预测产生第一级预测结果后,预测单元将该第一级预测结果输出以对预测目标地址队列进行写入操作,以向预测目标地址队列写入该当前转移指令对应的指令地址以及该第一级预测结果,预测目标地址队列将接收到的该指令地址以及该第一级预测结果记录在当前的队尾表项中。在预测单元对该当前转移指令进行第二级分支预测产生第二级预测结果后,预测单元将该第二级预测结果输出以对预测目标地址队列进行写入操作,以向预测目标地址队列写入该当前转移指令对应的指令地址以及该第二级预测结果,预测目标地址队列将接收到的该指令地址以及第二级预测结果,记录到该当前转移指令对应的第一级预测结果所处的表项中,以利用该当前转移指令对应的第二级预测结果覆盖对应的第一级预测结果。
可以理解的是,对同一指令块中的转移指令分别进行第一级分支预测和第二级分支预测后写入预测目标地址队列的指令地址是不变的,因此,预测目标地址队列记录对应的指令地址以及第二级预测结果时,可以实现利用第二级预测结果对对应的第一级预测结果进行覆盖。
需要说明的是,多级分支预测至少包括第一级分支预测和第二级分支预测。相应地,预测单元产生的预测结果至少包括第一级预测结果和第二级预测结果。继续参考图2b所示,假设预测单元包括n级分支预测,相应地,可以对当前转移指令进行产生n级预测结果,则该n级预测结果均通过上述覆盖方式被记录到预测目标地址队列中。
进一步地,取指单元从预测目标地址队列的当前队首表项处获取该表项中的目标指令地址对应的目标预测地址。若预测目标地址队列的当前队首表项中记录的目标指令地址对应的当前预测结果为第一级预测结果,则取指单元可以从该第一级预测结果中获取对应的目标预测地址;若预测目标地址队列的当前队首表项中记录的目标指令地址对应的当前预测结果为第二级预测结果,则取指单元可以从该第二级预测结果中获取对应的目标预测地址。根据获取的目标预测地址,取指单元可以在指令缓存空间中进行相应的取指操作。
需要说明的是,本说明书中的指令地址、预测地址,均可以是程序计数器地址,即PC地址。预测地址也可以是预测转移指令不发生转移的情况下,通过顺序寻址形成的对应的指令地址的下一个目标地址。
上述实施方式中,重新设计了指令流的定向逻辑,使用高级预测结果直接对取指需要用的程序计数器地址进行定向,取消了预译码结果的参与,从而将整个具有多级预测覆盖结构的预测单元从原有的结构中分离出来,提高了预测单元的解耦合效果。同时,通过新的高效的全局数据结构以记录不断更新变化的转移预测信息等,减少重复记录的信息,由于需要保存的信息减少,因此可以提高硬件资源的充分利用率。
在一些实施方式中,预测目标地址队列,还用于在取指单元根据获取的目标预测地址进行取指操作并从第一指令缓存空间中获取到相应的目标指令块的情况下,将对应的目标指令地址以及目标预测地址所处的目标表项从预测目标地址队列中删除。
其中,第一指令缓存空间可以包括一级指令缓存。进一步地,一级指令缓存可以是高速缓存cache。
可以理解的是,由于转移指令通常用于在指令块之间的转移,因此,取指单元根据目标预测地址进行相应的取指操作,可以从第一指令缓存空间中目标预测地址指向的位置处进行顺序读取,以获取到目标预测地址对应的目标指令块。
在一些情况中,由于多级分支预测的预测结果是变化的,取指单元根据目标指令地址对应的目标预测地址进行相应的取指操作后,预测目标地址队列中目标指令地址对应的目标预测地址可能改变为一个新的预测地址,取指单元需要重新取指。为了保证指令缓存的正常流水化,解决取指单元的重定向问题,可以将预测目标地址队列的出队操作和发送给第一指令缓存空间的取指请求区分开来。
具体地,目标指令地址以及该目标指令地址被记录在预测目标地址队列的同一个目标表项中。取指单元从预测目标地址队列的该目标表项中获取该目标指令地址对应的目标预测地址,然后根据获取到的目标预测地址,向第一指令缓存空间发送取指请求,以进行相应的取指操作。当取指单元从第一指令缓存空间中成功获取到该目标预测地址对应的目标指令块时,预测目标地址队列中的该目标表项中的内容可以删除,以完成该目标表项的出队操作。
在一些实施例中,第一指令缓存空间中存储的指令块,可以包括通过预取操作从优先级低于第一指令缓存空间的指令缓存空间中预取得到的指令块。
在另一些实施例中,第一指令缓存空间还可以包括预取指令缓存空间,其中存储有通过预取操作从优先级低于第一指令缓存的指令缓存空间中预取得到的指令块。
在一些实施方式中,预测目标地址队列,还用于对预测目标地址队列中的任一指令地址对应的预测地址进行过滤,得到满足预取条件的预测地址,作为预取地址。
其中,满足预取条件的预测地址为与其对应的指令地址分别位于不同的缓存行的预测地址;预取地址用于从第二指令缓存空间中获取预取地址对应的预取指令块。
其中,第二指令缓存空间可以是二级指令缓存,或者是三级指令缓存,或者是主存等存储空间。缓存行为指令缓存空间存储指令以及指令块的单位,是一段连续的地址空间。
在一些情况中,预测目标地址队列保存了预测单元预测产生的指令执行序列,当预测的准确率维持在一个较高的水平时,预测目标地址队列中的指令执行序列会非常接近程序真实运行时的有效指令执行序列,因此,借助预测目标地址队列中的指令地址就可以对指令缓存的预取机制进行优化。
具体地,对于预测目标地址队列中的每一个表项,可以检查每一个表项中的指令地址所处的指令块地址与该指令地址对应的预测结果中的预测地址是否在第一指令缓存空间的同一个缓存行中。如果发现任一表项中的指令地址所处的指令块地址和与该指令地址对应的预测地址不在同一个缓存行中,则该预测地址满足预取条件,将该预测地址确定为预取地址,并进行对齐后发给第二指令缓存空间,以进行预取。如果发现任一表项中的指令地址所处的指令块地址和与该指令地址对应的预测地址在第一指令缓存空间的同一个缓存行中,则该预测地址不满足预取条件,不需要发给第二指令缓存空间进行预取。
上述实施方式中,基于预测目标地址队列,设计一种全新的缓存预取策略,通过对预测目标地址队列的每一个表项进行过滤,确定出满足预取条件的预测地址作为预取地址,并发给第二指令缓存空间进行预取。由此,发往第二指令缓存空间的预取地址均来自于预测目标地址队列,不需要额外的预取指令队列,也可实现高效的预取机制,提高取指单元取指时的命中率和命中速度。
在一些实施方式中,预测目标地址队列,还用于在记录对应的转移指令的指令地址以及第一级预测结果至预测目标地址队列的对应表项时,返回该表项的表项索引至预测单元,以使预测单元根据对应的表项索引将对应的第二级预测结果写至对应表项中。
其中,对应表项为预测目标地址队列的队尾表项。
具体地,预测目标地址队列将接收到的对应的转移指令的指令地址以及第一级预测结果记录到预测目标地址队列的当前队尾表项中,同时,会将该表项的表项索引返回给预测单元。该表项索引会随流水线寄存下去,以使预测单元对该同一转移指令进行第二级分支预测产生第二级预测结果时,可以使用对应的该表项索引将该第二级预测结果写入到对应的相同的表项中,使该转移指令对应的第二级预测结果覆盖掉该转移指令对应的第一级预测结果。
可以理解的是,预测目标地址队列在写入的过程中,队尾表项是一直变化的。
进一步地,在对同一转移指令进行预测得到的第二级预测结果与第一级预测结果不相同的情况下,利用该转移指令对应的第二级预测结果覆盖对应的第一级预测结果后,对应该转移指令的指令地址的预测地址会发生变化。由于预测目标地址队列负责记录预测单元产生的指令执行序列,因此,该指令地址所在表项的后续表项中的内容需要进行重定向。
具体地,利用当前转移指令对应的第二级预测结果覆盖该当前转移指令对应的第一级预测结果后,在该当前转移指令进行预测得到的第二级预测结果与该当前转移指令对应的第一级预测结果不相同的情况下,可以基于新的第二级预测结果对对应的指令地址所处的表项的后续表项中的内容进行覆盖或重新写入,从而可以对该表项的后续表项中的指令地址以及相应的预测地址进行重定向。
示例性地,t周期,预测单元对转移指令I1进行第一级分支预测,得到转移指令I1的第一级预测结果R11,向预测目标地址队列写入指令地址addr1以及第一级预测结果R11。预测目标地址队列将接收到的地址addr1以及第一级预测结果R11记录在当前的队尾表项T1中,并将该表项的表项索引S1返回给预测单元。t+1,周期预测单元继续对下一个转移指令I2进行第一级分支预测,得到转移指令I2的第一级预测结果R12,向预测目标地址队列写入指令地址addr2以及第一级预测结果R12。预测目标地址队列将接收到的地址addr2以及第一级预测结果R12记录在当前的队尾表项T2中,并将该表项的表项索引S2返回给预测单元。
T周期,预测单元对转移指令I1进行第二级分支预测,得到转移指令I1的第二级预测结果R21,并根据表项索引S1,将指令地址addr1以及第二级预测结果R21写入预测目标地址队列的表项T1。预测目标地址队列将接收到的地址addr1以及第二级预测结果R21记录至表项T1中,以利用第二级预测结果R21覆盖第一级预测结果R11。在没有发生分支预测错误或需要对流水线进行重定向的情况下,T+1周期,预测单元可以继续对下一个转移指令I2进行第二级分支预测,得到转移指令I2的第二级预测结果R22,并根据表项索引S2,将指令地址addr2以及第二级预测结果R22写入预测目标地址队列的表项T2。预测目标地址队列将接收到的地址addr2以及第二级预测结果R22记录至表项T2中,以利用第二级预测结果R22覆盖第一级预测结果R12。
如果对转移指令I1的预测发生分支预测错误或处理器的后端处理单元需要对指令地址addr1对应的预测地址进行重定向,再或者T周期利用第二级预测结果R21覆盖第一级预测结果R11后,指令地址addr1对应的预测地址发生了改变,则可以在预测目标地址队列中以表项T2为重定向的起始位置进行后续指令流的重定向。
可以理解的是,在一些情况中,当发生转移预测错误或者后端处理单元需要重定向控制流时,流水线需要被清空,前端处理单元需要快速恢复。相比于等到预测单元给出当前转移指令对应的多级预测结果后才将最终的预测结果写入预测目标地址队列的方法,通过使预测单元在产生每一级预测结果后都会对预测目标地址队列进行写入操作,可以在流水线执行了更少的错误指令的情况下,实现流水线的快速重定向,从而减少需要清空的指令,使流水线能够快速恢复执行。
需要说明的是,前端处理单元的快速恢复还包括转移预测器状态的快速恢复。具体地,在发生转移预测错误时,预测单元进行预测所需要的历史信息也需要及时更新恢复,其中包括全局历史信息的快速恢复、预测器元数据的快速恢复以及返回地址堆栈(ReturnAddress Stack,RAS)内容的快速恢复。在相关技术的处理器设计中,全局信息会随着流水线传递并最终作为一个副本信息保存在处理器的取指目标队列(Fetch Target Queue,FTQ)对应的表项中,因此在本说明书中没有额外实现全局历史信息的快速恢复机制。对于预测器的元数据的快速恢复,在相关技术的处理器的设计中不会对各个转移预测器的元数据进行推测式的更新,所以对预测器元数据的更新都会在指令提交阶段完成,因此在本说明书中也没有额外实现预测器元数据的快速恢复机制。对于RAS内容的快速恢复,可以采用经典的栈顶恢复机制。通过将每个指令块对应的RAS栈顶地址保存下来,然后作为该指令块转移预测信息的一部分写入到处理器的FTQ队列中,这样在发生流水线重定向时,就可以利用对应FTQ队列表项中的RAS栈顶地址将RAS堆栈的栈顶表项进行快速恢复,以恢复到正确的状态。
上述实施方式中,基于预测目标地址队列的解耦式预测单元结构,对预测目标地址队列的写入操作也形成了一种覆盖结构,可以解决基于预测目标地址队列的前端解耦式结构的指令流重定向问题,实现流水线的快速恢复。
在一些实施方式中,预测目标地址队列具有出队指针。预测目标地址队列,还用于在取指单元根据出队指针当前指向的表项中包括的预测地址进行取指操作并从第一指令缓存空间中获取到相应的指令块的情况下,将出队指针当前指向的表项从预测目标地址队列中删除,并更新出队指针。
其中,出队指针可以是预测目标地址队列的队首指针。出队指针当前指向的表项可以是预测目标地址队列的队首表项。
可以理解的是,预测目标地址队列的每个表项中不仅保存了相应的目标指令地址,还记录了对应指令块的转移预测信息,包括是否发生转移以及转移目标地址等。因此,取指单元可以从出队指针当前指向的表项中获取其中包括的预测地址。
具体地,预测目标地址队列内部维护一个出队指针deq_ptr,指向预测目标地址队列的当前队首表项处。取指单元从预测目标地址队列的当前队首表项处开始获取目标预测地址。在取指单元根据当前队首表项中包括的预测地址进行取指操作并从第一指令缓存空间获取到相应的指令块的情况下,表示取指单元已成功进行了取指操作,预测目标地址队列可以通过内部维护的指向预测目标地址队列当前队首表项的出队指针,实现将当前队首表项中的内容从预测目标地址队列中移除,以完成出队操作。出队操作完成后,出队指针会自动加1,指向预测目标地址队列的新的队首表项。
在一些实施例中,预测目标地址队列还可以提供出队端口——deq端口,用于完成预测目标地址队列中的表项的出队操作,利用该出队端口通过指向预测目标地址队列当前队首表项的出队指针,在取指单元根据当前队首表项中包括的预测地址进行取指操作并获取到相应的指令块的情况下,实现将预测目标地址队列的当前队首表项从队列中移除。
在一些实施方式中,预测目标地址队列具有预取指针。预测目标地址队列,还用于在接收到处理器前端发送的预取请求的情况下,返回预取指针当前指向的表项中包括的预测地址和该预测地址对应的预取有效性信号至处理器前端,并更新预取指针,以使处理器前端在接收到的预取有效性信号为预取有效信号的情况下,以预取有效信号对应的预测地址为预取地址,并从第二指令缓存空间中获取预取地址对应的预取指令块;其中,预取有效信号用于表明预取有效信号对应的预测地址为满足预取条件的预测地址。
其中,处理器前端为预测目标地址队列所处的处理器的前端处理单元。预取请求为在取指单元根据从预测目标地址队列中获取的当前目标预测地址未从第一指令缓存空间中获取到相应的目标指令块的情况下,处理器前端生成的请求。
具体地,预测目标地址队列内部维护一个预取指针prefetch_ptr。当预测目标地址队列收到处理器前端发送的预取请求后,表示取指单元根据从预测目标地址队列中获取的当前目标预测地址没有从第一指令缓存空间中获取到对应的目标指令块,该目标指令块需要从第二指令缓存空间中进行预取,则预取指针会自动加1,指向预测目标地址队列中当前目标预测地址所处表项的下一个可能需要预取的表项。预取指针检查该预取指针当前指向的表项中的指令地址所处的指令块地址与该指令地址对应的预测结果中的预测地址是否在第一指令缓存空间的同一个缓存行中,并向处理器前端返回一个回复,回复中包含有一个该预取指针当前指向的表项中包括的预测地址对应的预取有效性信号。如果发现该预取指针当前指向的表项中的指令地址所处的指令块地址与对应的预测地址不在同一个缓存行中,则该预测地址为满足预取条件的预取地址,预测目标地址队列可以将包含该预测地址以及该预测地址对应的预取有效信号的回复返回给处理器前端,用于指示处理器前端需要根据该表项中包括的预测地址进行预取,以从第二指令缓存空间中获取对应的预取指令块。
如果发现预取指针当前指向的表项中的指令地址所处的指令块地址与对应的预测地址在同一个缓存行中,则该预测地址不满足预取条件,不需要预取。预测目标地址队列可以将包含有该预测地址以及该预测地址对应的预取无效信号的回复返回给处理器前端,以指示处理器前端不需要根据该预测地址进行预取。
在一些实施例中,预测目标地址队列还可以通过预取端口——prefetch端口,从预测目标地址队列中读出预取指针指向的需要发送给指令缓存的预取地址。预取请求可以是取指单元生成的,也可以是第一指令缓存空间生成的。
上述实施方式中,通过利用预取指针和预取有效性信号对预测目标地址队列中的表项进行过滤的预取策略,选择出满足条件的指令块地址进行预取,提高了取指单元取指时的命中率和命中速度,并可以在一定程度上节约硬件资源。
在一些实施方式中,预测目标地址队列具有入队指针和读取指针。预测目标地址队列,还用于在接收到第一级预测结果的情况下,记录对应的转移指令的指令地址以及第一级预测结果至入队指针当前指向的表项并更新入队指针,以及在接收到取指单元的读取请求的情况下,返回读取指针当前指向的表项中包括的预测地址至取指单元并更新读取指针。
具体地,预测目标地址队列内部维护一个入队指针enq_ptr和一个读取指针read_ptr,入队指针指向预测目标地址队列的当前队尾表项,读取指针指向预测目标地址队列的当前队首表项。预测单元会将产生的预测结果通过入队指针写入到该入队指针指向的预测目标地址队列的当前尾部空表项中,取指单元会通过读取指针从该读取指针指向的预测目标地址队列的当前队首读出取指需要用到的地址。预测目标地址队列初始化时,预测目标地址队列为空队列,入队指针和读取指针均指向预测目标地址队列的第一个空表项,此时只允许入队操作,取指单元无法从队列中获取到有效的内容。发生入队操作后,比如预测单元将目标指令地址以及第一级预测结果写入预测目标地址队列,预测目标地址队列将接收到的目标指令地址以及第一级预测结果记录至入队指针指向的位置后,入队指针会自动加1,指向下一个写入的表项位置,以实现向预测目标地址队列的队尾追加表项的功能。发生读取操作后,比如预测目标地址队列收到取指单元发来的读取请求后,读取指针指向的表项中的内容会被读取出来,且读取指针会自动加1,指向下一个需要读取的表项位置。
可以理解的是,读取指针当前指向的表项中包括的预测地址即为目标预测地址。
进一步地,在一些实施例中,当取指单元未从指令缓存中获取到相应的指令块时,预测目标地址队列会收到重置信号(reset信号)。预测目标地址队列需要重置取指用的程序计数器地址,并将读取指针重置,使读取指针指向队首指针的下一个表项位置处。
在一些实施例中,入队指针即为预测目标地址队列的队尾指针。预测目标地址队列的内部结构可以被设计为一个包含N个表项的循环队列,起始时队首和队尾指针都指向队列中的第一个表项,此时队列处于空的状态;当预测目标地址队列为空时,只允许入队操作,此时取指部件无法从队列中获取到有效的指令地址;发生入队操作后,即转移预测单元将产生的预测结果写入到预测目标地址队列中后,队尾指针移动到下一个空表项处;当队首指针和队尾指针再次重合时,此时预测目标地址队列需要根据当前的出队或入队操作判断队列是否处于满的状态。预测目标地址队列处于满的状态时,只允许出队操作,此时预测单元无法再向预测目标地址队列中写入新的预测结果,需要重新预测。
预测目标地址队列还可以提供入队端口——enq端口,使预测单元通过入队端口向预测目标地址队列写入新的表项内容。预测目标地址队列还可以提供读取端口——read端口,使取指单元通过读取端口从预测目标地址队列中读出需要发送给指令缓存的预测地址。读取端口通过读取指针实现顺序读取预测目标地址队列中的表项内容。
进一步地,预测目标地址队列还可以为每一级分支预测分别提供对应的写入端口。示例性地,预测单元对转移指令I1进行第一级分支预测产生第一级预测结果后,可以通过enq端口将转移指令I1对应的目标指令地址以及第一级预测结果写入至预测目标地址队列的目标表项T1,预测目标地址队列会将该目标表项T1的表项索引返回给预测单元;预测单元对转移指令I1进行第二级分支预测产生第二级预测结果后,可以使用目标表项T1的表项索引,通过第二级分支预测对应的写入端口——writeidx1端口,将转移指令I1对应的目标指令地址以及第二级预测结果写入至目标表项T1中;预测单元对转移指令I1进行第三级分支预测产生第三级预测结果后,可以使用目标表项T1的表项索引,通过第三级分支预测对应的写入端口——writeidx2端口,将转移指令I1对应的目标指令地址以及第三级预测结果写入至目标表项T1中。
需要说明的是,预测目标地址队列可以通过读取指针和出队指针配合实现出队操作。具体地,当预测目标地址队列收到出队操作指示时,判断出队指针是否会超过读取指针。在出队指针不会超过读取指针的情况下,出队指针会自动加1,指向预测目标地址队列的新的队首表项。
本说明书实施方式提供一种指令转移预测方法,应用于指令转移预测系统,指令转移预测系统包括预测单元、预测目标地址队列和取指单元,预测目标地址队列的输入端连接预测单元的输出端,预测目标地址队列的输出端连接取指单元的输入端;预测单元用于对转移指令进行多级分支预测;多级分支预测包括第一级分支预测和第二级分支预测。参考图3所示,该指令转移预测方法包括以下步骤。
S310、预测单元通过第一级分支预测对转移指令进行分支预测,得到第一级预测结果并输出,通过第二级分支预测对转移指令进行分支预测,得到第二级预测结果并输出;其中,第一级预测结果和第二级预测结果分别包括转移指令对应的预测地址。
S320、预测目标地址队列在接收到第一级预测结果的情况下记录对应的转移指令的指令地址以及第一级预测结果,并在接收到转移指令对应的第二级预测结果的情况下,利用第二级预测结果覆盖对应的第一级预测结果。
S330、取指单元从预测目标地址队列获取目标指令地址对应的目标预测地址,并根据获取的目标预测地址进行相应的取指操作。
需要说明的是,关于上述实施方式中预测单元、预测目标地址队列和取指单元的描述,请参考本说明书中关于指令转移预测系统的预测单元、预测目标地址队列和取指单元的描述,具体这里不再赘述。
本说明书实施方式提供一种指令转移预测装置,应用于指令转移预测系统,指令转移预测系统包括预测单元、预测目标地址队列和取指单元,预测目标地址队列的输入端连接预测单元的输出端,预测目标地址队列的输出端连接取指单元的输入端;预测单元用于对转移指令进行多级分支预测;多级分支预测包括第一级分支预测和第二级分支预测。参考图4所示,该指令转移预测装置400包括:分支预测模块410、记录模块420、预测地址获取模块430。
分支预测模块410,用于预测单元通过第一级分支预测对转移指令进行分支预测,得到第一级预测结果并输出,通过第二级分支预测对转移指令进行分支预测,得到第二级预测结果并输出;其中,第一级预测结果和第二级预测结果分别包括转移指令对应的预测地址。
记录模块420,用于预测目标地址队列在接收到第一级预测结果的情况下记录对应的转移指令的指令地址以及第一级预测结果,并在接收到转移指令对应的第二级预测结果的情况下,利用第二级预测结果覆盖对应的第一级预测结果。
预测地址获取模块430,用于取指单元从预测目标地址队列获取目标指令地址对应的目标预测地址,并根据获取的目标预测地址进行相应的取指操作。
关于指令转移预测装置的具体限定可以参见上文中对于指令转移预测方法的限定,在此不再赘述。上述指令转移预测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本说明书实施方式还提供了一种计算机设备,参考图5所示,该计算机设备500包括存储器510、处理器520及存储在存储器510上并可在处理器520上运行的计算机程序530,处理器520执行计算机程序530时,实现前述的指令转移预测方法。
本说明书实施方式还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述的指令转移预测方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
- 用户指令匹配方法、装置、计算机设备及存储介质
- 一种指令处理方法、系统、设备及计算机可读存储介质
- 设备标示方法、装置、系统、计算机设备和存储介质
- 仓储安防监控装置、系统、方法、计算机设备及存储介质
- 储能调频方法、装置、系统、计算机设备和存储介质
- 监测上行链路取消指令的方法、用户设备、装置、计算机可读存储介质、发送上行链路取消指令的方法和基站
- 用于通过增强现实设备来提供信息的方法和装置、用于提供用于控制增强现实设备的显示的信息的方法和装置、用于控制增强现实设备的显示的方法和装置、具有用于执行方法的指令的计算机可读的存储介质