CN104111912A - 用于支持处理器的多模式的设备和方法 - Google Patents

用于支持处理器的多模式的设备和方法 Download PDF

Info

Publication number
CN104111912A
CN104111912A CN201410163684.7A CN201410163684A CN104111912A CN 104111912 A CN104111912 A CN 104111912A CN 201410163684 A CN201410163684 A CN 201410163684A CN 104111912 A CN104111912 A CN 104111912A
Authority
CN
China
Prior art keywords
operand
instruction
functional unit
operational code
pattern
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
CN201410163684.7A
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN104111912A publication Critical patent/CN104111912A/zh
Pending legal-status Critical Current

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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/46Multiprogramming 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)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供一种用于支持处理器的多模式的设备和方法。所述用于支持多模式的设备可包括:指令分配器,被配置为根据当前执行模式从均包括操作数和操作码的多个接收的指令之中选择至少一个指令,并将包括在选择的至少一个指令中的每个指令中的操作码传送到多个功能单元;操作数交换控制器,被配置为基于包括在选择的至少一个指令中的每个指令中的操作数,产生用于路由以便执行选择的至少一个指令的交换配置信息;操作数交换器,被配置为基于交换配置信息将功能单元的输出或寄存器堆的输出路由至功能单元的输入或寄存器堆的输入。

Description

