虚拟寄存器堆转让专利

申请号 : CN201680024241.7

文献号 : CN108541313B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·D·勒戴尔G·C·罗杰斯

申请人 : 美光科技公司

摘要 :

本发明涉及一种虚拟寄存器堆。源代码可经编译以针对经受逻辑操作的数据包含对虚拟寄存器堆的参考。可在运行时间将所述参考解参考以根据所述虚拟寄存器堆获得存储器装置元件的物理地址。可在存储器装置中对存储于所述存储器装置元件中的数据执行所述逻辑操作。

权利要求 :

1.一种方法,其包括:

编译源代码以针对经受逻辑操作的数据包含对虚拟寄存器堆的参考;及在运行时间将所述参考解参考以根据所述虚拟寄存器堆获得存储器装置元件的物理地址,其中将在存储器装置中对存储于所述存储器装置元件中的数据执行所述逻辑操作。

2.根据权利要求1所述的方法,其中编译所述源代码包括在耦合到所述存储器装置的主机处编译所述源代码。

3.根据权利要求1所述的方法,其中对所述虚拟寄存器堆的所述参考包括到所述虚拟寄存器堆中的虚拟向量寄存器的索引。

4.根据权利要求3所述的方法,其中所述方法包含将虚拟地址存储于所述虚拟向量寄存器中。

5.根据权利要求1所述的方法,其中所述方法包含在运行时间在所述存储器装置中执行所述逻辑操作。

6.根据权利要求5所述的方法,其中所述逻辑操作不由耦合到所述存储器装置的主机执行。

7.根据权利要求5所述的方法,其中存储于所述物理地址中的所述数据不被传送到耦合到用于执行所述逻辑操作的所述存储器装置的主机。

8.根据权利要求1所述的方法,其中解参考包括与耦合到所述存储器装置的主机的存储器管理单元解参考。

9.根据权利要求1所述的方法,其中解参考包括与所述存储器装置解参考。

10.根据权利要求1所述的方法,其中所述方法包含:编译所述源代码以针对经受存储器操作的数据包含对所述虚拟寄存器堆的参考;及在运行时间将所述参考解参考以根据所述虚拟寄存器堆获得存储器装置元件的物理地址。

11.一种存储指令的非暂时性计算机可读媒体,所述指令可由处理器执行以:在主机存储器中界定具有足以容纳虚拟寄存器堆的备份存储的空间的缓冲器;

将所述缓冲器在逻辑上分成共同地构成所述虚拟寄存器堆的虚拟向量寄存器、虚拟标量寄存器及虚拟控制寄存器;

在编译时间用到所述虚拟寄存器堆的相应索引来表示向量寄存器、标量寄存器及控制寄存器;

将存储器装置元件的基本虚拟地址存储于所述虚拟向量寄存器中;及将存储器装置元件的跨距及以存储器装置元件的数目为单位的长度存储于所述虚拟寄存器堆中,所述跨距及所述长度连同经翻译的所述基本虚拟地址一起界定哪些存储器装置元件对应于所述虚拟向量寄存器。

12.根据权利要求11所述的媒体,其包含用以针对固定量的所述备份存储用到所述虚拟寄存器堆的相应索引来参考所述向量寄存器及所述标量寄存器的指令。

13.根据权利要求11所述的媒体,其包含用以针对可变量的所述备份存储用到所述虚拟寄存器堆的相应索引来参考所述控制寄存器的指令。

14.根据权利要求11所述的媒体,其包含用以在运行时间将所述基本虚拟地址翻译为物理地址的指令。

15.根据权利要求11所述的媒体,其包含用以在运行时间对存储于所述存储器装置元件中的数据执行逻辑操作的指令,所述逻辑操作对表示所述向量寄存器的所述索引进行寻址。

16.一种方法,其包括:

利用主机装置来编译源代码;及

利用虚拟寄存器堆使对存储器装置的存取虚拟化,所述虚拟寄存器堆存储由经编译源代码中的索引进行参考的虚拟地址;及根据所述经编译源代码的对特定虚拟地址进行寻址的一部分来初始化逻辑操作,其中将在所述存储器装置中对存储于对应于所述特定虚拟地址的特定物理地址中的数据执行所述逻辑操作。

