CN116507999A - 一种处理器、处理方法及相关设备 - Google Patents

一种处理器、处理方法及相关设备 Download PDF

Info

Publication number
CN116507999A
CN116507999A CN202080105555.6A CN202080105555A CN116507999A CN 116507999 A CN116507999 A CN 116507999A CN 202080105555 A CN202080105555 A CN 202080105555A CN 116507999 A CN116507999 A CN 116507999A
Authority
CN
China
Prior art keywords
address
general register
column
row
source operand
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
CN202080105555.6A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116507999A publication Critical patent/CN116507999A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种处理器、处理方法及相关设备,其中,包括数据选择单元、与数据选择单元连接的指令译码单元和M行*N列通用寄存器组;指令译码单元,用于对输入的X条指令进行译码,获取X条指令各自的至少一个源操作数地址,共计Y个源操作数地址;并将Y个源操作数地址发送至数据选择单元;Y个源操作数地址中的每一个源操作数地址中包括至少一个列地址位、至少一个行地址位和至少一个目标地址位;数据选择单元,用于根据第i个源操作数地址中包括的至少一个列地址位、至少一个行地址位和至少一个目标地址位在M行*N列通用寄存器组中访问第i个源操作数地址对应的通用寄存器,获取对应的源操作数。采用本发明,可以减少操作数的选数代价。

Description