用于支持处理器的多模式的设备和方法
本申请要求于2013年4月22日提交到韩国知识产权局的第10-2013-0044429号韩国专利申请的优先权,该申请的公开内容通过引用全部包含于此。
技术领域
以下描述涉及一种用于支持处理器的多模式的设备和方法。
背景技术
包括多个功能单元(FU)的超长指令字(VLIW)处理器在单个时钟周期内处理由多个指令构成的长指令字。粗粒度可重构阵列(CGRA)处理器是也能够在单个周期内处理由多个指令构成的长指令字,并包括比VLIW处理器的功能单元更多的功能单元的硬件,所述功能单元以阵列形式彼此直接连接,用于高速执行操作。
即使存在数据依赖,CGRA和VLIW处理器也可处理长指令字。然而,在编译阶段执行数据处理的所有调度,这增加了编译时间,并会降低对功能单元的利用。
单指令多线程(SIMT)处理器是具有多个功能单元并由多个功能单元使用单个指令的架构,其中,每个功能单元执行单独的线程。也就是说,SIMT处理器允许多个功能单元单独处理相同指令序列中的大量数据(或线程)。
SIMT给需要在相同处理中处理大量数据的海量并行数据处理应用提供益处,但是当存在数据依赖时,难以进行数据处理。
发明内容
一个或更多个示例性实施例可克服以上缺点和以上未描述的其它缺点。然而,将理解,一个或更多个示例性实施例不需要克服以上描述的缺点,并且可不克服以上描述的任何问题。
根据示例性实施例的方面,提供一种用于支持包括寄存器堆和多个功能单元的处理器的多模式的设备,所述设备包括:指令分配器,被配置为根据当前执行模式从均包括操作数和操作码的多个接收的指令之中选择至少一个指令,并将包括在选择的至少一个指令中的每个指令中的操作码传送到多个功能单元;操作数交换控制器,被配置为基于包括在选择的至少一个指令中的每个指令中的操作数,产生用于路由以便执行选择的至少一个指令的交换配置信息;操作数交换器,被配置为基于交换配置信息将功能单元的输出或寄存器堆的输出路由至功能单元的输入或寄存器堆的输入。
指令分配器还可被配置为响应于当前执行模式为单指令多线程(SIMT)模式,基于程序计数器信息从所述多个接收的指令之中选择一个指令,将包括在选择的指令中的操作数传送到操作数交换控制器的所有输入端口,并将包括在选择的指令中的操作码传送到所有的功能单元。
指令分配器还可被配置为响应于当前执行模式为超长指令字(VLIW)/粗粒度可重构阵列(CGRA)模式并且至少两个指令被选择,基于包括在所述选择的至少两个指令中的操作数和操作码,将不同的操作数传送到操作数交换控制器的每个输入端口,并将不同的操作数传送到每个功能单元。
指令分配器还可被配置为响应于当前执行模式为集成模式,从所述多个接收的指令之中选择一些指令,将相同的操作数传送到操作数交换控制器的第一组输入端口,将不同的操作数传送到操作数交换控制器的第二组输入端口中的每个输入端口,将相同的操作码传送到第一组功能单元,并将不同的操作码传送到第二组功能单元的每个功能单元。
操作数交换控制器可被配置为将操作数的逻辑地址转换为物理地址。
操作数交换器可被配置为:将寄存器堆的输出路由至寄存器堆的输入;将寄存器堆的输出路由至功能单元的输入;将功能单元的输出路由至寄存器堆的输入;或将一个功能单元的输出路由至另一功能单元的输入。
操作数交换器可包括至少一个交换级。
交换配置信息可包括与所述至少一个交换级相应的至少一条交换级配置信息。
每条交换级配置信息被以流水线方式顺序输入到相应的交换级。
根据另一示例性实施例的方面,提供一种支持包括寄存器堆和多个功能单元的处理器的多模式的方法。所述方法包括:根据当前执行模式从均包括操作数和操作码的多个接收的指令之中选择至少一个指令;将包括在选择的至少一个指令中的每个指令中的操作码传送到所述多个功能单元;基于包括在选择的至少一个指令中的每个指令中的操作数,产生用于路由以便执行所述选择的至少一个指令的交换配置信息;基于交换配置信息将功能单元的输出或寄存器堆的输出路由至功能单元的输入或寄存器堆的输入。
响应于当前执行模式为单指令多线程(SIMT)模式,一个或更多个指令的选择可包括基于程序计数器信息从所述多个接收的指令之中选择一个指令,操作码的传送包括将包括在选择的指令中的操作码传送到所有的功能单元。
响应于当前执行模式为超长指令字(VLIW)/粗粒度可重构阵列(CGRA)模式,所述至少一个指令的选择包括基于程序计数器信息从所述多个接收的指令中选择一个指令,操作码的传送包括将包括在所述选择的至少一个指令中的操作码传送到所有的功能单元。
响应于当前执行模式为集成模式,所述至少一个指令的选择包括从所述多个接收的指令之中选择一些指令,操作码的传送包括将不同的操作码传送到第一组功能单元的每个功能单元,并将相同的操作码传送到第二组功能单元的每个功能单元。
交换配置信息的产生可包括将包括在选择的至少一个指令中的每个指令中的操作数的逻辑地址转换为物理地址,并基于物理地址产生交换配置信息。
根据另一示例性实施例的一方面,提供一种用于支持包括寄存器堆和多个功能单元的多模式处理器的设备。所述设备可包括:操作数交换控制器,被配置为接收用于选择多模式处理器的模式的模式选择信号,根据模式选择信号来接收与选择的至少一个指令相应的至少一个操作数,并基于由操作数交换控制器接收的所述选择的至少一个操作数,产生用于在寄存器堆和所述多个功能单元之间进行路由的交换配置信息;操作数交换器,被配置为基于交换配置信息将第一功能单元的输出或寄存器堆的输出路由至第二功能单元的输入或寄存器堆的输入。
所述设备还可包括指令分配器,被配置为接收模式选择信号并根据模式选择信号将相同的操作码输出到所有的功能单元,将不同的操作码输出到所有的功能单元,或将相同的操作码输出到第一组功能单元并将不同的操作码输出到第二组功能单元的每个功能单元。
响应于模式选择信号与单指令多线程(SIMT)模式相应,指令分配器可将相同的操作码输出到所有的功能单元,响应于模式选择信号与超长指令字(VLIW)/粗粒度可重构阵列(CGRA)模式相应,指令分配器可将不同的操作码输出到所有的功能单元;响应于模式选择信号与集成模式相应,指令分配器可将相同的操作码输出到第一组功能单元并将不同的操作码输出到第二组功能单元中的每个功能单元。
根据另一示例性实施例的方面,提供一种多模式处理器,可包括:指令分配器,被配置接收用于选择多模式处理器的模式的模式选择信号,接收均包括操作数和操作码的多个指令,并基于模式选择信号输出至少一个操作码和至少一个操作数;操作数交换控制器,被配置为接收用于选择多模式处理器的模式的模式选择信号,以及由指令分配器输出的所述至少一个操作数;操作数交换器,被配置为使用来自操作数交换控制器的交换配置信息来控制接收由指令分配器输出的所述至少一个操作码的多个功能单元。
基于模式选择信号,操作数交换器可控制所述多个功能单元均作为单指令多线程(SIMT)处理器运行,均作为超长指令字(VLIW)/粗粒度可重构阵列(CGR)处理器运行,或所述多个功能单元中的一些作为SIMT处理器运行而剩余的功能单元作为VLIW/CGRA处理器运行。
从详细描述、附图和权利要求中,其它特征和方面将变得清楚。
附图说明
通过参照附图对特定示例性实施例进行描述,上述和/或其它方面将变得更加清楚,在附图中:
图1是示出根据示例性实施例的用于支持多模式的设备的示图;
图2是详细示出图1的指令分配器的示图;
图3是示出图1的操作数交换器的示例的示图;
图4A是示出根据示例性实施例的交换配置信息的示例的示图;
图4B是用于解释将交换级配置信息输入到交换级的顺序的示图;
图5是示出根据示例性实施例的支持多模式的方法的流程图。
具体实施方式
提供以下描述以帮助读者获得对这里描述的方法、设备和/或系统的全面理解。因此,将向本领域的普通技术人员提出这里描述的方法、设备和/或系统的各种改变、修改和等同物。此外,为了更加清晰和简明,可省略已知功能和结构的描述。
贯穿附图和详细描述,除非另外描述,否则相同的附图标号将被理解为表示相同的元件、特征和结构。为了清楚、说明和方便,可夸大这些元件的相对大小和描绘。
以下描述描述了能够基于处理器的处理和性能需要在不同模式之间进行切换的处理器。更具体地讲,所述处理器支持例如(i)用于海量数据处理的单指令多线程(SIMT)模式,(ii)利用软件流水线提高性能的超长指令字(VLIW)模式或粗粒度可重构阵列(CGRA)模式,(iii)处理器的一部分以SIMT模式工作并且处理器的一部分以VLIW/CGRA模式工作的集成模式。
在描述示例性实施例之前,将给出SIMT模式、VLTW/CGRA模式和集成模式的概述。
[SIMT模式]
在SIMT模式中,系统中的功能单元使用相同的指令,对不同的物理地址空间进行访问,并接收相同的操作码。传送到系统中的操作数交换(operandswitch)控制器的操作数相同,因此具有相同的逻辑地址空间。然而,这些操作数具有不同的物理地址空间。寄存器堆(register file)被划分为与工作的功能单元的数量相同的数量的段,使得不同的寄存器段可被分配到每个工作的功能单元,用作功能单元的本地寄存器。操作数交换控制器将接收的操作数的逻辑地址转换为物理地址,使得每个功能单元可访问对应于与由该功能单元接收的操作码相关的操作数的本地寄存器,并基于转换的地址来产生交换配置信息。
[VLIW/CGRA模式]
在VLIW/CGRA模式中,功能单元使用不同的指令,访问相同的物理地址空间,并接收不同的操作码。传送到操作数交换控制器的操作数不同,但具有相同的逻辑地址空间,这使功能单元访问相同的目标。由于功能单元使用不同的指令,因此,与由该功能单元接收的操作码相应的操作数彼此不同,并且每个操作数具有与物理地址空间相同的逻辑地址空间。
VLIW处理器在以下方面与CGRA处理器不同。CGRA处理器包括比VLIW处理器的功能单元更多的功能单元,具有本地寄存器堆,并且可使用网络,在网络中,数据可在功能单元之间直接发送而不需要经过中央寄存器堆。VLIW处理器需要较大的寄存器堆带宽,这是因为所有的功能单元访问中央寄存器堆。如果对中央寄存器堆的访问受限(例如,特定功能单元仅被允许访问特定寄存器堆子集),则并行处理性能会因由例如寄存器堆之间的数据传送引起的功能单元的使用效率降低而降低。CGRA处理器/模式可通过使用功能单元和功能单元之间的本地寄存器的连接来避免这些问题。也就是说,由于可在功能单元之间发送数据而不需要经过中央寄存器堆,因此更多的指令可用于并行处理,从而提高效率。
[集成模式]
集成模式组合SIMT模式和VLIW/CGRA模式两者。在集成模式中,第一组功能单元接收相同的操作码而第二组功能单元中的每个接收不同的操作码。与SIMT模式相应的操作数具有与物理地址空间不同的逻辑地址空间,而与VLIW/CGRA模式相应的操作数具有与物理地址空间相同的逻辑地址空间。
图1是示出根据示例性实施例的用于支持上述多模式处理的设备100的示图。
图1中示出的设备100的示例包括寄存器堆102和八个功能单元(FU)104,然而,功能单元104的数量可根据系统性能或使用目的而变化。
参照图1,用于支持多模式处理的设备100可包括指令分配器110、操作数交换控制器120和操作数交换器130。
指令分配器110可接收多个指令106。所述指令可以是均包括操作数(operand)和操作码(opcode)的机器指令。操作数可被视为选择的指定将操纵或操作何种数据的代码的一部分。操作码可被视为选择的指定将被执行的操作的指令的一部分。指令分配器110根据当前模式来选择接收的指令106中的一个或更多个,将包含在选择的指令中的操作数传送到操作数交换控制器120,并将包含在选择的指令中的操作码传送到FU104。
在硬件开始工作之前确定当前模式。具体地讲,在SIMT模式下操作的指令与在VLIW/CGRA模式下操作的指令不同,因此,当编译器创建机器码时已确定了执行模式。可由最初确定模式的程序员来确定执行模式,随后向编译器通知所述模式,或者编译器可分析程序,确定哪个模式更有效,并基于确定的模式来编译代码。一旦确定了执行模式并编译了代码,编译器就可指示处理器使用合适的处理模式。在一个或更多个示例性实施例中,存在可被插入编译的代码中的用于模式切换的单独的指令。处理器硬件可读取插入的指令以便确定模式。
在SIMT模式中,指令分配器110基于程序计数器(PC)信息来选择接收的指令106之一,将包含在选择的指令中的操作数传送到操作数交换控制器120的所有输入端口,并将包含在选择的指令中的操作码传送到所有的FU104。换言之,在SIMT模式中,指令分配器110将相同的操作数传送到操作数交换控制器120的所有输入端口和所有的FU104。
在VLIW/CGRA模式中,指令分配器110选择接收的指令106中的多于一个指令,将不同的操作数传送到操作数交换控制器120的每个输入端口,并基于包含在接收的指令106中的操作数和操作码将不同的操作码传送到FU104中的每个。
集成模式组合SIMT模式和VLIW/CGRA模式两者。在集成模式中,指令分配器110从接收的指令106之中选择一些指令,将包含在选择的指令之一中的操作数分配给操作数交换控制器120的第一组输入端口,并将包含在一个选择的指令中的操作码分配给FU104的相应的第一组。指令分配器110将包含在选择的指令的其它指令中的操作数分配给操作数交换控制器120的第二组输入端口,并将包含在选择的指令的其它指令中的操作码分配给FU104的相应的第二组。也就是说,在集成模式中,基于包含在从接到的指令之中选择的一些指令中的操作数和操作码,指令分配器110可将相同的操作数传送到操作数交换控制器120的第一组输入端口,将不同的操作数传送到剩余输入端口(即,第二组输入端口)中的每个,同时将相同的操作码传送到第一组FU,并将不同的操作码传送到剩余FU中的每个(即,与第二组输入端口相应的第二组FU)。在这种情况下,接收相同的操作数(或相同的操作码)的操作数交换控制器120的输入端口的数量(或功能单元104的数量)可根据使用目的或系统性能而变化。
在集成模式中,SIMT模式下的功能单元和VLIW/CGRA模式下的功能单元的使用率取决于特定应用。优选地,第一组功能单元104在位置上彼此邻近地被分组,第二组功能单元104在位置上彼此邻近地被分组。
操作数交换控制器120从指令分配器110接收操作数,将操作数的逻辑地址转换为物理地址以允许功能单元或寄存器使用接收的操作数来访问期望的功能单元或寄存器,并产生操作数交换器130的交换配置信息SC。操作数交换控制器120可从外部源接收模式信号108以区分SIMT模式、VLIW/CGRA模式和集成模式。
在SIMT模式中,由于所有功能单元104使用相同的指令,因此传送到操作数交换控制器120的输入端口的操作数全部相同。因此,传送到输入端口的操作数具有相同的逻辑地址空间。然而,由于寄存器堆被划分以被每个功能单元(或线程)使用,因此传送到操作数交换控制器120的输入端口的操作数具有不同的物理地址空间,并且允许功能单元104访问在不同的物理地址空间的寄存器。更具体地讲,整个寄存器堆102被划分为与工作的功能单元104(或线程)的数量相同的数量的段,并且不同的寄存器段可被分配到每个工作的功能单元104(或每个线程),用作功能单元(或线程)的本地寄存器。在这种情况下,操作数交换控制器120可接收一个操作数,将与各个功能单元相应的操作数的逻辑地址转换为物理地址,以允许每个功能单元104访问对应于与由该功能单元104接收的操作码相关的操作数的本地寄存器,并基于转换的地址来产生交换配置信息SC。
在VLIW/CGRA模式中,由于所有的功能单元104使用不同的指令,因此传送到操作数交换控制器120的输入端口的操作数彼此不同,并且操作数具有彼此相同的逻辑地址空间和彼此相同的物理地址空间。因此,每个功能单元104可自由地具有操作数,并且操作数交换控制器120可接收单独的操作数,并产生交换配置信息SC以允许每个功能单元104访问相关目标。在这种情况下,由于使用相同的地址空间,因此相同的操作数使功能单元访问相同的目标。
在集成模式中,与SIMT模式相应的操作数具有不同的逻辑地址空间和不同的物理地址空间,而与VLIW/CGRA模式相应的操作数具有相同的逻辑地址空间和相同的物理地址空间。因此,操作数交换控制器120组合SIMT模式和VLIW/CGRA模式,并根据组合的模式而工作。
操作数交换控制器120可将操作数的逻辑地址转换为物理地址,并基于转换的物理地址来产生交换配置信息SC。基于交换配置信息SC:在SIMT模式中,允许所有的功能单元104利用相同的逻辑地址空间(相同的逻辑地址空间,而不同的物理地址空间)来访问它们的目标;在VLIW/CGRA模式中,允许所有的功能单元利用各个逻辑地址空间来访问它们的目标,在集成模式中,仅允许一些功能单元利用一些逻辑地址空间来访问它们的目标。
操作数交换器130可基于由操作数交换控制器120产生的交换配置信息SC,在功能单元104和寄存器之间进行路由(route)以允许执行由指令分配器110选择的指令。例如,基于交换配置信息SC,操作数交换器130可将寄存器堆的输出路由至FU的输入,将FU的输出路由至寄存器堆的输入,将一个FU的输出路由至另一FU的输入,或将一个寄存器堆的输出路由至另一寄存器堆的输入。
在一个示例性实施例中,操作数交换器130可包括多个交换级,每个交换级可包括存储器装置,诸如触发器。稍后将参照图3对此进行详细描述。
图2是详细示出图1的指令分配器110的示图。在图2中示出的示例性实施例中,操作数交换控制器120具有8个输入端口,设置8个功能单元来执行操作,一个指令包括一个操作数和一个操作码。
参照图2,指令分配器110可包括16个2×1复用器251、252、253、254、255、256、257、258、261、262、263、264、265、266、267和268以及两个8×1复用器230和240。指令分配器110接收8个指令,并产生分别包括与8个指令分离的操作数和操作码的操作数集210和操作码集220。属于操作数集210的8个操作数211、212、213、214、215、216、217和218被传送到连接到操作数交换控制器120的各个输入端口的8个2×1复用器251至258中的各个复用器的输入,并且还被传送到8×1复用器230的输入。8×1复用器230接收8个操作数211至218,基于PC信息来选择针对特定指令的操作数,并将选择的操作数传送到8个2×1复用器251至258的输入。8个2×1复用器251至258中的每个根据设置的执行模式108来确定输出,并将确定的输出传送到操作数交换控制器120的相应输入端口。
此外,属于操作码集220的8个操作码221至228被传送到连接到8个功能单元104中的各自的8个2×1复用器261至268的输入,并且还被传送到8×1复用器240的输入。8×1复用器240接收8个操作码221至228,并基于PC信息将特定操作码传送到8个2×1复用器261至268。8个2×1复用器261至268中的每个根据设置的执行模式108来确定输出,并将确定的输出传送到相应的功能单元104。
在SMIT模式中,2×1复用器251至258中的每个将从8×1复用器230输入的操作数确定为输出,并将输出传送到操作数交换控制器120的8个输入端口之中的相应的输入端口。此外,2×1复用器261至268中的每个将从8×1复用器240输入的操作码确定为输出,并将输出传送到相应的功能单元。也就是说,操作数交换控制器120的8个输入端口接收相同的操作数,功能单元104接收相同的操作码。
在VLIW/CGRA模式中,2×1复用器251至258中的每个将从操作数集210直接接收的操作数确定为输出,并将输出传送到操作数交换控制器120的8个输入端口之中的相应的输入端口[哪个端口不重要,但需要自始至终保持一致]。此外,2×1复用器261至268中的每个将从操作码集220直接输入的操作码确定为输出,并将输出传送到相应的功能单元104。因此,不同的操作数被传送到操作数交换控制器120的8个输入端口中的每个,并且不同的操作码被传送到每个功能单元104。
在集成模式中,2×1复用器251至258中的一些复用器将从操作数集210直接输入的操作数确定为输出,并且其余的2×1复用器将从8×1复用器输入的操作数确定为它们的输出。确定的输出被传送到操作数交换控制器120的8个输入端口之中的各个端口。此外,2×1复用器261至268中的一些将从操作码集220直接输入的操作码确定为它们的输出,其余的2×1复用器将从8×1复用器240输入的操作码确定为它们的输出。确定的输出被传送到各个功能单元。也就是说,不同的操作数被传送到操作数交换控制器120的8个输入端口中的一些输入端口,相同的操作数被传送到操作数交换控制器120的剩余的输入端口。以相同的方式,不同的操作码被传送到8个功能单元中的一些,相同的操作码被传送到剩余的功能单元。
此外,将从操作数集210直接输入的操作数确定为它们的输出的2×1复用器的数量以及将从操作码集220直接输入的操作码确定为它们的输出的2×1复用器的数量可根据系统性能或使用目的而变化。
图3是示出图1的操作数交换器130的示例的示图。
在图3中,操作数交换器130包括三个交换级,但是本公开的多方面不限于此,使得构成交换的交换级的数量可根据系统性能或使用目的而变化。
参照图3,操作数交换器130可包括交换级1、交换级2和交换级3。每个交换级可包括存储装置,诸如触发器。
基于交换配置信息SC,操作数交换器130可将一个寄存器堆的输出路由至另一寄存器堆的输入,将寄存器堆的输出路由至FU的输入,将FU的输出路由至寄存器堆的输入,或将一个FU的输出路由至另一FU的输入。
在操作数交换器130将FU的输出路由至FU的输入的情况下,可建立功能单元之间的连接而不需要寄存器堆的帮助,因此,操作数交换器130可被用于使VLIW/CGRA模式下的操作之间的数据传送开销最小化。此外,在操作数交换器130将一个寄存器堆的输出路由至另一寄存器堆的输入的情况下,可执行“移动”操作而不需要功能单元104的帮助,因此操作数交换器130可被用于提高VLIW/CGRA的性能。
图4A是示出根据示例性实施例的交换配置信息SC的示例的示图,图4B是解释将交换级配置信息输入到交换级的顺序的示图。图4A和图4B中示出的示例假设操作数交换器130包括三个交换级,这与图3的示例一样。
参照图4A,在操作数交换器130包括三个交换级的情况下,每个交换配置信息SC可被分开产生,在这种情况下,交换配置信息SC可包含交换级1的配置信息SSC1、交换级2的配置信息SSC2和交换级3的配置信息SSC3。
以下,将参照图3、图4A和图4B来描述将配置信息输入到每个交换级的示例性方法。
参照图4B,在时间t1,包含在由操作数交换控制器120产生的初始交换配置信息SC1中的交换级1的配置信息SC1-SSC1被输入到交换级1。
之后,在时间t2,包含在由操作数交换控制器120产生的第二交换配置信息SC2中的交换级1的配置信息SC2-SSC1被输入到交换级1,同时,包含在初始交换配置信息SC1中的交换级2的配置信息SC1-SSC2被输入到交换级2。
在时间t3,包含在由操作数交换控制器120产生的第三交换配置信息SC3中的交换级1的配置信息SC3-SSC1被输入到交换级1。同时,包含在第二交换配置信息SC2中的交换级2的配置信息SC2-SSC2被输入到交换级2,包含在初始交换配置信息SC1中的交换级3的配置信息SC1-SSC3被输入到交换级3。
这样,可以以流水线方式执行交换级配置信息SSC至每个交换级的顺序输入。
图5是示出根据示例性实施例的支持多模式的方法的流程图。
参照图5,在510,确定当前执行模式的类型。
响应于确定当前执行模式为SIMT模式,在522,基于程序计数器信息从多个接收的指令之中选择一个指令。在532,将包括在选择的指令中的操作码传送到每个功能单元。也就是说,在SIMT模式中,将相同的操作码传送到所有的功能单元。
响应于确定当前执行模式为VLIW/CGRA模式,在524,选择所有的接收的指令。随后,在534,将包括在选择的指令中的操作码传送到各个功能单元,其中,传送的操作码彼此不同。
响应于在510确定当前执行模式为集成模式,在526,选择接收的指令中的一些指令,在536,将不同的操作码传送到一些功能单元,而将相同的操作码传送到剩余的功能单元。在这种情况下,被传送不同的操作码的功能单元的数量可根据系统性能或使用目的而变化。
之后,为了执行在522、524或526中选择的指令,在540,基于包括在每个选择的指令中的操作数来产生用于路由的交换配置信息。
例如,可将选择的操作数的逻辑地址转换为物理地址,并且可基于转换的地址来产生交换配置信息SC。
在SIMT模式中,由于所有的功能单元使用相同的指令,因此与由各个功能单元接收的操作码相应的操作数具有相同的逻辑地址空间。然而,由于寄存器堆被划分以被每个功能单元(或线程)使用,因此与由各个功能单元接收的操作码相应的操作数具有彼此不同的物理地址空间。也就是说,逻辑地址空间与物理地址空间不同。
在VLIW/CGRA模式中,由于所有的功能单元使用不同的指令,因此,与由功能单元接收的操作码相应的操作数彼此不同,并且每个操作数具有与物理地址空间相同的逻辑地址空间。
在集成模式中,与SIMT模式相应的一些操作数具有与物理地址空间不同的逻辑地址空间,而与VLIW/CGRA模式相应的剩余的操作数具有与物理地址空间相同的逻辑地址空间。
因此,在SIMT模式和集成模式中,逻辑地址空间需要被转换为物理地址空间。
随后,在550,基于产生的交换配置信息,将功能单元或寄存器堆路由至另一功能单元或另一寄存器堆以执行在522、524或526中选择的指令。
本发明的实施例还可被实施为一种多模式处理器,该多模式处理器包括:指令分配器,被配置接收用于选择多模式处理器的模式的模式选择信号,接收多个指令,并基于模式选择信号输出至少一个操作码和至少一个操作数,所述多个指令均包括操作数和操作码;操作数交换控制器,被配置为接收用于选择多模式处理器的模式的模式选择信号,以及由指令分配器输出的所述至少一个操作数;操作数交换器,被配置为使用来自操作数交换控制器的交换配置信息来控制接收由指令分配器输出的所述至少一个操作码的多个功能单元。其中,基于模式选择信号,操作数交换器控制所述多个功能单元均作为单指令多线程(SIMT)处理器运行,均作为超长指令字(VLIW)/粗粒度可重构阵列(CGRA)处理器运行,或所述多个功能单元中的一些作为SIMT处理器运行而剩余的功能单元作为VLIW/CGRA处理器运行。
当前示例性实施例可被实现为计算机可读记录介质中的计算机可读代码。本领域的熟练的计算机程序员可容易地推断出构成计算机程序的代码和代码段。计算机可读记录介质包括存储计算机可读数据的所有类型的记录介质。计算机可读记录介质的示例包括ROM、RAM、CD-ROM、磁带、软盘和光学数据存储器。此外,可以以谐波(诸如互联网传输)的形式来实现记录介质。此外,计算机可读记录介质可通过网络被分布到可以以分布方式存储和执行计算机可读代码的计算机系统。
以上已描述了若干示例。然而,将理解,可进行各种修改。例如,如果以不同的顺序执行描述的技术,和/或如果以不同的方式组合和/或由其它组件或它们的等同物代替或补充在描述的系统、架构、装置或电路中的组件,则可实现合适的结果。因此,其它实施方式在权利要求的范围内。