17.根据权利要求16所述的方法,其中编译源代码包含将经编译代码产生为包含用于逻辑操作的所述索引。

18.根据权利要求17所述的方法,其中编译所述源代码包含将所述经编译代码产生为不包含所述特定物理地址。

19.根据权利要求16所述的方法,其中使对所述存储器装置的存取虚拟化包括以所述虚拟寄存器堆为目标来作为所述主机装置的将在所述存储器装置中执行的所述逻辑操作的寄存器。

20.根据权利要求16所述的方法,其中所述方法包含不将所述特定物理地址存储于所述虚拟寄存器堆中。

21.一种方法,其包括:

在主机上运行应用程序;

在运行时间创建包含存储器装置元件的虚拟存储器地址的虚拟寄存器堆;

在运行时间通过所述应用程序将包含所述虚拟寄存器堆的库下载到所述主机的主要存储器中;及响应于将在所述存储器装置中执行的逻辑操作将特定虚拟存储器地址翻译为物理地址。

22.根据权利要求21所述的方法,其中所述方法包含不将待被执行所述逻辑操作的数据存储于所述虚拟寄存器堆中且不将所述物理地址存储于所述虚拟寄存器堆中。

23.根据权利要求21所述的方法,其中翻译包括经由所述主机的存储器管理单元翻译。

24.根据权利要求21所述的方法,其中翻译包括经由所述存储器装置的运行时间环境翻译。

25.根据权利要求21所述的方法,其中所述方法包含在不编辑所述虚拟寄存器堆的情况下在所述主机的所述主要存储器中重新定位所述应用程序。

26.一种设备,其包括:

主机,其包含处理器及主要存储器;及

存储器装置,其耦合到所述主机,其中所述主机经配置以:在所述主要存储器中界定缓冲器作为存储所述存储器装置的元件的虚拟地址的虚拟寄存器堆;

编译源代码以将所述虚拟寄存器堆为目标来用于进行将在所述存储器装置中执行的逻辑操作,同所述逻辑操作是在所述虚拟寄存器堆中执行一样;及执行经编译源代码以致使所述逻辑操作在所述存储器装置中执行。

27.根据权利要求26所述的设备,其中所述主机经配置以在运行时间创建所述虚拟寄存器堆。

28.根据权利要求26所述的设备,其中所述主机包含存储器管理单元,所述存储器管理单元经配置以将所述虚拟地址翻译为所述存储器装置的所述元件的物理地址。

29.根据权利要求26所述的设备,其中所述虚拟寄存器堆不存储对应于所述存储器装置的所述元件的数据。

30.根据权利要求26所述的设备,其中所述虚拟寄存器堆不存储所述存储器装置的所述元件的物理地址。

说明书 :

虚拟寄存器堆

技术领域

[0001] 本发明一般来说涉及半导体存储器及方法,且更特定来说,涉及虚拟寄存器堆。

背景技术

[0002] 存储器装置通常提供为计算装置或其它电子装置中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性及非易失性存储器。易失性存储器可需要电力以维持其数据(例如,用户数据、错误数据等),且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)以及其它。非易失性存储器可通过在未被供电时保留所存储数据而提供持久性数据,且可包含NAND快闪存储器、NOR快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)及电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻式随机存取存储器(RRAM)及磁阻式随机存取存储器(MRAM)(例如自旋扭矩转移随机存取存储器(STT RAM))以及其它。
[0003] 计算系统通常包含若干个处理资源(例如,一或多个处理器),所述处理资源可检索并执行指令且将经执行指令的结果存储到适合位置。处理器可包括若干个功能单元(例如,在本文中称为功能单元电路(FUC)),例如算术逻辑单元(ALU)电路、浮动点单元(FPU)电路及/或组合逻辑区块,举例来说,所述功能单元可执行指令以对数据(例如,一或多个运算元)执行逻辑操作(例如AND、OR、NOT、NAND、NOR及XOR逻辑操作)。
[0004] 可在将指令提供到功能单元电路以用于执行中涉及计算系统中的若干个组件。举例来说,所述指令可由例如控制器及/或主机处理器的处理资源产生。数据(例如,将对其执行指令以执行逻辑操作的运算元)可经存储于可由FUC存取的存储器阵列中。在FUC开始对数据执行指令之前,可从存储器阵列检索指令及/或数据并对其进行定序及/或缓冲。此外,由于可在一个或多个时钟循环中通过FUC执行不同类型的操作,因此还可对操作及/或数据的中间结果进行定序及/或缓冲。在许多实例中,处理资源(例如,处理器及/或相关联FUC)可在存储器阵列外部,且数据可经存取(例如,经由处理资源与存储器阵列之间的总线)以执行指令。数据可经由总线从存储器阵列移动到在存储器阵列外部的寄存器。
[0005] 寄存器堆是中央处理单元(CPU)中的处理器寄存器阵列。举例来说,可通过静态随机存取存储器(SRAM)而实施基于集成电路的寄存器堆。CPU的指令集架构可界定用于在存储器与FUC之间集结数据的一组寄存器。寄存器堆可对编程器可见,此与可不对编程器可见的高速缓冲存储器形成对照。