一种处理器、处理方法及相关设备 技术领域
本发明涉及计算机技术领域,尤其涉及一种处理器、处理方法及相关设备。
背景技术
随着各个领域的数据规模以及复杂度的不断增加,对处理器计算能力的要求越来越高,为了提高处理器执行指令的效率,现有技术中大多采取将一条指令的操作分成多个细小的步骤的方式,也即指令流水线。例如,常见的五级流水线可以包括:取指令流水线、指令译码流水线、数据选择流水线、执行流水线和写回流水线。一般情况下,流水线级数越多,也即一条指令被划分成越多个小步骤,指令的执行效率越高。其中,在数据选择流水线中,需要根据每条指令的源操作数地址从对应的通用寄存器(General-Purposed Register,GPR)中读取数据,已获得该指令执行计算所需的源操作数,而在写回流水线中,需要将该指令的计算结果写回对应的GPR中,待后续指令需要使用该计算结果时,可以从该GPR中获取该计算结果,也即该计算结果可以作为后续指令的源操作数,等等。
综上,容量较小的GPR(例如为32byte的GPR)往往会导致在数据无法写回GPR的情况下暂时先将数据写入数据存储器(data memory)中,然后当后续指令需要使用该数据时,再从data memory中读出至GPR,如此便会导致频繁地在data memory和GPR之间进行数据换入换出,如果涉及指令间的相关性,就会导致流水停顿(Pipeline stall),降低处理器性能。然而,若为了解决上述频繁有数据换入换出的问题而直接扩大GPR,例如将整个data memory都作为GPR(比如将GPR扩大至512byte),则会大大增加选数范围(从原来的32byte的数据范围扩大至512byte的数据范围),从而为上述操作数选择带来巨大的逻辑代价。
发明内容
本发明实施例提供一种处理器、处理方法及相关设备,可以减少操作数的选数代价,保证处理器的处理效率。
第一方面,本发明实施例提供了一种处理器,包括数据选择单元、与所述数据选择单元连接的指令译码单元和M行*N列通用寄存器组,所述M行*N列通用寄存器组中的每一个通用寄存器组包括K个通用寄存器;M、N和K为大于或者等于1的整数;其中,所述指令译码单元,用于对输入的X条指令进行译码,获取所述X条指令各自的至少一个源操作数地址,共计Y个源操作数地址;并将所述Y个源操作数地址发送至所述数据选择单元;所述Y个源操作数地址中的每一个源操作数地址中包括至少一个列地址位、至少一个行地址位和至少一个目标地址位;所述至少一个列地址位用于指示所述每一个源操作数地址所属的通用寄存器列,所述至少一个行地址位用于指示所述每一个源操作数地址所属的通用寄存器行;所述至少一个目标地址位用于指示所述每一个源操作数地址与所述K个通用寄存器中的第t个通用寄存器的对应关系;X、Y和t为大于或者等于1的整数;所述数据选择单元,用于根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一 个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,获取对应的源操作数;所述第i个源操作数地址为所述Y个源操作数地址中的一个;i为大于或者等于1,且小于或者等于Y的整数。
本发明实施例,提供了一种处理器,该处理器实现了通过缩小操作数的选数范围以减小选数代价,具体包括针对通用寄存器组的划分以及针对源操作数地址的设计。其中,在通用寄存器组方面,该处理器可以包括预先划分的M行*N列通用寄存器组,每一个通用寄存器组中可以包括至少一个通用寄存器。此外,在源操作数地址方面,本发明实施例的源操作数地址中可以包括至少一个列地址位、至少一个行地址位和至少一个目标地址位。其中,该至少一个列地址位可以用于指示源操作数地址所属的通用寄存器列(例如,若共划分有4列通用寄存器,则可通过两个二进制的列地址位来指示源操作数地址所属的通用寄存器列),该至少一个行地址位可以用于指示源操作数地址所属的通用寄存器行,该至少一个目标地址位可以用于指示源操作数地址具体为某一通用寄存器组中的第几个通用寄存器。从而实现处理器可以根据每一个源操作数地址中包括的各部分地址位,在其指示的通用寄存器行、通用寄存器列中进行操作数选择。例如,可以根据列地址位确定每一个源操作数地址所属的通用寄存器列,然后再在各自所属的通用寄存器列中,通过其他的行地址位和目标地址位确定每一个源操作数地址具体对应的通用寄存器;或者,可以根据行地址位确定每一个源操作数地址所属的通用寄存器行,然后再在各自所属的通用寄存器行中,通过其他的列地址位和目标地址位确定每一个源操作数地址具体对应的通用寄存器,并获取其中的数据,也即获取对应的源操作数。综合上述两方面,本发明实施例可以通过在指定通用寄存器列或者指定通用寄存器行中进行操作数选择,大大缩小选数范围,降低选数的逻辑代价。由此,对比现有技术中,若直接在全部的数据范围内(也即全部的通用寄存器中)进行操作数选择,则会带来极大的选数代价;若通过预先将一部分数据提取出来,然后再在该数据范围内进行操作数选择,则会带来额外的硬件成本等。因此,相较于前述现有的方案而言,本发明实施例可以实现基于现有的硬件结构,在原本较大的数据范围内,针对每一个源操作数地址确定其对应的一个较小的数据范围,然后在该较小的数据范围内进行操作数选择,极大程度上降低了选数代价,保证指令的执行效率以及处理器的性能。
在一种可能的实现方式中,所述处理器还包括与所述数据选择单元连接的执行单元,所述执行单元包括至少一个算术逻辑单元;所述至少一个算术逻辑单元,用于基于所述Y个源操作数地址各自对应的所述源操作数执行所述X条指令,得到所述X条指令各自的计算结果。
在本发明实施例中,处理器中还可以包括执行单元,该执行单元还包括一个或多个算术逻辑单元,通过该一个或多个算术逻辑单元可以基于获取到的多个源操作数分别执行该多条指令各自对应的计算任务,例如完成加法、减法等等计算,得到该多条指令各自的计算结果,进一步提高了指令的整体执行效率。
在一种可能的实现方式中,所述处理器还包括与所述执行单元连接的结果写回单元;所述指令译码单元,还用于获取所述X条指令各自的目的操作数地址,共计X个目的操作数地址;所述X个目的操作数地址中的每一个目的操作数地址中包括所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位;所述至少一个列地址位用于指示 所述每一个目的操作数地址所属的所述通用寄存器列,所述至少一个行地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器行;所述至少一个目标地址位用于指示所述每一个目的操作数地址与所述K个通用寄存器中的所述第t个通用寄存器的对应关系;所述结果写回单元,用于根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,并将第j条指令的所述计算结果写回所述第j个目的操作数地址对应的所述通用寄存器中;j为大于或者等于1,且小于或者等于X的整数。
在本发明实施例中,处理器中还可以包括结果写回单元,此外,本发明实施例的目的操作数地址中可以包括至少一个列地址位、至少一个行地址位和至少一个目标地址位。其中,该至少一个列地址位可以用于指示目的操作数地址所属的通用寄存器列(例如,若共划分有4列通用寄存器,则可通过两个二进制的列地址位来指示目的操作数地址所属的通用寄存器列),该至少一个行地址位可以用于指示目的操作数地址所属的通用寄存器行,该至少一个目标地址位可以用于指示目的操作数地址具体为某一通用寄存器组中的第几个通用寄存器。从而实现处理器可以根据每一个目的操作数地址中包括的各部分地址位,在其指示的通用寄存器行、通用寄存器列中进行操作数选择。例如,可以根据列地址位确定每一个目的操作数地址所属的通用寄存器列,然后再在各自所属的通用寄存器列中,通过其他的行地址位和目标地址位确定每一个目的操作数地址具体对应的通用寄存器;或者,可以根据行地址位确定每一个目的操作数地址所属的通用寄存器行,然后再在各自所属的通用寄存器行中,通过其他的列地址位和目标地址位确定每一个目的操作数地址具体对应的通用寄存器,并将多条指令各自的计算结果分别写回对应的通用寄存器中。由此,通过在指定通用寄存器列或者指定通用寄存器行中进行操作数选择,大大缩小选数范围,降低选数的逻辑代价。
在一种可能的实现方式中,所述数据选择单元,具体用于:根据所述第i个源操作数地址中包括的所述至少一个列地址位,确定所述第i个源操作数地址所属的第i’个通用寄存器列,并在所述第i’个通用寄存器列中,根据所述第i个源操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i’为大于或者等于1,且小于或者等于N的整数;或者,根据所述第i个源操作数地址中包括的所述至少一个行地址位,确定所述第i个源操作数地址所属的第i”个通用寄存器行,并在所述第i”个通用寄存器行中,根据所述第i个源操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i”为大于或者等于1,且小于或者等于M的整数。
在本发明实施例中,可以根据列地址位确定每一个源操作数地址所属的通用寄存器列,然后再在各自所属的通用寄存器列中,通过其他的行地址位和目标地址位确定每一个源操作数地址具体对应的通用寄存器。比如,通过前述至少一个列地址位确定源操作数地址属于第1行通用寄存器组,进一步地,可以在第1行通用寄存器组中,根据至少一个行地址位和至少一个目标地址位确定该源操作数地址属于第1行通用寄存器组中的第2个通用寄存器。又或者,可以根据行地址位确定每一个源操作数地址所属的通用寄存器行,然后再 在各自所属的通用寄存器行中,通过其他的列地址位和目标地址位确定每一个源操作数地址具体对应的通用寄存器。比如,通过前述至少一个行地址位确定源操作数地址属于第1行通用寄存器组,进一步地,可以在第1行通用寄存器组中,根据至少一个列地址位和至少一个目标地址位确定该源操作数地址属于第1列通用寄存器组中的第2个通用寄存器。由此,完成根据源操作数地址中的各部分地址位在该M行*N列通用寄存器组进行操作数选择,也即确定该源操作数地址具体对应的通用寄存器,极大程度上减少了选数代价。需要说明的是,本申请实施例旨在通过行和列的划分,在操作数选择时,基于地址位所指示的行、列进行选数,从而缩小其选数范围,因此,本申请实施例对通过行进行选数范围的缩小还是通过列进行选数范围的缩小不作具体限定。可以理解的是,在一些可能的实施方式中,若每个通用寄存器组内仅仅包括一个通用寄存器组,则该源操作数地址中可以不包括目标地址位。
在一种可能的实现方式中,所述结果写回单元,具体用于:根据所述第j个目标操作数地址中包括的所述至少一个列地址位,确定所述第j个目标操作数地址所属的第j’个通用寄存器列,并在所述第j’个通用寄存器列中,根据所述第j个目标操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j’为大于或者等于1,且小于或者等于N的整数;或者,根据所述第j个目标操作数地址中包括的所述至少一个行地址位,确定所述第j个目标操作数地址所属的第j”个通用寄存器行,并在所述第j”个通用寄存器行中,根据所述第j个目标操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j”为大于或者等于1,且小于或者等于M的整数。
在本发明实施例中,可以根据列地址位确定每一个目的操作数地址所属的通用寄存器列,然后再在各自所属的通用寄存器列中,通过其他的行地址位和目标地址位确定每一个目的操作数地址具体对应的通用寄存器。比如,通过前述至少一个列地址位确定目的操作数地址属于第1行通用寄存器组,进一步地,可以在第1行通用寄存器组中,根据至少一个行地址位和至少一个目标地址位确定该目的操作数地址属于第1行通用寄存器组中的第2个通用寄存器。又或者,可以根据行地址位确定每一个目的操作数地址所属的通用寄存器行,然后再在各自所属的通用寄存器行中,通过其他的列地址位和目标地址位确定每一个目的操作数地址具体对应的通用寄存器。比如,通过前述至少一个行地址位确定目的操作数地址属于第1行通用寄存器组,进一步地,可以在第1行通用寄存器组中,根据至少一个列地址位和至少一个目标地址位确定该目的操作数地址属于第1列通用寄存器组中的第2个通用寄存器。由此,完成根据目的操作数地址中的各部分地址位在该M行*N列通用寄存器组进行操作数选择,也即确定该目的操作数地址具体对应的通用寄存器,极大程度上减少了选数代价。
在一种可能的实现方式中,所述Y个源操作数地址中的任意两个不同的源操作数地址属于不同的所述通用寄存器列;所述X个目的操作数地址中的任意两个不同的目的操作数地址属于不同的所述通用寄存器列。
在本发明实施例中,为了进一步减少选数的逻辑代价,约束每列通用寄存器一次只能选出一个操作数出来,若多条指令各自的源操作数地址或者目的操作数地址对应于同一列 的不同通用寄存器,则将要求处理器在一列通用寄存器中分别访问(也即选择)不同的通用寄存器,并获取其对应的源操作数,或者写入计算结果等,这往往会增加选数的逻辑代价,恰恰与本发明所要解决的技术问题相违背。
在一种可能的实现方式中,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述Y个源操作数地址中包括多个相同的数量大于第一阈值的第一源操作数地址,以及第二源操作数地址;所述第一源操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二源操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述数据选择单元,还用于根据所述第一源操作数地址访问对应的所述临时寄存器,获取对应的源操作数。
在本发明实施例中,由于上述为减少选数代价而设置的约束规则容易导致在处理数据相关性时出现指令执行效率下降的问题,例如,若多条指令执行计算时所需的源操作数相同,并且同一层(stage)内并行处理的其他指令的源操作数与该多条指令的源操作数对应于同一寄存器列的不同通用寄存器,则按照前述的约束规则,该多条指令无法与同一层内的其他指令并行处理,只能通过插空指令,并将该多条指令放在下一层进行处理,如此一来,指令利用率降低,指令执行效率降低。由此,可以通过编译器,将需要频繁引用和更新的通用寄存器用临时寄存器替代,该临时寄存器内可以存储有该通用寄存器内的数据,处理器可以根据源操作数地址访问该对应的临时寄存器,以获取对应的源操作数,不受约束规则的约束,保证了指令的执行效率。
在一种可能的实现方式中,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述X个目的操作数地址中包括多个相同的数量大于第一阈值的第一目的操作数地址,以及第二目的操作数地址;所述第一目的操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二目的操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述结果写回单元,还用于根据所述目标目的操作数地址访问对应的所述临时寄存器,并将对应的所述计算结果写回所述临时寄存器中。
在本发明实施例中,由于上述为减少选数代价而设置的约束规则容易导致在处理数据相关性时出现指令执行效率下降的问题,例如,若多条指令执行计算时所需的源操作数相同,并且同一层内并行处理的其他指令的目的操作数与该多条指令的目的操作数对应于同一寄存器列的不同通用寄存器,则按照前述的约束规则,该多条指令无法与同一层内的其他指令并行处理,只能通过插空指令,并将该多条指令放在下一层进行处理,如此一来,指令利用率降低,指令执行效率降低。由此,可以通过编译器,将需要频繁引用和更新的通用寄存器用临时寄存器替代,该临时寄存器内可以存储有该通用寄存器内的数据,处理器可以根据目的操作数地址访问该对应的临时寄存器,以将对应的计算结果写回该临时寄存器中,不受约束规则的约束,保证了指令的执行效率。
在一种可能的实现方式中,所述处理器还包括与所述指令译码单元连接的指令获取单元;其中,所述指令获取单元,用于获取待执行的所述X条指令,并将所述X条指令发送至所述指令译码单元;所述X条指令为所述处理器在一个时钟周期内并行执行的指令。
在本发明实施例中,处理器还可以包括指令获取单元,通过该指令获取单元可以获取多条待执行的指令,该多条待执行的指令可以为同一层内的指令,也即该多条指令可以为该处理器在一个时钟周期内(也即一拍(cycle)内)并行执行的指令,从而可以提升指令的执行效率。
在一种可能的实现方式中,所述Y个源操作数地址以及所述X个目的操作数地址的访问类型均为直接访问类型或者均为间接访问类型。
在本发明实施例中,由于直接访问可以直接知晓操作数地址,而间接访问是一个基址加上一个变量后最终才能得到操作数地址,因此往往会导致间接访问最终得到的操作数地址很有可能与直接访问的操作数地址不同,但是两者属于同一通用寄存器列。如此,对于同一个通用寄存器列来说,一次则需要选取两个不同的操作数出来,这将会增大选数的逻辑代价。但是,若均为直接访问或者均为间接访问,则可以根据前述的约束规则,将操作数地址不同但属于同一通用寄存器列的指令放在不同层进行处理,提前规避在同一通用寄存器列一次需要选取两个不同的操作数的情况,减少选数的逻辑代价。
第二方面,本发明实施例提供了一种处理方法,应用于处理器,所述处理器包括数据选择单元、与所述数据选择单元连接的指令译码单元和M行*N列通用寄存器组,所述M行*N列通用寄存器组中的每一个通用寄存器组包括K个通用寄存器;M、N和K为大于或者等于1的整数;所述方法包括:
通过所述指令译码单元,对输入的X条指令进行译码,获取所述X条指令各自的至少一个源操作数地址,共计Y个源操作数地址;并将所述Y个源操作数地址发送至所述数据选择单元;所述Y个源操作数地址中的每一个源操作数地址中包括至少一个列地址位、至少一个行地址位和至少一个目标地址位;所述至少一个列地址位用于指示所述每一个源操作数地址所属的通用寄存器列,所述至少一个行地址位用于指示所述每一个源操作数地址所属的通用寄存器行;所述至少一个目标地址位用于指示所述每一个源操作数地址与所述K个通用寄存器中的第t个通用寄存器的对应关系;X、Y和t为大于或者等于1的整数;
通过所述数据选择单元,根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,获取对应的源操作数;所述第i个源操作数地址为所述Y个源操作数地址中的一个;i为大于或者等于1,且小于或者等于Y的整数。
在一种可能的实现方式中,所述处理器还包括与所述数据选择单元连接的执行单元,所述执行单元包括至少一个算术逻辑单元;所述方法还包括:
通过所述至少一个算术逻辑单元,基于所述Y个源操作数地址各自对应的所述源操作数执行所述X条指令,得到所述X条指令各自的计算结果。
在一种可能的实现方式中,所述处理器还包括与所述执行单元连接的结果写回单元;所述方法还包括:
通过所述指令译码单元,获取所述X条指令各自的目的操作数地址,共计X个目的操作数地址;所述X个目的操作数地址中的每一个目的操作数地址中包括所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位;所述至少一个列地址位用于指 示所述每一个目的操作数地址所属的所述通用寄存器列,所述至少一个行地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器行;所述至少一个目标地址位用于指示所述每一个目的操作数地址与所述K个通用寄存器中的所述第t个通用寄存器的对应关系;
通过所述结果写回单元,根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,并将第j条指令的所述计算结果写回所述第j个目的操作数地址对应的所述通用寄存器中;j为大于或者等于1,且小于或者等于X的整数。
在一种可能的实现方式中,所述通过所述数据选择单元,根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,包括:
通过所述数据选择单元,根据所述第i个源操作数地址中包括的所述至少一个列地址位,确定所述第i个源操作数地址所属的第i’个通用寄存器列,并在所述第i’个通用寄存器列中,根据所述第i个源操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i’为大于或者等于1,且小于或者等于N的整数;或者,
通过所述数据选择单元,根据所述第i个源操作数地址中包括的所述至少一个行地址位,确定所述第i个源操作数地址所属的第i”个通用寄存器行,并在所述第i”个通用寄存器行中,根据所述第i个源操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i”为大于或者等于1,且小于或者等于M的整数。
在一种可能的实现方式中,所述通过所述结果写回单元,根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,包括:
通过所述结果写回单元,根据所述第j个目标操作数地址中包括的所述至少一个列地址位,确定所述第j个目标操作数地址所属的第j’个通用寄存器列,并在所述第j’个通用寄存器列中,根据所述第j个目标操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j’为大于或者等于1,且小于或者等于N的整数;或者,
通过所述结果写回单元,根据所述第j个目标操作数地址中包括的所述至少一个行地址位,确定所述第j个目标操作数地址所属的第j”个通用寄存器行,并在所述第j”个通用寄存器行中,根据所述第j个目标操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j”为大于或者等于1,且小于或者等于M的整数。
在一种可能的实现方式中,所述Y个源操作数地址中的任意两个不同的源操作数地址属于不同的所述通用寄存器列;所述X个目的操作数地址中的任意两个不同的目的操作数地址属于不同的所述通用寄存器列。
在一种可能的实现方式中,所述处理器还包括临时寄存器,所述临时寄存器与目标通 用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述Y个源操作数地址中包括多个相同的数量大于第一阈值的第一源操作数地址,以及第二源操作数地址;所述第一源操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二源操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述方法还包括:
通过所述数据选择单元,根据所述第一源操作数地址访问对应的所述临时寄存器,获取对应的源操作数;
在一种可能的实现方式中,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述X个目的操作数地址中包括多个相同的数量大于第一阈值的第一目的操作数地址,以及第二目的操作数地址;所述第一目的操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二目的操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述方法还包括:
通过所述结果写回单元,根据所述目标目的操作数地址访问对应的所述临时寄存器,并将对应的所述计算结果写回所述临时寄存器中。
在一种可能的实现方式中,所述处理器还包括与所述指令译码单元连接的指令获取单元;所述方法还包括:
通过所述指令获取单元,获取待执行的所述X条指令,并将所述X条指令发送至所述指令译码单元;所述X条指令为所述处理器在一个时钟周期内并行执行的指令。
在一种可能的实现方式中,所述Y个源操作数地址以及所述X个目的操作数地址的访问类型均为直接访问类型或者均为间接访问类型。
第三方面,本发明提供一种半导体芯片,可包括上述第一方面中的任意一种实现方式所提供的处理器。
第四方面,本发明提供一种半导体芯片,可包括:上述第一方面中的任意一种实现方式所提供的处理器、耦合于所述多核处理器的内部存储器以及外部存储器。
第五方面,本发明提供一种片上系统SoC芯片,该SoC芯片包括上述第一方面中的任意一种实现方式所提供的处理器、耦合于所述处理器的内部存储器和外部存储器。该SoC芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
第六方面,本发明提供了一种芯片系统,该芯片系统包括上述第一方面中的任意一种实现方式所提供的多核处理器。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存所述多核处理器在运行过程中所必要或相关的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其它分立器件。
第七方面,本发明提供一种处理装置,该处理装置具有实现上述第二面中的任意一种处理方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第八方面,本发明提供一种终端,该终端包括处理器,该处理器为上述第一方面中的任意一种实现方式所提供的处理器。该终端还可以包括存储器,存储器用于与处理器耦合, 其保存终端必要的程序指令和数据。该终端还可以包括通信接口,用于该终端与其它设备或通信网络通信。
第九方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第二方面中任意一项所述的处理方法流程。
第十方面,本发明实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被处理器执行时,使得处理器可以执行上述第二方面中任意一项所述的处理方法流程。
附图说明
图1为现有技术中的一种IE结构示意图。
图2为现有技术中的另一种IE结构示意图。
图3为现有技术中的一种程序拆分示意图。
图4为现有技术中的一种基于PV提取的指令处理示意图。
图5为本发明实施例提供的一种基于FV的指令处理示意图。
图6为本发明实施例提供的一种处理器的结构示意图。
图7为本发明实施例提供的又一种处理器的结构示意图。
图8a-图8e为本发明实施例提供的一种通用寄存器的划分方式示意图。
图9为本发明实施例提供的一种数据选择的示意图。
图10为本发明实施例提供的一种结果写回的示意图。
图11为本发明实施例提供的一种处理方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。并且,本申请的说明书和权利要求以及附图中所提及的“行”与“列”,并非绝对实际的“行”与“列”,也即本申请实施例中的M行*N列寄存器组在实际电路中并非是完全按照垂直的“行”与“列”进行排布的。在一些可能的实施方式中,本申请可以基于向量的方式来约束“行”与“列”,例如本申请实施例中的N列通用寄存器组可以对应于N个列向量,而M行通用寄存器组可以对应于M个行向量,其中,向量中的每一个元素均可以代表一个通用寄存器组。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式 地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本发明中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)指令流水线,是为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。例如,一条指令要执行要经过3个阶段:取指令、译码、执行,每个阶段都要花费一个机器周期,如果没有采用流水线技术,那么这条指令执行需要3个机器周期;如果采用了指令流水线技术,那么当这条指令完成“取指”后进入“译码”的同时,下一条指令就可以进行“取指”了,这样就提高了指令的执行效率。一般情况下,流水线级数越多,也即一条指令被划分成越多个小步骤,指令的执行效率越高。
请参阅图1,图1为现有技术中的一种指令处理引擎(Instruction Engine,IE)结构示意图。处理器的IE结构可以如图1所示。图1中以五级流水线的处理器为例,该流水线结构中一条指令的生命周期可包括取指令流水线→指令译码流水线→数据选择流水线→执行流水线→写回流水线,也即是该流水线结构将一条指令的执行过程至少分为五个阶段,其中每级流水完成的基本功能如下:
取指令流水线:取指令(Instruction Fetching,IF)是基于程序计数器(Program Counter,PC)作为地址从指令存储器(Instruction Memory,IMEM)读取指令,并完成校验后将指令发送给指令译码器(Instruction Decoder,ID);
指令译码流水线:通过指令译码器对输入的指令进行译码并做合法性检查,然后提取该指令的命令类型,操作数类型,立即数,源操作数地址和目的操作数地址;
数据选择流水线:通过数据选择器(Data Selector,DS)根据指令译码流水线中得到的源操作数地址从通用寄存器(General-Purpose Register,GPR)中选择数据,同时需进行数据相关性分析;其中,数据选择器有时也称之为多路选择器(multiplexers,Mux);如图1中的“4×2×16 bit src operands(源操作数)”所示,可以表明处理器一拍可并行处理4条指令,每条指令可以包括两个源操作数,也即一拍可从通用寄存器中获取8个源操作数,其中,每个源操作数的大小可以为16bit,也即2byte,等等,此处不再进行赘述;
执行流水线(Execute,EX):通过多个算术逻辑单元根据命令类型以及获取的操作数执行相应的算术、逻辑和移位等操作,并输出操作结果;指令执行是指对指令进行真正运算的过程。例如,如果指令是一条加法运算指令,则对操作数进行加法计算;如果是减法 运算指令,则对操作数进行减法计算,等等,此处不再进行赘述;
写回流水线:写回(Write-Back,WB)是指将指令执行的结果写回通用寄存器组的过程,或者是写入数据存储器(data memory),又或者是从数据存储器中读取数据并写回GPR的过程,也即如图1所示的执行读出/写入(load/store);如图1中的“4×16bit dst operands(目的操作数)”所示,可以表明处理器一拍可并行处理4条指令,每条指令可以包括一个目的操作数,也即一拍可将4条指令的计算结果写入对应的通用寄存器中,其中,每个目的操作数(也即计算结果)的大小可以为16bit,也即2byte,等等,此处不再进行赘述;
可以理解的是,上述处理器架构和处理器的流水线结构只是本发明实施例提供的一些示例性的实施方式,本发明实施例中的处理器架构和处理器的流水线结构包括但不仅限于以上实现方式。
显然,如图1所示,GPR的容量只有32byte,由于GPR容量较小往往会导致在上述写回流水线中,计算结果无法写回GPR的情况下暂时先将计算结果写入data memory中,然后当后续指令需要使用该计算结果时,再从data memory中读出至GPR,如此便会导致频繁地在data memory和GPR之间进行数据换入换出,降低指令执行效率,甚至造成流水停顿等等。因此,针对此类情况,有一种解决方案是将原来的整个data memory全部作为GPR,也即扩大GPR的容量,使其包括全范围矢量(Full Vector,FV),也即包括操作数选择的全范围。请参阅图2,图2为现有技术中的另一种IE结构示意图。如图2所示,相较于图1中的容量仅为32byte的GPR,图2中的GPR容量扩大至了512byte,一定程度上保证了数据均可以存储至GPR中,而无需频繁在GPR和之间进行数据的换入换出。然而,如图2所示,直接扩大GPR的容量,将会导致在数据选择流水线中,处理器需要在这个512byte的数据范围内根据译码得到的源操作数地址进行选择,以获取对应的源操作数,如此,便会极大程度上提高选数的逻辑代价。
综上,为了便于理解本发明实施例,进一步分析并提出本发明所具体要解决的技术问题。在现有技术中,关于缩小选数范围,降低操作数选择的逻辑代价,包括多种技术方案,以下示例性的列举如下常用的一种方案。
方案一:从FV中提取部分矢量(Partial Vector,PV),将PV作为操作数的选数范围,从PV中进行操作数选择。
为提升并行执行指令的能力,现在处理器多采用多条指令并行的超长指令字(Very Long Instruction Word,VLIW)架构以加速指令的执行。这样,对于大位宽FV(例如图2所示的512B(byte)的FV,甚至可能是1024byte的FV),则选数代价将会被进一步放大。
为解决将整个FV作为操作数的选数范围带来的选数代价大的问题,提出了一种从FV中提取部分PV作为VLIW的操作数的解决方案。该方案的大体思想是通过编译器将程序拆分成若干相互连接的小的程序块,然后在执行上一个程序块的时候会完成指定下一个程序块的入口,如此反复,程序会选择一条程序路径完成指定程序的处理。请参阅图3,图3为现有技术中的一种程序拆分示意图。如图3所示,图中每个圆圈表示一个程序块,程序块之间的连线表示程序路径。编译器针对每个待执行的指令中需要引用的源操作数和需要 写回的目的操作数,提前通过部分矢量构造(PV Builder,PVB)生成PV。然后,使用PV作为IE的源操作数和目的操作数的选数范围,完成程序块的执行后再将通过全范围矢量构造(FV Builder,FVB)将PV还原到FV。请参阅图4,图4为现有技术中的一种基于PV提取的指令处理示意图。如图4所示,FV为512byte,提取得到的PV只有128byte,可选地,提取得到的PV可以由128byte的通用寄存器组存储(例如一个通用寄存器可存储1byte的数据,则该通用寄存器组至少可包括128个通用寄存器,等等),如此一来,缩小了选数范围,降低了选数的逻辑代价。
该方案一的缺点:
1、需要增加PVB来从FV中提取PV,以及需要增加FVB来将PV还原成FV,由此会造成电路面积和功耗开销明显增加;
2、源操作数和目的操作数的访问类型可能包括直接访问和间接访问,如此一来,PV提取容易引起间接访问和直接访问通用寄存器之间的踩踏问题;
3、为减少PVB提取的代价和间接寻址的代价(PVB按照4个byte对齐提取段(segment)),间接寻址被迫仅支持1byte粒度的操作数,导致操作数大小为2byte的指令被迫拆成2条指令,从而降低了指令执行效率,并且增加了指令数量,也即增加了指令空间;
4、为节省指令空间以及增强cache命中率,需要硬件做基于全范围矢量FV-based的指令操作数到基于部分矢量PV-based指令操作数的翻译,进一步增加了硬件成本。
综上,上述现有技术中的方案一虽然通过PV提取缩小了选数范围,一定程度上降低了选数代价,但是也增加了成本,并带来了其余问题,例如上述增加指令空间,降低指令执行效率等等问题。没有真正意义上解决选数的逻辑代价问题,也无法保证指令的执行效率。因此,为了解决当前应用处理技术中不满足实际业务需求的问题,本发明实际要解决的技术问题包括如下方面:
1、基于原有的FV,缩小选数范围,减少选数代价,有效解决PV提取和PV还原引入的成本增加问题;请参阅图5,图5为本发明实施例提供的一种基于FV的指令处理示意图,如图5所示,基于原有的FV,在不增加PV提取和PV还原的前提下,约束源操作数和目的操作数的选数范围,降低数据选择的逻辑代价;
2、有效解决PV提取导致的间接访问和直接访问寄存器的踩踏问题;
3、有效节省指令空间以及增强cache命中率,并节省需要硬件做FV-based的指令操作数到PV-based的指令操作数的翻译的开销;
4、由于方案一中不同程序块(也即指令块(bundle))所对应提取的PV不同,因此指令块之间无法实现自由跳转,因而需为执行跳转指令实现不同指令块之间无约束的跳转,这种跳转可以有效解决需要专用分支加速进行程序跳转的代价。
基于上述处理器架构和处理器的流水线结构,本发明提供一种处理器。请参阅图6,图6为本发明实施例提供的一种处理器的结构示意图。该处理器10可以位于任意一个电子设备中,如电脑、计算机、手机、平板、个人数字助理、智能穿戴设备、智能车载或智能 家电等各类设备中。该处理器10具体可以是芯片或芯片组或搭载有芯片或者芯片组的电路板。该芯片或芯片组或搭载有芯片或芯片组的电路板可在必要的软件驱动下工作。
具体地,处理器10可以包括指令译码单元103、数据选择单元104,以及与所述数据选择单元连接的M行*N列寄存器组107,M行*N列寄存器组107中的每一个通用寄存器组可以包括K个通用寄存器,M、N和K为大于或者等于1的整数。其中,指令译码单元103与数据选择单元104连接,指令译码单元103运行在处理器10的指令译码流水线阶段,以完成对待执行的X条指令进行译码,提取该X条指令各自的至少一个源操作数地址(共计Y个源操作数地址),并将该Y个源操作数地址发送至数据选择单元104。X、Y为大于或者等于1的整数。其中,数据选择单元104运行在处理器10的数据选择流水线阶段,以完成根据源操作数地址从M行*N列寄存器组107中选择对应的通用寄存器,获取对应的源操作数。具体地,通过指令译码单元103得到的每一个源操作数地址中可以包括至少一个列地址位、至少一个行地址位和至少一个目标地址位。该至少一个列地址位可以用于指示该每一个源操作数地址所属的通用寄存器列,该至少一个行地址位用于指示每一个源操作数地址所属的通用寄存器行,该至少一个目标地址位用于指示每一个源操作数地址与该K个通用寄存器中的第t个通用寄存器的对应关系,t为大于或者等于1,且小于或者等于K的整数。例如M和N为4,K为2,也即划分有4行*4列通用寄存器组,每个通用寄存器组中可以包括2个通用寄存器,则每一个源操作数地址中可以包括2个列地址位、2个行地址位和1个目标地址位。例如,该2个列地址位数值可以为00、01、10或者11,其中,00可以指示该源操作数地址属于第1个通用寄存器列,01可以指示该源操作数地址属于第2个通用寄存器列,10可以指示该源操作数地址属于第3个通用寄存器列,11可以指示该源操作数地址属于第4个通用寄存器列,等等,此处不再进行赘述。可选地,若该Y个源操作数地址中的第i个源操作数地址中包括2个列地址位、2个行地址位和1个目标地址位,且其数值分别为10、11和1,则数据选择单元104可以根据该第i个源操作数地址中包括的该2个列地址位、2个行地址位和1个目标地址位在M行*N列通用寄存器组107中访问对应的通用寄存器。例如,数据选择单元104可以在第3个通用寄存器列中,访问第4个通用寄存器行内的第2个通用寄存器,以获取对应的源操作数;或者,在第4个通用寄存器行中,访问第3个通用寄存器列内的第2个通用寄存器,以获取对应的源操作数。i为大于或者等于1,且小于或者等于Y的整数。如此,可以基于预先划分的M行*N列寄存器组,以及源操作数地址中包括的至少一个列地址位、至少一个行地址位和至少一个目标地址位,针对每一个源操作数地址从该至少一个列地址位指示的通用寄存器列中选择对应的通用寄存器,或者从该至少一个行地址位指示的通用寄存器行中选择对应的通用寄存器,以获取对应的源操作数,从而实现缩小选数范围,减少选数的逻辑代价。
在一种可能的实现方式中,请参阅图7,图7为本发明实施例提供的又一种处理器的结构示意图。如图7所示,处理器10还可以包括指令存储器101、指令获取单元102、执行单元105和结果写回单元106。其中,如图7所示,指令存储器101、指令获取单元102、指令译码单元103、数据选择单元104、执行单元105和结果写回单元106可以依次连接;M行*N列寄存器组107分别与数据选择单元104以及结果写回单元106连接。其中,指令 获取单元102运行在处理器10的取指令流水线阶段,以完成从指令存储器101中获取待执行的X条指令,并可以对该X条指令进行校验。可选地,指令译码单元103可以对待执行的X条指令进行译码,提取该X条指令各自的至少一个源操作数地址,还可以提取该待执行的X条指令各自的目的操作数地址(共计X个目的操作数地址),以及命令类型、操作数类型和立即数等。可选地,指令译码单元103还可以对该X条指令分别进行合法性检查,等等。可选地,如上所述,通过指令译码得到的目的操作数地址中可以包括至少一个列地址位、至少一个行地址位和至少一个目标地址位。该至少一个列地址位可以用于指示该目的操作数地址所属的通用寄存器列,该至少一个行地址位可以用于指示该目的操作数地址所属的通用寄存器行,该至少一个目标地址位可以用于指示该目的操作数地址与该K个通用寄存器中的第t个通用寄存器的对应关系。其中,执行单元105可以包括如图7所示的多个算术逻辑单元(Arithmetic Logic Unit,ALU)(例如包括算术逻辑单元1051和算术逻辑单元1052,等等),可选地,还可以包括其他用于执行计算任务的单元,等等,本发明实施例对此不作具体限定。执行单元105运行在处理器10的执行流水线阶段,可以通过其中的算术逻辑单元完成指令的计算任务,得到对应的计算结果。可选地,基于VLIW架构,处理器10可以调用多个算术逻辑单元并行执行多条指令的任务,得到多条指令的计算结果,该X条指令可以为处理器在一拍内并行执行的指令。例如,X为4,也即一层(stage)内共有4条待执行的指令,则可以通过4个算术逻辑单元并行执行该4条指令的任务。其中,结果写回单元106运行在处理器10的写回流水线阶段,以完成根据目的操作数地址从该M行*N列寄存器组107中选择对应的通用寄存器,并将计算结果写回该对应的通用寄存器中。可选地,如上所述,例如,该X个目的操作数地址中的第j个目的操作数地址中包括2个列地址位、2个行地址位和1个目标地址位,且其数值分别为00、01和0,则结果写回单元107可以根据该第i个源操作数地址中包括的该2个列地址位、2个行地址位和1个目标地址位在M行*N列通用寄存器组107中访问对应的通用寄存器。例如,结果写回单元106可以在第1个通用寄存器列中,访问第2个通用寄存器行内的第1个通用寄存器,以将对应的计算结果写入该通用寄存器中;或者,在第2个通用寄存器行中,访问第1个通用寄存器列内的第1个通用寄存器。j为大于或者等于1,且小于或者等于X的整数。如此,可以基于预先划分的M行*N列寄存器组,以及目的操作数地址中包括的至少一个列地址位、至少一个行地址位和至少一个目标地址位,针对每一个目的操作数地址从该至少一个列地址位指示的通用寄存器列中选择对应的通用寄存器,或者从该至少一个行地址位指示的通用寄存器行中选择对应的通用寄存器,并将对应的计算结果写入该通用寄存器中,实现缩小选数范围,减少选数的逻辑代价。
需要说明的是,图7中所示意的连接关系并不对其之间的连接关系构成限制。此外,流水线结构可以依据每个处理器的结构不同而不同,因此,本发明中所指的流水线结构是指处理器10的流水线结构,而不对其他处理器的流水线结构作具体限定。
如上所述,例如,N为4,也即划分有8列通用寄存器组,并且M为8,也即划分有8行通用寄存器组,则每一个源操作数地址中可以包括2个列地址位和3个行地址位。比如,该3个行地址位的数值可以为000、001、010、011、100、101、110或者111,其中,000 可以指示该源操作数地址属于第1个通用寄存器行,001可以指示该源操作数地址属于第2个通用寄存器行,010可以指示该源操作数地址属于第3个通用寄存器行,111可以指示该源操作数地址属于第8个通用寄存器行,等等,此处不再进行赘述。又例如,K为2,也即每一个通用寄存器组内包括2个通用寄存器,则每一个源操作数地址中可以包括1个目标地址位,该1个目标地址位的数值可以为0或者1,其中,0可以指示该源操作数地址对应于通用寄存器组内的第1个通用寄存器,1可以指示该源操作数地址对应于通用寄存器组内的第2个通用寄存器。由此,通过M行*N列寄存器组的划分,以及源操作数地址中包括的列地址位、行地址位以及目标地址位,可以实现缩小选数范围,并最终确定对应的通用寄存器,从而无需额外增加PV提取和PV还原的硬件成本就可以达到缩小选数范围,减少选数代价的目的。例如,该Y个源操作数地址中的第1个源操作数地址中共包括6个地址位,其中包括2个列地址位、3个行地址位和1个目标地址位,且其数值分别01、100和0(也即该第1个源操作数地址可以为011000),则数据选择单元104可以根据该第1个源操作数地址中包括的该2个列地址位、3个行地址位和1个目标地址位,在第2个通用寄存器列的第5个通用寄存器行中访问该寄存器组内的第1个通用寄存器(也即该地址为011000的源操作数地址对应第2列第5行通用寄存器组中的第2个通用寄存器),以获取对应的源操作数,或者在第5个通用寄存器行的第2个通用寄存器列中访问该寄存器组内的第1个通用寄存器,以获取对应的源操作数。
如上所述,同理,例如N为4,M为8,K为2,也即划分由M行*N列通用寄存器组,每个通用寄存器组中可以包括2个通用寄存器,则每一个目的操作数地址中可以包括2个列地址位、3个行地址位和1个目标地址位。例如,该3个行地址位数值可以为000、001、010、011、100、101、110或者111,其中,000可以指示该目的操作数地址属于第1个通用寄存器行,001可以指示该目的操作数地址属于第2个通用寄存器行,010可以指示该目的操作数地址属于第3个通用寄存器行,111可以指示该目的操作数地址属于第8个通用寄存器行,等等,此处不再进行赘述。例如,该1个目标地址位的数值可以为0或者1,其中,0可以指示该目的操作数地址对应于通用寄存器组内的第1个通用寄存器,1可以指示该目的操作数地址对应于通用寄存器组内的第2个通用寄存器。由此,通过M行*N列寄存器组的划分,以及目的操作数地址中包括的列地址位、行地址位以及目标地址位,可以实现缩小选数范围,并最终确定对应的通用寄存器,从而无需额外增加PV提取和PV还原的硬件成本就可以达到缩小选数范围,减少选数代价的目的。例如,该X个目的操作数地址中的第3个目的操作数地址中共包括6个地址位,其中包括2个列地址位、3个行地址位和1个目标地址位,且其数值分别01、100和0(也即该第3个目的操作数地址可以为011000),则结果写回单元106可以根据该第3个目的操作数地址中包括的该2个列地址位、3个行地址位和1个目标地址位,在第2个通用寄存器列的第5个通用寄存器行中访问该寄存器组内的第1个通用寄存器(也即该地址为011000的目的操作数地址对应第2列第5行通用寄存器组中的第2个通用寄存器),或者在第5个通用寄存器行的第2个通用寄存器列中访问该寄存器组内的第1个通用寄存器,以将对应的计算结果写入该通用寄存器中。
可选地,为了进一步减少选数代价,可以约束每列寄存器中一次选数只能选出2byte的数据出来(也即只选出一个大小为2byte的操作数),因此,上述Y个源操作数地址中的任意两个不同的源操作数地址需属于不同的通用寄存器列。显然,若任意两个不同的源操作数地址属于同一通用寄存器列,则该通用寄存器列一次需要至少选出两个不同的源操作数,也即4byte的数据,增大了选数的逻辑代价。可选地,可以通过编译器实现将属于同一通用寄存器列的不同源操作数地址对应的指令放在不同层进行处理,从而避免上述同一通用寄存器列一次选出多个不同源操作数的选数冲突,减少选数的逻辑代价。同理,上述X个目的操作数地址中的任意两个不同的目的操作数地址也需属于不同的通用寄存器列,若任意两个不同的目的操作数地址属于同一通用寄存器列,则该通用寄存器列一次需要至少选出两个不同的源操作数,也即4byte的数据,增大了选数的逻辑代价。等等,此处不再进行赘述。
可选地,为了进一步减少选数代价,可以约束上述Y个源操作数地址、X个目的操作数地址的访问类型均为直接访问或者均为间接访问。需要说明的是,由于直接访问可以直接知晓操作数地址,而间接访问是一个基址加上一个变量后最终才能得到操作数地址,因此往往会导致间接访问最终得到的操作数地址很有可能与直接访问的操作数地址不同,但是两者属于同一通用寄存器列。如此,对于同一个通用寄存器列来说,一次则需要选择两个不同的通用寄存器,以读取两个不同源操作数,或者写入两个不同指令的计算结果,这将会大大增加选数的逻辑代价。然而,若约束操作数地址均为直接访问,则可以根据前述的约束规则,通过编译器将操作数地址不同但属于同一通用寄存器列的指令放在不同层进行处理;或者,若约束操作数地址均为间接访问,则可以根据前述的约束规则,通过编译器根据间接访问的基址之间始终存在的差异值,将操作数地址不同但属于同一通用寄存器列的指令放在不同层进行处理。综上,可选地,可以通过约束同一层的同一操作数(例如下述图9所示的src1)均为直接访问或者均为间接访问,避免编译器无法识别直接访问和间接访问的列冲突问题。可以理解的是,只有当编译器识别到列冲突,才能根据依赖合理map指令以解决选数时的列冲突问题。因此,禁止在同一层内的同一操作数同时使用直接访问和间接访问的目的是为了编译器能识别列冲突。从而可以提前规避在同一通用寄存器列中一次需要选择两个不同的通用寄存器的情况,减少选数的逻辑代价。
如上所述,本发明实施例为减少数据选择代价,对现有的通用寄存器进行了划分,得到M行*N列寄存器组107,其中,每一个通用寄存器组可以包括至少一个通用寄存器。从而使得处理器可以基于源操作数地址以及目的操作数地址中包括的至少一个列地址位,从该至少一个列地址位对应的通用寄存器列中,根据其余的行地址位以及目标地址位选择对应的通用寄存器;或者基于源操作数地址以及目的操作数地址中包括的至少一个行地址位,从该至少一个行地址位对应的通用寄存器行中,根据其余的列地址位以及目标地址位选择对应的通用寄存器。实现针对每一个源操作数地址以及目的操作数地址,缩小了其选数范围,大大减小了选数代价。
可选地,请参阅图8a-图8e,图8a-图8e为本发明实施例提供的一种通用寄存器的划分方式示意图。如图8a-图8e所示,可以将FV(也即全部的通用寄存器)以K byte粒度交织 的方式分成N个堆(Bank),也即上述的分成N列。然后,基于Bank维度约束ALU的选数范围以减少选数代价的。其中,交织粒度K一般与ALU操作数的大小保持一致,以便于处理器可以在一个通用寄存器组中取出所需的源操作数(例如指令中源操作数的大小为2byte,则交织粒度K可以为2byte,也即每一个通用寄存器组包括2个通用寄存器,通常每一个通用寄存器可以存储1byte的数据)。其中,Bank数N一般可以与VLIW的大小保持一致(或者说与每层包括的指令数量保持一致),也即与处理器一拍并行处理的指令的数量保持一致,以便于处理器可以针对多条指令各自的源操作数,在Bank中选择相应的通用寄存器,例如指令1的源操作数可以属于Bank0,指令2的源操作数可以属于Bank2,等等,从而减少在多条指令选择同一Bank时产生的选数冲突。例如处理器一拍(也即一个时钟周期)可以并行处理4条指令,则N可以为4,也即将通用寄存器划分成4个Bank。可选地,在一些可能的实施方式中,交织粒度K也可以不与操作数的大小保持一致,例如当操作数的大小为2byte,该交织粒度也可以为1,也即每个通用寄存器组中可以包括1个通用寄存器,或者该交织粒度K可以为4,也即每个通用寄存器组中可以包括4个通用寄存器,等等,本发明实施例对此不作具体限定。可选地,在一些可能的实施方式中,Bank数N也可以大于处理器一拍并行处理的指令的数量,例如处理器一拍可以并行处理4条指令,则N也可以为8,也即将通用寄存器划分成8个Bank,从而可以进一步减少在同一Bank的选数冲突,等等,本发明实施例对此不作具体限定。
可选地,以512byte的FV为例,也即以总共512个通用寄存器(R0-R511)为例(FV主要以通用寄存器为主,和其他的寄存器组成,比如状态寄存器等等,此处以通用寄存器为例,本发明实施例对此不作具体限定),结合图8a-图8e,对本发明实施例所涉及的通用寄存器的划分方式,以及选数方法进行进一步的阐述。
可选地,如图8a所示,以K等于2,N等于4为例,将FV多Bank化,显然,该划分方式以K*N=8为周期,将512个通用寄存器以“Z”字形交织地划分到对应的Bank。如图8a所示,可以将通用寄存器R0-R1、R8-R9、R16-R17……R504-R505划分到Bank0;将R2-R3、R10-R11、R18-R19……R506-R507划分到Bank1;将R4-R5、R12-R13、R20-R21……R508-R509划分到Bank2;将R6-R7、R14-R15、R22-R23……R510-R511划分到Bank3。R0至R511中的每一个通用寄存器可以存储有1byte的数据,可选地,R0等也可记作R0b,其中b表示8bit,也即1byte。如此,如上所述,该512个通用寄存器被划分成4个Bank(也即4列),每个Bank包括64行通用寄存器组,每个通用寄存器组包括2个通用寄存器。在该情况下,显然,由于2 9=512,因此源操作数地址和目的操作数地址均可以包括至少9个地址位,其中可以包括2个列地址位,用于指示所属的Bank,还可以包括6个行地址位,用于指示所属的通用寄存器行,还可以包括1个目标地址位,用于指示该源操作数地址或者该目的操作数地址为该通用寄存器组中的第几个通用寄存器。例如,以源操作数地址为例,该源操作数地址的高2位可以为列地址位,最低1位可以为目标地址位,中间6位可以为行地址位。可选地,该源操作数地址的高6位可以为行地址位,最低1位可以为目标地址位,中间2位可以为列地址位,又或者,该源操作数地址的高1位可以为目标地址位,最低2位可以为列地址位,中间6位可以为行地址位,等等,本发明实施例对此不作具体限定。可选地,以高2位为列地址位,最低1位为目标地址位,中间 6位为行地址位为例,比如该源操作数地址为000000000,则可以确定该源操作地址属于Bank0,通过在Bank0中访问第1行通用寄存器组中的第1个通用寄存器(也即如图8a所示的通用寄存器R0),可以获取对应的源操作数。又比如,该源操作数地址为100000001,则可以确定该源操作地址属于Bank2,通过在Bank2中访问第一行通用寄存器组中的第2个通用寄存器(也即如图8a所示的通用寄存器R5),可以获取对应的源操作数,等等,此处不再进行赘述。可选地,若源操作数的大小与交织粒度K保持一致,也即源操作数的大小也为2byte的情况下,属于同一Bank内的连续2byte的地址可以认为是相同地址,例如源操作数地址000000000以及000000001,可以认为是相同地址,也即如图8a所示的R0和R1可以认为是相同地址,处理器在根据源操作数地址000000000或者000000001获取相应的源操作数是,均是读取R0以及R1中的数据,从而获得2byte的源操作数。又或者,R0h和R0、R0h和R1也可以认为是相同地址,由于R0h中的h表示16bit,也即2byte,则R0h为R0+R1,因此,两者均是读取R0以及R1中的数据,从而获得2byte的源操作数。如上所述,同理,目的操作数地址中的高2位也可以为列地址位,最低1位可以为目标地址位,中间6位可以为行地址位。比如该目的操作数地址为111111110,则可以确定该目的操作地址属于Bank3,通过在Bank3中访问第64行通用寄存器组中的第1个通用寄存器(也即如图8a所示的通用寄存器R510),可以将对应的计算结果写回该通用寄存器R510中。又比如,该目的操作数地址为110000001,则可以确定该源操作地址属于Bank3,通过在Bank3中访问第1行通用寄存器组中的第2个通用寄存器(也即如图8a所示的通用寄存器R7),可以将对应的计算结果写回该通用寄存器R7中,等等,此处不再进行赘述。
可选地,如图8b所示,以K等于4,N等于4为例,将FV多Bank化,显然,该划分方式以K*N=16为周期,将512个通用寄存器以“Z”字形交织地划分到对应的Bank。如图8b所示,可以将通用寄存器R0-R3、R16-R19、R32-R35……R496-R499划分到Bank0;将R4-R7、R20-R23、R36-R39……R500-R503划分到Bank1;将R8-R11、R24-R27、R40-R43……R504-R507划分到Bank2;将R12-R15、R28-R31、R44-R47……R508-R511划分到Bank3。如上所述,该512个通用寄存器被划分成4个Bank(也即4列),每个Bank包括32行通用寄存器组,每个通用寄存器组包括4个通用寄存器。如此,同理,源操作数地址和目的操作数地址均可包括9个地址位,其中可以包括2个列地址位,用于指示所属的Bank,还可以包括5个行地址位,用于指示所属的通用寄存器行,还可以包括2个目标地址位,用于指示该源操作数地址或者该目的操作数地址为该通用寄存器组中的第几个通用寄存器。例如,以源操作数地址为例,该源操作数地址的高2位可以为列地址位,最低2位可以为目标地址位,中间5位可以为行地址位。可选地,该源操作数地址的高5位可以为行地址位,最低2位可以为目标地址位,中间2位可以为列地址位,等等,本发明实施例对此不作具体限定。可选地,以高2位为列地址位,最低2位为目标地址位,中间5位为行地址位为例,比如该源操作数地址为100000011,则可以确定该源操作地址属于Bank2,通过在Bank2中访问第一行通用寄存器组中的第4个通用寄存器(也即如图8b所示的通用寄存器R11),可以获取对应的源操作数。又比如,该源操作数地址为100000110,则可以确定该源操作地址属于Bank2,通过在Bank2中访问第二行通用寄存器组中的第3个通用寄存器(也即如图8b所示的通用寄存器R26),可以获取对应的源操作数。可选地, 可以参考上述图8a对应的实施例,此处不再进行赘述。
可选地,如图8c所示,以K等于2,N等于2为例,将FV多Bank化,显然,该划分方式以K*N=4为周期,将512个通用寄存器以“Z”字形交织地划分到对应的Bank。如图8c所示,可以将通用寄存器R0-R1、R4-R5、R8-R9……R508-R509划分到Bank0;将R2-R3、R6-R7、R10-R11……R510-R511划分到Bank1。如上所述,该512个通用寄存器被划分成2个Bank(也即2列),每个Bank包括128行通用寄存器组,每个通用寄存器组包括2个通用寄存器。如此,同理,源操作数地址和目的操作数地址均可包括9个地址位,其中可以包括1个列地址位,用于指示所属的Bank,还可以包括7个行地址位,用于指示所属的通用寄存器行,还可以包括1个目标地址位,用于指示该源操作数地址或者该目的操作数地址为该通用寄存器组中的第几个通用寄存器。例如,以源操作数地址为例,该源操作数地址的最高1位可以为列地址位,最低1位可以为目标地址位,中间7位可以为行地址位。比如该源操作数地址为100000001,则可以确定该源操作地址属于Bank1,通过在Bank1中访问第一行通用寄存器组中的第2个通用寄存器(也即如图8c所示的通用寄存器R3),可以获取对应的源操作数。又比如,该源操作数地址为10000010,则可以确定该源操作地址属于Bank1,通过在Bank1中访问第2行通用寄存器组中的第1个通用寄存器(也即如图8c所示的通用寄存器R6),可以获取对应的源操作数。可选地,可以参考上述图8a对应的实施例,此处不再进行赘述。
可选地,其他可能的划分方式可以参考图8d以及图8e。如图8d所示,以K*N=8为周期,将512个通用寄存器以“Z”字形交织地划分到2个Bank中,每个Bank包括64行通用寄存器组,每个通用寄存器组可以包括4个通用寄存器。如图8e所示,以K*N=16为周期,将512个通用寄存器以“Z”字形交织地划分到8个Bank中,每个Bank包括32行通用寄存器组,每个通用寄存器组可以包括2个通用寄存器,等等,此处不再进行赘述。
可选地,若FV为1024byte,以K等于2,N等于4为例,将FV多Bank化,该1024个通用寄存器可以被划分成4个Bank(也即4列),每个Bank包括128行通用寄存器组,每个通用寄存器组包括2个通用寄存器。则源操作数地址和目的操作数地址均可以包括至少10个地址位,其中可以包括2个列地址位,7个行地址位和1个目标地址位,等等,此处不再进行赘述。
可选地,划分Bank的方式可以不限于上述图8a-图8e所示的“Z”字形交织的划分方式,在一些可能的实现方式中,可以将连续的地址划分到每个Bank中,例如,以512byte的FV,且Bank数N等于4为例,则可以将R0-R127划分到Bank0,将R128-R255划分到Bank1,R256-R382划分到Bank2,R383-R511划分到Bank3,等等,本发明实施例对此不作具体限定。
请参阅图9,图9为本发明实施例提供的一种数据选择的示意图。其中,算术逻辑单元ALU主要完成对二进制数据的算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。数学运算例如加、减、乘、除,以及逻辑运算例如“OR、AND、ASL,ROL”等指令都在算术逻辑单元ALU中执行。如图9所示,一条指令可以包括两个源操作数,例如算术逻辑单元ALU0可以用于执行指令0的任务,可以包括src1与src2两个源操作数(比如 可以对src1与src2两个源操作数进行相加或者相减运算等等),又例如ALU1可以用于执行指令1的任务,可以包括src1与src2两个源操作数,还例如ALU2可以用于执行指令2的任务,可以包括src1与src2两个源操作数,还例如ALU3可以用于执行指令3的任务,可以包括src1与src2两个源操作数。其中,指令0、指令1、指令2和指令3可以为VLIW架构下相同层的4条指令。其中,每条指令的两个源操作数(比如图9所示的ALU0的src1和src2,ALU1的src1和src2,ALU2的src1和src2,以及ALU3的src1和src2)之间可以互相独立,不受上述约束规则的约束。如此,虽然不同ALU的相同源操作数不可以访问同一Bank内的不同通用寄存器(例如,以图8a所示的划分方式为例,ALU0的src1以及ALU1的src1不可以访问Bank0的不同通用寄存器,比如R0以及R8),但是,不同ALU或者相同ALU的不同源操作数访问Bank没有约束。例如,ALU0的src1以及ALU0的src2可以访问同一Bank内的不同通用寄存器,比如图8a所示的Bank0内的R0以及R8,或者ALU0的src1以及ALU1的src2也可以访问同一Bank内的不同通用寄存器,比如图8a所示的Bank1内的R10以及R11,等等,此处不再进行赘述。由于src1与src2之间的独立性,不受上述约束规则的约束,从而可以一定程度上减少约束规则带来的指令执行效率降低的问题。可选地,如上所述,由于指令0、指令1、指令2和指令3为相同层的4条指令,因此需要受到上述选数约束规则的约束,避免一次在同一Bank中选择多个不同源操作数带来的选数逻辑代价的增大,基于此,可以理解的是,不同层的指令的源操作数访问Bank不受约束。例如,指令4为下一层的指令,与指令0、指令1、指令2和指令3处于不同层,因此,在处理器进行下一层指令处理时,上一层中指令0、指令1、指令2和指令3已完成对相应Bank的访问,获取了计算所需的源操作数,则指令4的src1或者src2对Bank的访问与上一层指令0、指令1、指令2和指令3之间不会产生冲突。同样的,由于不同ALU或者相同ALU的不同源操作数访问Bank没有约束,因此,不同ALU或者相同ALU的不同源操作数也可以为任意的访问类型,比如ALU0的src1可以为直接访问,ALU0的src2可以为间接访问,又比如,ALU1的src2可以为直接访问,ALU3的src1可以为间接访问,等等,此处不再进行赘述。
请参阅图10,图10为本发明实施例提供的一种结果写回的示意图。如图10所示,每条指令可以包括一个目的操作数,在写回流水线阶段,ALU0、ALU1、ALU2和ALU3可以将各自得到的计算结果根据各自的目的操作数地址写回对应的通用寄存器中。如上所述,同理,由于指令0、指令1、指令2和指令3为相同层的4条指令,因此需要受到上述选数约束规则的约束,避免一次在同一Bank中选择多个不同目的操作数(也即多个不同目的操作数地址对应的通用寄存器)带来的选数逻辑代价的增大,但是,不同层的指令的目的操作数访问Bank不受约束,并且对不同层的指令的目的操作数的访问类型也不作约束,具体可参考上述图9对应的实施例,此处不在进行赘述。可选地,若不同指令的目的操作数为相同地址,也即不同指令的目的操作数地址相同,则在将计算结果写回通用寄存器时,可以支持写后写(Write After Write,WAW)模式,将逻辑上后执行的指令的目的操作数作为最后操作的目的操作数,也即后写入的可以覆盖掉之前写入的。例如,ALU0、ALU1、ALU2和ALU3的目的操作数地址均为R0,并且,ALU3在ALU0、ALU1和ALU2之后将指令3 的计算结果写入R0,则R0中最终保存指令3的计算结果。
可选地,为缓解增加了上述约束规则导致的处理数据相关性时指令执行效率下降的问题,本发明实施例中的处理器10还可以包括一个或多个临时寄存器(Temporary Register,T)(图7中未示出),该一个或多个临时寄存器可以被全部的ALU(例如图9所示的ALU0、ALU1、ALU2和ALU3)同时可见,不受任何约束规则的约束。同时,临时寄存器仅对编译器(Compiler)可见,对程序员(Programer)是不可见的,可以用于提升指令利用率,编译器可以将需要频繁引用和更新的通用寄存器使用临时寄存器替代。
例如,以图8a以及图9为例,在同一层的4条指令中,若ALU0的src1需要访问Bank0中的R0,ALU1的src1需要访问Bank0中的R8,并且ALU2的src1需要访问Bank0中的R8,同时ALU3的src1也需要访问Bank0中的R8,如此,依照上述同一层中不同指令的相同源操作数(例如src1)不可访问同一Bank的不同通用寄存器的约束规则,该指令1、指令2和指令3无法与指令0处于同一层进行处理,只能在这一层插空指令并将指令1、指令2和指令3移至下一层进行处理,如此,由于空指令的插入,大大降低了指令利用率以及指令的执行效率。在此情况下,也即知晓R8会被频繁访问引用的情况下,可以在指令0、指令1、指令2和指令3的上一层中,将R8用一个临时寄存器T0替代,该T0中可以存储有R8的数据,并且与R8对应。如此,在指令1、指令2和指令3根据源操作数地址进行数据选择时,均可以直接访问对应的T0,以获取源操作数,从而不受约束规则的约束,保证了指令的利用率和执行效率。
又例如,以图8a以及图10为例,在同一层的4条指令中,若ALU0的dst1需要访问Bank1中的R2,ALU1的src1需要访问Bank1中的R10,并且ALU2的src1需要访问Bank1中的R10,同时ALU3的src1也需要访问Bank1中的R10。如此,同理,在知晓R10会被频繁访问引用的情况下,可以在指令0、指令1、指令2和指令3的上一层中,将R10用一个临时寄存器T1替代,该T1中可以存储有R10的数据,并且与R10对应。如此,在指令1、指令2和指令3根据目的操作数地址进行计算结果的写回时,均可以直接访问对应的T1,并将各自的计算结果写入T1中,不受约束规则的约束,保证了指令的利用率和执行效率。
需要说明的是,本发明实施例可应用于任何多条指令并行处理的芯片,设备或者装置,并且不限于其实现模式是硬件还是软件。
请参阅图11,图11为本发明实施例提供的一种处理方法的流程示意图,该处理方法,应用于处理器,该处理器包括数据选择单元、与所述数据选择单元连接的指令译码单元和M行*N列通用寄存器组,所述M行*N列通用寄存器组中的每一个通用寄存器组包括K个通用寄存器;M、N和K为大于或者等于1的整数;且该处理方法适用于上述图1-图3中的任意一种处理器以及包含所述处理器的设备(如手机、电脑、服务器等)。该方法可以包括以下步骤S201-步骤S202,其中,
步骤S201,通过所述指令译码单元,对输入的X条指令进行译码,获取所述X条指令各自的至少一个源操作数地址,共计Y个源操作数地址;并将所述Y个源操作数地址发 送至所述数据选择单元;所述Y个源操作数地址中的每一个源操作数地址中包括至少一个列地址位、至少一个行地址位和至少一个目标地址位;所述至少一个列地址位用于指示所述每一个源操作数地址所属的通用寄存器列,所述至少一个行地址位用于指示所述每一个源操作数地址所属的通用寄存器行;所述至少一个目标地址位用于指示所述每一个源操作数地址与所述K个通用寄存器中的第t个通用寄存器的对应关系;X、Y和t为大于或者等于1的整数;
步骤S202,通过所述数据选择单元,根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,获取对应的源操作数;所述第i个源操作数地址为所述Y个源操作数地址中的一个;i为大于或者等于1,且小于或者等于Y的整数。
在一种可能的实现方式中,所述处理器还包括与所述数据选择单元连接的执行单元,所述执行单元包括至少一个算术逻辑单元;所述方法还包括:
通过所述至少一个算术逻辑单元,基于所述Y个源操作数地址各自对应的所述源操作数执行所述X条指令,得到所述X条指令各自的计算结果。
在一种可能的实现方式中,所述处理器还包括与所述执行单元连接的结果写回单元;所述方法还包括:
通过所述指令译码单元,获取所述X条指令各自的目的操作数地址,共计X个目的操作数地址;所述X个目的操作数地址中的每一个目的操作数地址中包括所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位;所述至少一个列地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器列,所述至少一个行地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器行;所述至少一个目标地址位用于指示所述每一个目的操作数地址与所述K个通用寄存器中的所述第t个通用寄存器的对应关系;
通过所述结果写回单元,根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,并将第j条指令的所述计算结果写回所述第j个目的操作数地址对应的所述通用寄存器中;j为大于或者等于1,且小于或者等于X的整数。
在一种可能的实现方式中,所述通过所述数据选择单元,根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,包括:
通过所述数据选择单元,根据所述第i个源操作数地址中包括的所述至少一个列地址位,确定所述第i个源操作数地址所属的第i’个通用寄存器列,并在所述第i’个通用寄存器列中,根据所述第i个源操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i’为大于或者等于1,且小于或者等于N的整数;或者,
通过所述数据选择单元,根据所述第i个源操作数地址中包括的所述至少一个行地址位,确定所述第i个源操作数地址所属的第i”个通用寄存器行,并在所述第i”个通用 寄存器行中,根据所述第i个源操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i”为大于或者等于1,且小于或者等于M的整数。
在一种可能的实现方式中,所述通过所述结果写回单元,根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,包括:
通过所述结果写回单元,根据所述第j个目标操作数地址中包括的所述至少一个列地址位,确定所述第j个目标操作数地址所属的第j’个通用寄存器列,并在所述第j’个通用寄存器列中,根据所述第j个目标操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j’为大于或者等于1,且小于或者等于N的整数;或者,
通过所述结果写回单元,根据所述第j个目标操作数地址中包括的所述至少一个行地址位,确定所述第j个目标操作数地址所属的第j”个通用寄存器行,并在所述第j”个通用寄存器行中,根据所述第j个目标操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j”为大于或者等于1,且小于或者等于M的整数。
在一种可能的实现方式中,所述Y个源操作数地址中的任意两个不同的源操作数地址属于不同的所述通用寄存器列;所述X个目的操作数地址中的任意两个不同的目的操作数地址属于不同的所述通用寄存器列。
在一种可能的实现方式中,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述Y个源操作数地址中包括多个相同的数量大于第一阈值的第一源操作数地址,以及第二源操作数地址;所述第一源操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二源操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述方法还包括:
通过所述数据选择单元,根据所述第一源操作数地址访问对应的所述临时寄存器,获取对应的源操作数;
在一种可能的实现方式中,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述X个目的操作数地址中包括多个相同的数量大于第一阈值的第一目的操作数地址,以及第二目的操作数地址;所述第一目的操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二目的操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述方法还包括:
通过所述结果写回单元,根据所述目标目的操作数地址访问对应的所述临时寄存器,并将对应的所述计算结果写回所述临时寄存器中。
在一种可能的实现方式中,所述处理器还包括与所述指令译码单元连接的指令获取单元;所述方法还包括:
通过所述指令获取单元,获取待执行的所述X条指令,并将所述X条指令发送至所述 指令译码单元;所述X条指令为所述处理器在一个时钟周期内并行执行的指令。
在一种可能的实现方式中,所述Y个源操作数地址以及所述X个目的操作数地址的访问类型均为直接访问类型或者均为间接访问类型。
需要说明的是,本发明实施例中所描述的处理方法的具体流程,可参见上述图1-图10中所述的发明实施例中的相关描述,此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序被处理器执行时,使得所述处理器可以执行上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被多核处理器执行时,使得所述处理器可以执行上述方法实施例中记载的任意一种的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器 (Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (22)

  1. 一种处理器,其特征在于,包括数据选择单元、与所述数据选择单元连接的指令译码单元和M行*N列通用寄存器组,所述M行*N列通用寄存器组中的每一个通用寄存器组包括K个通用寄存器;M、N和K为大于或者等于1的整数;其中,
    所述指令译码单元,用于对输入的X条指令进行译码,获取所述X条指令各自的至少一个源操作数地址,共计Y个源操作数地址;并将所述Y个源操作数地址发送至所述数据选择单元;所述Y个源操作数地址中的每一个源操作数地址中包括至少一个列地址位、至少一个行地址位和至少一个目标地址位;所述至少一个列地址位用于指示所述每一个源操作数地址所属的通用寄存器列,所述至少一个行地址位用于指示所述每一个源操作数地址所属的通用寄存器行;所述至少一个目标地址位用于指示所述每一个源操作数地址与所述K个通用寄存器中的第t个通用寄存器的对应关系;X、Y和t为大于或者等于1的整数;
    所述数据选择单元,用于根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,获取对应的源操作数;所述第i个源操作数地址为所述Y个源操作数地址中的一个;i为大于或者等于1,且小于或者等于Y的整数。
  2. 根据权利要求1所述的处理器,其特征在于,所述处理器还包括与所述数据选择单元连接的执行单元,所述执行单元包括至少一个算术逻辑单元;
    所述至少一个算术逻辑单元,用于基于所述Y个源操作数地址各自对应的所述源操作数执行所述X条指令,得到所述X条指令各自的计算结果。
  3. 根据权利要求2所述的处理器,其特征在于,所述处理器还包括与所述执行单元连接的结果写回单元;其中,
    所述指令译码单元,还用于获取所述X条指令各自的目的操作数地址,共计X个目的操作数地址;所述X个目的操作数地址中的每一个目的操作数地址中包括所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位;所述至少一个列地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器列,所述至少一个行地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器行;所述至少一个目标地址位用于指示所述每一个目的操作数地址与所述K个通用寄存器中的所述第t个通用寄存器的对应关系;
    所述结果写回单元,用于根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,并将第j条指令的所述计算结果写回所述第j个目的操作数地址对应的所述通用寄存器中;j为大于或者等于1,且小于或者等于X的整数。
  4. 根据权利要求1所述的处理器,其特征在于,所述数据选择单元,具体用于:
    根据所述第i个源操作数地址中包括的所述至少一个列地址位,确定所述第i个源操作数地址所属的第i’个通用寄存器列,并在所述第i’个通用寄存器列中,根据所述第i个源操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i’为大于或者等于1,且小于或者等于N的整数;或者,
    根据所述第i个源操作数地址中包括的所述至少一个行地址位,确定所述第i个源操作数地址所属的第i”个通用寄存器行,并在所述第i”个通用寄存器行中,根据所述第i个源操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i”为大于或者等于1,且小于或者等于M的整数。
  5. 根据权利要求3所述的处理器,其特征在于,所述结果写回单元,具体用于:
    根据所述第j个目标操作数地址中包括的所述至少一个列地址位,确定所述第j个目标操作数地址所属的第j’个通用寄存器列,并在所述第j’个通用寄存器列中,根据所述第j个目标操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j’为大于或者等于1,且小于或者等于N的整数;或者,
    根据所述第j个目标操作数地址中包括的所述至少一个行地址位,确定所述第j个目标操作数地址所属的第j”个通用寄存器行,并在所述第j”个通用寄存器行中,根据所述第j个目标操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j”为大于或者等于1,且小于或者等于M的整数。
  6. 根据权利要求3述的处理器,其特征在于,所述Y个源操作数地址中的任意两个不同的源操作数地址属于不同的所述通用寄存器列;所述X个目的操作数地址中的任意两个不同的目的操作数地址属于不同的所述通用寄存器列。
  7. 根据权利要求3所述的处理器,其特征在于,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述Y个源操作数地址中包括多个相同的数量大于第一阈值的第一源操作数地址,以及第二源操作数地址;所述第一源操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二源操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;
    所述数据选择单元,还用于根据所述第一源操作数地址访问对应的所述临时寄存器,获取对应的源操作数。
  8. 根据权利要求3所述的处理器,其特征在于,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述X个目的操作数地址中包括多个相同的数量大于第一阈值的第一目的操作数地址,以及第二目的操作数地址;所述第一目的操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二目的操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;
    所述结果写回单元,还用于根据所述目标目的操作数地址访问对应的所述临时寄存器,并将对应的所述计算结果写回所述临时寄存器中。
  9. 根据权利要求1-8任意一项所述的处理器,其特征在于,所述处理器还包括与所述指令译码单元连接的指令获取单元;其中,
    所述指令获取单元,用于获取待执行的所述X条指令,并将所述X条指令发送至所述指令译码单元;所述X条指令为所述处理器在一个时钟周期内并行执行的指令。
  10. 根据权利要求1-9任意一项所述的处理器,其特征在于,所述Y个源操作数地址以及所述X个目的操作数地址的访问类型均为直接访问类型或者均为间接访问类型。
  11. 一种处理方法,应用于处理器,其特征在于,所述处理器包括数据选择单元、与所述数据选择单元连接的指令译码单元和M行*N列通用寄存器组,所述M行*N列通用寄存器组中的每一个通用寄存器组包括K个通用寄存器;M、N和K为大于或者等于1的整数;所述方法包括:
    通过所述指令译码单元,对输入的X条指令进行译码,获取所述X条指令各自的至少一个源操作数地址,共计Y个源操作数地址;并将所述Y个源操作数地址发送至所述数据选择单元;所述Y个源操作数地址中的每一个源操作数地址中包括至少一个列地址位、至少一个行地址位和至少一个目标地址位;所述至少一个列地址位用于指示所述每一个源操作数地址所属的通用寄存器列,所述至少一个行地址位用于指示所述每一个源操作数地址所属的通用寄存器行;所述至少一个目标地址位用于指示所述每一个源操作数地址与所述K个通用寄存器中的第t个通用寄存器的对应关系;X、Y和t为大于或者等于1的整数;
    通过所述数据选择单元,根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,获取对应的源操作数;所述第i个源操作数地址为所述Y个源操作数地址中的一个;i为大于或者等于1,且小于或者等于Y的整数。
  12. 根据权利要求11所述的方法,其特征在于,所述处理器还包括与所述数据选择单元连接的执行单元,所述执行单元包括至少一个算术逻辑单元;所述方法还包括:
    通过所述至少一个算术逻辑单元,基于所述Y个源操作数地址各自对应的所述源操作数执行所述X条指令,得到所述X条指令各自的计算结果。
  13. 根据权利要求12所述的方法,其特征在于,所述处理器还包括与所述执行单元连接的结果写回单元;所述方法还包括:
    通过所述指令译码单元,获取所述X条指令各自的目的操作数地址,共计X个目的操作数地址;所述X个目的操作数地址中的每一个目的操作数地址中包括所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位;所述至少一个列地址位用于指示所述每一个目的操作数地址所属的所述通用寄存器列,所述至少一个行地址位用于指示 所述每一个目的操作数地址所属的所述通用寄存器行;所述至少一个目标地址位用于指示所述每一个目的操作数地址与所述K个通用寄存器中的所述第t个通用寄存器的对应关系;
    通过所述结果写回单元,根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,并将第j条指令的所述计算结果写回所述第j个目的操作数地址对应的所述通用寄存器中;j为大于或者等于1,且小于或者等于X的整数。
  14. 根据权利要求11所述的方法,其特征在于,所述通过所述数据选择单元,根据第i个源操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第i个源操作数地址对应的通用寄存器,包括:
    通过所述数据选择单元,根据所述第i个源操作数地址中包括的所述至少一个列地址位,确定所述第i个源操作数地址所属的第i’个通用寄存器列,并在所述第i’个通用寄存器列中,根据所述第i个源操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i’为大于或者等于1,且小于或者等于N的整数;或者,
    通过所述数据选择单元,根据所述第i个源操作数地址中包括的所述至少一个行地址位,确定所述第i个源操作数地址所属的第i”个通用寄存器行,并在所述第i”个通用寄存器行中,根据所述第i个源操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,i”为大于或者等于1,且小于或者等于M的整数。
  15. 根据权利要求13所述的方法,其特征在于,所述通过所述结果写回单元,根据第j个目的操作数地址中包括的所述至少一个列地址位、所述至少一个行地址位和所述至少一个目标地址位在所述M行*N列通用寄存器组中访问所述第j个目的操作数地址对应的所述通用寄存器,包括:
    通过所述结果写回单元,根据所述第j个目标操作数地址中包括的所述至少一个列地址位,确定所述第j个目标操作数地址所属的第j’个通用寄存器列,并在所述第j’个通用寄存器列中,根据所述第j个目标操作数地址中包括的所述至少一个行地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j’为大于或者等于1,且小于或者等于N的整数;或者,
    通过所述结果写回单元,根据所述第j个目标操作数地址中包括的所述至少一个行地址位,确定所述第j个目标操作数地址所属的第j”个通用寄存器行,并在所述第j”个通用寄存器行中,根据所述第j个目标操作数地址中包括的所述至少一个列地址位和所述至少一个目标地址位访问对应的所述通用寄存器,j”为大于或者等于1,且小于或者等于M的整数。
  16. 根据权利要求13所述的方法,其特征在于,所述Y个源操作数地址中的任意两个不同的源操作数地址属于不同的所述通用寄存器列;所述X个目的操作数地址中的任意两个不同的目的操作数地址属于不同的所述通用寄存器列。
  17. 根据权利要求13所述的方法,其特征在于,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述Y个源操作数地址中包括多个相同的数量大于第一阈值的第一源操作数地址,以及第二源操作数地址;所述第一源操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二源操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述方法还包括:
    通过所述数据选择单元,根据所述第一源操作数地址访问对应的所述临时寄存器,获取对应的源操作数。
  18. 根据权利要求13所述的方法,其特征在于,所述处理器还包括临时寄存器,所述临时寄存器与目标通用寄存器对应;所述目标通用寄存器为所述M行*N列通用寄存器组中的一个;所述临时寄存器存储有所述目标通用寄存器内的数据;所述X个目的操作数地址中包括多个相同的数量大于第一阈值的第一目的操作数地址,以及第二目的操作数地址;所述第一目的操作数地址对应的所述通用寄存器为所述目标通用寄存器,所述第二目的操作数地址属于所述目标通用寄存器所在的所述通用寄存器列;所述方法还包括:
    通过所述结果写回单元,根据所述目标目的操作数地址访问对应的所述临时寄存器,并将对应的所述计算结果写回所述临时寄存器中。
  19. 根据权利要求11-18任意一项所述的方法,其特征在于,所述处理器还包括与所述指令译码单元连接的指令获取单元;所述方法还包括:
    通过所述指令获取单元,获取待执行的所述X条指令,并将所述X条指令发送至所述指令译码单元;所述X条指令为所述处理器在一个时钟周期内并行执行的指令。
  20. 根据权利要求11-19任意一项所述的方法,其特征在于,所述Y个源操作数地址以及所述X个目的操作数地址的访问类型均为直接访问类型或者均为间接访问类型。
  21. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求11-20中任意一项所述的方法。
  22. 一种计算机程序,其特征在于,所述计算机可读程序包括指令,当所述计算机程序被处理器执行时,使得所述处理器执行如上述权利要求11-20中任意一项所述的方法。
CN202080105555.6A 2020-09-29 2020-09-29 一种处理器、处理方法及相关设备 Pending CN116507999A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/118836 WO2022067510A1 (zh) 2020-09-29 2020-09-29 一种处理器、处理方法及相关设备

Publications (1)

Publication Number Publication Date
CN116507999A true CN116507999A (zh) 2023-07-28

Family

ID=80949254

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080105555.6A Pending CN116507999A (zh) 2020-09-29 2020-09-29 一种处理器、处理方法及相关设备

Country Status (2)

Country Link
CN (1) CN116507999A (zh)
WO (1) WO2022067510A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1146796C (zh) * 2000-07-18 2004-04-21 多思资讯(集团)有限公司 堆栈式寄存器堆及其控制方法
CN100338571C (zh) * 2003-09-27 2007-09-19 英特尔公司 处理器的扩展寄存器空间装置和方法
CN100378653C (zh) * 2005-01-20 2008-04-02 西安电子科技大学 双算术逻辑单元精简指令集8位微控制器
CN102262611B (zh) * 2010-05-25 2014-05-14 无锡华润矽科微电子有限公司 一种16位的risc cpu系统结构
US8914619B2 (en) * 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions

Also Published As

Publication number Publication date
WO2022067510A1 (zh) 2022-04-07

Similar Documents

Publication Publication Date Title
US11714642B2 (en) Systems, methods, and apparatuses for tile store
KR102311010B1 (ko) 하나 또는 그 초과의 복소수 산술 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서
JP6159825B2 (ja) ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション
JP5658556B2 (ja) メモリ制御装置、及びメモリ制御方法
KR101581177B1 (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
EP3547120B1 (en) Systems and methods for implementing chained tile operations
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
EP3623941A2 (en) Systems and methods for performing instructions specifying ternary tile logic operations
EP3757769B1 (en) Systems and methods to skip inconsequential matrix operations
CN107145335B (zh) 用于大整数运算的向量指令的装置和方法
US20240143325A1 (en) Systems, methods, and apparatuses for matrix operations
CN111782270B (zh) 一种数据处理方法及装置、存储介质
EP1861775B1 (en) Processor and method of indirect register read and write operations
CN115640047A (zh) 指令操作方法及装置、电子装置及存储介质
KR101283423B1 (ko) 표 내에 있는 엘리먼트의 주소를 결정하는 시스템과 방법
CN108959180B (zh) 一种数据处理方法及系统
CN116339832A (zh) 数据处理装置、方法及处理器
CN116507999A (zh) 一种处理器、处理方法及相关设备
US6427200B1 (en) Multiple changeable addressing mapping circuit
CN104615408A (zh) 微处理器、集成电路与提供微码指令储存空间的方法
US7788471B2 (en) Data processor and methods thereof
Najjar et al. Pipeline Hazards Resolution for a New Programmable Instruction Set RISC Processor
WO2023242531A1 (en) Technique for performing outer product operations
CA2040637C (en) Compounding preprocessor for cache

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