Claims (19)

1.一种用于支持包括寄存器堆和多个功能单元的处理器的多模式的设备,所述设备包括:
指令分配器,被配置为根据当前执行模式从多个接收的指令之中选择至少一个指令,并将包括在选择的所述至少一个指令中的每个指令中的操作码传送到多个功能单元,所述多个接收的指令均包括操作数和操作码;
操作数交换控制器,被配置为基于包括在选择的所述至少一个指令中的每个指令中的操作数,产生用于路由以便执行选择的所述至少一个指令的交换配置信息;
操作数交换器,被配置为基于交换配置信息将功能单元的输出或寄存器堆的输出路由至功能单元的输入或寄存器堆的输入。
2.如权利要求1所述的设备,其中,指令分配器还被配置为响应于当前执行模式为单指令多线程(SIMT)模式,基于程序计数器信息从所述多个接收的指令之中选择一个指令,将包括在选择的指令中的操作数传送到操作数交换控制器的所有输入端口,并将包括在选择的指令中的操作码传送到所有的功能单元。
3.如权利要求1所述的设备,其中,指令分配器还被配置为响应于当前执行模式为超长指令字(VLIW)/粗粒度可重构阵列(CGRA)模式并且至少两个指令被选择,基于包括在选择的所述至少两个指令中的操作数和操作码,将不同的操作数传送到操作数交换控制器的每个输入端口,并将不同的操作数传送到每个功能单元。
4.如权利要求1所述的设备,其中,指令分配器还被配置为响应于当前执行模式为集成模式,从所述多个接收的指令之中选择一些指令,将相同的操作数传送到操作数交换控制器的第一组输入端口,将不同的操作数传送到操作数交换控制器的第二组输入端口中的每个输入端口,将相同的操作码传送到第一组功能单元,并将不同的操作码传送到第二组功能单元的每个功能单元。
5.如权利要求1所述的设备,其中,操作数交换控制器还被配置为将操作数的逻辑地址转换为物理地址。
6.如权利要求1所述的设备,其中,操作数交换器还被配置为:
将寄存器堆的输出路由至寄存器堆的输入;
将寄存器堆的输出路由至功能单元的输入;
将功能单元的输出路由至寄存器堆的输入;或
将一个功能单元的输出路由至另一功能单元的输入。
7.如权利要求1所述的设备,其中,操作数交换器包括至少一个交换级。
8.如权利要求7所述的设备,其中,交换配置信息包括与所述至少一个交换级相应的至少一条交换级配置信息。
9.如权利要求8所述的设备,其中,每条交换级配置信息被以流水线方式顺序地输入到相应的交换级。
10.一种支持包括寄存器堆和多个功能单元的处理器的多模式的方法,所述方法包括:
根据当前执行模式从多个接收的指令之中选择至少一个指令,所述多个接收的指令均包括操作数和操作码;
将包括在选择的所述至少一个指令中的每个指令中的操作码传送到所述多个功能单元;
基于包括在选择的所述至少一个指令中的每个指令中的操作数,产生用于路由以便执行选择的所述至少一个指令的交换配置信息;
基于交换配置信息将功能单元的输出或寄存器堆的输出路由至功能单元的输入或寄存器堆的输入。
11.如权利要求10所述的方法,其中,响应于当前执行模式为单指令多线程(SIMT)模式,所述至少一个指令的选择包括基于程序计数器信息从所述多个接收的指令之中选择一个指令,操作码的传送包括将包括在选择的所述至少一个指令中的操作码传送到所有的功能单元。
12.如权利要求10所述的方法,其中,响应于当前执行模式为超长指令字(VLIW)/粗粒度可重构阵列(CGRA)模式,所述至少一个指令的选择包括选择所有的接收的指令,操作码的传送包括将来自选择的指令的不同的操作码传送到每个功能单元。
13.如权利要求10所述的方法,其中,响应于当前执行模式为集成模式,所述至少一个指令的选择包括从所述多个接收的指令之中选择一些指令,操作码的传送包括将不同的操作码传送到第一组功能单元,并将相同的操作码传送到第二组功能单元的每个功能单元。
14.如权利要求10所述的方法,其中,交换配置信息的产生包括将包括在选择的所述至少一个指令中的每个指令中的操作数的逻辑地址转换为物理地址,并基于物理地址产生交换配置信息。
15.一种用于支持包括寄存器堆和多个功能单元的多模式处理器的设备,所述设备包括:
操作数交换控制器,被配置为接收用于选择多模式处理器的模式的模式选择信号,根据模式选择信号来接收与选择的至少一个指令相应的至少一个操作数,并基于由操作数交换控制器接收的选择的所述至少一个操作数,产生用于在寄存器堆和所述多个功能单元之间进行路由的交换配置信息;
操作数交换器,被配置为基于交换配置信息将第一功能单元的输出或寄存器堆的输出路由至第二功能单元的输入或寄存器堆的输入。
16.如权利要求15所述的设备,还包括指令分配器,被配置为接收模式选择信号并根据模式选择信号将相同的操作码输出到所有的功能单元,将不同的操作码输出到所有的功能单元,或将相同的操作码输出到第一组功能单元并将不同的操作码输出到第二组功能单元的每个功能单元。
17.如权利要求16所述的设备,其中,响应于模式选择信号与单指令多线程(SIMT)模式相应,指令分配器将相同的操作码输出到所有的功能单元,
响应于模式选择信号与超长指令字(VLIW)/粗粒度可重构阵列(CGRA)模式相应,指令分配器将不同的操作码输出到所有的功能单元;
响应于模式选择信号与集成模式相应,指令分配器将相同的操作码输出到第一组功能单元并将不同的操作码输出到第二组功能单元中的每个功能单元。
18.一种多模式处理器,包括:
指令分配器,被配置接收用于选择多模式处理器的模式的模式选择信号,接收多个指令,并基于模式选择信号输出至少一个操作码和至少一个操作数,所述多个指令均包括操作数和操作码;
操作数交换控制器,被配置为接收用于选择多模式处理器的模式的模式选择信号,以及由指令分配器输出的所述至少一个操作数;
操作数交换器,被配置为使用来自操作数交换控制器的交换配置信息来控制接收由指令分配器输出的所述至少一个操作码的多个功能单元。
19.如权利要求18所述的多模式处理器,其中,基于模式选择信号,操作数交换器控制所述多个功能单元均作为单指令多线程(SIMT)处理器运行,均作为超长指令字(VLIW)/粗粒度可重构阵列(CGRA)处理器运行,或所述多个功能单元中的一些作为SIMT处理器运行而剩余的功能单元作为VLIW/CGRA处理器运行。
CN201410163684.7A 2013-04-22 2014-04-22 用于支持处理器的多模式的设备和方法 Pending CN104111912A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2013-0044429 2013-04-22
KR1020130044429A KR20140126189A (ko) 2013-04-22 2013-04-22 프로세서의 멀티 실행 모드 지원 장치 및 방법

