动态分簇的寄存器堆及使用该寄存器堆的可重构计算装置的制作方法

文档序号:6442024阅读:126来源:国知局
专利名称:动态分簇的寄存器堆及使用该寄存器堆的可重构计算装置的制作方法
技术领域
以下描述涉及ー种在多线程系统中 使用寄存器的方法。
背景技术
可重构体系结构是指计算装置的硬件配置可被改变以最优地执行任务的体系结构。当仅按硬件方式处理任务时,由于固定的硬件配置,所以一旦在任务的处理过程中发生改变,就难以有效地完成任务。反之,如果仅按软件方式处理任务,则可通过重构软件来处理任务并可对任务的处理过程中发生的改变进行处理,但是处理速度低于按硬件方式处理数据时的速度。可重构体系结构基于硬件优点和软件优点两者来处理任务。近来,这样的可重构体系结构已在反复执行相同任务的数字信号处理领域引起了更多关注。多种可重构体系结构之ー是粗粒度阵列。粗粒度阵列由多个处理单元组成。所述处理单元之间的连接被调整以最优地执行特定任务。在粗粒度阵列中,处理单元能够同时处理不同的线程。例如,在可被并行处理的线程#0和线程#1的情况下,处理单元#0可处理线程#0,处理单元#1可处理线程#1。然而,当线程#0和线程#1涉及同一寄存器时,无法保证有效的多线程。在这种情况下,当程序员直接编写代码或者编译器编译源代码时,线程需要被适当地调度,这会造成多线程系统中的开销。

发明内容
在一个总体方面,提供了ー种寄存器堆,所述寄存器堆包括多个寄存器,配置为形成至少ー个寄存器簇,每个寄存器配置为具有针对每个簇定义的虚拟索引和针对每个寄存器定义的物理索引;索引转换单元,配置为将虚拟索引转换为物理索引。在另ー总体方面,提供了一种计算装置,所述计算装置包括多个寄存器,配置为形成至少ー个寄存器簇,每个寄存器配置为具有针对每个簇定义的虚拟索引和针对每个寄存器定义的物理索引;索引转换单元,配置为将虚拟索引转换为物理索引;多个功能単元,配置为形成与寄存器簇对应的至少ー个功能单元簇,并基于功能单元簇通过虚拟索引访问各个寄存器。在另ー总体方面,提供了一种计算装置,所述计算装置包括多个寄存器,配置为形成第一寄存器簇和第二寄存器簇,每个寄存器配置为具有针对每个簇定义的虚拟索引和针对每个寄存器定义的物理索引;多个功能単元,配置为形成第一功能单元簇和第二功能单元簇,并通过定义的虚拟索引访问各个寄存器;第一偏移量存储器,配置为存储与默认值对应的第一偏移量;第二偏移量存储器,配置为存储与属于第一寄存器簇的寄存器的数量对应的第二偏移量;第一转换单元,配置为从第一功能单元簇接收虚拟索引,并通过将所述虚拟索引与第一偏移量相加来将接收的虚拟索引转换为物理索引;第二转换单元,配置为从第二功能单元簇接收虚拟索引,并通 过将所述虚拟索引与第二偏移量相加来将接收的虚拟索引转换为物理索引。其他特点和方面通过以下详细的描述、附图和权利要求会是清楚的。


