首页> 中国专利> 动态分簇的寄存器堆及使用该寄存器堆的可重构计算装置

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

摘要

一种动态分簇的寄存器堆及使用该寄存器堆的可重构计算装置。所述寄存器堆包括:多个寄存器,每个寄存器具有物理索引和虚拟索引。在一些寄存器形成多个簇的情况下,虚拟索引被分配给各个簇。基于合适的偏移量将虚拟索引转换为物理索引。因此,寄存器堆可在根据使用目的被分簇的情况下而被使用,或者可在没有根据使用目的被分簇的情况下被使用。

著录项

  • 公开/公告号CN102681820A

    专利类型发明专利

  • 公开/公告日2012-09-19

    原文格式PDF

  • 申请/专利权人 三星电子株式会社;

    申请/专利号CN201110425956.2

  • 发明设计人 伯恩哈德·埃格;刘东勋;金元燮;

    申请日2011-12-19

  • 分类号G06F9/30;G06F9/302;

  • 代理机构北京铭硕知识产权代理有限公司;

  • 代理人王兆赓

  • 地址 韩国京畿道水原市

  • 入库时间 2023-12-18 08:00:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-28

    授权

    授权

  • 2013-12-25

    实质审查的生效 IPC(主分类):G06F9/30 申请日:20111219

    实质审查的生效

  • 2012-09-19

    公开

    公开

说明书

本申请要求于2010年12月17日提交到韩国知识产权局的第 10-2010-0130251号韩国专利申请的权益,该申请的全部公开通过引用包含于 此以用于所有目的。

技术领域

以下描述涉及一种在多线程系统中使用寄存器的方法。

背景技术

可重构体系结构是指计算装置的硬件配置可被改变以最优地执行任务的 体系结构。

当仅按硬件方式处理任务时,由于固定的硬件配置,所以一旦在任务的 处理过程中发生改变,就难以有效地完成任务。反之,如果仅按软件方式处 理任务,则可通过重构软件来处理任务并可对任务的处理过程中发生的改变 进行处理,但是处理速度低于按硬件方式处理数据时的速度。

可重构体系结构基于硬件优点和软件优点两者来处理任务。近来,这样 的可重构体系结构已在反复执行相同任务的数字信号处理领域引起了更多关 注。

多种可重构体系结构之一是粗粒度阵列。粗粒度阵列由多个处理单元组 成。所述处理单元之间的连接被调整以最优地执行特定任务。

在粗粒度阵列中,处理单元能够同时处理不同的线程。例如,在可被并 行处理的线程#0和线程#1的情况下,处理单元#0可处理线程#0,处理单元 #1可处理线程#1。然而,当线程#0和线程#1涉及同一寄存器时,无法保证 有效的多线程。在这种情况下,当程序员直接编写代码或者编译器编译源代 码时,线程需要被适当地调度,这会造成多线程系统中的开销。

发明内容

在一个总体方面,提供了一种寄存器堆,所述寄存器堆包括:多个寄存 器,配置为形成至少一个寄存器簇,每个寄存器配置为具有针对每个簇定义 的虚拟索引和针对每个寄存器定义的物理索引;索引转换单元,配置为将虚 拟索引转换为物理索引。

在另一总体方面,提供了一种计算装置,所述计算装置包括:多个寄存 器,配置为形成至少一个寄存器簇,每个寄存器配置为具有针对每个簇定义 的虚拟索引和针对每个寄存器定义的物理索引;索引转换单元,配置为将虚 拟索引转换为物理索引;多个功能单元,配置为形成与寄存器簇对应的至少 一个功能单元簇,并基于功能单元簇通过虚拟索引访问各个寄存器。

