CN119816895A - 具有分离式存储系统的光计算系统 - Google Patents
具有分离式存储系统的光计算系统 Download PDFInfo
- Publication number
- CN119816895A CN119816895A CN202380057169.8A CN202380057169A CN119816895A CN 119816895 A CN119816895 A CN 119816895A CN 202380057169 A CN202380057169 A CN 202380057169A CN 119816895 A CN119816895 A CN 119816895A
- Authority
- CN
- China
- Prior art keywords
- photonic
- processor
- memory
- optical
- network
- 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
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/04—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using optical elements ; using other beam accessed elements, e.g. electron or ion beam
- G11C13/048—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using optical elements ; using other beam accessed elements, e.g. electron or ion beam using other optical storage elements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06E—OPTICAL COMPUTING DEVICES; COMPUTING DEVICES USING OTHER RADIATIONS WITH SIMILAR PROPERTIES
- G06E1/00—Devices for processing exclusively digital data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1054—Optical output buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1081—Optical input buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Optical Communication System (AREA)
- Multi Processors (AREA)
- Optical Integrated Circuits (AREA)
Abstract
本文描述了一种光子计算系统的实施例,该光子计算系统包括通过一个或多个光信道与分离式存储系统通信的一个或多个处理器。分离式存储系统包括布置在光子基板上的多个存储单元,光子基板包括光子网络,光子网络能够被编程为配置存储单元中的哪个存储单元能够被(多个)处理器中的每个处理器访问。
Description
相关申请
本申请根据35U.S.C.§119(e)要求于2022年8月4日提交的名称为“COMPUTE ANDMEMORY DISAGGREGATION USING RECONFIGURABLE OPTICAL COMMUNICATION SUBSTRATE”的美国临时专利申请第63/395,311号的权益,其全部内容通过引用并入本文。
技术领域
本公开的各方面涉及一种光计算系统,其包括与一个或多个分离式存储块通信的一个或多个处理器。(多个)分离式存储块中的每个存储块可以包括通过光子网络互连的多个存储单元。
背景技术
存储单元可以是包含能够存储数据的集成电路的芯片。存储单元可以包括随机存取存储器(RAM)或只读存储器(ROM)。例如,存储单元可以是动态RAM(DRAM)芯片、静态RAM(SRAM)芯片、可编程ROM(PROM)芯片或可擦除PROM(EPROM)。处理器可以使用存储单元来存储信息。例如,处理器可以使用RAM芯片来临时存储信息(例如,软件应用程序指令和/或数据)。又例如,ROM芯片可以存储用于操作设备的固件。
发明内容
本文描述了一种光子计算系统的实施例,该光子计算系统包括通过一个或多个光信道与分离式存储系统通信的一个或多个处理器。分离式存储系统包括布置在光子基板上的多个存储单元,光子基板包括光子网络,光子网络能够被编程为配置存储单元中的哪个存储单元能够被(多个)处理器中的每个处理器访问。
一些实施例提供了一种光子计算系统。该光子计算系统包括:至少一个处理器;至少一个光信道;以及至少一个光子基板,其与至少一个处理器分开,至少一个光子基板包括多个存储单元和用于提供至少一个处理器对多个存储单元的访问的至少一个光子网络,其中:至少一个光子网络通过至少一个光信道与至少一个处理器通信;并且至少一个光子网络能编程为配置至少一个处理器能够通过至少一个光信道访问至少一个光子基板中的多个存储单元中的哪个存储单元。
一些实施例提供了一种使用光子网络以使用多个存储单元来进行并行化数据处理的方法。光子网络能编程为配置多个存储单元中的哪个存储单元能够被第一处理器和第二处理器访问。光子网络被编程为允许由第一处理器对多个存储单元中的第一存储单元的访问并允许由第二处理器对多个存储单元中的第二存储单元的访问。该方法包括:将光子网络编程为允许由第一处理器对第二存储单元的访问并允许由第二处理器对第一存储单元的访问;由第一处理器使用存储在第二存储单元中的数据来执行操作以获得输出;以及与第一处理器的执行并行地,由第二处理器使用存储在第一存储单元中的数据来执行操作。
一些实施例提供了一种布置在光子基板上的光子网络。光子网络能通过至少一个光信道访问。光子网络包括:多个存储单元;至少一个可配置光开关,其用于控制多个存储单元中的哪个存储单元能通过至少一个光信道访问;以及至少一个电/光(E/O)收发器,其用于通过至少一个光信道向多个存储单元传输数据以及从多个存储单元传输数据。
一些实施例提供了一种制造光子计算系统的方法。该方法包括将光子计算系统制造为包括:至少一个处理器;至少一个光信道;以及至少一个光子基板,其与至少一个处理器分开,至少一个光子基板包括多个存储单元和用于将至少一个处理器连接到多个存储单元的至少一个光子网络,其中:至少一个光子网络通过至少一个光信道与至少一个处理器通信;并且至少一个光子网络能编程为配置至少一个处理器能够通过至少一个光信道访问至少一个光子基板中的多个存储单元中的哪个存储单元。
上述内容为非限制性的概述。
附图说明
将参考以下附图描述各个方面和实施例。应当理解,附图并不一定按比例绘制。在多个附图中出现的项目在其出现的所有附图中均由相同或相似的附图标记指示。
图1A是根据本文所述技术的一些实施例的示例性光子计算系统。
图1B是根据本文所述技术的一些实施例的图1A的光子计算系统中光子网络的第一编程配置。
图1C是根据本文所述技术的一些实施例的图1A的光子计算系统中光子网络的第二编程配置。
图2A是根据本文所述技术的一些实施例的光子基板的侧视图。
图2B是根据本文所述技术的一些实施例的图2A的光子基板的俯视图。
图2C是根据本文所述技术的一些实施例的另一光子基板的侧视图。
图2D是根据本文所述技术的一些实施例的另一光子基板的侧视图。
图3是根据本文所述技术的一些实施例的光子计算系统的示例性处理器。
图4例示了可以被本文所述技术的一些实施例使用的示例性并行化范例。
图5A例示了能够使用本文所述技术的一些实施例的计算系统来进行的虚拟化。
图5B例示了根据本文所述技术的一些实施例的图5A的虚拟机的处理器和存储器的重新分配。
图6A示出了根据本文所述技术的一些实施例的示例性光子计算系统。
图6B示出了根据本文所述技术的一些实施例的从图6A的存储瓦片(tile)的光纤附件到所有存储瓦片的存储控制器的一组示例性连接。
图6C示出了根据本文所述技术的一些实施例的从图6A的另一存储瓦片的光纤附件到所有存储瓦片的存储控制器的另一组示例性连接。
图7A示出了根据本文所述技术的一些实施例的图6A至图6C的存储瓦片的光子网络的示例性配置。
图7B示出了根据本文所述技术的一些实施例的图6A至图6C的存储瓦片604A-604H的光子网络的另一示例性配置。
图8示出了根据本文所述技术的一些实施例的图6A的光子计算系统的示例性配置,其中每个处理器被指定用于不同的应用程序。
图9示出了根据本文所述技术的一些实施例的示例性光子计算系统,其中一组处理器能够访问多个分离的存储池。
图10示出了根据本文所述技术的一些实施例的示例性光子计算系统,其中计算机系统的存储量由分离的多组存储单元扩展。
图11是根据本文所述技术的一些实施例的用于对光子网络进行编程的示例性过程。
图12是根据本文所述技术的一些实施例的用于并行化执行软件应用程序的示例性过程。
图13是可以用于实施本文所述技术的一些实施例的说明性计算系统的框图。
具体实施方式
本文描述了一种光子计算系统的实施例,该光子计算系统包括通过一个或多个光信道与分离式存储系统通信的一个或多个处理器。分离式存储系统包括布置在光子基板上的多个存储单元,光子基板包括光子网络,光子网络能够被编程为配置存储单元中的哪个存储单元能够被(多个)处理器中的每个处理器访问。
通常,处理器需要在(1)存储容量与(2)存储带宽/延迟和资源(例如,芯片上的功率和空间)之间进行权衡。这种权衡常常导致对存储容量的限制,以维持目标带宽/延迟、减小芯片尺寸并降低功率消耗。常规的高带宽存储器(HBM)能够提供高达800千兆字节/秒(GB/s)的存储带宽,但消耗大量功率(例如,大约6pJ/bit),并且需要芯片上的大量空间。HBM存储单元需要距访问HBM存储单元的处理器(例如,计算管芯)几毫米远。常规的HBM仅在存储单元(例如,一个或多个存储管芯的堆栈)中提供高达48GB的密度。尺寸和间距的约束将芯片中的堆栈数量限制为只有两个堆栈,即总共96GB的HBM。高速双倍数据速率(DDR)存储器在芯片上需要的空间不像HBM那么多,而且使用的功率也低于HBM。然而,与HBM相比,DDR提供较低的带宽(最高达32GB/s)以及较差的延迟。
将处理器限制于特定附接的一组高密度存储器(例如,HBM和/或DDR)需要在执行可并行化应用时在处理器之间进行通信。并行化常常需要多个处理器访问共享的一组数据。该数据由此需要在多个处理器的存储器之间传送。这降低了并行执行的效率并产生了数据冗余。当存储数据的存储器能够被所有处理器访问时,由于这消除了在不同存储器之间传送数据的需要,因此处理器访问数据可以更高效。实现该功能的常规技术涉及建立一种需要数次流片(tape-out)的多芯片封装,而这增加了管理多种不同产品的复杂性。而且,功率和区域资源的约束限制了某些应用的性能。这就需要更多的特定于应用的芯片设计。
将存储器与处理器分离,使得存储单元能够被重新配置为连接到不同的处理器,这将允许实现更高效的并行化。然而,将存储器与处理器分离的常规技术功率大、带宽低、且延迟高。因此,常规的分离式存储系统局限于分离磁盘驱动器和/或固态驱动器,这是因为这种存储硬件的高功率成本已经超过10pJ/bit。此外,常规的分离式存储系统提供低带宽和高延迟,使其不适合执行需要高带宽和低延迟的应用。
为了解决用于处理器的存储设计中的上述缺点,发明人开发了利用光子学将计算系统中的存储器与处理器分离的技术。这些技术允许在不牺牲存储带宽的情况下增加处理器可访问的存储器密度。这些技术将分离的存储单元池布置在带有光子网络的光子基板上,光子网络能够被编程为配置哪些存储单元能够被处理器中的每个处理器访问。处理器通过一个或多个光信道与存储单元池通信。这些技术能够支持大于15太字节/秒(TB/s)的存储带宽。
一些实施例包括与处理器分开的光子基板,其包括多个存储单元(例如,存储堆栈)和可编程光子网络。光子网络能够被编程为不同的配置,以改变哪些处理器连接到存储单元中的相应存储单元。这允许计算系统使用一种范例来使操作的执行并行化,而不依赖于在不同存储器之间传送数据。光子网络能够被编程为重新配置存储单元与处理器之间的连接,从而减少甚至消除在存储单元之间传送数据以并行化操作的需要。这允许更高效地并行化操作。
在一些实施例中,可编程光子网络能够动态地重新配置分配给处理器的存储量。这样,能够根据应用程序执行要求来对光子网络进行编程。例如,需要更多存储以用于执行的应用程序可以从存储池中分配更多存储器,而需要更少存储以用于执行的应用程序可以从存储池中分配更少存储器。进一步,光子网络增加能够附接到具有高带宽的处理器的存储量(例如,高密度存储器),而不受常规HBM的大小和空间限制的约束。例如,这些技术不再要求HBM存储单元位于访问HBM存储单元的处理器(例如,计算管芯)的毫米范围内。
一些实施例允许处理器通过一个或多个光信道(例如,光纤电缆)与一组或多组存储单元通信。光信道允许处理器与该组(或多组)存储单元分开。常规技术通常要求将处理器布置在具有高密度存储单元(例如,HBM单元)的芯片(例如,硅中介层)上,而本文的一些实施例允许处理器与包括该组(或多组)存储单元的(多个)芯片分开。例如,这些技术允许处理器连接到容纳在与处理器分开的封装或底盘中的存储单元。
一些实施例提供了一种光子计算系统。该光子计算系统包括一个或多个处理器、一个或多个光信道以及与(多个)处理器分开的光子基板。光子基板包括多个存储单元和用于将(多个)处理器连接到存储单元的光子网络。光子网络通过光信道与(多个)处理器通信。光子网络能编程为配置(多个)处理器通过光信道能够访问光子基板中的存储单元中的哪个存储单元。
一些实施例提供了一种光子计算系统。该光子计算系统包括:至少一个处理器;至少一个光信道(例如,一个或多个光纤);以及与至少一个处理器分开的至少一个光子基板(例如,光子中介层),至少一个光子基板包括多个存储单元(例如,HBM单元、SRAM单元、DDRSDRAM单元)和用于提供至少一个处理器对多个存储单元的访问的至少一个光子网络。至少一个光子网络通过至少一个光信道与至少一个处理器通信。至少一个光子网络能编程为配置至少一个处理器能够通过至少一个光信道访问至少一个光子基板中的多个存储单元中的哪个存储单元。
在一些实施例中,至少一个处理器包括第一处理器和第二处理器;并且第一处理器和第二处理器被配置为使用多个存储单元来处理数据集。在一些实施例中,至少一个光子网络被编程为允许由第一处理器对多个存储单元中的第一存储单元的访问并允许由第二处理器对多个存储单元中的第二存储单元的访问;并且处理数据集包括:由第一处理器使用存储在第一存储单元中的数据来执行操作以获得第一输出;以及将第一输出存储在第一存储单元中。在一些实施例中,在将第一输出存储在第一存储单元中之后,至少一个光子网络被编程为允许由第二处理器对第一存储单元的访问并允许由第一处理器对第二存储单元的访问;并且处理数据集进一步包括:由第一处理器使用存储在第二存储单元中的数据来执行操作以获得第二输出;与第一处理器的执行并行地,由第二处理器使用存储在第一存储单元中的第一输出来执行操作以获得第一结果;将第二输出存储在第二存储单元中;以及从第一存储单元输出第一结果。在一些实施例中,至少一个光子网络被编程为允许由第一处理器对第一存储单元的访问并允许由第二处理器对第二存储单元的访问;并且处理存储在至少一个光子网络的多个存储单元中的数据集进一步包括:由第一处理器使用存储在第一存储单元中的数据来执行操作以获得第三输出;与第一处理器的执行并行地,由第二处理器使用存储在第二存储单元中的第二输出来执行操作以获得第二结果;将第三输出存储在第一存储单元中;以及从第二存储单元输出第二结果。
在一些实施例中,至少一个光子网络包括至少一个光开关,至少一个光开关能配置为将至少一个处理器连接到多个存储单元中的每个存储单元或从多个存储单元中的每个存储单元断开;至少一个光子网络能通过配置至少一个光开关进行编程。
在一些实施例中,在第一时间,至少一个光子网络被编程为允许由至少一个处理器通过至少一个光信道对多个存储单元中的第一存储单元的访问;并且在第一时间之后的第二时间,至少一个光子网络被编程为:禁止由至少一个处理器通过至少一个光信道对第一存储单元的访问;并且允许由至少一个处理器通过至少一个光信道对多个存储单元中的第二存储单元的访问。
在一些实施例中,至少一个处理器包括第一处理器和第二处理器;多个存储单元包括第一存储单元和第二存储单元;并且至少一个光子网络被编程为允许由第一处理器对第一存储单元的访问并允许由第二处理器对第二存储单元的访问。
在一些实施例中,至少一个光子基板进一步包括至少一个存储控制器,其被配置为对至少一个光子网络进行编程。在一些实施例中,至少一个处理器被配置为对至少一个光子网络进行编程。
在一些实施例中,至少一个处理器包括多个处理器,多个处理器被组织成多组处理器;并且至少一个光子网络被编程为允许多组处理器中的每组处理器通过至少一个光信道访问多个存储单元的不同存储单元子组。在一些实施例中,多组处理器中的每组处理器和多个存储单元中的能由该组处理器访问的相应存储单元子组形成被分配给相应虚拟机的相应虚拟处理器。在一些实施例中,至少一个处理器包括多个处理器;至少一个光信道包括多个光信道;并且多个处理器中的每个处理器通过多个光信道中的相应光信道与至少一个光子网络通信。在一些实施例中,至少一个光子网络包括多个光子网络;至少一个光子基板包括多个光子模块,多个光子模块中的每个光子模块包括:多个光子网络中的相应光子网络;多个存储单元中的存储单元子组;以及存储控制器。在一些实施例中,多个处理器中的每个处理器通过多个光信道中的相应光信道连接到多个光子模块的存储控制器。
在一些实施例中,至少一个光子网络被编程为一种配置以基于对于多个软件应用程序的执行的存储要求在多个处理器之间分配存储单元,其中该配置:允许由多个处理器中的被配置为执行第一软件应用程序(例如,使用诸如大语言模型(LLM)的机器学习模型、计算机视觉模型、软件开发和测试应用程序和/或其他类型的软件应用程序的软件应用程序)的第一处理器对多个存储单元中的第一组存储单元的访问;并且允许由多个处理器中的被配置为执行第二软件应用程序(例如,使用诸如大语言模型(LLM)的机器学习模型、计算机视觉模型、软件开发和测试应用程序和/或其他类型的软件应用程序的软件应用程序)的第二处理器对多个存储单元中的第二组存储单元的访问。
在一些实施例中,至少一个光子基板包括多个光子基板,多个光子基板各自包括一组存储单元和相应的光子网络,其中:多个基板的光子网络各自能编程为配置相应的一组存储单元中的哪个存储单元能够被至少一个处理器访问。在一些实施例中,光子计算系统包括光开关,其中光开关能配置为向至少一个处理器提供对跨多个光子基板中的多者分布的多个存储单元的访问。
在一些实施例中,至少一个光子基板包括至少一个存储控制器;并且至少一个光子网络包括将至少一个存储控制器与多个存储单元互连的光电路。在一些实施例中,至少一个光子网络包括多个电/光(E/O)收发器,多个E/O收发器中的每个E/O收发器将多个存储单元中的相应存储单元连接到光电路。
在一些实施例中:至少一个光子基板包括:至少一个存储控制器;至少一个光纤附件,该至少一个光纤附件连接到至少一个光信道;以及至少一个E/O收发器;并且至少一个光子网络包括将至少一个存储控制器连接到至少一个光纤附件的光电路,其中E/O收发器被配置为转换在至少一个存储控制器与至少一个光纤附件之间传输的信号。在一些实施例中,至少一个光子网络包括在至少一个存储控制器与多个存储单元之间的多个电连接,其中数据信号通过多个电连接在至少一个存储控制器与多个存储单元之间传输。
一些实施例提供了一种布置在光子基板上的光子网络。该光子网络能通过至少一个光信道访问。该光子网络包括:多个存储单元;至少一个可配置光开关,该至少一个可配置光开关控制多个存储单元中的哪个存储单元能通过至少一个光信道访问;以及至少一个电/光(E/O)收发器,该至少一个E/O收发器用于通过至少一个光信道向多个存储单元传输数据以及从多个存储单元传输数据。
在一些实施例中,在第一时间,至少一个光开关被配置为允许通过至少一个光信道对多个存储单元中的第一存储单元的访问;并且在第一时间之后的第二时间,至少一个光开关被配置为允许通过至少一个光信道对多个存储单元中的第二存储单元的访问。在一些实施例中,在第二时间,至少一个光开关被编程为禁止通过至少一个光信道对第二存储单元的访问。
在一些实施例中,光子网络进一步包括存储控制器,其中至少一个光开关能由存储控制器配置。在一些实施例中,光子网络包括光电路,光电路包括至少一个可配置光开关。在一些实施例中:至少一个E/O收发器包括连接到多个存储单元中的相应存储单元的多个E/O收发器;并且光电路通过多个E/O收发器将存储控制器连接到多个存储单元。在一些实施例中,光子网络进一步包括光纤附件,其中:光电路通过至少一个E/O收发器将存储控制器连接到光纤附件。
由于本文所述技术并不限于任何特定实施方式,因此可以以许多方式中的任何方式来实施。本文提供的实施细节的示例仅用于说明目的。并且,由于本文所述技术的各方面并不限于对任何特定技术或技术组合的使用,因此本文公开的技术可以单独使用或以任何合适的组合使用。
图1A是根据本文所述技术的一些实施例的示例性光子计算系统。光子计算系统包括处理器100A、100B,光子基板102以及一个或多个光信道112A、112B的组,相应的处理器100A、100B通过光信道112A、112B连接到光子基板102。处理器100A、100B可以被配置为通过相应的各组光信道112A、112B访问布置在光子基板102上的存储单元104。
处理器100A、100B中的每个处理器可以是任何合适的处理器。在一些实施例中,处理器可以包括中央处理单元(CPU),其包括用于执行指令的逻辑电路。CPU可以被配置为进行算术、逻辑和输入/输出(I/O)操作。在一些实施例中,处理器可以包括图形处理单元(GPU)。GPU可以被配置为进行图形处理。例如,GPU可以进行图像处理操作。在一些实施例中,处理器可以包括神经处理单元(NPU),NPU被配置为进行神经网络处理。例如,NPU可以使用神经网络模型的权重来处理给神经网络模型的输入,以确定神经网络模型针对输入的输出。在一些实施例中,处理器可以包括模拟处理器。例如,模拟处理器可以是光子处理器。在美国专利第11,218,227号中,描述了在一些实施例中可以使用的示例性光子处理器,其通过引用并入本文。
在一些实施例中,处理器100A、100B中的一个或多个处理器可以是多核处理器。例如,处理器可以具有2、4、6、8、10或12个核。多核处理器可以被配置为同时处理多组指令。在一些实施例中,处理器100A、100B中的每个处理器可以是虚拟化处理器核(例如,vCPU)。
如图1A所示,处理器100A、100B包括相应的光接口110A、110B,处理器100A、100B可以通过光接口110A、110B以光传输形式传输和/或接收数据。在一些实施例中,光接口110A、110B中的每个光接口可以包括用于连接到一组一个或多个光纤的光纤附件。在一些实施例中,(多个)光纤可以通过对竖直光栅耦合器和透镜的使用而被竖直附接。在一些实施例中,(多个)光纤可以通过使用边缘耦合器、V形槽或衰减耦合器的边缘附件而被附接。在一些实施例中,(多个)光纤可以通过对可插拔玻璃模块的使用而能被插拔。处理器100A、100B可以各自通过一组(多个)光纤传输并接收光传输。
图1A的光子计算系统包括光子基板102。光子基板包括存储单元104A、104B、104C、104D、104E、104F、104G、104H和两个光子网络108A、108B。第一组存储单元104A、104B、104C、104D可以通过光子网络108A被访问。第二组存储单元104E、104F、104G、104H可以通过光子网络108B被访问。存储单元的示例包括HBM、DRAM、非易失性随机存取存储器(NVRAM)和/或NAND闪存。光子基板102还包括电/光(E/O)收发器114A、114B和光接口110C、110D。在一些实施例中,光子基板102包括连接到相应光子网络108A、108B的存储控制器106A、106B。存储控制器106A、106B可以被配置为将相应光子网络编程为选择一个或多个存储单元用于连接到每个处理器,从而实现读取和写入操作。
应当注意,在一些实施例中,可以使用跨所有存储单元的公共光子网络,而不是如图1A中所示的分开的光子网络。公共存储控制器可以对公共光子网络进行编程。进一步,在一些实施例中,光子基板102可以不包括存储控制器106A、106B。在这样的实施例中,光子基板102外部的存储控制器可以对(多个)光子网络进行编程。处理器100A和100B中的一个或多个处理器可以充当外部存储控制器。
在一些实施例中,光子网络可以包括多个光子模块。每个光子模块可以唯一地与特定存储单元(或特定存储单元子组)相关联,并且可以被编程为允许或禁止对该存储单元或存储单元子组的访问。例如,每个光子模块可以包括一个或多个可编程光子开关,一个或多个可编程光子开关被配置为连接到相应的存储单元或存储单元子组或者与相应的存储单元或存储单元子组断开。在一些实施例中,形成光子基板102的光子模块可以使用微加工技术(例如,互补金属氧化物半导体(CMOS)微加工技术)来制造。例如,可以使用基于步进和重复光刻的制造技术来将光子模块图案化为模板光子模块的多个副本。在美国专利第11,036,002号中提供了光子模块的详细描述,其全部内容通过引用并入本文。
在一些实施例中,光子网络108A、108B中的每个光子网络可以是可编程光子网络。光子网络108A、108B中的每个光子网络可以能编程以配置存储单元104A-104H中的哪个存储单元能由处理器100A、100B中的每个处理器访问。例如,当光子网络108A被编程为特定配置时,其可以为处理器100A提供对存储单元104A、104B、104C、104D中的一个或多个存储单元的访问,和/或为处理器100B提供对存储单元104A、104B、104C、104D中的一个或多个存储单元的访问。又例如,当光子网络108B被编程为特定配置时,其可以为处理器100A提供对存储单元104E、104F、104G、104H中的一个或多个存储单元的访问,和/或为处理器100B提供对存储单元104E、104F、104G、104H中的一个或多个存储单元的访问。由此,光子网络108A、108B中的每个光子网络可以被编程为选择性地使处理器100A、100B处于与存储单元104A-104H中的相应存储单元子组通信。
在一些实施例中,光子网络108A、108B中的每个光子网络的配置可以是动态的。这样,光子网络108A、108B可以被多次编程。例如,光子网络108A、108B可以在执行指令期间被编程为将处理器100A、100B提供给存储单元104A-104H中不同的存储单元。在一些实施例中,光子网络108A、108B可以作为执行并行化操作的一部分而被编程。本文描述了执行操作的并行化执行的示例性技术。在一些实施例中,光子网络108A、108B可以被编程为将存储器分配给虚拟机(例如,虚拟CPU)。例如,存储器可以基于虚拟机待执行的应用程序的要求被分配给虚拟机。
如图1A的示例所示,在一些实施例中,光子网络可以互连光电路中的存储单元和存储控制器。例如,光子网络108A可以包括互连存储单元104A、104B、104C、104D和存储控制器106A的光电路。又例如,光子网络108B可以包括互连存储单元104E、104F、104G、104H和存储控制器106B的光电路。在这样的实施例中,每个存储单元可以通过相应的E/O收发器连接到光子网络,以用于在电信号与光信号之间转换数据读取和写入信号。例如,E/O收发器可以连接到光子网络的光电路,E/O收发器可以通过光电路传输和接收光信号。尽管图1A的示例性实施例示出了与光子网络相关联的单个E/O收发器,但在一些实施例中,光子基板102可以包括多个E/O收发器,每个E/O收发器与存储单元相关联。
在一些实施例中,光子网络可以包括将存储控制器连接到光接口(例如,光纤附件)的光电路以及在存储控制器与存储单元之间的电连接。例如,存储控制器106A可以通过光电路连接到光纤附件,并且可以通过电连接连接到存储单元104A、104B、104C、104D。存储控制器106A可以通过电连接向存储单元104A、104B、104C、104D传输数据信号(例如,读取和写入信号)以及从存储单元104A、104B、104C、104D接收数据信号。在这样的实施例中,E/O收发器可以将去到/来自存储控制器的数据信号在电信号与光信号之间转换。例如,E/O收发器114A可以将去到/来自存储控制器106A的数据信号在电信号与光信号之间转换。
图1B是根据本文所述技术的一些实施例的光子网络108A、108B的第一编程配置120A。例如,图1B的配置120A可以用于由处理器100A、100B中的每个处理器执行一个或多个指令。在第一编程配置120A中,光子网络108A被编程为提供处理器100A对存储单元140A、140C的访问,并提供处理器100B对存储单元104B、104D的访问。光子网络108B被编程为提供处理器100A对存储单元104E的访问,并提供处理器100B对存储单元104F、104G、104H的访问。如图1B所示,处理器104A和其在配置120A中可访问的所有存储单元均以水平线描影。处理器100B和其在配置120A中可访问的所有存储单元均以对角线描影。
图1C是根据本文所述技术的一些实施例的光子网络108A、108B的第二编程配置120B。例如,图1C的配置120B可以用于在图1B的配置120A之后由处理器100A、100B中的每个处理器执行一个或多个指令。在第二编程配置120B中,光子网络108A被编程为提供处理器100A对104A、104B、104C、104D的访问。光子网络108B被编程为提供处理器100A对存储单元104D、104E的访问并提供处理器100B对存储单元104F、104G的访问。如图1B所示,处理器104A和其在配置120A中可访问的所有存储单元均以水平线描影。处理器100B和其在配置120A中可访问的所有存储单元均以对角线描影。
在一些实施例中,光子网络108A、108B中的每个光子网络包括一个或多个光子开关。光子网络108A、108B中的每个光子网络可以通过配置光子网络的一个或多个光子开关进行编程。在光子网络108A、108B中的每个光子网络中可以包括的光开关的示例包括马赫-曾德尔干涉仪、光谐振器、多模干涉(MMI)波导、阵列波导光栅(AWG)、热光开关、声光开关、磁光开关、微机电开关(MEMS)光开关、非线性光开关、液晶开关、压电光束转向开关、光栅开关、色散开关和/或其他合适的光开关。在一些实施例中,光子网络的一个或多个光开关可以在光电路中实现。一个或多个光开关可以被配置为控制光电路中的路径。在一些实施例中,一个或多个光开关可以集成到光子基板102中。
在光子基板102包括存储控制器106A、106B的实施例中,光子网络108A、108B可以被相应的存储控制器106A、106B编程。存储控制器106A可以被配置为对光子网络108A进行编程,而存储控制器106B可以被配置为对光子网络108B进行编程。在一些实施例中,存储控制器106A、106B中的每个存储控制器可以被配置为通过配置光子网络的一个或多个开关来对光子网络108A、108B中的相应光子网络进行编程。存储控制器106A可以连接到包括能够被存储控制器106A控制的光开关的光电路。存储控制器106A可以配置光电路中的光开关,以控制存储单元104A、104B、104C、104D中的哪个存储单元能够被处理器100A通过光电路进行访问。存储控制器106B可以连接到包括能够被存储控制器106B控制的光开关的光电路。存储控制器106A可以配置光电路中的光开关,以控制存储单元104E、104F、104G、104H中的哪个存储单元能够被处理器100B通过光电路进行访问。
在一些实施例中,光子网络108A、108B可以被处理器100A、100B编程。在一些实施例中,光子网络108A、108B可以被处理器100A、100B同时编程。光子网络108A、108B的光开关可以被处理器100A、100B配置为对光子网络108A、108B进行编程。例如,在光子基板102不包括存储控制器106A、106B的实施例中,光子网络108A、108B可以被处理器100A、100B编程。尽管在图1A的示例中未例示,但在一些实施例中,光子网络108A、108B可以被单独的主机编程。例如,主机可以是CPU。例如,CPU可以访问光子基板102中部分或全部光子网络的配置。
在一些实施例中,E/O收发器114A、114B中的每个E/O收发器可以包括诸如光调制器的光电转换器和诸如光接收器的光电转换器。光电转换器可以被配置为将从读取存储单元(例如,由存储控制器)产生的电数据信号转换为能够通过光信道传输到处理器的光信号。光电转换器可以被配置为将通过光信道从处理器接收的光信号转换为用于(例如,由存储控制器)将数据存储在存储单元中的电数据信号。在一些实施例中,E/O收发器可以包含将一种电子协议转换为另一种电子协议的垫片(shim)。例如,垫片可以将存储控制器与处理器之间使用的信号/协议转换为一个或多个SerDes信号。这些SerDes信号然后可以驱动大型光子中介层内的光子传输(TX)组件。转换可以只是直接的模拟信号转换或数字域中更复杂的数据转换。例如,HBM3的每个引脚带宽为9.2Gb/s,但光链路可以以更高的速度运行(每个信号50-100Gb/s)。因此,多个HBM3引脚信号可以被串行化为单个光信号,然后能够在接收器侧进行解串行化。
在一些实施例中,光接口110A、110B中的每个光接口可以为相应的光信道112A、112B提供接口。在一些实施例中,光信道112A、112B各自包括一组一个或多个光纤。光接口110A、110B可以各自包括光纤附件,该光纤附件可以包括一个或多个端口,一组(多个)光纤可以通过一个或多个端口连接到E/O收发器。光纤附件可以包括能够耦合到光信道的光纤耦合器(例如,平面外耦合器或边缘耦合器)。光纤耦合器可以允许存储控制器通过光信道与处理器通信。
在一些实施例中,存储控制器106A、106B中的每个存储控制器可以各自包括用于控制来自存储单元的数据的输入和输出的数字电路。在一些实施例中,存储控制器106A、106B中的每个存储控制器可以被配置为控制对相应各组存储单元(例如,对于片上SRAM存储单元)的访问。例如,存储控制器106A可以从由处理器100A、100B请求的存储单元104A、104B、104C、104D读取数据,并将从处理器100A、100B传输的数据写入到存储单元104A、104B、104C、104D中。在一些实施例中,存储控制器106A、106B可以是与芯片上的相应各组存储单元集成的集成存储控制器。在一些实施例中,存储控制器106A、106B可以与存储单元104A-104H(例如,对于DRAM、NVRAM和闪存单元)分开。进一步,在一些实施例中,存储控制器106A、106B可以与光子基板102,E/O收发器114A、114B,光子网络108A、108B以及存储单元104A-104H整体制造。
在一些实施例中,存储控制器106A、106B中的每个存储控制器可以被配置为管理存储单元向处理器100A、100B的分配。例如,存储控制器可以被配置为基于处理器正在执行的进程(例如,软件应用程序)来向处理器100A分配存储器。存储控制器可以被配置为确定进程所需的存储资源并相应地向处理器100A分配存储单元。在一些实施例中,存储控制器106A、106B可以被配置为基于进程正在使用的并行编程模型来确定存储单元向处理器100A、100B的分配。存储控制器106A、106B可以根据并行编程模型向处理器100A、100B分配存储单元,以实现进程的并行执行。存储控制器106A、106B可以被配置为基于确定的存储分配来对相应的光子网络108A、108B进行编程。
如图1A的示例所示,在一些实施例中,处理器100A、100B通过相应的光信道112A、112B访问存储单元104A-104H。在一些实施例中,光信道可以提供用于光传输的路径。在一些实施例中,光信道可以包括一个或多个光纤。例如,(多个)光纤中的每个光纤可以是玻璃、塑料或其他传输光的合适材料的股。多个这样的股可以被捆扎成一组光纤(例如,被捆扎成光纤电缆)。在一些实施例中,光信道可以以至少1-5、5-10、10-15、15-20、20-25或25-30太字节/秒(TB/s)的速率传输数据。例如,光信道可以以至少15TB/s的速率在处理器与光子网络之间传输数据。在一些实施例中,每个光信道可以承载一个或多个光信号,例如通过使用波分复用或偏振复用方案来承载一个或多个光信号。
在一些实施例中,可以使用纠错以允许实现更高带宽的光子通信。可以对通过光子网络去到和/或来自存储单元的数据传输进行纠错。例如,可以使用纠错码(ECC)来进行纠错。在一些实施例中,存储控制器可以被配置为对去到和/或来自存储单元的数据传输进行纠错。在一些实施例中,处理器100A、100B可以被配置为对从存储单元接收的数据进行纠错。纠错的使用可以允许实现更高带宽的光子通信,但代价是因该纠错的进行而导致的延迟增加。
图2A是根据本文所述技术的一些实施例的光子基板200的侧视图。图2B是光子基板200的俯视图。如图2B所示,光子基板200包括存储控制器204、存储堆栈206A、存储堆栈206B、存储堆栈206C和存储堆栈206D。例如,图2A中所示的光子基板200可以是本文参考图1A至图1C描述的光子基板102的一部分。存储堆栈206A、206B、206C、206D可以是图1A至图1C的存储单元104A、104B、104C、104D。
如图2A所示,光纤附件202、E/O收发器210、存储控制器204、存储堆栈206A和存储堆栈布置在光子基板200上。光子基板200进一步包括集成光电路212,其可以形成光子网络(例如,光子网络108A)。光电路212可以包括集成光开关,其可以被配置为对光子网络进行编程。如图2A所示,光电路212将光纤附件202连接到E/O收发器210。因而,光信号可以通过光电路212传输到E/O收发器210以及从E/O收发器210传输。
在一些实施例中,E/O收发器210可以包括对波分复用(WDM)的使用,其中多个信号(每个信号处于不同的光波长)被用于增加单个光波导或光纤中的传输带宽。一些实施例可以使用密集WDM。在密集WDM中,波长可以间隔开100-200GHz的间距。一些实施例可以使用稀疏WDM。在稀疏WDM中,波长可以间隔开>10nm。总之,WDM减少了需要附接到光子基板200的光纤的数量。
如图2A所示,光子基板包括电连接214,电信号能够通过电连接214在E/O收发器210与存储控制器204之间以及在存储控制器204与存储堆栈206A、206B、206C、206D之间传输。电连接214可以被配置为传输从读取和写入存储堆栈206A、206B、206C、206D而产生的电数据信号。例如,电连接214可以被存储控制器204用来从来自存储堆栈206A、206B、206C、206D的读取数据中获得电数据信号,并将该电数据信号传输到E/O收发器210(例如,用于将对应的光信号传输到与光子基板200分开的处理器)。又例如,电连接214可以被存储控制器204用来从E/O收发器210获得与从外部处理器传输的光信号相对应的电数据信号,并将该电数据信号传输到存储堆栈206A、206B、206C、206D以将数据写入到存储器中。
在一些实施例中,存储堆栈206A、206B、206C、206D中的每个存储堆栈可以包括管芯的堆栈。例如,存储堆栈206A、206B、206C、206D中的每个存储堆栈可以是3个管芯的堆栈,但所堆栈的管芯数量也可以是其他数量。管芯的堆栈可以安装到光子基板200。在一些实施例中,管芯的堆栈可以形成存储单元。在一些实施例中,存储堆栈206A、206B、206C、206D中的每个存储堆栈可以是任何合适类型的存储器。例如,每个存储堆栈可以是HBM、DDR、DDRAM、SRAM、DDR SDRAM或其他合适类型的存储器。
在一些实施例中,存储控制器204可以是安装到光子基板200的另一管芯。如本文参考图1A至图1C所描述的,存储控制器204可以被配置为配置光电路212的光开关,以配置存储堆栈206A、206B、206C、206D中的哪个存储堆栈能由外部处理器访问。在一些实施例中,光电路212可以被配置为允许一个或多个外部处理器访问特定存储堆栈。在一些实施例中,光电路212可以能配置为一次仅允许一个外部处理器访问特定存储堆栈。
在图2A所示的示例中,光纤附件202与E/O收发器210之间的通信以光子方式进行,而E/O收发器210与存储堆栈206之间的通信则以电方式进行。在其他示例中,如下文结合图2C至图2D所讨论的,光纤附件可以光子方式耦合到存储堆栈,并且光开关模块可以用于路由光信号。
图2C是根据本文所述技术的一些实施例的另一光子基板220的侧视图。如图2C所示,光子基板220包括存储控制器204、存储堆栈206A、206B。例如,图2C所示的光子基板220可以是本文参考图1A至图1C描述的光子基板102的一部分。存储堆栈206A、206B可以是存储单元104A、104B。光子基板220可以包括图2C中未示出的其他存储堆栈(例如,存储堆栈206C、206D)。
在图2C的示例性实施例中,光子基板220包括光子网络,该光子网络包括光电路222,光电路222提供用于去到和/或来自存储堆栈206A、206B的光传输的光信道。光电路222可以连接到光子基板220的存储堆栈。光电路222包括光开关模块224A、224B,其能够被配置为控制存储堆栈206A、206B中的哪个存储堆栈是可访问的(例如,由处理器访问)。存储控制器204可以被配置为通过配置光开关模块224A、224B来配置对光子网络进行编程。光开关模块224A、224B通过相应的电连接230A、230B连接到相应的存储堆栈206A、206B。电连接230A、230B例如可以包括导电材料(例如,金属接线)。
图2C示出了光模块的示例性组件。如从光模块224A展开的框中所示,光模块224A包括光开关226。本文描述了示例性光开关。光模块224A进一步包括用于在光信号与电信号之间进行转换的E/O收发器228。当光开关226被配置为允许对存储堆栈206A的访问时,E/O收发器228可以被配置为将通过光电路222(例如,通过光纤附件)接收的光信号转换为能够通过电连接230A传输的电信号。例如,E/O收发器228可以将光数据信号传输为电数据信号(例如,用于将数据写入到存储堆栈206A)。E/O收发器228可以进一步被配置为将通过电连接230A接收的电信号转换为能够通过光电路222传输的光信号。例如,E/O收发器228可以将从来自存储堆栈206A的读取数据获得的电数据信号转换为通过光电路222传输的光数据信号。
图2D是根据本文所述技术的一些实施例的另一光子基板230的侧视图。如图2D所示,光子基板230包括存储堆栈206A、206B。例如,图2D所示的光子基板230可以是本文参考图1A至图1C描述的光子基板102的一部分。存储堆栈206A、206B可以是存储单元104A、104B。光子基板230可以包括图2D中未示出的其他存储堆栈(例如,存储堆栈206C、206D)。
在图2D的示例性实施例中,光子基板230包括光子网络,该光子网络包括光电路222,光电路222提供用于去到和/或来自存储堆栈206A、206B的光传输的光信道。光电路222可以连接到光子基板220的存储堆栈。光电路222包括光开关模块224A、224B,其能够被配置为控制存储堆栈206A、206B中的哪个存储堆栈是可访问的(例如,由处理器访问)。存储控制器204可以被配置为通过配置光开关模块224A、224B来配置对光子网络进行编程。光开关模块224A、224B通过相应的电连接230A、230B连接到相应的存储堆栈206A、206B。电连接230A、230B例如可以包括导电材料(例如,金属接线)。
如图2D的示例性实施例所示,光子基板230不包括存储控制器。在这样的实施例中,包括光电路222的光子网络可以被外部处理器(例如,连接到光子基板230的外部存储控制器或其他处理器)编程。外部处理器可以通过配置光开关模块224A、224B的光开关来对光子网络进行编程。外部处理器可以传输配置指令(例如,通过光信道来传输配置指令),这些配置指令通过光电路222传输到光开关模块224A、224B。例如,配置指令可以作为数据读取和/或写入信号的前缀和/或后缀而被包括在内。
图3是根据本文所述技术的一些实施例的光子计算系统的示例性处理器300。例如,处理器300可以是本文参考图1A至图1C描述的处理器100A、100B中的一个处理器。如图3所示,处理器300包括一个或多个计算核心302、静态RAM(SRAM)304、E/O收发器308以及可选的DDR或HBM 306。
在一些实施例中,(多个)计算核心302可以包括一个或多个CPU、GPU、NPU、光子处理器和/或其他计算核心。SRAM 304可以被(多个)计算核心302用于执行指令(例如,作为执行软件应用程序的一部分)。例如,SRAM 304可以存储指令和/或数据,以用于(多个)计算核心302的执行。
在一些实施例中,处理器300可以包括DDR和/或HBM 306。例如,处理器300可以执行数据密集型应用程序,由此使用DDR和/或HBM 306。例如,处理器300可以用于执行应用程序,以训练深度学习模型和/或使用其来执行推理。深度学习模型常常使用大量参数(例如,数百万个权重和/或激活),由此对于处理器300需要额外的存储容量。又例如,处理器300可以用于图形处理。图形处理可涉及处理数千个像素的连续帧,由此需要额外的存储容量。
图4例示了可以被本文所述技术的一些实施例使用的示例性并行化范例。例如,图4的并行化范例可以被本文参考图1A至图1C描述的光子计算系统使用。在图4的示例中,光子计算系统执行过程fB(fA(xi)),其中fA是待由第一处理器(例如,处理器100A)执行的应用程序,并且fB是待由第二处理器(例如,处理器100B)执行的应用程序。xi表示待作为输入提供的第i个数据点。应用程序fA和fB中的每个应用程序可以包括一个或多个操作。
过程的执行从阶段402开始,将输入x1存储在存储单元102A中,并且将输入x2存储在存储单元102B中。在一些实施例中,输入x1和x2可以并行加载到相应的存储单元104A、104B中。然后,处理器100A执行fA(x1)并将结果存储在存储单元104A中。
接下来,在阶段404,光子网络108A被编程为向第一处理器100A提供对存储单元104B的访问并向第二处理器100B提供对存储单元104A的访问。第一处理器100A使用存储在存储单元104B中的输入x2来执行fA(x2)并将结果存储在存储单元104B中。与第一处理器100A的执行并行地,第二处理器100B使用存储在存储单元104A中的fA(x1)的值来执行fB(fA(x1))并将结果存储在存储单元104A中。
接下来,在阶段406,从存储单元104A输出执行fB(fA(x1))的结果。光子网络108A被编程为向处理器104B提供对存储单元104B的访问,存储单元104B当前存储在阶段404中执行的过程fA(x2)的结果。处理器104B执行过程fB(fA(x2))并将结果存储在存储单元104B中。
接下来,在阶段408,从存储单元104B输出存储在存储单元104B中的执行过程fB(fA(x2))的结果。在一些实施例中,后续的一对输入(例如,x3和x4)可以被加载到存储单元104A、104B中,并且阶段402至阶段408的执行过程可以被再次进行。
在图4的示例所例示的并行化范例中,通过对光子网络进行编程以动态配置哪些处理器能够通过光子网络访问存储单元,从而使两个应用程序的执行并行化。因此,针对由相应处理器执行的每个应用程序的输入和输出数据均驻留在单个存储位置(例如,一个或多个存储单元)内。与常规的并行化范例不同,在存储位置之间复制和传送数据的行为可以省略。由此,存储单元之间不需要通信。进一步,不需要为数据复制分配存储器。相反,两个存储单元都用于应用程序的执行。此外,因为每个输入和使用该输入执行的(多个)应用程序的结果只存在单个副本,所以在并行化范例中自动维持一致性。
图5A例示了能够使用本文所述技术的一些实施例的计算系统来进行的虚拟化。如图5A所示,虚拟化系统500确定用于虚拟机506A、506B、506C的处理器和相应组的存储单元的分配。在一些实施例中,虚拟化系统500可以被配置为使用虚拟机管理软件应用程序来将处理能力和存储器分配给虚拟机506A、506B、506C。例如,虚拟化系统500可以使用VMWare、Citrix Virtual Apps&Desktops或另一合适的虚拟机管理软件应用程序。
图5A的分配可以通过将一个或多个光子网络编程为向一组处理器分配一组存储单元来进行。本文描述了将光子网络编程为向(多个)处理器分配(多个)存储单元的示例性技术。在图5A的示例中,(多个)光子网络被编程为:(1)为虚拟机506A的处理器502A、502B、502E、502F分配对存储单元504A、504B、504C、504D、504E、504F、504G、504H的访问;(2)为虚拟机506B的处理器502C、502G分配对存储单元504I、504J、504K、504L的访问;(3)为虚拟机506C的处理器502D、502H分配对存储单元504M、504N、504O、504P的访问。
在一些实施例中,虚拟化系统500可以被配置为将虚拟机506A、506B、506C分配给不同的用户。该分配可以允许多个不同的用户使用由共享的一组处理和存储资源所执行的虚拟机。通过将光子网络编程为授予虚拟机506A、506B、506C中的每个虚拟机对一组存储单元的访问,该虚拟机可以针对相应的用户进行配置。在一些实施例中,光子网络可以在虚拟机506A、506B、506C的执行期间被动态地重新编程,以重新分配存储资源(例如,基于虚拟机506A、506B、506C的存储需求的变化)。
图5B例示了根据本文所述技术的一些实施例的对图5A的虚拟机506A、506B、506C的处理器和存储器的重新分配。在一些实施例中,虚拟化系统500可以被配置为重新分配资源(例如,基于虚拟机506A、506B、506C正在执行的应用程序的要求来分布计算资源(例如,处理能力和存储)和/或在虚拟机506A、506B、506C之间平衡负载)。
在一些实施例中,可以通过将(多个)光子网络编程为不同的配置来进行重新分配。虚拟化系统500可以被配置为确定重新分配并基于重新分配致使对(多个)光子网络进行编程。例如,与(多个)光子网络相关联的(多个)存储控制器可以基于虚拟化系统500确定的重新分配将(多个)光子网络编程为新的配置。在图5B的分配中,(多个)光子网络被编程为:(1)为虚拟机506A的处理器502A、502B、502E、502F分配对存储单元504A、504B、504C、504D的访问;2)为虚拟机506B的处理器502G分配对存储单元504I、504J的访问;(3)为虚拟机506C的处理器502C、502D、502H分配对存储单元504E、504F、504G、504H、504K、504L、504M、504N、504O、504P的访问。
图6A示出了根据本文所述技术的一些实施例的示例性光子计算系统600。如图6A所示,光子计算系统包括连接到包括光子模块的光子基板的处理器602A、602B、602C。在图6A的示例中,多个光子模块是存储瓦片604A、604B、604C、604D、604E、604F、604G、604H。处理器602A、602B、602C各自通过相应的光信道606A、606B、606C连接到光子基板。光信道606A、606B、606C中的每个光信道连接到相应的存储瓦片的接口(例如,光纤附件)。如处理器602A、602B、602C下方的三个点所指示的,在一些实施例中,光子计算系统600可以包括连接到光子基板的附加处理器。
如图6A所示,存储瓦片604A、604B、604C、604D、604E、604F、604G、604H中的每个存储瓦片包括一组HBM存储单元。每个瓦片具有四个HBM存储单元。每个瓦片可以包括光子网络,其能够被编程(例如,通过其相应的存储控制器来进行编程)为配置处理器602A、602B、602C中的哪个处理器能够访问其HBM存储单元中的每个存储单元(例如,通过配置光开关)。
图6B示出了根据本文所述技术的一些实施例的从存储瓦片604A的光纤附件到所有存储瓦片604A-604H的存储控制器的一组示例性连接608A。例如,这组连接608A可以是连接到与存储控制器相关联的E/O收发器(例如,它们共同位于存储控制器的存储瓦片上)的光连接。又例如,这组连接608A可以是从存储瓦片604A的E/O收发器到存储控制器的电连接。如图6B所示,连接608A允许处理器602A通过光信道606A与每个瓦片的存储控制器通信。由此,存储瓦片604A-604H中的每个存储瓦片的光子网络可以被编程(例如,由瓦片的存储控制器编程)为提供处理器602A对瓦片的存储单元的访问。
图6C示出了根据本文所述技术的一些实施例的从存储瓦片604C的光纤附件到所有存储瓦片604A-604H的存储控制器的一组示例性连接608B。例如,这组连接608B可以是连接到与存储控制器相关联的E/O收发器(例如,它们共同位于存储控制器的存储瓦片上)的光连接。又例如,这组连接608B可以是从存储瓦片604B的E/O收发器到存储控制器的电连接。如图6C所示,连接608B允许处理器602B通过光信道606B与每个瓦片的存储控制器通信。由此,存储瓦片604A-604H中的每个存储瓦片的光子网络可以被编程(例如,由瓦片的存储控制器编程)为提供处理器602A对瓦片的存储单元的访问。
图7A示出了根据本文所述技术的一些实施例的图6A至图6C的存储瓦片604A-604H的光子网络的示例性配置。如图7A所示,存储瓦片604A-604H中的每个存储瓦片的光子网络被编程为允许由处理器602A对瓦片的HBM存储单元的访问。处理器602A可以被配置为通过图6B中所例示的连接来访问HBM存储单元中的每个HBM存储单元。
图7B示出了根据本文所述技术的一些实施例的图6A至图6C的存储瓦片604A-604H的光子网络的另一示例性配置。光子网络的示例性配置可以在图7A的配置之后进行编程。如图7B所示,存储瓦片604A-604H中的每个存储瓦片的光子网络被编程为允许由处理器602B对瓦片的HBM存储单元的访问。处理器602B可以被配置为通过图6C中所例示的连接来访问HBM存储单元中的每个HBM存储单元。在一些实施例中,处理器602A可以不再访问HBM存储单元。在一些实施例中,处理器602A可以与处理器602B同时访问HBM存储单元。
图8示出了根据本文所述技术的一些实施例的图6A的光子计算系统的示例性配置800,其中处理器602A、602B、602C中的每个处理器被指定用于不同的应用程序。如图8的示例所示,处理器602A被配置为执行大语言模型(LLM)应用程序802A,处理器602B被配置为执行计算机视觉应用程序802B,处理器602C被配置为执行开发和测试应用程序802C。如图8所示,应用程序802A、802B、802C中的每个应用程序被分配来自存储瓦片604A-604H的一组相应的存储单元。LLM应用程序802A被分配来自瓦片604A的两个HBM存储单元、来自瓦片604B的三个HBM存储单元、来自瓦片604C的一个HBM存储单元、来自瓦片604D的三个HBM存储单元、来自瓦片604E的一个HBM存储单元、来自瓦片604F的三个HBM存储单元、没有来自瓦片604G的HBM存储单元以及没有来自瓦片604H的HBM存储单元。计算机视觉模型应用程序802B被分配来自瓦片604A的一个HBM存储单元、来自瓦片604B的一个HBM存储单元、来自瓦片604C的三个HBM存储单元、来自瓦片604D的一个HBM存储单元、没有来自瓦片604E的HBM存储单元、来自瓦片604F的一个HBM存储单元、来自瓦片604G的一个HBM存储单元以及来自瓦片604H的三个HBM存储单元。开发和测试应用程序802C被分配来自瓦片604A的一个HBM存储单元、没有来自瓦片604B的HBM存储单元、没有来自瓦片604C的HBM存储单元、没有来自瓦片604D的HBM存储单元、来自瓦片604E的三个HBM存储单元、没有来自瓦片604F的HBM存储单元、来自瓦片604G的三个HBM存储单元以及来自瓦片604H的一个HBM存储单元。
在一些实施例中,应用程序802A、802B、802C中的每个应用程序可以基于应用程序802A、802B、802C的要求被分配HBM存储单元。例如,分配给每个应用程序的存储单元可以基于执行应用程序所需的存储量来确定。
图9示出了根据本文所述技术的一些实施例的示例性光子计算系统900,其中一组处理器602A、602B、602C能够访问多个分离的存储池904A、904B、904C、904D、904E。在一些实施例中,存储池904A、904B、904C、904D、904E中每个存储池可以是包括多个存储瓦片的光子基板(例如,如图6A所示)。处理器602A、602B、602C可以通过光电路开关902访问存储池904A-904E。在一些实施例中,光电路开关902可以被配置为设置处理器602A、602B、602C中的哪个处理器能够访问存储池904A-904E中的每个存储池。如图9所示,处理器602A、602B、602C中的每个处理器可以通过相应的光信道连接到光电路开关902。处理器602A、602B、602C中的每个处理器可以被提供通过光电路开关902对来自存储池904A-904E中不同的存储池的存储单元的访问。
图10示出了根据本文所述技术的一些实施例的示例性光子计算系统1000,其中计算机系统1002的存储量由分离的多组存储单元1004A、1004B、1004C扩展。如图10所示,计算机系统1002通过相应的光信道连接到每组存储单元1004A、1004B、1004C。在图10的示例中,每组存储单元1004A、100B、1004C包括作为存储单元的HBM库。如图10所指示的,计算机系统1002具有96GB的本机存储量。扩充一组存储单元的计算机系统1002具有192GB的存储量。扩充两组存储单元的计算机系统1002具有288GB的存储量。扩充三组存储单元的计算机系统1002具有384GB。
图11是根据本文所述技术的一些实施例的用于对光子网络进行编程的示例性过程1100。在一些实施例中,可以使用可编程光子网络来执行过程1100,该可编程光子网络控制一组一个或多个处理器中的哪个处理器能够访问与(多个)处理器分开的存储系统的存储单元。例如,过程1100可以被本文参考图1A至图1C描述的光子计算系统执行。
过程1100开始于块1102,其中系统确定指示哪些存储单元能够被这组(多个)处理器中的每个处理器访问的存储分配。在一些实施例中,系统可以被配置为确定对于虚拟CPU(例如,本文参考图5A至图5B描述的虚拟机)的存储分配。在一些实施例中,系统可以被配置为基于系统要执行的一个或多个进程(例如,(多个)软件应用程序)的要求来确定存储分配。在一些实施例中,系统可以被配置为确定对于进程的并行执行阶段(例如,本文参考图4进行的描述)的存储分配。作为说明性示例,系统可以确定针对一组(多个)处理器中的每个处理器指示哪些存储单元能够被该处理器访问的存储分配。
接下来,过程1100继续到块1104,其中系统基于存储分配确定光子网络的配置。在一些实施例中,光子网络可以包括包含一个或多个可配置光开关的光电路。系统可以被配置为通过根据存储分配确定一个或多个光开关的配置来确定光子网络的配置。一个或多个光开关的配置可以配置光子网络,使得这组(多个)处理器中的每个处理器将具有对由存储分配指示的(多个)存储单元的访问。
接下来,过程1100继续到块1106,其中系统将光子网络编程为确定的配置。在一些实施例中,系统可以被配置为通过配置光子网络的一个或多个光开关来将光子网络编程为该配置。系统可以被配置为配置一个或多个光开关,使得光子网络的光电路实现在这组(多个)处理器中的每个处理器与其被分配的(多个)存储单元之间的通信。例如,该配置可以允许这组(多个)处理器从相应分配的(多个)存储单元读取数据以及将数据写入到相应分配的(多个)存储单元中。
图12是根据本文所述技术的一些实施例的用于并行化执行软件应用程序的示例性过程1200。在一些实施例中,过程1200可以被本文参考图1A至图1C描述的光子计算系统执行。在一些实施例中,当两个处理器各自被配置为执行相应的应用程序(例如,一个或多个操作)以使软件应用程序的执行并行化(例如,如本文参考图4进行的描述)时,可以进行过程1200。
在一些实施例中,在进行过程1200之前,可以将输入数据加载到存储单元中的待用于执行软件应用程序的一个或多个存储单元中。一个或多个存储单元可以包括第一存储单元和第二存储单元。第一存储单元可以具有存储在其中的数据。例如,待用于执行软件应用程序的输入可以存储在第一存储单元中。在一些实施例中,可以在执行过程1200之前将系统的光子网络编程为特定配置。光子网络可以被编程为使得第一处理器访问第一存储单元,并且第二处理器访问第二存储单元。
过程1200开始于块1202,其中第一处理器使用存储在第一存储单元中的数据来执行一个或多个操作以获得第一输出。在一些实施例中,(多个)操作可以是响应于执行软件应用程序的指令而进行的(多个)操作。例如,第一处理器可以使用存储在第一存储单元中的一个或多个数值来执行一个或多个函数。接下来,过程1200继续到块1204,其中系统将从在块1202执行(多个)操作所获得的第一输出存储在第一存储单元中。
接下来,过程1200继续到块1206,其中系统将光子网络编程为允许由第一处理器对第二存储单元的访问并允许由第二处理器对第一存储单元的访问。在一些实施例中,系统可以被配置为对光子网络进行编程,如在本文参考图11描述的过程1100中所描述的。例如,系统可以将光电路的光开关配置为对光子网络进行编程。
接下来,过程1200继续到块1208,其中第一处理器使用存储在第二存储单元中的数据来执行(多个)操作以获得第二输出。在一些实施例中,第一处理器可以被配置为执行与其在块1202执行的相同的(多个)操作,但使用了存储在第二存储单元中的数据。例如,第一处理器可以使用存储在第二存储单元中的(多个)数值来执行一个或多个函数。
在块1210,与第一处理器在块1208的执行并行地,第二处理器使用存储在第一存储单元中的第一输出执行(多个)操作。在一些实施例中,第二处理器可以被配置为使用存储在第一存储单元中的第一输出来执行另一软件应用程序。例如,由第一操作执行的(多个)操作的输出由第二处理器进一步处理,以生成最终输出。
接下来,过程1200继续到块1212,其中系统将在块1208获得的第二输出存储在第二存储单元中。在块1214,系统从第一存储单元输出由第二处理器在块1210执行的(多个)操作的结果。被输出的结果可以是与最初存储在第一存储单元中的输入相对应的输出。
接下来,过程1200继续到块1216,其中系统将光子网络编程为允许由第一处理器对第一存储单元的访问并允许由第二处理器对第二存储单元的访问。然后,过程1200返回到块1202,其中系统处理后续输入(例如,更多数值)。然后,过程1200可以通过过程1200的块1202至块1216继续。
图13是可以用于实施本文所述技术的一些实施例的示例性计算机系统。计算设备1300可以包括一个或多个计算机硬件处理器1302和非瞬时计算机可读存储介质(例如,存储器1304和一个或多个非易失性存储设备1306)。(多个)处理器1302可以控制将数据写入到(1)存储器1304;和(2)(多个)非易失性存储设备1306以及从(1)存储器1304;和(2)(多个)非易失性存储设备1306读取数据。为了进行本文描述的任何功能,(多个)处理器1302可以执行存储在一个或多个非瞬时计算机可读存储介质(例如,存储器1304)中的一个或多个处理器可执行指令,该一个或多个非瞬时计算机可读存储介质可以充当存储处理器可执行指令以用于(多个)处理器1302的执行的非瞬时计算机可读存储介质。
术语“程序”或“软件”在本文中以一般意义使用,是指能够被用于将计算机或其他处理器(物理或虚拟处理器)编程为实施如上所讨论的实施例的各个方面的任何类型的计算机代码或处理器可执行指令集。另外,根据一个方面,在被执行时执行本文提供的公开内容的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以以模块化方式分布在不同的计算机或处理器之间,以实施本文提供的公开内容的各个方面。
处理器可执行指令可以是被一个或多个计算机或其他设备执行的多种形式,诸如程序模块。一般来说,程序模块包括执行任务或实现抽象数据类型的例程、程序、对象、组件、数据结构等。通常,可以对程序模块的功能进行组合或分布。
一些实施例提供了一种光子计算系统。该光子计算系统包括:至少一个处理器;至少一个光信道;以及至少一个光子基板,其与至少一个处理器分开,至少一个光子基板包括多个存储单元和用于提供至少一个处理器对多个存储单元的访问的至少一个光子网络,其中:至少一个光子网络通过至少一个光信道与至少一个处理器通信;并且至少一个光子网络能编程为配置至少一个处理器能够通过至少一个光信道访问至少一个光子基板中的多个存储单元中的哪个存储单元。
在一些实施例中,光子计算系统可以包括以下属性中的一个或多个属性:
a.至少一个处理器包括第一处理器和第二处理器;并且第一处理器和第二处理器被配置为使用多个存储单元来处理数据集。
b.至少一个光子网络被编程为允许由第一处理器对多个存储单元中的第一存储单元的访问并允许由第二处理器对多个存储单元中的第二存储单元的访问;并且
处理存储的数据集包括:
i.由第一处理器使用存储在第一存储单元中的数据来执行操作以获得第一输出;以及
ii.将第一输出存储在第一存储单元中。
c.在将第一输出存储在第一存储单元中之后,至少一个光子网络被编程为允许由第二处理器对第一存储单元的访问并允许由第一处理器对第二存储单元的访问;并且处理存储的数据集进一步包括:
i.由第一处理器使用存储在第二存储单元中的数据来执行操作以获得第二输出;
ii.与第一处理器的执行并行地,由第二处理器使用存储在第一存
储单元中的第一输出来执行操作以获得第一结果;
iii.将第二输出存储在第二存储单元中;以及
iv.从第一存储单元输出第一结果。
d.至少一个光子网络被编程为允许由第一处理器对第一存储单元的访问并允许由第二处理器对第二存储单元的访问;并且处理存储在至少一个光子网络的多个存储单元中的数据集进一步包括:
i.由第一处理器使用存储在第一存储单元中的数据来执行操作
以获得第三输出;
ii.与第一处理器的执行并行地,由第二处理器使用存储在第二存
储单元中的第二输出来执行操作以获得第二结果;
iii.将第三输出存储在第一存储单元中;以及
iv.从第二存储单元输出第二结果。
e.至少一个光子网络被编程为允许由至少一个处理器通过至少一个光信道对多个存储单元中的存储单元子组的访问。
f.至少一个光信道被配置为在至少一个处理器与至少一个光子网络之间以至少15太字节每秒(TB/s)的速率传输数据。
g.至少一个光子网络包括至少一个光开关,其能配置为将至少一个处理器连接到多个存储单元中的每个存储单元/从多个存储单元中的每个存储单元断开;并且至少一个光子网络能通过配置至少一个光开关进行编程。
h.在第一时间,至少一个光子网络被编程为允许由至少一个处理器通过至少一个光信道对多个存储单元中的第一存储单元的访问;并且在第一时间之后的第二时间,至少一个光子网络被编程为:
i.禁止由至少一个处理器通过至少一个光信道对第一存储单元的访问;并且
ii.允许由至少一个处理器通过至少一个光信道对多个存储单元中的第二存储单元的访问。
i.至少一个处理器包括第一处理器和第二处理器;多个存储单元包括第一存储单元和第二存储单元;并且至少一个光子网络被编程为允许由第一处理器对第一存储单元的访问并允许由第二处理器对第二存储单元的访问。
j.多个存储单元包括多个高带宽存储器(HBM)单元。
k.多个存储单元包括多个静态随机存取存储器(SRAM)单元。
l.多个存储单元包括多个双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)。
m.至少一个光子基板进一步包括被配置为对至少一个光子网络进行编程的至少一个存储控制器。
n.至少一个处理器被配置为对至少一个光子网络进行编程。
o.至少一个处理器包括多个处理器,多个处理器被组织成多组处理器;并且至少一个光子网络被编程为允许多组处理器中的每组处理器通过至少一个光信道访问多个存储单元中的不同存储单元子组。
p.多组处理器中的每组处理器和多个存储单元中的能由这组处理器访问的相应存储单元子组形成被分配给相应虚拟机的相应虚拟处理器。
q.至少一个处理器包括多个处理器;至少一个光信道包括多个光信道;并且多个处理器中的每个处理器通过多个光信道中的相应光信道与至少一个光子网络通信。
r.至少一个光子网络包括多个光子网络;至少一个光子基板包括多个光子模块,每个光子模块包括:
i.多个光子网络中的相应光子网络;
ii.多个存储单元中的存储单元子组;以及
iii.存储控制器。
s.多个处理器中的每个处理器通过多个光信道中的相应光信道连接到多个光子模块的存储控制器。
t.至少一个光子网络被编程为一种配置以基于对于多个软件应用程序的执行的存储要求在多个处理器之间分配存储单元,其中该配置:
i.允许由多个处理器中的被配置为执行第一软件应用程序的第一处理器对多个存储单元中的第一组存储单元的访问;并且
ii.允许由多个处理器中的被配置为执行第二软件应用程序的第二处理器对多个存储单元中的第二组存储单元的访问。
u.第一软件应用程序使用机器学习模型。
v.机器学习模型是大语言模型(LLM)。
w.机器学习模型是计算机视觉模型。
x.第一软件应用程序是软件开发和测试应用程序。
y.至少一个光子基板包括多个光子基板,多个光子基板各自包括一组
存储单元和相应的光子网络,其中:
i.多个基板的光子网络各自能编程为配置相应的一组存储单元中的哪个存储单元能够被至少一个处理器访问。
z.光计算系统进一步包括光开关,其中光开关能配置为向至少一个处理器提供对跨多个光子基板中的多者分布的多个存储单元的访问。
aa.至少一个光子基板包括至少一个存储控制器;并且至少一个光子网络包括将至少一个存储控制器与多个存储单元互连的光电路。
bb.至少一个光子网络包括多个电/光(E/O)收发器,每个E/O收发器将多个存储单元中的相应存储单元连接到光电路。
cc.至少一个光子基板包括:至少一个存储控制器;至少一个光纤附件,至少一个光纤附件连接到至少一个光信道;以及至少一个E/O收发器;并且至少一个光子网络包括将至少一个存储控制器连接到至少一个光纤附件的光电路,其中E/O收发器被配置为转换在至少一个存储控制器与至少一个光纤附件之间传输的信号。
dd.至少一个光子网络包括在至少一个存储控制器与多个存储单元之间的多个电连接,其中数据信号通过多个电连接在至少一个存储控制器与多个存储单元之间传输。
一些实施例提供了一种使用光子网络以使用多个存储单元来进行并行化数据处理的方法。光子网络能编程为配置多个存储单元中的哪个存储单元能够被第一处理器和第二处理器访问。光子网络被编程为允许由第一处理器对多个存储单元中的第一存储单元的访问并允许由第二处理器对多个存储单元中的第二存储单元的访问。该方法包括:将光子网络编程为允许由第一处理器对第二存储单元的访问并允许由第二处理器对第一存储单元的访问;由第一处理器使用存储在第二存储单元中的数据来执行操作以获得输出;以及与第一处理器的执行并行地,由第二处理器使用存储在第一存储单元中的数据来执行操作。
在一些实施例中,该方法可以包括以下属性中的一个或多个属性:
a.该方法进一步包括:将光子网络编程为允许由第一处理器对第一存储单元的访问并允许由第二处理器对第二存储单元的访问;由第一处理器使用存储在第一存储单元中的数据来执行操作;以及与第一处理器的执行并行地,由第二处理器使用存储在第二存储单元中的数据来执行操作。
b.该方法进一步包括将由第一处理器使用存储在第二存储单元中的数据所执行的操作的结果存储在第二存储单元中。
一些实施例提供了一种布置在光子基板上的光子网络。该光子网络能通过至少一个光信道访问。该光子网络包括:多个存储单元;至少一个可配置光开关,其控制多个存储单元中的哪个存储单元能通过至少一个光信道访问;以及至少一个电/光(E/O)收发器,用于通过至少一个光信道向多个存储单元传输数据并从多个存储单元传输数据。
在一些实施例中,光子网络可以具有以下属性中的一个或多个属性:
a.在第一时间,至少一个光开关被配置为允许通过至少一个光信道对多个存储单元中的第一存储单元的访问;并且在第一时间之后的第二时间,至少一个光开关被配置为允许通过至少一个光信道对多个存储单元中的第二存储单元的访问。
b.在第二时间,至少一个光开关被编程为禁止通过至少一个光信道对第二存储单元的访问。
c.光子网络进一步包括存储控制器,其中至少一个光开关能由存储控制器配置。
d.光子网络包括光电路,光电路包括至少一个可配置光开关。
e.至少一个E/O收发器包括连接到多个存储单元中的相应存储单元的多个E/O收发器;并且光电路通过多个E/O收发器将存储控制器连接到多个存储单元。
f.光子网络包括光纤附件,其中:光电路通过至少一个E/O收发器将存储控制器连接到光纤附件。
一些实施例提供了一种制造光子计算系统的方法。该方法包括将光子计算系统制造为包括:至少一个处理器;至少一个光信道;以及至少一个光子基板,其与至少一个处理器分开,至少一个光子基板包括多个存储单元和用于将至少一个处理器连接到多个存储单元的至少一个光子网络,其中:至少一个光子网络通过至少一个光信道与至少一个处理器通信;并且至少一个光子网络能编程为配置至少一个处理器能够通过至少一个光信道访问至少一个光子基板中的多个存储单元中的哪个存储单元。
各种发明构思可以体现为一个或多个过程,其示例已经给出。作为每个过程的一部分执行的动作可以以任何合适的方式排序。由此,可以构建动作的执行顺序与例示顺序不同的实施例,这可包括同时执行一些动作,即使它们在说明性实施例中被示出为顺序动作。
如本文在说明书和权利要求书中所使用的,短语“至少一个”在涉及一个或多个元素的列表时,应当理解为是指从元素列表中的任意一个或多个元素中选择的至少一个元素,但不一定包括元素列表内具体列出的每个元素中的至少一个元素,也不排除元素列表中的元素的任意组合。该限定还允许除了元素列表内短语“至少一个”所指代的具体标识的元素之外的元素可以可选地存在,无论其与具体标识的元素相关还是不相关。由此,例如,“A和B中的至少一个”(或等同地,“A或B中的至少一个”,或等同地,“A和/或B中的至少一个”)在一个实施例中可以指代至少一个A,可选地包括一个以上的A,而不存在B(并且可选地包括除B之外的元素);在另一实施例中,指代至少一个B,可选地包括一个以上的B,而不存在A(并且可选地包括除A之外的元素);在又一实施例中,指代至少一个A,可选地包括一个以上的A,以及至少一个B,可选地包括一个以上的B(并且可选地包括其他元素);等等。
本文在说明书和权利要求书中所使用的短语“和/或”应当理解为是指所结合的元素(即,在一些情况下以结合方式存在而在其他情况下以分散方式存在的元素)中的“任一者或两者”。以“和/或”列出的多个元素应当以相同方式解释,即,所结合的元素中的“一个或多个”。除了“和/或”子句所具体标识的元素之外,还可以可选地存在其他元素,无论这些元素与具体标识的元素相关还是不相关。由此,作为非限制性示例,当与诸如“包括”等开放式用语结合使用时,对“A和/或B”的提及可以在一个实施例中仅指代A(可选地包括除B之外的元素);在另一实施例中仅指代B(可选地包括除A之外的元素);在又一实施例中指代A和B两者(可选地包括其他元素);等等。
在权利要求中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素,其本身并不暗含一个权利要求元素相对于另一权利要求元素具有任何优先性、重要性或顺序,也不暗含执行方法的动作的时间顺序。这样的术语仅用作标签,以区分具有特定名称的一个权利要求元素与具有相同名称的另一元素(但这针对的是序数词的使用)。本文使用的措辞和术语用于描述的目的,并不应视为是限制性的。对“包含”、“包括”、“具有”、“含有”、“涉及”及其变体的使用意在涵盖其后列出的项目和其他项目。
详细描述了本文所述技术的若干实施例,本领域技术人员容易想到各种修改和改进。这样的修改和改进旨在落入本公开的精神和范围内。因而,前述描述仅作为示例,并不旨在为限制性的。这些技术仅受以下权利要求及其等效物的限定的限制。
Claims (42)
1.一种光子计算系统,所述光子计算系统包括:
至少一个处理器;
至少一个光信道;以及
至少一个光子基板,所述至少一个光子基板与所述至少一个处理器分开,所述至少一个光子基板包括多个存储单元和至少一个光子网络,所述至少一个光子网络用于提供所述至少一个处理器对所述多个存储单元的访问,其中:
所述至少一个光子网络通过所述至少一个光信道与所述至少一个处理器通信;并且
所述至少一个光子网络能编程为配置所述至少一个处理器能够通过所述至少一个光信道访问所述至少一个光子基板中的所述多个存储单元中的哪个存储单元。
2.根据权利要求1所述的光子计算系统,其中,
所述至少一个处理器包括第一处理器和第二处理器;并且
所述第一处理器和所述第二处理器被配置为使用所述多个存储单元来处理数据集。
3.根据权利要求2或任一前述权利要求所述的光子计算系统,其中:
所述至少一个光子网络被编程为允许由所述第一处理器对所述多个存储单元中的第一存储单元的访问,并允许由所述第二处理器对所述多个存储单元中的第二存储单元的访问;并且
处理所述数据集包括:
由所述第一处理器使用存储在所述第一存储单元中的数据来执行操作以获得第一输出;以及
将所述第一输出存储在所述第一存储单元中。
4.根据权利要求3或任一前述权利要求所述的光子计算系统,其中:
在将所述第一输出存储在所述第一存储单元中之后,所述至少一个光子网络被编程为允许由所述第二处理器对所述第一存储单元的访问,并允许由所述第一处理器对所述第二存储单元的访问;并且
处理所述数据集进一步包括:
由所述第一处理器使用存储在所述第二存储单元中的数据来执行操作以获得第二输出;
与所述第一处理器的执行并行地,由所述第二处理器使用存储在所述第一存储单元中的所述第一输出来执行操作以获得第一结果;
将所述第二输出存储在所述第二存储单元中;以及
从所述第一存储单元输出所述第一结果。
5.根据权利要求4或任一前述权利要求所述的光子计算系统,其中:
所述至少一个光子网络被编程为允许由所述第一处理器对所述第一存储单元的访问,并允许由所述第二处理器对所述第二存储单元的访问;并且
处理存储在所述至少一个光子网络的所述多个存储单元中的所述数据集进一步包括:
由所述第一处理器使用存储在所述第一存储单元中的数据来执行操作以获得第三输出;
与所述第一处理器的执行并行地,由所述第二处理器使用存储在所述第二存储单元中的所述第二输出来执行操作以获得第二结果;
将所述第三输出存储在所述第一存储单元中;以及
从所述第二存储单元输出所述第二结果。
6.根据权利要求1或任一前述权利要求所述的光子计算系统,其中:
所述至少一个光子网络被编程为允许由所述至少一个处理器通过所述至少一个光信道对所述多个存储单元中的存储单元子组的访问。
7.根据权利要求1或任一前述权利要求所述的光子计算系统,其中,
所述至少一个光信道被配置为在所述至少一个处理器与所述至少一个光子网络之间以至少15太字节每秒(TB/s)的速率传输数据。
8.根据权利要求1或任一前述权利要求所述的光子计算系统,其中,
所述至少一个光子网络包括至少一个光开关,所述至少一个光开关能配置为将所述至少一个处理器连接到所述多个存储单元中的每个存储单元或从所述多个存储单元中的每个存储单元断开;并且
所述至少一个光子网络能通过配置所述至少一个光开关进行编程。
9.根据权利要求1或任一前述权利要求所述的光子计算系统,其中,
在第一时间,所述至少一个光子网络被编程为允许由所述至少一个处理器通过所述至少一个光信道对所述多个存储单元中的第一存储单元的访问;并且
在所述第一时间之后的第二时间,所述至少一个光子网络被编程为:
禁止由所述至少一个处理器通过所述至少一个光信道对所述第一存储单元的访问;并且
允许由所述至少一个处理器通过所述至少一个光信道对所述多个存储单元中的第二存储单元的访问。
10.根据权利要求1或任一前述权利要求所述的光子计算系统,其中,
所述至少一个处理器包括第一处理器和第二处理器;
所述多个存储单元包括第一存储单元和第二存储单元;并且
所述至少一个光子网络被编程为允许由所述第一处理器对所述第一存储单元的访问,并允许由所述第二处理器对所述第二存储单元的访问。
11.根据权利要求1或任一前述权利要求所述的光子计算系统,其中所述多个存储单元包括多个高带宽存储器(HBM)单元。
12.根据权利要求1或任一前述权利要求所述的光子计算系统,其中所述多个存储单元包括多个静态随机存取存储器(SRAM)单元。
13.根据权利要求1或任一前述权利要求所述的光子计算系统,其中所述多个存储单元包括多个双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)单元。
14.根据权利要求1或任一前述权利要求所述的光子计算系统,其中所述至少一个光子基板进一步包括被配置为对所述至少一个光子网络进行编程的至少一个存储控制器。
15.根据权利要求1或任一前述权利要求所述的光子计算系统,其中所述至少一个处理器被配置为对所述至少一个光子网络进行编程。
16.根据权利要求1或任一前述权利要求所述的光子计算系统,其中,
所述至少一个处理器包括多个处理器,所述多个处理器被组织成多组处理器;并且
所述至少一个光子网络被编程为允许所述多组处理器中的每组处理器通过所述至少一个光信道访问所述多个存储单元中的不同存储单元子组。
17.根据权利要求16或任一前述权利要求所述的光子计算系统,其中,
所述多组处理器中的每组处理器和所述多个存储单元中能由该组处理器访问的相应存储单元子组形成被分配给相应虚拟机的相应虚拟处理器。
18.根据权利要求1或任一前述权利要求所述的光子计算系统,其中:
所述至少一个处理器包括多个处理器;
所述至少一个光信道包括多个光信道;并且
所述多个处理器中的每个处理器通过所述多个光信道中的相应光信道与所述至少一个光子网络通信。
19.根据权利要求18或任一前述权利要求所述的光子计算系统,其中:
所述至少一个光子网络包括多个光子网络;
所述至少一个光子基板包括多个光子模块,所述多个光子模块中的每个光子模块包括:
所述多个光子网络中的相应光子网络;
所述多个存储单元中的存储单元子组;以及
存储控制器。
20.根据权利要求19或任一前述权利要求所述的光子计算系统,其中所述多个处理器中的每个处理器通过所述多个光信道中的相应光信道连接到所述多个光子模块的存储控制器。
21.根据权利要求18或任一前述权利要求所述的光子计算系统,其中所述至少一个光子网络被编程为一种配置以基于用于执行多个软件应用程序的存储要求在所述多个处理器之间分配存储单元,其中所述配置:
允许由所述多个处理器中的被配置为执行第一软件应用程序的第一处理器对所述多个存储单元中的第一组存储单元的访问;并且
允许由所述多个处理器中的被配置为执行第二软件应用程序的第二处理器对所述多个存储单元中的第二组存储单元的访问。
22.根据权利要求21或任一前述权利要求所述的光子计算系统,其中所述第一软件应用程序使用机器学习模型。
23.根据权利要求22或任一前述权利要求所述的光子计算系统,其中所述机器学习模型是大语言模型(LLM)。
24.根据权利要求22或任一前述权利要求所述的光子计算系统,其中所述机器学习模型是计算机视觉模型。
25.根据权利要求21或任一前述权利要求所述的光子计算系统,其中所述第一软件应用程序是软件开发和测试应用程序。
26.根据权利要求1或任一前述权利要求所述的光子计算系统,其中所述至少一个光子基板包括多个光子基板,所述多个光子基板各自包括一组存储单元和相应的光子网络,其中:
所述多个基板的光子网络各自能编程为配置相应的一组存储单元中的哪个存储单元能够被所述至少一个处理器访问。
27.根据权利要求26或任一前述权利要求所述的光子计算系统,进一步包括光开关,其中所述光开关能配置为向所述至少一个处理器提供对跨所述多个光子基板中的多者分布的多个存储单元的访问。
28.根据权利要求1或任一前述权利要求所述的光子计算系统,其中:
所述至少一个光子基板包括至少一个存储控制器;并且
所述至少一个光子网络包括将所述至少一个存储控制器与所述多个存储单元互连的光电路。
29.根据权利要求28或任一前述权利要求所述的光子计算系统,其中所述至少一个光子网络包括多个电/光(E/O)收发器,所述多个E/O收发器中的每个E/O收发器将所述多个存储单元中的相应存储单元连接到所述光电路。
30.根据权利要求1或任一前述权利要求所述的光子计算系统,其中:
所述至少一个光子基板包括:
至少一个存储控制器;
至少一个光纤附件,所述至少一个光纤附件连接到所述至少一个光信道;以及
至少一个E/O收发器;并且
所述至少一个光子网络包括将所述至少一个存储控制器连接到所述至少一个光纤附件的光电路,其中所述E/O收发器被配置为转换在所述至少一个存储控制器与所述至少一个光纤附件之间传输的信号。
31.根据权利要求30或任一前述权利要求所述的光子计算系统,其中所述至少一个光子网络包括在所述至少一个存储控制器与所述多个存储单元之间的多个电连接,其中数据信号通过所述多个电连接在所述至少一个存储控制器与所述多个存储单元之间传输。
32.一种使用光子网络以使用多个存储单元来进行并行化数据处理的方法,所述光子网络能编程为配置所述多个存储单元中的哪个存储单元能够被第一处理器和第二处理器访问,所述光子网络被编程为允许由所述第一处理器对所述多个存储单元中的第一存储单元的访问,并允许由所述第二处理器对所述多个存储单元中的第二存储单元的访问,所述方法包括:
将所述光子网络编程为允许由所述第一处理器对所述第二存储单元的访问,并允许由所述第二处理器对所述第一存储单元的访问;
由所述第一处理器使用存储在所述第二存储单元中的数据来执行操作以获得输出;以及
与所述第一处理器的执行并行地,由所述第二处理器使用存储在所述第一存储单元中的数据来执行操作。
33.根据权利要求32或任一前述权利要求所述的方法,进一步包括:
将所述光子网络编程为允许由所述第一处理器对所述第一存储单元的访问,并允许由所述第二处理器对所述第二存储单元的访问;
由所述第一处理器使用存储在所述第一存储单元中的数据来执行操作;
与所述第一处理器的执行并行地,由所述第二处理器使用存储在所述第二存储单元中的数据来执行操作。
34.根据权利要求32或任一前述权利要求所述的方法,进一步包括:
将由所述第一处理器使用存储在所述第二存储单元中的数据所执行的操作的结果存储在所述第二存储单元中。
35.一种布置在光子基板上的光子网络,所述光子网络能通过至少一个光信道访问,所述光子网络包括:
多个存储单元;
至少一个可配置光开关,所述至少一个可配置光开关控制所述多个存储单元中的哪个存储单元能通过所述至少一个光信道访问;以及
至少一个电/光(E/O)收发器,所述至少一个E/O收发器用于通过所述至少一个光信道向所述多个存储单元传输数据以及从所述多个存储单元传输数据。
36.根据权利要求35或任一前述权利要求所述的光子网络,其中:
在第一时间,所述至少一个光开关被配置为允许通过所述至少一个光信道对所述多个存储单元中的第一存储单元的访问;并且
在所述第一时间之后的第二时间,所述至少一个光开关被配置为允许通过所述至少一个光信道对所述多个存储单元中的第二存储单元的访问。
37.根据权利要求35或任一前述权利要求所述的光子网络,其中:
在所述第二时间,所述至少一个光开关被编程为禁止通过所述至少一个光信道对所述第二存储单元的访问。
38.根据权利要求35或任一前述权利要求所述的光子网络,进一步包括存储控制器,其中所述至少一个光开关能由所述存储控制器配置。
39.根据权利要求38或任一前述权利要求所述的光子网络,进一步包括光电路,所述光电路包括所述至少一个可配置光开关。
40.根据权利要求38或任一前述权利要求所述的光子网络,其中:
所述至少一个E/O收发器包括连接到所述多个存储单元中的相应存储单元的多个E/O收发器;并且
所述光电路通过所述多个E/O收发器将所述存储控制器连接到所述多个存储单元。
41.根据权利要求38或任一前述权利要求所述的光子网络,进一步包括光纤附件,其中:
所述光电路通过所述至少一个E/O收发器将所述存储控制器连接到所述光纤附件。
42.一种制造光子计算系统的方法,所述方法包括将所述光子计算系统制造为包括:
至少一个处理器;
至少一个光信道;以及
至少一个光子基板,所述至少一个光子基板与所述至少一个处理器分开,所述至少一个光子基板包括多个存储单元和至少一个光子网络,所述至少一个光子网络用于将所述至少一个处理器连接到所述多个存储单元,其中:
所述至少一个光子网络通过所述至少一个光信道与所述至少一个处理器通信;并且
所述至少一个光子网络能编程为配置所述至少一个处理器能够通过所述至少一个光信道访问所述至少一个光子基板中的所述多个存储单元中的哪个存储单元。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263395311P | 2022-08-04 | 2022-08-04 | |
| US63/395,311 | 2022-08-04 | ||
| PCT/US2023/029412 WO2024030556A1 (en) | 2022-08-04 | 2023-08-03 | Optical computing system with disaggregated memory |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119816895A true CN119816895A (zh) | 2025-04-11 |
Family
ID=87797866
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202380057169.8A Pending CN119816895A (zh) | 2022-08-04 | 2023-08-03 | 具有分离式存储系统的光计算系统 |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US20240045464A1 (zh) |
| EP (1) | EP4566057A1 (zh) |
| JP (1) | JP2025525851A (zh) |
| KR (1) | KR20250042827A (zh) |
| CN (1) | CN119816895A (zh) |
| TW (1) | TW202418031A (zh) |
| WO (1) | WO2024030556A1 (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20240370175A1 (en) * | 2023-05-03 | 2024-11-07 | Micron Technology, Inc. | Control of Memory Access Cycles for Thermal Stability and Performance |
| TW202514601A (zh) * | 2023-08-03 | 2025-04-01 | 美商萊特美特股份有限公司 | 具有分散記憶體之光學運算 |
| CN119781697B (zh) * | 2025-03-10 | 2025-06-20 | 深圳市源微创新实业有限公司 | 存储设备的数据处理方法、系统及存储介质 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8965212B2 (en) * | 2009-04-29 | 2015-02-24 | Hewlett-Packard Development Company, L.P. | Optical memory expansion |
| EP3803265A4 (en) | 2018-05-15 | 2022-01-26 | Lightmatter, Inc. | Photonic processing systems and methods |
| JP7702055B2 (ja) | 2019-03-06 | 2025-07-03 | ライトマター インコーポレイテッド | フォトニックシステム、コンピューティングシステム及び半導体ウェーハの製造方法 |
| EP4103989A4 (en) * | 2020-02-14 | 2024-03-20 | Ayar Labs, Inc. | MONOLITHIC OPTICAL I/O ENABLED REMOTE MEMORY ARCHITECTURES IN A PACKAGE |
-
2023
- 2023-08-03 CN CN202380057169.8A patent/CN119816895A/zh active Pending
- 2023-08-03 US US18/364,983 patent/US20240045464A1/en active Pending
- 2023-08-03 WO PCT/US2023/029412 patent/WO2024030556A1/en not_active Ceased
- 2023-08-03 KR KR1020257006708A patent/KR20250042827A/ko active Pending
- 2023-08-03 JP JP2025505723A patent/JP2025525851A/ja active Pending
- 2023-08-03 EP EP23758780.3A patent/EP4566057A1/en active Pending
- 2023-08-04 TW TW112129358A patent/TW202418031A/zh unknown
Also Published As
| Publication number | Publication date |
|---|---|
| TW202418031A (zh) | 2024-05-01 |
| KR20250042827A (ko) | 2025-03-27 |
| JP2025525851A (ja) | 2025-08-07 |
| US20240045464A1 (en) | 2024-02-08 |
| WO2024030556A1 (en) | 2024-02-08 |
| EP4566057A1 (en) | 2025-06-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN119816895A (zh) | 具有分离式存储系统的光计算系统 | |
| KR102063282B1 (ko) | 온-칩 광학적 상호연결 구조 및 네트워크 | |
| US12392960B2 (en) | Programmable photonic integrated circuit and related method of operation | |
| CN111698583B (zh) | 波长-模式混合复用的片上光交换网络架构及路由算法 | |
| EP4116752A1 (en) | Field-configurable optical switch implementations within multi-chip packages | |
| US9710426B2 (en) | Computer system and method for sharing computer memory | |
| WO2018213232A1 (en) | Reconfigurable server and server rack with same | |
| US9020347B2 (en) | Reconfigurable optical interconnect network | |
| CN107094270A (zh) | 可重构的互连系统及其拓扑构建方法 | |
| Ishii et al. | Disaggregated optical-layer switching for optically composable disaggregated computing | |
| US12443356B2 (en) | Optical computing with disaggregated memory | |
| US20130132506A1 (en) | Computer system and method for sharing computer memory | |
| US20250141587A1 (en) | System-level wavelength-division multiplexed switching for high bandwidth and high-capacity memory access | |
| Zhu et al. | Distributed deep learning training using silicon photonic switched architectures | |
| CN108828723A (zh) | 基于波长和模式复用的微环谐振器光交换开关 | |
| CN116192323A (zh) | 光学空间模式的支持宽谱的多空间/模式光交换方法及系统 | |
| CN111954099B (zh) | 数据中心系统和数据中心控制方法 | |
| CN113709603A (zh) | 通过硅光子实现零增加等待时间的分组重新路由 | |
| Zhang et al. | Demonstration of Optically Connected Disaggregated Memory With Hitless Wavelength-Selective Switch | |
| Proietti et al. | Intra-Datacenter Network Architectures | |
| Liu et al. | An optimized low-power optical memory access network for kilocore systems | |
| Al-Harrasi et al. | Investigating the challenges facing composable/disaggregated infrastructure implementation: A literature review | |
| JP2025527346A (ja) | 光スイッチおよびスイッチングシステム | |
| Bao et al. | Waferscale Silicon Photonics Systems: A Cost-Benefit Analysis and Optimization | |
| US20220053250A1 (en) | Bandwidth-reconfigurable optical interconnect based on wavelength and spatial switching |
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 |