附图说明

[0006] 图1是根据本发明的若干个实施例的呈包含至少一个存储器系统的计算系统的形式的设备的框图。
[0007] 图2是根据本发明的若干个实施例的存储器装置的一部分的示意图。
[0008] 图3是图解说明根据本发明的若干个实施例的虚拟寄存器堆存储器翻译的框图。

具体实施方式

[0009] 鉴于现代计算机架构的复杂性,软件编程器及软件工具链(例如,编译器、调试器等)可在从目标平台提取高效性能时具有较大难度。添加存储器中处理(PIM)装置可进一步使架构复杂化。大多数现代计算机架构使用寄存器-存储器技术,其中操作在两个单独域中执行。逻辑操作(例如,算术、流控制及组合操作)一般在若干个寄存器堆上执行。存储器操作(例如,下载、存储等)一般在存储器装置上执行。寄存器-存储器架构中的指令利用寄存器索引或存储器地址来指示如何/在何处执行操作。
[0010] PIM计算架构及/或装置可被分类为计算架构分类法中的存储器-存储器装置。此意味着逻辑操作及存储器操作两者均在存储器装置原位上执行。存储器-存储器架构中的指令使用物理地址来指示如何/在何处执行操作。
[0011] 现代应用程序及操作系统使用重新定位及虚拟寻址的概念,此意味着由于实际寻址被虚拟化的事实,因此可将应用程序下载或重新定位到不同物理存储器空间中。应用程序及操作系统驻存于虚拟地址空间中。当进行存储器请求时,硬件及系统架构将这些虚拟地址解参考到其物理地址。然而,包含本身依赖于物理寻址的PIM装置的使用的任何系统架构与虚拟化存储器的概念冲突。
[0012] 本发明的一些实施例可公开由使用寄存器-存储器层的PIM装置所提供的低级存储器功能性。此层在本文中称为虚拟寄存器堆。提供对PIM装置进行寄存器-存储器存取的能力会显著降低原本将经由优化编译器在用于PIM装置的应用程序中使用的定制水平。否则,将针对包含于系统中的每一不同种类的一或若干PIM装置而定制应用程序。向优化编译器及运行时间系统提供以显现为寄存器-存储器架构的架构为目标的能力可大大简化使用PIM装置的实施方案。使PIM装置的物理寻址机制抽象化使得虚拟寻址可充分存在而无冲突可对于将PIM装置与一般在寄存器-存储器架构上进行操作的系统集成在一起为有益的。
[0013] 本发明涉及虚拟寄存器堆。源代码可经编译以针对经受逻辑操作的数据包含对虚拟寄存器堆的参考。所述参考可在运行时间被解参考以根据虚拟寄存器堆获得存储器装置元件的物理地址。可在存储器装置中对存储于存储器装置元件中的数据执行逻辑操作。
[0014] 在本发明的以下详细描述中,参考形成本发明的一部分的所附图式,且图式中以图解说明的方式展示可如何实践本发明的若干个实施例。充分详细地描述这些实施例以使所属领域的技术人员能够实践本发明的实施例,且应理解,可利用其它实施例且可在不背离本发明的范围的情况下做出过程、电及/或结构改变。如本文中所使用,特定来说关于图式中的参考编号的指定符“M”及“N”指示可包含如此指定的若干个特定特征。如本文中所使用,“若干个”特定事物可是指此类事物中的一或多者(例如,若干个存储器装置可是指一或多个存储器装置)。如本文中所使用,术语“第一”及“第二”用于在一个特征与另一特征之间进行区分且未必暗指如此指定的特征之间的次序。
[0015] 本文中的各图遵循其中第一个数字或前几个数字对应于图式的图编号且其余数字识别图式中的元件或组件的编号惯例。可通过使用类似数字来识别不同图之间的类似元件或组件。举例来说,110可指代图1中的元件“10”,且类似元件可在图2中指代为210。一个图中的多个相似元件可用后续接着连字符及另一数字或字母的参考编号来指代。举例来说,240-1可指代图2中的元件20-1且240-N可指代元件40-N,其可与元件240-1相似。可一般在无需连字符及额外数字或字母的情况下指代此类相似元件。举例来说,元件240-1、…、240-N可一般指代为440。如将了解,可添加、交换及/或消除在本文中的各种实施例中所展示的元件以便提供本发明的若干个额外实施例。另外,如将了解,各图中所提供的元件的比例及相对标度打算图解说明本发明的特定实施例且不应在限制意义上进行理解。
[0016] 图1是根据本发明的若干个实施例的呈包含至少一个存储器系统104的计算系统100的形式的设备的框图。如本文中所使用,主机102、存储器系统104、存储器装置110、存储器阵列111及/或感测电路124还可单独地被视为“设备”。
[0017] 计算系统100可包含耦合到存储器系统104的主机102,所述存储器系统包含存储器装置110(例如,包含存储器阵列111及/或感测电路124)。主机102可为主机系统,例如个人膝上型计算机、桌上型计算机、数码相机、移动电话或存储器读卡器以及各种其它类型的主机。主机102可包含系统主板及/或底板且可包含若干个处理资源(例如,一或多个处理器、微处理器或者一些其它类型的控制电路),例如中央处理单元(CPU)106。CPU 106可经由存储器总线116耦合到次要存储装置114及主要存储器112。次要存储装置114可为不可直接由CPU 106存取的存储装置或其它媒体(例如硬盘驱动器、固态驱动器、光盘驱动器),且可为非易失性存储器。主要存储器112可直接由CPU 106存取。主要存储器112可为易失性存储器,例如DRAM。存储器总线116可与控制总线136及I/O总线138相似,但用于CPU 106与主要存储器112之间的通信而非用于主机102与存储器系统104之间的通信。CPU 106可包含耦合到若干个寄存器120及高速缓冲存储器122的逻辑单元118。高速缓冲存储器122可为相对较快寄存器120与相对较慢主要存储器112之间的中间级。将由CPU 106进行操作的数据可在被放置于寄存器120中之前被复制到高速缓冲存储器122,其中操作可受逻辑单元118影响。虽然未具体图解说明,但高速缓冲存储器122可为多电平阶层式高速缓冲存储器。
[0018] 计算系统100可包含单独集成电路或主机102及存储器系统104两者均可在同一集成电路上。举例来说,计算系统100可为服务器系统及/或高性能计算系统及/或其一部分。虽然图1中所展示的实例图解说明具有冯诺依曼(Von Neumann)架构的系统,但本发明的实施例也可以非冯诺依曼架构(例如,图灵机(Turing machine))实施,所述非冯诺依曼架构可不包含通常与冯诺依曼架构相关联的一或多个组件(例如,CPU、ALU等)。
[0019] 为清楚起见,计算系统100已经简化以着重于与本发明特定相关的特征上。举例来说,存储器阵列111可为混合存储器立方体(HMC)、存储器中处理随机存取存储器(PIMRAM)阵列、DRAM阵列、SRAM阵列、STT RAM阵列、PCRAM阵列、TRAM阵列、RRAM阵列、NAND快闪阵列及/或NOR快闪阵列。存储器阵列111可包括存储器单元,所述存储器单元经布置成通过存取线(其可在本文中称为字线或选择线)耦合的行及通过感测线(其可在本文中称为数字线或数据线)耦合的列。虽然图1中展示单个存储器装置110,但实施例并不如此受限制。举例来说,存储器系统104可包含若干个存储器装置110(例如,若干个DRAM单元组)。
[0020] 存储器系统104可包含地址电路126以锁存经由I/O总线138(例如,数据总线)通过I/O电路130提供的地址信号。地址信号可由行解码器128及列解码器134接收并解码以存取存储器装置110。可通过使用感测电路124感测感测线上的电压及/或电流改变而从存储器阵列111读取数据。感测电路124可从存储器阵列111读取并锁存数据页(例如,行)。I/O电路130可用于经由I/O总线138与主机102进行双向数据通信。写入电路132可用于将数据写入到存储器装置110。
[0021] 控制器108可解码由控制总线136从主机102提供的信号。这些信号可包含用于控制对存储器装置110执行的操作(包含数据读取、数据写入及数据擦除操作)的芯片启用信号、写入启用信号及地址锁存信号。信号还可用于控制对存储器装置110执行的逻辑操作,包含算术、流控制及组合操作以及其它。在各种实施例中,控制器108负责执行来自主机102的指令。控制器108可为状态机、定序器、处理器及/或其它控制电路。
[0022] 下文与图2相关联地进一步描述感测电路124的实例。举例来说,在若干个实施例中,感测电路124可包括若干个读出放大器及若干个计算组件,所述若干个计算组件可包括锁存器,所述锁存器用作累加器且可用于执行逻辑操作(例如,对与互补感测线相关联的数据)。逻辑操作可包含布尔(Boolean)操作(例如,AND、OR、NOR、XOR等)、用以执行其它数学操作的布尔操作组合以及非布尔操作。在若干个实施例中,感测电路124可用于在不经由感测线地址存取进行传送的情况下(例如,在不发射列解码信号的情况下)使用存储于存储器阵列111中的数据作为输入执行逻辑操作且将逻辑操作的结果往回存储到存储器阵列111。如此,替代及/或除了通过在感测电路124外部的处理资源(例如,通过主机CPU 106及/或位于存储器系统104上(例如位于控制器108上或别处)的例如ALU电路等其它处理电路)执行之外,逻辑操作可使用感测电路124来执行。
[0023] 在各种先前方法中,举例来说,与逻辑操作相关联的数据将经由感测电路从存储器被读取并提供到与主机CPU 106相关联的寄存器120。主机CPU 106的逻辑单元118将使用寄存器120中的来自存储器阵列111的数据(其可称为运算元或输入)来执行逻辑操作且可经由局部I/O线将结果往回传送到存储器阵列111。相比来说,在本发明的若干个实施例中,感测电路124可经配置以对存储于存储器阵列111中的存储器单元中的数据执行逻辑操作并在不启用耦合到感测电路的局部I/O线且不使用主机CPU 106的寄存器120的情况下将结果往回存储到阵列111。
[0024] 如此,在若干个实施例中,在存储器阵列111及感测电路124外部的主机CPU 106的寄存器120及/或逻辑单元118可不需要执行逻辑操作,这是因为感测电路124可经操作以使用存储器阵列111的地址空间来执行逻辑操作。另外,可在不使用外部处理资源的情况下执行逻辑操作。
[0025] 主机102可配置有操作系统。主机102可耦合到存储器装置110(例如,经由控制总线136及/或I/O总线138)。操作系统是可执行指令(软件),所述可执行指令管理硬件资源且提供用于在操作系统上运行的其它可执行指令(应用程序)的服务。操作系统可实施虚拟存储器系统。
[0026] 根据本发明,CPU 106可执行指令以在主机102的主要存储器112中界定具有足以容纳虚拟寄存器堆(VRF)117的备份存储的空间的缓冲器。指令可经执行以将缓冲器在逻辑上分成共同地界定虚拟寄存器堆117的若干个虚拟向量寄存器(VVR)119、若干个虚拟标量寄存器(VSR)121及若干个虚拟控制寄存器(VCR)123以及如本文中所描述的其它经虚拟化组件。主机102可在运行时间创建虚拟寄存器堆117。这些虚拟寄存器119、121、123可表示CPU 106的针对将在存储器装置110中执行的逻辑操作的若干个寄存器120(例如,物理向量寄存器、物理标量寄存器及/或物理控制寄存器)。虚拟寄存器可在编译时间用到虚拟寄存器堆117的相应索引来表示CPU 106的物理寄存器120,如与图3相关联地所更详细地描述。虚拟寄存器堆117,具体来说虚拟向量寄存器119可存储存储器装置110(例如,图1中所图解说明的PIM存储器装置110)的元件的虚拟地址(例如,基本虚拟地址)。存储器元件(还称为计算元件)存储在一个逻辑操作中被进行操作的一定量的数据。存储器元件可是指存储所述量的数据的若干个存储器单元。存储器-存储器架构可极其难以暴露于高性能软件及编译器实施方案。
[0027] 在一些实施例中,主机102可包含存储器管理单元(MMU)115。MMU 115为可执行虚拟存储器地址与物理存储器地址之间的翻译的硬件组件。也就是说,MMU 115可将存储于虚拟寄存器堆117中的虚拟存储器地址翻译为存储器装置110的元件的物理地址。因此,虚拟寄存器堆117不存储存储器装置110的元件的物理地址。就此来说,当数据移动于存储器装置110内时,不需要更新虚拟寄存器堆117。此外,不同于与CPU106相关联的针对对存储于主要存储器112中的数据的操作的物理寄存器120,虚拟寄存器堆117中的虚拟寄存器不接收或存储对应于存储器装置110的元件的数据。
[0028] 图2是根据本发明的若干个实施例的存储器装置210的一部分的示意图。存储器装置210与图1中所图解说明的存储器装置110相似。存储器装置210可包含存储器阵列211,所述存储器阵列包含耦合到存取线242-1、242-2、242-3、242-4、242-5、242-6、242-7、…、242-M的行及感测线244-1、244-2、244-3、244-4、244-5、244-6、244-7、244-8、…、244-N的列的存储器单元240-1、240-2、240-3、240-4、240-5、240-6、240-7、240-8、…、240-N。存储器阵列211并不限于特定数目个存取线及/或感测线,且对术语“行”及“列”的使用并非意指存取线及/或感测线的特定物理结构及/或定向。虽然未画出,但存储器单元的每一列可与对应互补感测线对相关联。
[0029] 存储器单元的每一列可耦合到感测电路224,所述感测电路可与图1中所图解说明的感测电路124相似。在此实例中,感测电路包含耦合到相应感测线244的若干个读出放大器246-1、246-2、246-3、246-4、246-5、246-6、246-7、246-8、…、246-N。读出放大器246经由存取装置(例如,晶体管)250-1、250-2、250-3、250-4、250-5、250-6、250-7、250-8、…、250-N耦合到输入/输出(I/O)线254(例如,局部I/O线)。在此实例中,感测电路还包含耦合到相应感测线244的若干个计算组件248-1、248-2、248-3、248-4、248-5、248-6、248-7、248-8、…、248-N。列解码线252-1、252-2、252-3、252-4、252-5、252-6、252-7、252-8、…、252-N分别耦合到存取装置250的栅极,且可选择性地经激活以将由相应读出放大器246感测及/或存储于相应计算组件248中的数据传送到次要读出放大器256。在若干个实施例中,计算组件248可与其对应列的存储器单元及/或与对应读出放大器246同间距地形成。
[0030] 在若干个实施例中,感测电路(例如,计算组件248及读出放大器246)经配置以对存储于阵列211中的元件执行若干个逻辑操作。作为实例,第一多个元件可存储于耦合到特定存取线(例如,存取线242-1)及若干个感测线244的第一存储器单元群组中,且第二多个元件可存储于耦合到不同存取线(例如,存取线242-2)及相应数目个感测线244的第二存储器单元群组中。第一多个元件中的每一元件可与第二多个元件中的相应一者一起被执行逻辑操作,且可将逻辑操作的结果存储(例如,作为位向量)于耦合到特定存取线(例如,存取线242-3)及所述数目个感测线244的第三存储器单元群组中。
[0031] 图3是图解说明根据本发明的若干个实施例的虚拟寄存器堆存储器翻译的框图。主机(例如,图1中所图解说明的主机102)可利用编译器362来编译源代码360,例如C、C++等。源代码360可经编译以针对经受逻辑操作的数据包含对虚拟寄存器堆317的参考。编译器362可经配置以根据到虚拟寄存器堆317中的虚拟向量寄存器的索引而参考虚拟寄存器堆317发出经编译代码364(例如,机器代码、目标代码等)。源代码360可经编译而以虚拟寄存器堆317为目标来用于进行将在存储器装置310中执行的逻辑操作,仿佛所述逻辑操作是在主机(例如,图1中所图解说明的主机102)上的虚拟寄存器堆317中执行一样。也就是说,可以虚拟寄存器堆317为目标,仿佛所述虚拟寄存器堆为主机装置的物理寄存器(例如,图1中所图解说明的物理寄存器120)一样,即使实际逻辑操作将在存储器系统(例如,图1中所图解说明的存储器系统104)上的存储器装置310中执行。
[0032] 为向编程器及编译器提供用以产生用于存储器装置310的代码的功能性,将虚拟寄存器堆317界定为用于经虚拟化存储器装置与实际处理及存储器硬件之间的映射的基础。出于安全代码产生的目的,一些先前源代码编译器技术已知晓一组固定易变(可改变)硬件元件或以所述组固定易变(可改变)硬件元件为目标。此硬件将一般包含计算元件(例如,图1中所图解说明的逻辑单元118)及寄存器堆(例如,图1中所图解说明的寄存器120)。然而,存储器装置310不具有易变寄存器堆。将在存储器阵列(例如,图1中所图解说明的存储器阵列111)的物理行与列相交点处或其附近或者在存储器装置(例如,图1中所图解说明的存储器装置110)中的原位存储装置中执行操作。如果存储器装置310将根据一些先前编译器方法起作用,那么存储器装置310中的每一存储器单元将变为易变且可分配硬件元件,此可防止应用程序在虚拟存储器中彼此并排地执行。
[0033] 虚拟寄存器堆317可使对存储器装置310的存储器单元的存取虚拟化。虚拟寄存器堆317可存储于存储器(例如,图1中所图解说明的主机102的主要存储器112)中的缓冲器中且可类似于寄存器堆起作用,只不过将被进行操作的实际数据并不被传送到虚拟寄存器堆317或甚至主机,这是因为将在运行时间于存储器装置310中执行操作,而非用主机来执行逻辑操作。虚拟寄存器堆317可经配置以存储相应目标元件的地址而非实际数据。不存在使根据一些先前方法使用的物理寄存器虚拟化的动机,这是因为物理寄存器接收将由主机的逻辑单元进行操作的数据。
[0034] 可在运行时间将虚拟寄存器堆317中的条目从虚拟地址内容翻译为相应物理地址,使得可采取步骤来使用存储器装置310起始逻辑操作。提供虚拟寄存器堆的备份存储的缓冲器的每一元件可具有特定大小(例如,64位),使得缓冲器可根据一些先前方法与寄存器堆相似地被加索引。编译器362可经配置而以虚拟寄存器堆317为目标,与针对将在存储器装置310中执行的操作的物理硬件实体(例如,图1中所图解说明的寄存器120)形成对照。
[0035] 经编译代码364可包含逻辑操作368及到虚拟寄存器堆317的参考366,然而经编译代码将不包含对应于与虚拟向量寄存器相关联的虚拟地址的物理地址。逻辑操作的一些实例包含加法、减法、乘法等。特定参考366可为到虚拟寄存器堆317的索引(例如,%v0、%v1、…等)。特定索引可指向虚拟寄存器堆317中的虚拟寄存器,例如虚拟向量寄存器、虚拟标量寄存器及/或虚拟控制寄存器以及其它。
[0036] 到虚拟寄存器堆317的相应索引可表示具有虚拟寄存器堆317的固定量的备份存储的向量寄存器或标量寄存器。到虚拟寄存器堆317的相应索引可表示具有可变量的备份存储的控制寄存器。存储器装置310的元件的虚拟地址可存储于虚拟寄存器堆317的虚拟向量寄存器中。
[0037] 在运行时间,可将到虚拟寄存器堆的参考解参考(例如,通过虚拟/物理翻译374)以获得存储器装置元件的物理地址。解参考(例如,虚拟/物理翻译374)可包含对存储器装置310的运行时间环境的使用及/或对主机的存储器管理单元(例如,图1中所图解说明的主机102的MMU 115)的使用。可接着在存储器装置310中对存储于存储器装置元件中的数据执行逻辑操作。
[0038] 在一些实施例中,虚拟寄存器堆317还可用于存储器操作(除了逻辑操作之外)。举例来说,源代码360可经编译以针对经受存储器操作的数据包含对虚拟寄存器堆317的参考。可在运行时间将对虚拟寄存器堆的参考解参考以根据虚拟寄存器堆317获得存储器装置元件的物理地址。
[0039] 下表图解说明包含索引、助记符及对虚拟寄存器堆的若干个组件的描述的虚拟寄存器堆结构的实例:
[0040] 表1
[0041]
[0042]
[0043] 虽然在上表中未具体图解说明,但虚拟寄存器堆317可存储对应于存储器装置310的元件的物理地址的虚拟地址。在一些实施例中,虚拟存储器地址可为基本虚拟存储器地址,所述基本虚拟存储器地址与存储器装置元件的所存储跨距及存储器装置元件的长度组合连同经翻译基本虚拟地址一起界定哪些存储器装置元件对应于存储虚拟存储器地址的虚拟向量寄存器。然而,虚拟寄存器堆317不存储存储器装置310的元件的物理地址。
[0044] 虚拟/物理翻译374可在运行时间根据运行时间库372发生,所述运行时间库可为主机及/或存储器装置310的运行时间环境的一部分。翻译可响应于对将在存储器装置310中执行的逻辑操作进行调用的命令而发生。举例来说,经编译源代码364可经执行以致使逻辑操作在存储器装置中执行。逻辑操作可根据经编译源代码364的对特定虚拟地址进行寻址的一部分来初始化。可在存储器装置310中对存储于对应于特定虚拟地址的特定物理地址中的数据执行逻辑操作。
[0045] 运行时间库372可通过在主机上运行的应用程序而下载。举例来说,运行时间库372及虚拟寄存器堆317可被下载到主机的主要存储器中。虽然未如此具体图解说明,但运行时间库372可创建及/或含有包含存储器装置元件的虚拟存储器地址的虚拟寄存器堆
317。在一些实施例中,每一运行线程可与一个虚拟寄存器堆317相关联。虚拟寄存器堆317可在运行时间被映射到存储器装置310的特定存储器组,但可稍后被映射到不同组。举例来说,存储器装置310可包含多个组,每一组包含若干个子阵列。在主机上运行的应用程序可在不编辑虚拟寄存器堆317的情况下在主机的主要存储器中被重新定位,同时维持由虚拟寄存器堆317提供的功能性。
[0046] 虽然未如此具体图解说明,但用于存储可执行指令的非暂时性计算装置可读媒体可包含所有形式的易失性及非易失性存储器,包含(以实例方式)半导体存储器装置、DRAM、PIM、HMC、EPROM、EEPROM、快闪存储器装置、磁盘(例如固定磁盘、软磁盘及可装卸式磁盘)、其它磁性媒体(包含磁带、光学媒体,例如光盘(CD)、数字多用盘(DVD)及蓝光光盘(BD))。指令可由ASIC补充或并入ASIC中。举例来说,图1中所图解说明的次要存储装置114、寄存器120、高速缓冲存储器122、主要存储器112及/或存储器阵列111中的任何一或多者可为非暂时性计算装置可读媒体。
[0047] 虽然本文中已图解说明及描述了特定实施例,但所属领域的技术人员将了解,旨在实现相同结果的布置可替代所展示的特定实施例。本发明打算涵盖本发明的一或多个实施例的更改或变化形式。应理解,已以说明性方式而非限制性方式做出以上描述。在审阅以上描述后,所属领域的技术人员将即刻明了以上实施例的组合及本文中未具体描述的其它实施例。本发明的一或多个实施例的范围包含其中使用以上结构及方法的其它应用。因此,本发明的一或多个实施例的范围应参考所附权利要求书连同此权利要求书授权的等效物的全部范围来确定。
[0048] 在前述实施方式中,出于简化本发明的目的,将一些特征一起集合于单个实施例中。本发明的此方法不应解释为反映本发明的所揭示实施例必须使用比明确陈述于每一权利要求中更多的特征的意图。而是,如所附权利要求书所反映,发明性标的物在于少于单个所揭示实施例的所有特征。因此,特此将所附权利要求书并入到实施方式中,其中每一权利要求独立地作为单独实施例。