在另一总体方面,提供了一种计算装置,所述计算装置包括:多个寄存 器,配置为形成第一寄存器簇和第二寄存器簇,每个寄存器配置为具有针对 每个簇定义的虚拟索引和针对每个寄存器定义的物理索引;多个功能单元, 配置为形成第一功能单元簇和第二功能单元簇,并通过定义的虚拟索引访问 各个寄存器;第一偏移量存储器,配置为存储与默认值对应的第一偏移量; 第二偏移量存储器,配置为存储与属于第一寄存器簇的寄存器的数量对应的 第二偏移量;第一转换单元,配置为从第一功能单元簇接收虚拟索引,并通 过将所述虚拟索引与第一偏移量相加来将接收的虚拟索引转换为物理索引; 第二转换单元,配置为从第二功能单元簇接收虚拟索引,并通过将所述虚拟 索引与第二偏移量相加来将接收的虚拟索引转换为物理索引。

其他特点和方面通过以下详细的描述、附图和权利要求会是清楚的。

附图说明

图1是示出寄存器堆(register file)的示例的示图。

图2是示出计算装置的示例的示图。

图3是示出索引转换模块的示例的示图。

图4是示出索引转换模块的另一示例的示图。

图5是示出计算装置的另一示例的示图。

贯穿附图及详细的说明,除非另有描述,否则相同的附图标号将被理解 为是指相同的部件、特征和结构。为了清楚、例证和方便,可夸大这些部件 的相对大小和描绘。

具体实施方式

提供以下描述以帮助读者全面理解在此描述的方法、设备和/或系统。因 此,在此描述的方法、设备和/或系统的各种改变、修改和等同物将被建议给 本领域的普通技术人员。此外,为了更加清楚和简明,可省略已知功能和构 造的描述。

图1示出寄存器堆的示例。

参照图1中示出的示例,寄存器堆100可包括寄存器单元101和索引转 换单元102。

寄存器单元101可包括多个寄存器。例如,寄存器单元101可包括64 个寄存器:R0至R63。

寄存器R0至R63可形成至少一个簇。例如,寄存器R0至R31形成簇 #0 110,寄存器R32至R47形成簇#1 111,寄存器R48至R63可形成簇#2 112。

寄存器R0至R63中的每一个可具有物理索引和虚拟索引。物理索引可 与各个寄存器R0至R63的物理位置或地址对应。物理索引可被分配给各个 寄存器R0至R63。虚拟索引可基于簇而被分配。例如,簇#0 110可分配有从 0开始到31的虚拟索引,簇#1 111可分配有从0开始到15的虚拟索引并且簇 #2 112可分配有从0开始到15的虚拟索引。

索引转换单元102可将虚拟索引转换为物理索引。例如,假设可被同时 处理的线程#0和线程#1分别使用簇#0 110和簇#1 111,并且线程#0和线程#1 中的每一个访问寄存器R0至R63。

如果线程#0用于将数据写入到寄存器R2中,则线程#0可产生虚拟索引 “2”。响应于从线程#0接收到虚拟索引“2”,由于线程#0对应于簇#0 110, 因此可启用索引转换单元102将接收的虚拟索引“2”转换为对应的物理索引 “2”。因此,允许线程#0通过虚拟索引“2”访问寄存器R2。

此外,如果线程#1用于将数据写入到寄存器R34中,则线程#1也可产 生虚拟索引“2”。响应于接收到虚拟索引“2”,由于线程#1对应于簇#1 111, 因此可启用索引转换单元102将产生的虚拟索引“2”转换为对应的物理索引 “34”。因此,可允许线程#1通过虚拟索引“2”访问寄存器R34。

如上所述,寄存器堆100基于簇被分配虚拟索引,并且允许每个线程通 过虚拟索引访问寄存器,从而多线程能够动态使用簇寄存器。

在另一示例中,除64个寄存器以外,还可使用32、128或任意其他数量 的寄存器。

此外,形成的簇的数量和属于每个簇的寄存器的数量可根据使用的目的 以及应用而不同。例如,通过将所有寄存器分组可仅形成一个簇,或者通过 将每16个寄存器分为一组可形成4个簇。可基于合适的偏移量值来以简单的 过程执行从虚拟索引到物理索引的转换或翻译,其中,所述偏移量值根据簇 的形成而被设置并被存储在索引转换单元102中。