图I是示出寄存器堆(register file)的示例的示图。图2是示出计算装置的示例的示图。图3是示出索引转换模块的示例的示图。图4是示出索引转换模块的另一示例的示图。图5是示出计算装置的另ー示例的示图。贯穿附图及详细的说明,除非另有描述,否则相同的附图标号将被理解为是指相同的部件、特征和结构。为了清楚、例证和方便,可夸大这些部件的相对大小和描绘。
具体实施例方式提供以下描述以帮助读者全面理解在此描述的方法、设备和/或系统。因此,在此描述的方法、设备和/或系统的各种改变、修改和等同物将被建议给本领域的普通技术人员。此外,为了更加清楚和简明,可省略已知功能和构造的描述。图I示出寄存器堆的示例。參照图I中示出的示例,寄存器堆100可包括寄存器单元101和索引转换单元102。寄存器单元101可包括多个寄存器。例如,寄存器单元101可包括64个寄存器RO 至 R63。寄存器RO至R63可形成至少ー个簇。例如,寄存器RO至R31形成簇#0 110,寄存器R32至R47形成簇#1 111,寄存器R48至R63可形成簇#2 112。寄存器RO至R63中的每ー个可具有物理索引和虚拟索引。物理索引可与各个寄存器RO至R63的物理位置或地址对应。物理索引可被分配给各个寄存器RO至R63。虚拟索引可基于簇而被分配。例如,簇#0 110可分配有从O开始到31的虚拟索引,簇#1 111可分配有从O开始到15的虚拟索引并且簇#2 112可分配有从O开始到15的虚拟索引。索引转换单元102可将虚拟索引转换为物理索引。例如,假设可被同时处理的线程#0和线程#1分别使用簇#0 110和簇#1 111,并且线程#0和线程#1中的每ー个访问寄存器RO至R63。如果线程#O用于将数据写入到寄存器R2中,则线程#O可产生虚拟索引“ 2”。响应于从线程#0接收到虚拟索引“2”,由于线程#0对应于簇#0 110,因此可启用索引转换单元102将接收的虚拟索引“2”转换为对应的物理索引“2”。因此,允许线程#0通过虚拟索弓I “2”访问寄存器R2。此外,如果线程#I用于将数据写入到寄存器R34中,则线程#I也可产生虚拟索引“2”。响应于接收到虚拟索引“ 2”,由于线程#I对应于簇#1 111,因此可启用索引转换单元102将产生的虚拟索引“ 2”转换为对应的物理索引“ 34”。因此,可允许线程#I通过虚拟索弓I “2”访问寄存器R34。如上所述,寄存器堆 100基于簇被分配虚拟索引,并且允许每个线程通过虚拟索引访问寄存器,从而多线程能够动态使用簇寄存器。在另ー示例中,除64个寄存器以外,还可使用32、128或任意其他数量的寄存器。此外,形成的簇的数量和属于每个簇的寄存器的数量可根据使用的目的以及应用而不同。例如,通过将所有寄存器分组可仅形成ー个簇,或者通过将每16个寄存器分为ー组可形成4个簇。可基于合适的偏移量值来以简单的过程执行从虚拟索引到物理索引的转换或翻译,其中,所述偏移量值根据簇的形成而被设置并被存储在索引转换单元102中。可由比特数据来表示物理索引和虚拟索引。例如,在64个寄存器的情况下,可由6比特的数据来表示物理索引和虚拟索引中的每ー个。此外,如果每个簇的大小(即,属于每个簇的寄存器的数量)彼此不同,则可按照使较大的簇布置在较小的簇之前的方式来形成簇。换句话说,当具有不同大小的多个簇被形成时,可根据所述多个簇的大小来布排列簇,并且具有较小物理索引的寄存器可按从最大的簇开始的顺序被顺序地映射到簇。例如,在64个寄存器将被划分为三组寄存器(包括一 32寄存器的组和两个16寄存器的组)的情况下,寄存器RO至R31可被选择并映射到最大的簇。图2示出计算装置的示例。參照图2中示出的示例,计算装置200可包括寄存器堆201和处理单元202。寄存器堆201可使用图I中示出的示例中显示的寄存器堆100。例如,寄存器堆201可包括寄存器单元203和索引转换单元204。寄存器单元203可包括多个寄存器RO至R63。寄存器RO至R63可形成至少ー个簇。寄存器RO至R63中的每ー个可包括物理索引和虚拟索引。索引转换单元204可包括多个索引转换模块205-1、205-2、205-3和205-4。稍后将描述索引转换模块205-1、205-2、205-3和205-4中的每ー个。处理单元202可由多个功能单元组成。例如,处理单元202可以是包括4到16个功能単元的可重构阵列(CGA)。功能単元FUO至FU3中的每ー个可包括算木/逻辑运算模块来处理工作(例如,线程、任务、指令等)。此外,功能単元FUO至FU3可形成至少ー个簇。在该示例中,由寄存器形成的簇将被称为“RC”,由功能单元形成的簇将被称为“FUC”。由功能单元FUO至FU3形成的FUC可与由寄存器形成的RC进行配对。例如,包括寄存器RO至R31的RC#0与包括功能单元FUO和FUl的FUC#0可形成簇#0 210。此外,包括寄存器R32至R47的RC#1与包括功能单元FU2的FUC#1可形成簇#1 211,包括寄存器R48至R63的RC#2与包括功能单元FU3的FUC#2可形成簇#2 212。因此,功能単元FUO至FU3中的每ー个可使用属于被分配到的簇的寄存器同时处理若干工作。例如,功能単元FUO可使用寄存器RO至R31来处理线程#0’功能単元FU2可使用寄存器R32至R47来处理线程#1。在这种情况下,线程#0和线程#1可以是能够被并行处理的线程。此外,线程#0和线程#1可使得能够在不考虑作为寄存器的物理位置的物理索引的情况下通过虚拟索引来访问寄存器。例如,索引转换单元204可从各个功能単元FUO至FU3接收虚拟索引,并将接收的虚拟索引转换为物理索引。索引转换单元204可包括多个索引转换模块205-1、205-2、205-3和205-4。索引转换模块205-1、205-2、205-3和205-4可与各个功能单元FUO至FU3对应。例如,索引转换模块205-1、205-2、205-3和205 -4可形成在布置在寄存器堆201与各个功能单元FUO至FU3之间的地址端口上。索引转换模块205-1、205-2、205-3和205_4中的每ー个可包括虚拟索引接收单元206、偏移量存储器207和索引增加单元208。虚拟索引接收单元206可从各个功能単元FUO至FU3接收虚拟索引,并可被连接到地址端ロ。偏移量存储器207可存储与属于簇210、211和212中的每ー个的寄存器的数量对应的值。偏移量存储器207可累积地存储属于先前的簇的寄存器的数量。例如,簇#0 210是第一簇,因此不存在先前的簇。因此,与簇#0 210对应的偏移量存储器207可存储“O”。簇#1 211是第二簇并且先前的簇是簇#0 210,因此与簇#1 211对应的偏移量存储器207可存储作为属于簇#0 210的寄存器的数量的“32”。以相似的方式,与簇#2对应的偏移量存储器207可存储作为属于簇#0 210和簇#1 211的寄存器的累积数量的“48”。索引增加单元208可使从虚拟索引接收单元206接收的虚拟索引增加与存储在偏移量存储器207中的偏移量对应的数。在虚拟索引和偏移量由比特数据表示的情况下,索引增加单元208可以是OR运算装置。在示例中,在属于簇#1 211的功能単元FU2产生虚拟索引“5”的情况下,属于簇#1 211的索引转换模块205-3可从功能単元FU2接收虚拟索引“ 5”。然后,索引转换模块205-3可通过将偏移量“32”与虚拟索引“5”相加来严生物理索引“37”。因此,使得功能单元FU2能够通过虚拟索引“5”访问寄存器R37。在另ー示例中,在属于簇#0的功能単元FUO产生虚拟索引“5”的情况下,索引转换模块205-1可从功能単元FUO接收虚拟索引“5”。然后,索引转换模块205-1可通过将偏移量“O”与虚拟索引“5”相加来产生物理索引“5”。因此,使得功能単元FUO能够通过虚拟索引“5”来访问寄存器R5。也就是说,即使当功能単元FUO和功能単元FU2使用相同的索引“ 5”时,也会根据所述功能単元所属的簇来分配不同的寄存器。因此,允许动态地对寄存器RO至R63进行分簇以在没有编译器或程序员的干预的情况下进行使用。此外,分簇的方法可根据使用目的和应用而变化,并且计算装置还可包括基于每种类型的簇来存储偏移量信息的偏移量信息存储器(未示出)。图3示出索引转换模块的示例。參照图3示出的示例,索引转换单元300可包括虚拟索引接收单元301、偏移量存储器302和OR运算器303。连接到寄存器堆的地址端ロ的虚拟索引接收单元301可接收虚拟索引。例如,虚拟索引接收单元301可从属于簇#1的功能単元FU2接收虚拟索引“OxbOOOlOl”。偏移量存储器302可存储属于先前的簇的寄存器的累积数量。例如,属于簇#1的偏移量存储器302可存储指示属于簇#0的寄存器的数量的“OxblOOOOO”。
OR运算器303可对虚拟索引和偏移量执行OR运算。例如,OR运算器303可对虚拟索引“ OxbOOOlOl”和偏移量“ OxblOOOOO”执行OR运算以产生物理索引“0xbl00101”。图4示出索引转换模块的另一示例。參照图4中示出的示例,索引转换单元400可包括虚拟索引接收单元401、掩码存储器402、AND运算器403、偏移量存储器404和OR运算器405。连接到寄存器堆的地址端ロ的虚拟索引接 收单元401可接收虚拟索引。例如,虚拟索引接收单元401可从属于簇#1的功能単元FU2接收虚拟索引“OxbOOOlOl”。掩码存储器402可存储用于验证虚拟索引的比特数的掩码值。例如,在簇#1的情况下,需要至少4比特来表示16个寄存器的虚拟地址,因此掩码值可被设置为“OxbOOllll”。AND运算器403可对虚拟索引和掩码值执行AND运算。如果虚拟索引正常,则来自AND运算器403的输出与虚拟索引相同。偏移量存储器404可存储属于先前的簇的寄存器的累积数量。例如,属于簇#1的偏移量存储器404可存储指示属于簇#0的寄存器的数量的“OxblOOOOO”。OR运算器405可对来自AND运算器403的输出和偏移量执行OR运算。例如,OR运算器可对作为来自AND运算器403的输出的“OxbOOOlOl”和偏移量“OxblOOOOO”执行OR运算以产生物理索引“OxblOOlOl”。图5示出计算装置的另ー示例。參照图5中示出的示例,计算装置500可包括寄存器堆501和处理单元502。寄存器堆501和处理单元502与图2中示出的示例中显示的寄存器堆和处理单元相同,因此将不重复其详细描述。与图2中示出的计算装置200不同,计算装置500形成两个簇。例如,包括寄存器RO至R31的RC#0以及包括功能单元FUO和FUl的FUC#0可形成簇#0 510,包括寄存器R32至R63的RC#1以及包括功能单元FU2和FU3的FUC#1可形成簇#1 511。因此,属于簇#0的索引转换模块505-1和505-2可具有针对簇#0设置的偏移量“0”,属于簇#1的索引转换模块505-3和505-4可具有针对簇#1设置的偏移量“32”。在图2与图5中示出的示例之间的比较中,应该理解,图2中示出的示例指示2-1-1簇模式,图5中示出的示例指示2-2簇模式。如上所述,计算装置可提供各种簇模式,并且根据簇模式,多个寄存器可基于簇被分配虚拟索引,并且虚拟索引被适当地翻译为物理索引,从而多线程能够基于簇寄存器而被有效地处理。上述方法和/或操作可被记录、存储或固定在一个或多个计算机可读存储介质中,所述计算机可读存储介质包括将由计算机执行的程序指令以使处理器运行或执行所述程序指令。所述介质还可单独包括程序指令、数据文件、数据结构等或数据文件、数据结构等与程序指令的组合。计算机可读存储介质的示例包括磁介质(例如,硬盘、软盘和磁带)、光介质(例如,CD ROM盘和DVD)、磁光介质(例如,光盘)以及专门配置为存储和执行程序指令的硬件装置(例如,只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括(例如,由编译器产生的)机器代码和包含可由计算机使用解释器执行的更高级代码的文件。描述的硬件装置可被配置用作ー个或多个软件模块以执行上述操作和方法,反之亦然。此外,计算机可读存储介质可分布在通过网络连接的计算机系统中,并且计算机可读代码或程序指令可以以分布方式被存储和执行。以上已描述了多个示例。然而,应该理解,可进行各种修改。例如,如果以不同的顺序执行描述的技术,和/或如 果描述的系统、体系结构、装置或电路中的组件以不同的方式组合和/或被其他组件或其等同物代替或补充,则会实现合适的結果。因此,其他实施方式在权利要求的范围内。
权利要求
1.一种寄存器堆,包括 多个寄存器,配置为形成至少一个寄存器簇,每个寄存器配置为具有针对每个簇定义的虚拟索引和针对每个寄存器定义的物理索引;以及索引转换单元,配置为将虚拟索引转换为物理索引。
2.如权利要求I所述的寄存器堆,其中,索引转换单元包括 偏移量存储器,配置为存储与属于簇的寄存器的数量对应的偏移量,以及 索引增加单元,配置为将虚拟索引与偏移量相加。
3.如权利要求2所述的寄存器堆,其中,索引增加单元包括0R运算器,用于对虚拟索引和偏移量执行OR运算。
4.如权利要求2所述的寄存器堆,还包括 掩码存储器,配置为存储用于验证虚拟索引的比特数的掩码比特;以及 AND运算器,配置为对虚拟索引和掩码比特执行AND运算。
5.如权利要求I所述的寄存器堆,其中,索引转换单元形成在寄存器堆的每个地址端口上。
6.一种计算装置,包括 多个寄存器,配置为形成至少一个寄存器簇,每个寄存器配置为具有针对每个簇定义的虚拟索引和针对每个寄存器定义的物理索引; 索引转换单元,配置为将虚拟索引转换为物理索引;以及 多个功能单元,配置为形成与寄存器簇对应的至少一个功能单元簇,并基于功能单元簇通过虚拟索弓I访问各个寄存器。
7.如权利要求6所述的计算装置,其中,索引转换单元包括 偏移量存储器,配置为存储与属于寄存器簇的寄存器的数量对应的偏移量,以及 索引增加单元,配置为将虚拟索引与偏移量相加。
8.如权利要求7所述的计算装置,其中,索引增加单元包括0R运算器,用于对虚拟索引和偏移量执行OR运算。
9.如权利要求7所述的计算装置,还包括 掩码存储器,配置为存储用于验证虚拟索引的比特数的掩码比特;以及 AND运算器,配置为对虚拟索引和掩码比特执行AND运算。
10.如权利要求6所述的计算装置,其中,索引转换单元形成在包括多个寄存器的寄存器堆的每个地址端口上。
11.一种计算装置,包括 多个寄存器,配置为形成第一寄存器簇和第二寄存器簇,每个寄存器配置为具有针对每个簇定义的虚拟索引和针对每个寄存器定义的物理索引; 多个功能单元,配置为形成第一功能单元簇和第二功能单元簇,并通过定义的虚拟索引访问各个寄存器; 第一偏移量存储器,配置为存储与默认值对应的第一偏移量; 第二偏移量存储器,配置为存储与属于第一寄存器簇的寄存器的数量对应的第二偏移量; 第一转换单元,配置为从第一功能单元簇接收虚拟索引,并通过将所述虚拟索引与第一偏移量相加来将接收的虚拟索引转换为物理索引;以及 第二转换单元,配置为从第二功能单元簇接收虚拟索引,并通过将所述虚拟索引与第二偏移量相加来将接收的虚拟索引转换为物理索引。
12.如权利要求11所述的计算装置,其中,第一转换单元或第二转换单元对虚拟索引和第一偏移量或者对虚拟索引和第二偏移量执行OR运算。
全文摘要
一种动态分簇的寄存器堆及使用该寄存器堆的可重构计算装置。所述寄存器堆包括多个寄存器,每个寄存器具有物理索引和虚拟索引。在一些寄存器形成多个簇的情况下,虚拟索引被分配给各个簇。基于合适的偏移量将虚拟索引转换为物理索引。因此,寄存器堆可在根据使用目的被分簇的情况下而被使用,或者可在没有根据使用目的被分簇的情况下被使用。
文档编号G06F9/30GK102681820SQ20111042595
公开日2012年9月19日 申请日期2011年12月19日 优先权日2010年12月17日
发明者伯恩哈德·埃格, 刘东勋, 金元燮 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1