Publications (1)

Publication Number Publication Date
CN104111912A true CN104111912A (zh) 2014-10-22

Family

ID=50513771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410163684.7A Pending CN104111912A (zh) 2013-04-22 2014-04-22 用于支持处理器的多模式的设备和方法

Country Status (5)

Country Link
US (1) US20140317388A1 (zh)
EP (1) EP2796990A3 (zh)
JP (1) JP2014216020A (zh)
KR (1) KR20140126189A (zh)
CN (1) CN104111912A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273205A (zh) * 2016-04-07 2017-10-20 国际商业机器公司 用于在计算机处理器中调度指令的方法和系统
CN108399594A (zh) * 2017-01-16 2018-08-14 畅想科技有限公司 处理器的高效数据选择
CN108431772A (zh) * 2015-12-16 2018-08-21 认知系统公司 操作无线传感器装置中的vliw处理器
CN113126974A (zh) * 2021-06-17 2021-07-16 北京壁仞科技开发有限公司 代码生成/执行方法、装置、设备、存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524126B (en) * 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
CN106149284B (zh) * 2015-04-28 2019-04-26 青岛海尔洗衣机有限公司 一种洗衣机故障检测处理方法
WO2019090032A1 (en) * 2017-11-03 2019-05-09 Coherent Logix, Inc. Memory network processor
US11500825B2 (en) * 2018-08-20 2022-11-15 Intel Corporation Techniques for dynamic database access modes
US10831488B1 (en) * 2018-08-20 2020-11-10 Apple Inc. Computation engine with extract instructions to minimize memory access
EP3938914A1 (en) 2019-03-15 2022-01-19 INTEL Corporation Dynamic memory reconfiguration

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1732457A (zh) * 2002-12-30 2006-02-08 皇家飞利浦电子股份有限公司 处理系统
US20080046685A1 (en) * 2006-06-15 2008-02-21 Gerald George Pechanek Methods and Apparatus For Independent Processor Node Operations In A SIMD Array Processor
US7793074B1 (en) * 2006-04-14 2010-09-07 Tilera Corporation Directing data in a parallel processing environment
US20100274549A1 (en) * 2008-03-27 2010-10-28 Rocketick Technologies Ltd. Design simulation using parallel processors
US20110072242A1 (en) * 2009-09-24 2011-03-24 Industrial Technology Research Institute Configurable processing apparatus and system thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH103389A (ja) * 1996-06-14 1998-01-06 Oki Electric Ind Co Ltd 並列計算機
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US7013353B2 (en) * 2001-03-30 2006-03-14 Intel Corporation Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1732457A (zh) * 2002-12-30 2006-02-08 皇家飞利浦电子股份有限公司 处理系统
US7793074B1 (en) * 2006-04-14 2010-09-07 Tilera Corporation Directing data in a parallel processing environment
US20080046685A1 (en) * 2006-06-15 2008-02-21 Gerald George Pechanek Methods and Apparatus For Independent Processor Node Operations In A SIMD Array Processor
US20100274549A1 (en) * 2008-03-27 2010-10-28 Rocketick Technologies Ltd. Design simulation using parallel processors
US20110072242A1 (en) * 2009-09-24 2011-03-24 Industrial Technology Research Institute Configurable processing apparatus and system thereof

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108431772A (zh) * 2015-12-16 2018-08-21 认知系统公司 操作无线传感器装置中的vliw处理器
CN107273205A (zh) * 2016-04-07 2017-10-20 国际商业机器公司 用于在计算机处理器中调度指令的方法和系统
CN107273205B (zh) * 2016-04-07 2020-06-26 国际商业机器公司 用于在计算机处理器中调度指令的方法和系统
US10838728B2 (en) 2016-04-07 2020-11-17 International Business Machines Corporation Parallel slice processor shadowing states of hardware threads across execution slices
CN108399594A (zh) * 2017-01-16 2018-08-14 畅想科技有限公司 处理器的高效数据选择
CN108399594B (zh) * 2017-01-16 2023-07-21 畅想科技有限公司 处理器的高效数据选择
CN113126974A (zh) * 2021-06-17 2021-07-16 北京壁仞科技开发有限公司 代码生成/执行方法、装置、设备、存储介质
CN113126974B (zh) * 2021-06-17 2021-09-28 北京壁仞科技开发有限公司 代码生成/执行方法、装置、设备、存储介质