可由比特数据来表示物理索引和虚拟索引。例如,在64个寄存器的情况 下,可由6比特的数据来表示物理索引和虚拟索引中的每一个。

此外,如果每个簇的大小(即,属于每个簇的寄存器的数量)彼此不同, 则可按照使较大的簇布置在较小的簇之前的方式来形成簇。换句话说,当具 有不同大小的多个簇被形成时,可根据所述多个簇的大小来布排列簇,并且 具有较小物理索引的寄存器可按从最大的簇开始的顺序被顺序地映射到簇。

例如,在64个寄存器将被划分为三组寄存器(包括一32寄存器的组和 两个16寄存器的组)的情况下,寄存器R0至R31可被选择并映射到最大的 簇。

图2示出计算装置的示例。

参照图2中示出的示例,计算装置200可包括寄存器堆201和处理单元 202。

寄存器堆201可使用图1中示出的示例中显示的寄存器堆100。例如, 寄存器堆201可包括寄存器单元203和索引转换单元204。寄存器单元203 可包括多个寄存器R0至R63。寄存器R0至R63可形成至少一个簇。寄存器 R0至R63中的每一个可包括物理索引和虚拟索引。索引转换单元204可包括 多个索引转换模块205-1、205-2、205-3和205-4。稍后将描述索引转换模块 205-1、205-2、205-3和205-4中的每一个。

处理单元202可由多个功能单元组成。例如,处理单元202可以是包括 4到16个功能单元的可重构阵列(CGA)。功能单元FU0至FU3中的每一个 可包括算术/逻辑运算模块来处理工作(例如,线程、任务、指令等)。

此外,功能单元FU0至FU3可形成至少一个簇。在该示例中,由寄存器 形成的簇将被称为“RC”,由功能单元形成的簇将被称为“FUC”。

由功能单元FU0至FU3形成的FUC可与由寄存器形成的RC进行配对。 例如,包括寄存器R0至R31的RC#0与包括功能单元FU0和FU1的FUC#0 可形成簇#0 210。此外,包括寄存器R32至R47的RC#1与包括功能单元FU2 的FUC#1可形成簇#1 211,包括寄存器R48至R63的RC#2与包括功能单元 FU3的FUC#2可形成簇#2 212。

因此,功能单元FU0至FU3中的每一个可使用属于被分配到的簇的寄存 器同时处理若干工作。例如,功能单元FU0可使用寄存器R0至R31来处理 线程#0,功能单元FU2可使用寄存器R32至R47来处理线程#1。在这种情况 下,线程#0和线程#1可以是能够被并行处理的线程。

此外,线程#0和线程#1可使得能够在不考虑作为寄存器的物理位置的物 理索引的情况下通过虚拟索引来访问寄存器。例如,索引转换单元204可从 各个功能单元FU0至FU3接收虚拟索引,并将接收的虚拟索引转换为物理索 引。

索引转换单元204可包括多个索引转换模块205-1、205-2、205-3和205-4。 索引转换模块205-1、205-2、205-3和205-4可与各个功能单元FU0至FU3 对应。例如,索引转换模块205-1、205-2、205-3和205-4可形成在布置在寄 存器堆201与各个功能单元FU0至FU3之间的地址端口上。

索引转换模块205-1、205-2、205-3和205-4中的每一个可包括虚拟索引 接收单元206、偏移量存储器207和索引增加单元208。

虚拟索引接收单元206可从各个功能单元FU0至FU3接收虚拟索引,并 可被连接到地址端口。

偏移量存储器207可存储与属于簇210、211和212中的每一个的寄存器 的数量对应的值。偏移量存储器207可累积地存储属于先前的簇的寄存器的 数量。例如,簇#0 210是第一簇,因此不存在先前的簇。因此,与簇#0 210 对应的偏移量存储器207可存储“0”。簇#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的功能单元FU0产生虚拟索引“5”的情况 下,索引转换模块205-1可从功能单元FU0接收虚拟索引“5”。然后,索引 转换模块205-1可通过将偏移量“0”与虚拟索引“5”相加来产生物理索引 “5”。因此,使得功能单元FU0能够通过虚拟索引“5”来访问寄存器R5。

也就是说,即使当功能单元FU0和功能单元FU2使用相同的索引“5” 时,也会根据所述功能单元所属的簇来分配不同的寄存器。因此,允许动态 地对寄存器R0至R63进行分簇以在没有编译器或程序员的干预的情况下进 行使用。

此外,分簇的方法可根据使用目的和应用而变化,并且计算装置还可包 括基于每种类型的簇来存储偏移量信息的偏移量信息存储器(未示出)。

图3示出索引转换模块的示例。

参照图3示出的示例,索引转换单元300可包括虚拟索引接收单元301、 偏移量存储器302和OR运算器303。

连接到寄存器堆的地址端口的虚拟索引接收单元301可接收虚拟索引。 例如,虚拟索引接收单元301可从属于簇#1的功能单元FU2接收虚拟索引 “0xb000101”。

偏移量存储器302可存储属于先前的簇的寄存器的累积数量。例如,属 于簇#1的偏移量存储器302可存储指示属于簇#0的寄存器的数量的 “0xb100000”。

OR运算器303可对虚拟索引和偏移量执行OR运算。例如,OR运算器 303可对虚拟索引“0xb000101”和偏移量“0xb100000”执行OR运算以产生 物理索引“0xb100101”。

图4示出索引转换模块的另一示例。

参照图4中示出的示例,索引转换单元400可包括虚拟索引接收单元 401、掩码存储器402、AND运算器403、偏移量存储器404和OR运算器405。

连接到寄存器堆的地址端口的虚拟索引接收单元401可接收虚拟索引。 例如,虚拟索引接收单元401可从属于簇#1的功能单元FU2接收虚拟索引 “0xb000101”。

掩码存储器402可存储用于验证虚拟索引的比特数的掩码值。例如,在 簇#1的情况下,需要至少4比特来表示16个寄存器的虚拟地址,因此掩码 值可被设置为“0xb001111”。

AND运算器403可对虚拟索引和掩码值执行AND运算。如果虚拟索引 正常,则来自AND运算器403的输出与虚拟索引相同。

偏移量存储器404可存储属于先前的簇的寄存器的累积数量。例如,属 于簇#1的偏移量存储器404可存储指示属于簇#0的寄存器的数量的 “0xb100000”。

OR运算器405可对来自AND运算器403的输出和偏移量执行OR运算。 例如,OR运算器可对作为来自AND运算器403的输出的“0xb000101”和 偏移量“0xb100000”执行OR运算以产生物理索引“0xb100101”。

图5示出计算装置的另一示例。

参照图5中示出的示例,计算装置500可包括寄存器堆501和处理单元 502。寄存器堆501和处理单元502与图2中示出的示例中显示的寄存器堆和 处理单元相同,因此将不重复其详细描述。

与图2中示出的计算装置200不同,计算装置500形成两个簇。例如, 包括寄存器R0至R31的RC#0以及包括功能单元FU0和FU1的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)、闪存等)。 程序指令的示例包括(例如,由编译器产生的)机器代码和包含可由计算机 使用解释器执行的更高级代码的文件。描述的硬件装置可被配置用作一个或 多个软件模块以执行上述操作和方法,反之亦然。此外,计算机可读存储介 质可分布在通过网络连接的计算机系统中,并且计算机可读代码或程序指令 可以以分布方式被存储和执行。

以上已描述了多个示例。然而,应该理解,可进行各种修改。例如,如 果以不同的顺序执行描述的技术,和/或如果描述的系统、体系结构、装置或 电路中的组件以不同的方式组合和/或被其他组件或其等同物代替或补充,则 会实现合适的结果。因此,其他实施方式在权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号