Also Published As

Publication number Publication date
US20140317388A1 (en) 2014-10-23
EP2796990A2 (en) 2014-10-29
JP2014216020A (ja) 2014-11-17
KR20140126189A (ko) 2014-10-30
EP2796990A3 (en) 2015-01-07

Similar Documents

Publication Publication Date Title
CN104111912A (zh) 用于支持处理器的多模式的设备和方法
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
CN105389158B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
KR102167059B1 (ko) 멀티-타일 프로세싱 어레이의 동기화
CN101799760B (zh) 生成任意目标架构的并行单指令多数据代码的系统和方法
JP5270529B2 (ja) 再構成可能なマルチ処理粗粒アレイ
EP2951681B1 (en) Solution to divergent branches in a simd core using hardware pointers
TW202115575A (zh) 靜止可重組態的資料處理器
KR102178190B1 (ko) 명령 세트
JP6103647B2 (ja) プロセッサシステム及びアクセラレータ
CN109697186A (zh) 时间确定性编译器
US20030056202A1 (en) Method for translating programs for reconfigurable architectures
KR20010042690A (ko) 구성가능 기능 유닛을 가진 데이터 프로세서 및 이러한데이터 프로세서를 사용한 방법
CN102306141B (zh) 一种描述动态可重构阵列配置信息的方法
US6675289B1 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
CN104111818A (zh) 用于批量线程处理的处理器、处理方法和代码生成设备
EP3384377A1 (en) Data processing
KR102228502B1 (ko) 컴퓨터 프로세싱의 타이밍 제어
KR102295677B1 (ko) 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
She et al. OpenCL code generation for low energy wide SIMD architectures with explicit datapath
Yang et al. A hybrid circular queue method for iterative stencil computations on GPUs
CN103268223A (zh) 在编译过程中改善乘加类指令执行性能的方法
US8635432B2 (en) SIMD processor array system and data transfer method thereof
Koenig et al. Architecture design space exploration of run-time scalable issue-width processors
CN102184090A (zh) 一种动态可重构处理器及其固定数的调用方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20200310

AD01 Patent right deemed abandoned